Files
onyx/docs
roshan cc110e2bbf feat(llm): add TypeSafe AI provider setup (#16262)
## Summary

Add TypeSafe AI as a model provider so admins can save System One
credentials before decision-model support lands.

- Add the real TypeSafe AI logo, provider card, and credential form in
Language Models.
- Test credentials through TypeSafe's native System One endpoint and
reuse encrypted provider storage.
- Support creation, editing, and deletion without creating chat models
or setting a chat default.
- Keep TypeSafe out of chat onboarding. Reject tests that send saved
credentials to another provider.
- Keep the setup form focused on credentials. Remove the roadmap and
internal validation paragraph from all nine locales.

This PR covers provider setup only. #16276 moves TypeSafe to the
dedicated Decision Models page and adds discovery and optional
selection. No review or classification workflow ships in this stack.

## Validation

- Previously created and edited the provider in the live admin UI with a
real TypeSafe key. Verified saved credentials against System One.
- Confirmed that the provider stores no chat models, stays out of chat
listings, and can be deleted through the API.
- 232 backend unit tests, 25 PostgreSQL tests, and 12 frontend tests
passed.
- Touched-file hooks passed for typing, lint, formatting, translations,
secrets, and feature-map checks.
- After the copy removal, ten setup and locale tests passed on this PR.
Thirteen passed on the full stack. Typecheck and lint passed.

## Screenshots

Current provider-only setup at `475ae5d`, with the real TypeSafe AI logo
and no implementation-status paragraph. Credentials are empty. This
screenshot is separate from the earlier real-key validation.

![TypeSafe AI System One provider
setup](https://github.com/user-attachments/assets/6142bd45-e75c-4621-b154-b75219085f2e)

## Stack testing (`29eec61fb4`)

Tested the full stack at the top commit on a local dev stack, desktop
and 390×844 mobile. OpenAI decisions and chat used a real key. TypeSafe,
Zoom, OpenRouter, and Vercel AI Gateway used local mock upstreams; Onyx
auth, validation, persistence, encryption, and UI were real.

- Passed: bad credentials show an error; good credentials reach
`/v1/systemone`.
- Passed: create, rename, refresh, model removal, and delete.
- Passed: TypeSafe stores decision models only, never becomes the chat
default, and is absent from the chat picker.
- Passed: both credential-test endpoints reject reuse of saved TypeSafe
credentials against another provider; no request reached the other base.

![TypeSafe desktop and
mobile](https://app.devin.ai/api/presigned_proxy?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyX2lkIjpudWxsLCJidWNrZXRfbmFtZSI6ImRldmluYXR0YWNobWVudHMiLCJidWNrZXRfa2V5IjoiYXR0YWNobWVudHNfcHJpdmF0ZS9vcmdfT2NlNnlnR2RrdGJQekZsaS9jMjZjOGZjNy1jOWI4LTQzYTktYmMxMi04MGNiODQ4YTZiNDYiLCJpYXQiOjE3OTI2MTA4NjQsIm9yZ19pZCI6Im9yZ19PY2U2eWdHZGt0YlB6RmxpIiwiZmlsZW5hbWUiOiJ0eXBlc2FmZS1kZXNrdG9wLW1vYmlsZS5wbmcifQ.r4M2e6HMLKPhrmT4SfbRcrlBWycQgmKQXvIrLmBv6mE)

![TypeSafe
flow](https://app.devin.ai/api/presigned_proxy?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyX2lkIjpudWxsLCJidWNrZXRfbmFtZSI6ImRldmluYXR0YWNobWVudHMiLCJidWNrZXRfa2V5IjoiYXR0YWNobWVudHNfcHJpdmF0ZS9vcmdfT2NlNnlnR2RrdGJQekZsaS8yYzZkM2Q0Yi04ZDcxLTQyMmYtOTYwMi01MTAzNTE4ZWYwZDMiLCJpYXQiOjE3OTI2MTA4NjQsIm9yZ19pZCI6Im9yZ19PY2U2eWdHZGt0YlB6RmxpIiwiZmlsZW5hbWUiOiJ0eXBlc2FmZS1mbG93LndlYnAifQ.N-88hUq9h6n3N_y9OQADTEaXe93FRGOz7EhtVxDY1kI)

![Chat picker excludes
TypeSafe](https://app.devin.ai/api/presigned_proxy?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ1c2VyX2lkIjpudWxsLCJidWNrZXRfbmFtZSI6ImRldmluYXR0YWNobWVudHMiLCJidWNrZXRfa2V5IjoiYXR0YWNobWVudHNfcHJpdmF0ZS9vcmdfT2NlNnlnR2RrdGJQekZsaS9mZGQwNDE5Yy03YTAwLTQyZmYtYjAwOC03Y2RhMGIxM2U3NGYiLCJpYXQiOjE3OTI2MTA4NjQsIm9yZ19pZCI6Im9yZ19PY2U2eWdHZGt0YlB6RmxpIiwiZmlsZW5hbWUiOiJyZWdyZXNzaW9uLXBpY2tlci1uby10eXBlc2FmZS5wbmcifQ.9-8x1pyxpCssI3uPfpOr0rBGVtbiX1FAOmlfyyqdBdM)

## Stack

PR 1 of 4: **#16262** → #16276 → #16280 → #16284.

Link to Devin session:
https://app.devin.ai/sessions/39d77bde91c34b75922bb05c02b93b90
Open in Devin Desktop:
https://app.devin.ai/desktop/session/39d77bde91c34b75922bb05c02b93b90?variant=devin
Requested by: @rohoswagger
2026-10-21 23:51:26 +00:00
..