@superglue/cli 1.1.212 → 1.1.213

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.
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "superglue",
3
3
  "description": "Build, test, and manage superglue tools via the sg CLI. Use when working with superglue tools, systems, APIs, SDKs, or the sg command.",
4
- "version": "1.1.212",
4
+ "version": "1.1.213",
5
5
  "author": {
6
6
  "name": "superglue",
7
7
  "email": "hello@superglue.cloud"
package/dist/cli.js CHANGED
@@ -706,6 +706,7 @@ window.addEventListener("load",schedule);
706
706
  `))!==-1;){let d=i.slice(0,l);if(i=i.slice(l+1),d.endsWith("\r")&&(d=d.slice(0,-1)),d===""){if(a()===!1)return;continue}d.startsWith(":")||(d.startsWith("event:")?o=d.slice(6).trimStart():d.startsWith("data:")&&s.push(d.slice(5).replace(/^ /,"")))}}}finally{try{await r.cancel()}catch{}}}});var sS=m(oS=>{"use strict";Object.defineProperty(oS,"__esModule",{value:!0});oS.injectHeadStyle=qhe;function qhe(t,e,r="end"){if(r==="start"){let o=t.match(/<head(?=[\s>])[^>]*>/i);if(o?.index!==void 0){let s=o.index+o[0].length;return t.slice(0,s)+e+t.slice(s)}}let n=t.search(/<\/head\s*>/i);if(n!==-1)return t.slice(0,n)+e+t.slice(n);let i=t.match(/<body(?=[\s>])[^>]*>/i);if(i?.index!==void 0){let o=i.index+i[0].length;return t.slice(0,o)+e+t.slice(o)}return e+t}});var cS=m(bu=>{"use strict";Object.defineProperty(bu,"__esModule",{value:!0});bu.ARTIFACT_BASE_CSS=void 0;bu.injectArtifactBaseStyle=Vhe;var Ghe=sS(),xg=Vd(),{colors:kn,shades:Cu,chart:ks,radius:aS}=xg.SUPERGLUE_DESIGN;bu.ARTIFACT_BASE_CSS=`
707
707
  :root{--sg-bg:${kn.background};--sg-surface:${kn.surface};--sg-surface-2:${Cu.surface2};--sg-ink:${kn.text};--sg-ink-2:${kn.mutedText};--sg-ink-3:${Cu.ink3};--sg-line:${kn.border};--sg-line-2:${Cu.line2};--sg-input:${Cu.input};--sg-primary:${kn.primary};--sg-primary-hover:${Cu.primaryHover};--sg-ring:${Cu.ring};--sg-link:${kn.link};--sg-destructive:${kn.danger};--sg-success:${kn.success};--sg-warning:${kn.warning};--sg-on-primary:${kn.onPrimary};--sg-accent:${kn.accent};--sg-blue:${ks[0]};--sg-cyan:${ks[1]};--sg-purple:${ks[2]};--sg-pink:${ks[3]};--sg-green:${ks[4]};--sg-chart-1:var(--sg-blue);--sg-chart-2:var(--sg-cyan);--sg-chart-3:var(--sg-purple);--sg-chart-4:var(--sg-pink);--sg-chart-5:var(--sg-green);--sg-chart-6:${ks[5]};--sg-chart-7:${ks[6]};--sg-chart-8:${ks[7]};--sg-radius:${aS}px;--sg-radius-md:${aS*.75}px;--sg-radius-xl:${aS*1.5}px;--sg-shadow-sm:0 1px 2px 0 rgb(0 0 0/.05);--sg-font-sans:${(0,xg.superglueFontStack)("body")};--sg-font-heading:${(0,xg.superglueFontStack)("heading")};--sg-font-mono:${(0,xg.superglueFontStack)("mono")};--sg-header-bg:var(--sg-primary);--sg-header-ink:var(--sg-on-primary)}
708
708
  body{background:var(--sg-bg);color:var(--sg-ink);font-family:var(--sg-font-sans)}
709
+ :where(main){max-width:960px;margin:0 auto;padding:32px 24px}
709
710
  h1{font-size:calc(2em*var(--sg-heading-scale,1))}h2{font-size:calc(1.5em*var(--sg-heading-scale,1))}h3{font-size:calc(1.17em*var(--sg-heading-scale,1))}
710
711
  .sg-header{display:flex;align-items:center;gap:16px;padding:0 0 14px;margin:0 0 24px;border-bottom:1px solid var(--sg-line)}
711
712
  .sg-header img{display:block;height:30px;width:auto;max-width:200px;object-fit:contain}
@@ -760,7 +761,7 @@ label[data-sg-choice]:has(input:focus-visible){box-shadow:0 0 0 1px var(--sg-rin
760
761
  .sg-footnote{color:var(--sg-ink-3);font-size:.75rem;line-height:1.1rem;margin-top:28px;border-top:1px solid var(--sg-line);padding-top:10px}
761
762
  [data-sg-deck]{display:flex;flex-direction:column;align-items:center;gap:24px;padding:24px 0;margin:0;max-width:none}
762
763
  [data-sg-slide]{position:relative!important;box-sizing:border-box!important;display:block;width:1280px!important;height:720px!important;flex:none!important;overflow:hidden!important;zoom:var(--sg-deck-scale,1);background:var(--sg-bg);color:var(--sg-ink);box-shadow:0 1px 3px rgb(0 0 0/.12),0 0 0 1px var(--sg-line);break-after:page}
763
- @media print{[data-sg-deck]{display:block;padding:0}[data-sg-slide]{zoom:1;box-shadow:none}}
764
+ @media print{:where(main){max-width:none;padding:0}[data-sg-deck]{display:block;padding:0}[data-sg-slide]{zoom:1;box-shadow:none}}
764
765
  @media (max-width:640px){.sg-mapping{grid-template-columns:1fr}.sg-mapping>i{display:none}}
765
766
  @media print{.sg-card,.sg-kpi{break-inside:avoid;box-shadow:none}h1,h2,h3,h4,h5,h6{break-after:avoid}}
766
767
  `.trim();var Yhe=`<style data-sg-base>${bu.ARTIFACT_BASE_CSS}</style>`;function Vhe(t){return t.includes("<style data-sg-base>")?t:(0,Ghe.injectHeadStyle)(t,Yhe,"start")}});var LL=m(Jd=>{"use strict";Object.defineProperty(Jd,"__esModule",{value:!0});Jd.DeploymentConfigError=void 0;Jd.buildDeploymentConfig=tge;var Jhe=["pro","team","enterprise"],Lg={pro:"prod_UjB46ulzKsQ1Ef",team:"prod_UiMeaL02tN4BMg",enterprise:"prod_UapuUIQQuluzUV"},Pg=["openai","anthropic","gemini","azure","bedrock","vertex"],Whe=["tavily","model_provider","searxng","disabled"],Zhe=["openai","anthropic","azure"],Khe=["cloud","enterprise"],Xhe=["aws","minio","azure"],ege=/^(?=.{3,63}$)[a-z0-9]+(-[a-z0-9]+)*$/,xL=["email_password","google","github","okta"],uS=class{constructor(e){this.raw=e,this.issues=[]}build(){let e=this.requiredPort("API_PORT",3002,"runtime.apiPort"),r=this.requiredPort("WEB_PORT",3001,"runtime.webPort"),n=this.requiredUrl("PUBLIC_API_URL",`http://localhost:${e}`,"runtime.publicApiUrl"),i=this.url("INTERNAL_API_URL",n,"runtime.internalApiUrl"),o=this.requiredUrl("PUBLIC_APP_URL","https://app.superglue.cloud","runtime.publicAppUrl"),s=this.url("INTERNAL_APP_URL",o,"runtime.internalAppUrl"),a=this.deploymentMode(),c=this.requiredBoolean("BLOCK_LOCAL_REQUESTS",!1,"security.blockLocalRequests"),u=this.llm(this.choice("PRIMARY_LLM_PROVIDER",Pg,"openai","llm.primary.provider"),this.required("PRIMARY_LLM_MODEL","llm.primary.model"),"llm.primary"),l=this.llmFallbacks(),d=this.llm(this.choice("SUMMARIZE_LLM_PROVIDER",Pg,"openai","llm.summarize.provider"),this.required("SUMMARIZE_LLM_MODEL","llm.summarize.model"),"llm.summarize"),A={deployment:{mode:a,orgConcurrencyLimits:a==="enterprise"?"disabled":"tier_config"},runtime:{apiPort:e,webPort:r,publicApiUrl:n,internalApiUrl:i,publicAppUrl:o,internalAppUrl:s,scheduler:this.scheduler()},website:{contactFormToEmail:this.optional("WEBSITE_CONTACT_FORM_TO_EMAIL")??null},security:{jwtSecret:this.required("JWT_AUTH_SECRET","security.jwtSecret"),internalApiToken:this.required("INTERNAL_API_TOKEN","security.internalApiToken"),credentialsEncryptionKey:this.required("MASTER_ENCRYPTION_KEY","security.credentialsEncryptionKey"),blockLocalRequests:c,trustProxyHops:this.nonNegativeInteger("TRUST_PROXY_HOPS",1,"security.trustProxyHops")},storage:{postgres:{host:this.required("POSTGRES_HOST","storage.postgres.host"),port:this.requiredPort("POSTGRES_PORT",5432,"storage.postgres.port"),username:this.required("POSTGRES_USERNAME","storage.postgres.username"),password:this.required("POSTGRES_PASSWORD","storage.postgres.password"),database:this.required("POSTGRES_DB","storage.postgres.database"),ssl:this.requiredBoolean("POSTGRES_SSL",!0,"storage.postgres.ssl")},objectStorage:this.objectStorage()},llm:{primary:u,primaryFallbacks:l,summarize:d},externalProviders:{posthog:this.posthog(),langfuse:this.langfuse(),resend:this.resend(),loops:this.loops(),teamsBot:this.teamsBot(),webSearch:this.webSearch(u.provider,l)},billing:this.billing(a),bundles:this.bundles(),features:{briefings:this.boolean("BRIEFINGS_ENABLED",!1,"features.briefings")},auth:this.auth()};if(this.issues.length>0)throw new $g(this.issues);return A}optional(e){let r=this.raw[e]?.trim();return r||void 0}required(e,r){let n=this.optional(e);return n||(this.issues.push({path:r,message:`${e} is required.`}),"")}requiredOptional(e,r){let n=this.optional(e);return n||this.issues.push({path:r,message:`${e} is required.`}),n}boolean(e,r,n){let i=this.optional(e);return i?i==="true"?!0:i==="false"?!1:(this.issues.push({path:n,message:`${e} must be "true" or "false".`}),r):r}requiredBoolean(e,r,n){let i=this.requiredOptional(e,n);return i?i==="true"?!0:i==="false"?!1:(this.issues.push({path:n,message:`${e} must be "true" or "false".`}),r):r}port(e,r,n){let i=this.optional(e);if(!i)return r;let o=Number(i);return!Number.isInteger(o)||o<1||o>65535?(this.issues.push({path:n,message:`${e} must be a TCP port between 1 and 65535.`}),r):o}nonNegativeInteger(e,r,n){let i=this.optional(e);if(!i)return r;let o=Number(i);return!Number.isInteger(o)||o<0?(this.issues.push({path:n,message:`${e} must be a non-negative integer.`}),r):o}requiredPort(e,r,n){return this.requiredOptional(e,n)?this.port(e,r,n):r}url(e,r,n){return this.validUrl(this.optional(e)||r,e,n)??r}validUrl(e,r,n){try{return new URL(e).toString().replace(/\/$/,"")}catch{this.issues.push({path:n,message:`${r} must be a valid URL.`});return}}requiredUrl(e,r,n){return this.requiredOptional(e,n)?this.url(e,r,n):r}choice(e,r,n,i){let o=this.requiredOptional(e,i)?.toLowerCase();return o?r.includes(o)?o:(this.issues.push({path:i,message:`${e} must be one of: ${r.join(", ")}.`}),n):n}listChoice(e,r,n){let i=this.requiredOptional(e,n);if(!i)return[];let o=[],s=new Set;for(let a of i.split(",")){let c=a.trim().toLowerCase();if(!(!c||s.has(c))){if(s.add(c),r.includes(c)){o.push(c);continue}this.issues.push({path:n,message:`${e} contains unsupported value "${c}". Use one of: ${r.join(", ")}.`})}}return o.length===0&&this.issues.push({path:n,message:`${e} must include at least one provider.`}),o}list(e){return(this.optional(e)??"").split(",").map(r=>r.trim()).filter(Boolean)}deploymentMode(){return this.choice("DEPLOYMENT_MODE",Khe,"cloud","deployment.mode")}scheduler(){return this.requiredBoolean("START_SCHEDULER_SERVER",!1,"runtime.scheduler.mode")?{mode:"in_process"}:{mode:"disabled"}}objectStorage(){let e=this.choice("S3_PROVIDER",Xhe,"aws","storage.objectStorage.provider");if(e==="azure")return this.azureObjectStorage();if(e==="minio")return{provider:"minio",endpoint:this.required("S3_ENDPOINT","storage.objectStorage.endpoint"),publicEndpoint:this.optional("S3_PUBLIC_ENDPOINT")??null,bucketName:this.required("MINIO_BUCKET_NAME","storage.objectStorage.bucketName"),bucketPrefix:this.optional("MINIO_BUCKET_PREFIX")?this.bucketPrefix("MINIO_BUCKET_PREFIX"):this.bucketPrefix("AWS_BUCKET_PREFIX"),accessKeyId:this.required("MINIO_ROOT_USER","storage.objectStorage.accessKeyId"),secretAccessKey:this.required("MINIO_ROOT_PASSWORD","storage.objectStorage.secretAccessKey")};let r=this.optional("AWS_S3_ACCESS_KEY_ID"),n=this.optional("AWS_S3_SECRET_ACCESS_KEY");return(r&&!n||!r&&n)&&this.issues.push({path:"storage.objectStorage.credentials",message:"AWS_S3_ACCESS_KEY_ID and AWS_S3_SECRET_ACCESS_KEY must be set together."}),{provider:"aws",region:this.required("AWS_S3_REGION","storage.objectStorage.region"),bucketName:this.required("AWS_BUCKET_NAME","storage.objectStorage.bucketName"),bucketPrefix:this.bucketPrefix("AWS_BUCKET_PREFIX"),...r&&n?{accessKeyId:r,secretAccessKey:n,...this.optional("AWS_S3_SESSION_TOKEN")&&{sessionToken:this.optional("AWS_S3_SESSION_TOKEN")}}:{}}}azureObjectStorage(){let e=this.required("AZURE_STORAGE_CONTAINER_NAME","storage.objectStorage.containerName");e&&!ege.test(e)&&this.issues.push({path:"storage.objectStorage.containerName",message:"AZURE_STORAGE_CONTAINER_NAME must be 3-63 lowercase letters, numbers and single hyphens."});let r=this.bucketPrefix("AZURE_STORAGE_PREFIX"),n=this.optional("AZURE_STORAGE_MANAGED_IDENTITY_CLIENT_ID"),i=this.optional("AZURE_STORAGE_CONNECTION_STRING");if(i){let a=["AZURE_STORAGE_ACCOUNT_NAME","AZURE_STORAGE_ACCOUNT_KEY","AZURE_STORAGE_BLOB_ENDPOINT","AZURE_STORAGE_MANAGED_IDENTITY_CLIENT_ID"].filter(p=>this.optional(p));a.length>0&&this.issues.push({path:"storage.objectStorage.credential",message:`AZURE_STORAGE_CONNECTION_STRING cannot be combined with ${a.join(", ")}.`});let c=new Map;for(let p of i.split(";")){let h=p.indexOf("=");h>0&&c.set(p.slice(0,h).trim(),p.slice(h+1).trim())}let u=c.get("AccountName")??"",l=c.get("AccountKey")??"";(!u||!l)&&this.issues.push({path:"storage.objectStorage.credential",message:"AZURE_STORAGE_CONNECTION_STRING must contain AccountName and AccountKey."});let d=c.get("DefaultEndpointsProtocol")??"https",A=c.get("EndpointSuffix")??"core.windows.net";return{provider:"azure",accountName:u,blobEndpoint:this.validUrl(c.get("BlobEndpoint")??`${d}://${u}.blob.${A}`,"AZURE_STORAGE_CONNECTION_STRING BlobEndpoint","storage.objectStorage.blobEndpoint")??"",containerName:e,bucketPrefix:r,credential:{type:"shared_key",accountKey:l}}}let o=this.required("AZURE_STORAGE_ACCOUNT_NAME","storage.objectStorage.accountName"),s=this.optional("AZURE_STORAGE_ACCOUNT_KEY");return s&&n&&this.issues.push({path:"storage.objectStorage.credential",message:"AZURE_STORAGE_MANAGED_IDENTITY_CLIENT_ID cannot be combined with AZURE_STORAGE_ACCOUNT_KEY."}),{provider:"azure",accountName:o,blobEndpoint:this.url("AZURE_STORAGE_BLOB_ENDPOINT",`https://${o}.blob.core.windows.net`,"storage.objectStorage.blobEndpoint"),containerName:e,bucketPrefix:r,credential:s?{type:"shared_key",accountKey:s}:{type:"token",...n&&{managedIdentityClientId:n}}}}bucketPrefix(e){let r=this.optional(e)?.replace(/^\/+|\/+$/g,"");if(!r)return"";let n=r.split("/");return r.includes("\\")||n.some(i=>!i||i==="."||i==="..")?(this.issues.push({path:"storage.objectStorage.bucketPrefix",message:`${e} must be a path of non-empty segments without "." or "..".`}),""):`${r}/`}llm(e,r,n){let i=e.toLowerCase();if(!Pg.includes(i))return this.issues.push({path:`${n}.provider`,message:`${n} provider must be one of: ${Pg.join(", ")}.`}),{provider:"openai",apiKey:this.optional("OPENAI_API_KEY")||"",model:r};switch(i){case"openai":return this.openai(r,n);case"anthropic":return this.anthropic(r,n);case"gemini":return this.gemini(r,n);case"azure":return this.azure(r,n);case"bedrock":return this.bedrock(r,n);case"vertex":return this.vertex(r,n)}}openai(e,r){return{provider:"openai",apiKey:this.required("OPENAI_API_KEY",`${r}.apiKey`),model:e,...e==="gpt-6.1-sol"&&{reasoningEffort:"medium"},...this.optional("OPENAI_BASE_URL")&&{baseUrl:this.optional("OPENAI_BASE_URL")}}}anthropic(e,r){return{provider:"anthropic",apiKey:this.required("ANTHROPIC_API_KEY",`${r}.apiKey`),model:e,...this.optional("ANTHROPIC_BASE_URL")&&{baseUrl:this.optional("ANTHROPIC_BASE_URL")}}}gemini(e,r){return{provider:"gemini",apiKey:this.required("GEMINI_API_KEY",`${r}.apiKey`),model:e,...this.optional("GEMINI_BASE_URL")&&{baseUrl:this.optional("GEMINI_BASE_URL")}}}llmFallbacks(){return this.list("PRIMARY_LLM_FALLBACKS").flatMap((e,r)=>{let n=`llm.primaryFallbacks.${r}`,i=e.indexOf(":"),o=e.slice(0,i).trim(),s=e.slice(i+1).trim();return i===-1||!o||!s?(this.issues.push({path:n,message:`PRIMARY_LLM_FALLBACKS entry "${e}" must use the provider:model format.`}),[]):[this.llm(o,s,n)]})}azure(e,r){let n=this.optional("AZURE_RESOURCE_NAME"),i=this.optional("AZURE_BASE_URL");return!n&&!i&&this.issues.push({path:r,message:"AZURE_RESOURCE_NAME or AZURE_BASE_URL is required when using Azure."}),{provider:"azure",apiKey:this.required("AZURE_API_KEY",`${r}.apiKey`),model:e,...n&&{resourceName:n},...i&&{baseUrl:i},...this.optional("AZURE_API_VERSION")&&{apiVersion:this.optional("AZURE_API_VERSION")},useDeploymentBasedUrls:this.boolean("AZURE_USE_DEPLOYMENT_BASED_URLS",!1,`${r}.useDeploymentBasedUrls`)}}bedrock(e,r){let n=this.optional("BEDROCK_AWS_ACCESS_KEY_ID"),i=this.optional("BEDROCK_AWS_SECRET_ACCESS_KEY");return(n&&!i||!n&&i)&&this.issues.push({path:`${r}.credentials`,message:"BEDROCK_AWS_ACCESS_KEY_ID and BEDROCK_AWS_SECRET_ACCESS_KEY must be set together."}),{provider:"bedrock",model:e,region:this.required("AWS_BEDROCK_REGION",`${r}.region`),...this.optional("AWS_BASE_URL")&&{baseUrl:this.optional("AWS_BASE_URL")},...n&&i&&{accessKeyId:n,secretAccessKey:i,...this.optional("BEDROCK_AWS_SESSION_TOKEN")&&{sessionToken:this.optional("BEDROCK_AWS_SESSION_TOKEN")}}}}vertex(e,r){let n=this.optional("VERTEX_API_KEY"),i=this.optional("VERTEX_CLIENT_EMAIL"),o=this.optional("VERTEX_PRIVATE_KEY"),s=this.optional("GOOGLE_APPLICATION_CREDENTIALS"),a=i&&o?{type:"service_account",clientEmail:i,privateKey:o}:s?{type:"credentials_file",path:s}:n?{type:"api_key",apiKey:n}:null;return a||this.issues.push({path:`${r}.auth`,message:"VERTEX_API_KEY, VERTEX_CLIENT_EMAIL plus VERTEX_PRIVATE_KEY, or GOOGLE_APPLICATION_CREDENTIALS is required when using Vertex."}),e.startsWith("claude")&&a?.type==="api_key"&&this.issues.push({path:`${r}.auth`,message:"Vertex Claude models require service account or credentials-file auth."}),{provider:"vertex",model:e,...this.optional("VERTEX_PROJECT")&&{project:this.optional("VERTEX_PROJECT")},...this.optional("VERTEX_LOCATION")&&{location:this.optional("VERTEX_LOCATION")},auth:a||{type:"api_key",apiKey:""}}}webSearch(e,r){let n=this.choice("WEB_SEARCH_PROVIDER",Whe,"disabled","externalProviders.webSearch.provider"),i=this.optional("WEB_SEARCH_API_KEY"),o=Zhe.includes(e)?e:null;return n==="disabled"?{provider:"disabled"}:n==="model_provider"?o?r.some(s=>s.provider!==o)?(this.issues.push({path:"externalProviders.webSearch",message:"WEB_SEARCH_PROVIDER=model_provider requires every PRIMARY_LLM_FALLBACKS entry to use the primary LLM provider."}),{provider:"disabled"}):{provider:"model_provider",llmProvider:o}:(this.issues.push({path:"externalProviders.webSearch",message:"WEB_SEARCH_PROVIDER=model_provider requires OpenAI, Anthropic, or Azure."}),{provider:"disabled"}):n==="tavily"?i?{provider:"tavily",apiKey:i}:(this.issues.push({path:"externalProviders.webSearch.apiKey",message:"WEB_SEARCH_API_KEY is required when WEB_SEARCH_PROVIDER=tavily."}),{provider:"disabled"}):n==="searxng"?this.searxng(i):{provider:"disabled"}}searxng(e){return{provider:"searxng",endpoint:this.required("WEB_SEARCH_ENDPOINT","externalProviders.webSearch.endpoint"),...e&&{apiKey:e}}}posthog(){return this.boolean("POSTHOG_ENABLED",!1,"externalProviders.posthog.enabled")?{enabled:!0,apiKey:this.required("POSTHOG_KEY","externalProviders.posthog.apiKey"),serverHost:this.required("POSTHOG_HOST","externalProviders.posthog.serverHost")}:{enabled:!1}}langfuse(){return this.boolean("LANGFUSE_ENABLED",!1,"externalProviders.langfuse.enabled")?{enabled:!0,publicKey:this.required("LANGFUSE_PUBLIC_KEY","externalProviders.langfuse.publicKey"),secretKey:this.required("LANGFUSE_SECRET_KEY","externalProviders.langfuse.secretKey"),baseUrl:this.required("LANGFUSE_BASE_URL","externalProviders.langfuse.baseUrl"),tracingEnvironment:this.required("LANGFUSE_TRACING_ENVIRONMENT","externalProviders.langfuse.tracingEnvironment")}:{enabled:!1}}resend(){return this.boolean("RESEND_ENABLED",!1,"externalProviders.resend.enabled")?{enabled:!0,apiKey:this.required("RESEND_API_KEY","externalProviders.resend.apiKey"),fromEmail:this.required("RESEND_FROM_EMAIL","externalProviders.resend.fromEmail")}:{enabled:!1}}loops(){return this.boolean("LOOPS_ENABLED",!1,"externalProviders.loops.enabled")?{enabled:!0,apiKey:this.required("LOOPS_API_KEY","externalProviders.loops.apiKey")}:{enabled:!1}}teamsBot(){return this.boolean("TEAMS_BOT_ENABLED",!1,"externalProviders.teamsBot.enabled")?{enabled:!0,appId:this.required("TEAMS_BOT_APP_ID","externalProviders.teamsBot.appId"),appPassword:this.required("TEAMS_BOT_APP_PASSWORD","externalProviders.teamsBot.appPassword"),tenantId:this.optional("TEAMS_BOT_TENANT_ID")??null}:{enabled:!1}}bundles(){let e=this.optional("SAGE_INTACCT_SENDER_ID"),r=this.optional("SAGE_INTACCT_SENDER_PASSWORD");return(e&&!r||!e&&r)&&this.issues.push({path:"bundles.sageIntacctSender",message:"SAGE_INTACCT_SENDER_ID and SAGE_INTACCT_SENDER_PASSWORD must be set together."}),{sageIntacctSender:e&&r?{senderId:e,senderPassword:r}:null}}billing(e){return e==="enterprise"?{provider:"disabled"}:{provider:"stripe",secretKey:this.required("STRIPE_SECRET_KEY","billing.secretKey"),webhookSecret:this.required("STRIPE_WEBHOOK_SECRET","billing.webhookSecret"),productIds:this.stripeProductIds()}}stripeProductIds(){let e=this.optional("STRIPE_PRODUCT_IDS");if(!e)return Lg;try{let r=JSON.parse(e);if(!r||typeof r!="object"||Array.isArray(r))return this.issues.push({path:"billing.productIds",message:"STRIPE_PRODUCT_IDS must be a JSON object."}),Lg;let n={...Lg};for(let i of Jhe){let o=r[i];typeof o=="string"&&o.trim()&&(n[i]=o.trim())}return n}catch{return this.issues.push({path:"billing.productIds",message:"STRIPE_PRODUCT_IDS must be valid JSON."}),Lg}}auth(){let e=this.optional("OKTA_SCIM_TOKEN");e&&e.length<32&&this.issues.push({path:"auth.providers.okta.scimToken",message:"OKTA_SCIM_TOKEN must contain at least 32 characters."});let r=this.listChoice("AUTH_PROVIDERS",xL,"auth.providers"),n=new Map,i=this.configuredOAuthProvider("google","GOOGLE"),o=this.configuredOAuthProvider("github","GITHUB"),s=this.configuredOktaProvider();i&&n.set("google",i),o&&n.set("github",o),s&&n.set("okta",s);for(let d of r)switch(d){case"email_password":n.set(d,{provider:d});break;case"google":n.set(d,this.oauthProvider(d,"GOOGLE","auth.providers.google"));break;case"github":n.set(d,this.oauthProvider(d,"GITHUB","auth.providers.github"));break;case"okta":n.set(d,this.oktaProvider());break}let a=xL.flatMap(d=>{let A=n.get(d);return A?[A]:[]}),c=this.requiredBoolean("AUTH_DISABLE_SIGNUP",!1,"auth.disableSignup"),u=this.requiredBoolean("AUTH_DISABLE_INVITES",!1,"auth.disableInvites"),l=n.has("okta");return c&&u&&!l&&this.issues.push({path:"auth",message:"AUTH_DISABLE_SIGNUP and AUTH_DISABLE_INVITES cannot both be true without an Okta provider \u2014 no account creation path would remain."}),{providers:a,visibleProviders:r,disableSignup:c,disableInvites:u}}configuredOAuthProvider(e,r){let n=this.optional(`${r}_CLIENT_ID`),i=this.optional(`${r}_CLIENT_SECRET`);if(!(!n||!i))return{provider:e,clientId:n,clientSecret:i}}configuredOktaProvider(){let e=this.optional("OKTA_CLIENT_ID"),r=this.optional("OKTA_CLIENT_SECRET"),n=this.optional("OKTA_ISSUER"),i=this.optional("OKTA_ORG_ID"),o=this.optional("OKTA_SCIM_TOKEN");if(!(!e||!r||!n||!i))return{provider:"okta",clientId:e,clientSecret:r,issuer:n.replace(/\/$/,""),organizationId:i,...o?{scimToken:o}:{}}}oauthProvider(e,r,n){return{provider:e,clientId:this.required(`${r}_CLIENT_ID`,`${n}.clientId`),clientSecret:this.required(`${r}_CLIENT_SECRET`,`${n}.clientSecret`)}}oktaProvider(){let e=this.optional("OKTA_SCIM_TOKEN");return{provider:"okta",clientId:this.required("OKTA_CLIENT_ID","auth.providers.okta.clientId"),clientSecret:this.required("OKTA_CLIENT_SECRET","auth.providers.okta.clientSecret"),issuer:this.required("OKTA_ISSUER","auth.providers.okta.issuer").replace(/\/$/,""),organizationId:this.required("OKTA_ORG_ID","auth.providers.okta.organizationId"),...e?{scimToken:e}:{}}}},$g=class extends Error{constructor(e){super(`Invalid deployment environment:
@@ -1871,7 +1872,7 @@ ${s}`;return}if(rE(e,i,Jke)){Wke(e,o)&&(r.retry=e.toString("utf8",o));return}if(
1871
1872
  `);t.stack=r?`${r}
1872
1873
  ${o}`:i.stack}K.exports.fetch=function(e,r=void 0){return DOe(e,r).catch(n=>{throw jY?GY(n,jY):n&&typeof n=="object"&&Error.captureStackTrace(n,K.exports.fetch),n})};K.exports.Headers=wc().Headers;K.exports.Response=ep().Response;K.exports.Request=il().Request;K.exports.FormData=Bm().FormData;var{setGlobalOrigin:TOe,getGlobalOrigin:ROe}=Yw();K.exports.setGlobalOrigin=TOe;K.exports.getGlobalOrigin=ROe;var{CacheStorage:NOe}=TG(),{kConstruct:kOe}=Je();K.exports.caches=new NOe(kOe);var{deleteCookie:OOe,getCookies:UOe,getSetCookies:MOe,setCookie:xOe,parseCookie:LOe}=jG();K.exports.deleteCookie=OOe;K.exports.getCookies=UOe;K.exports.getSetCookies=MOe;K.exports.setCookie=xOe;K.exports.parseCookie=LOe;var{parseMIMEType:POe,serializeAMimeType:$Oe}=Un();K.exports.parseMIMEType=POe;K.exports.serializeAMimeType=$Oe;var{CloseEvent:FOe,ErrorEvent:jOe,MessageEvent:zOe}=Hy(),{WebSocket:HOe,ping:qOe}=CY();K.exports.WebSocket=HOe;K.exports.CloseEvent=FOe;K.exports.ErrorEvent=jOe;K.exports.MessageEvent=zOe;K.exports.ping=qOe;K.exports.WebSocketStream=DY().WebSocketStream;K.exports.WebSocketError=Qv().WebSocketError;K.exports.request=Ap(gl.request);K.exports.stream=Ap(gl.stream);K.exports.pipeline=Ap(gl.pipeline);K.exports.connect=Ap(gl.connect);K.exports.upgrade=Ap(gl.upgrade);K.exports.MockClient=mOe;K.exports.MockCallHistory=yOe;K.exports.MockCallHistoryLog=EOe;K.exports.MockPool=COe;K.exports.MockAgent=IOe;K.exports.SnapshotAgent=bOe;K.exports.mockErrors=SOe;var{EventSource:GOe}=FY();K.exports.EventSource=GOe;function YOe(){globalThis.fetch=K.exports.fetch,globalThis.Headers=K.exports.Headers,globalThis.Response=K.exports.Response,globalThis.Request=K.exports.Request,globalThis.FormData=K.exports.FormData,globalThis.WebSocket=K.exports.WebSocket,globalThis.CloseEvent=K.exports.CloseEvent,globalThis.ErrorEvent=K.exports.ErrorEvent,globalThis.MessageEvent=K.exports.MessageEvent,globalThis.EventSource=K.exports.EventSource}K.exports.install=YOe});var JY=m(yl=>{"use strict";Object.defineProperty(yl,"__esModule",{value:!0});yl.SuperglueClient=yl.SuperglueHttpError=void 0;var ml=xr(),Or=tS(),VOe=zS(),JOe=s$(),WOe=Dn(),ds=pu(),ZOe=Ld(),fp=14400*1e3,pp;if(typeof globalThis.process<"u"&&globalThis.process.versions?.node)try{let{Agent:t}=YY();pp=new t({headersTimeout:fp,bodyTimeout:fp})}catch{}function VY(t){if(t?.aborted)throw t.reason??new DOMException("Aborted","AbortError")}var oE=class extends Error{constructor(e,r,n,i){super(e),this.status=r,this.code=n,this.details=i,this.name="SuperglueHttpError"}};yl.SuperglueHttpError=oE;var kv=class{constructor({apiKey:e,apiEndpoint:r,onInfrastructureError:n,refreshToken:i,sseTokenProvider:o,tokenProvider:s}){if(!e&&!s)throw new Error("SuperglueClient requires either apiKey or tokenProvider");this.tokenProvider=s??(async()=>e),this.apiEndpoint=r??"https://api.superglue.cloud",this.sseManager=new VOe.SSELogSubscriptionManager(this.apiEndpoint,o??this.tokenProvider,i),this.onInfrastructureError=n,this.refreshToken=i}async getApiKey(){return this.tokenProvider()}async fetchWithAuthRetry(e,r){let n=await this.getApiKey(),i=await e(n);if(i.status!==401||!this.refreshToken)return i;VY(r);let o=await this.refreshToken();return VY(r),!o||o===n?i:(i.body?.cancel(),e(o))}isInfrastructureError(e){return(0,WOe.isAbortError)(e)?!1:!!(e instanceof TypeError&&e.message.toLowerCase().includes("fetch")||e instanceof Error&&e.name==="TimeoutError")}async restRequest(e,r,n,i,o){let a=await(await this.restResponse({method:e,path:r,body:n,extraHeaders:i,requestInit:o})).text();if(a)return JSON.parse(a)}async restData(...e){return(await this.restRequest(...e)).data}async restResponse({method:e,path:r,body:n,extraHeaders:i,requestInit:o}){let s=`${this.apiEndpoint.replace(/\/$/,"")}${r}`,a=n!=null,c=typeof FormData<"u"&&n instanceof FormData,u=d=>{let A={Authorization:`Bearer ${d}`,...i};return a&&!c&&e!=="GET"&&(A["Content-Type"]="application/json"),fetch(s,{...o,method:e,headers:A,body:a?c?n:JSON.stringify(n):void 0,signal:o?.signal??AbortSignal.timeout(fp),...pp?{dispatcher:pp}:{}})},l;try{l=await this.fetchWithAuthRetry(u,o?.signal)}catch(d){throw this.isInfrastructureError(d)&&this.onInfrastructureError?.(),d}if(!l.ok)throw await this.buildHttpError(l);return l}async uploadFiles(e,r){if(typeof r?.process!="boolean")throw new Error("process must be a boolean");if(e.length===0)return[];let n=e.map(l=>({...l,contentLength:l.contentLength??this.getUploadContentLength(l.content)})),o=(await this.restRequest("POST","/v1/files/uploads",{process:r.process,...r.allowUnprocessed?{allowUnprocessed:!0}:{},files:n.map(({fileName:l,contentType:d,contentLength:A})=>({fileName:l,contentLength:A,...d?{contentType:d}:{}}))})).data.files;if(o.length!==n.length)throw await Promise.all(o.map(l=>this.deleteFileUpload(l.id).catch(()=>{}))),new Error("Upload response did not match the selected files");let s=await Promise.allSettled(o.map(async(l,d)=>{let A=n[d],p=await fetch(l.uploadUrl,{method:"PUT",body:A.content,headers:{...l.uploadHeaders,...A.contentType?{"Content-Type":A.contentType}:{}},signal:AbortSignal.timeout(Math.min(fp,l.expiresIn*1e3))});if(!p.ok)throw new Error(`Upload failed for ${A.fileName}: ${p.status} ${p.statusText}`);return l.id})),a=s.flatMap(l=>l.status==="fulfilled"?[l.value]:[]),c=new Map;if(a.length>0)try{let l=await this.restRequest("POST","/v1/files/uploads/complete",{fileIds:a});c=new Map(l.data.files.map(d=>[d.id,d]))}catch(l){c=new Map(a.map(d=>[d,{id:d,fileName:n[o.findIndex(A=>A.id===d)]?.fileName||d,contentLength:n[o.findIndex(A=>A.id===d)]?.contentLength||0,status:"failed",error:l instanceof Error?l.message:String(l)}]))}let u=o.map((l,d)=>{let A=s[d],p=n[d];return A.status==="rejected"?{id:l.id,fileName:p.fileName,contentLength:p.contentLength,status:"failed",error:A.reason instanceof Error?A.reason.message:String(A.reason)}:c.get(l.id)||{id:l.id,fileName:p.fileName,contentLength:p.contentLength,status:"failed",error:"Upload completion returned no result"}});return await Promise.all(u.filter(l=>l.status==="failed").map(l=>this.deleteFileUpload(l.id).catch(()=>{}))),u}async deleteFileUpload(e){await this.restRequest("DELETE",`/v1/files/uploads/${encodeURIComponent(e)}`)}getUploadContentLength(e){return typeof e=="string"?new TextEncoder().encode(e).byteLength:e instanceof Uint8Array?e.byteLength:e.size}async buildHttpError(e){e.status>=500&&this.onInfrastructureError?.();let r=await e.text(),n=`HTTP ${e.status}: ${r}`,i,o;try{let s=JSON.parse(r);s&&typeof s=="object"&&!Array.isArray(s)&&(o=s),typeof s?.code=="string"&&(i=s.code);let a=s.error;typeof a=="string"?n=a:a&&typeof a=="object"&&(n=a.message||JSON.stringify(a))}catch{}return new oE(n,e.status,i,o)}async streamRequest(e,r,n){let i=e.includes("?")?"&":"?",o=`${this.apiEndpoint.replace(/\/$/,"")}${e}${i}stream=true`,s=u=>fetch(o,{method:"POST",headers:{Authorization:`Bearer ${u}`,Accept:"text/event-stream","Content-Type":"application/json"},body:JSON.stringify(r),signal:n??AbortSignal.timeout(fp),...pp?{dispatcher:pp}:{}}),a;try{a=await this.fetchWithAuthRetry(s,n)}catch(u){throw this.isInfrastructureError(u)&&this.onInfrastructureError?.(),u}if(!a.ok)throw await this.buildHttpError(a);if(!(a.headers.get("content-type")||"").includes("text/event-stream")){let u=await a.text();return u?JSON.parse(u):void 0}try{return await(0,JOe.consumeEventStreamResult)(a)}catch(u){throw this.isInfrastructureError(u)&&this.onInfrastructureError?.(),u}}async subscribeToLogsSSE(e={}){return this.sseManager.subscribeToLogs(e)}async disconnect(){await this.sseManager.disconnect()}async listMemoryNotes(e={}){let r=new URLSearchParams;e.scope&&r.set("scope",e.scope),e.query&&r.set("query",e.query);let n=r.toString();return this.restData("GET",`/v1/memory-notes${n?`?${n}`:""}`)}async createMemoryNote(e){return this.restData("POST","/v1/memory-notes",e)}async updateMemoryNote(e,r){return this.restData("PATCH",`/v1/memory-notes/${encodeURIComponent(e)}`,r)}async deleteMemoryNote(e){await this.restRequest("DELETE",`/v1/memory-notes/${encodeURIComponent(e)}`)}async clearMemoryNotes(e){return(await this.restRequest("DELETE",`/v1/memory-notes?scope=${e}`)).data.deleted}async getMe(){return this.restRequest("GET","/v1/me")}async completeOnboarding(){return this.restRequest("POST","/v1/me/onboarding/complete")}async runTool(e){let r=await this.restRequest("POST",`/v1/tools/${encodeURIComponent(e.toolId)}/run`,{inputs:e.payload,files:e.files,credentials:e.credentials,includeStepResultData:e.includeStepResultData,options:e.options,runId:e.runId,stateFixture:e.stateFixture},void 0,e.signal?{signal:e.signal}:void 0);return{success:r.status==="success",data:r.data,error:r.error,tool:r.tool,stepResults:r.stepResults?.map(n=>({...n}))||[],...r.fileArtifacts&&r.fileArtifacts.length>0?{fileArtifacts:r.fileArtifacts}:{},...r.metadata?.warnings?.length?{warnings:r.metadata.warnings}:{}}}async runToolConfig(e){let r=e.createRun?"/v1/tools/run?createRun=true":"/v1/tools/run",n=await this.restRequest("POST",r,{tool:e.tool,payload:e.payload,files:e.files,credentials:e.credentials,includeStepResultData:e.includeStepResultData,options:e.options,runId:e.runId,stateFixture:e.stateFixture,executionKind:e.executionKind,parentToolId:e.parentToolId,draftId:e.draftId},e.traceId?{"X-Trace-Id":e.traceId}:void 0,e.signal?{signal:e.signal}:void 0);return{success:n.status?n.status==="success":n.success??!1,data:n.data,error:n.error,tool:n.tool||e.tool,stepResults:n.stepResults?.map(o=>({...o}))||[],...n.fileArtifacts&&n.fileArtifacts.length>0?{fileArtifacts:n.fileArtifacts}:{},...n.metadata?.warnings?.length?{warnings:n.metadata.warnings}:{}}}async abortToolExecution(e){return{success:!0,runId:(await this.restRequest("POST",`/v1/runs/${encodeURIComponent(e)}/cancel`)).runId}}async executeStep({step:e,payload:r,files:n,previousResults:i,credentials:o,credentialsList:s,options:a,runId:c,systemIds:u,credentialId:l,systemAuth:d,createRun:A,parentToolId:p,stepIndex:h,stepId:g,signal:w,stream:B}){let _={step:e,payload:r,files:n,previousResults:i,credentials:o,credentialsList:s,options:a,runId:c,systemIds:u,credentialId:l,systemAuth:d,createRun:A,parentToolId:p,stepIndex:h,stepId:g};return B?this.streamRequest("/v1/tools/step/run",_,w):this.restRequest("POST","/v1/tools/step/run",_,void 0,w?{signal:w}:void 0)}async abortStep(e){return this.restRequest("POST","/v1/tools/step/abort",{runId:e})}async executeTransformOnly({outputTransform:e,outputSchema:r,inputSchema:n,payload:i,files:o,stepResults:s,options:a,runId:c,createRun:u,parentToolId:l,stepId:d,signal:A,stream:p}){let h={outputTransform:e,outputSchema:r,inputSchema:n,payload:i,files:o,stepResults:s,options:a,runId:c,createRun:u,parentToolId:l,stepId:d};return p?this.streamRequest("/v1/tools/transform/run",h,A):this.restRequest("POST","/v1/tools/transform/run",h,void 0,A?{signal:A}:void 0)}async createRun({toolId:e,toolConfig:r,toolResult:n,stepResults:i,toolPayload:o,status:s,error:a,startedAt:c,completedAt:u,executionKind:l,parentToolId:d,draftId:A}){return this.restRequest("POST","/v1/runs",{toolId:e,toolConfig:r,toolResult:n,stepResults:i,toolPayload:o,status:s,error:a,startedAt:(0,ds.toUTCISOString)(c,"run.startedAt"),completedAt:(0,ds.toUTCISOString)(u,"run.completedAt"),executionKind:l,parentToolId:d,draftId:A})}async checkRunLimit(){return this.restData("POST","/v1/runs/check-limit")}async extract({file:e,envelope:r}){if(!e)throw new Error("File must be provided for extract.");let n=new FormData;n.append("file",e);let i=r?"/v1/extract?envelope=true":"/v1/extract";return this.restRequest("POST",i,n)}mapOpenAPIRunToRun(e){let r={running:ml.RunStatus.RUNNING,success:ml.RunStatus.SUCCESS,failed:ml.RunStatus.FAILED,aborted:ml.RunStatus.ABORTED};return{runId:e.runId??e.id,toolId:e.toolId,tool:e.tool,systemIds:e.systemIds,status:r[e.status]??ml.RunStatus.FAILED,toolPayload:e.toolPayload,data:e.data,toolResult:e.data,error:e.error,stepResults:e.stepResults,options:e.options,requestSource:e.requestSource,traceId:e.traceId,resultStorageUri:e.resultStorageUri,userId:e.userId,userEmail:e.userEmail,userName:e.userName,metadata:{...e.metadata,executionKind:e.metadata?.executionKind??ml.RunExecutionKind.FULL},fileArtifacts:e.fileArtifacts}}mapOpenAPIScheduleToToolSchedule(e){return{...e,lastRunAt:e.lastRunAt?(0,ds.requireUTCDate)(e.lastRunAt,"schedule.lastRunAt"):void 0,nextRunAt:(0,ds.requireUTCDate)(e.nextRunAt,"schedule.nextRunAt"),createdAt:(0,ds.requireUTCDate)(e.createdAt,"schedule.createdAt"),updatedAt:(0,ds.requireUTCDate)(e.updatedAt,"schedule.updatedAt")}}async listRuns(e={}){let r=(0,Or.createSearchListQueryParams)(e);e.toolId!==void 0&&r.set("toolId",e.toolId),e.searchUserIds?.length&&r.set("searchUserIds",e.searchUserIds.join(",")),e.includeTotal!==void 0&&r.set("includeTotal",String(e.includeTotal)),e.startedAfter!==void 0&&r.set("startedAfter",e.startedAfter instanceof Date?(0,ds.toUTCISOString)(e.startedAfter,"run.startedAfter"):e.startedAfter),e.statuses!==void 0?r.set("status",e.statuses.join(",")):e.status!==void 0&&r.set("status",e.status),e.requestSources!==void 0&&r.set("requestSources",e.requestSources.join(",")),e.executionKinds!==void 0&&r.set("executionKinds",e.executionKinds.join(",")),e.userId!==void 0&&r.set("userId",e.userId),e.systemId!==void 0&&r.set("systemId",e.systemId),e.systemIds!==void 0&&r.set("systemIds",e.systemIds.join(","));let n=r.size>0?`?${r.toString()}`:"",i=await this.restRequest("GET",`/v1/runs${n}`,void 0,void 0,{signal:e.signal});return{data:i.data.map(o=>this.mapOpenAPIRunToRun(o)),total:i.total,page:i.page,limit:i.limit,hasMore:i.hasMore}}async getActivityCounts(e){let r=new URLSearchParams;e?.from&&r.set("from",e.from instanceof Date?(0,ds.toUTCISOString)(e.from,"activity.from"):e.from),e?.to&&r.set("to",e.to instanceof Date?(0,ds.toUTCISOString)(e.to,"activity.to"):e.to);let n=r.toString();return(await this.restRequest("GET",`/v1/activity/counts${n?`?${n}`:""}`,void 0,void 0,{signal:e?.signal})).counts}async getRun(e){try{let r=await this.restRequest("GET",`/v1/runs/${encodeURIComponent(e)}`);return this.mapOpenAPIRunToRun(r)}catch(r){if(r.message?.includes("404")||r.message?.includes("not found"))return null;throw r}}async getTool(e){try{return await this.restRequest("GET",`/v1/tools/${encodeURIComponent(e)}`)}catch(r){if(r.message?.includes("404")||r.message?.includes("not found")||r.message?.includes("403")||r.message?.includes("not allowed"))return null;throw r}}async getToolState(e){return(await this.restRequest("GET",`/v1/tools/${encodeURIComponent(e)}/state`)).state}async setToolState(e,r){await this.restRequest("PUT",`/v1/tools/${encodeURIComponent(e)}/state`,{state:r})}async deleteToolState(e){return(await this.restRequest("DELETE",`/v1/tools/${encodeURIComponent(e)}/state`)).deletedKeys}async archiveTool(e,r=!0){return this.updateTool(e,{archived:r})}async bulkArchiveTools(e,r=!0){return this.restRequest("POST","/v1/tools/bulk/archive",{ids:e,archived:r})}async bulkDeleteTools(e){return this.restRequest("POST","/v1/tools/bulk/delete",{ids:e})}async listTools(e={}){let r=(0,Or.createListQueryParams)(e);e.includeArchived!==void 0&&r.set("includeArchived",String(e.includeArchived));let n=r.size>0?`?${r.toString()}`:"";return this.restRequest("GET",`/v1/tools${n}`)}async listAllTools(e={}){return(0,Or.listAllPages)((r,n)=>this.listTools({...e,page:r,limit:n}))}async createTool(e,r){return this.restRequest("POST","/v1/tools",{...r,id:e})}async updateTool(e,r){return this.restRequest("PUT",`/v1/tools/${encodeURIComponent(e)}`,r)}async deleteTool(e){try{return await this.restRequest("DELETE",`/v1/tools/${encodeURIComponent(e)}`),!0}catch(r){if(r.message?.includes("404"))return!1;throw r}}async renameTool(e,r){return this.restRequest("POST",`/v1/tools/${encodeURIComponent(e)}/rename`,{newId:r})}async getWorkflow(e){return this.getTool(e)}async archiveWorkflow(e,r=!0){return this.upsertWorkflow(e,{archived:r})}async createWorkflow(e,r){return this.createTool(e,r)}async updateWorkflow(e,r){return this.updateTool(e,r)}async upsertWorkflow(e,r){return await this.getTool(e)?this.updateTool(e,r):this.createTool(e,r)}async deleteWorkflow(e){return this.deleteTool(e)}async renameWorkflow(e,r){return this.renameTool(e,r)}async listProjectSummaries(e={}){let r=(0,Or.createSearchListQueryParams)(e);return r.set("includeResources","false"),e.includeArchived!==void 0&&r.set("includeArchived",String(e.includeArchived)),this.restRequest("GET",`/v1/projects?${r.toString()}`)}async listAllProjectSummaries({includeArchived:e}={}){return(0,Or.listAllPages)((r,n)=>this.listProjectSummaries({page:r,limit:n,...e!==void 0?{includeArchived:e}:{}}))}async listAllProjectTasks(e){return(0,Or.listAllPages)((r,n)=>this.restRequest("GET",`/v1/projects/${encodeURIComponent(e)}/tasks?page=${r}&limit=${n}`))}async saveProjectTask({projectId:e,taskId:r,input:n}){let i=`/v1/projects/${encodeURIComponent(e)}/tasks${r?`/${encodeURIComponent(r)}`:""}`;return this.restData(r?"PATCH":"POST",i,n)}async listAllProjectLabels(e){return(0,Or.listAllPages)((r,n)=>this.restRequest("GET",`/v1/projects/${encodeURIComponent(e)}/labels?page=${r}&limit=${n}`))}async saveProjectLabel({projectId:e,labelId:r,input:n}){let i=`/v1/projects/${encodeURIComponent(e)}/labels${r?`/${encodeURIComponent(r)}`:""}`;return this.restData(r?"PATCH":"POST",i,n)}async deleteProjectLabel({projectId:e,labelId:r}){await this.restRequest("DELETE",`/v1/projects/${encodeURIComponent(e)}/labels/${encodeURIComponent(r)}`)}async listSchedules(e={}){let r=(0,Or.createListQueryParams)(e),n=r.size>0?`?${r.toString()}`:"",i=e.toolId?`/v1/tools/${encodeURIComponent(e.toolId)}/schedules${n}`:`/v1/schedules${n}`,o=await this.restRequest("GET",i);return{...o,data:o.data.map(s=>this.mapOpenAPIScheduleToToolSchedule(s))}}async listAllSchedules(e={}){return(0,Or.listAllPages)((r,n)=>this.listSchedules({...e,page:r,limit:n}))}async getToolSchedule(e,r){try{let n=await this.restRequest("GET",`/v1/tools/${encodeURIComponent(e)}/schedules/${encodeURIComponent(r)}`);return this.mapOpenAPIScheduleToToolSchedule(n)}catch(n){if(n.message?.includes("404")||n.message?.includes("not found"))return null;throw n}}async createToolSchedule(e,r){let n=await this.restRequest("POST",`/v1/tools/${encodeURIComponent(e)}/schedules`,{...r,timezone:r.timezone||(0,ZOe.getRuntimeTimezone)()});return this.mapOpenAPIScheduleToToolSchedule(n)}async updateToolSchedule(e,r,n){let i=await this.restRequest("PUT",`/v1/tools/${encodeURIComponent(e)}/schedules/${encodeURIComponent(r)}`,n);return this.mapOpenAPIScheduleToToolSchedule(i)}async deleteToolSchedule(e,r){return await this.restRequest("DELETE",`/v1/tools/${encodeURIComponent(e)}/schedules/${encodeURIComponent(r)}`),!0}async bulkSetSchedulesEnabled(e,r){return this.restRequest("POST","/v1/schedules/bulk/enable",{ids:e,enabled:r})}async bulkDeleteSchedules(e){return this.restRequest("POST","/v1/schedules/bulk/delete",{ids:e})}async listConnections(e={}){let r=(0,Or.createListQueryParams)(e);e.systemId!==void 0&&r.set("systemId",e.systemId);let n=r.size>0?`?${r.toString()}`:"";return this.restRequest("GET",`/v1/connections${n}`)}async listAllConnections(e={}){return(0,Or.listAllPages)((r,n)=>this.listConnections({...e,page:r,limit:n}))}async updateOAuthApp(e,r){return this.restData("PUT",`/v1/oauth-apps/${encodeURIComponent(e)}`,r)}async deleteOAuthApp(e){await this.restRequest("DELETE",`/v1/oauth-apps/${encodeURIComponent(e)}`)}async listOAuthApps({systemId:e}={}){return(0,Or.listAllPages)(async(r,n)=>{let i=new URLSearchParams({page:String(r),limit:String(n),...e?{systemId:e}:{}});return this.restRequest("GET",`/v1/oauth-apps?${i}`)})}async getConnectionSetup(e){return this.restData("GET",`/v1/connections/setup/${encodeURIComponent(e)}`)}async createConnection(e){return this.restData("POST","/v1/connections",e)}async replaceConnection(e,r){return this.restData("PUT",`/v1/connections/${encodeURIComponent(e)}`,{credentials:r})}async updateConnection(e,r){return this.restData("PATCH",`/v1/connections/${encodeURIComponent(e)}`,r)}async deleteConnection(e){await this.restRequest("DELETE",`/v1/connections/${encodeURIComponent(e)}`)}async setDefaultConnection(e){await this.restRequest("POST",`/v1/connections/${encodeURIComponent(e)}/default`)}async listSystems(e={}){let r=(0,Or.createListQueryParams)(e),n=r.size>0?`?${r.toString()}`:"";return this.restRequest("GET",`/v1/systems${n}`)}async listAllSystems(e={}){return(0,Or.listAllPages)((r,n)=>this.listSystems({...e,page:r,limit:n}))}async createOAuthExchange(e){return(await this.restRequest("POST","/v1/oauth/exchanges",e)).data}async completeOAuthExchange(e,r){return(await this.restRequest("POST",`/v1/oauth/exchanges/${encodeURIComponent(e)}/complete`,r)).data}async generateCredentialsLink(e){try{return{success:!0,credentialsUrl:(await this.restRequest("POST","/v1/authenticate",e||{})).data.credentialsUrl}}catch(r){return{success:!1,error:r.message}}}};yl.SuperglueClient=kv});var ZY=m(ft=>{"use strict";Object.defineProperty(ft,"__esModule",{value:!0});ft.UnquotedKeyStrategy=ft.TripleQuoteStrategy=ft.TrailingCommaStrategy=ft.SingleQuoteStrategy=ft.PythonLiteralStrategy=ft.CommentStrategy=ft.ResilientJsonParser=ft.RepairStrategy=void 0;ft.parseJsonResilient=KOe;ft.parseJSON=XOe;ft.isValidJson=eUe;ft.prettyPrintJson=tUe;ft.minifyJson=rUe;var ci=class{validate(e){try{return JSON.parse(e),!0}catch{return!1}}};ft.RepairStrategy=ci;var sE=class extends ci{constructor(){super(...arguments),this.name="TripleQuoteRepair",this.description="Converts triple-quoted strings to proper JSON, parsing nested JSON content"}canApply(e){return/"""/.test(e)}apply(e){return e.replace(/"""([\s\S]*?)"""/g,(r,n)=>{let i=n.trim();if(i.startsWith("{")&&i.endsWith("}")||i.startsWith("[")&&i.endsWith("]"))try{let s=JSON.parse(i);return JSON.stringify(s)}catch{return`"${n.replace(/\\/g,"\\\\").replace(/"/g,'\\"').replace(/\n/g,"\\n").replace(/\r/g,"\\r").replace(/\t/g,"\\t")}"`}return`"${n.replace(/\\/g,"\\\\").replace(/"/g,'\\"').replace(/\n/g,"\\n").replace(/\r/g,"\\r").replace(/\t/g,"\\t")}"`})}};ft.TripleQuoteStrategy=sE;var aE=class extends ci{constructor(){super(...arguments),this.name="PythonLiteralRepair",this.description="Converts Python literals to JavaScript equivalents"}canApply(e){return/\b(None|True|False)\b/.test(e)}apply(e){return e.replace(/\bNone\b/g,"null").replace(/\bTrue\b/g,"true").replace(/\bFalse\b/g,"false")}};ft.PythonLiteralStrategy=aE;var cE=class extends ci{constructor(){super(...arguments),this.name="TrailingCommaRepair",this.description="Removes trailing commas from objects and arrays"}canApply(e){return/,\s*[}\]]/.test(e)}apply(e){return e.replace(/,(\s*[}\]])/g,"$1")}};ft.TrailingCommaStrategy=cE;var uE=class extends ci{constructor(){super(...arguments),this.name="SingleQuoteRepair",this.description="Converts single quotes to double quotes"}canApply(e){return/[{,]\s*'[^']*'\s*:/.test(e)||/:\s*'[^']*'/.test(e)}apply(e){let r=e.replace(/([{,]\s*)'([^']+)'(\s*:)/g,'$1"$2"$3');return r=r.replace(/(:\s*)'([^']+)'(\s*[,}])/g,'$1"$2"$3'),r}};ft.SingleQuoteStrategy=uE;var lE=class extends ci{constructor(){super(...arguments),this.name="UnquotedKeyRepair",this.description="Adds quotes to unquoted object keys"}canApply(e){return/[{,]\s*[a-zA-Z_$][a-zA-Z0-9_$]*\s*:/.test(e)}apply(e){return e.replace(/([{,]\s*)([a-zA-Z_$][a-zA-Z0-9_$]*)(\s*:)/g,'$1"$2"$3')}};ft.UnquotedKeyStrategy=lE;var dE=class extends ci{constructor(){super(...arguments),this.name="CommentRemoval",this.description="Removes JavaScript-style comments"}canApply(e){return/\/\/.*$|\/\*[\s\S]*?\*\//m.test(e)}apply(e){let r=e.replace(/\/\/.*$/gm,"");return r=r.replace(/\/\*[\s\S]*?\*\//g,""),r}};ft.CommentStrategy=dE;var Ov=class extends ci{constructor(){super(...arguments),this.name="UnescapedControlCharactersRepair",this.description="Escapes unescaped control characters (newlines, tabs, etc.) in JSON strings"}canApply(e){try{return JSON.parse(e),!1}catch(r){let n=r.message||"";return n.includes("control character")||n.includes("Bad control")||n.includes("Unexpected token")&&/[\n\r\t]/.test(e)}}apply(e){let r="",n=!1,i=!1;for(let o=0;o<e.length;o++){let s=e[o],a=o>0?e[o-1]:"";if(i){r+=s,i=!1;continue}if(s==="\\"&&n){r+=s,i=!0;continue}if(s==='"'&&a!=="\\"){n=!n,r+=s;continue}if(n)switch(s){case`
1873
1874
  `:r+="\\n";break;case"\r":r+="\\r";break;case" ":r+="\\t";break;case"\b":r+="\\b";break;case"\f":r+="\\f";break;default:let c=s.charCodeAt(0);c<32?r+="\\u"+("0000"+c.toString(16)).slice(-4):r+=s}else r+=s}return r}},Uv=class extends ci{constructor(){super(...arguments),this.name="TrailingCharactersRepair",this.description="Removes trailing characters after valid JSON structure"}canApply(e){let r=e.trim();if(!r.startsWith("{")&&!r.startsWith("["))return!1;let n=0,i=0,o=!1,s=!1;for(let a=0;a<r.length;a++){let c=r[a];if(o)s?s=!1:c==="\\"?s=!0:c==='"'&&(o=!1);else if(c==='"')o=!0;else if(c==="{")n++;else if(c==="}"){if(n--,n===0&&i===0&&a>0&&a<r.length-1)return!0}else if(c==="[")i++;else if(c==="]"&&(i--,i===0&&n===0&&a>0&&a<r.length-1))return!0}return!1}apply(e){let r=e.trim(),n=0,i=0,o=!1,s=!1,a=-1;for(let c=0;c<r.length;c++){let u=r[c];if(o)s?s=!1:u==="\\"?s=!0:u==='"'&&(o=!1);else if(u==='"')o=!0;else if(u==="{")n++;else if(u==="}"){if(n--,n===0&&i===0&&c>0){a=c;break}}else if(u==="[")i++;else if(u==="]"&&(i--,i===0&&n===0&&c>0)){a=c;break}}return a>0&&a<r.length-1?r.substring(0,a+1):e}},El=class{constructor(e={}){this.strategies=[],this.repairLog=[],this.options={attemptRepair:!0,maxDepth:10,preserveStringsOnFailure:!1,logRepairs:!1,...e},this.initializeDefaultStrategies(),e.customStrategies&&this.strategies.push(...e.customStrategies)}initializeDefaultStrategies(){this.strategies=[new sE,new uE,new Ov,new Uv,new aE,new cE,new lE,new dE]}parse(e){let r=Date.now();this.repairLog=[];let n=e instanceof Buffer?e.toString("utf8"):String(e);try{return{success:!0,data:JSON.parse(n),metadata:{parseTime:Date.now()-r,strategiesApplied:[]}}}catch(s){if(!this.options.attemptRepair)return{success:!1,error:`JSON parse error: ${s}`,metadata:{parseTime:Date.now()-r}}}let i=n,o=[];for(let s of this.strategies)if(s.canApply(i)){let a=i;if(i=s.apply(i),a!==i){o.push(s.name),this.repairLog.push(s.description),this.options.logRepairs&&console.log(`Applied ${s.name}: ${s.description}`);try{return{success:!0,data:JSON.parse(i),repairs:this.repairLog,metadata:{parseTime:Date.now()-r,strategiesApplied:o}}}catch{}}}try{return{success:!0,data:JSON.parse(i),repairs:this.repairLog,metadata:{parseTime:Date.now()-r,strategiesApplied:o}}}catch(s){let a=this.aggressiveFallback(i);return a.success?{...a,repairs:[...this.repairLog,"Applied aggressive fallback"],metadata:{parseTime:Date.now()-r,strategiesApplied:[...o,"AggressiveFallback"]}}:{success:!1,error:`Failed to parse JSON after applying ${o.length} strategies: ${s}`,repairs:this.repairLog,metadata:{parseTime:Date.now()-r,strategiesApplied:o}}}}aggressiveFallback(e){try{let r=e.indexOf("{"),n=e.indexOf("[");if(r===-1&&n===-1)return{success:!1,error:"No JSON-like structure found"};let i=r===-1?n:n===-1?r:Math.min(r,n),o=e.substring(i);for(let a of this.strategies)a.canApply(o)&&(o=a.apply(o));return{success:!0,data:JSON.parse(o)}}catch(r){return{success:!1,error:`Aggressive fallback failed: ${r}`}}}addStrategy(e){this.strategies.push(e)}removeStrategy(e){this.strategies=this.strategies.filter(r=>r.name!==e)}getStrategies(){return this.strategies.map(e=>e.name)}};ft.ResilientJsonParser=El;var WY=new El;function KOe(t,e){return(e?new El(e):WY).parse(t)}function XOe(t){let e=WY.parse(t);if(e.success)return e.repairs&&e.repairs.length>0&&console.log("JSON parsed with repairs:",e.repairs),e.data;throw new Error(`Failed to parse JSON: ${e.error}`)}function eUe(t){try{return JSON.parse(t),!0}catch{return!1}}function tUe(t,e=2){return JSON.stringify(t,null,e)}function rUe(t){let r=new El().parse(t);if(r.success)return JSON.stringify(r.data);throw new Error("Cannot minify invalid JSON")}});var KY=m(yr=>{"use strict";Object.defineProperty(yr,"__esModule",{value:!0});yr.MANAGED_OAUTH_APP_PREFIX=void 0;yr.projectOAuthAppAuthentication=oUe;yr.isDynamicOAuthConfiguration=sUe;yr.isReusableOAuthAppForTemplate=aUe;yr.getManagedOAuthTemplateId=cUe;yr.getOAuthAppSharedConfiguration=uUe;yr.copyOAuthAppConfiguration=lUe;yr.encryptConnectionAuthentication=dUe;yr.decryptConnectionAuthentication=AUe;yr.isManagedOAuthEndpointAllowed=pUe;var nUe=$S(),iUe=Dn();function oUe(t){let{clientSecret:e,config:r,...n}=t,{extraHeaders:i,extraBodyParams:o,...s}=r??{};return{...n,...r?{config:s}:{}}}yr.MANAGED_OAUTH_APP_PREFIX="managed:";function sUe({authentication:t,template:e}){return t.oauthClientMode==="dynamic"||!!e?.oauth?.registrationUrl&&!t.clientSecret}function aUe({app:t,template:e}){return!e?.oauth?.registrationUrl||t.hasClientSecret}function cUe(t){if(t?.type==="oauth2")return t.oauthAppId?.startsWith(yr.MANAGED_OAUTH_APP_PREFIX)?t.oauthAppId.slice(yr.MANAGED_OAUTH_APP_PREFIX.length):void 0}function uUe(t){let{grantType:e,scopes:r,oauthAppId:n,...i}=t;return i}function lUe({appAuthentication:t,authentication:e}){if(e?.type!=="oauth2")return{...t};let r=Object.fromEntries(Object.entries(e).filter(([,n])=>n!==void 0));return{...t,...r,config:{...t.config,...e.config}}}function dUe({authentication:t,encrypt:e}){if(t.type!=="oauth2")return t;let r={...t,config:{...t.config}};t.clientSecret!==void 0&&(r.clientSecret=e({value:t.clientSecret}).value);for(let n of["extraHeaders","extraBodyParams"]){let i=t.config?.[n];i!==void 0&&(r.config[n]=e({value:(0,iUe.safeStringify)(i)}).value)}return r}function AUe({authentication:t,decrypt:e}){if(t.type!=="oauth2")return t;let r={...t,config:{...t.config}};t.clientSecret!==void 0&&(r.clientSecret=e({value:t.clientSecret}).value);for(let n of["extraHeaders","extraBodyParams"]){let i=t.config?.[n];typeof i=="string"&&(r.config[n]=JSON.parse(e({value:i}).value))}return r}function pUe({templateId:t,endpoint:e,url:r}){let n=nUe.systems[t]?.oauth,i=n?.[e];if(!n?.managed||!i)return!1;try{let o=new URL(r),s=new URL(i);return o.protocol!=="https:"||o.port||o.username||o.password||o.hash||o.pathname!==s.pathname?!1:o.hostname===s.hostname||(n.managedEndpointHosts??[]).some(a=>a.startsWith("*.")?o.hostname.endsWith(a.slice(1)):o.hostname===a)}catch{return!1}}});var eV=m(XY=>{"use strict";Object.defineProperty(XY,"__esModule",{value:!0})});var Er=m(W=>{"use strict";var fUe=W&&W.__createBinding||(Object.create?(function(t,e,r,n){n===void 0&&(n=r);var i=Object.getOwnPropertyDescriptor(e,r);(!i||("get"in i?!e.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:function(){return e[r]}}),Object.defineProperty(t,n,i)}):(function(t,e,r,n){n===void 0&&(n=r),t[n]=e[r]})),ne=W&&W.__exportStar||function(t,e){for(var r in t)r!=="default"&&!Object.prototype.hasOwnProperty.call(e,r)&&fUe(e,t,r)};Object.defineProperty(W,"__esModule",{value:!0});W.SSELogSubscriptionManager=W.SuperglueHttpError=W.SuperglueClient=void 0;ne(gx(),W);ne(bx(),W);ne(Ox(),W);ne(Mx(),W);ne(Fx(),W);ne(jx(),W);ne(Hx(),W);ne(Sg(),W);ne(CL(),W);ne(Wf(),W);ne(BL(),W);ne(_L(),W);ne(QL(),W);ne(vL(),W);ne(DL(),W);ne(tS(),W);ne(RL(),W);ne(OL(),W);ne(UL(),W);ne(ML(),W);ne(iS(),W);ne(cS(),W);ne(LL(),W);ne(PL(),W);ne(FL(),W);ne(uh(),W);ne(zL(),W);ne(HL(),W);ne(GL(),W);ne(YL(),W);ne(WL(),W);ne(dP(),W);ne(ES(),W);ne(Vd(),W);ne(yS(),W);ne(gP(),W);ne(yP(),W);ne(IP(),W);ne(Eg(),W);ne(DP(),W);ne(RP(),W);ne(Ig(),W);ne(fS(),W);ne(xP(),W);ne(LP(),W);ne($S(),W);ne(JP(),W);ne(WP(),W);ne(ZP(),W);ne(t$(),W);ne(n$(),W);ne(xr(),W);ne(Dn(),W);ne(i$(),W);ne(o$(),W);ne(Fg(),W);ne(pu(),W);ne(Ld(),W);var tV=JY();Object.defineProperty(W,"SuperglueClient",{enumerable:!0,get:function(){return tV.SuperglueClient}});Object.defineProperty(W,"SuperglueHttpError",{enumerable:!0,get:function(){return tV.SuperglueHttpError}});var hUe=zS();Object.defineProperty(W,"SSELogSubscriptionManager",{enumerable:!0,get:function(){return hUe.SSELogSubscriptionManager}});ne(ZY(),W);ne(KY(),W);ne(eV(),W)});var JE=require("commander");var Ur=ye(require("fs")),iV=ye(require("os")),As=ye(require("path")),hp=ye(Er()),rV=new Set(["runner","builder","admin"]),nV={output:{mode:"stdout",directory:".superglue/output"},preset:"admin"};function ps(t){let e=As.join(process.cwd(),".superglue"),r=iV.homedir();if(!r)return e;let n=As.join(r,".superglue");return t===!0?e:t===!1?n:Ur.existsSync(As.join(e,"config.json"))?e:n}function Mv(t){return As.join(ps(t),"config.json")}function AE(t){let e=Mv(t);if(!Ur.existsSync(e))return{};try{return JSON.parse(Ur.readFileSync(e,"utf-8"))}catch{return{}}}function Il(t){let e=AE(),r=t.apiKey||(0,hp.readProcessEnvironmentValue)("SUPERGLUE_API_KEY")||e.apiKey||"",n=t.endpoint||(0,hp.readProcessEnvironmentValue)("SUPERGLUE_API_ENDPOINT")||e.endpoint||"https://api.superglue.cloud",i=(0,hp.readProcessEnvironmentValue)("SUPERGLUE_WEB_ENDPOINT")||e.webEndpoint||n.replace(/:3002\b/,":3001").replace(/api\.superglue/,"app.superglue"),o=(0,hp.readProcessEnvironmentValue)("SUPERGLUE_CLI_PRESET"),s=o&&rV.has(o)?o:e.preset&&rV.has(e.preset)?e.preset:"admin";return{...nV,...e,apiKey:r,endpoint:n,webEndpoint:i,preset:s,output:{...nV.output,...e.output}}}function pE(t,e){let r=ps(e);Ur.existsSync(r)||Ur.mkdirSync(r,{recursive:!0}),Ur.writeFileSync(As.join(r,"config.json"),JSON.stringify(t,null,2)+`
1874
- `,{mode:384})}function fE(t,e){let r=As.join(ps(e),"drafts");if(Ur.existsSync(r)||Ur.mkdirSync(r,{recursive:!0}),t.output.mode==="stdout+file"){let n=As.resolve(t.output.directory);Ur.existsSync(n)||Ur.mkdirSync(n,{recursive:!0})}}var zv=ye(Er());var xv=ye(require("readline"));var aV=require("child_process"),cV=require("util");var oV={name:"@superglue/cli",version:"1.1.212",bin:{sg:"./dist/cli.js"},files:[".claude-plugin/","dist/","skills/","LICENSE"],dependencies:{commander:"15.0.0-0","fast-json-patch":"3.1.1"},devDependencies:{"@superglue/shared":"file:../shared","@types/node":"25.5.0",tsup:"8.5.1",typescript:"5.8.3"},scripts:{build:"tsup && (cp -r skills dist/ 2>/dev/null || true)",dev:"tsup --watch","type-check":"tsc --noEmit",prepublishOnly:"npm run build"},publishConfig:{access:"public"}};var mUe=(0,cV.promisify)(aV.exec),Ir=oV.version;function sV(t){let e=t.match(/^(\d+)(?:-(.+))?$/);return e?{numeric:parseInt(e[1],10),prerelease:e[2]||null}:{numeric:0,prerelease:t}}function gE(t,e){let r=t.split("."),n=e.split("."),i=Math.max(r.length,n.length);for(let o=0;o<i;o++){let s=sV(r[o]||"0"),a=sV(n[o]||"0");if(s.numeric<a.numeric)return-1;if(s.numeric>a.numeric||s.prerelease===null&&a.prerelease!==null)return 1;if(s.prerelease!==null&&a.prerelease===null)return-1;if(s.prerelease!==null&&a.prerelease!==null){if(s.prerelease<a.prerelease)return-1;if(s.prerelease>a.prerelease)return 1}}return 0}async function mE(){try{let t=await fetch("https://registry.npmjs.org/@superglue/cli/latest",{signal:AbortSignal.timeout(5e3)});return t.ok&&(await t.json()).version||null}catch{return null}}var hE=null;function uV(){le()&&(hE=mE())}async function lV(){if(!(!le()||!hE)){try{let t=new Promise(r=>{setTimeout(()=>r(null),2e3).unref()}),e=await Promise.race([hE,t]);e&&gE(Ir,e)<0&&(console.error(""),console.error(`${I.cyan}${I.bold} Update available: ${Ir} \u2192 ${e}${I.reset}`),console.error(`${I.cyan} Run ${I.bold}sg update${I.reset}${I.cyan} to upgrade${I.reset}`),console.error(""))}catch{}hE=null}}async function dV(){let t=await mE();if(!t)return{success:!1,message:"Could not fetch latest version from npm"};if(gE(Ir,t)>=0)return{success:!0,message:`Already on latest version (${Ir})`};try{return await mUe("npm install -g @superglue/cli@latest"),{success:!0,message:`Updated from ${Ir} to ${t}`}}catch(e){return{success:!1,message:`Update failed: ${e.message}. Try manually: npm install -g @superglue/cli@latest`}}}var le=()=>process.argv.includes("--table")&&process.stdout.isTTY,Hn=()=>process.argv.includes("--full"),I={reset:"\x1B[0m",bold:"\x1B[1m",dim:"\x1B[2m",italic:"\x1B[3m",underline:"\x1B[4m",red:"\x1B[31m",green:"\x1B[32m",yellow:"\x1B[33m",blue:"\x1B[34m",magenta:"\x1B[35m",cyan:"\x1B[36m",white:"\x1B[37m",gray:"\x1B[90m",bgRed:"\x1B[41m",bgGreen:"\x1B[42m",bgYellow:"\x1B[43m",bgBlue:"\x1B[44m",bgMagenta:"\x1B[45m",bgCyan:"\x1B[46m"};function AV(t,e){let r=e||t;return`\x1B]8;;${t}\x07${I.underline}${I.cyan}${r}${I.reset}\x1B]8;;\x07`}function pV(){if(!le())return;let t=I.reset,e=I.dim,r="\x1B[47;30m",n=[" #@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@- "," =@@@- @@@@ "," @@@ @@% "," -@@ @@@@= @@@ @@@ @@@@@#@ @@@@@@@ @@@@@@@ @@@@@@ @@@ @@@ @@@ @@@@@@* %@@ "," @@ @@@ *@ @@@ @@@ @@@ :@@ @@@ @@@ -@@ @@@ @% @@@ @@@ @@@ @@* @@# "," #@@ @@@# @@@ @@@ @@@ :@@ @@@ @@@ -@@ @@@ @@@ @@@ @@@ @@* @@ "," @@- @@@@= @@@ @@@ @@@@@@@ @@@@@@ @@@@@@@ @@@ @@% @@@ @@@ @@@ @@@@@. @@."," #@% .@@@@ @@@ @@@ @@@ @@@ @@@ -@@ @@@ @@% @@@ @@@ @@@ @@* @@ "," @@ @ @@@ @@@ @@@ @@@ @@@ @@@ -@@ @@@ @@% @@@ @@@ @@@ @@* *@@ "," -@@ @@@@= @@@@@@ @@@ @@@@@@@ @@@ -@@ @@@@@@ @@@@@@% @@@@@@. @@@@@@* #@@ "," :@@* @@@ "," %@@@ =@@@. "," :@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@% "];console.log(""),n.forEach(i=>{let o=i.search(/\S/),s=i.length-[...i].reverse().join("").search(/\S/)-1;if(o===-1)return console.log(" "+i);let a=i.slice(0,o),c=i.slice(o,s+1).split("").map(l=>l===" "?" ":"\u2588").join(""),u=i.slice(s+1);console.log(` ${a}${r}${c}${t}${u}`)}),console.log(` ${e} CLI v${Ir}${t}`),console.log("")}function Ot(t){if(!le())return{stop:()=>{},update:()=>{},log:()=>{}};let e=["\u280B","\u2819","\u2839","\u2838","\u283C","\u2834","\u2826","\u2827","\u2807","\u280F"],r=0,n=t,i=()=>process.stdout.write("\r\x1B[2K"),o=()=>{process.stdout.write(`\r ${I.cyan}${e[r++%e.length]}${I.reset} ${n}`)},s=setInterval(o,80);return{update:a=>{n=a},log:a=>{i(),console.log(` ${I.dim}\u2502${I.reset} ${a}`),o()},stop:a=>{clearInterval(s),i(),a&&console.log(` ${a}`)}}}function te(t){le()?yE(t):console.log(JSON.stringify(t,null,2))}function De(t,e){le()?(console.log(` ${I.green}\u2713${I.reset} ${t}`),e&&yE(e,4)):console.log(JSON.stringify({success:!0,message:t,...e&&typeof e=="object"?e:{data:e}}))}function v(t,e){le()?(console.error(` ${I.red}\u2717${I.reset} ${t}`),e&&yE(e,4)):console.error(JSON.stringify({success:!1,error:t,details:e}))}function un(t){le()&&console.log(` ${I.dim}${t}${I.reset}`)}function kc(t){le()&&(console.log(`
1875
+ `,{mode:384})}function fE(t,e){let r=As.join(ps(e),"drafts");if(Ur.existsSync(r)||Ur.mkdirSync(r,{recursive:!0}),t.output.mode==="stdout+file"){let n=As.resolve(t.output.directory);Ur.existsSync(n)||Ur.mkdirSync(n,{recursive:!0})}}var zv=ye(Er());var xv=ye(require("readline"));var aV=require("child_process"),cV=require("util");var oV={name:"@superglue/cli",version:"1.1.213",bin:{sg:"./dist/cli.js"},files:[".claude-plugin/","dist/","skills/","LICENSE"],dependencies:{commander:"15.0.0-0","fast-json-patch":"3.1.1"},devDependencies:{"@superglue/shared":"file:../shared","@types/node":"25.5.0",tsup:"8.5.1",typescript:"5.8.3"},scripts:{build:"tsup && (cp -r skills dist/ 2>/dev/null || true)",dev:"tsup --watch","type-check":"tsc --noEmit",prepublishOnly:"npm run build"},publishConfig:{access:"public"}};var mUe=(0,cV.promisify)(aV.exec),Ir=oV.version;function sV(t){let e=t.match(/^(\d+)(?:-(.+))?$/);return e?{numeric:parseInt(e[1],10),prerelease:e[2]||null}:{numeric:0,prerelease:t}}function gE(t,e){let r=t.split("."),n=e.split("."),i=Math.max(r.length,n.length);for(let o=0;o<i;o++){let s=sV(r[o]||"0"),a=sV(n[o]||"0");if(s.numeric<a.numeric)return-1;if(s.numeric>a.numeric||s.prerelease===null&&a.prerelease!==null)return 1;if(s.prerelease!==null&&a.prerelease===null)return-1;if(s.prerelease!==null&&a.prerelease!==null){if(s.prerelease<a.prerelease)return-1;if(s.prerelease>a.prerelease)return 1}}return 0}async function mE(){try{let t=await fetch("https://registry.npmjs.org/@superglue/cli/latest",{signal:AbortSignal.timeout(5e3)});return t.ok&&(await t.json()).version||null}catch{return null}}var hE=null;function uV(){le()&&(hE=mE())}async function lV(){if(!(!le()||!hE)){try{let t=new Promise(r=>{setTimeout(()=>r(null),2e3).unref()}),e=await Promise.race([hE,t]);e&&gE(Ir,e)<0&&(console.error(""),console.error(`${I.cyan}${I.bold} Update available: ${Ir} \u2192 ${e}${I.reset}`),console.error(`${I.cyan} Run ${I.bold}sg update${I.reset}${I.cyan} to upgrade${I.reset}`),console.error(""))}catch{}hE=null}}async function dV(){let t=await mE();if(!t)return{success:!1,message:"Could not fetch latest version from npm"};if(gE(Ir,t)>=0)return{success:!0,message:`Already on latest version (${Ir})`};try{return await mUe("npm install -g @superglue/cli@latest"),{success:!0,message:`Updated from ${Ir} to ${t}`}}catch(e){return{success:!1,message:`Update failed: ${e.message}. Try manually: npm install -g @superglue/cli@latest`}}}var le=()=>process.argv.includes("--table")&&process.stdout.isTTY,Hn=()=>process.argv.includes("--full"),I={reset:"\x1B[0m",bold:"\x1B[1m",dim:"\x1B[2m",italic:"\x1B[3m",underline:"\x1B[4m",red:"\x1B[31m",green:"\x1B[32m",yellow:"\x1B[33m",blue:"\x1B[34m",magenta:"\x1B[35m",cyan:"\x1B[36m",white:"\x1B[37m",gray:"\x1B[90m",bgRed:"\x1B[41m",bgGreen:"\x1B[42m",bgYellow:"\x1B[43m",bgBlue:"\x1B[44m",bgMagenta:"\x1B[45m",bgCyan:"\x1B[46m"};function AV(t,e){let r=e||t;return`\x1B]8;;${t}\x07${I.underline}${I.cyan}${r}${I.reset}\x1B]8;;\x07`}function pV(){if(!le())return;let t=I.reset,e=I.dim,r="\x1B[47;30m",n=[" #@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@- "," =@@@- @@@@ "," @@@ @@% "," -@@ @@@@= @@@ @@@ @@@@@#@ @@@@@@@ @@@@@@@ @@@@@@ @@@ @@@ @@@ @@@@@@* %@@ "," @@ @@@ *@ @@@ @@@ @@@ :@@ @@@ @@@ -@@ @@@ @% @@@ @@@ @@@ @@* @@# "," #@@ @@@# @@@ @@@ @@@ :@@ @@@ @@@ -@@ @@@ @@@ @@@ @@@ @@* @@ "," @@- @@@@= @@@ @@@ @@@@@@@ @@@@@@ @@@@@@@ @@@ @@% @@@ @@@ @@@ @@@@@. @@."," #@% .@@@@ @@@ @@@ @@@ @@@ @@@ -@@ @@@ @@% @@@ @@@ @@@ @@* @@ "," @@ @ @@@ @@@ @@@ @@@ @@@ @@@ -@@ @@@ @@% @@@ @@@ @@@ @@* *@@ "," -@@ @@@@= @@@@@@ @@@ @@@@@@@ @@@ -@@ @@@@@@ @@@@@@% @@@@@@. @@@@@@* #@@ "," :@@* @@@ "," %@@@ =@@@. "," :@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@% "];console.log(""),n.forEach(i=>{let o=i.search(/\S/),s=i.length-[...i].reverse().join("").search(/\S/)-1;if(o===-1)return console.log(" "+i);let a=i.slice(0,o),c=i.slice(o,s+1).split("").map(l=>l===" "?" ":"\u2588").join(""),u=i.slice(s+1);console.log(` ${a}${r}${c}${t}${u}`)}),console.log(` ${e} CLI v${Ir}${t}`),console.log("")}function Ot(t){if(!le())return{stop:()=>{},update:()=>{},log:()=>{}};let e=["\u280B","\u2819","\u2839","\u2838","\u283C","\u2834","\u2826","\u2827","\u2807","\u280F"],r=0,n=t,i=()=>process.stdout.write("\r\x1B[2K"),o=()=>{process.stdout.write(`\r ${I.cyan}${e[r++%e.length]}${I.reset} ${n}`)},s=setInterval(o,80);return{update:a=>{n=a},log:a=>{i(),console.log(` ${I.dim}\u2502${I.reset} ${a}`),o()},stop:a=>{clearInterval(s),i(),a&&console.log(` ${a}`)}}}function te(t){le()?yE(t):console.log(JSON.stringify(t,null,2))}function De(t,e){le()?(console.log(` ${I.green}\u2713${I.reset} ${t}`),e&&yE(e,4)):console.log(JSON.stringify({success:!0,message:t,...e&&typeof e=="object"?e:{data:e}}))}function v(t,e){le()?(console.error(` ${I.red}\u2717${I.reset} ${t}`),e&&yE(e,4)):console.error(JSON.stringify({success:!1,error:t,details:e}))}function un(t){le()&&console.log(` ${I.dim}${t}${I.reset}`)}function kc(t){le()&&(console.log(`
1875
1876
  ${I.bold}${I.cyan}${t}${I.reset}`),console.log(` ${I.dim}${"\u2500".repeat(t.length)}${I.reset}`))}function Pt(t,e,r){if(!le()){console.log(JSON.stringify({success:!0,total:r?.total??t.length,items:t}));return}if(t.length===0){console.log(`
1876
1877
  ${I.dim}0 results${I.reset}
1877
1878
  `);return}let n=e||Object.keys(t[0]),i=Hn()?1/0:60,o=n.map(l=>Math.min(i,Math.max(l.length,...t.map(d=>String(d[l]??"").replace(/[\n\r]+/g," ").trim().length))));console.log("");let s=n.map((l,d)=>`${I.bold}${I.cyan}${l.toUpperCase().padEnd(o[d])}${I.reset}`).join(" ");console.log(` ${s}`);let a=o.map(l=>`${I.dim}${"\u2500".repeat(l)}${I.reset}`).join(`${I.dim}\u2500\u2500${I.reset}`);console.log(` ${a}`);for(let l of t){let d=n.map((A,p)=>{let h=String(l[A]??"").replace(/[\n\r]+/g," ").trim();if(h.length>i){let w=`\u2026 (${h.length})`;h=h.slice(0,Math.max(0,i-w.length))+`${I.dim}${w}${I.reset}`}return A==="status"?`${{success:I.green,running:I.yellow,failed:I.red,aborted:I.red,error:I.red,pending:I.dim}[h.toLowerCase()]||""}${h.padEnd(o[p])}${I.reset}`:h.padEnd(o[p])}).join(" ");console.log(` ${d}`)}let c=r?.total??t.length,u=c===t.length?`${t.length} result${t.length===1?"":"s"}`:`${t.length} of ${c} result${c===1?"":"s"}`;console.log(`
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@superglue/cli",
3
- "version": "1.1.212",
3
+ "version": "1.1.213",
4
4
  "bin": {
5
5
  "sg": "./dist/cli.js"
6
6
  },