@superglue/cli 1.1.66 → 1.1.67

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.66",
4
+ "version": "1.1.67",
5
5
  "author": {
6
6
  "name": "superglue",
7
7
  "email": "hello@superglue.cloud"
package/dist/cli.js CHANGED
@@ -421,7 +421,7 @@ REQUIRED GCP PERMISSIONS:
421
421
  - BigQuery Data Editor (roles/bigquery.dataEditor) - write access
422
422
  - BigQuery Job User (roles/bigquery.jobUser) - run queries
423
423
 
424
- HEADERS: { "Authorization": "Bearer <<token>>", "Content-Type": "application/json" }`,keywords:["datasets","tables","queries","jobs","projects","schemas","rows","streaming","partitions","clustering","views","routines","models","data warehouse","sql","oauth"]},firebase:{name:"firebase",apiUrl:"https://firestore.googleapis.com",regex:"^.*(firebase|firestore).*$",icon:"firebase",docsUrl:"https://firebase.google.com/docs/reference/firebase-management/rest",openApiUrl:"https://firestore.googleapis.com/$discovery/rest?version=v1",preferredAuthType:"oauth2",oauth:{authUrl:"https://accounts.google.com/o/oauth2/v2/auth",tokenUrl:"https://oauth2.googleapis.com/token",scopes:"https://www.googleapis.com/auth/firebase https://www.googleapis.com/auth/cloud-platform"},keywords:["firestore","realtime database","authentication","cloud functions","storage","hosting","documents","collections","users","projects","apps","query","oauth"]},salesforce:{name:"salesforce",apiUrl:"https://api.salesforce.com",regex:"^.*salesforce.*$",icon:"salesforce",docsUrl:"https://developer.salesforce.com/docs/atlas.en-us.api_rest.meta/api_rest/intro_rest.htm",preferredAuthType:"oauth2",oauth:{authUrl:"https://login.salesforce.com/services/oauth2/authorize",tokenUrl:"https://login.salesforce.com/services/oauth2/token",scopes:"full",grant_type:"authorization_code",client_id:"3MVG9rZjd7MXFdLj8gMo0sojKlWRAgOP9F7nsk3Tec.eesq86nNTvbzDJDcmCW9YRCbteTayd_dP4OCLtISIo"},keywords:["accounts","contacts","leads","opportunities","cases","campaigns","products","price books","quotes","contracts","orders","custom objects","soql","query","search","sobjects","oauth"]},facebook:{name:"facebook",apiUrl:"https://graph.facebook.com",regex:"^.*facebook.*$",icon:"facebook",docsUrl:"https://developers.facebook.com/docs/graph-api",preferredAuthType:"oauth2",oauth:{authUrl:"https://www.facebook.com/v18.0/dialog/oauth",tokenUrl:"https://graph.facebook.com/v18.0/oauth/access_token",scopes:"email public_profile pages_show_list pages_read_engagement pages_manage_metadata pages_read_user_content pages_manage_posts pages_manage_engagement business_management ads_management ads_read catalog_management leads_retrieval"},keywords:["pages","posts","comments","insights","ads","campaigns","audiences","business","catalog","events","groups","photos","videos","live videos","oauth"]},meta_ads:{name:"meta_ads",apiUrl:"https://graph.facebook.com",regex:"^.*(meta[_ .-]?ads|facebook[_ .-]?ads|marketing[_ .-]?api|/act_).*$",icon:"meta",docsUrl:"https://developers.facebook.com/docs/marketing-api/",preferredAuthType:"oauth2",oauth:{authUrl:"https://www.facebook.com/v23.0/dialog/oauth",tokenUrl:"https://graph.facebook.com/v23.0/oauth/access_token",scopes:"ads_read ads_management business_management"},keywords:["meta ads","facebook ads","marketing api","ad accounts","campaigns","adsets","ads","adcreatives","insights","custom audiences","pixels","leadgen forms","product catalogs","spend","reach","oauth"],systemSpecificInstructions:"Ad account IDs are prefixed with act_ in all request paths (e.g. /v23.0/act_<ACCOUNT_ID>/insights, /act_<ACCOUNT_ID>/campaigns) \u2014 the numeric ID alone fails. With Standard Access, ads_read/ads_management only work for users who hold a role on the Meta app (suitable for development); serving arbitrary users requires Advanced Access, which needs business verification and App Review. For unattended server-to-server use, Business Manager system user tokens are the standard approach instead of user OAuth tokens. Graph API versions sunset roughly two years after release \u2014 prefer the latest version in paths rather than copying versions from older examples."},instagram:{name:"instagram",apiUrl:"https://graph.facebook.com/v23.0/",regex:"^.*instagram.*$",icon:"instagram",docsUrl:"https://developers.facebook.com/docs/instagram-platform/",preferredAuthType:"oauth2",oauth:{authUrl:"https://www.facebook.com/v23.0/dialog/oauth",tokenUrl:"https://graph.facebook.com/v23.0/oauth/access_token",scopes:"instagram_basic pages_show_list instagram_content_publish pages_read_engagement instagram_manage_comments instagram_manage_insights instagram_manage_messages business_management"},keywords:["instagram","instagram api","instagram graph api","media","posts","stories","comments","insights","hashtags","mentions","business discovery","content publishing","user media","account info","oauth"],systemSpecificInstructions:"There are two distinct Instagram APIs: this template targets the Instagram API with Facebook Login (host graph.facebook.com), which requires an Instagram professional (Business/Creator) account linked to a Facebook Page; hashtag search and business discovery are only available on this variant. The alternative Instagram API with Instagram Login uses host graph.instagram.com, needs no Facebook Page, and uses different tokens/scopes. The legacy Instagram Basic Display API was shut down in December 2024 and cannot be used."},twitter:{name:"twitter",apiUrl:"https://api.twitter.com",regex:"^https?:\\/\\/(?:[^/]+\\.)*(?:twitter\\.com|x\\.com)(?:[:/?#].*)?$",icon:"x",docsUrl:"https://docs.x.com/x-api/introduction",openApiUrl:"https://api.x.com/2/openapi.json",preferredAuthType:"oauth2",oauth:{authUrl:"https://twitter.com/i/oauth2/authorize",tokenUrl:"https://api.twitter.com/2/oauth2/token",scopes:"tweet.read tweet.write users.read follows.read follows.write offline.access like.read like.write list.read list.write block.read block.write bookmark.read bookmark.write mute.read mute.write"},keywords:["tweets","users","followers","timeline","mentions","retweets","likes","lists","spaces","direct messages","trends","media","polls","oauth"]},linkedin:{name:"linkedin",apiUrl:"https://api.linkedin.com",regex:"^.*linkedin.*$",icon:"/logos/linkedin.svg",docsUrl:"https://learn.microsoft.com/en-us/linkedin/shared/authentication/getting-access",preferredAuthType:"oauth2",oauth:{authUrl:"https://www.linkedin.com/oauth/v2/authorization",tokenUrl:"https://www.linkedin.com/oauth/v2/accessToken",scopes:"r_liteprofile r_emailaddress w_member_social r_fullprofile r_basicprofile rw_company_admin r_1st_connections r_ads r_ads_reporting r_organization_social rw_organization_admin w_organization_social r_events"},keywords:["profiles","connections","companies","shares","posts","articles","jobs","skills","endorsements","recommendations","groups","events","messaging","oauth"]},paypal:{name:"paypal",apiUrl:"https://api.paypal.com",regex:"^.*paypal.*$",icon:"paypal",docsUrl:"https://developer.paypal.com/api/rest",preferredAuthType:"api_key",keywords:["payments","orders","captures","refunds","payouts","invoices","subscriptions","plans","products","transactions","balances","webhooks","checkout","billing","query","search"]},square:{name:"square",apiUrl:"https://connect.squareup.com",regex:"^.*(square|squareup).*$",icon:"square",docsUrl:"https://developer.squareup.com/reference/square",openApiUrl:"https://raw.githubusercontent.com/square/connect-api-specification/refs/heads/master/api.json",preferredAuthType:"oauth2",oauth:{authUrl:"https://connect.squareup.com/oauth2/authorize",tokenUrl:"https://connect.squareup.com/oauth2/token",scopes:"MERCHANT_PROFILE_READ PAYMENTS_READ PAYMENTS_WRITE CUSTOMERS_READ CUSTOMERS_WRITE INVENTORY_READ INVENTORY_WRITE ORDERS_READ ORDERS_WRITE ITEMS_READ ITEMS_WRITE EMPLOYEES_READ EMPLOYEES_WRITE TIMECARDS_READ TIMECARDS_WRITE"},keywords:["payments","customers","orders","catalog","inventory","locations","transactions","refunds","cards","checkout","invoices","subscriptions","terminals","employees","shifts","query","search","oauth"]},adyen:{name:"adyen",apiUrl:"https://checkout-test.adyen.com",regex:"^.*adyen.*$",icon:"adyen",docsUrl:"https://docs.adyen.com/api-explorer",openApiUrl:"https://raw.githubusercontent.com/Adyen/adyen-openapi/main/yaml/CheckoutService-v71.yaml",preferredAuthType:"api_key",keywords:["paymentMethods","sessions","payments","payments.details","cardDetails","recurringContracts","payouts","balanceTransfers","legalEntities","binLookup","storedValueCards","transferRules","terminalManagement","accountHolders","issuers"]},razorpay:{name:"razorpay",apiUrl:"https://api.razorpay.com",regex:"^.*razorpay.*$",icon:"razorpay",docsUrl:"https://razorpay.com/docs/api",preferredAuthType:"api_key",keywords:["payments","orders","customers","refunds","invoices","subscriptions","accounts","fund_accounts","payouts","virtual_accounts","mandates","disputes","settlements","payment_links","bin_lookup"]},plaid:{name:"plaid",apiUrl:"https://production.plaid.com",regex:"^.*plaid.*$",icon:"/logos/plaid.svg",docsUrl:"https://plaid.com/docs/api",openApiUrl:"https://raw.githubusercontent.com/plaid/plaid-openapi/master/2020-09-14.yml",preferredAuthType:"api_key",keywords:["items","accounts","institutions","link_tokens","access_tokens","transactions","auth","identity","assets","liabilities","income","user","processor_tokens","transfer","investments"]},zendesk:{name:"zendesk",apiUrl:"https://api.zendesk.com",regex:"^.*zendesk.*$",icon:"zendesk",docsUrl:"https://developer.zendesk.com/api-reference",openApiUrl:"https://developer.zendesk.com/zendesk/oas.yaml",preferredAuthType:"api_key",oauth:{authUrl:"https://{subdomain}.zendesk.com/oauth/authorizations/new",tokenUrl:"https://{subdomain}.zendesk.com/oauth/tokens",scopes:"read write tickets:read tickets:write users:read users:write organizations:read organizations:write hc:read hc:write chat:read chat:write"},keywords:["tickets","users","organizations","groups","agents","views","macros","triggers","automations","sla","custom fields","tags","satisfaction","help center","api key"]},freshdesk:{name:"freshdesk",apiUrl:"https://{domain}.freshdesk.com/api/v2",regex:"^.*freshdesk.*$",icon:"/logos/freshdesk.svg",docsUrl:"https://developers.freshdesk.com/api",preferredAuthType:"api_key",keywords:["tickets","contacts","agents","companies","groups","forums","solutions","categories","folders","articles","time entries","surveys","satisfaction","sla","escalations","api key"]},freshworks:{name:"freshworks",apiUrl:"https://{domain}.freshservice.com/api/v2",regex:"^.*(freshworks|freshservice).*$",icon:"/logos/freshworks.svg",docsUrl:"https://api.freshservice.com",preferredAuthType:"api_key",keywords:["tickets","requesters","agents","assets","changes","problems","releases","service catalog","service items","departments","locations","products","vendors","contracts","api key"]},servicenow:{name:"servicenow",apiUrl:"https://{instance}.service-now.com/api",regex:"^.*(servicenow|service-now).*$",icon:"servicenow",docsUrl:"https://developer.servicenow.com/dev.do#!/reference/api/latest/rest",preferredAuthType:"api_key",keywords:["incidents","problems","changes","requests","users","groups","cmdb","configuration items","service catalog","knowledge","tasks","approvals","sla","workflows","tables","api key"]},helpscout:{name:"helpscout",apiUrl:"https://api.helpscout.net",regex:"^.*helpscout.*$",icon:"helpscout",docsUrl:"https://developer.helpscout.com/mailbox-api",preferredAuthType:"api_key",keywords:["conversations","customers","mailboxes","threads","tags","teams","users","reports","satisfaction","ratings","workflows","saved replies","docs","beacon","api key"]},dropbox:{name:"dropbox",apiUrl:"https://api.dropboxapi.com",regex:"^.*dropbox.*$",icon:"dropbox",docsUrl:"https://www.dropbox.com/developers/documentation/http/documentation",preferredAuthType:"oauth2",oauth:{authUrl:"https://www.dropbox.com/oauth2/authorize",tokenUrl:"https://api.dropboxapi.com/oauth2/token",scopes:"files.metadata.read files.metadata.write files.content.read files.content.write sharing.read sharing.write account_info.read account_info.write"},keywords:["files","folders","upload","download","sharing","links","metadata","search","sync","paper","users","teams","move","copy","delete","oauth"]},mailchimp:{name:"mailchimp",apiUrl:"https://api.mailchimp.com",regex:"^.*mailchimp.*$",icon:"mailchimp",docsUrl:"https://mailchimp.com/developer/marketing/api",openApiUrl:"https://api.mailchimp.com/schema/3.0/Swagger.json",preferredAuthType:"api_key",oauth:{authUrl:"https://login.mailchimp.com/oauth2/authorize",tokenUrl:"https://login.mailchimp.com/oauth2/token",scopes:"audiences:read audiences:write automations:read automations:write campaigns:read campaigns:write conversations:read conversations:write ecommerce:read ecommerce:write files:read files:write lists:read lists:write reports:read templates:read templates:write"},keywords:["lists","campaigns","templates","audiences","members","segments","tags","automations","reports","folders","merge fields","activities","ecommerce","batch","query","api key"]},jira:{name:"jira",apiUrl:"https://{your-domain}.atlassian.net/rest/api",regex:"^.*(jira|atlassian).*$",icon:"jira",docsUrl:"https://developer.atlassian.com/cloud/jira/platform/rest/v3",openApiUrl:"https://developer.atlassian.com/cloud/jira/platform/swagger-v3.json",preferredAuthType:"oauth2",oauth:{authUrl:"https://auth.atlassian.com/authorize",tokenUrl:"https://auth.atlassian.com/oauth/token",scopes:"read:jira-work write:jira-work read:jira-user write:jira-user read:jira-work-management write:jira-work-management read:servicedesk-request write:servicedesk-request manage:jira-project manage:jira-configuration manage:jira-data-provider offline_access",client_id:"Az7iTb4uWYSv5N4p295PulP8oO2B3PjK"},systemSpecificInstructions:"You need a cloud id in the url to connect to the Jira instance. Fetch it from available-resources and store it in the system. The /rest/api/3/search endpoint has been deprecated - Use GET /rest/api/3/search/jql with query parameter 'jql' for searching issues. MUST specify a project in the JQL query. Example: GET /rest/api/3/search/jql?jql=project=KAN&maxResults=100. The jql parameter accepts JQL queries like 'project=KEY', 'assignee=currentUser()', 'order by created DESC'. Always URL-encode the jql parameter value.",keywords:["issues","projects","boards","sprints","epics","users","workflows","fields","components","versions","priorities","statuses","comments","attachments","jql","query","search","oauth"]},confluence:{name:"confluence",apiUrl:"https://{your-domain}.atlassian.net/wiki/api/v2",regex:"^.*(confluence|atlassian).*$",icon:"confluence",docsUrl:"https://developer.atlassian.com/cloud/confluence/rest/v2",openApiUrl:"https://dac-static.atlassian.com/cloud/confluence/openapi-v2.v3.json",preferredAuthType:"oauth2",oauth:{authUrl:"https://auth.atlassian.com/authorize",tokenUrl:"https://auth.atlassian.com/oauth/token",scopes:"read:confluence-content.all write:confluence-content read:confluence-space.summary write:confluence-space read:confluence-props write:confluence-props read:confluence-user write:confluence-user read:confluence-groups write:confluence-groups delete:confluence-content delete:confluence-space offline_access",client_id:"Az7iTb4uWYSv5N4p295PulP8oO2B3PjK"},systemSpecificInstructions:"Use the Confluence Cloud REST API v2 under /wiki/api/v2 instead of legacy /wiki/rest/api v1 endpoints when a v2 equivalent exists. With OAuth 2.0, fetch the cloud id from GET https://api.atlassian.com/oauth/token/accessible-resources and use https://api.atlassian.com/ex/confluence/{cloudId}/wiki/api/v2 as the system base URL. V2 list endpoints use cursor-based pagination; follow the Link header or _links.next URL until no next page remains.",keywords:["spaces","pages","content","attachments","comments","labels","templates","blueprints","macros","restrictions","versions","ancestors","descendants","children","oauth"]},quickbooks:{name:"quickbooks",apiUrl:"https://quickbooks.api.intuit.com",regex:"^.*(quickbooks|intuit).*$",icon:"quickbooks",docsUrl:"https://developer.intuit.com/app/developer/qbo/docs/api/accounting/most-commonly-used/account",preferredAuthType:"oauth2",oauth:{authUrl:"https://appcenter.intuit.com/connect/oauth2",tokenUrl:"https://oauth.platform.intuit.com/oauth2/v1/tokens/bearer",scopes:"com.intuit.quickbooks.accounting com.intuit.quickbooks.payment com.intuit.quickbooks.payroll com.intuit.quickbooks.payroll.timetracking com.intuit.quickbooks.payroll.benefits openid profile email phone address"},keywords:["accounts","invoices","customers","vendors","bills","payments","estimates","purchase orders","sales receipts","credit memos","journal entries","items","tax rates","employees","reports","oauth"]},ramp:{name:"ramp",apiUrl:"https://api.ramp.com/developer/v1",regex:"(^|.*\\b)(ramp|ramp\\.com|api\\.ramp\\.com|demo-api\\.ramp\\.com)(\\b.*|$)",icon:"ramp",docsUrl:"https://docs.ramp.com/developer-api/v1",openApiUrl:"https://docs.ramp.com/openapi/developer-api.json",preferredAuthType:"oauth2",oauth:{tokenUrl:"https://api.ramp.com/developer/v1/token",scopes:"transactions:read cards:read users:read business:read bills:read reimbursements:read vendors:read accounting:read receipts:read departments:read locations:read limits:read spend_programs:read statements:read transfers:read bank_accounts:read",grant_type:"client_credentials",tokenAuthMethod:"basic_auth",tokenContentType:"form"},keywords:["transactions","cards","users","business","bills","reimbursements","vendors","accounting","receipts","departments","locations","limits","spend_programs","statements","transfers","bank_accounts"],systemSpecificInstructions:`Ramp has separate production and sandbox API hosts. Production calls use https://api.ramp.com/developer/v1; sandbox calls use https://demo-api.ramp.com/developer/v1. Do not use the Ramp web app hosts (app.ramp.com or demo.ramp.com) for API calls.
424
+ HEADERS: { "Authorization": "Bearer <<token>>", "Content-Type": "application/json" }`,keywords:["datasets","tables","queries","jobs","projects","schemas","rows","streaming","partitions","clustering","views","routines","models","data warehouse","sql","oauth"]},firebase:{name:"firebase",apiUrl:"https://firestore.googleapis.com",regex:"^.*(firebase|firestore).*$",icon:"firebase",docsUrl:"https://firebase.google.com/docs/reference/firebase-management/rest",openApiUrl:"https://firestore.googleapis.com/$discovery/rest?version=v1",preferredAuthType:"oauth2",oauth:{authUrl:"https://accounts.google.com/o/oauth2/v2/auth",tokenUrl:"https://oauth2.googleapis.com/token",scopes:"https://www.googleapis.com/auth/firebase https://www.googleapis.com/auth/cloud-platform"},keywords:["firestore","realtime database","authentication","cloud functions","storage","hosting","documents","collections","users","projects","apps","query","oauth"]},salesforce:{name:"salesforce",apiUrl:"https://api.salesforce.com",regex:"^.*salesforce.*$",icon:"salesforce",docsUrl:"https://developer.salesforce.com/docs/atlas.en-us.api_rest.meta/api_rest/intro_rest.htm",preferredAuthType:"oauth2",oauth:{authUrl:"https://login.salesforce.com/services/oauth2/authorize",tokenUrl:"https://login.salesforce.com/services/oauth2/token",scopes:"full",grant_type:"authorization_code",client_id:"3MVG9rZjd7MXFdLj8gMo0sojKlWRAgOP9F7nsk3Tec.eesq86nNTvbzDJDcmCW9YRCbteTayd_dP4OCLtISIo"},keywords:["accounts","contacts","leads","opportunities","cases","campaigns","products","price books","quotes","contracts","orders","custom objects","soql","query","search","sobjects","oauth"]},facebook:{name:"facebook",apiUrl:"https://graph.facebook.com",regex:"^.*facebook.*$",icon:"facebook",docsUrl:"https://developers.facebook.com/docs/graph-api",preferredAuthType:"oauth2",oauth:{authUrl:"https://www.facebook.com/v18.0/dialog/oauth",tokenUrl:"https://graph.facebook.com/v18.0/oauth/access_token",scopes:"email public_profile pages_show_list pages_read_engagement pages_manage_metadata pages_read_user_content pages_manage_posts pages_manage_engagement business_management ads_management ads_read catalog_management leads_retrieval"},keywords:["pages","posts","comments","insights","ads","campaigns","audiences","business","catalog","events","groups","photos","videos","live videos","oauth"]},meta_ads:{name:"meta_ads",apiUrl:"https://graph.facebook.com",regex:"^.*(meta[_ .-]?ads|facebook[_ .-]?ads|marketing[_ .-]?api|/act_).*$",icon:"meta",docsUrl:"https://developers.facebook.com/docs/marketing-api/",preferredAuthType:"oauth2",oauth:{authUrl:"https://www.facebook.com/v23.0/dialog/oauth",tokenUrl:"https://graph.facebook.com/v23.0/oauth/access_token",scopes:"ads_read ads_management business_management"},keywords:["meta ads","facebook ads","marketing api","ad accounts","campaigns","adsets","ads","adcreatives","insights","custom audiences","pixels","leadgen forms","product catalogs","spend","reach","oauth"],systemSpecificInstructions:"Ad account IDs are prefixed with act_ in all request paths (e.g. /v23.0/act_<ACCOUNT_ID>/insights, /act_<ACCOUNT_ID>/campaigns) \u2014 the numeric ID alone fails. With Standard Access, ads_read/ads_management only work for users who hold a role on the Meta app (suitable for development); serving arbitrary users requires Advanced Access, which needs business verification and App Review. For unattended server-to-server use, Business Manager system user tokens are the standard approach instead of user OAuth tokens. Graph API versions sunset roughly two years after release \u2014 prefer the latest version in paths rather than copying versions from older examples."},instagram:{name:"instagram",apiUrl:"https://graph.facebook.com/v23.0/",regex:"^.*instagram.*$",icon:"instagram",docsUrl:"https://developers.facebook.com/docs/instagram-platform/",preferredAuthType:"oauth2",oauth:{authUrl:"https://www.facebook.com/v23.0/dialog/oauth",tokenUrl:"https://graph.facebook.com/v23.0/oauth/access_token",scopes:"instagram_basic pages_show_list instagram_content_publish pages_read_engagement instagram_manage_comments instagram_manage_insights instagram_manage_messages business_management"},keywords:["instagram","instagram api","instagram graph api","media","posts","stories","comments","insights","hashtags","mentions","business discovery","content publishing","user media","account info","oauth"],systemSpecificInstructions:"There are two distinct Instagram APIs: this template targets the Instagram API with Facebook Login (host graph.facebook.com), which requires an Instagram professional (Business/Creator) account linked to a Facebook Page; hashtag search and business discovery are only available on this variant. The alternative Instagram API with Instagram Login uses host graph.instagram.com, needs no Facebook Page, and uses different tokens/scopes. The legacy Instagram Basic Display API was shut down in December 2024 and cannot be used."},twitter:{name:"twitter",apiUrl:"https://api.twitter.com",regex:"^https?:\\/\\/(?:[^/]+\\.)*(?:twitter\\.com|x\\.com)(?:[:/?#].*)?$",icon:"x",docsUrl:"https://docs.x.com/x-api/introduction",openApiUrl:"https://api.x.com/2/openapi.json",preferredAuthType:"oauth2",oauth:{authUrl:"https://twitter.com/i/oauth2/authorize",tokenUrl:"https://api.twitter.com/2/oauth2/token",scopes:"tweet.read tweet.write users.read follows.read follows.write offline.access like.read like.write list.read list.write block.read block.write bookmark.read bookmark.write mute.read mute.write"},keywords:["tweets","users","followers","timeline","mentions","retweets","likes","lists","spaces","direct messages","trends","media","polls","oauth"]},linkedin:{name:"linkedin",apiUrl:"https://api.linkedin.com",regex:"^.*linkedin.*$",icon:"/logos/linkedin.svg",docsUrl:"https://learn.microsoft.com/en-us/linkedin/shared/authentication/getting-access",preferredAuthType:"oauth2",oauth:{authUrl:"https://www.linkedin.com/oauth/v2/authorization",tokenUrl:"https://www.linkedin.com/oauth/v2/accessToken",scopes:"r_liteprofile r_emailaddress w_member_social r_fullprofile r_basicprofile rw_company_admin r_1st_connections r_ads r_ads_reporting r_organization_social rw_organization_admin w_organization_social r_events"},keywords:["profiles","connections","companies","shares","posts","articles","jobs","skills","endorsements","recommendations","groups","events","messaging","oauth"]},paypal:{name:"paypal",apiUrl:"https://api.paypal.com",regex:"^.*paypal.*$",icon:"paypal",docsUrl:"https://developer.paypal.com/api/rest",preferredAuthType:"api_key",keywords:["payments","orders","captures","refunds","payouts","invoices","subscriptions","plans","products","transactions","balances","webhooks","checkout","billing","query","search"]},square:{name:"square",apiUrl:"https://connect.squareup.com",regex:"^.*(square|squareup).*$",icon:"square",docsUrl:"https://developer.squareup.com/reference/square",openApiUrl:"https://raw.githubusercontent.com/square/connect-api-specification/refs/heads/master/api.json",preferredAuthType:"oauth2",oauth:{authUrl:"https://connect.squareup.com/oauth2/authorize",tokenUrl:"https://connect.squareup.com/oauth2/token",scopes:"MERCHANT_PROFILE_READ PAYMENTS_READ PAYMENTS_WRITE CUSTOMERS_READ CUSTOMERS_WRITE INVENTORY_READ INVENTORY_WRITE ORDERS_READ ORDERS_WRITE ITEMS_READ ITEMS_WRITE EMPLOYEES_READ EMPLOYEES_WRITE TIMECARDS_READ TIMECARDS_WRITE"},keywords:["payments","customers","orders","catalog","inventory","locations","transactions","refunds","cards","checkout","invoices","subscriptions","terminals","employees","shifts","query","search","oauth"]},adyen:{name:"adyen",apiUrl:"https://checkout-test.adyen.com",regex:"^.*adyen.*$",icon:"adyen",docsUrl:"https://docs.adyen.com/api-explorer",openApiUrl:"https://raw.githubusercontent.com/Adyen/adyen-openapi/main/yaml/CheckoutService-v71.yaml",preferredAuthType:"api_key",keywords:["paymentMethods","sessions","payments","payments.details","cardDetails","recurringContracts","payouts","balanceTransfers","legalEntities","binLookup","storedValueCards","transferRules","terminalManagement","accountHolders","issuers"]},razorpay:{name:"razorpay",apiUrl:"https://api.razorpay.com",regex:"^.*razorpay.*$",icon:"razorpay",docsUrl:"https://razorpay.com/docs/api",preferredAuthType:"api_key",keywords:["payments","orders","customers","refunds","invoices","subscriptions","accounts","fund_accounts","payouts","virtual_accounts","mandates","disputes","settlements","payment_links","bin_lookup"]},plaid:{name:"plaid",apiUrl:"https://production.plaid.com",regex:"^.*plaid.*$",icon:"/logos/plaid.svg",docsUrl:"https://plaid.com/docs/api",openApiUrl:"https://raw.githubusercontent.com/plaid/plaid-openapi/master/2020-09-14.yml",preferredAuthType:"api_key",keywords:["items","accounts","institutions","link_tokens","access_tokens","transactions","auth","identity","assets","liabilities","income","user","processor_tokens","transfer","investments"]},zendesk:{name:"zendesk",apiUrl:"https://api.zendesk.com",regex:"^.*zendesk.*$",icon:"zendesk",docsUrl:"https://developer.zendesk.com/api-reference",openApiUrl:"https://developer.zendesk.com/zendesk/oas.yaml",preferredAuthType:"api_key",oauth:{authUrl:"https://{subdomain}.zendesk.com/oauth/authorizations/new",tokenUrl:"https://{subdomain}.zendesk.com/oauth/tokens",scopes:"read write tickets:read tickets:write users:read users:write organizations:read organizations:write hc:read hc:write chat:read chat:write"},keywords:["tickets","users","organizations","groups","agents","views","macros","triggers","automations","sla","custom fields","tags","satisfaction","help center","api key"]},freshdesk:{name:"freshdesk",apiUrl:"https://{domain}.freshdesk.com/api/v2",regex:"^.*freshdesk.*$",icon:"/logos/freshdesk.svg",docsUrl:"https://developers.freshdesk.com/api",preferredAuthType:"api_key",keywords:["tickets","contacts","agents","companies","groups","forums","solutions","categories","folders","articles","time entries","surveys","satisfaction","sla","escalations","api key"]},freshworks:{name:"freshworks",apiUrl:"https://{domain}.freshservice.com/api/v2",regex:"^.*(freshworks|freshservice).*$",icon:"/logos/freshworks.svg",docsUrl:"https://api.freshservice.com",preferredAuthType:"api_key",keywords:["tickets","requesters","agents","assets","changes","problems","releases","service catalog","service items","departments","locations","products","vendors","contracts","api key"]},servicenow:{name:"servicenow",apiUrl:"https://{instance}.service-now.com/api",regex:"^.*(servicenow|service-now).*$",icon:"servicenow",docsUrl:"https://developer.servicenow.com/dev.do#!/reference/api/latest/rest",preferredAuthType:"api_key",keywords:["incidents","problems","changes","requests","users","groups","cmdb","configuration items","service catalog","knowledge","tasks","approvals","sla","workflows","tables","api key"]},helpscout:{name:"helpscout",apiUrl:"https://api.helpscout.net",regex:"^.*helpscout.*$",icon:"helpscout",docsUrl:"https://developer.helpscout.com/mailbox-api",preferredAuthType:"api_key",keywords:["conversations","customers","mailboxes","threads","tags","teams","users","reports","satisfaction","ratings","workflows","saved replies","docs","beacon","api key"]},box:{name:"box",apiUrl:"https://api.box.com/2.0",regex:"^https?:\\/\\/(?:[^/]+\\.)*box\\.com(?:[:/?#].*)?$",icon:"box",docsUrl:"https://developer.box.com/reference/",preferredAuthType:"oauth2",oauth:{authUrl:"https://account.box.com/api/oauth2/authorize",tokenUrl:"https://api.box.com/oauth2/token",scopes:"root_readwrite",client_id:"m7zi0ai4amo32eg0ao8mpr6rx0uzjell"},systemSpecificInstructions:"superglue provides a managed Box OAuth app; users connect with their Box login and never need to create a Box app or supply a client ID or secret. File uploads go to https://upload.box.com/api/2.0, not the main API host. If authorization fails with an app-not-authorized error, the Box enterprise blocks unpublished apps; a Box admin must enable the app in Admin Console > Apps > Custom Apps Manager using the client ID.",keywords:["files","folders","upload","download","sharing","links","metadata","search","collaborations","comments","tasks","enterprise","content","oauth"]},dropbox:{name:"dropbox",apiUrl:"https://api.dropboxapi.com",regex:"^.*dropbox.*$",icon:"dropbox",docsUrl:"https://www.dropbox.com/developers/documentation/http/documentation",preferredAuthType:"oauth2",oauth:{authUrl:"https://www.dropbox.com/oauth2/authorize",tokenUrl:"https://api.dropboxapi.com/oauth2/token",scopes:"files.metadata.read files.metadata.write files.content.read files.content.write sharing.read sharing.write account_info.read account_info.write"},keywords:["files","folders","upload","download","sharing","links","metadata","search","sync","paper","users","teams","move","copy","delete","oauth"]},mailchimp:{name:"mailchimp",apiUrl:"https://api.mailchimp.com",regex:"^.*mailchimp.*$",icon:"mailchimp",docsUrl:"https://mailchimp.com/developer/marketing/api",openApiUrl:"https://api.mailchimp.com/schema/3.0/Swagger.json",preferredAuthType:"api_key",oauth:{authUrl:"https://login.mailchimp.com/oauth2/authorize",tokenUrl:"https://login.mailchimp.com/oauth2/token",scopes:"audiences:read audiences:write automations:read automations:write campaigns:read campaigns:write conversations:read conversations:write ecommerce:read ecommerce:write files:read files:write lists:read lists:write reports:read templates:read templates:write"},keywords:["lists","campaigns","templates","audiences","members","segments","tags","automations","reports","folders","merge fields","activities","ecommerce","batch","query","api key"]},jira:{name:"jira",apiUrl:"https://{your-domain}.atlassian.net/rest/api",regex:"^.*(jira|atlassian).*$",icon:"jira",docsUrl:"https://developer.atlassian.com/cloud/jira/platform/rest/v3",openApiUrl:"https://developer.atlassian.com/cloud/jira/platform/swagger-v3.json",preferredAuthType:"oauth2",oauth:{authUrl:"https://auth.atlassian.com/authorize",tokenUrl:"https://auth.atlassian.com/oauth/token",scopes:"read:jira-work write:jira-work read:jira-user write:jira-user read:jira-work-management write:jira-work-management read:servicedesk-request write:servicedesk-request manage:jira-project manage:jira-configuration manage:jira-data-provider offline_access",client_id:"Az7iTb4uWYSv5N4p295PulP8oO2B3PjK"},systemSpecificInstructions:"You need a cloud id in the url to connect to the Jira instance. Fetch it from available-resources and store it in the system. The /rest/api/3/search endpoint has been deprecated - Use GET /rest/api/3/search/jql with query parameter 'jql' for searching issues. MUST specify a project in the JQL query. Example: GET /rest/api/3/search/jql?jql=project=KAN&maxResults=100. The jql parameter accepts JQL queries like 'project=KEY', 'assignee=currentUser()', 'order by created DESC'. Always URL-encode the jql parameter value.",keywords:["issues","projects","boards","sprints","epics","users","workflows","fields","components","versions","priorities","statuses","comments","attachments","jql","query","search","oauth"]},confluence:{name:"confluence",apiUrl:"https://{your-domain}.atlassian.net/wiki/api/v2",regex:"^.*(confluence|atlassian).*$",icon:"confluence",docsUrl:"https://developer.atlassian.com/cloud/confluence/rest/v2",openApiUrl:"https://dac-static.atlassian.com/cloud/confluence/openapi-v2.v3.json",preferredAuthType:"oauth2",oauth:{authUrl:"https://auth.atlassian.com/authorize",tokenUrl:"https://auth.atlassian.com/oauth/token",scopes:"read:confluence-content.all write:confluence-content read:confluence-space.summary write:confluence-space read:confluence-props write:confluence-props read:confluence-user write:confluence-user read:confluence-groups write:confluence-groups delete:confluence-content delete:confluence-space offline_access",client_id:"Az7iTb4uWYSv5N4p295PulP8oO2B3PjK"},systemSpecificInstructions:"Use the Confluence Cloud REST API v2 under /wiki/api/v2 instead of legacy /wiki/rest/api v1 endpoints when a v2 equivalent exists. With OAuth 2.0, fetch the cloud id from GET https://api.atlassian.com/oauth/token/accessible-resources and use https://api.atlassian.com/ex/confluence/{cloudId}/wiki/api/v2 as the system base URL. V2 list endpoints use cursor-based pagination; follow the Link header or _links.next URL until no next page remains.",keywords:["spaces","pages","content","attachments","comments","labels","templates","blueprints","macros","restrictions","versions","ancestors","descendants","children","oauth"]},quickbooks:{name:"quickbooks",apiUrl:"https://quickbooks.api.intuit.com",regex:"^.*(quickbooks|intuit).*$",icon:"quickbooks",docsUrl:"https://developer.intuit.com/app/developer/qbo/docs/api/accounting/most-commonly-used/account",preferredAuthType:"oauth2",oauth:{authUrl:"https://appcenter.intuit.com/connect/oauth2",tokenUrl:"https://oauth.platform.intuit.com/oauth2/v1/tokens/bearer",scopes:"com.intuit.quickbooks.accounting com.intuit.quickbooks.payment com.intuit.quickbooks.payroll com.intuit.quickbooks.payroll.timetracking com.intuit.quickbooks.payroll.benefits openid profile email phone address"},keywords:["accounts","invoices","customers","vendors","bills","payments","estimates","purchase orders","sales receipts","credit memos","journal entries","items","tax rates","employees","reports","oauth"]},ramp:{name:"ramp",apiUrl:"https://api.ramp.com/developer/v1",regex:"(^|.*\\b)(ramp|ramp\\.com|api\\.ramp\\.com|demo-api\\.ramp\\.com)(\\b.*|$)",icon:"ramp",docsUrl:"https://docs.ramp.com/developer-api/v1",openApiUrl:"https://docs.ramp.com/openapi/developer-api.json",preferredAuthType:"oauth2",oauth:{tokenUrl:"https://api.ramp.com/developer/v1/token",scopes:"transactions:read cards:read users:read business:read bills:read reimbursements:read vendors:read accounting:read receipts:read departments:read locations:read limits:read spend_programs:read statements:read transfers:read bank_accounts:read",grant_type:"client_credentials",tokenAuthMethod:"basic_auth",tokenContentType:"form"},keywords:["transactions","cards","users","business","bills","reimbursements","vendors","accounting","receipts","departments","locations","limits","spend_programs","statements","transfers","bank_accounts"],systemSpecificInstructions:`Ramp has separate production and sandbox API hosts. Production calls use https://api.ramp.com/developer/v1; sandbox calls use https://demo-api.ramp.com/developer/v1. Do not use the Ramp web app hosts (app.ramp.com or demo.ramp.com) for API calls.
425
425
 
426
426
  Create the developer app from the Ramp dashboard's Developer area with an Admin or Business Owner account, enable the Client Credentials grant for internal server-to-server integrations, configure only the required scopes, and copy the client ID and client secret. Sandbox access is not self-serve; the customer must request a sandbox from Ramp, and sandbox credentials do not work in production.
427
427
 
@@ -1410,7 +1410,7 @@ ${s}`;break;case"retry":q5(s)&&(t[i]=s);break;case"id":E5(s)&&(t[i]=s);break;cas
1410
1410
  `);o.stack=t?`${t}
1411
1411
  ${s}`:i.stack}Q.exports.fetch=function(e,t=void 0){return Kce(e,t).catch(a=>{throw U5?F5(a,U5):a&&typeof a=="object"&&Error.captureStackTrace(a,Q.exports.fetch),a})};Q.exports.Headers=Vs().Headers;Q.exports.Response=Om().Response;Q.exports.Request=yn().Request;Q.exports.FormData=dd().FormData;var{setGlobalOrigin:Zce,getGlobalOrigin:Xce}=vy();Q.exports.setGlobalOrigin=Zce;Q.exports.getGlobalOrigin=Xce;var{CacheStorage:eme}=x9(),{kConstruct:ome}=de();Q.exports.caches=new eme(ome);var{deleteCookie:tme,getCookies:ame,getSetCookies:ime,setCookie:sme,parseCookie:rme}=T9();Q.exports.deleteCookie=tme;Q.exports.getCookies=ame;Q.exports.getSetCookies=ime;Q.exports.setCookie=sme;Q.exports.parseCookie=rme;var{parseMIMEType:nme,serializeAMimeType:cme}=ft();Q.exports.parseMIMEType=nme;Q.exports.serializeAMimeType=cme;var{CloseEvent:mme,ErrorEvent:lme,MessageEvent:ume}=Qg(),{WebSocket:dme,ping:gme}=p5();Q.exports.WebSocket=dme;Q.exports.CloseEvent=mme;Q.exports.ErrorEvent=lme;Q.exports.MessageEvent=ume;Q.exports.ping=gme;Q.exports.WebSocketStream=v5().WebSocketStream;Q.exports.WebSocketError=Zw().WebSocketError;Q.exports.request=Zm(jn.request);Q.exports.stream=Zm(jn.stream);Q.exports.pipeline=Zm(jn.pipeline);Q.exports.connect=Zm(jn.connect);Q.exports.upgrade=Zm(jn.upgrade);Q.exports.MockClient=_ce;Q.exports.MockCallHistory=Oce;Q.exports.MockCallHistoryLog=Fce;Q.exports.MockPool=Pce;Q.exports.MockAgent=Lce;Q.exports.SnapshotAgent=Hce;Q.exports.mockErrors=Yce;var{EventSource:pme}=N5();Q.exports.EventSource=pme;function hme(){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=hme});var P5=y(Qn=>{"use strict";Object.defineProperty(Qn,"__esModule",{value:!0});Qn.SuperglueClient=Qn.SuperglueHttpError=void 0;var Bn=it(),Ga=Vf(),fme=yb(),bme=oI(),yme=Jt(),Va=Ir(),kme=ku(),el=14400*1e3,Xm;if(typeof globalThis.process<"u"&&globalThis.process.versions?.node)try{let{Agent:o}=L5();Xm=new o({headersTimeout:el,bodyTimeout:el})}catch{}var Yg=class extends Error{constructor(e,t,a,i){super(e),this.status=t,this.code=a,this.details=i,this.name="SuperglueHttpError"}};Qn.SuperglueHttpError=Yg;var iv=class{constructor({apiKey:e,apiEndpoint:t,onInfrastructureError:a,sseTokenProvider:i,tokenProvider:s}){if(!e&&!s)throw new Error("SuperglueClient requires either apiKey or tokenProvider");this.tokenProvider=s??(async()=>e),this.apiEndpoint=t??"https://api.superglue.cloud",this.sseManager=new fme.SSELogSubscriptionManager(this.apiEndpoint,i??this.tokenProvider),this.onInfrastructureError=a}async getApiKey(){return this.tokenProvider()}isInfrastructureError(e){return(0,yme.isAbortError)(e)?!1:!!(e instanceof TypeError&&e.message.toLowerCase().includes("fetch")||e instanceof Error&&e.name==="TimeoutError")}async restRequest(e,t,a,i,s){let n=await(await this.restResponse({method:e,path:t,body:a,extraHeaders:i,requestInit:s})).text();if(n)return JSON.parse(n)}async restResponse({method:e,path:t,body:a,extraHeaders:i,requestInit:s}){let r=`${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(r,{...s,method:e,headers:l,body:n?c?a:JSON.stringify(a):void 0,signal:s?.signal??AbortSignal.timeout(el),...Xm?{dispatcher:Xm}:{}})}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)})),s=(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(s.length!==a.length)throw await Promise.all(s.map(l=>this.deleteFileUpload(l.id).catch(()=>{}))),new Error("Upload response did not match the selected files");let r=await Promise.allSettled(s.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(el,l.expiresIn*1e3))});if(!g.ok)throw new Error(`Upload failed for ${d.fileName}: ${g.status} ${g.statusText}`);return l.id})),n=r.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[s.findIndex(d=>d.id===u)]?.fileName||u,contentLength:a[s.findIndex(d=>d.id===u)]?.contentLength||0,status:"failed",error:l instanceof Error?l.message:String(l)}]))}let m=s.map((l,u)=>{let d=r[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,s;try{let r=JSON.parse(t);r&&typeof r=="object"&&!Array.isArray(r)&&(s=r),typeof r?.code=="string"&&(i=r.code);let n=r.error;typeof n=="string"?a=n:n&&typeof n=="object"&&(a=n.message||JSON.stringify(n))}catch{}return new Yg(a,e.status,i,s)}async streamRequest(e,t,a){let i=e.includes("?")?"&":"?",s=`${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(s,{method:"POST",headers:n,body:JSON.stringify(t),signal:a??AbortSignal.timeout(el),...Xm?{dispatcher:Xm}:{}})}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,bme.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(s=>({...s}))||[],...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:s,options:r,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:s,options:r,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:s,stepResults:r,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:s,stepResults:r,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:s,status:r,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:s,status:r,error:n,startedAt:(0,Va.toUTCISOString)(c,"run.startedAt"),completedAt:(0,Va.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:Bn.RunStatus.RUNNING,success:Bn.RunStatus.SUCCESS,failed:Bn.RunStatus.FAILED,aborted:Bn.RunStatus.ABORTED};return{runId:e.runId??e.id,toolId:e.toolId,tool:e.tool,systemIds:e.systemIds,status:t[e.status]??Bn.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??Bn.RunExecutionKind.FULL},fileArtifacts:e.fileArtifacts}}mapOpenAPIScheduleToToolSchedule(e){return{...e,lastRunAt:e.lastRunAt?(0,Va.requireUTCDate)(e.lastRunAt,"schedule.lastRunAt"):void 0,nextRunAt:(0,Va.requireUTCDate)(e.nextRunAt,"schedule.nextRunAt"),createdAt:(0,Va.requireUTCDate)(e.createdAt,"schedule.createdAt"),updatedAt:(0,Va.requireUTCDate)(e.updatedAt,"schedule.updatedAt")}}async listRuns(e={}){let t=(0,Ga.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,Va.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(s=>this.mapOpenAPIRunToRun(s)),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,Va.toUTCISOString)(e.from,"activity.from"):e.from),e?.to&&t.set("to",e.to instanceof Date?(0,Va.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,Ga.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,Ga.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,Ga.createListQueryParams)(e),a=t.size>0?`?${t.toString()}`:"",i=e.toolId?`/v1/tools/${encodeURIComponent(e.toolId)}/schedules${a}`:`/v1/schedules${a}`,s=await this.restRequest("GET",i);return{...s,data:s.data.map(r=>this.mapOpenAPIScheduleToToolSchedule(r))}}async listAllSchedules(e={}){return(0,Ga.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,Ga.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,Ga.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,Ga.createListQueryParams)(e),a=t.size>0?`?${t.toString()}`:"";return this.restRequest("GET",`/v1/systems${a}`)}async listAllSystems(e={}){return(0,Ga.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}),s=i.flatMap(r=>r.status==="uploaded"?[r.id]:[]);if(s.length>0)try{await this.restRequest("POST",`/v1/systems/${encodeURIComponent(e)}/documentation/files`,{fileIds:s,link:a?.link!==!1})}catch(r){throw await Promise.all(s.map(n=>this.deleteFileUpload(n).catch(()=>{}))),r}if(!a?.settle){let r=i.filter(n=>n.status==="failed");if(r.length>0)throw new Error(r.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}}}};Qn.SuperglueClient=iv});var Y5=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=Ame;Ce.parseJSON=wme;Ce.isValidJson=vme;Ce.prettyPrintJson=xme;Ce.minifyJson=zme;var Pt=class{validate(e){try{return JSON.parse(e),!0}catch{return!1}}};Ce.RepairStrategy=Pt;var Gg=class extends Pt{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 r=JSON.parse(i);return JSON.stringify(r)}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=Gg;var Vg=class extends Pt{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=Vg;var Wg=class extends Pt{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=Wg;var $g=class extends Pt{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=$g;var Jg=class extends Pt{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=Jg;var Kg=class extends Pt{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=Kg;var sv=class extends Pt{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 s=0;s<e.length;s++){let r=e[s],n=s>0?e[s-1]:"";if(i){t+=r,i=!1;continue}if(r==="\\"&&a){t+=r,i=!0;continue}if(r==='"'&&n!=="\\"){a=!a,t+=r;continue}if(a)switch(r){case`
1412
1412
  `: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=r.charCodeAt(0);c<32?t+="\\u"+("0000"+c.toString(16)).slice(-4):t+=r}else t+=r}return t}},rv=class extends Pt{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,s=!1,r=!1;for(let n=0;n<t.length;n++){let c=t[n];if(s)r?r=!1:c==="\\"?r=!0:c==='"'&&(s=!1);else if(c==='"')s=!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,s=!1,r=!1,n=-1;for(let c=0;c<t.length;c++){let m=t[c];if(s)r?r=!1:m==="\\"?r=!0:m==='"'&&(s=!1);else if(m==='"')s=!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}},Sn=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 Gg,new $g,new sv,new rv,new Vg,new Wg,new Jg,new Kg]}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(r){if(!this.options.attemptRepair)return{success:!1,error:`JSON parse error: ${r}`,metadata:{parseTime:Date.now()-t}}}let i=a,s=[];for(let r of this.strategies)if(r.canApply(i)){let n=i;if(i=r.apply(i),n!==i){s.push(r.name),this.repairLog.push(r.description),this.options.logRepairs&&console.log(`Applied ${r.name}: ${r.description}`);try{return{success:!0,data:JSON.parse(i),repairs:this.repairLog,metadata:{parseTime:Date.now()-t,strategiesApplied:s}}}catch{}}}try{return{success:!0,data:JSON.parse(i),repairs:this.repairLog,metadata:{parseTime:Date.now()-t,strategiesApplied:s}}}catch(r){let n=this.aggressiveFallback(i);return n.success?{...n,repairs:[...this.repairLog,"Applied aggressive fallback"],metadata:{parseTime:Date.now()-t,strategiesApplied:[...s,"AggressiveFallback"]}}:{success:!1,error:`Failed to parse JSON after applying ${s.length} strategies: ${r}`,repairs:this.repairLog,metadata:{parseTime:Date.now()-t,strategiesApplied:s}}}}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),s=e.substring(i);for(let n of this.strategies)n.canApply(s)&&(s=n.apply(s));return{success:!0,data:JSON.parse(s)}}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=Sn;var H5=new Sn;function Ame(o,e){return(e?new Sn(e):H5).parse(o)}function wme(o){let e=H5.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 vme(o){try{return JSON.parse(o),!0}catch{return!1}}function xme(o,e=2){return JSON.stringify(o,null,e)}function zme(o){let t=new Sn().parse(o);if(t.success)return JSON.stringify(t.data);throw new Error("Cannot minify invalid JSON")}});var ot=y(L=>{"use strict";var qme=L&&L.__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]})),Z=L&&L.__exportStar||function(o,e){for(var t in o)t!=="default"&&!Object.prototype.hasOwnProperty.call(e,t)&&qme(e,o,t)};Object.defineProperty(L,"__esModule",{value:!0});L.SSELogSubscriptionManager=L.SuperglueHttpError=L.SuperglueClient=void 0;Z(tE(),L);Z(dE(),L);Z(gE(),L);Z(yE(),L);Z(vE(),L);Z(Uc(),L);Z(ME(),L);Z(_E(),L);Z(OE(),L);Z(FE(),L);Z(Vf(),L);Z(PE(),L);Z(HE(),L);Z(YE(),L);Z(VE(),L);Z(WE(),L);Z(JE(),L);Z(yl(),L);Z(ZE(),L);Z(XE(),L);Z(o2(),L);Z(i2(),L);Z(r2(),L);Z(d2(),L);Z(p2(),L);Z(f2(),L);Z(I2(),L);Z(j2(),L);Z(nb(),L);Z(L2(),L);Z(hb(),L);Z(G2(),L);Z(J2(),L);Z(Z2(),L);Z(it(),L);Z(Jt(),L);Z(X2(),L);Z(eI(),L);Z(Du(),L);Z(Ir(),L);Z(ku(),L);var G5=P5();Object.defineProperty(L,"SuperglueClient",{enumerable:!0,get:function(){return G5.SuperglueClient}});Object.defineProperty(L,"SuperglueHttpError",{enumerable:!0,get:function(){return G5.SuperglueHttpError}});var Eme=yb();Object.defineProperty(L,"SSELogSubscriptionManager",{enumerable:!0,get:function(){return Eme.SSELogSubscriptionManager}});Z(Y5(),L)});var Qp=require("commander");var Do=$(require("fs")),$5=$(require("os")),Wa=$(require("path")),ol=$(ot()),V5=new Set(["runner","builder","admin"]),W5={output:{mode:"stdout",directory:".superglue/output"},preset:"admin"};function $a(o){let e=Wa.join(process.cwd(),".superglue"),t=$5.homedir();if(!t)return e;let a=Wa.join(t,".superglue");return o===!0?e:o===!1?a:Do.existsSync(Wa.join(e,"config.json"))?e:a}function nv(o){return Wa.join($a(o),"config.json")}function Zg(o){let e=nv(o);if(!Do.existsSync(e))return{};try{return JSON.parse(Do.readFileSync(e,"utf-8"))}catch{return{}}}function Dn(o){let e=Zg(),t=o.apiKey||(0,ol.readProcessEnvironmentValue)("SUPERGLUE_API_KEY")||e.apiKey||"",a=o.endpoint||(0,ol.readProcessEnvironmentValue)("SUPERGLUE_API_ENDPOINT")||e.endpoint||"https://api.superglue.cloud",i=(0,ol.readProcessEnvironmentValue)("SUPERGLUE_WEB_ENDPOINT")||e.webEndpoint||a.replace(/:3002\b/,":3001").replace(/api\.superglue/,"app.superglue"),s=(0,ol.readProcessEnvironmentValue)("SUPERGLUE_CLI_PRESET"),r=s&&V5.has(s)?s:e.preset&&V5.has(e.preset)?e.preset:"admin";return{...W5,...e,apiKey:t,endpoint:a,webEndpoint:i,preset:r,output:{...W5.output,...e.output}}}function Xg(o,e){let t=$a(e);Do.existsSync(t)||Do.mkdirSync(t,{recursive:!0}),Do.writeFileSync(Wa.join(t,"config.json"),JSON.stringify(o,null,2)+`
1413
- `,{mode:384})}function ep(o,e){let t=Wa.join($a(e),"drafts");if(Do.existsSync(t)||Do.mkdirSync(t,{recursive:!0}),o.output.mode==="stdout+file"){let a=Wa.resolve(o.output.directory);Do.existsSync(a)||Do.mkdirSync(a,{recursive:!0})}}var pv=$(ot());var cv=$(require("readline"));var Z5=require("child_process"),X5=require("util");var J5={name:"@superglue/cli",version:"1.1.66",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 Cme=(0,X5.promisify)(Z5.exec),wo=J5.version;function K5(o){let e=o.match(/^(\d+)(?:-(.+))?$/);return e?{numeric:parseInt(e[1],10),prerelease:e[2]||null}:{numeric:0,prerelease:o}}function tp(o,e){let t=o.split("."),a=e.split("."),i=Math.max(t.length,a.length);for(let s=0;s<i;s++){let r=K5(t[s]||"0"),n=K5(a[s]||"0");if(r.numeric<n.numeric)return-1;if(r.numeric>n.numeric||r.prerelease===null&&n.prerelease!==null)return 1;if(r.prerelease!==null&&n.prerelease===null)return-1;if(r.prerelease!==null&&n.prerelease!==null){if(r.prerelease<n.prerelease)return-1;if(r.prerelease>n.prerelease)return 1}}return 0}async function ap(){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 op=null;function e6(){Y()&&(op=ap())}async function o6(){if(!(!Y()||!op)){try{let o=new Promise(t=>{setTimeout(()=>t(null),2e3).unref()}),e=await Promise.race([op,o]);e&&tp(wo,e)<0&&(console.error(""),console.error(`${h.cyan}${h.bold} Update available: ${wo} \u2192 ${e}${h.reset}`),console.error(`${h.cyan} Run ${h.bold}sg update${h.reset}${h.cyan} to upgrade${h.reset}`),console.error(""))}catch{}op=null}}async function t6(){let o=await ap();if(!o)return{success:!1,message:"Could not fetch latest version from npm"};if(tp(wo,o)>=0)return{success:!0,message:`Already on latest version (${wo})`};try{return await Cme("npm install -g @superglue/cli@latest"),{success:!0,message:`Updated from ${wo} to ${o}`}}catch(e){return{success:!1,message:`Update failed: ${e.message}. Try manually: npm install -g @superglue/cli@latest`}}}var Y=()=>process.argv.includes("--table")&&process.stdout.isTTY,qt=()=>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 a6(o,e){let t=e||o;return`\x1B]8;;${o}\x07${h.underline}${h.cyan}${t}${h.reset}\x1B]8;;\x07`}function i6(){if(!Y())return;let o=h.reset,e=h.dim,t="\x1B[47;30m",a=[" #@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@- "," =@@@- @@@@ "," @@@ @@% "," -@@ @@@@= @@@ @@@ @@@@@#@ @@@@@@@ @@@@@@@ @@@@@@ @@@ @@@ @@@ @@@@@@* %@@ "," @@ @@@ *@ @@@ @@@ @@@ :@@ @@@ @@@ -@@ @@@ @% @@@ @@@ @@@ @@* @@# "," #@@ @@@# @@@ @@@ @@@ :@@ @@@ @@@ -@@ @@@ @@@ @@@ @@@ @@* @@ "," @@- @@@@= @@@ @@@ @@@@@@@ @@@@@@ @@@@@@@ @@@ @@% @@@ @@@ @@@ @@@@@. @@."," #@% .@@@@ @@@ @@@ @@@ @@@ @@@ -@@ @@@ @@% @@@ @@@ @@@ @@* @@ "," @@ @ @@@ @@@ @@@ @@@ @@@ @@@ -@@ @@@ @@% @@@ @@@ @@@ @@* *@@ "," -@@ @@@@= @@@@@@ @@@ @@@@@@@ @@@ -@@ @@@@@@ @@@@@@% @@@@@@. @@@@@@* #@@ "," :@@* @@@ "," %@@@ =@@@. "," :@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@% "];console.log(""),a.forEach(i=>{let s=i.search(/\S/),r=i.length-[...i].reverse().join("").search(/\S/)-1;if(s===-1)return console.log(" "+i);let n=i.slice(0,s),c=i.slice(s,r+1).split("").map(l=>l===" "?" ":"\u2588").join(""),m=i.slice(r+1);console.log(` ${n}${t}${c}${o}${m}`)}),console.log(` ${e} CLI v${wo}${o}`),console.log("")}function Ee(o){if(!Y())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"),s=()=>{process.stdout.write(`\r ${h.cyan}${e[t++%e.length]}${h.reset} ${a}`)},r=setInterval(s,80);return{update:n=>{a=n},log:n=>{i(),console.log(` ${h.dim}\u2502${h.reset} ${n}`),s()},stop:n=>{clearInterval(r),i(),n&&console.log(` ${n}`)}}}function U(o){Y()?ip(o):console.log(JSON.stringify(o,null,2))}function se(o,e){Y()?(console.log(` ${h.green}\u2713${h.reset} ${o}`),e&&ip(e,4)):console.log(JSON.stringify({success:!0,message:o,...e&&typeof e=="object"?e:{data:e}}))}function z(o,e){Y()?(console.error(` ${h.red}\u2717${h.reset} ${o}`),e&&ip(e,4)):console.error(JSON.stringify({success:!1,error:o,details:e}))}function s6(o){Y()&&console.log(` ${h.yellow}\u26A0${h.reset} ${o}`)}function lo(o){Y()&&console.log(` ${h.dim}${o}${h.reset}`)}function Ja(o){Y()&&(console.log(`
1413
+ `,{mode:384})}function ep(o,e){let t=Wa.join($a(e),"drafts");if(Do.existsSync(t)||Do.mkdirSync(t,{recursive:!0}),o.output.mode==="stdout+file"){let a=Wa.resolve(o.output.directory);Do.existsSync(a)||Do.mkdirSync(a,{recursive:!0})}}var pv=$(ot());var cv=$(require("readline"));var Z5=require("child_process"),X5=require("util");var J5={name:"@superglue/cli",version:"1.1.67",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 Cme=(0,X5.promisify)(Z5.exec),wo=J5.version;function K5(o){let e=o.match(/^(\d+)(?:-(.+))?$/);return e?{numeric:parseInt(e[1],10),prerelease:e[2]||null}:{numeric:0,prerelease:o}}function tp(o,e){let t=o.split("."),a=e.split("."),i=Math.max(t.length,a.length);for(let s=0;s<i;s++){let r=K5(t[s]||"0"),n=K5(a[s]||"0");if(r.numeric<n.numeric)return-1;if(r.numeric>n.numeric||r.prerelease===null&&n.prerelease!==null)return 1;if(r.prerelease!==null&&n.prerelease===null)return-1;if(r.prerelease!==null&&n.prerelease!==null){if(r.prerelease<n.prerelease)return-1;if(r.prerelease>n.prerelease)return 1}}return 0}async function ap(){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 op=null;function e6(){Y()&&(op=ap())}async function o6(){if(!(!Y()||!op)){try{let o=new Promise(t=>{setTimeout(()=>t(null),2e3).unref()}),e=await Promise.race([op,o]);e&&tp(wo,e)<0&&(console.error(""),console.error(`${h.cyan}${h.bold} Update available: ${wo} \u2192 ${e}${h.reset}`),console.error(`${h.cyan} Run ${h.bold}sg update${h.reset}${h.cyan} to upgrade${h.reset}`),console.error(""))}catch{}op=null}}async function t6(){let o=await ap();if(!o)return{success:!1,message:"Could not fetch latest version from npm"};if(tp(wo,o)>=0)return{success:!0,message:`Already on latest version (${wo})`};try{return await Cme("npm install -g @superglue/cli@latest"),{success:!0,message:`Updated from ${wo} to ${o}`}}catch(e){return{success:!1,message:`Update failed: ${e.message}. Try manually: npm install -g @superglue/cli@latest`}}}var Y=()=>process.argv.includes("--table")&&process.stdout.isTTY,qt=()=>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 a6(o,e){let t=e||o;return`\x1B]8;;${o}\x07${h.underline}${h.cyan}${t}${h.reset}\x1B]8;;\x07`}function i6(){if(!Y())return;let o=h.reset,e=h.dim,t="\x1B[47;30m",a=[" #@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@- "," =@@@- @@@@ "," @@@ @@% "," -@@ @@@@= @@@ @@@ @@@@@#@ @@@@@@@ @@@@@@@ @@@@@@ @@@ @@@ @@@ @@@@@@* %@@ "," @@ @@@ *@ @@@ @@@ @@@ :@@ @@@ @@@ -@@ @@@ @% @@@ @@@ @@@ @@* @@# "," #@@ @@@# @@@ @@@ @@@ :@@ @@@ @@@ -@@ @@@ @@@ @@@ @@@ @@* @@ "," @@- @@@@= @@@ @@@ @@@@@@@ @@@@@@ @@@@@@@ @@@ @@% @@@ @@@ @@@ @@@@@. @@."," #@% .@@@@ @@@ @@@ @@@ @@@ @@@ -@@ @@@ @@% @@@ @@@ @@@ @@* @@ "," @@ @ @@@ @@@ @@@ @@@ @@@ @@@ -@@ @@@ @@% @@@ @@@ @@@ @@* *@@ "," -@@ @@@@= @@@@@@ @@@ @@@@@@@ @@@ -@@ @@@@@@ @@@@@@% @@@@@@. @@@@@@* #@@ "," :@@* @@@ "," %@@@ =@@@. "," :@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@% "];console.log(""),a.forEach(i=>{let s=i.search(/\S/),r=i.length-[...i].reverse().join("").search(/\S/)-1;if(s===-1)return console.log(" "+i);let n=i.slice(0,s),c=i.slice(s,r+1).split("").map(l=>l===" "?" ":"\u2588").join(""),m=i.slice(r+1);console.log(` ${n}${t}${c}${o}${m}`)}),console.log(` ${e} CLI v${wo}${o}`),console.log("")}function Ee(o){if(!Y())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"),s=()=>{process.stdout.write(`\r ${h.cyan}${e[t++%e.length]}${h.reset} ${a}`)},r=setInterval(s,80);return{update:n=>{a=n},log:n=>{i(),console.log(` ${h.dim}\u2502${h.reset} ${n}`),s()},stop:n=>{clearInterval(r),i(),n&&console.log(` ${n}`)}}}function U(o){Y()?ip(o):console.log(JSON.stringify(o,null,2))}function se(o,e){Y()?(console.log(` ${h.green}\u2713${h.reset} ${o}`),e&&ip(e,4)):console.log(JSON.stringify({success:!0,message:o,...e&&typeof e=="object"?e:{data:e}}))}function z(o,e){Y()?(console.error(` ${h.red}\u2717${h.reset} ${o}`),e&&ip(e,4)):console.error(JSON.stringify({success:!1,error:o,details:e}))}function s6(o){Y()&&console.log(` ${h.yellow}\u26A0${h.reset} ${o}`)}function lo(o){Y()&&console.log(` ${h.dim}${o}${h.reset}`)}function Ja(o){Y()&&(console.log(`
1414
1414
  ${h.bold}${h.cyan}${o}${h.reset}`),console.log(` ${h.dim}${"\u2500".repeat(o.length)}${h.reset}`))}function ga(o,e,t){if(!Y()){console.log(JSON.stringify({success:!0,total:t?.total??o.length,items:o}));return}if(o.length===0){console.log(`
1415
1415
  ${h.dim}0 results${h.reset}
1416
1416
  `);return}let a=e||Object.keys(o[0]),i=qt()?1/0:60,s=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 r=a.map((l,u)=>`${h.bold}${h.cyan}${l.toUpperCase().padEnd(s[u])}${h.reset}`).join(" ");console.log(` ${r}`);let n=s.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 w=`\u2026 (${p.length})`;p=p.slice(0,Math.max(0,i-w.length))+`${h.dim}${w}${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(s[g])}${h.reset}`:p.padEnd(s[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(`
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@superglue/cli",
3
- "version": "1.1.66",
3
+ "version": "1.1.67",
4
4
  "bin": {
5
5
  "sg": "./dist/cli.js"
6
6
  },