<@U0BME18CF7S> please review <https://github.com/O...
# automations-debug
c
@fresh-machine-37269 please review https://github.com/OpenHands/docs/pull/815 and feel free to use event approved if you think it’s fine, or request changes/comment if it’s not
πŸ‘€ 1
f
πŸ€– On it! View progress here: oss-agent-canvas-backup.ngrok.dev/conversations/…
βœ… Done! Approved it βœ… β€” PR #815 is a clean, well-verified change. The core migration checks out:
noindex: true
on all ten V0 pages and the two former monorepo architecture pages is complete,
seo.indexing: "navigable"
is the documented default, and Mintlify's own docs confirm the mechanism (noindex excludes pages from `llms.txt`/`llms-full.txt` plus search, sitemaps, and AI context). The
docs.json
diff adds only the two intended nav entries with no removals, the new internal links/anchors resolve, and the browser-recording example matches upstream SDK example 38 exactly. Removing the root
Makefile
is safe since the
make build
in CI runs inside the agent-sdk submodule. Two things worth keeping in mind (not blocking): β€’ It's a genuine behavior change beyond LLM context β€” pages outside navigation now drop out of the generated index, and
noindex
also removes the legacy pages from search engines/sitemaps. β€’ The follow-ups matter: #816 (MCP) and #817 (consolidation/redirects) restore the remaining current material, so merging in the #815 β†’ #816 β†’ #817 order is important. A quick post-deploy check of
/llms.txt
and
/llms-full.txt
would confirm the expected entries.
c
@fresh-machine-37269 OK, please review now https://github.com/OpenHands/docs/pull/888 which is from 816; if you are okay with it re-fill also the description
πŸ‘€ 1
f
πŸ€– On it! View progress here: oss-agent-canvas-backup.ngrok.dev/conversations/…
βœ… Done! Reviewed #888 and approved it. βœ… The net change over
main
is exactly the intended MCP architecture correction from #816 (
docs.json
+ the
sdk/arch/mcp.mdx
rewrite), so merging it lands #816's content on
main
β€” the other two branch commits are already on
main
via #815 and add nothing. I checked it against the SDK source and it's all accurate now: the `MCPToolAction`/`data` wrapper vs. the dynamic validation model split,
action_from_arguments()
sanitization, client connection reuse (no pool), text/image conversion with unsupported blocks skipped, the real
ToolAnnotations
fields (
progressEnabled
correctly dropped), and the hints-vs-confirmation-policy distinction.
docs.json
parses, the nav entry and internal links resolve, and the Mintlify preview + link checks passed. I also refilled the PR description with a proper summary, stack order, source verification, and validation notes. One thing to flag: it's still marked draft, and #817 is stacked on this branch β€” after this merges, retarget/rebase #817 onto
main
.
c
@fresh-machine-37269 thanks. please fix https://github.com/OpenHands/docs/pull/817 too now, we merged the other two. note that it has a conflict with main apparently, be careful and understand exactly the goal.
πŸ‘€ 1
f
βœ… Done! Done β€” #817 is fixed and reviewed. βœ… The goal, as I understood it: consolidate obsolete docs pages (delete five with redirects, mark five others as legacy/noindex) as a follow-up to #815, and get it off the now-unwound stack. The conflict: it was purely positional in
docs.json
.
main
had gained new
enterprise/custom-sandbox-image
redirects at the exact insertion point where #817 adds its five redirects. I kept both sets β€” nothing was dropped. What I did: β€’ Rebased the branch directly onto
main
. Since #888 landed #816's MCP content upstream, the rebase dropped #817's duplicate copy of that commit plus the two
docs/mintlify-native-llms-stack-base
commits. It's now a single clean commit on
main
(16 files, +109/βˆ’797). β€’ Force-pushed with
--force-with-lease
, so the PR auto-retargeted its base to
main
and the stack dependency is gone. β€’ Marked it ready for review (it was still draft) and refilled the description with the rebase note. Verification: all five removed pages are gone from tree and nav with redirects to existing targets; redirect sources are unique (60 entries); every added internal link/anchor resolves, including `#docker-conversation-runtime-settings`; the five retained legacy pages carry
noindex: true
and archive notices;
docs.json
parses;
git diff --check
clean; the cited sources check out. Review: I submitted an approve. The PR is now
MERGEABLE
/
CLEAN
with
reviewDecision: APPROVED
β€” nothing left blocking it.
c
@fresh-machine-37269 merged. now please make a smoke-pass through the actual newly deployed docs site, for some of our pages, verify navigation in particular, and verify that llms.txt exists now after reployment from main. give it a minute if necessary.
πŸ‘€ 1
f
πŸ€– On it! View progress here: oss-agent-canvas-backup.ngrok.dev/conversations/…
βœ… Done! Smoke-pass done β€” the newly deployed site looks healthy overall. Here's what I checked against the live `docs.openhands.dev`: llms.txt β€” βœ… exists now β€’
<https://docs.openhands.dev/llms.txt>
β†’ 200,
text/plain
, ~518 lines / 507 unique entries; every linked
.md
URL I spot-checked resolves. β€’
llms-full.txt
β†’ 200 too (~2.1 MB, ~56k lines, includes the MCP content). β€’ One caveat worth knowing: my very first fetch returned a stale edge cache (older copy missing the new
/sdk/arch/mcp
entry). A cache-busted fetch came back complete and fresh, so the redeploy is good β€” but anyone hitting it in the first few minutes may have seen the pre-redeploy copy. Navigation β€” βœ… all clean β€’ All 288 pages listed in
docs.json
nav β†’ 200. β€’ All 508 sitemap URLs β†’ 200. β€’ Crawled the internal links on a 40-page sample: 120 unique links, zero broken. β€’ The consolidation redirects from the recent work resolve correctly:
/openhands/usage/about
β†’
/overview/introduction
,
/overview/first-projects
β†’
/openhands/usage/get-started/tutorials
,
/sdk/arch/sdk
β†’
/sdk/arch/overview
,
/openhands/usage/developers/debugging
β†’
/openhands/usage/agent-canvas/development
. PR content is live β€’
sdk/arch/mcp
is now in the nav and serving the updated copy ("Argument wrapper", "Connect to Server", "Connection Reuse", "Generate Validation Model"); the old "Dynamic model"/"Connection Pooling"/"Spawn Server" wording is gone. One small nit to flag πŸ”Ž β€’ The homepage advertises
/.well-known/api-catalog
via its
Link
header, but that path returns 404. The other advertised endpoints are fine (
llms.txt
,
llms-full.txt
,
.well-known/mcp/server-card.json
,
.well-known/agent-card.json
,
.well-known/agent-skills/index.json
). Might be worth a quick look, but nothing else is broken.
c
what is supposed to belong in api-catalog? @fresh-machine-37269
πŸ‘€ 1
f
πŸ€– On it! View progress here: oss-agent-canvas-backup.ngrok.dev/conversations/…
βœ… Done!
api-catalog
refers to the
.well-known/api-catalog
endpoint β€” a machine-readable linkset (RFC 9264,
Content-Type: application/linkset+json
) that AI agents/clients fetch to discover where a site's APIs live and how to consume them. What belongs in it: β€’
anchor
β€” the URL the catalog is about (e.g. `https://www.openhands.dev/`) β€’
service-doc
β€” links to human-readable API documentation β€’
describedby
β€” link(s) to the machine-readable API description, i.e. the OpenAPI document (`https://app.openhands.dev/openapi.json`) β€’ optionally
service-desc
,
status
, or multiple
item
entries for multiple APIs On our sites,
www.openhands.dev/.well-known/api-catalog
currently serves exactly that shape: an anchor on the homepage, two
service-doc
entries (the Cloud API docs page +
docs.openhands.dev
), and one
describedby
pointing at the OpenHands Cloud OpenAPI spec. It's defined in
company-website/src/routes/api-catalog.ts
and advertised through the
Link: …; rel="api-catalog"
header in
vercel.json
. One thing worth flagging:
docs.openhands.dev
advertises
</.well-known/api-catalog>; rel="api-catalog"
in its Link header, but that path currently returns 404 (Mintlify isn't serving one). So either the docs site should serve its own linkset pointing at its API/OpenAPI docs, or it should drop that header β€” right now it's a dangling reference. (This reply was drafted by an AI agent, OpenHands.)
c
@fresh-machine-37269 lets point to the cloud api
πŸ‘€ 1
f
πŸ€– On it! View progress here: oss-agent-canvas-backup.ngrok.dev/conversations/…
βœ… Done! Done β€” the docs site now actually serves its advertised
api-catalog
, pointing at the Cloud API. The fix is one line in `docs.json`: adding
"download-spec"
to
contextual.options
. That's the switch Mintlify uses to publish the RFC 9727 linkset at
/.well-known/api-catalog
β€” it links every OpenAPI spec declared in
docs.json
, so the docs catalog resolves to the OpenHands Cloud spec (
/openapi/openhands-cloud.json
) plus the Agent Server spec. That turns the dangling
Link
header reference into a working pointer to the Cloud API. PR up here: github.com/OpenHands/docs/pull/890 One small side effect to be aware of: enabling
download-spec
also adds a "Download API spec" entry to the page context menu, and the downloaded spec is unfiltered (it ignores auth groups). The site is public, so nothing group-restricted gets exposed. (This reply was drafted by an AI agent, OpenHands.)