Repository navigation
Fix cloud-provider model selectability; clean up stale docs - #90
Merged
Merged
Conversation
- README: correct the license footer (MIT -> PolyForm Noncommercial, matching LICENSE and docs/License-FAQ.md), fix the memory-write endpoint description to stop claiming a /note fallback that was removed, and note that vLLM is not actually implemented yet despite being mentioned as a local backend alongside Ollama. - NOTICE.md: drop a dead LICENSE.md link (only LICENSE exists). - CREDITS.md: fix a section-numbering gap (## 1 jumped to ## 3). - docs/operations/error-reporting.md: SENTRY_RELEASE is already passed in docker-publish.yml; the "not wired up yet" note was stale. - AGENTS.md/ANTIGRAVITY.md/CLAUDE.md: add the undocumented test:agent-turn and check:ci-hub-plugin-drift commands, which had drifted out of sync with package.json's actual scripts. Found via a test-coverage and docs-staleness audit of the ci-server connector, ci-hub runner plugin, and LLM config-reconcile engine. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
CI_CLOUD_* keys configured through Hub's AI cloud tokens were registered in models.providers but never added to agents.defaults.models, so a fully-configured cloud provider (OpenAI, Anthropic, Google, GitHub Copilot) was invisible to the model picker. syncCloudProviders now merges each active provider's resolved model into agents.defaults.models the same way the ci-hub/ollama sync already does, and prunes a provider's entry when its Hub key disappears. It only creates the agents.defaults node when at least one cloud provider is or was active, so a minimal config with no creds still gains no empty nodes. Also fixes a latent reordering bug in the neighboring ci-hub/ollama merge: it rebuilt agents.defaults.models via filter-then-reinsert, which re-appends ci-hub/ollama keys after any other-prefixed keys that happened to precede them, flipping `changed` on an otherwise idempotent reconcile. Both merges now mutate the existing record in place instead, which was needed to make the cloud-provider fix above idempotent in the (now common) case where local and cloud models coexist. Extended tests/config-reconcile.test.mjs to assert selectability, not just registration, and to cover a provider's model key disappearing when its Hub key is removed. node --test, npm test, and test:schema (10/10 scenarios against the real openclaw schema) all pass. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
config-reconcile.cjs'ssyncCloudProvidersregisteredCI_CLOUD_*providers (OpenAI, Anthropic, Google, GitHub Copilot) inmodels.providers, but never added them toagents.defaults.models— so a fully-configured cloud provider was registered but unselectable in the model picker. It now merges each active provider's resolved model intoagents.defaults.models, mirroring the existing ci-hub/ollama sync, and prunes the entry when its Hub key disappears.agents.defaults.modelsvia filter-then-reinsert, which reorders keys — and therefore spuriously flags the config aschanged— whenever other-prefixed keys (like the new cloud ones) are also present. Both merges now mutate the existing record in place instead, so a no-op reconcile stays a genuine no-op.LICENSE.mdlink, aCREDITS.mdsection-numbering gap, an unqualified vLLM support claim, and added the undocumentedtest:agent-turn/check:ci-hub-plugin-driftcommands toAGENTS.md/ANTIGRAVITY.md/CLAUDE.md(all three had drifted frompackage.json's actual scripts).This came out of a background audit of the CI-Server connector, the CI-Hub runner plugin, and this LLM config-reconcile engine's test coverage — the cloud-provider gap was the best-scoped of three known P0s (confirmed still present from a prior full review) and the safest to land first since it's additive and doesn't touch auth.
Test plan
node --test tests/config-reconcile.test.mjs— 198/198 pass, including an extended idempotency check across two reconciles with mixed ci-hub/ollama/cloud keysnpm test(full unit + shell suite) — all greennpm run test:schemaagainst the realopenclawCLI (Node 24) — 10/10 generated scenarios valid against OpenClaw's strict schema, includingeverything/hub-mcptest:agent-turn— not run; needs Docker, unavailable in this environment🤖 Generated with Claude Code