uiplug-mcp 1.3.1 → 1.3.2
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/index.js +6 -22
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -469,31 +469,15 @@ ${c.code_component}
|
|
|
469
469
|
const { name: compName, description, framework, category, code, installation, tags, model, group_slug, visibility = "public", } = (args ?? {});
|
|
470
470
|
const { createHash: createHash2 } = await import("crypto");
|
|
471
471
|
const keyHashForCreate = createHash2("sha256").update(process.env.UIPLUG_API_KEY ?? "").digest("hex");
|
|
472
|
-
// Resolve tag names → UUIDs (
|
|
472
|
+
// Resolve tag names → UUIDs via SECURITY DEFINER RPC (auto-creates missing tags)
|
|
473
473
|
let tagIds = [];
|
|
474
474
|
if (tags && tags.length > 0) {
|
|
475
|
-
const
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
.select("id, name")
|
|
480
|
-
.in("name", normalizedNames);
|
|
481
|
-
const existingMap = {};
|
|
482
|
-
for (const t of (existingTags ?? [])) {
|
|
483
|
-
existingMap[t.name] = t.id;
|
|
475
|
+
const { data: resolvedIds, error: tagError } = await supabase
|
|
476
|
+
.rpc("upsert_tags", { p_names: tags });
|
|
477
|
+
if (tagError) {
|
|
478
|
+
return { content: [{ type: "text", text: `Error resolving tags: ${tagError.message}` }], isError: true };
|
|
484
479
|
}
|
|
485
|
-
|
|
486
|
-
const missing = normalizedNames.filter((n) => !existingMap[n]);
|
|
487
|
-
if (missing.length > 0) {
|
|
488
|
-
const { data: created } = await supabase
|
|
489
|
-
.from("tags")
|
|
490
|
-
.insert(missing.map((name) => ({ name })))
|
|
491
|
-
.select("id, name");
|
|
492
|
-
for (const t of (created ?? [])) {
|
|
493
|
-
existingMap[t.name] = t.id;
|
|
494
|
-
}
|
|
495
|
-
}
|
|
496
|
-
tagIds = normalizedNames.map((n) => existingMap[n]).filter(Boolean);
|
|
480
|
+
tagIds = resolvedIds ?? [];
|
|
497
481
|
}
|
|
498
482
|
const { data: componentId, error } = await supabase.rpc("create_component", {
|
|
499
483
|
p_key_hash: keyHashForCreate,
|