Files
mozimo.in/.agents/skills/shopify-storefront-graphql/scripts/search_docs.js
T
tanshu 328a1a23e0 Agent skills
Prettier
eslint
shopify
2026-09-06 06:38:04 +00:00

123 lines
4.2 KiB
JavaScript

#!/usr/bin/env node\n// AUTO-GENERATED — do not edit directly.\n// Edit src/agent-skills/scripts/ in shopify-dev-tools and run: npm run generate_agent_skills
// src/agent-skills/scripts/instrumentation.ts
var SHOPIFY_DEV_BASE_URL = process.env.DEV && process.env.DEV !== "false" ? "https://shopify-dev.shop.dev/" : "https://shopify.dev/";
function isProductionVersion() {
return /^\d+\.\d+\.\d+$/.test("1.5.0");
}
function isInstrumentationDisabled() {
if (!isProductionVersion()) return true;
try {
return process.env.OPT_OUT_INSTRUMENTATION === "true";
} catch {
return false;
}
}
async function reportValidation(toolName, result, opts) {
if (isInstrumentationDisabled()) return;
try {
const clientName = opts?.clientName ?? process.env.CLIENT_NAME;
const clientModel = opts?.clientModel ?? process.env.CLIENT_MODEL;
const headers = {
"Content-Type": "application/json",
Accept: "application/json",
"Cache-Control": "no-cache",
"X-Shopify-Surface": "skills",
"X-Shopify-Client-Version": "1.5.0",
"X-Shopify-MCP-Version": "1.5.0",
"X-Shopify-Timestamp": (/* @__PURE__ */ new Date()).toISOString()
};
if (clientName) headers["X-Shopify-Client-Name"] = clientName;
if (clientModel) headers["X-Shopify-Client-Model"] = clientModel;
const parameters = { skill: "shopify-storefront-graphql" };
if (opts?.artifactId) {
parameters.artifactId = opts.artifactId;
parameters.revision = opts.revision ?? 1;
}
const url = new URL("/mcp/usage", SHOPIFY_DEV_BASE_URL);
await fetch(url.toString(), {
method: "POST",
headers,
body: JSON.stringify({
tool: toolName,
parameters,
result: JSON.stringify(result)
})
});
} catch {
}
}
// src/agent-skills/scripts/search_docs.ts
var SHOPIFY_DEV_BASE_URL2 = process.env.DEV && process.env.DEV !== "false" ? "https://shopify-dev.shop.dev/" : "https://shopify.dev/";
async function performSearch(query2, apiName2, useLegacy) {
const headers = {
"Content-Type": "application/json",
Accept: "application/json",
"X-Shopify-Surface": "skills"
};
if (useLegacy) {
headers["X-Shopify-Dev-Use-OpenAI-Search"] = "true";
}
const body = { query: query2 };
if (apiName2) body.api_name = apiName2;
const url = new URL("/assistant/search", SHOPIFY_DEV_BASE_URL2);
const response = await fetch(url.toString(), {
method: "POST",
headers,
body: JSON.stringify(body)
});
if (!response.ok) {
const errorBody = await response.text().catch(() => "");
throw new Error(
errorBody ? `HTTP ${response.status}: ${errorBody}` : `HTTP error! status: ${response.status}`
);
}
const responseText = await response.text();
try {
const jsonData = JSON.parse(responseText);
return JSON.stringify(jsonData, null, 2);
} catch {
return responseText;
}
}
var query = process.argv[2];
if (!query) {
console.error("Usage: search_docs.js <query>");
process.exit(1);
}
var apiName = "storefront-graphql";
var startWithLegacy = process.env.USE_LEGACY_SEARCH === "true";
var searchOpts = {
clientModel: process.env.CLIENT_MODEL,
clientName: process.env.CLIENT_NAME
};
try {
let result;
try {
result = await performSearch(query, apiName, startWithLegacy);
} catch (firstError) {
const firstMessage = firstError instanceof Error ? firstError.message : String(firstError);
try {
result = await performSearch(query, apiName, !startWithLegacy);
} catch (retryError) {
const retryMessage = retryError instanceof Error ? retryError.message : String(retryError);
throw new Error(
`Search failed on both backends.
First attempt (${startWithLegacy ? "legacy" : "new"}): ${firstMessage}
Retry (${startWithLegacy ? "new" : "legacy"}): ${retryMessage}`
);
}
}
process.stdout.write(result);
process.stdout.write("\n");
await reportValidation("search_docs", { success: true, result: "SUCCESS", details: null }, searchOpts);
} catch (error) {
const message = error instanceof Error ? error.message : String(error);
console.error(`Search failed: ${message}`);
await reportValidation("search_docs", { success: false, result: "FAILED", details: message }, searchOpts);
process.exit(1);
}