Conversation
|
Thanks @BX166 for taking the time to contribute. This repository is observing a maintainer-managed PR intake gate in dry-run mode, so this pull request is staying open. This note helps maintainers prepare the allowlist before any enforcement is considered. Please read |
|
Addressed the review: AICraft is now documented in
This satisfies |
|
thank you! will work on getting this in |
Once `aicraft` joins the tuple in `hosted_openai_compat_hosts_are_templates_not_enum_variants` the line exceeds the width, so `cargo fmt --all -- --check` rejected it and the required Lint check stayed red. Applied by a maintainer rather than sent back as a review round-trip. The contribution is unchanged; only its formatting. Pushing to the fork was refused despite maintainerCanModify, so this lands on an integration branch per AGENTS.md.
|
Thank you for this, @BX166 — and I'm sorry it took the route it did. I'm closing it, but not because anything was wrong with the work. It followed We're removing provider setup templates entirely (#6289). The founder's call AICraft stays supported. I checked it out, and it's a real service — Hainan One correction worth having on the record: the PR set the default model to Two things that went wrong on our side, so you know none of it was you:
If you want to keep contributing here — and I hope you do — #6289 itself is open, |
#6171 added AICraft as an eleventh provider setup template. It is closed unmerged — not because anything was wrong with it, but because it is what made the template layer's cost visible, and the decision now is to remove that layer entirely and let named OpenAI-compatible hosts be ordinary providers (#6289). A contribution that changes a design is a contribution. Credited in the "Reports and reproductions" half of the band rather than "Merged or adapted", because the honest claim is that it shaped a decision, not that its code shipped. All four credit surfaces move together, which the contract requires: the `### Contributors` block in `CHANGELOG.md`, the v0.9.14 band in `docs/CONTRIBUTORS.md`, `RELEASE_HELPERS` in `web/lib/release-credits.ts`, and `repository.requiredCandidateCredits` in `docs/public-surface-facts.json`. `public-copy.test.ts` asserts the handle sets are identical across the first three, so a partial update is a red build rather than a quiet omission — which is the right shape for a credit gate. Their base URL and key env are carried into #6289 so the replacement docs keep them, and the note not to carry `claude-4.6-sonnet` across is recorded there too: AICraft advertises DeepSeek, Qwen, GLM, MiniMax and Doubao, and lists no Anthropic models. Tests: `npx vitest run` in `web/` — 51 files, 471 tests, all passing. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Signed-off-by: CodeWhale Bot <bot@codewhale.net>
…6289) Slice 1 of the template removal: hosted Chat Completions backends are ordinary named [providers.<name>] tables now, so the vendor list becomes documentation (base URLs, example models, key envs) instead of compiled rows. AICraft joins the table per #6171/#6288 with its advertised model families and no Anthropic default, per the issue. Gate: codewhale-config provider_templates 9 passed 0 failed (doc-drift test still green).
#6289 retired the `ProviderSetupTemplate` layer and moved SenseNova, Baseten, Groq, Cerebras, DashScope and Command Code into `crates/config/assets/provider_descriptors.json` — then wired that file to nothing. `bundled_provider_descriptors()` had exactly one consumer in the workspace, a pricing test. Six vendors silently lost their `/provider` rows, and it went unnoticed partly because two unrelated types are both named `ProviderDescriptor`. AICraft never got a row at all: PR #6171 was closed pointing at that migration, so it was waiting on a mechanism that never arrived. Each bundled descriptor is now a row again, built through the *same* named-custom-provider row builder a configured host uses rather than a second pipeline: the descriptor is projected into the `[providers.<id>]` shape the user would have written, so endpoint, bootstrap model and "missing <ENV>" reporting all come from one place. A descriptor whose id or alias already names a `[providers.*]` entry is dropped, so the configured row stays the only one. Activating a row opens the custom-provider form prefilled from the descriptor and submits through the existing path. These rows are an invitation, not a route: they are deliberately not `is_configured`, so they sort with the rest of the unconfigured catalog and only the form's submit writes anything. Also collapses four near-identical `Stage::CustomForm` entry points onto one `prefill_custom_form`, which is what made room for the descriptor variant. AICraft's endpoint, credential env and bootstrap model are @BX166's, recovered from their closed PR. Co-authored-by: BX166 <BX166@users.noreply.github.com> Evidence: cargo check -p codewhale-tui --lib -> exit 0, no warnings cargo fmt --all -- --check -> clean cargo test -p codewhale-tui --lib provider_picker -> 143 passed; 0 failed New tests confirmed running: every_bundled_descriptor_is_a_picker_row_exactly_once a_configured_descriptor_id_does_not_duplicate_its_row activating_a_descriptor_row_submits_it_as_a_named_custom_provider Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
Summary
Adds AICraft (
aicraftapi.com) as an OpenAI-compatible provider setup template, following the same descriptor-row pattern as SenseNova, Baseten, Groq, Cerebras, and Command Code.AICRAFT_TEMPLATE_ID = "aicraft"AICRAFT_BASE_URL = "https://aicraftapi.com/v1"AICRAFT_DEFAULT_MODEL = "claude-4.6-sonnet"AICRAFT_API_KEY_ENV = "AICRAFT_API_KEY"Changes
ProviderSetupApply::Compatibledescriptor row, inserted before the unpublishedagnesentry.settings_value_names_fillable_then_unpublishedto includeaicraftin the fillable list.aicraftentry tohosted_openai_compat_hosts_are_templates_not_enum_variants.Test plan
settings_value_names_fillable_then_unpublished,hosted_openai_compat_hosts_are_templates_not_enum_variants) are expected to pass under the existingcrates/configtest suite.No-Issue: provider setup template addition; no tracking issue was filed for AICraft. (Line added by a maintainer to satisfy the required
linkcheck — the contribution itself is unchanged.)