@unclick/mcp-server 0.2.5 → 0.3.1
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 +160 -139
- package/dist/abn-tool.js +1 -1
- package/dist/bgg-tool.js +1 -1
- package/dist/carboninterface-tool.js +1 -1
- package/dist/cards/card.d.ts +9 -0
- package/dist/cards/card.d.ts.map +1 -0
- package/dist/cards/card.js +4 -0
- package/dist/cards/card.js.map +1 -0
- package/dist/cards/search-memory-card.d.ts +11 -0
- package/dist/cards/search-memory-card.d.ts.map +1 -0
- package/dist/cards/search-memory-card.js +75 -0
- package/dist/cards/search-memory-card.js.map +1 -0
- package/dist/cards/search-memory-card.test.d.ts +2 -0
- package/dist/cards/search-memory-card.test.d.ts.map +1 -0
- package/dist/cards/search-memory-card.test.js +59 -0
- package/dist/cards/search-memory-card.test.js.map +1 -0
- package/dist/catalog.d.ts.map +1 -1
- package/dist/catalog.js +265 -4
- package/dist/catalog.js.map +1 -1
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +96 -6
- package/dist/client.js.map +1 -1
- package/dist/converter-tools.js +1 -1
- package/dist/crews-tool.d.ts +12 -0
- package/dist/crews-tool.d.ts.map +1 -0
- package/dist/crews-tool.js +125 -0
- package/dist/crews-tool.js.map +1 -0
- package/dist/gdelt-tool.js +4 -4
- package/dist/hackernews-tool.js +1 -1
- package/dist/index.js +0 -0
- package/dist/keychain-secure-input.js +42 -42
- package/dist/line-tool.js +1 -1
- package/dist/linear-tool.js +73 -73
- package/dist/local-catalog-handlers.js +1 -1
- package/dist/local-catalog-handlers.js.map +1 -1
- package/dist/local-tools.js +7 -7
- package/dist/local-tools.js.map +1 -1
- package/dist/memory/__tests__/bitemporal.test.d.ts +8 -0
- package/dist/memory/__tests__/bitemporal.test.d.ts.map +1 -0
- package/dist/memory/__tests__/bitemporal.test.js +148 -0
- package/dist/memory/__tests__/bitemporal.test.js.map +1 -0
- package/dist/memory/__tests__/hybrid-search.test.d.ts +14 -0
- package/dist/memory/__tests__/hybrid-search.test.d.ts.map +1 -0
- package/dist/memory/__tests__/hybrid-search.test.js +304 -0
- package/dist/memory/__tests__/hybrid-search.test.js.map +1 -0
- package/dist/memory/agent.d.ts +34 -0
- package/dist/memory/agent.d.ts.map +1 -0
- package/dist/memory/agent.js +69 -0
- package/dist/memory/agent.js.map +1 -0
- package/dist/memory/conflicts.d.ts +48 -0
- package/dist/memory/conflicts.d.ts.map +1 -0
- package/dist/memory/conflicts.js +209 -0
- package/dist/memory/conflicts.js.map +1 -0
- package/dist/memory/db.d.ts +25 -0
- package/dist/memory/db.d.ts.map +1 -0
- package/dist/memory/db.js +144 -0
- package/dist/memory/db.js.map +1 -0
- package/dist/memory/device.d.ts +20 -0
- package/dist/memory/device.d.ts.map +1 -0
- package/dist/memory/device.js +48 -0
- package/dist/memory/device.js.map +1 -0
- package/dist/memory/embeddings.d.ts +10 -0
- package/dist/memory/embeddings.d.ts.map +1 -0
- package/dist/memory/embeddings.js +40 -0
- package/dist/memory/embeddings.js.map +1 -0
- package/dist/memory/handlers.d.ts +11 -0
- package/dist/memory/handlers.d.ts.map +1 -0
- package/dist/memory/handlers.js +219 -0
- package/dist/memory/handlers.js.map +1 -0
- package/dist/memory/instrumentation.d.ts +38 -0
- package/dist/memory/instrumentation.d.ts.map +1 -0
- package/dist/memory/instrumentation.js +97 -0
- package/dist/memory/instrumentation.js.map +1 -0
- package/dist/memory/load-events.d.ts +18 -0
- package/dist/memory/load-events.d.ts.map +1 -0
- package/dist/memory/load-events.js +61 -0
- package/dist/memory/load-events.js.map +1 -0
- package/dist/memory/local.d.ts +40 -0
- package/dist/memory/local.d.ts.map +1 -0
- package/dist/memory/local.js +400 -0
- package/dist/memory/local.js.map +1 -0
- package/dist/memory/session-state.d.ts +37 -0
- package/dist/memory/session-state.d.ts.map +1 -0
- package/dist/memory/session-state.js +82 -0
- package/dist/memory/session-state.js.map +1 -0
- package/dist/memory/supabase.d.ts +104 -0
- package/dist/memory/supabase.d.ts.map +1 -0
- package/dist/memory/supabase.js +710 -0
- package/dist/memory/supabase.js.map +1 -0
- package/dist/memory/tenant-settings.d.ts +33 -0
- package/dist/memory/tenant-settings.d.ts.map +1 -0
- package/dist/memory/tenant-settings.js +79 -0
- package/dist/memory/tenant-settings.js.map +1 -0
- package/dist/memory/tool-awareness.d.ts +66 -0
- package/dist/memory/tool-awareness.d.ts.map +1 -0
- package/dist/memory/tool-awareness.js +307 -0
- package/dist/memory/tool-awareness.js.map +1 -0
- package/dist/memory/types.d.ts +97 -0
- package/dist/memory/types.d.ts.map +1 -0
- package/dist/memory/types.js +5 -0
- package/dist/memory/types.js.map +1 -0
- package/dist/monday-tool.js +46 -46
- package/dist/musicbrainz-tool.js +1 -1
- package/dist/musicbrainz-tool.js.map +1 -1
- package/dist/numbers-tool.js +2 -2
- package/dist/openfoodfacts-tool.js +1 -1
- package/dist/openmeteo-tool.js +1 -1
- package/dist/radiobrowser-tool.js +2 -2
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +838 -15
- package/dist/server.js.map +1 -1
- package/dist/signals/emit.d.ts +11 -0
- package/dist/signals/emit.d.ts.map +1 -0
- package/dist/signals/emit.js +26 -0
- package/dist/signals/emit.js.map +1 -0
- package/dist/testpass-tool.d.ts +12 -0
- package/dist/testpass-tool.d.ts.map +1 -0
- package/dist/testpass-tool.js +121 -0
- package/dist/testpass-tool.js.map +1 -0
- package/dist/toilets-tool.js +2 -2
- package/dist/tool-wiring.d.ts +320 -4
- package/dist/tool-wiring.d.ts.map +1 -1
- package/dist/tool-wiring.js +246 -5
- package/dist/tool-wiring.js.map +1 -1
- package/dist/trivia-tool.js +5 -5
- package/dist/usgs-tool.js +1 -1
- package/dist/uxpass-tool.d.ts +24 -0
- package/dist/uxpass-tool.d.ts.map +1 -0
- package/dist/uxpass-tool.js +165 -0
- package/dist/uxpass-tool.js.map +1 -0
- package/dist/vault-bridge.js +7 -7
- package/dist/vercel-tool.d.ts +3 -0
- package/dist/vercel-tool.d.ts.map +1 -1
- package/dist/vercel-tool.js +198 -7
- package/dist/vercel-tool.js.map +1 -1
- package/dist/web-tools.d.ts +62 -0
- package/dist/web-tools.d.ts.map +1 -0
- package/dist/web-tools.js +271 -0
- package/dist/web-tools.js.map +1 -0
- package/package.json +69 -65
- package/public/icon.svg +15 -15
- package/server.json +37 -37
package/dist/trivia-tool.js
CHANGED
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
// Open Trivia Database integration.
|
|
2
|
-
// No authentication required
|
|
2
|
+
// No authentication required - completely free and open.
|
|
3
3
|
// Base URL: https://opentdb.com/
|
|
4
4
|
const OPENTDB_BASE = "https://opentdb.com";
|
|
5
5
|
// Response codes from the API
|
|
6
6
|
const RESPONSE_CODES = {
|
|
7
7
|
0: "Success",
|
|
8
|
-
1: "No results
|
|
9
|
-
2: "Invalid parameter
|
|
8
|
+
1: "No results - the database does not have enough questions for the requested parameters.",
|
|
9
|
+
2: "Invalid parameter - one or more query parameters is invalid.",
|
|
10
10
|
3: "Token not found.",
|
|
11
|
-
4: "Token is empty
|
|
12
|
-
5: "Rate limit
|
|
11
|
+
4: "Token is empty - all available questions have been returned.",
|
|
12
|
+
5: "Rate limit - too many requests. Please wait 5 seconds before trying again.",
|
|
13
13
|
};
|
|
14
14
|
// ─── trivia_questions ─────────────────────────────────────────────────────────
|
|
15
15
|
// GET /api.php?amount={n}&category={id}&difficulty={easy|medium|hard}&type={multiple|boolean}
|
package/dist/usgs-tool.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
// ─── USGS Earthquake Data ─────────────────────────────────────────────────────
|
|
2
|
-
// Free USGS Earthquake Hazards Program API
|
|
2
|
+
// Free USGS Earthquake Hazards Program API - no auth required.
|
|
3
3
|
// Docs: https://earthquake.usgs.gov/fdsnws/event/1/
|
|
4
4
|
const USGS_BASE = "https://earthquake.usgs.gov/fdsnws/event/1";
|
|
5
5
|
// ─── API helper ──────────────────────────────────────────────────────────────
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* uxpass-tool - MCP handlers for UXPass (Chunk 1 stubs).
|
|
3
|
+
*
|
|
4
|
+
* UXPass is the UI/UX sister to TestPass. The full execution pipeline
|
|
5
|
+
* (capture, hat panel, synthesiser, reports) ships in Chunks 2 to 4.
|
|
6
|
+
* Chunk 1 wires the MCP surface so agents can discover the contract,
|
|
7
|
+
* does a minimal pack YAML validity check, and persists registered packs
|
|
8
|
+
* to a local file under packs/registered/ so the wiring is end-to-end
|
|
9
|
+
* testable before the backend lands.
|
|
10
|
+
*
|
|
11
|
+
* Note on schema validation: the canonical zod schema for UXPass packs
|
|
12
|
+
* lives in @unclick/uxpass and is unit-tested there. This MCP wrapper
|
|
13
|
+
* cannot depend on the workspace package because mcp-server is published
|
|
14
|
+
* standalone to npm. The check here is intentionally shallow (parse YAML,
|
|
15
|
+
* confirm the required top-level keys exist). Full validation runs server
|
|
16
|
+
* side when the UXPass API ships in a later chunk.
|
|
17
|
+
*/
|
|
18
|
+
export declare function uxpassRun(args: Record<string, unknown>): Promise<unknown>;
|
|
19
|
+
export declare function uxpassStatus(args: Record<string, unknown>): Promise<unknown>;
|
|
20
|
+
export declare function uxpassReportHtml(args: Record<string, unknown>): Promise<unknown>;
|
|
21
|
+
export declare function uxpassReportJson(args: Record<string, unknown>): Promise<unknown>;
|
|
22
|
+
export declare function uxpassReportMd(args: Record<string, unknown>): Promise<unknown>;
|
|
23
|
+
export declare function uxpassRegisterPack(args: Record<string, unknown>): Promise<unknown>;
|
|
24
|
+
//# sourceMappingURL=uxpass-tool.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"uxpass-tool.d.ts","sourceRoot":"","sources":["../src/uxpass-tool.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAsCH,wBAAsB,SAAS,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAoB/E;AAED,wBAAsB,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAUlF;AAED,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CActF;AAED,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAetF;AAED,wBAAsB,cAAc,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAapF;AAED,wBAAsB,kBAAkB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CA4CxF"}
|
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* uxpass-tool - MCP handlers for UXPass (Chunk 1 stubs).
|
|
3
|
+
*
|
|
4
|
+
* UXPass is the UI/UX sister to TestPass. The full execution pipeline
|
|
5
|
+
* (capture, hat panel, synthesiser, reports) ships in Chunks 2 to 4.
|
|
6
|
+
* Chunk 1 wires the MCP surface so agents can discover the contract,
|
|
7
|
+
* does a minimal pack YAML validity check, and persists registered packs
|
|
8
|
+
* to a local file under packs/registered/ so the wiring is end-to-end
|
|
9
|
+
* testable before the backend lands.
|
|
10
|
+
*
|
|
11
|
+
* Note on schema validation: the canonical zod schema for UXPass packs
|
|
12
|
+
* lives in @unclick/uxpass and is unit-tested there. This MCP wrapper
|
|
13
|
+
* cannot depend on the workspace package because mcp-server is published
|
|
14
|
+
* standalone to npm. The check here is intentionally shallow (parse YAML,
|
|
15
|
+
* confirm the required top-level keys exist). Full validation runs server
|
|
16
|
+
* side when the UXPass API ships in a later chunk.
|
|
17
|
+
*/
|
|
18
|
+
import * as fs from "node:fs";
|
|
19
|
+
import * as path from "node:path";
|
|
20
|
+
import * as crypto from "node:crypto";
|
|
21
|
+
import yaml from "js-yaml";
|
|
22
|
+
const STUB_NOTE = "UXPass run execution lands in Chunks 2 to 4. Chunk 1 wires the MCP surface and schema only.";
|
|
23
|
+
const PACKS_DIR = path.resolve(process.env.UXPASS_PACKS_DIR ??
|
|
24
|
+
path.join(process.cwd(), "packages", "uxpass", "packs", "registered"));
|
|
25
|
+
const REQUIRED_PACK_KEYS = [
|
|
26
|
+
"name",
|
|
27
|
+
"url",
|
|
28
|
+
"viewports",
|
|
29
|
+
"themes",
|
|
30
|
+
"hats",
|
|
31
|
+
"synthesiser",
|
|
32
|
+
"budgets",
|
|
33
|
+
"remediation",
|
|
34
|
+
];
|
|
35
|
+
function ensurePacksDir() {
|
|
36
|
+
try {
|
|
37
|
+
fs.mkdirSync(PACKS_DIR, { recursive: true });
|
|
38
|
+
}
|
|
39
|
+
catch {
|
|
40
|
+
// best effort. The handler returns a clear error if writeFileSync fails.
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
function safeFilename(name) {
|
|
44
|
+
return name.replace(/[^a-zA-Z0-9._-]+/g, "-").slice(0, 120);
|
|
45
|
+
}
|
|
46
|
+
export async function uxpassRun(args) {
|
|
47
|
+
const packName = typeof args.pack_name === "string" ? args.pack_name : undefined;
|
|
48
|
+
const url = typeof args.url === "string" ? args.url : undefined;
|
|
49
|
+
const hats = Array.isArray(args.hats)
|
|
50
|
+
? args.hats.filter((h) => typeof h === "string")
|
|
51
|
+
: undefined;
|
|
52
|
+
if (!packName && !url) {
|
|
53
|
+
return { error: "Either pack_name or url is required" };
|
|
54
|
+
}
|
|
55
|
+
const runId = `uxpass_${crypto.randomBytes(8).toString("hex")}`;
|
|
56
|
+
return {
|
|
57
|
+
run_id: runId,
|
|
58
|
+
status: "queued",
|
|
59
|
+
pack_name: packName ?? null,
|
|
60
|
+
url: url ?? null,
|
|
61
|
+
hats: hats ?? null,
|
|
62
|
+
note: STUB_NOTE,
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
export async function uxpassStatus(args) {
|
|
66
|
+
const runId = typeof args.run_id === "string" ? args.run_id : "";
|
|
67
|
+
if (!runId)
|
|
68
|
+
return { error: "run_id is required" };
|
|
69
|
+
return {
|
|
70
|
+
run_id: runId,
|
|
71
|
+
status: "queued",
|
|
72
|
+
ux_score: null,
|
|
73
|
+
summary: STUB_NOTE,
|
|
74
|
+
};
|
|
75
|
+
}
|
|
76
|
+
export async function uxpassReportHtml(args) {
|
|
77
|
+
const runId = typeof args.run_id === "string" ? args.run_id : "";
|
|
78
|
+
if (!runId)
|
|
79
|
+
return { error: "run_id is required" };
|
|
80
|
+
const html = `<!doctype html>
|
|
81
|
+
<html lang="en">
|
|
82
|
+
<head><meta charset="utf-8"><title>UXPass Report ${runId}</title></head>
|
|
83
|
+
<body>
|
|
84
|
+
<h1>UXPass Report</h1>
|
|
85
|
+
<p>Run id: <code>${runId}</code></p>
|
|
86
|
+
<p>Run not yet implemented. ${STUB_NOTE}</p>
|
|
87
|
+
</body>
|
|
88
|
+
</html>`;
|
|
89
|
+
return { run_id: runId, format: "html", body: html };
|
|
90
|
+
}
|
|
91
|
+
export async function uxpassReportJson(args) {
|
|
92
|
+
const runId = typeof args.run_id === "string" ? args.run_id : "";
|
|
93
|
+
if (!runId)
|
|
94
|
+
return { error: "run_id is required" };
|
|
95
|
+
return {
|
|
96
|
+
run_id: runId,
|
|
97
|
+
format: "json",
|
|
98
|
+
body: {
|
|
99
|
+
run_id: runId,
|
|
100
|
+
status: "queued",
|
|
101
|
+
ux_score: null,
|
|
102
|
+
hat_verdicts: [],
|
|
103
|
+
note: STUB_NOTE,
|
|
104
|
+
},
|
|
105
|
+
};
|
|
106
|
+
}
|
|
107
|
+
export async function uxpassReportMd(args) {
|
|
108
|
+
const runId = typeof args.run_id === "string" ? args.run_id : "";
|
|
109
|
+
if (!runId)
|
|
110
|
+
return { error: "run_id is required" };
|
|
111
|
+
const md = [
|
|
112
|
+
`# UXPass Report ${runId}`,
|
|
113
|
+
"",
|
|
114
|
+
"Run not yet implemented.",
|
|
115
|
+
"",
|
|
116
|
+
STUB_NOTE,
|
|
117
|
+
"",
|
|
118
|
+
].join("\n");
|
|
119
|
+
return { run_id: runId, format: "md", body: md };
|
|
120
|
+
}
|
|
121
|
+
export async function uxpassRegisterPack(args) {
|
|
122
|
+
const packYaml = typeof args.pack_yaml === "string" ? args.pack_yaml : "";
|
|
123
|
+
if (!packYaml)
|
|
124
|
+
return { error: "pack_yaml is required" };
|
|
125
|
+
let parsed;
|
|
126
|
+
try {
|
|
127
|
+
parsed = yaml.load(packYaml);
|
|
128
|
+
}
|
|
129
|
+
catch (err) {
|
|
130
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
131
|
+
return { error: `pack_yaml is not valid YAML: ${message}` };
|
|
132
|
+
}
|
|
133
|
+
if (!parsed || typeof parsed !== "object" || Array.isArray(parsed)) {
|
|
134
|
+
return { error: "pack_yaml must be a YAML object at the top level" };
|
|
135
|
+
}
|
|
136
|
+
const obj = parsed;
|
|
137
|
+
const missing = REQUIRED_PACK_KEYS.filter((k) => obj[k] === undefined);
|
|
138
|
+
if (missing.length > 0) {
|
|
139
|
+
return {
|
|
140
|
+
error: "pack is missing required keys",
|
|
141
|
+
missing,
|
|
142
|
+
hint: "Required keys are name, url, viewports, themes, hats, synthesiser, budgets, remediation. See @unclick/uxpass for the full zod schema.",
|
|
143
|
+
};
|
|
144
|
+
}
|
|
145
|
+
const name = typeof obj.name === "string" ? obj.name : "";
|
|
146
|
+
if (!name)
|
|
147
|
+
return { error: "pack name must be a non-empty string" };
|
|
148
|
+
ensurePacksDir();
|
|
149
|
+
const packId = `${safeFilename(name)}-${crypto.randomBytes(4).toString("hex")}`;
|
|
150
|
+
const filePath = path.join(PACKS_DIR, `${packId}.yaml`);
|
|
151
|
+
try {
|
|
152
|
+
fs.writeFileSync(filePath, packYaml, "utf8");
|
|
153
|
+
}
|
|
154
|
+
catch (err) {
|
|
155
|
+
const message = err instanceof Error ? err.message : String(err);
|
|
156
|
+
return { error: `failed to persist pack: ${message}` };
|
|
157
|
+
}
|
|
158
|
+
return {
|
|
159
|
+
pack_id: packId,
|
|
160
|
+
name,
|
|
161
|
+
file: filePath,
|
|
162
|
+
note: "Persisted to local file. Database-backed persistence and full schema validation land with the backend in a later chunk.",
|
|
163
|
+
};
|
|
164
|
+
}
|
|
165
|
+
//# sourceMappingURL=uxpass-tool.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"uxpass-tool.js","sourceRoot":"","sources":["../src/uxpass-tool.ts"],"names":[],"mappings":"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"}
|
package/dist/vault-bridge.js
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
// ─── Credential Broker: vault-bridge ──────────────────────────────────────────
|
|
2
2
|
// Resolves platform credentials before any tool call.
|
|
3
3
|
// Resolution order (first match wins):
|
|
4
|
-
// 1. Inline args
|
|
5
|
-
// 2. Env vars
|
|
6
|
-
// 3. Local vault
|
|
4
|
+
// 1. Inline args - credentials already in the tool call (pass-through)
|
|
5
|
+
// 2. Env vars - UNCLICK_{SLUG}_{FIELD} (e.g., UNCLICK_XERO_ACCESS_TOKEN)
|
|
6
|
+
// 3. Local vault - keys "{slug}/{field}" in ~/.unclick/vault.enc
|
|
7
7
|
// requires UNCLICK_VAULT_PASSWORD env var to auto-unlock
|
|
8
|
-
// 4. Supabase
|
|
8
|
+
// 4. Supabase - encrypted credentials stored via unclick.world/connect/{slug}
|
|
9
9
|
// requires UNCLICK_API_KEY env var (the user's UnClick API key)
|
|
10
10
|
// fetches from https://unclick.world/api/credentials
|
|
11
11
|
//
|
|
@@ -41,7 +41,7 @@ export async function resolveCredentials(slug, args) {
|
|
|
41
41
|
}
|
|
42
42
|
// Which fields are missing from the incoming args?
|
|
43
43
|
const missing = connector.credentialFields.filter((f) => !args[f.key] || String(args[f.key]).trim() === "");
|
|
44
|
-
// All present inline
|
|
44
|
+
// All present inline - pass straight through.
|
|
45
45
|
if (missing.length === 0)
|
|
46
46
|
return args;
|
|
47
47
|
const resolved = { ...args };
|
|
@@ -75,7 +75,7 @@ export async function resolveCredentials(slug, args) {
|
|
|
75
75
|
}
|
|
76
76
|
}
|
|
77
77
|
catch {
|
|
78
|
-
// vault miss
|
|
78
|
+
// vault miss - continue to next source
|
|
79
79
|
}
|
|
80
80
|
}
|
|
81
81
|
stillMissing = stillMissing.filter((f) => !resolved[f.key] || String(resolved[f.key]).trim() === "");
|
|
@@ -103,7 +103,7 @@ export async function resolveCredentials(slug, args) {
|
|
|
103
103
|
}
|
|
104
104
|
}
|
|
105
105
|
catch {
|
|
106
|
-
// network miss
|
|
106
|
+
// network miss - fall through to error
|
|
107
107
|
}
|
|
108
108
|
}
|
|
109
109
|
// ── 4. Return actionable error ─────────────────────────────────────────────
|
package/dist/vercel-tool.d.ts
CHANGED
|
@@ -3,4 +3,7 @@ export declare function getVercelDeployment(args: Record<string, unknown>): Prom
|
|
|
3
3
|
export declare function listVercelProjects(args: Record<string, unknown>): Promise<unknown>;
|
|
4
4
|
export declare function getVercelDomain(args: Record<string, unknown>): Promise<unknown>;
|
|
5
5
|
export declare function getVercelEnv(args: Record<string, unknown>): Promise<unknown>;
|
|
6
|
+
export declare function createVercelEnv(args: Record<string, unknown>): Promise<unknown>;
|
|
7
|
+
export declare function deleteVercelEnv(args: Record<string, unknown>): Promise<unknown>;
|
|
8
|
+
export declare function createVercelDeployment(args: Record<string, unknown>): Promise<unknown>;
|
|
6
9
|
//# sourceMappingURL=vercel-tool.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vercel-tool.d.ts","sourceRoot":"","sources":["../src/vercel-tool.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"vercel-tool.d.ts","sourceRoot":"","sources":["../src/vercel-tool.ts"],"names":[],"mappings":"AAwDA,wBAAsB,qBAAqB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CA8B3F;AAGD,wBAAsB,mBAAmB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CA6BzF;AAGD,wBAAsB,kBAAkB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CA8BxF;AAGD,wBAAsB,eAAe,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAwBrF;AAGD,wBAAsB,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CA0BlF;AAQD,wBAAsB,eAAe,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAuDrF;AAKD,wBAAsB,eAAe,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAcrF;AAeD,wBAAsB,sBAAsB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAwE5F"}
|
package/dist/vercel-tool.js
CHANGED
|
@@ -9,27 +9,42 @@ function getApiKey(args) {
|
|
|
9
9
|
throw new Error("api_key is required (or set VERCEL_TOKEN env var).");
|
|
10
10
|
return key;
|
|
11
11
|
}
|
|
12
|
-
async function
|
|
13
|
-
const qs = params ? "?" + new URLSearchParams(params).toString() : "";
|
|
14
|
-
const
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
12
|
+
async function vercelRequest(token, method, path, opts) {
|
|
13
|
+
const qs = opts?.params ? "?" + new URLSearchParams(opts.params).toString() : "";
|
|
14
|
+
const headers = {
|
|
15
|
+
Authorization: `Bearer ${token}`,
|
|
16
|
+
};
|
|
17
|
+
const init = { method, headers };
|
|
18
|
+
if (opts?.body !== undefined) {
|
|
19
|
+
headers["Content-Type"] = "application/json";
|
|
20
|
+
init.body = JSON.stringify(opts.body);
|
|
21
|
+
}
|
|
22
|
+
const res = await fetch(`${VERCEL_BASE}${path}${qs}`, init);
|
|
19
23
|
if (res.status === 401)
|
|
20
24
|
throw new Error("Invalid Vercel token.");
|
|
21
25
|
if (res.status === 403)
|
|
22
26
|
throw new Error("Vercel: access forbidden. Check token scopes.");
|
|
23
27
|
if (res.status === 404)
|
|
24
28
|
throw new Error(`Vercel: resource not found at ${path}.`);
|
|
29
|
+
if (res.status === 409) {
|
|
30
|
+
const body = await res.text().catch(() => "");
|
|
31
|
+
throw new Error(`Vercel conflict (409): ${body || "resource already exists."}`);
|
|
32
|
+
}
|
|
25
33
|
if (res.status === 429)
|
|
26
34
|
throw new Error("Vercel rate limit exceeded.");
|
|
27
35
|
if (!res.ok) {
|
|
28
36
|
const body = await res.text().catch(() => "");
|
|
29
37
|
throw new Error(`Vercel HTTP ${res.status}: ${body || res.statusText}`);
|
|
30
38
|
}
|
|
39
|
+
// 204 No Content (e.g. DELETE) returns empty body
|
|
40
|
+
if (res.status === 204)
|
|
41
|
+
return {};
|
|
31
42
|
return res.json();
|
|
32
43
|
}
|
|
44
|
+
// Backwards-compat shim for existing callers below.
|
|
45
|
+
async function vercelGet(token, path, params) {
|
|
46
|
+
return vercelRequest(token, "GET", path, { params });
|
|
47
|
+
}
|
|
33
48
|
// list_vercel_deployments
|
|
34
49
|
export async function listVercelDeployments(args) {
|
|
35
50
|
try {
|
|
@@ -199,4 +214,180 @@ export async function getVercelEnv(args) {
|
|
|
199
214
|
return { error: err instanceof Error ? err.message : String(err) };
|
|
200
215
|
}
|
|
201
216
|
}
|
|
217
|
+
// create_vercel_env
|
|
218
|
+
// Adds a single environment variable to a Vercel project.
|
|
219
|
+
// POST /v10/projects/{projectId}/env
|
|
220
|
+
// Accepts target as a CSV string ("production,preview,development") or an array.
|
|
221
|
+
// type defaults to "plain"; use "encrypted" for secrets or "sensitive" for
|
|
222
|
+
// reveal-once values.
|
|
223
|
+
export async function createVercelEnv(args) {
|
|
224
|
+
try {
|
|
225
|
+
const token = getApiKey(args);
|
|
226
|
+
const projectId = String(args.project_id ?? "").trim();
|
|
227
|
+
const key = String(args.key ?? "").trim();
|
|
228
|
+
const value = args.value === undefined ? "" : String(args.value);
|
|
229
|
+
if (!projectId)
|
|
230
|
+
return { error: "project_id is required." };
|
|
231
|
+
if (!key)
|
|
232
|
+
return { error: "key is required." };
|
|
233
|
+
if (value === "")
|
|
234
|
+
return { error: "value is required (use an empty string explicitly if intentional)." };
|
|
235
|
+
// Normalize target: accept "production" | "production,preview" | ["production", "preview"]
|
|
236
|
+
let target;
|
|
237
|
+
if (Array.isArray(args.target)) {
|
|
238
|
+
target = args.target.map((t) => String(t).trim()).filter(Boolean);
|
|
239
|
+
}
|
|
240
|
+
else if (typeof args.target === "string" && args.target.trim()) {
|
|
241
|
+
target = args.target.split(",").map((t) => t.trim()).filter(Boolean);
|
|
242
|
+
}
|
|
243
|
+
else {
|
|
244
|
+
// Sensible default: all three environments.
|
|
245
|
+
target = ["production", "preview", "development"];
|
|
246
|
+
}
|
|
247
|
+
const validTargets = new Set(["production", "preview", "development"]);
|
|
248
|
+
for (const t of target) {
|
|
249
|
+
if (!validTargets.has(t)) {
|
|
250
|
+
return { error: `Invalid target "${t}". Must be production, preview, or development.` };
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
const type = String(args.type ?? "plain");
|
|
254
|
+
if (!["plain", "encrypted", "sensitive", "secret", "system"].includes(type)) {
|
|
255
|
+
return { error: `Invalid type "${type}".` };
|
|
256
|
+
}
|
|
257
|
+
const body = { key, value, type, target };
|
|
258
|
+
if (args.comment)
|
|
259
|
+
body.comment = String(args.comment);
|
|
260
|
+
if (args.git_branch)
|
|
261
|
+
body.gitBranch = String(args.git_branch);
|
|
262
|
+
const params = {};
|
|
263
|
+
if (args.team_id)
|
|
264
|
+
params.teamId = String(args.team_id);
|
|
265
|
+
// upsert=true lets us overwrite an existing value for the same key/target
|
|
266
|
+
// combination instead of 409-ing — matches the "just make it so" mental
|
|
267
|
+
// model most agent flows want.
|
|
268
|
+
if (args.upsert !== false)
|
|
269
|
+
params.upsert = "true";
|
|
270
|
+
const data = await vercelRequest(token, "POST", `/v10/projects/${projectId}/env`, {
|
|
271
|
+
params,
|
|
272
|
+
body,
|
|
273
|
+
});
|
|
274
|
+
// Response shape varies: single item under data.created OR an array.
|
|
275
|
+
const created = data.created ??
|
|
276
|
+
data;
|
|
277
|
+
return { ok: true, created };
|
|
278
|
+
}
|
|
279
|
+
catch (err) {
|
|
280
|
+
return { error: err instanceof Error ? err.message : String(err) };
|
|
281
|
+
}
|
|
282
|
+
}
|
|
283
|
+
// delete_vercel_env
|
|
284
|
+
// Removes an environment variable by its env id.
|
|
285
|
+
// DELETE /v9/projects/{projectId}/env/{envId}
|
|
286
|
+
export async function deleteVercelEnv(args) {
|
|
287
|
+
try {
|
|
288
|
+
const token = getApiKey(args);
|
|
289
|
+
const projectId = String(args.project_id ?? "").trim();
|
|
290
|
+
const envId = String(args.env_id ?? "").trim();
|
|
291
|
+
if (!projectId)
|
|
292
|
+
return { error: "project_id is required." };
|
|
293
|
+
if (!envId)
|
|
294
|
+
return { error: "env_id is required (get it from vercel_get_env)." };
|
|
295
|
+
const params = {};
|
|
296
|
+
if (args.team_id)
|
|
297
|
+
params.teamId = String(args.team_id);
|
|
298
|
+
await vercelRequest(token, "DELETE", `/v9/projects/${projectId}/env/${envId}`, { params });
|
|
299
|
+
return { ok: true, deleted: envId };
|
|
300
|
+
}
|
|
301
|
+
catch (err) {
|
|
302
|
+
return { error: err instanceof Error ? err.message : String(err) };
|
|
303
|
+
}
|
|
304
|
+
}
|
|
305
|
+
// create_vercel_deployment
|
|
306
|
+
// Creates a new deployment, typically to redeploy the latest commit on a
|
|
307
|
+
// project — with optional build-cache skipping (the common "cache-off
|
|
308
|
+
// redeploy" use case when new serverless functions or env vars need to
|
|
309
|
+
// take effect).
|
|
310
|
+
// POST /v13/deployments
|
|
311
|
+
// Two modes:
|
|
312
|
+
// 1. Redeploy an existing deployment: pass { deployment_id }
|
|
313
|
+
// Resolves that deployment, grabs its gitSource, and submits a fresh
|
|
314
|
+
// deploy from the same commit.
|
|
315
|
+
// 2. Fresh deploy from git: pass { project_id, git_ref } (branch name or
|
|
316
|
+
// SHA). Uses projects API to discover the repo's gitRepository.
|
|
317
|
+
// Pass force_new: true to disable build cache.
|
|
318
|
+
export async function createVercelDeployment(args) {
|
|
319
|
+
try {
|
|
320
|
+
const token = getApiKey(args);
|
|
321
|
+
const teamParam = {};
|
|
322
|
+
if (args.team_id)
|
|
323
|
+
teamParam.teamId = String(args.team_id);
|
|
324
|
+
const forceNew = args.force_new === true || args.force_new === "true";
|
|
325
|
+
const target = args.target === undefined ? "production" : String(args.target);
|
|
326
|
+
let name = args.name ? String(args.name) : "";
|
|
327
|
+
let gitSource;
|
|
328
|
+
let meta;
|
|
329
|
+
if (args.deployment_id) {
|
|
330
|
+
// Mode 1: redeploy existing
|
|
331
|
+
const depId = String(args.deployment_id).trim();
|
|
332
|
+
const dep = await vercelRequest(token, "GET", `/v13/deployments/${depId}`, {
|
|
333
|
+
params: teamParam,
|
|
334
|
+
});
|
|
335
|
+
name = name || String(dep.name ?? "");
|
|
336
|
+
gitSource = dep.gitSource;
|
|
337
|
+
meta = dep.meta;
|
|
338
|
+
if (!gitSource) {
|
|
339
|
+
return {
|
|
340
|
+
error: "Source deployment has no gitSource; can't redeploy. Try fresh deploy mode instead.",
|
|
341
|
+
};
|
|
342
|
+
}
|
|
343
|
+
}
|
|
344
|
+
else if (args.project_id) {
|
|
345
|
+
// Mode 2: fresh deploy from git
|
|
346
|
+
const projectId = String(args.project_id).trim();
|
|
347
|
+
const proj = await vercelRequest(token, "GET", `/v9/projects/${projectId}`, {
|
|
348
|
+
params: teamParam,
|
|
349
|
+
});
|
|
350
|
+
name = name || String(proj.name ?? "");
|
|
351
|
+
const link = proj.link;
|
|
352
|
+
if (!link) {
|
|
353
|
+
return { error: "Project is not linked to a git repo; can't deploy from git." };
|
|
354
|
+
}
|
|
355
|
+
const ref = args.git_ref ? String(args.git_ref) : "main";
|
|
356
|
+
gitSource = {
|
|
357
|
+
type: link.type ?? "github",
|
|
358
|
+
repoId: link.repoId,
|
|
359
|
+
ref,
|
|
360
|
+
};
|
|
361
|
+
}
|
|
362
|
+
else {
|
|
363
|
+
return { error: "Provide either deployment_id (redeploy) or project_id (fresh deploy)." };
|
|
364
|
+
}
|
|
365
|
+
if (!name)
|
|
366
|
+
return { error: "Could not determine project name." };
|
|
367
|
+
const body = {
|
|
368
|
+
name,
|
|
369
|
+
target,
|
|
370
|
+
gitSource,
|
|
371
|
+
};
|
|
372
|
+
if (meta)
|
|
373
|
+
body.meta = meta;
|
|
374
|
+
// forceNew=1 tells Vercel to skip the build cache for this deployment.
|
|
375
|
+
const params = { ...teamParam };
|
|
376
|
+
if (forceNew)
|
|
377
|
+
params.forceNew = "1";
|
|
378
|
+
const data = await vercelRequest(token, "POST", "/v13/deployments", { params, body });
|
|
379
|
+
return {
|
|
380
|
+
ok: true,
|
|
381
|
+
uid: data.uid ?? data.id,
|
|
382
|
+
url: data.url,
|
|
383
|
+
state: data.readyState ?? data.status,
|
|
384
|
+
target: data.target,
|
|
385
|
+
inspector_url: data.inspectorUrl,
|
|
386
|
+
force_new: forceNew,
|
|
387
|
+
};
|
|
388
|
+
}
|
|
389
|
+
catch (err) {
|
|
390
|
+
return { error: err instanceof Error ? err.message : String(err) };
|
|
391
|
+
}
|
|
392
|
+
}
|
|
202
393
|
//# sourceMappingURL=vercel-tool.js.map
|
package/dist/vercel-tool.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"vercel-tool.js","sourceRoot":"","sources":["../src/vercel-tool.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"vercel-tool.js","sourceRoot":"","sources":["../src/vercel-tool.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Built-in web tools for UnClick MCP: web_search, web_scrape, search_docs.
|
|
3
|
+
*
|
|
4
|
+
* These back up UnClick's "you can remove Exa/Tavily/Firecrawl/context7" nudge
|
|
5
|
+
* by giving it real first-party implementations. All three proxy to third-party
|
|
6
|
+
* APIs configured via Vercel env vars:
|
|
7
|
+
*
|
|
8
|
+
* - TAVILY_API_KEY (preferred for search + extract)
|
|
9
|
+
* - EXA_API_KEY (fallback for search)
|
|
10
|
+
* - BRAVE_SEARCH_API_KEY (fallback for search)
|
|
11
|
+
* - FIRECRAWL_API_KEY (preferred for scrape; Tavily extract is fallback)
|
|
12
|
+
*
|
|
13
|
+
* When none are configured, the tools return a friendly message pointing users
|
|
14
|
+
* at settings. context7 (search_docs) is free and needs no key.
|
|
15
|
+
*/
|
|
16
|
+
export interface WebSearchResult {
|
|
17
|
+
title: string;
|
|
18
|
+
url: string;
|
|
19
|
+
snippet: string;
|
|
20
|
+
score?: number;
|
|
21
|
+
}
|
|
22
|
+
export interface WebSearchResponse {
|
|
23
|
+
query: string;
|
|
24
|
+
results: WebSearchResult[];
|
|
25
|
+
provider: string;
|
|
26
|
+
remembered?: string;
|
|
27
|
+
}
|
|
28
|
+
export declare function webSearch(args: {
|
|
29
|
+
query?: string;
|
|
30
|
+
limit?: number;
|
|
31
|
+
topic?: string;
|
|
32
|
+
}): Promise<WebSearchResponse | {
|
|
33
|
+
error: string;
|
|
34
|
+
}>;
|
|
35
|
+
export interface WebScrapeResponse {
|
|
36
|
+
url: string;
|
|
37
|
+
format: "text" | "markdown" | "html";
|
|
38
|
+
content: string;
|
|
39
|
+
title?: string;
|
|
40
|
+
provider: string;
|
|
41
|
+
}
|
|
42
|
+
export declare function webScrape(args: {
|
|
43
|
+
url?: string;
|
|
44
|
+
format?: string;
|
|
45
|
+
}): Promise<WebScrapeResponse | {
|
|
46
|
+
error: string;
|
|
47
|
+
}>;
|
|
48
|
+
export interface SearchDocsResponse {
|
|
49
|
+
library: string;
|
|
50
|
+
library_id?: string;
|
|
51
|
+
topic?: string;
|
|
52
|
+
content: string;
|
|
53
|
+
provider: "context7";
|
|
54
|
+
}
|
|
55
|
+
export declare function searchDocs(args: {
|
|
56
|
+
library?: string;
|
|
57
|
+
topic?: string;
|
|
58
|
+
max_tokens?: number;
|
|
59
|
+
}): Promise<SearchDocsResponse | {
|
|
60
|
+
error: string;
|
|
61
|
+
}>;
|
|
62
|
+
//# sourceMappingURL=web-tools.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"web-tools.d.ts","sourceRoot":"","sources":["../src/web-tools.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AA2BH,MAAM,WAAW,eAAe;IAC9B,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,eAAe,EAAE,CAAC;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAmFD,wBAAsB,SAAS,CAAC,IAAI,EAAE;IACpC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB,GAAG,OAAO,CAAC,iBAAiB,GAAG;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,CA4CjD;AAID,MAAM,WAAW,iBAAiB;IAChC,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,GAAG,UAAU,GAAG,MAAM,CAAC;IACrC,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;CAClB;AAkDD,wBAAsB,SAAS,CAAC,IAAI,EAAE;IACpC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB,GAAG,OAAO,CAAC,iBAAiB,GAAG;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,CA0CjD;AAID,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,UAAU,CAAC;CACtB;AAwBD,wBAAsB,UAAU,CAAC,IAAI,EAAE;IACrC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB,GAAG,OAAO,CAAC,kBAAkB,GAAG;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,CAoClD"}
|