1#!/usr/bin/env node2var ce=Object.defineProperty;var r=(e,t)=>ce(e,"name",{value:t,configurable:!0});import{createHash as Te}from"crypto";import{chmodSync as ye,closeSync as Ne,lstatSync as Re,mkdirSync as be,openSync as De,readdirSync
3`)}r(V,"formatCliHelp");var Ie="https://shopify.dev/",Se="https://shopify-dev.shop.dev/";function F(e){return`https://shopify-dev-staging${e}.shopifycloud.com/`}r(F,"stagingHost");function b(e){let t=e?.env??process.env,n=t.SHOPIFY_DEV_STAGING_SERVER_NUMBER?.trim();if(n){if(!/^\d+$/.test(n))throw new Error(`SHOPIFY_DEV_STAGING_SERVER_NUMBER must be a positive integer; got: "${n}"`);let i=Number(n);if(!Number.isSafeInteger(i)||i<=0)throw new Error(`SHOPIFY_DEV_STAGING_SERVER_NUMBER must be a positive integer; got: "${n}"`);let o=t.MINERVA_TOKEN;if(!o){let a=F(i).replace(/\/$/,"");throw new Error(`SHOPIFY_DEV_STAGING_SERVER_NUMBER=${i} is set but no Minerva token is available. Staging servers are behind Minerva. Get a token via:
5`));return}await M("/mcp/usage",{method:"POST",headers:f,body:L,instrumentation:{packageVersion:"1.16.0",timestamp:new Date().toISOString()}})}catch{}}r(H,"reportValidation");var G=".feedback",Pe=1440*60*1e3;function Ue(){let e=process.getuid?.()??0;return D(xe(),`shopify-ai-toolkit-telemetry-${e}`)}r(Ue,"markerDir");function Ve(e,t){let n=Te("sha256").update(t).digest("hex").slice(0,32);return D(e,`${n}${G}`)}r(Ve,"markerPath");function Fe(e){try{let t=Date.now()-Pe;for(let n of Ce(e)){if(!n.endsWith(G))continue;let s=D(e,n);try{Le(s).mtimeMs<t&&Ae(s,{force:!0})}catch{}}}catch{}}r(Fe,"pruneStaleMarkers");function Me(e){let t;try{t=Ue(),be(t,{recursive:!0,mode:448});let n=Re(t),s=process.getuid?.();if(n.isSymbolicLink()||!n.isDirectory()||s!==void 0&&n.uid!==s)return!0;try{ye(t,448)}catch{return!0}Fe(t)}catch{return!0}try{return Ne(De(Ve(t,e),"wx",384)),!0}catch(n){return n?.code!=="EEXIST"}}r(Me,"claimOnceMarker");function g(e,t){return e.includes(t)?t:void 0}r(g,"parseEnum");function j(e){return typeof e=="string"&&e.length>0?e:void 0}r(j,"nonEmptyFlag");function T(e){return{type:"string",choices:u,description:e}}r(T,"verdictOption");var Y={overall:{type:"string",choices:R,description:"Overall toolkit verdict for this turn"},"docs-context":T("Verdict for docs/search context"),"schema-validation":T("Verdict for schema/code validation"),"api-version":T("Verdict for API version targeting"),codegen:T("Verdict for generated code"),"comment-base64":{type:"string",valueName:"base64",description:`Base64-encoded rationale, decoded and truncated to ${500} chars (base64 keeps arbitrary text inert in the shell)`},"session-id":m["session-id"],"tool-use-id":m["tool-use-id"],...v,...U},we=[V(["scripts/log_feedback.mjs --overall <up|down|mixed> --docs-context <verdict>"," --schema-validation <verdict> --api-version <verdict> --codegen <verdict>"," --comment-base64 <base64> [--session-id <id>] [--tool-use-id <id>]"," [--model <name>] [--client-name <name>] [--client-version <version>]"],Y),"","Each <verdict> is one of: worked | partial | failed | not_used.","Run once per turn. Without a session id or tool-use id there is no dedupe","key, so nothing is sent."].join(`