← Commit history

1.16.0: Send to AI is ONE call (run-prompt new:true); the two-step new-then-sid flow can never work, and the timeout is 45s

John Lauer ·94afacafd9 ·1mo ago ·parent 6efe49d
2 files changed +30−7
package.json+1−1
@@ -1,6 +1,6 @@ {   "slug": "adom-ui-design",-  "version": "1.15.0",+  "version": "1.16.0",   "type": "skill",   "description": "The Adom UI Design System plus a bundle of focused UI skills (tooltips, floating-windows, toasts, responsive-ui, app-shell, ai-driven-apps, clickable-paths, dark-default, input-feedback, settings-layout). One install drops the whole set of skill files onto your container, plus shared icon assets (the settings cog) so every Adom app draws the same glyph.",   "dependencies": {},
skills/say-strip/SKILL.md+29−6
@@ -159,14 +159,37 @@ That was the park. It is over. ## Send to AI: the server side  The page never talks to the panel directly; its backend does, via the workspace control-API (the URL in `~/.adom/hydrogen-control-url`):+API (the URL in `~/.adom/hydrogen-control-url`). -1. `POST /ai-threads/new` with a staged `name` ("KiCad - say it") and `tags`-   (see the TAG RULE below) - returns the new thread's `sid`. The staged name/tags-   have a 4h TTL, which a real send consumes immediately.-2. `POST /ai-threads/run-prompt` with `{ sid, prompt, submit: true }`.+**ONE CALL. Do not use the two-step new-then-send-by-sid flow.** -The backend endpoint is `POST /api/say-send { phrase }` answering `{ ok, sid }` or+```+POST /ai-threads/run-prompt+{ "new": true, "prompt": phrase, "submit": true,+  "name": "KiCad - say it", "tags": ["dock:kicad-bridge"] }+```++⚠ **An earlier version of this skill specified `POST /ai-threads/new` first and then+`run-prompt` with the returned `sid`. THAT CAN NEVER WORK, and every app that built it+shipped a Send button that opens a tab and delivers nothing.** `/new` has never returned an+id: a thread has no `sid` until its first submitted prompt, and its keeper tab settles in a+background task after `/new` has already responded. So a client that reads `sid || id` from+`/new` always aborts with "the AI panel did not return a thread id", which is exactly the+symptom John hit on 2026-08-24. `/new` now returns explicit `sid: null` / `tid: null` with a+hint pointing at the composite.++The composite stages `name` and `tags` the same way (they attach when the sid appears) and+reports delivery in its response (`delivered_to`), so there is no id round-trip at all.++**Timeout: 45 seconds, not 5 or 10.** `/ai-threads/run-prompt` with `new: true` honestly+takes 10 to 30 seconds on a busy workbench, because it is opening a tab and waiting for the+editor to materialise it. A short client timeout turns a working send into a spurious "could+not reach the AI panel", which was the second half of the same bug. The copy-fallback+already covers a genuine failure, so give the call room to succeed first.++See `hydrogen-ai-threads-api` (0.3.22+) for the endpoint's own documentation.++The backend endpoint is `POST /api/say-send { phrase }` answering `{ ok, delivered_to }` or `{ ok: false, why }` (CORS `*` like every /api/* route, per the dockbar guide). This replaces the parked `/api/say-try` contract.