@superglue/cli 1.1.95 → 1.1.96
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/.claude-plugin/plugin.json +1 -1
- package/dist/cli.js +4 -2
- package/package.json +1 -1
|
@@ -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.
|
|
4
|
+
"version": "1.1.96",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "superglue",
|
|
7
7
|
"email": "hello@superglue.cloud"
|
package/dist/cli.js
CHANGED
|
@@ -535,7 +535,9 @@ ${e.map(t=>`- ${t.path}: ${t.message}`).join(`
|
|
|
535
535
|
`).map(a=>`${e}${a}`)].join(`
|
|
536
536
|
`)}function bi(o,e){return o.includes(`
|
|
537
537
|
`)?tY(o,e):JSON.stringify(o)}function aY(o){let e=["---"];if(e.push(`name: ${bi(o.id," ")}`),e.push(`title: ${bi(o.name," ")}`),e.push(`when_to_run: ${bi(o.whenToRun," ")}`),o.systemRefs.length>0){e.push("systems:");for(let a of o.systemRefs)e.push(` - id: ${bi(a.id," ")}`)}if(o.toolRefs.length>0){e.push("tools:");for(let a of o.toolRefs)e.push(` - id: ${bi(a.id," ")}`)}if(o.credentialRefs.length>0){e.push("credentials:");for(let a of o.credentialRefs)e.push(` - id: ${bi(a.id," ")}`)}if(o.fileRefs.length>0){e.push("files:");for(let a of o.fileRefs)e.push(` - ${bi(a.name," ")}`);e.push(`# read attachments at /org/playbooks/${o.id}/files/<name>.json (.raw for original bytes)`)}e.push(`completion_criteria: ${bi(o.completionCriteria," ")}`),e.push("---"),e.push(""),o.inputs.trim()&&(e.push("## Required inputs"),e.push(""),e.push(o.inputs.trim()),e.push("")),e.push("## Instructions"),e.push(""),e.push(o.instructions.trim()),e.push("");let t=e.join(`
|
|
538
|
-
`);if(t.length>B2.PLAYBOOK_LIMITS.compiledRender)throw new Error(`Compiled playbook render for '${o.id}' exceeds ${B2.PLAYBOOK_LIMITS.compiledRender} chars (${t.length})`);return t}});var S2=y(Qa=>{"use strict";Object.defineProperty(Qa,"__esModule",{value:!0});Qa.PROJECT_LIMITS=Qa.PROJECT_TASK_STATUSES=Qa.PROJECT_RESOURCE_TYPES=void 0;Qa.projectResourceKey=iY;Qa.PROJECT_RESOURCE_TYPES=["system","playbook","artifact","file","tool"];Qa.PROJECT_TASK_STATUSES=["not_started","in_progress","waiting","done"];Qa.PROJECT_LIMITS={name:80,description:500,taskName:120,taskDescription:5e3,taskResources:100};function iY(o){return`${o.type}:${o.id}`}});var yb=y(Nt=>{"use strict";Object.defineProperty(Nt,"__esModule",{value:!0});Nt.RESOURCE_KINDS=Nt.RESOURCE_DEFINITIONS=void 0;Nt.isResourceKind=rY;Nt.getResourceDefinition=sY;Nt.RESOURCE_DEFINITIONS={tool:{label:"Tool",pluralLabel:"Tools",collectionKey:"tools",memberDefaultPermission:"editor",pickerDefaultPermission:"editor"},system:{label:"System",pluralLabel:"Systems",collectionKey:"systems",memberDefaultPermission:"editor",pickerDefaultPermission:"editor"},credential:{label:"Credential",pluralLabel:"Credentials",collectionKey:"credentials",pickerDefaultPermission:"viewer"},playbook:{label:"Playbook",pluralLabel:"Playbooks",collectionKey:"playbooks",pickerDefaultPermission:"editor"},artifact:{label:"Artifact",pluralLabel:"Artifacts",collectionKey:"artifacts",pickerDefaultPermission:"editor"},file:{label:"File",pluralLabel:"Files",collectionKey:"files",pickerDefaultPermission:"viewer"},project:{label:"Project",pluralLabel:"Projects",collectionKey:"projects",pickerDefaultPermission:"viewer"}};Nt.RESOURCE_KINDS=Object.keys(Nt.RESOURCE_DEFINITIONS);function rY(o){return typeof o=="string"&&Object.prototype.hasOwnProperty.call(Nt.RESOURCE_DEFINITIONS,o)}function sY(o){return Nt.RESOURCE_DEFINITIONS[o]}});var P2=y(_=>{"use strict";Object.defineProperty(_,"__esModule",{value:!0});_.RESERVED_ROLE_NAMES=_.RESERVED_ROLE_IDS=_.PREDEFINED_ROLE_IDS=void 0;_.toResourceRef=Hc;_.toWildcardResourceRef=Gc;_.getDefaultMemberResourceGrants=nY;_.parseResourceRef=Lu;_.getWildcardResourceRef=D2;_.normalizeResourcePermissions=yi;_.permissionSatisfies=Fu;_.highestResourcePermission=Pu;_.grantHasPermission=wb;_.grantMatchesResource=Ms;_.getEffectiveResourcePermissions=vb;_.hasResourcePermission=cY;_.getRoleResourceGrants=Hu;_.getAllowedResourceIds=T2;_.getAllowedResourceIdsForRoles=Gu;_.getEffectiveResourcePermissionsForRoles=_s;_.getAllowedToolIds=R2;_.getAllowedSystemIds=N2;_.pickLongestHeldResource=lY;_.getAllowedCredentialsIds=uY;_.getEffectiveCredentialsPermissions=dY;_.getEffectiveToolPermissions=gY;_.getEffectiveSystemPermissions=pY;_.checkResourcePermission=Yu;_.isToolAllowed=hY;_.isSystemVisible=fY;_.isPlaybookVisible=bY;_.hasAllSystems=yY;_.hasAllTools=kY;_.getResourceGrantSources=U2;_.getSharePermissionForResource=O2;_.getAccessRulePermissionForResource=M2;_.hasAdminBaseRole=xb;_.resolveResourceAccessForRoles=AY;_.normalizeResourceGrantInput=_2;_.normalizeRoleResourceGrantInput=wY;_.isPredefinedRole=vY;_.isReservedRoleId=xY;_.isReservedRoleName=zY;_.hasRole=qY;_.getRoleIds=EY;_.getBaseRole=L2;_.getBaseRoleId=IY;_.getPersonalRole=F2;_.getPersonalRoleId=CY;var Mu=yb(),_u="*";function Hc(o,e){if(!e||e===_u)throw new Error("Resource id is required");return`${o}:${encodeURIComponent(e)}`}function Gc(o){return`${o}:${_u}`}function nY(){return Mu.RESOURCE_KINDS.flatMap(o=>{let e=(0,Mu.getResourceDefinition)(o).memberDefaultPermission;return e?[{resourceRef:Gc(o),permissions:[e]}]:[]})}function Lu(o){let e=o.indexOf(":");if(e<=0)return null;let t=o.slice(0,e);if(!(0,Mu.isResourceKind)(t))return null;let a=o.slice(e+1);if(!a)return null;if(a===_u)return{kind:t,id:_u,isWildcard:!0};try{return{kind:t,id:decodeURIComponent(a),isWildcard:!1}}catch{return null}}function D2(o){let e=Lu(o);return e?Gc(e.kind):null}function yi(o){let e=new Set;for(let t of o||[])(t==="viewer"||t==="editor")&&e.add(t);return e.has("editor")&&e.add("viewer"),Array.from(e)}function Fu(o,e){return o===e||o==="editor"&&e==="viewer"}function Pu(o){let e=yi(o);if(e.includes("editor"))return"editor";if(e.includes("viewer"))return"viewer"}function wb(o,e){return o.revokedAt?!1:yi(o.permissions).some(t=>Fu(t,e))}function Ms(o,e){return o.revokedAt?!1:o.resourceRef===e||o.resourceRef===D2(e)}function vb(o,e){let t=new Set;for(let a of o)if(Ms(a,e))for(let i of yi(a.permissions))t.add(i);return Array.from(t)}function cY(o,e,t){return vb(o,e).some(a=>Fu(a,t))}function Hu(o){return o.flatMap(e=>e.isBaseRole&&e.id==="admin"?[]:e.resourceGrants||[])}function T2(o,e,t){let a=Gc(e),i=new Set;for(let r of o){if(!wb(r,t))continue;if(r.resourceRef===a)return;let s=Lu(r.resourceRef);s?.kind===e&&!s.isWildcard&&i.add(s.id)}return Array.from(i)}function Gu(o,e,t){if(!xb(o))return T2(Hu(o),e,t)}function _s(o,e,t){return xb(o)?["editor","viewer"]:vb(Hu(o),Hc(e,t))}function mY(o){return(0,Mu.getResourceDefinition)(o).label}function R2(o,e="viewer"){return Gu(o,"tool",e)}function N2(o,e="viewer"){return Gu(o,"system",e)}var Ab=Number.MAX_SAFE_INTEGER;function kb(o){if(!o)return Ab;let e=new Date(o).getTime();return Number.isNaN(e)?Ab:e}function lY(o,e,t){if(o.length<=1)return o[0];let a=i=>{let r=Hc(t,i.id),s=Ab;for(let n of e)Ms(n,r)&&(s=Math.min(s,kb(n.createdAt)));return s};return[...o].sort((i,r)=>{let s=a(i)-a(r);return s!==0?s:kb(i.createdAt)-kb(r.createdAt)})[0]}function uY(o,e="viewer"){return Gu(o,"credential",e)}function dY(o,e){return _s(o,"credential",e)}function gY(o,e){return _s(o,"tool",e)}function pY(o,e){return _s(o,"system",e)}function Yu(o,e,t,a){return _s(o,e,t).some(r=>Fu(r,a))?{allowed:!0}:{allowed:!1,error:`${mY(e)} '${t}' requires a '${a}' grant`}}function hY(o,e,t="viewer"){return Yu(o,"tool",e,t)}function fY(o,e,t="viewer"){return Yu(o,"system",e,t)}function bY(o,e,t="viewer"){return Yu(o,"playbook",e,t)}function yY(o,e="viewer"){return N2(o,e)===void 0}function kY(o,e="viewer"){return R2(o,e)===void 0}function U2(o,e,t="viewer"){let a=new Set;for(let i of o)Ms(i,e)&&wb(i,t)&&a.add(i.source);return Array.from(a)}function O2(o,e){let t=o.filter(a=>a.source==="share"&&Ms(a,e)).flatMap(a=>yi(a.permissions));return Pu(t)}function M2(o,e){let t=o.filter(a=>a.source==="access_rule"&&Ms(a,e)).flatMap(a=>yi(a.permissions));return Pu(t)}function xb(o){return o.some(e=>e.isBaseRole&&e.id==="admin")}function AY({roles:o,resource:e,userId:t}){let a=Hc(e.kind,e.id),i=Hu(o),r=new Set(_s(o,e.kind,e.id)),s=new Set(U2(i,a));e.ownerUserId&&e.ownerUserId===t&&(r.add("editor"),r.add("viewer"),s.add("ownership"));let n=yi(Array.from(r));return{permissions:n,sources:Array.from(s),sharePermission:O2(i,a),accessRulePermission:M2(i,a),maxPermission:Pu(n)}}function _2(o){let e=Lu(o.resourceRef);if(!e)throw new Error(`Invalid resource ref '${o.resourceRef}'`);return{...o,resourceRef:e.isWildcard?Gc(e.kind):Hc(e.kind,e.id),permissions:yi(o.permissions||["viewer"]),source:o.source||"access_rule"}}function wY(o){let e=_2({resourceRef:o.resourceRef,permissions:o.permissions,source:"access_rule"});return{resourceRef:e.resourceRef,permissions:e.permissions,source:"access_rule"}}_.PREDEFINED_ROLE_IDS=["admin","member"];_.RESERVED_ROLE_IDS=["admin","member","__admin__"];_.RESERVED_ROLE_NAMES=["member","admin"];function vY(o){return _.PREDEFINED_ROLE_IDS.includes(o)}function xY(o){return _.RESERVED_ROLE_IDS.includes(o)}function zY(o){return _.RESERVED_ROLE_NAMES.includes(o.toLowerCase().trim())}function qY(o,e){return o.some(t=>t.id===e)}function EY(o){return o.map(e=>e.id)}function L2(o){let e=o.filter(t=>t.isBaseRole);return e.length===1?e[0]:null}function IY(o){let e=L2(o);return e?e.id:null}function F2(o){return o.find(e=>e.isPersonalRole)||null}function CY(o){let e=F2(o);return e?e.id:null}});var G2=y(Ho=>{"use strict";Object.defineProperty(Ho,"__esModule",{value:!0});Ho.NOTIFICATION_EXCLUDED_REQUEST_SOURCES=Ho.CLIENT_REQUEST_SOURCES=Ho.REQUEST_SOURCES=void 0;Ho.isRequestSource=H2;Ho.isClientRequestSource=QY;Ho.parseRequestSource=SY;var yo=rt();Ho.REQUEST_SOURCES=[yo.RequestSource.API,yo.RequestSource.FRONTEND,yo.RequestSource.AGENT,yo.RequestSource.SCHEDULER,yo.RequestSource.MCP,yo.RequestSource.TOOL_CHAIN,yo.RequestSource.WEBHOOK,yo.RequestSource.CLI];Ho.CLIENT_REQUEST_SOURCES=[yo.RequestSource.FRONTEND,yo.RequestSource.AGENT,yo.RequestSource.MCP,yo.RequestSource.CLI];Ho.NOTIFICATION_EXCLUDED_REQUEST_SOURCES=[yo.RequestSource.FRONTEND,yo.RequestSource.AGENT,yo.RequestSource.MCP];var jY=new Set(Ho.REQUEST_SOURCES),BY=new Set(Ho.CLIENT_REQUEST_SOURCES);function H2(o){return jY.has(o)}function QY(o){return BY.has(o)}function SY(o){let e=o.toLowerCase();return H2(e)?e:void 0}});var Y2=y(Vu=>{"use strict";Object.defineProperty(Vu,"__esModule",{value:!0});Vu.contextSourceTemplates=void 0;var DY={slack:{category:"workspace",systemId:"slack",onboardingOrder:7,onboardingDescription:"Connect joined public channels so superglue can use relevant workspace context."},gmail:{category:"email",systemId:"gmail",onboardingOrder:9,onboardingDescription:"Let superglue access your gmail inbox. superglue will never send emails on your behalf."},fathomMcp:{category:"meetings",systemId:"fathomMcp",onboardingOrder:4,onboardingDescription:"Let superglue use meeting notes and transcripts. superglue will never join or record meetings."},granolaMcp:{category:"meetings",systemId:"granolaMcp",onboardingOrder:2,onboardingDescription:"Let superglue use notes and transcripts. superglue will never join or record meetings."},googleDrive:{category:"workspace",systemId:"google-drive",onboardingOrder:9,onboardingDescription:"Connect accessible Drive files for relevant workspace context."},box:{category:"workspace",systemId:"box",onboardingOrder:11,onboardingDescription:"Connect accessible Box files for relevant workspace context."},notion:{category:"workspace",systemId:"notion",onboardingOrder:8,onboardingDescription:"Connect selected Notion pages for relevant workspace context."},sharepoint:{category:"workspace",systemId:"sharepoint",onboardingOrder:10,onboardingDescription:"Connect accessible SharePoint sites and files for workspace context."},microsoftTeams:{category:"workspace",systemId:"microsoft-teams",onboardingOrder:6,onboardingDescription:"Connect Microsoft Teams channels and meetings for workspace context."},outlookMail:{category:"email",systemId:"outlook-mail",onboardingOrder:8,onboardingDescription:"Let superglue access your outlook inbox. superglue will never send emails on your behalf."},circleback:{category:"meetings",systemId:"circleback",onboardingOrder:1,onboardingDescription:"Let superglue use notes and transcripts. superglue will never join or record meetings.",endpointAliases:["https://app.circleback.ai/api/mcp"]},fireflies:{category:"meetings",systemId:"fireflies",onboardingOrder:3,onboardingDescription:"Let superglue use transcripts and summaries. superglue will never join or record meetings."},fellowMcp:{category:"meetings",systemId:"fellow",onboardingOrder:5,onboardingDescription:"Let superglue use meeting notes and transcripts. superglue will never join or record meetings."}};Vu.contextSourceTemplates=DY});var Eb=y(de=>{"use strict";Object.defineProperty(de,"__esModule",{value:!0});de.systemOptions=de.systems=void 0;de.getSystemTemplateOAuthClientMode=RY;de.getSystemTemplateAuthentication=J2;de.mergeSystemTemplateAuthentication=K2;de.resolveSystemAuthentication=qb;de.getContextSourceTemplates=Z2;de.resolveContextSourceSetup=LY;de.findTemplateForSystem=Wu;de.uniqueKeywords=FY;de.getOAuthConfig=PY;de.getOAuthTokenExchangeConfig=HY;de.getOAuthTokenUrl=GY;var zb=Lc(),TY=Y2(),$u=Uu();function RY(o){let e=o?.oauth;if(e)return e.registrationUrl?"dynamic":e.client_id?"managed":"custom"}function NY(o){let e=o?.split(/[,\s]+/).filter(Boolean);return e?.length?e:void 0}function J2(o){if(!o?.preferredAuthType)return;if(o.preferredAuthType!=="oauth2")return{type:o.preferredAuthType};let e=o.oauth;if(!e)return{type:"oauth2"};let t={};e.tokenAuthMethod&&(t.tokenAuthMethod=e.tokenAuthMethod),e.tokenContentType&&(t.tokenContentType=e.tokenContentType),e.extraHeaders&&(t.extraHeaders=e.extraHeaders),e.extraBodyParams&&(t.extraBodyParams=e.extraBodyParams),e.usePKCE!==void 0&&(t.usePKCE=e.usePKCE),e.resource&&(t.resource=e.resource);let a=NY(e.scopes);return{type:"oauth2",...e.registrationUrl?{oauthClientMode:"dynamic"}:{},...e.authUrl?{authUrl:e.authUrl}:{},...e.tokenUrl?{tokenUrl:e.tokenUrl}:{},...e.client_id?{clientId:e.client_id}:{},...e.grant_type?{grantType:e.grant_type}:{},...a?{scopes:a}:{},...Object.keys(t).length?{config:t}:{}}}function UY(o){return!o.config||Object.keys(o.config).length===0}function V2(o,e){let t={...o||{},...e||{}};return Object.keys(t).length>0?t:void 0}function $2(o,e){if(e)return{...o,config:e};let{config:t,...a}=o;return a}function K2({authentication:o,template:e}){let t=J2(e),a=(0,zb.normalizeSystemAuthentication)(o);if(!a)return t;if(!t)return a;if(a.type==="none"&&UY(a))return t;if(a.type!==t.type)return a;if(a.type==="oauth2"&&t.type==="oauth2"){let i={...t};a.oauthClientMode==="custom"&&(delete i.clientId,delete i.clientSecret);let r={...i,...a};return(0,zb.resolveOAuthClientMode)({authentication:a,templateClientId:t.clientId,templateRegistrationUrl:e.oauth?.registrationUrl})==="managed"&&t.clientId&&(r.clientId=t.clientId),$2(r,V2(t.config,a.config))}return $2({...t,...a},V2(t.config,a.config))}function qb(o){let e=(0,zb.normalizeSystemAuthentication)(o.authentication)||{type:"none"};return K2({authentication:e,template:Wu(o)?.template})||e}var OY={postgres:{name:"postgres",apiUrl:"postgres://<<username>>:<<password>>@<<host>>:<<port>>/<<database>>",regex:"^.*(postgres|postgresql).*$",icon:"postgresql",docsUrl:"",preferredAuthType:"connection_string",connectionFields:[{key:"host",label:"Host",placeholder:"db.example.com",required:!0},{key:"port",label:"Port",type:"number",defaultValue:"5432",placeholder:"5432"},{key:"database",label:"Database",placeholder:"mydb",required:!0},{key:"username",label:"Username",placeholder:"postgres",required:!0},{key:"password",label:"Password",type:"password",required:!0}],keywords:["database","sql","postgres","postgresql","api key","tables"]},redis_direct:{name:"redis_direct",apiUrl:"redis://<<username>>:<<password>>@<<host>>:<<port>>/<<database>>",regex:"^.*(rediss?://).*$",icon:"redis",docsUrl:"https://redis.io/docs/latest/commands/",preferredAuthType:"connection_string",connectionFields:[{key:"host",label:"Host",placeholder:"redis.example.com",required:!0},{key:"port",label:"Port",type:"number",defaultValue:"6379",placeholder:"6379"},{key:"database",label:"Database Index",placeholder:"0"},{key:"username",label:"Username",placeholder:"default"},{key:"password",label:"Password",type:"password",required:!0}],keywords:["database","cache","redis","key-value","nosql"]},mongodb_direct:{name:"mongodb_direct",apiUrl:"mongodb://<<username>>:<<password>>@<<host>>:<<port>>/<<database>>?authSource=admin",regex:"^.*(mongodb(\\+srv)?://).*$",icon:"mongodb",docsUrl:"https://www.mongodb.com/docs/manual/reference/method/",preferredAuthType:"connection_string",connectionFields:[{key:"host",label:"Host",placeholder:"cluster.example.com",required:!0},{key:"port",label:"Port",type:"number",defaultValue:"27017",placeholder:"27017"},{key:"database",label:"Database",placeholder:"mydb",required:!0},{key:"username",label:"Username",placeholder:"admin"},{key:"password",label:"Password",type:"password"}],keywords:["database","mongodb","mongo","nosql","document","collection","atlas"]},azure_sql:{name:"azure_sql",apiUrl:"mssql://<<user>>:<<password>>@<<host>>:1433/<<database>>",regex:"^.*(azure.*sql|sql.*azure|database\\.windows\\.net).*$",icon:"/logos/azure_sql.svg",docsUrl:"https://learn.microsoft.com/en-us/azure/azure-sql/",preferredAuthType:"connection_string",connectionFields:[{key:"host",label:"Host",placeholder:"myserver.database.windows.net",required:!0},{key:"database",label:"Database",placeholder:"mydb",required:!0},{key:"user",label:"Username",placeholder:"user@domain.com",required:!0},{key:"password",label:"Password",type:"password",required:!0},{key:"authType",label:"Auth Type",placeholder:"azure-active-directory-password"},{key:"clientId",label:"Client ID",placeholder:"App Registration client ID"},{key:"clientSecret",label:"Client Secret",type:"password",placeholder:"Service principal secret"},{key:"tenantId",label:"Tenant ID",placeholder:"Azure AD directory ID"}],systemSpecificInstructions:`Azure SQL supports two authentication modes:
|
|
538
|
+
`);if(t.length>B2.PLAYBOOK_LIMITS.compiledRender)throw new Error(`Compiled playbook render for '${o.id}' exceeds ${B2.PLAYBOOK_LIMITS.compiledRender} chars (${t.length})`);return t}});var S2=y(Qa=>{"use strict";Object.defineProperty(Qa,"__esModule",{value:!0});Qa.PROJECT_LIMITS=Qa.PROJECT_TASK_STATUSES=Qa.PROJECT_RESOURCE_TYPES=void 0;Qa.projectResourceKey=iY;Qa.PROJECT_RESOURCE_TYPES=["system","playbook","artifact","file","tool"];Qa.PROJECT_TASK_STATUSES=["not_started","in_progress","waiting","done"];Qa.PROJECT_LIMITS={name:80,description:500,taskName:120,taskDescription:5e3,taskResources:100};function iY(o){return`${o.type}:${o.id}`}});var yb=y(Nt=>{"use strict";Object.defineProperty(Nt,"__esModule",{value:!0});Nt.RESOURCE_KINDS=Nt.RESOURCE_DEFINITIONS=void 0;Nt.isResourceKind=rY;Nt.getResourceDefinition=sY;Nt.RESOURCE_DEFINITIONS={tool:{label:"Tool",pluralLabel:"Tools",collectionKey:"tools",memberDefaultPermission:"editor",pickerDefaultPermission:"editor"},system:{label:"System",pluralLabel:"Systems",collectionKey:"systems",memberDefaultPermission:"editor",pickerDefaultPermission:"editor"},credential:{label:"Credential",pluralLabel:"Credentials",collectionKey:"credentials",pickerDefaultPermission:"viewer"},playbook:{label:"Playbook",pluralLabel:"Playbooks",collectionKey:"playbooks",pickerDefaultPermission:"editor"},artifact:{label:"Artifact",pluralLabel:"Artifacts",collectionKey:"artifacts",pickerDefaultPermission:"editor"},file:{label:"File",pluralLabel:"Files",collectionKey:"files",pickerDefaultPermission:"viewer"},project:{label:"Project",pluralLabel:"Projects",collectionKey:"projects",pickerDefaultPermission:"viewer"}};Nt.RESOURCE_KINDS=Object.keys(Nt.RESOURCE_DEFINITIONS);function rY(o){return typeof o=="string"&&Object.prototype.hasOwnProperty.call(Nt.RESOURCE_DEFINITIONS,o)}function sY(o){return Nt.RESOURCE_DEFINITIONS[o]}});var P2=y(_=>{"use strict";Object.defineProperty(_,"__esModule",{value:!0});_.RESERVED_ROLE_NAMES=_.RESERVED_ROLE_IDS=_.PREDEFINED_ROLE_IDS=void 0;_.toResourceRef=Hc;_.toWildcardResourceRef=Gc;_.getDefaultMemberResourceGrants=nY;_.parseResourceRef=Lu;_.getWildcardResourceRef=D2;_.normalizeResourcePermissions=yi;_.permissionSatisfies=Fu;_.highestResourcePermission=Pu;_.grantHasPermission=wb;_.grantMatchesResource=Ms;_.getEffectiveResourcePermissions=vb;_.hasResourcePermission=cY;_.getRoleResourceGrants=Hu;_.getAllowedResourceIds=T2;_.getAllowedResourceIdsForRoles=Gu;_.getEffectiveResourcePermissionsForRoles=_s;_.getAllowedToolIds=R2;_.getAllowedSystemIds=N2;_.pickLongestHeldResource=lY;_.getAllowedCredentialsIds=uY;_.getEffectiveCredentialsPermissions=dY;_.getEffectiveToolPermissions=gY;_.getEffectiveSystemPermissions=pY;_.checkResourcePermission=Yu;_.isToolAllowed=hY;_.isSystemVisible=fY;_.isPlaybookVisible=bY;_.hasAllSystems=yY;_.hasAllTools=kY;_.getResourceGrantSources=U2;_.getSharePermissionForResource=O2;_.getAccessRulePermissionForResource=M2;_.hasAdminBaseRole=xb;_.resolveResourceAccessForRoles=AY;_.normalizeResourceGrantInput=_2;_.normalizeRoleResourceGrantInput=wY;_.isPredefinedRole=vY;_.isReservedRoleId=xY;_.isReservedRoleName=zY;_.hasRole=qY;_.getRoleIds=EY;_.getBaseRole=L2;_.getBaseRoleId=IY;_.getPersonalRole=F2;_.getPersonalRoleId=CY;var Mu=yb(),_u="*";function Hc(o,e){if(!e||e===_u)throw new Error("Resource id is required");return`${o}:${encodeURIComponent(e)}`}function Gc(o){return`${o}:${_u}`}function nY(){return Mu.RESOURCE_KINDS.flatMap(o=>{let e=(0,Mu.getResourceDefinition)(o).memberDefaultPermission;return e?[{resourceRef:Gc(o),permissions:[e]}]:[]})}function Lu(o){let e=o.indexOf(":");if(e<=0)return null;let t=o.slice(0,e);if(!(0,Mu.isResourceKind)(t))return null;let a=o.slice(e+1);if(!a)return null;if(a===_u)return{kind:t,id:_u,isWildcard:!0};try{return{kind:t,id:decodeURIComponent(a),isWildcard:!1}}catch{return null}}function D2(o){let e=Lu(o);return e?Gc(e.kind):null}function yi(o){let e=new Set;for(let t of o||[])(t==="viewer"||t==="editor")&&e.add(t);return e.has("editor")&&e.add("viewer"),Array.from(e)}function Fu(o,e){return o===e||o==="editor"&&e==="viewer"}function Pu(o){let e=yi(o);if(e.includes("editor"))return"editor";if(e.includes("viewer"))return"viewer"}function wb(o,e){return o.revokedAt?!1:yi(o.permissions).some(t=>Fu(t,e))}function Ms(o,e){return o.revokedAt?!1:o.resourceRef===e||o.resourceRef===D2(e)}function vb(o,e){let t=new Set;for(let a of o)if(Ms(a,e))for(let i of yi(a.permissions))t.add(i);return Array.from(t)}function cY(o,e,t){return vb(o,e).some(a=>Fu(a,t))}function Hu(o){return o.flatMap(e=>e.isBaseRole&&e.id==="admin"?[]:e.resourceGrants||[])}function T2(o,e,t){let a=Gc(e),i=new Set;for(let r of o){if(!wb(r,t))continue;if(r.resourceRef===a)return;let s=Lu(r.resourceRef);s?.kind===e&&!s.isWildcard&&i.add(s.id)}return Array.from(i)}function Gu(o,e,t){if(!xb(o))return T2(Hu(o),e,t)}function _s(o,e,t){return xb(o)?["editor","viewer"]:vb(Hu(o),Hc(e,t))}function mY(o){return(0,Mu.getResourceDefinition)(o).label}function R2(o,e="viewer"){return Gu(o,"tool",e)}function N2(o,e="viewer"){return Gu(o,"system",e)}var Ab=Number.MAX_SAFE_INTEGER;function kb(o){if(!o)return Ab;let e=new Date(o).getTime();return Number.isNaN(e)?Ab:e}function lY(o,e,t){if(o.length<=1)return o[0];let a=i=>{let r=Hc(t,i.id),s=Ab;for(let n of e)Ms(n,r)&&(s=Math.min(s,kb(n.createdAt)));return s};return[...o].sort((i,r)=>{let s=a(i)-a(r);return s!==0?s:kb(i.createdAt)-kb(r.createdAt)})[0]}function uY(o,e="viewer"){return Gu(o,"credential",e)}function dY(o,e){return _s(o,"credential",e)}function gY(o,e){return _s(o,"tool",e)}function pY(o,e){return _s(o,"system",e)}function Yu(o,e,t,a){return _s(o,e,t).some(r=>Fu(r,a))?{allowed:!0}:{allowed:!1,error:`${mY(e)} '${t}' requires a '${a}' grant`}}function hY(o,e,t="viewer"){return Yu(o,"tool",e,t)}function fY(o,e,t="viewer"){return Yu(o,"system",e,t)}function bY(o,e,t="viewer"){return Yu(o,"playbook",e,t)}function yY(o,e="viewer"){return N2(o,e)===void 0}function kY(o,e="viewer"){return R2(o,e)===void 0}function U2(o,e,t="viewer"){let a=new Set;for(let i of o)Ms(i,e)&&wb(i,t)&&a.add(i.source);return Array.from(a)}function O2(o,e){let t=o.filter(a=>a.source==="share"&&Ms(a,e)).flatMap(a=>yi(a.permissions));return Pu(t)}function M2(o,e){let t=o.filter(a=>a.source==="access_rule"&&Ms(a,e)).flatMap(a=>yi(a.permissions));return Pu(t)}function xb(o){return o.some(e=>e.isBaseRole&&e.id==="admin")}function AY({roles:o,resource:e,userId:t}){let a=Hc(e.kind,e.id),i=Hu(o),r=new Set(_s(o,e.kind,e.id)),s=new Set(U2(i,a));e.ownerUserId&&e.ownerUserId===t&&(r.add("editor"),r.add("viewer"),s.add("ownership"));let n=yi(Array.from(r));return{permissions:n,sources:Array.from(s),sharePermission:O2(i,a),accessRulePermission:M2(i,a),maxPermission:Pu(n)}}function _2(o){let e=Lu(o.resourceRef);if(!e)throw new Error(`Invalid resource ref '${o.resourceRef}'`);return{...o,resourceRef:e.isWildcard?Gc(e.kind):Hc(e.kind,e.id),permissions:yi(o.permissions||["viewer"]),source:o.source||"access_rule"}}function wY(o){let e=_2({resourceRef:o.resourceRef,permissions:o.permissions,source:"access_rule"});return{resourceRef:e.resourceRef,permissions:e.permissions,source:"access_rule"}}_.PREDEFINED_ROLE_IDS=["admin","member"];_.RESERVED_ROLE_IDS=["admin","member","__admin__"];_.RESERVED_ROLE_NAMES=["member","admin"];function vY(o){return _.PREDEFINED_ROLE_IDS.includes(o)}function xY(o){return _.RESERVED_ROLE_IDS.includes(o)}function zY(o){return _.RESERVED_ROLE_NAMES.includes(o.toLowerCase().trim())}function qY(o,e){return o.some(t=>t.id===e)}function EY(o){return o.map(e=>e.id)}function L2(o){let e=o.filter(t=>t.isBaseRole);return e.length===1?e[0]:null}function IY(o){let e=L2(o);return e?e.id:null}function F2(o){return o.find(e=>e.isPersonalRole)||null}function CY(o){let e=F2(o);return e?e.id:null}});var G2=y(Ho=>{"use strict";Object.defineProperty(Ho,"__esModule",{value:!0});Ho.NOTIFICATION_EXCLUDED_REQUEST_SOURCES=Ho.CLIENT_REQUEST_SOURCES=Ho.REQUEST_SOURCES=void 0;Ho.isRequestSource=H2;Ho.isClientRequestSource=QY;Ho.parseRequestSource=SY;var yo=rt();Ho.REQUEST_SOURCES=[yo.RequestSource.API,yo.RequestSource.FRONTEND,yo.RequestSource.AGENT,yo.RequestSource.SCHEDULER,yo.RequestSource.MCP,yo.RequestSource.TOOL_CHAIN,yo.RequestSource.WEBHOOK,yo.RequestSource.CLI];Ho.CLIENT_REQUEST_SOURCES=[yo.RequestSource.FRONTEND,yo.RequestSource.AGENT,yo.RequestSource.MCP,yo.RequestSource.CLI];Ho.NOTIFICATION_EXCLUDED_REQUEST_SOURCES=[yo.RequestSource.FRONTEND,yo.RequestSource.AGENT,yo.RequestSource.MCP];var jY=new Set(Ho.REQUEST_SOURCES),BY=new Set(Ho.CLIENT_REQUEST_SOURCES);function H2(o){return jY.has(o)}function QY(o){return BY.has(o)}function SY(o){let e=o.toLowerCase();return H2(e)?e:void 0}});var Y2=y(Vu=>{"use strict";Object.defineProperty(Vu,"__esModule",{value:!0});Vu.contextSourceTemplates=void 0;var DY={slack:{category:"workspace",systemId:"slack",onboardingOrder:7,onboardingDescription:"Connect joined public channels so superglue can use relevant workspace context."},gmail:{category:"email",systemId:"gmail",onboardingOrder:9,onboardingDescription:"Let superglue access your gmail inbox. superglue will never send emails on your behalf."},fathomMcp:{category:"meetings",systemId:"fathomMcp",onboardingOrder:4,onboardingDescription:"Let superglue use meeting notes and transcripts. superglue will never join or record meetings."},granolaMcp:{category:"meetings",systemId:"granolaMcp",onboardingOrder:2,onboardingDescription:"Let superglue use notes and transcripts. superglue will never join or record meetings."},googleDrive:{category:"workspace",systemId:"google-drive",onboardingOrder:9,onboardingDescription:"Connect accessible Drive files for relevant workspace context."},box:{category:"workspace",systemId:"box",onboardingOrder:11,onboardingDescription:"Connect accessible Box files for relevant workspace context."},notion:{category:"workspace",systemId:"notion",onboardingOrder:8,onboardingDescription:"Connect selected Notion pages for relevant workspace context."},sharepoint:{category:"workspace",systemId:"sharepoint",onboardingOrder:10,onboardingDescription:"Connect accessible SharePoint sites and files for workspace context."},microsoftTeams:{category:"workspace",systemId:"microsoft-teams",onboardingOrder:6,onboardingDescription:"Connect Microsoft Teams channels and meetings for workspace context."},outlookMail:{category:"email",systemId:"outlook-mail",onboardingOrder:8,onboardingDescription:"Let superglue access your outlook inbox. superglue will never send emails on your behalf."},circleback:{category:"meetings",systemId:"circleback",onboardingOrder:1,onboardingDescription:"Let superglue use notes and transcripts. superglue will never join or record meetings.",endpointAliases:["https://app.circleback.ai/api/mcp"]},fireflies:{category:"meetings",systemId:"fireflies",onboardingOrder:3,onboardingDescription:"Let superglue use transcripts and summaries. superglue will never join or record meetings."},fellowMcp:{category:"meetings",systemId:"fellow",onboardingOrder:5,onboardingDescription:"Let superglue use meeting notes and transcripts. superglue will never join or record meetings."}};Vu.contextSourceTemplates=DY});var Eb=y(de=>{"use strict";Object.defineProperty(de,"__esModule",{value:!0});de.systemOptions=de.systems=void 0;de.getSystemTemplateOAuthClientMode=RY;de.getSystemTemplateAuthentication=J2;de.mergeSystemTemplateAuthentication=K2;de.resolveSystemAuthentication=qb;de.getContextSourceTemplates=Z2;de.resolveContextSourceSetup=LY;de.findTemplateForSystem=Wu;de.uniqueKeywords=FY;de.getOAuthConfig=PY;de.getOAuthTokenExchangeConfig=HY;de.getOAuthTokenUrl=GY;var zb=Lc(),TY=Y2(),$u=Uu();function RY(o){let e=o?.oauth;if(e)return e.registrationUrl?"dynamic":e.client_id?"managed":"custom"}function NY(o){let e=o?.split(/[,\s]+/).filter(Boolean);return e?.length?e:void 0}function J2(o){if(!o?.preferredAuthType)return;if(o.preferredAuthType!=="oauth2")return{type:o.preferredAuthType};let e=o.oauth;if(!e)return{type:"oauth2"};let t={};e.tokenAuthMethod&&(t.tokenAuthMethod=e.tokenAuthMethod),e.tokenContentType&&(t.tokenContentType=e.tokenContentType),e.extraHeaders&&(t.extraHeaders=e.extraHeaders),e.extraBodyParams&&(t.extraBodyParams=e.extraBodyParams),e.usePKCE!==void 0&&(t.usePKCE=e.usePKCE),e.resource&&(t.resource=e.resource);let a=NY(e.scopes);return{type:"oauth2",...e.registrationUrl?{oauthClientMode:"dynamic"}:{},...e.authUrl?{authUrl:e.authUrl}:{},...e.tokenUrl?{tokenUrl:e.tokenUrl}:{},...e.client_id?{clientId:e.client_id}:{},...e.grant_type?{grantType:e.grant_type}:{},...a?{scopes:a}:{},...Object.keys(t).length?{config:t}:{}}}function UY(o){return!o.config||Object.keys(o.config).length===0}function V2(o,e){let t={...o||{},...e||{}};return Object.keys(t).length>0?t:void 0}function $2(o,e){if(e)return{...o,config:e};let{config:t,...a}=o;return a}function K2({authentication:o,template:e}){let t=J2(e),a=(0,zb.normalizeSystemAuthentication)(o);if(!a)return t;if(!t)return a;if(a.type==="none"&&UY(a))return t;if(a.type!==t.type)return a;if(a.type==="oauth2"&&t.type==="oauth2"){let i={...t};a.oauthClientMode==="custom"&&(delete i.clientId,delete i.clientSecret);let r={...i,...a};return(0,zb.resolveOAuthClientMode)({authentication:a,templateClientId:t.clientId,templateRegistrationUrl:e.oauth?.registrationUrl})==="managed"&&t.clientId&&(r.clientId=t.clientId),$2(r,V2(t.config,a.config))}return $2({...t,...a},V2(t.config,a.config))}function qb(o){let e=(0,zb.normalizeSystemAuthentication)(o.authentication)||{type:"none"};return K2({authentication:e,template:Wu(o)?.template})||e}var OY={postgres:{name:"postgres",apiUrl:"postgres://<<username>>:<<password>>@<<host>>:<<port>>/<<database>>",regex:"^.*(postgres|postgresql).*$",icon:"postgresql",docsUrl:"",preferredAuthType:"connection_string",connectionFields:[{key:"host",label:"Host",placeholder:"db.example.com",required:!0},{key:"port",label:"Port",type:"number",defaultValue:"5432",placeholder:"5432"},{key:"database",label:"Database",placeholder:"mydb",required:!0},{key:"username",label:"Username",placeholder:"postgres",required:!0},{key:"password",label:"Password",type:"password",required:!0}],keywords:["database","sql","postgres","postgresql","api key","tables"]},mssql:{name:"mssql",apiUrl:"mssql://<<username>>:<<password>>@<<host>>:<<port>>/<<database>>",regex:"^.*\\b(mssql|sql[\\s._-]?server).*$",icon:"lucide:database",docsUrl:"https://learn.microsoft.com/en-us/sql/sql-server/connect-to-database-engine",preferredAuthType:"connection_string",connectionFields:[{key:"host",label:"Host",placeholder:"sql.example.com",required:!0},{key:"port",label:"Port",type:"number",defaultValue:"1433",placeholder:"1433"},{key:"database",label:"Database",placeholder:"mydb",required:!0},{key:"username",label:"Username",required:!0},{key:"password",label:"Password",type:"password",required:!0}],systemSpecificInstructions:`TCP/IP must be enabled on SQL Server. SQL Server logins require mixed-mode authentication.
|
|
539
|
+
|
|
540
|
+
Default instances typically use TCP port 1433. Named instances can use dynamic ports and SQL Server Browser on UDP 1434; request the instance's actual TCP port when direct connections fail.`,keywords:["database","sql","sql server","mssql","transact-sql","t-sql","table","schema","view","stored procedure"]},redis_direct:{name:"redis_direct",apiUrl:"redis://<<username>>:<<password>>@<<host>>:<<port>>/<<database>>",regex:"^.*(rediss?://).*$",icon:"redis",docsUrl:"https://redis.io/docs/latest/commands/",preferredAuthType:"connection_string",connectionFields:[{key:"host",label:"Host",placeholder:"redis.example.com",required:!0},{key:"port",label:"Port",type:"number",defaultValue:"6379",placeholder:"6379"},{key:"database",label:"Database Index",placeholder:"0"},{key:"username",label:"Username",placeholder:"default"},{key:"password",label:"Password",type:"password",required:!0}],keywords:["database","cache","redis","key-value","nosql"]},mongodb_direct:{name:"mongodb_direct",apiUrl:"mongodb://<<username>>:<<password>>@<<host>>:<<port>>/<<database>>?authSource=admin",regex:"^.*(mongodb(\\+srv)?://).*$",icon:"mongodb",docsUrl:"https://www.mongodb.com/docs/manual/reference/method/",preferredAuthType:"connection_string",connectionFields:[{key:"host",label:"Host",placeholder:"cluster.example.com",required:!0},{key:"port",label:"Port",type:"number",defaultValue:"27017",placeholder:"27017"},{key:"database",label:"Database",placeholder:"mydb",required:!0},{key:"username",label:"Username",placeholder:"admin"},{key:"password",label:"Password",type:"password"}],keywords:["database","mongodb","mongo","nosql","document","collection","atlas"]},azure_sql:{name:"azure_sql",apiUrl:"mssql://<<user>>:<<password>>@<<host>>:1433/<<database>>",regex:"^.*(azure.*sql|sql.*azure|database\\.windows\\.net).*$",icon:"/logos/azure_sql.svg",docsUrl:"https://learn.microsoft.com/en-us/azure/azure-sql/",preferredAuthType:"connection_string",connectionFields:[{key:"host",label:"Host",placeholder:"myserver.database.windows.net",required:!0},{key:"database",label:"Database",placeholder:"mydb",required:!0},{key:"user",label:"Username",placeholder:"user@domain.com",required:!0},{key:"password",label:"Password",type:"password",required:!0},{key:"authType",label:"Auth Type",placeholder:"azure-active-directory-password"},{key:"clientId",label:"Client ID",placeholder:"App Registration client ID"},{key:"clientSecret",label:"Client Secret",type:"password",placeholder:"Service principal secret"},{key:"tenantId",label:"Tenant ID",placeholder:"Azure AD directory ID"}],systemSpecificInstructions:`Azure SQL supports two authentication modes:
|
|
539
541
|
|
|
540
542
|
SQL Server Authentication (default): user + password in the connection URL. No additional fields needed.
|
|
541
543
|
|
|
@@ -1591,7 +1593,7 @@ ${r}`;break;case"retry":F5(r)&&(t[i]=r);break;case"id":P5(r)&&(t[i]=r);break;cas
|
|
|
1591
1593
|
`);o.stack=t?`${t}
|
|
1592
1594
|
${r}`:i.stack}Q.exports.fetch=function(e,t=void 0){return jme(e,t).catch(a=>{throw eS?iS(a,eS):a&&typeof a=="object"&&Error.captureStackTrace(a,Q.exports.fetch),a})};Q.exports.Headers=Jr().Headers;Q.exports.Response=Pm().Response;Q.exports.Request=vn().Request;Q.exports.FormData=bd().FormData;var{setGlobalOrigin:Bme,getGlobalOrigin:Qme}=Dy();Q.exports.setGlobalOrigin=Bme;Q.exports.getGlobalOrigin=Qme;var{CacheStorage:Sme}=_9(),{kConstruct:Dme}=ge();Q.exports.caches=new Sme(Dme);var{deleteCookie:Tme,getCookies:Rme,getSetCookies:Nme,setCookie:Ume,parseCookie:Ome}=Z9();Q.exports.deleteCookie=Tme;Q.exports.getCookies=Rme;Q.exports.getSetCookies=Nme;Q.exports.setCookie=Ume;Q.exports.parseCookie=Ome;var{parseMIMEType:Mme,serializeAMimeType:_me}=bt();Q.exports.parseMIMEType=Mme;Q.exports.serializeAMimeType=_me;var{CloseEvent:Lme,ErrorEvent:Fme,MessageEvent:Pme}=Ng(),{WebSocket:Hme,ping:Gme}=Q5();Q.exports.WebSocket=Hme;Q.exports.CloseEvent=Lme;Q.exports.ErrorEvent=Fme;Q.exports.MessageEvent=Pme;Q.exports.ping=Gme;Q.exports.WebSocketStream=M5().WebSocketStream;Q.exports.WebSocketError=mv().WebSocketError;Q.exports.request=ol(Dn.request);Q.exports.stream=ol(Dn.stream);Q.exports.pipeline=ol(Dn.pipeline);Q.exports.connect=ol(Dn.connect);Q.exports.upgrade=ol(Dn.upgrade);Q.exports.MockClient=bme;Q.exports.MockCallHistory=yme;Q.exports.MockCallHistoryLog=kme;Q.exports.MockPool=wme;Q.exports.MockAgent=Ame;Q.exports.SnapshotAgent=vme;Q.exports.mockErrors=xme;var{EventSource:Yme}=X5();Q.exports.EventSource=Yme;function Vme(){globalThis.fetch=Q.exports.fetch,globalThis.Headers=Q.exports.Headers,globalThis.Response=Q.exports.Response,globalThis.Request=Q.exports.Request,globalThis.FormData=Q.exports.FormData,globalThis.WebSocket=Q.exports.WebSocket,globalThis.CloseEvent=Q.exports.CloseEvent,globalThis.ErrorEvent=Q.exports.ErrorEvent,globalThis.MessageEvent=Q.exports.MessageEvent,globalThis.EventSource=Q.exports.EventSource}Q.exports.install=Vme});var sS=y(Rn=>{"use strict";Object.defineProperty(Rn,"__esModule",{value:!0});Rn.SuperglueClient=Rn.SuperglueHttpError=void 0;var Tn=rt(),$a=Zf(),$me=jb(),Wme=yI(),Jme=Kt(),Wa=js(),Kme=vu(),al=14400*1e3,tl;if(typeof globalThis.process<"u"&&globalThis.process.versions?.node)try{let{Agent:o}=rS();tl=new o({headersTimeout:al,bodyTimeout:al})}catch{}var Jg=class extends Error{constructor(e,t,a,i){super(e),this.status=t,this.code=a,this.details=i,this.name="SuperglueHttpError"}};Rn.SuperglueHttpError=Jg;var hv=class{constructor({apiKey:e,apiEndpoint:t,onInfrastructureError:a,sseTokenProvider:i,tokenProvider:r}){if(!e&&!r)throw new Error("SuperglueClient requires either apiKey or tokenProvider");this.tokenProvider=r??(async()=>e),this.apiEndpoint=t??"https://api.superglue.cloud",this.sseManager=new $me.SSELogSubscriptionManager(this.apiEndpoint,i??this.tokenProvider),this.onInfrastructureError=a}async getApiKey(){return this.tokenProvider()}isInfrastructureError(e){return(0,Jme.isAbortError)(e)?!1:!!(e instanceof TypeError&&e.message.toLowerCase().includes("fetch")||e instanceof Error&&e.name==="TimeoutError")}async restRequest(e,t,a,i,r){let n=await(await this.restResponse({method:e,path:t,body:a,extraHeaders:i,requestInit:r})).text();if(n)return JSON.parse(n)}async restResponse({method:e,path:t,body:a,extraHeaders:i,requestInit:r}){let s=`${this.apiEndpoint.replace(/\/$/,"")}${t}`,n=a!=null,c=typeof FormData<"u"&&a instanceof FormData,l={Authorization:`Bearer ${await this.getApiKey()}`,...i};n&&!c&&e!=="GET"&&(l["Content-Type"]="application/json");let u;try{u=await fetch(s,{...r,method:e,headers:l,body:n?c?a:JSON.stringify(a):void 0,signal:r?.signal??AbortSignal.timeout(al),...tl?{dispatcher:tl}:{}})}catch(d){throw this.isInfrastructureError(d)&&this.onInfrastructureError?.(),d}if(!u.ok)throw await this.buildHttpError(u);return u}async uploadFiles(e,t){if(typeof t?.process!="boolean")throw new Error("process must be a boolean");if(e.length===0)return[];let a=e.map(l=>({...l,contentLength:l.contentLength??this.getUploadContentLength(l.content)})),r=(await this.restRequest("POST","/v1/files/uploads",{process:t.process,files:a.map(({fileName:l,contentType:u,contentLength:d})=>({fileName:l,contentLength:d,...u?{contentType:u}:{}}))})).data.files;if(r.length!==a.length)throw await Promise.all(r.map(l=>this.deleteFileUpload(l.id).catch(()=>{}))),new Error("Upload response did not match the selected files");let s=await Promise.allSettled(r.map(async(l,u)=>{let d=a[u],g=await fetch(l.uploadUrl,{method:"PUT",body:d.content,headers:d.contentType?{"Content-Type":d.contentType}:void 0,signal:AbortSignal.timeout(Math.min(al,l.expiresIn*1e3))});if(!g.ok)throw new Error(`Upload failed for ${d.fileName}: ${g.status} ${g.statusText}`);return l.id})),n=s.flatMap(l=>l.status==="fulfilled"?[l.value]:[]),c=new Map;if(n.length>0)try{let l=await this.restRequest("POST","/v1/files/uploads/complete",{fileIds:n});c=new Map(l.data.files.map(u=>[u.id,u]))}catch(l){c=new Map(n.map(u=>[u,{id:u,fileName:a[r.findIndex(d=>d.id===u)]?.fileName||u,contentLength:a[r.findIndex(d=>d.id===u)]?.contentLength||0,status:"failed",error:l instanceof Error?l.message:String(l)}]))}let m=r.map((l,u)=>{let d=s[u],g=a[u];return d.status==="rejected"?{id:l.id,fileName:g.fileName,contentLength:g.contentLength,status:"failed",error:d.reason instanceof Error?d.reason.message:String(d.reason)}:c.get(l.id)||{id:l.id,fileName:g.fileName,contentLength:g.contentLength,status:"failed",error:"Upload completion returned no result"}});return await Promise.all(m.filter(l=>l.status==="failed").map(l=>this.deleteFileUpload(l.id).catch(()=>{}))),m}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 t=await e.text(),a=`HTTP ${e.status}: ${t}`,i,r;try{let s=JSON.parse(t);s&&typeof s=="object"&&!Array.isArray(s)&&(r=s),typeof s?.code=="string"&&(i=s.code);let n=s.error;typeof n=="string"?a=n:n&&typeof n=="object"&&(a=n.message||JSON.stringify(n))}catch{}return new Jg(a,e.status,i,r)}async streamRequest(e,t,a){let i=e.includes("?")?"&":"?",r=`${this.apiEndpoint.replace(/\/$/,"")}${e}${i}stream=true`,n={Authorization:`Bearer ${await this.getApiKey()}`,Accept:"text/event-stream","Content-Type":"application/json"},c;try{c=await fetch(r,{method:"POST",headers:n,body:JSON.stringify(t),signal:a??AbortSignal.timeout(al),...tl?{dispatcher:tl}:{}})}catch(l){throw this.isInfrastructureError(l)&&this.onInfrastructureError?.(),l}if(!c.ok)throw await this.buildHttpError(c);if(!(c.headers.get("content-type")||"").includes("text/event-stream")){let l=await c.text();return l?JSON.parse(l):void 0}try{return await(0,Wme.consumeEventStreamResult)(c)}catch(l){throw this.isInfrastructureError(l)&&this.onInfrastructureError?.(),l}}async subscribeToLogsSSE(e={}){return this.sseManager.subscribeToLogs(e)}async disconnect(){await this.sseManager.disconnect()}async getMe(){return this.restRequest("GET","/v1/me")}async completeOnboarding(){return this.restRequest("POST","/v1/me/onboarding/complete")}async runTool(e){let t=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:t.status==="success",data:t.data,error:t.error,tool:t.tool,stepResults:t.stepResults?.map(a=>({...a}))||[],...t.fileArtifacts&&t.fileArtifacts.length>0?{fileArtifacts:t.fileArtifacts}:{},...t.metadata?.warnings?.length?{warnings:t.metadata.warnings}:{}}}async runToolConfig(e){let t=e.createRun?"/v1/tools/run?createRun=true":"/v1/tools/run",a=await this.restRequest("POST",t,{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:a.status?a.status==="success":a.success??!1,data:a.data,error:a.error,tool:a.tool||e.tool,stepResults:a.stepResults?.map(r=>({...r}))||[],...a.fileArtifacts&&a.fileArtifacts.length>0?{fileArtifacts:a.fileArtifacts}:{},...a.metadata?.warnings?.length?{warnings:a.metadata.warnings}:{}}}async abortToolExecution(e){return{success:!0,runId:(await this.restRequest("POST",`/v1/runs/${encodeURIComponent(e)}/cancel`)).runId}}async executeStep({step:e,payload:t,files:a,previousResults:i,credentials:r,options:s,runId:n,systemIds:c,createRun:m,parentToolId:l,stepIndex:u,stepId:d,signal:g,stream:p}){let b={step:e,payload:t,files:a,previousResults:i,credentials:r,options:s,runId:n,systemIds:c,createRun:m,parentToolId:l,stepIndex:u,stepId:d};return p?this.streamRequest("/v1/tools/step/run",b,g):this.restRequest("POST","/v1/tools/step/run",b,void 0,g?{signal:g}:void 0)}async abortStep(e){return this.restRequest("POST","/v1/tools/step/abort",{runId:e})}async executeTransformOnly({outputTransform:e,outputSchema:t,inputSchema:a,payload:i,files:r,stepResults:s,options:n,runId:c,createRun:m,parentToolId:l,stepId:u,signal:d,stream:g}){let p={outputTransform:e,outputSchema:t,inputSchema:a,payload:i,files:r,stepResults:s,options:n,runId:c,createRun:m,parentToolId:l,stepId:u};return g?this.streamRequest("/v1/tools/transform/run",p,d):this.restRequest("POST","/v1/tools/transform/run",p,void 0,d?{signal:d}:void 0)}async createRun({toolId:e,toolConfig:t,toolResult:a,stepResults:i,toolPayload:r,status:s,error:n,startedAt:c,completedAt:m,executionKind:l,parentToolId:u,draftId:d}){return this.restRequest("POST","/v1/runs",{toolId:e,toolConfig:t,toolResult:a,stepResults:i,toolPayload:r,status:s,error:n,startedAt:(0,Wa.toUTCISOString)(c,"run.startedAt"),completedAt:(0,Wa.toUTCISOString)(m,"run.completedAt"),executionKind:l,parentToolId:u,draftId:d})}async checkRunLimit(){return(await this.restRequest("POST","/v1/runs/check-limit")).data}async extract({file:e,envelope:t}){if(!e)throw new Error("File must be provided for extract.");let a=new FormData;a.append("file",e);let i=t?"/v1/extract?envelope=true":"/v1/extract";return this.restRequest("POST",i,a)}mapOpenAPIRunToRun(e){let t={running:Tn.RunStatus.RUNNING,success:Tn.RunStatus.SUCCESS,failed:Tn.RunStatus.FAILED,aborted:Tn.RunStatus.ABORTED};return{runId:e.runId??e.id,toolId:e.toolId,tool:e.tool,systemIds:e.systemIds,status:t[e.status]??Tn.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??Tn.RunExecutionKind.FULL},fileArtifacts:e.fileArtifacts}}mapOpenAPIScheduleToToolSchedule(e){return{...e,lastRunAt:e.lastRunAt?(0,Wa.requireUTCDate)(e.lastRunAt,"schedule.lastRunAt"):void 0,nextRunAt:(0,Wa.requireUTCDate)(e.nextRunAt,"schedule.nextRunAt"),createdAt:(0,Wa.requireUTCDate)(e.createdAt,"schedule.createdAt"),updatedAt:(0,Wa.requireUTCDate)(e.updatedAt,"schedule.updatedAt")}}async listRuns(e={}){let t=(0,$a.createSearchListQueryParams)(e);e.toolId!==void 0&&t.set("toolId",e.toolId),e.searchUserIds?.length&&t.set("searchUserIds",e.searchUserIds.join(",")),e.includeTotal!==void 0&&t.set("includeTotal",String(e.includeTotal)),e.startedAfter!==void 0&&t.set("startedAfter",e.startedAfter instanceof Date?(0,Wa.toUTCISOString)(e.startedAfter,"run.startedAfter"):e.startedAfter),e.statuses!==void 0?t.set("status",e.statuses.join(",")):e.status!==void 0&&t.set("status",e.status),e.requestSources!==void 0&&t.set("requestSources",e.requestSources.join(",")),e.executionKinds!==void 0&&t.set("executionKinds",e.executionKinds.join(",")),e.userId!==void 0&&t.set("userId",e.userId),e.systemId!==void 0&&t.set("systemId",e.systemId),e.systemIds!==void 0&&t.set("systemIds",e.systemIds.join(","));let a=t.size>0?`?${t.toString()}`:"",i=await this.restRequest("GET",`/v1/runs${a}`,void 0,void 0,{signal:e.signal});return{data:i.data.map(r=>this.mapOpenAPIRunToRun(r)),total:i.total,page:i.page,limit:i.limit,hasMore:i.hasMore}}async getActivityCounts(e){let t=new URLSearchParams;e?.from&&t.set("from",e.from instanceof Date?(0,Wa.toUTCISOString)(e.from,"activity.from"):e.from),e?.to&&t.set("to",e.to instanceof Date?(0,Wa.toUTCISOString)(e.to,"activity.to"):e.to);let a=t.toString();return(await this.restRequest("GET",`/v1/activity/counts${a?`?${a}`:""}`,void 0,void 0,{signal:e?.signal})).counts}async getRun(e){try{let t=await this.restRequest("GET",`/v1/runs/${encodeURIComponent(e)}`);return this.mapOpenAPIRunToRun(t)}catch(t){if(t.message?.includes("404")||t.message?.includes("not found"))return null;throw t}}async getTool(e){try{return await this.restRequest("GET",`/v1/tools/${encodeURIComponent(e)}`)}catch(t){if(t.message?.includes("404")||t.message?.includes("not found")||t.message?.includes("403")||t.message?.includes("not allowed"))return null;throw t}}async getToolState(e){return(await this.restRequest("GET",`/v1/tools/${encodeURIComponent(e)}/state`)).state}async setToolState(e,t){await this.restRequest("PUT",`/v1/tools/${encodeURIComponent(e)}/state`,{state:t})}async deleteToolState(e){return(await this.restRequest("DELETE",`/v1/tools/${encodeURIComponent(e)}/state`)).deletedKeys}async archiveTool(e,t=!0){return this.updateTool(e,{archived:t})}async bulkArchiveTools(e,t=!0){return this.restRequest("POST","/v1/tools/bulk/archive",{ids:e,archived:t})}async bulkDeleteTools(e){return this.restRequest("POST","/v1/tools/bulk/delete",{ids:e})}async listTools(e={}){let t=(0,$a.createListQueryParams)(e);e.includeArchived!==void 0&&t.set("includeArchived",String(e.includeArchived));let a=t.size>0?`?${t.toString()}`:"";return this.restRequest("GET",`/v1/tools${a}`)}async listAllTools(e={}){return(0,$a.listAllPages)((t,a)=>this.listTools({...e,page:t,limit:a}))}async createTool(e,t){return this.restRequest("POST","/v1/tools",{...t,id:e})}async updateTool(e,t){return this.restRequest("PUT",`/v1/tools/${encodeURIComponent(e)}`,t)}async deleteTool(e){try{return await this.restRequest("DELETE",`/v1/tools/${encodeURIComponent(e)}`),!0}catch(t){if(t.message?.includes("404"))return!1;throw t}}async renameTool(e,t){return this.restRequest("POST",`/v1/tools/${encodeURIComponent(e)}/rename`,{newId:t})}async getWorkflow(e){return this.getTool(e)}async archiveWorkflow(e,t=!0){return this.upsertWorkflow(e,{archived:t})}async createWorkflow(e,t){return this.createTool(e,t)}async updateWorkflow(e,t){return this.updateTool(e,t)}async upsertWorkflow(e,t){return await this.getTool(e)?this.updateTool(e,t):this.createTool(e,t)}async deleteWorkflow(e){return this.deleteTool(e)}async renameWorkflow(e,t){return this.renameTool(e,t)}async listSchedules(e={}){let t=(0,$a.createListQueryParams)(e),a=t.size>0?`?${t.toString()}`:"",i=e.toolId?`/v1/tools/${encodeURIComponent(e.toolId)}/schedules${a}`:`/v1/schedules${a}`,r=await this.restRequest("GET",i);return{...r,data:r.data.map(s=>this.mapOpenAPIScheduleToToolSchedule(s))}}async listAllSchedules(e={}){return(0,$a.listAllPages)((t,a)=>this.listSchedules({...e,page:t,limit:a}))}async getToolSchedule(e,t){try{let a=await this.restRequest("GET",`/v1/tools/${encodeURIComponent(e)}/schedules/${encodeURIComponent(t)}`);return this.mapOpenAPIScheduleToToolSchedule(a)}catch(a){if(a.message?.includes("404")||a.message?.includes("not found"))return null;throw a}}async createToolSchedule(e,t){let a=await this.restRequest("POST",`/v1/tools/${encodeURIComponent(e)}/schedules`,{...t,timezone:t.timezone||(0,Kme.getRuntimeTimezone)()});return this.mapOpenAPIScheduleToToolSchedule(a)}async updateToolSchedule(e,t,a){let i=await this.restRequest("PUT",`/v1/tools/${encodeURIComponent(e)}/schedules/${encodeURIComponent(t)}`,a);return this.mapOpenAPIScheduleToToolSchedule(i)}async deleteToolSchedule(e,t){return await this.restRequest("DELETE",`/v1/tools/${encodeURIComponent(e)}/schedules/${encodeURIComponent(t)}`),!0}async bulkSetSchedulesEnabled(e,t){return this.restRequest("POST","/v1/schedules/bulk/enable",{ids:e,enabled:t})}async bulkDeleteSchedules(e){return this.restRequest("POST","/v1/schedules/bulk/delete",{ids:e})}async listCredentials(e={}){let t=(0,$a.createListQueryParams)(e);e.systemId!==void 0&&t.set("systemId",e.systemId);let a=t.size>0?`?${t.toString()}`:"";return this.restRequest("GET",`/v1/credentials${a}`)}async listAllCredentials(e={}){return(0,$a.listAllPages)((t,a)=>this.listCredentials({...e,page:t,limit:a}))}async createCredentials(e){return(await this.restRequest("POST","/v1/credentials",e)).data}async replaceCredentials(e,t){return(await this.restRequest("PUT",`/v1/credentials/${encodeURIComponent(e)}`,{credentials:t})).data}async updateCredentials(e,t){return(await this.restRequest("PATCH",`/v1/credentials/${encodeURIComponent(e)}`,t)).data}async deleteCredentials(e){await this.restRequest("DELETE",`/v1/credentials/${encodeURIComponent(e)}`)}async setDefaultCredentials(e){await this.restRequest("POST",`/v1/credentials/${encodeURIComponent(e)}/default`)}async listSystems(e={}){let t=(0,$a.createListQueryParams)(e),a=t.size>0?`?${t.toString()}`:"";return this.restRequest("GET",`/v1/systems${a}`)}async listAllSystems(e={}){return(0,$a.listAllPages)((t,a)=>this.listSystems({...e,page:t,limit:a}))}async getSystem(e){return(await this.restRequest("GET",`/v1/systems/${encodeURIComponent(e)}`)).data}async createSystem(e){return(await this.restRequest("POST","/v1/systems",e)).data}async updateSystem(e,t){return(await this.restRequest("PATCH",`/v1/systems/${encodeURIComponent(e)}`,t)).data}async deleteSystem(e){return await this.restRequest("DELETE",`/v1/systems/${encodeURIComponent(e)}`),!0}async bulkDeleteSystems(e){return this.restRequest("POST","/v1/systems/bulk/delete",{ids:e})}async createOAuthExchange(e){return(await this.restRequest("POST","/v1/oauth/exchanges",e)).data}async completeOAuthExchange(e,t){return(await this.restRequest("POST",`/v1/oauth/exchanges/${encodeURIComponent(e)}/complete`,t)).data}async searchSystemDocumentation(e,t){return(await this.restRequest("POST",`/v1/systems/${encodeURIComponent(e)}/documentation/search`,{keywords:t})).data}async triggerSystemDocumentationScrapeJob(e,t){return(await this.restRequest("POST",`/v1/systems/${encodeURIComponent(e)}/documentation/scrape`,t)).data}async fetchOpenApiSpec(e,t,a){return(await this.restRequest("POST",`/v1/systems/${encodeURIComponent(e)}/documentation/openapi`,{url:t,link:a?.link})).data}async uploadSystemDocumentationFiles(e,t,a){let i=await this.uploadFiles(t,{process:!0}),r=i.flatMap(s=>s.status==="uploaded"?[s.id]:[]);if(r.length>0)try{await this.restRequest("POST",`/v1/systems/${encodeURIComponent(e)}/documentation/files`,{fileIds:r,link:a?.link!==!1})}catch(s){throw await Promise.all(r.map(n=>this.deleteFileUpload(n).catch(()=>{}))),s}if(!a?.settle){let s=i.filter(n=>n.status==="failed");if(s.length>0)throw new Error(s.map(n=>n.error).join("; "))}return i}async listSystemDocumentationFiles(e,t){let a=new URLSearchParams;t?.length&&a.set("fileIds",t.join(","));let i=a.size>0?`?${a.toString()}`:"";return(await this.restRequest("GET",`/v1/systems/${encodeURIComponent(e)}/documentation/files${i}`)).data}async getSystemDocumentationFileContent(e,t,a){return(await this.restRequest("GET",`/v1/systems/${encodeURIComponent(e)}/documentation/files/${encodeURIComponent(t)}/content?processed=${a.processed}`)).data}async deleteSystemDocumentationFile(e,t){await this.restRequest("DELETE",`/v1/systems/${encodeURIComponent(e)}/documentation/files/${encodeURIComponent(t)}`)}async generateCredentialsLink(e){try{return{success:!0,credentialsUrl:(await this.restRequest("POST","/v1/authenticate",e||{})).data.credentialsUrl}}catch(t){return{success:!1,error:t.message}}}};Rn.SuperglueClient=hv});var cS=y(Ce=>{"use strict";Object.defineProperty(Ce,"__esModule",{value:!0});Ce.UnquotedKeyStrategy=Ce.TripleQuoteStrategy=Ce.TrailingCommaStrategy=Ce.SingleQuoteStrategy=Ce.PythonLiteralStrategy=Ce.CommentStrategy=Ce.ResilientJsonParser=Ce.RepairStrategy=void 0;Ce.parseJsonResilient=Zme;Ce.parseJSON=Xme;Ce.isValidJson=ele;Ce.prettyPrintJson=ole;Ce.minifyJson=tle;var Ht=class{validate(e){try{return JSON.parse(e),!0}catch{return!1}}};Ce.RepairStrategy=Ht;var Kg=class extends Ht{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,(t,a)=>{let i=a.trim();if(i.startsWith("{")&&i.endsWith("}")||i.startsWith("[")&&i.endsWith("]"))try{let s=JSON.parse(i);return JSON.stringify(s)}catch{return`"${a.replace(/\\/g,"\\\\").replace(/"/g,'\\"').replace(/\n/g,"\\n").replace(/\r/g,"\\r").replace(/\t/g,"\\t")}"`}return`"${a.replace(/\\/g,"\\\\").replace(/"/g,'\\"').replace(/\n/g,"\\n").replace(/\r/g,"\\r").replace(/\t/g,"\\t")}"`})}};Ce.TripleQuoteStrategy=Kg;var Zg=class extends Ht{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")}};Ce.PythonLiteralStrategy=Zg;var Xg=class extends Ht{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")}};Ce.TrailingCommaStrategy=Xg;var ep=class extends Ht{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 t=e.replace(/([{,]\s*)'([^']+)'(\s*:)/g,'$1"$2"$3');return t=t.replace(/(:\s*)'([^']+)'(\s*[,}])/g,'$1"$2"$3'),t}};Ce.SingleQuoteStrategy=ep;var op=class extends Ht{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')}};Ce.UnquotedKeyStrategy=op;var tp=class extends Ht{constructor(){super(...arguments),this.name="CommentRemoval",this.description="Removes JavaScript-style comments"}canApply(e){return/\/\/.*$|\/\*[\s\S]*?\*\//m.test(e)}apply(e){let t=e.replace(/\/\/.*$/gm,"");return t=t.replace(/\/\*[\s\S]*?\*\//g,""),t}};Ce.CommentStrategy=tp;var fv=class extends Ht{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(t){let a=t.message||"";return a.includes("control character")||a.includes("Bad control")||a.includes("Unexpected token")&&/[\n\r\t]/.test(e)}}apply(e){let t="",a=!1,i=!1;for(let r=0;r<e.length;r++){let s=e[r],n=r>0?e[r-1]:"";if(i){t+=s,i=!1;continue}if(s==="\\"&&a){t+=s,i=!0;continue}if(s==='"'&&n!=="\\"){a=!a,t+=s;continue}if(a)switch(s){case`
|
|
1593
1595
|
`:t+="\\n";break;case"\r":t+="\\r";break;case" ":t+="\\t";break;case"\b":t+="\\b";break;case"\f":t+="\\f";break;default:let c=s.charCodeAt(0);c<32?t+="\\u"+("0000"+c.toString(16)).slice(-4):t+=s}else t+=s}return t}},bv=class extends Ht{constructor(){super(...arguments),this.name="TrailingCharactersRepair",this.description="Removes trailing characters after valid JSON structure"}canApply(e){let t=e.trim();if(!t.startsWith("{")&&!t.startsWith("["))return!1;let a=0,i=0,r=!1,s=!1;for(let n=0;n<t.length;n++){let c=t[n];if(r)s?s=!1:c==="\\"?s=!0:c==='"'&&(r=!1);else if(c==='"')r=!0;else if(c==="{")a++;else if(c==="}"){if(a--,a===0&&i===0&&n>0&&n<t.length-1)return!0}else if(c==="[")i++;else if(c==="]"&&(i--,i===0&&a===0&&n>0&&n<t.length-1))return!0}return!1}apply(e){let t=e.trim(),a=0,i=0,r=!1,s=!1,n=-1;for(let c=0;c<t.length;c++){let m=t[c];if(r)s?s=!1:m==="\\"?s=!0:m==='"'&&(r=!1);else if(m==='"')r=!0;else if(m==="{")a++;else if(m==="}"){if(a--,a===0&&i===0&&c>0){n=c;break}}else if(m==="[")i++;else if(m==="]"&&(i--,i===0&&a===0&&c>0)){n=c;break}}return n>0&&n<t.length-1?t.substring(0,n+1):e}},Nn=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 Kg,new ep,new fv,new bv,new Zg,new Xg,new op,new tp]}parse(e){let t=Date.now();this.repairLog=[];let a=e instanceof Buffer?e.toString("utf8"):String(e);try{return{success:!0,data:JSON.parse(a),metadata:{parseTime:Date.now()-t,strategiesApplied:[]}}}catch(s){if(!this.options.attemptRepair)return{success:!1,error:`JSON parse error: ${s}`,metadata:{parseTime:Date.now()-t}}}let i=a,r=[];for(let s of this.strategies)if(s.canApply(i)){let n=i;if(i=s.apply(i),n!==i){r.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()-t,strategiesApplied:r}}}catch{}}}try{return{success:!0,data:JSON.parse(i),repairs:this.repairLog,metadata:{parseTime:Date.now()-t,strategiesApplied:r}}}catch(s){let n=this.aggressiveFallback(i);return n.success?{...n,repairs:[...this.repairLog,"Applied aggressive fallback"],metadata:{parseTime:Date.now()-t,strategiesApplied:[...r,"AggressiveFallback"]}}:{success:!1,error:`Failed to parse JSON after applying ${r.length} strategies: ${s}`,repairs:this.repairLog,metadata:{parseTime:Date.now()-t,strategiesApplied:r}}}}aggressiveFallback(e){try{let t=e.indexOf("{"),a=e.indexOf("[");if(t===-1&&a===-1)return{success:!1,error:"No JSON-like structure found"};let i=t===-1?a:a===-1?t:Math.min(t,a),r=e.substring(i);for(let n of this.strategies)n.canApply(r)&&(r=n.apply(r));return{success:!0,data:JSON.parse(r)}}catch(t){return{success:!1,error:`Aggressive fallback failed: ${t}`}}}addStrategy(e){this.strategies.push(e)}removeStrategy(e){this.strategies=this.strategies.filter(t=>t.name!==e)}getStrategies(){return this.strategies.map(e=>e.name)}};Ce.ResilientJsonParser=Nn;var nS=new Nn;function Zme(o,e){return(e?new Nn(e):nS).parse(o)}function Xme(o){let e=nS.parse(o);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 ele(o){try{return JSON.parse(o),!0}catch{return!1}}function ole(o,e=2){return JSON.stringify(o,null,e)}function tle(o){let t=new Nn().parse(o);if(t.success)return JSON.stringify(t.data);throw new Error("Cannot minify invalid JSON")}});var tt=y(U=>{"use strict";var ale=U&&U.__createBinding||(Object.create?(function(o,e,t,a){a===void 0&&(a=t);var i=Object.getOwnPropertyDescriptor(e,t);(!i||("get"in i?!e.__esModule:i.writable||i.configurable))&&(i={enumerable:!0,get:function(){return e[t]}}),Object.defineProperty(o,a,i)}):(function(o,e,t,a){a===void 0&&(a=t),o[a]=e[t]})),J=U&&U.__exportStar||function(o,e){for(var t in o)t!=="default"&&!Object.prototype.hasOwnProperty.call(e,t)&&ale(e,o,t)};Object.defineProperty(U,"__esModule",{value:!0});U.SSELogSubscriptionManager=U.SuperglueHttpError=U.SuperglueClient=void 0;J(g1(),U);J(x1(),U);J(z1(),U);J(j1(),U);J(D1(),U);J(Lc(),U);J(Z1(),U);J(X1(),U);J(e2(),U);J(o2(),U);J(Zf(),U);J(a2(),U);J(i2(),U);J(r2(),U);J(ob(),U);J(c2(),U);J(l2(),U);J(u2(),U);J(g2(),U);J(wl(),U);J(h2(),U);J(f2(),U);J(y2(),U);J(w2(),U);J(ib(),U);J(I2(),U);J(j2(),U);J(Q2(),U);J(S2(),U);J(P2(),U);J(G2(),U);J(yb(),U);J(rI(),U);J(Eb(),U);J(mI(),U);J(gI(),U);J(hI(),U);J(rt(),U);J(Kt(),U);J(fI(),U);J(bI(),U);J(Uu(),U);J(js(),U);J(vu(),U);var mS=sS();Object.defineProperty(U,"SuperglueClient",{enumerable:!0,get:function(){return mS.SuperglueClient}});Object.defineProperty(U,"SuperglueHttpError",{enumerable:!0,get:function(){return mS.SuperglueHttpError}});var ile=jb();Object.defineProperty(U,"SSELogSubscriptionManager",{enumerable:!0,get:function(){return ile.SSELogSubscriptionManager}});J(cS(),U)});var Up=require("commander");var Ro=W(require("fs")),dS=W(require("os")),Ja=W(require("path")),il=W(tt()),lS=new Set(["runner","builder","admin"]),uS={output:{mode:"stdout",directory:".superglue/output"},preset:"admin"};function Ka(o){let e=Ja.join(process.cwd(),".superglue"),t=dS.homedir();if(!t)return e;let a=Ja.join(t,".superglue");return o===!0?e:o===!1?a:Ro.existsSync(Ja.join(e,"config.json"))?e:a}function yv(o){return Ja.join(Ka(o),"config.json")}function ap(o){let e=yv(o);if(!Ro.existsSync(e))return{};try{return JSON.parse(Ro.readFileSync(e,"utf-8"))}catch{return{}}}function Un(o){let e=ap(),t=o.apiKey||(0,il.readProcessEnvironmentValue)("SUPERGLUE_API_KEY")||e.apiKey||"",a=o.endpoint||(0,il.readProcessEnvironmentValue)("SUPERGLUE_API_ENDPOINT")||e.endpoint||"https://api.superglue.cloud",i=(0,il.readProcessEnvironmentValue)("SUPERGLUE_WEB_ENDPOINT")||e.webEndpoint||a.replace(/:3002\b/,":3001").replace(/api\.superglue/,"app.superglue"),r=(0,il.readProcessEnvironmentValue)("SUPERGLUE_CLI_PRESET"),s=r&&lS.has(r)?r:e.preset&&lS.has(e.preset)?e.preset:"admin";return{...uS,...e,apiKey:t,endpoint:a,webEndpoint:i,preset:s,output:{...uS.output,...e.output}}}function ip(o,e){let t=Ka(e);Ro.existsSync(t)||Ro.mkdirSync(t,{recursive:!0}),Ro.writeFileSync(Ja.join(t,"config.json"),JSON.stringify(o,null,2)+`
|
|
1594
|
-
`,{mode:384})}function rp(o,e){let t=Ja.join(Ka(e),"drafts");if(Ro.existsSync(t)||Ro.mkdirSync(t,{recursive:!0}),o.output.mode==="stdout+file"){let a=Ja.resolve(o.output.directory);Ro.existsSync(a)||Ro.mkdirSync(a,{recursive:!0})}}var qv=W(tt());var kv=W(require("readline"));var hS=require("child_process"),fS=require("util");var gS={name:"@superglue/cli",version:"1.1.
|
|
1596
|
+
`,{mode:384})}function rp(o,e){let t=Ja.join(Ka(e),"drafts");if(Ro.existsSync(t)||Ro.mkdirSync(t,{recursive:!0}),o.output.mode==="stdout+file"){let a=Ja.resolve(o.output.directory);Ro.existsSync(a)||Ro.mkdirSync(a,{recursive:!0})}}var qv=W(tt());var kv=W(require("readline"));var hS=require("child_process"),fS=require("util");var gS={name:"@superglue/cli",version:"1.1.96",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 sle=(0,fS.promisify)(hS.exec),xo=gS.version;function pS(o){let e=o.match(/^(\d+)(?:-(.+))?$/);return e?{numeric:parseInt(e[1],10),prerelease:e[2]||null}:{numeric:0,prerelease:o}}function np(o,e){let t=o.split("."),a=e.split("."),i=Math.max(t.length,a.length);for(let r=0;r<i;r++){let s=pS(t[r]||"0"),n=pS(a[r]||"0");if(s.numeric<n.numeric)return-1;if(s.numeric>n.numeric||s.prerelease===null&&n.prerelease!==null)return 1;if(s.prerelease!==null&&n.prerelease===null)return-1;if(s.prerelease!==null&&n.prerelease!==null){if(s.prerelease<n.prerelease)return-1;if(s.prerelease>n.prerelease)return 1}}return 0}async function cp(){try{let o=await fetch("https://registry.npmjs.org/@superglue/cli/latest",{signal:AbortSignal.timeout(5e3)});return o.ok&&(await o.json()).version||null}catch{return null}}var sp=null;function bS(){G()&&(sp=cp())}async function yS(){if(!(!G()||!sp)){try{let o=new Promise(t=>{setTimeout(()=>t(null),2e3).unref()}),e=await Promise.race([sp,o]);e&&np(xo,e)<0&&(console.error(""),console.error(`${h.cyan}${h.bold} Update available: ${xo} \u2192 ${e}${h.reset}`),console.error(`${h.cyan} Run ${h.bold}sg update${h.reset}${h.cyan} to upgrade${h.reset}`),console.error(""))}catch{}sp=null}}async function kS(){let o=await cp();if(!o)return{success:!1,message:"Could not fetch latest version from npm"};if(np(xo,o)>=0)return{success:!0,message:`Already on latest version (${xo})`};try{return await sle("npm install -g @superglue/cli@latest"),{success:!0,message:`Updated from ${xo} to ${o}`}}catch(e){return{success:!1,message:`Update failed: ${e.message}. Try manually: npm install -g @superglue/cli@latest`}}}var G=()=>process.argv.includes("--table")&&process.stdout.isTTY,Et=()=>process.argv.includes("--full"),h={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 AS(o,e){let t=e||o;return`\x1B]8;;${o}\x07${h.underline}${h.cyan}${t}${h.reset}\x1B]8;;\x07`}function wS(){if(!G())return;let o=h.reset,e=h.dim,t="\x1B[47;30m",a=[" #@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@- "," =@@@- @@@@ "," @@@ @@% "," -@@ @@@@= @@@ @@@ @@@@@#@ @@@@@@@ @@@@@@@ @@@@@@ @@@ @@@ @@@ @@@@@@* %@@ "," @@ @@@ *@ @@@ @@@ @@@ :@@ @@@ @@@ -@@ @@@ @% @@@ @@@ @@@ @@* @@# "," #@@ @@@# @@@ @@@ @@@ :@@ @@@ @@@ -@@ @@@ @@@ @@@ @@@ @@* @@ "," @@- @@@@= @@@ @@@ @@@@@@@ @@@@@@ @@@@@@@ @@@ @@% @@@ @@@ @@@ @@@@@. @@."," #@% .@@@@ @@@ @@@ @@@ @@@ @@@ -@@ @@@ @@% @@@ @@@ @@@ @@* @@ "," @@ @ @@@ @@@ @@@ @@@ @@@ @@@ -@@ @@@ @@% @@@ @@@ @@@ @@* *@@ "," -@@ @@@@= @@@@@@ @@@ @@@@@@@ @@@ -@@ @@@@@@ @@@@@@% @@@@@@. @@@@@@* #@@ "," :@@* @@@ "," %@@@ =@@@. "," :@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@% "];console.log(""),a.forEach(i=>{let r=i.search(/\S/),s=i.length-[...i].reverse().join("").search(/\S/)-1;if(r===-1)return console.log(" "+i);let n=i.slice(0,r),c=i.slice(r,s+1).split("").map(l=>l===" "?" ":"\u2588").join(""),m=i.slice(s+1);console.log(` ${n}${t}${c}${o}${m}`)}),console.log(` ${e} CLI v${xo}${o}`),console.log("")}function Ee(o){if(!G())return{stop:()=>{},update:()=>{},log:()=>{}};let e=["\u280B","\u2819","\u2839","\u2838","\u283C","\u2834","\u2826","\u2827","\u2807","\u280F"],t=0,a=o,i=()=>process.stdout.write("\r\x1B[2K"),r=()=>{process.stdout.write(`\r ${h.cyan}${e[t++%e.length]}${h.reset} ${a}`)},s=setInterval(r,80);return{update:n=>{a=n},log:n=>{i(),console.log(` ${h.dim}\u2502${h.reset} ${n}`),r()},stop:n=>{clearInterval(s),i(),n&&console.log(` ${n}`)}}}function O(o){G()?mp(o):console.log(JSON.stringify(o,null,2))}function re(o,e){G()?(console.log(` ${h.green}\u2713${h.reset} ${o}`),e&&mp(e,4)):console.log(JSON.stringify({success:!0,message:o,...e&&typeof e=="object"?e:{data:e}}))}function z(o,e){G()?(console.error(` ${h.red}\u2717${h.reset} ${o}`),e&&mp(e,4)):console.error(JSON.stringify({success:!1,error:o,details:e}))}function vS(o){G()&&console.log(` ${h.yellow}\u26A0${h.reset} ${o}`)}function po(o){G()&&console.log(` ${h.dim}${o}${h.reset}`)}function Za(o){G()&&(console.log(`
|
|
1595
1597
|
${h.bold}${h.cyan}${o}${h.reset}`),console.log(` ${h.dim}${"\u2500".repeat(o.length)}${h.reset}`))}function pa(o,e,t){if(!G()){console.log(JSON.stringify({success:!0,total:t?.total??o.length,items:o}));return}if(o.length===0){console.log(`
|
|
1596
1598
|
${h.dim}0 results${h.reset}
|
|
1597
1599
|
`);return}let a=e||Object.keys(o[0]),i=Et()?1/0:60,r=a.map(l=>Math.min(i,Math.max(l.length,...o.map(u=>String(u[l]??"").replace(/[\n\r]+/g," ").trim().length))));console.log("");let s=a.map((l,u)=>`${h.bold}${h.cyan}${l.toUpperCase().padEnd(r[u])}${h.reset}`).join(" ");console.log(` ${s}`);let n=r.map(l=>`${h.dim}${"\u2500".repeat(l)}${h.reset}`).join(`${h.dim}\u2500\u2500${h.reset}`);console.log(` ${n}`);for(let l of o){let u=a.map((d,g)=>{let p=String(l[d]??"").replace(/[\n\r]+/g," ").trim();if(p.length>i){let A=`\u2026 (${p.length})`;p=p.slice(0,Math.max(0,i-A.length))+`${h.dim}${A}${h.reset}`}return d==="status"?`${{success:h.green,running:h.yellow,failed:h.red,aborted:h.red,error:h.red,pending:h.dim}[p.toLowerCase()]||""}${p.padEnd(r[g])}${h.reset}`:p.padEnd(r[g])}).join(" ");console.log(` ${u}`)}let c=t?.total??o.length,m=c===o.length?`${o.length} result${o.length===1?"":"s"}`:`${o.length} of ${c} result${c===1?"":"s"}`;console.log(`
|