pageragatz
b9cd5ed138
feat(providers): optional AI Horde API key and live image catalog ( #10542 )
...
* feat(providers): optional AI Horde API key and live image catalog
Allow a registered Horde key on the no-auth connection and send it for
chat and image jobs. List only image models that currently have workers,
and generate through Horde's native async API.
# Conflicts:
# open-sse/config/imageRegistry.ts
# src/app/(dashboard)/dashboard/providers/[id]/ProviderDetailPageClient.tsx
# src/shared/constants/providers.ts
# src/sse/services/auth.ts
* fix(providers): validate AI Horde keys against find_user
The OpenAI-compatible /v1/models probe returns 200 for any Bearer token
on oai.aihorde.net, so Check always succeeded. Use Horde's /v2/find_user
lookup instead; an empty key still counts as the optional anonymous path.
* chore(changelog): name the AI Horde fragment for #10542
* fix(images): harden AI Horde optional-key selection and outbound fetches
- Optional-key selection now honors connection health (rate-limit cooldown
and terminal/unavailable test status) before handing a stored key back,
rotating to the next healthy key or falling back to the anonymous no-auth
path instead of using an unhealthy stored key.
- Route the Horde submit/check/status/cancel and catalog calls through the
repository's bounded outbound-fetch helper (timeout, no more bare fetch())
and route R2 image downloads through the established bounded remote-image
fetch (SSRF host guard, DNS-rebinding pin, streaming byte cap, redirect
limit) instead of an unbounded fetch().
- Extend the generation deadline to cover the full request lifecycle
(catalog freshness check, submit, polling, and image download), and add a
regression test proving that exceeding the deadline issues a DELETE
cancel to Horde's API rather than only timing out locally.
Co-authored-by: diegosouzapw <8016841+diegosouzapw@users.noreply.github.com >
---------
Co-authored-by: pqr <pqr@soraka.ititti.es >
Co-authored-by: diegosouzapw <8016841+diegosouzapw@users.noreply.github.com >
2026-08-18 10:51:57 -03:00
..
2026-08-18 10:49:24 -03:00
2026-08-06 05:24:21 -03:00
2026-08-18 10:50:45 -03:00
2026-08-18 10:49:38 -03:00
2026-08-12 08:41:03 -03:00
2026-08-18 10:51:20 -03:00
2026-08-18 10:51:08 -03:00
2026-07-21 21:42:36 -03:00
2026-08-11 04:30:29 -03:00
2026-08-12 16:54:50 -03:00
2026-08-12 08:40:18 -03:00
2026-08-18 10:50:35 -03:00
2026-08-18 10:51:38 -03:00
2026-03-05 08:41:44 -03:00
2026-08-09 14:15:53 -03:00
2026-08-09 17:02:47 -03:00
2026-08-09 17:54:23 -03:00
2026-08-09 00:21:52 -03:00
2026-08-03 17:22:08 +03:00
2026-08-09 17:54:23 -03:00
2026-08-09 17:02:47 -03:00
2026-08-09 10:07:17 -03:00
2026-08-09 17:02:47 -03:00
2026-07-18 03:17:09 -03:00
2026-07-18 21:18:34 -03:00
2026-08-18 10:51:57 -03:00
2026-08-11 04:25:23 -03:00
2026-08-11 04:25:23 -03:00
2026-08-11 04:25:23 -03:00
2026-08-11 04:25:23 -03:00
2026-08-11 04:25:23 -03:00
2026-08-11 04:25:23 -03:00
2026-08-06 06:05:58 -03:00
2026-07-22 20:41:19 -03:00
2026-07-22 20:41:19 -03:00
2026-07-22 20:41:19 -03:00
2026-06-29 08:40:06 -03:00
2026-07-22 20:41:19 -03:00
2026-08-17 08:23:41 -03:00
2026-08-09 17:54:23 -03:00
2026-08-11 04:25:13 -03:00
2026-07-19 14:46:33 -03:00
2026-07-22 20:41:19 -03:00
2026-06-29 16:51:03 -03:00
2026-06-29 08:40:06 -03:00
2026-08-08 11:45:54 -03:00
2026-07-13 09:12:40 -03:00
2026-07-21 11:50:14 -03:00
2026-05-26 23:51:47 -03:00
2026-08-13 00:02:25 -03:00
2026-08-12 08:41:03 -03:00
2026-08-12 08:41:03 -03:00
2026-08-11 04:31:24 -03:00
2026-07-20 15:56:40 -03:00
2026-07-06 02:25:17 -03:00
2026-05-29 13:21:36 -03:00
2026-07-27 19:06:59 -03:00
2026-08-11 09:53:39 -03:00
2026-08-09 09:51:56 -03:00
2026-04-13 14:43:32 -03:00
2026-08-18 10:50:49 -03:00
2026-06-16 01:00:40 -03:00
2026-06-27 09:07:12 -03:00
2026-08-13 00:40:05 -03:00
2026-04-19 19:50:30 -03:00
2026-04-12 22:41:12 -03:00
2026-08-06 05:24:13 -03:00
2026-08-18 10:49:48 -03:00
2026-06-25 13:17:40 -03:00
2026-07-27 19:06:59 -03:00
2026-07-19 02:31:26 -03:00
2026-06-25 13:17:40 -03:00
2026-05-15 12:51:07 -03:00
2026-07-21 12:19:01 -03:00
2026-05-02 00:48:54 -03:00
2026-06-29 08:40:06 -03:00
2026-05-23 01:46:59 -03:00
2026-07-04 13:00:30 -03:00
2026-08-05 22:40:33 -03:00
2026-07-04 13:00:30 -03:00
2026-08-18 10:51:20 -03:00
2026-08-11 04:35:20 -03:00
2026-08-13 23:02:48 -03:00
2026-06-23 03:08:29 -03:00
2026-08-11 09:08:23 -03:00
2026-08-11 09:08:23 -03:00
2026-08-11 09:08:23 -03:00
2026-08-11 09:08:23 -03:00
2026-08-11 09:08:23 -03:00
2026-05-29 12:44:29 -03:00
2026-08-11 09:59:45 -03:00
2026-05-24 18:05:58 -03:00
2026-07-13 09:12:40 -03:00
2026-08-07 11:23:27 -03:00
2026-08-11 04:25:23 -03:00
2026-07-13 09:12:40 -03:00
2026-07-19 20:52:54 -03:00
2026-07-04 13:00:30 -03:00
2026-06-13 17:27:40 -03:00
2026-08-16 00:16:27 -03:00
2026-05-26 23:51:47 -03:00
2026-08-09 15:21:37 -03:00
2026-07-18 03:17:09 -03:00
2026-06-29 08:40:06 -03:00
2026-08-06 00:08:52 -03:00
2026-07-23 05:17:35 -03:00
2026-05-29 13:21:36 -03:00
2026-07-13 09:12:40 -03:00
2026-04-11 09:38:17 -03:00
2026-07-25 02:52:55 -03:00
2026-07-17 10:43:37 -03:00
2026-07-23 01:33:32 -03:00
2026-07-20 15:57:29 -03:00
2026-07-20 15:57:29 -03:00
2026-07-26 12:11:02 -03:00
2026-07-27 19:06:59 -03:00
2026-07-04 13:00:30 -03:00
2026-07-19 02:31:26 -03:00
2026-07-26 03:53:06 -03:00
2026-08-12 16:09:34 -03:00
2026-08-11 08:40:48 -03:00
2026-05-23 01:46:59 -03:00
2026-08-05 16:07:21 -03:00
2026-05-24 18:05:58 -03:00
2026-07-13 09:12:40 -03:00
2026-08-05 21:42:52 -03:00
2026-07-13 09:12:40 -03:00
2026-07-27 11:30:33 -03:00
2026-07-27 19:06:59 -03:00
2026-05-10 00:55:06 -03:00
2026-06-19 06:49:01 -03:00
2026-08-06 22:55:27 -03:00
2026-04-12 10:34:10 -03:00
2026-08-18 05:47:27 -03:00
2026-08-12 09:04:41 -03:00
2026-08-12 09:04:41 -03:00
2026-08-12 09:04:41 -03:00
2026-05-29 12:44:29 -03:00
2026-04-22 01:39:49 -03:00
2026-08-06 10:40:20 -03:00
2026-07-23 12:17:58 -03:00
2026-07-27 17:25:43 -03:00
2026-07-27 19:06:59 -03:00
2026-07-22 06:59:24 -03:00
2026-07-20 15:57:15 -03:00
2026-07-20 15:57:15 -03:00
2026-08-11 09:51:35 -03:00
2026-07-14 21:45:23 -03:00
2026-07-13 09:12:40 -03:00
2026-07-20 22:26:13 -03:00
2026-07-18 03:11:01 -03:00
2026-07-18 03:11:01 -03:00
2026-08-05 22:31:10 -03:00
2026-07-27 19:06:59 -03:00
2026-08-06 00:08:52 -03:00
2026-07-21 21:25:00 -03:00
2026-08-04 10:06:31 -03:00
2026-08-11 04:34:23 -03:00
2026-07-25 02:52:55 -03:00
2026-08-06 10:41:04 -03:00
2026-05-10 00:55:06 -03:00
2026-06-07 07:20:02 -03:00
2026-07-27 19:08:12 -03:00
2026-07-27 19:08:12 -03:00
2026-07-04 13:00:30 -03:00
2026-08-06 10:40:20 -03:00
2026-08-06 10:40:20 -03:00
2026-07-13 09:12:40 -03:00
2026-07-27 19:08:05 -03:00
2026-07-27 17:25:47 -03:00
2026-04-13 13:11:30 -03:00
2026-08-14 15:40:33 -03:00
2026-08-13 00:02:25 -03:00
2026-06-21 08:56:51 -03:00
2026-08-07 11:13:20 -03:00
2026-08-13 07:52:12 -03:00
2026-08-16 00:14:35 -03:00
2026-08-14 00:57:58 -03:00
2026-08-18 10:50:15 -03:00
2026-07-13 09:12:40 -03:00
2026-08-09 09:55:02 -03:00
2026-07-22 11:28:16 -03:00
2026-07-21 09:15:27 -03:00
2026-07-02 10:47:13 -03:00
2026-08-06 10:41:04 -03:00
2026-07-13 09:12:40 -03:00
2026-05-29 13:21:36 -03:00
2026-06-04 20:05:38 -03:00
2026-05-29 13:21:36 -03:00
2026-08-06 10:41:04 -03:00
2026-05-10 00:55:06 -03:00
2026-05-10 00:55:06 -03:00
2026-08-05 22:31:10 -03:00
2026-08-18 10:50:31 -03:00
2026-08-10 18:16:13 -03:00
2026-06-25 13:17:40 -03:00
2026-08-17 07:04:48 -03:00
2026-07-18 21:18:34 -03:00
2026-07-27 19:07:30 -03:00
2026-06-25 13:17:40 -03:00
2026-08-13 07:53:12 -03:00
2026-08-10 18:16:13 -03:00
2026-07-20 17:53:04 -03:00
2026-07-20 17:53:04 -03:00
2026-05-10 00:55:06 -03:00
2026-05-10 00:55:06 -03:00
2026-07-27 19:06:59 -03:00
2026-06-13 17:27:40 -03:00
2026-08-12 08:41:03 -03:00
2026-06-19 06:49:01 -03:00
2026-08-17 08:23:41 -03:00
2026-06-04 20:05:38 -03:00
2026-07-06 02:25:17 -03:00
2026-08-13 07:52:41 -03:00
2026-08-18 10:50:35 -03:00
2026-07-18 03:17:09 -03:00
2026-08-18 10:50:31 -03:00
2026-03-30 12:58:45 -03:00
2026-08-03 18:22:14 -03:00
2026-07-27 23:57:23 -03:00
2026-08-07 18:08:44 -03:00
2026-06-22 03:17:02 -03:00
2026-06-08 00:48:01 -03:00
2026-04-17 23:21:02 -03:00
2026-04-03 00:15:35 -03:00
2026-07-26 12:11:02 -03:00
2026-08-12 15:58:40 -03:00