@superglue/cli 1.1.32 → 1.1.33

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.
@@ -68,8 +68,15 @@ Some APIs (e.g. Salesforce) use SOAP XML login where credentials are embedded in
68
68
 
69
69
  `<<systemId_password>><<systemId_security_token>>` resolves to the password and token concatenated — no separator needed. This works in URL, headers, and body fields.
70
70
 
71
- Headers starting with `x-` are treated as custom headers.
72
- Modern APIs expect auth in headers, not query parameters, unless docs explicitly say otherwise.
71
+ ### Parsing XML responses
72
+
73
+ XML responses (SOAP and other XML APIs) are auto-parsed to an object on `sourceData.stepId.data`. The parser has quirks you MUST account for in transforms and stopConditions — probe the real response with a small page before writing selectors:
74
+
75
+ - **Every tag name is UPPERCASED.** `<response><record>` becomes `RESPONSE.RECORD`, regardless of the source casing. Always select uppercase keys.
76
+ - **Single vs multiple children collapse.** One child element parses to an object; multiple with the same tag parse to an array. Normalize before mapping: `const rows = Array.isArray(x) ? x : (x ? [x] : [])`.
77
+ - **Element attributes become keys on the element object** (also uppercased). `<data count="2" total="127">` gives `DATA.COUNT` and `DATA.TOTAL` alongside the child records.
78
+ - **Text with attributes goes to `_TEXT`.** An element with both attributes and text content stores the text under a `_TEXT` key. Empty elements (`<field></field>`) become `{}`.
79
+ - **Numbers and booleans are strings.** Everything is a string; wrap with `Number(...)` where you need arithmetic.
73
80
 
74
81
  ## HTTP Runtime Details
75
82
 
@@ -143,11 +150,15 @@ Multipart restrictions:
143
150
 
144
151
  All HTTP responses are read as raw bytes, then classified by byte-level detection (see `file-handling.md` for the full detection logic).
145
152
 
146
- - **Binary types** (PDF, Excel, DOCX, ZIP, GZIP): treated as files, parsed content also populates `data`. Later steps can reference via `file::<stepId>.raw/base64/extracted`.
153
+ - **File responses**: formats classified as files by `file-handling.md` are stored as files, and parsed content populates `data` when extraction is available. Later steps can reference them via `file::<stepId>.raw/base64/extracted`.
147
154
  - **`application/octet-stream`**: always treated as a file.
148
155
  - **Responses over 25 MB**: treated as files as a safety fallback.
149
156
  - **RAW + `Content-Disposition: attachment`**: treated as a file.
150
- - **Structured/text responses** (JSON, XML, CSV, YAML, HTML, text under size limit): parsed inline to `data` only.
157
+ - **Inline responses**: formats classified as structured or plain text by `file-handling.md` populate `data` without producing a stored file unless another file rule applies.
158
+
159
+ ### XML Response Casing
160
+
161
+ XML responses are parsed into a JSON tree with ALL tag names normalized to UPPERCASE — the parsed keys will not match the raw document's casing. This applies identically to `sg system call` and to request steps in tools. A raw `fetch()` inside a transform step is the exception: it returns the original document with its real casing (often lowercase envelope tags with uppercase field tags). Never write string-level XML parsing logic in a transform from memory of what `sg system call` showed — capture a raw probe first (e.g. return `{ rawXml: xml.slice(0, 1500) }`), and guard against self-closing empty containers (`<data/>` has no closing tag) and repeated sibling result blocks.
151
162
 
152
163
  ### Error Detection
153
164
 
@@ -11,7 +11,7 @@
11
11
  }
12
12
  ```
13
13
 
14
- Configure the connection URL based on which credentials are stored in the system — use `sg system find` to check `storedCredentials` and reference them accordingly.
14
+ Configure the connection URL based on the selected credential's secrets — use `sg system find` to inspect the available secret names and reference them accordingly.
15
15
 
16
16
  `method`, `headers`, `queryParams`, and `pagination` are HTTP-only fields — omit them for MongoDB steps.
17
17
 
@@ -130,7 +130,7 @@ Default retries come from server config. On final failure, the error includes th
130
130
  When a MongoDB step fails:
131
131
 
132
132
  1. **Read the error message** — superglue includes the operation name in the error. Check for unknown operations, missing required fields (`filter`, `update`, `pipeline`), or malformed Extended JSON.
133
- 2. **Verify connection credentials** — use `sg system find` to confirm `storedCredentials` keys match the placeholders in your URL. Test with a `listCollections` operation via `sg system call`.
133
+ 2. **Verify connection secrets** — use `sg system find` to confirm the stored secret names match the placeholders in your URL. Test with a `listCollections` operation via `sg system call`.
134
134
  3. **Check auth source** — "Authentication failed" usually means a missing or wrong `authSource`. Root users authenticate against `admin`.
135
135
  4. **Check connectivity** — connection refused or server-selection timeouts mean the host is unreachable, the SRV record can't resolve, or an IP allowlist (Atlas) is blocking you. `mongodb+srv://` requires outbound DNS.
136
136
  5. **Check the operation shape** — read operations (`find`, `countDocuments`, `distinct`) never mutate; write operations require their specific fields. `aggregate` is read-only unless its pipeline contains a `$out` or `$merge` stage, which writes results back to a collection. Confirm `filter`/`update`/`pipeline` are objects/arrays, not strings.
@@ -13,7 +13,7 @@
13
13
  }
14
14
  ```
15
15
 
16
- Configure the connection URL based on which credentials are stored in the system — use `sg system find` to check `storedCredentials` and reference them accordingly.
16
+ Configure the connection URL based on the selected credential's secrets — use `sg system find` to inspect the available secret names and reference them accordingly.
17
17
 
18
18
  `method`, `headers`, `queryParams`, and `pagination` are HTTP-only fields — omit them for database steps.
19
19
 
@@ -93,46 +93,46 @@ mssql://<<my_db_user>>:<<my_db_password>>@<<my_db_host>>:<<my_db_port>>/<<my_db_
93
93
 
94
94
  ### Windows Authentication (NTLM)
95
95
 
96
- For on-prem SQL Servers that only accept Windows domain logins (no SQL auth), store these credential keys on the system:
96
+ For on-prem SQL Servers that only accept Windows domain logins (no SQL auth), add secrets with these names to the credential:
97
97
 
98
- | Credential Key | Required | Notes |
99
- | -------------- | -------- | ----------------------------------------------------- |
100
- | `authType` | yes | `ntlm` |
101
- | `domain` | yes | Windows domain (e.g. `CORP`) |
102
- | `user` | yes | Windows username (also accepts `username`, or in URL) |
103
- | `password` | yes | Windows password (or in URL) |
98
+ | Secret Name | Required | Notes |
99
+ | ----------- | -------- | ----------------------------------------------------- |
100
+ | `authType` | yes | `ntlm` |
101
+ | `domain` | yes | Windows domain (e.g. `CORP`) |
102
+ | `user` | yes | Windows username (also accepts `username`, or in URL) |
103
+ | `password` | yes | Windows password (or in URL) |
104
104
 
105
105
  ```
106
106
  URL: mssql://<<sys_user>>:<<sys_password>>@<<sys_host>>:<<sys_port>>/<<sys_database>>
107
- Credentials: { authType: "ntlm", domain, user, password, host, port, database }
107
+ Secrets: { authType: "ntlm", domain, user, password, host, port, database }
108
108
  ```
109
109
 
110
110
  Alternatively, pass the domain as a `?domain=CORP` query parameter on the URL — any URL with a `domain` set authenticates via NTLM. Kerberos-only environments are not supported; ask the DBA to permit NTLM or create a SQL login.
111
111
 
112
112
  ### Azure Active Directory Authentication
113
113
 
114
- For Azure AD auth, store the following credential keys on the system alongside the standard connection fields:
114
+ For Azure AD auth, add secrets with the following names to the credential alongside the standard connection fields:
115
115
 
116
116
  **Entra ID User + Password** — authenticates as an Azure AD user. Requires an Azure app registration.
117
117
 
118
- | Credential Key | Required | Notes |
119
- | -------------- | -------- | ------------------------------------------------------ |
120
- | `authType` | yes | `azure-active-directory-password` |
121
- | `clientId` | yes | Application (client) ID from Azure app registration |
122
- | `tenantId` | no | Directory (tenant) ID |
123
- | `user` | yes | Azure AD username (also accepts `username`, or in URL) |
124
- | `password` | yes | Azure AD password (or in URL) |
118
+ | Secret Name | Required | Notes |
119
+ | ----------- | -------- | ------------------------------------------------------ |
120
+ | `authType` | yes | `azure-active-directory-password` |
121
+ | `clientId` | yes | Application (client) ID from Azure app registration |
122
+ | `tenantId` | no | Directory (tenant) ID |
123
+ | `user` | yes | Azure AD username (also accepts `username`, or in URL) |
124
+ | `password` | yes | Azure AD password (or in URL) |
125
125
 
126
- `user` and `password` can be stored as credentials or embedded in the URL — values resolved into the URL take precedence; stored credentials only fill gaps the URL omits.
126
+ `user` and `password` can be stored as secrets or embedded in the URL — values resolved into the URL take precedence; stored secrets only fill gaps the URL omits.
127
127
 
128
128
  ```
129
129
  URL: mssql://<<sys_user>>:<<sys_password>>@myserver.database.windows.net:1433/mydb
130
- Credentials: { authType, clientId, tenantId, user, password, host, port, database }
130
+ Secrets: { authType, clientId, tenantId, user, password, host, port, database }
131
131
  ```
132
132
 
133
133
  **Service Principal** — authenticates as an Azure AD application. No user/password needed in the URL.
134
134
 
135
- | Credential Key | Required | Notes |
135
+ | Secret Name | Required | Notes |
136
136
  | -------------- | -------- | ------------------------------------------------- |
137
137
  | `authType` | yes | `azure-active-directory-service-principal-secret` |
138
138
  | `clientId` | yes | Application (client) ID |
@@ -141,7 +141,7 @@ Credentials: { authType, clientId, tenantId, user, password, host, port, databas
141
141
 
142
142
  ```
143
143
  URL: mssql://myserver.database.windows.net:1433/mydb
144
- Credentials: { authType, clientId, clientSecret, tenantId, host, port, database }
144
+ Secrets: { authType, clientId, clientSecret, tenantId, host, port, database }
145
145
  ```
146
146
 
147
147
  The runtime authenticates entirely via the service principal credentials — no user or password is needed in the URL.
@@ -245,7 +245,7 @@ Default retries from server config. On final failure, error includes query text
245
245
  When an MSSQL step fails and the cause is not obvious:
246
246
 
247
247
  1. **Read the error message** — superglue includes the query text and params in the error. Check for syntax errors, missing columns, or type mismatches.
248
- 2. **Verify connection credentials** — use `sg system find` to confirm `storedCredentials` keys match the placeholders in your URL. Test connectivity with a simple `SELECT 1` via `sg system call`.
248
+ 2. **Verify connection secrets** — use `sg system find` to confirm the stored secret names match the placeholders in your URL. Test connectivity with a simple `SELECT 1` via `sg system call`.
249
249
  3. **Check database-side access** — connection refused or permission denied errors typically mean the database user lacks access. Verify with the user that the credentials have the required grants.
250
250
  4. **Check Azure-specific issues** — if connecting to Azure SQL:
251
251
  - Confirm the client IP is allowed in the Azure SQL firewall rules
@@ -11,7 +11,7 @@
11
11
  }
12
12
  ```
13
13
 
14
- Configure the connection URL based on which credentials are stored in the system — use `sg system find` to check `storedCredentials` and reference them accordingly.
14
+ Configure the connection URL based on the selected credential's secrets — use `sg system find` to inspect the available secret names and reference them accordingly.
15
15
 
16
16
  `method`, `headers`, `queryParams`, and `pagination` are HTTP-only fields — omit them for database steps.
17
17
 
@@ -185,7 +185,7 @@ For other ODBC-backed databases, look up the database/driver-specific error code
185
185
  When an ODBC step fails and the cause is not obvious:
186
186
 
187
187
  1. **Read the error message** — superglue includes a truncated query preview in the error. Check for syntax errors, missing columns, or type mismatches.
188
- 2. **Verify connection credentials** — use `sg system find` to confirm `storedCredentials` keys match the placeholders in your URL. Test connectivity with a simple `SELECT 1` via `sg system call`.
188
+ 2. **Verify connection secrets** — use `sg system find` to confirm the stored secret names match the placeholders in your URL. Test connectivity with a simple `SELECT 1` via `sg system call`.
189
189
  3. **Check database-side access** — connection refused or permission denied errors typically mean the database user lacks access. Verify with the user that the credentials have the required grants.
190
190
  4. **Check driver availability** — if the error mentions "driver not found", the `DRIVER` query parameter does not match any registered driver in `/etc/odbcinst.ini`. Verify the driver name is correct and the driver is installed in the Docker image.
191
191
  5. **Test the query directly** — use `sg system call` with a simplified version of the query to isolate whether the issue is the query itself, the parameters, or the connection.
@@ -11,7 +11,7 @@
11
11
  }
12
12
  ```
13
13
 
14
- Configure the connection URL based on which credentials are stored in the system — use `sg system find` to check `storedCredentials` and reference them accordingly.
14
+ Configure the connection URL based on the selected credential's secrets — use `sg system find` to inspect the available secret names and reference them accordingly.
15
15
 
16
16
  `method`, `headers`, `queryParams`, and `pagination` are HTTP-only fields — omit them for database steps.
17
17
 
@@ -148,7 +148,7 @@ Default retries from server config. On final failure, error includes query text
148
148
  When a PostgreSQL step fails and the cause is not obvious:
149
149
 
150
150
  1. **Read the error message** — superglue includes the query text and params in the error. Check for syntax errors, missing columns, or type mismatches.
151
- 2. **Verify connection credentials** — use `sg system find` to confirm `storedCredentials` keys match the placeholders in your URL. Test connectivity with a simple `SELECT 1` via `sg system call`.
151
+ 2. **Verify connection secrets** — use `sg system find` to confirm the stored secret names match the placeholders in your URL. Test connectivity with a simple `SELECT 1` via `sg system call`.
152
152
  3. **Check database-side access** — connection refused or permission denied errors typically mean the database user lacks access to the database, schema, or table. Verify with the user that the credentials have the required grants.
153
153
  4. **Test the query directly** — use `sg system call` with a simplified version of the query to isolate whether the issue is the query itself, the parameters, or the connection.
154
154
  5. **Check for SSL/TLS issues** — if the error mentions SSL or handshake failure, check the SSL / TLS section above. For non-localhost servers that don't support SSL, add `?sslmode=disable` to the URL. For servers that require SSL, add `?sslmode=require`.
@@ -11,7 +11,7 @@
11
11
  }
12
12
  ```
13
13
 
14
- Configure the connection URL based on which credentials are stored in the system — use `sg system find` to check `storedCredentials` and reference them accordingly.
14
+ Configure the connection URL based on the selected credential's secrets — use `sg system find` to inspect the available secret names and reference them accordingly.
15
15
 
16
16
  `method`, `headers`, `queryParams`, and `pagination` are HTTP-only fields — omit them for Redis steps.
17
17
 
@@ -133,7 +133,7 @@ Default retries from server config. On final failure, error includes command and
133
133
  When a Redis step fails:
134
134
 
135
135
  1. **Read the error message** — superglue includes the command and args in the error. Check for unknown commands, wrong argument counts, or type errors (e.g. running a list command on a string key).
136
- 2. **Verify connection credentials** — use `sg system find` to confirm `storedCredentials` keys match the placeholders in your URL. Test with a simple `PING` command via `sg system call`.
136
+ 2. **Verify connection secrets** — use `sg system find` to confirm the stored secret names match the placeholders in your URL. Test with a simple `PING` command via `sg system call`.
137
137
  3. **Check connectivity and access** — connection refused errors typically mean the Redis server is unreachable or requires TLS (`rediss://`). AUTH errors mean the password is wrong or the user lacks access.
138
138
  4. **Check key types** — Redis commands are type-specific. Running `GET` on a hash key or `HGETALL` on a string key returns a `WRONGTYPE` error. Use `TYPE` command via `sg system call` to check a key's type before building.
139
139
  5. **Verify TLS requirements** — if the error mentions connection reset or handshake failure, try switching between `redis://` and `rediss://`.
@@ -13,7 +13,7 @@ FTP, SFTP, and SMB share an identical operation interface. Only the URL protocol
13
13
  }
14
14
  ```
15
15
 
16
- Configure the connection URL based on which credentials are stored in the system — use `sg system find` to check `storedCredentials` and reference them accordingly.
16
+ Configure the connection URL based on the selected credential's secrets — use `sg system find` to inspect the available secret names and reference them accordingly.
17
17
 
18
18
  `method`, `headers`, `queryParams`, and `pagination` are HTTP-only fields — omit them for file server steps.
19
19
 
@@ -128,7 +128,7 @@ Single operation returns the result directly. Array of operations returns an arr
128
128
 
129
129
  **FTP/FTPS:** uses `basic-ftp`. FTPS uses TLS with `rejectUnauthorized: false`. Connection timeout configurable.
130
130
 
131
- **SMB:** uses `@tryjsky/v9u-smb2`. Connection lifecycle: create client (with share, domain, credentials), execute operations, disconnect. Entire operation wrapped in a timeout race. For private systems via Secure Gateway, the host is `tunnelId.tunnel` (e.g. `my_tunnel.tunnel`).
131
+ **SMB:** uses `@tryjsky/v9u-smb2`. Connection lifecycle: create client (with share, domain, credentials), execute operations, disconnect.
132
132
 
133
133
  ### Retry Behavior
134
134
 
@@ -152,10 +152,10 @@ When the user wants to **download** a file fetched via SFTP/SMB/FTP, set `output
152
152
  When a file server step fails and the cause is not obvious:
153
153
 
154
154
  1. **Read the error message** — superglue includes the operations list in the error. Check for typos in paths, missing fields, or unsupported operations.
155
- 2. **Verify connection credentials** — use `sg system find` to confirm `storedCredentials` keys match the placeholders in your URL. Test with a simple `list` operation on the base path via `sg system call`.
155
+ 2. **Verify connection secrets** — use `sg system find` to confirm the stored secret names match the placeholders in your URL. Test with a simple `list` operation on the base path via `sg system call`.
156
156
  3. **Check path resolution** — if you get "file not found", verify the path is relative to the URL base path, not an absolute filesystem path. Use `list` on the parent directory to see what files exist.
157
157
  4. **Check permissions** — permission denied errors mean the user account lacks read/write access to the target path. Verify with the user that the account has the required grants.
158
158
  5. **Check protocol-specific issues:**
159
- - **SFTP**: if the error mentions authentication, verify whether the server expects password or private key auth. If using private key, ensure `privateKey` and `passphrase` are stored as system credentials.
159
+ - **SFTP**: if the error mentions authentication, verify whether the server expects password or private key auth. If using private key, ensure `privateKey` and `passphrase` are stored as secrets in the credential.
160
160
  - **FTP/FTPS**: if the connection fails, try switching between `ftp://` and `ftps://` — some servers require TLS, others don't support it.
161
- - **SMB**: verify the share name is correct (first path segment). If using domain auth, ensure the domain is included in the URL or stored as a credential. Check that the SMB port (445) is accessible.
161
+ - **SMB**: verify the share name is correct (first path segment). If using domain auth, ensure the domain is included in the URL or stored as a secret. Check that the SMB port (445) is accessible.
@@ -7,13 +7,13 @@ superglue is an open-source, AI-native integration platform that builds and runs
7
7
  Developed by superglue (Y Combinator W25), founded by Adina Görres and Stefan Faistenauer in 2025, based in Munich and San Francisco.
8
8
 
9
9
  - Website: https://superglue.ai
10
- - Documentation: https://docs.superglue.cloud
10
+ - Documentation: https://superglue.ai/docs/
11
11
  - GitHub: https://github.com/superglue-ai/superglue
12
12
 
13
13
  If the user is asking general questions (not building):
14
14
 
15
15
  - Company/team/pricing → https://superglue.ai/
16
- - Product/features → https://docs.superglue.cloud/getting-started/introduction
16
+ - Product/features → https://superglue.ai/docs/getting-started/introduction/
17
17
  - Open-source/code → https://github.com/superglue-ai/superglue
18
18
 
19
19
  ## Cloud Usage Tiers
@@ -35,10 +35,10 @@ Users can generate and manage API keys on the standalone **API Keys** page (`/ap
35
35
  ## Interfaces
36
36
 
37
37
  - **Web app** — primary UI for building, testing, and managing tools and systems
38
- - **TypeScript/Python SDK** — https://docs.superglue.cloud/sdk/overview
39
- - **REST API** — https://docs.superglue.cloud/api-reference/
40
- - **MCP Server** — https://docs.superglue.cloud/mcp/using-the-mcp
41
- - **CLI** — `npm install -g @superglue/cli` — https://docs.superglue.cloud/getting-started/cli-skills
38
+ - **TypeScript/Python SDK** — https://superglue.ai/docs/sdk/overview/
39
+ - **REST API** — https://superglue.ai/docs/api/
40
+ - **MCP Server** — https://superglue.ai/docs/mcp/using-the-mcp/
41
+ - **CLI** — `npm install -g @superglue/cli` — https://superglue.ai/docs/getting-started/cli-skills/
42
42
 
43
43
  ### Webhook Triggers
44
44