You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
feat: add Altimate provider with /login command and credential valida… (#606)
* feat: add altimate-backend TUI connect flow with credential validation
- Parse url::instance::key from ApiMethod dialog and write ~/.altimate/altimate.json directly
- Validate credentials against /dbt/v3/validate-credentials before saving (mirrors altimate-mcp-engine pattern)
- Show inline error in dialog on invalid format, bad API key (401), or bad instance name (403)
- Register AltimateAuthPlugin to surface "Connect to Altimate" method in /connect dialog
- Add altimate-backend CUSTOM_LOADER: file-first, auth-store fallback
- Add Filesystem.writeJson helper with mkdir-on-ENOENT and explicit chmod
- 47 tests covering parseAltimateKey, saveCredentials, validateCredentials, and TUI round-trip
* fix: address CodeRabbit review feedback on Altimate provider PR
- `resolveEnvVars`: check `=== undefined` instead of `!value` to allow empty-string env vars
- Normalize `altimateUrl` (strip trailing slashes) in both `getCredentials()` and `saveCredentials()` to prevent malformed `//` URLs in `request()`
- Include underlying error details in `validateCredentials` catch for easier debugging
- Suppress stale `altimate-backend` auth via `Auth.remove()` when the loader cannot build valid options
- Wrap `saveCredentials`/`dispose`/`bootstrap` in try-catch in `dialog-provider.tsx`
- Document `altimate.json` schema and `${env:VAR_NAME}` substitution in `getting-started.md`
- Add `text` language identifier to credential format code block
- Update tests for URL normalization and error message changes
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
* fix: guard `Auth.remove()` calls and add empty-string env var test
- Add `.catch(() => {})` to `Auth.remove()` in provider.ts to prevent
a storage error from crashing all provider initialization
- Add test verifying that `${env:VAR}` resolves to `""` when the env
var is set to an empty string (covers the `!value` → `=== undefined` change)
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
---------
Co-authored-by: suryaiyer95 <surya@altimate.ai>
Co-authored-by: anandgupta42 <93243293+anandgupta42@users.noreply.github.com>
Co-authored-by: anandgupta42 <anand@altimate.ai>
Co-authored-by: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Copy file name to clipboardExpand all lines: docs/docs/getting-started.md
+44Lines changed: 44 additions & 0 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -81,6 +81,50 @@ Add a warehouse connection to `.altimate-code/connections.json`. Here's a quick
81
81
82
82
For all warehouse types (Snowflake, BigQuery, Databricks, PostgreSQL, Redshift, DuckDB, MySQL, SQL Server) and advanced options (key-pair auth, ADC, SSH tunneling), see the [Warehouses reference](configure/warehouses.md).
83
83
84
+
### Connecting to Altimate
85
+
86
+
If you have an Altimate platform account, run `/connect` in the TUI, select **Altimate**, and enter your credentials in this format:
87
+
88
+
```text
89
+
instance-url::instance-name::api-key
90
+
```
91
+
92
+
For example: `https://api.getaltimate.com::acme::your-api-key`
93
+
94
+
-**Instance URL** — `https://api.myaltimate.com` or `https://api.getaltimate.com` depending on your dashboard domain
95
+
-**Instance Name** — the subdomain from your Altimate dashboard URL (e.g. `acme` from `https://acme.app.myaltimate.com`)
96
+
-**API Key** — go to **Settings > API Keys** in your Altimate dashboard and click **Copy**
97
+
98
+
Credentials are validated against the Altimate API before being saved. If you prefer to configure credentials directly (e.g. for CI or environment variable substitution), you can also create `~/.altimate/altimate.json` manually — if that file exists it takes priority over the TUI-entered credentials.
0 commit comments