feat(website): publish agent discovery documents for spiceai.org (#2319)
* feat(website): publish agent discovery documents for spiceai.org
Implement the isitagentready.com checks that apply to a static docs site:
- Serve each page as Markdown to requests that prefer text/markdown
(functions/_middleware.js, using the files the llms-txt plugin now writes)
- Send RFC 8288 Link headers on the homepage
- Publish an RFC 9727 API catalog and /openapi.json for the runtime HTTP API
- Publish the spiceai/skills v2.3.2 skills with an Agent Skills Discovery index
- Publish an ARD manifest at /.well-known/ard.json and ai-catalog.json
- Register WebMCP tools (search_docs, get_page_markdown)
- Declare Content Signals in robots.txt
* fix(website): download the agent skills at a pinned commit, not a tag
A tag can be moved to different content, and the index digests describe only the
downloaded bytes. Pin skillsCommit to the v2.3.2 release commit and reject an
archive of any other commit before publishing.
* fix(website): use the standard ARD media types for skills
A single SKILL.md is text/markdown; profile="urn:air:agent-skills" in the ARD
conformance definitions, not application/agent-skills+md. Drop the llms.txt entry,
whose plain text/markdown type ARD reads as a skill missing its profile.
* fix(website): read search result URLs with get_page_markdown on any deployment
search_docs returns canonical https://spiceai.org URLs, which get_page_markdown
rejected on preview and local deployments. Read the same path from the current
deployment instead. Also write the zero-width space regex as \u200b.
* fix(website): serve openapi.json with its OpenAPI media type, skip Functions for favicons
/openapi.json was served as application/json although the API catalog and Link
headers advertise application/vnd.oai.openapi+json. Root favicon requests invoked
the middleware; exclude them in _routes.json.
6 days ago