Skip to content

feat: add Ace model provider and media MCP presets - #4163

Open
acedatacloud-dev wants to merge 7 commits into
Tencent:mainfrom
AceDataCloud:codex/acedatacloud-model-provider
Open

acedatacloud-dev wants to merge 7 commits into
Tencent:mainfrom
AceDataCloud:codex/acedatacloud-model-provider

Conversation

@acedatacloud-dev

@acedatacloud-dev acedatacloud-dev commented Oct 11, 2026 •

Copy link
Copy Markdown

Problem and resulting behavior

Users can configure Ace through a custom OpenAI-compatible URL, but cannot select it as a named model vendor or find its media tools by service name before manually entering an endpoint. This change adds two complementary native entries:

  1. Ace Data Cloud in the existing dynamic model Provider picker.
  2. Five independent connection presets in Toolbox → MCP Services → Add Service: Suno by Ace Data Cloud, Seedance by Ace Data Cloud, HappyHorse by Ace Data Cloud, GPT Image by Ace Data Cloud, and Nano Banana by Ace Data Cloud. Search matches service names, relevant aliases and categories. Each uses the exact Ace brand icon and explicitly identifies the integration provider; it does not claim to be an official app from the model brand.

Selecting a preset fills the public endpoint, Streamable HTTP, usage guidance and private credential strategy. It does not save a service, connect, submit a model/media request or overwrite an existing saved connection. The user checks the config, pastes their own key and saves through the existing two-step flow. The key stays in the existing encrypted credential field; a single Bearer prefix is added for the preset. Switching presets clears the prior key. Reviewed usage guidance is persisted with the initial service so the parent row reload before step two cannot discard it. Custom MCP setup and other configured services remain available.

The native entry links to Ace Applications and current model/pricing information with the accepted four-field attribution convention. The user still needs service entitlement and balance. Generation remains billable, tool approvals remain the host's policy, and usage instructions require one submission followed by polling the same task ID. No fallback chain, price table, shared token or automatic generation is added.

Model Provider contract

The provider keeps the existing submission's 88 public chat candidates captured on 2026-10-11, /v1 Chat Completions base, Bearer authentication and max_tokens. Three image-generating entries and two Messages-only Claude 5.5 entries remain excluded. Per-model inference or entitlement is not claimed. The exact official PNG SHA-256 remains 3e2c6e2d1a61a549dae2374ec4444c77f4c2617c8f3772bdd4cd6e52bf20767e; existing SVG transport is unchanged.

The branch incorporates current upstream 2c0d8384398ca756ee414eef01b71caf91e2caa6. All non-Ace catalog entries are preserved exactly. Combined catalog: 31 providers / 447 rules.

Validation (2026-10-18)

  • make model-catalog-check: passes all internal/models/...; 31 providers / 447 rules, no SSRF test changes.
  • go vet ./internal/models/providers ./internal/models/parity ./internal/handler: passes.
  • golangci-lint v2.12.2 run --new-from-rev=2c0d8384398ca756ee414eef01b71caf91e2caa6 ./...: 0 issues, one existing unrelated nolint warning.
  • Frontend focused preset/dialog/i18n/style checks: 40 pass. New behavior tests cover per-service search, secret-free drafts, no network/save on selection, preserving existing connections, key clearing, Bearer normalization and four attribution fields.
  • npm run type-check: passes.
  • npm run build: passes; existing large-chunk warnings remain.
  • npm test: 1802 tests, 1800 pass, 1 skip, 1 failure. The unrelated src/views/knowledge/assistantRefresh.test.ts test refreshes data source controls after assistant changes and stops on unmount fails because its fixture does not mock @/composables/useConnectorLabel. The exact same failure was reproduced from unmodified upstream/main files at 2c0d8384; this PR does not alter that test or datasource component.
  • git diff --check upstream/main: passes. All six current frontend locales have translated preset text.
  • On unmodified stable v0.8.3, existing authorized keys connected through normal host APIs to Suno (42 tools), Seedance (7), HappyHorse (7), GPT Image/OpenAI (15), Nano Banana (4), all v1.30.0. Only connection/schema reads were performed; no new generation or inference.

The official SheetJS tarball needed chunked retrieval on this host; its combined bytes were checked against the committed package-lock SHA-512 before installing. No lockfile, dependency version or registry replacement is committed.

Evidence and release boundary

The earlier actual model-editor screenshot remains a 2026-10-12 development preview, not a screenshot of the new service picker:

Historical Ace model editor preview

The companion Skills guide PR supplies bilingual key onboarding, real pinned console/WeKnora screenshots and five separate secret-free import configurations for existing releases. The new picker has build/type/interaction tests; browser validation is queued separately and no fake screenshot is supplied.

The prior Suno/GPT Image generated tasks and unique bills retain their historical dates. Neither those tests nor this source submission establish official marketplace listing, stable-release availability or new customer revenue. Current stable v0.8.3 has neither the named Ace vendor nor these presets. Hosted workflows may need maintainer approval; local checks are not a claim that those workflows ran.

Rollout and review

Upstream merge and release expose the named Provider and selectable service presets. Every user provides their own credential and chooses/enables the tools they need. No schema migration, automatic service creation or model switch. Revert removes the Provider/catalog additions and frontend preset entry; existing user-created MCP connections remain ordinary saved services.

Self-reviewed. No adversarial review was requested. No merge authorization is inferred.

2026-10-19 credential lifecycle follow-up

Targeted negative/cancel/save checks reproduced two remaining local-state issues: unsaved credentials remained in reactive state after closing the drawer and after a successful connection save. This update clears only the local API key, token, client secret and pasted JSON on close/unmount or successful save. A failed save retains the private draft for retry while rendering only a generic error; stored server credentials are untouched. A newly selected Ace preset now requires a nonblank user key, while custom public MCP services retain optional authentication.

The two lifecycle cases fail before the fix and pass afterward. 44 focused dialog/preset/i18n/style checks, type-check and production build pass at the updated tree. The older full-suite upstream datasource fixture failure remains disclosed above; no unrelated test was changed and the green model suite was not rerun for this frontend-only fix.

Read-only verification through the unmodified stable v0.8.3 host used the same create/private-credentials/test/tools resources. Unauthenticated local requests returned 401, credential replacement and secret-free readback succeeded, and only a disposable local service was removed afterward. Importantly, Suno initialize/tools discovery also succeeds with an invalid placeholder credential: connection/catalog success is not a test of business API authorization, balance or generation entitlement. The guide now states this boundary; no generation or task-query request was used to probe it. A separately reported Seedance initialization failure remains with its shared MCP owner; this PR does not patch or bypass that service.

@acedatacloud-dev

Copy link
Copy Markdown
Author

The two PR workflows are currently action_required, pending first-contributor approval: App and Go Lint. Could a maintainer approve them to run? The local model catalog suite and scoped go vet passed; the PR body documents this host's DNS-proxy-only test workaround. I will address any CI or review findings on this open PR.

@acedatacloud-dev acedatacloud-dev changed the title feat(models): add Ace Data Cloud provider feat: add Ace model provider and media MCP presets Oct 17, 2026
@acedatacloud-dev

Copy link
Copy Markdown
Author

Technical update for the current submission, now at 869cb0a9fdaa6762a9cbfe983e303914694beb12 (based on upstream 2c0d8384):

  • The named Ace model provider is accompanied by five independent Add MCP Service presets: Suno, Seedance, HappyHorse, GPT Image and Nano Banana, each explicitly “by Ace Data Cloud.” Service-name search, private-key entry and ordinary custom-MCP setup are covered by tests. Selecting a preset makes no network request or saved service, and users still choose which tools and approval policies to enable.
  • The latest follow-up fixes credential-draft lifetime: cancel/close and successful save clear local unsaved secrets and pasted JSON; failed save keeps the private retry input without rendering raw upstream errors. New Ace presets require the user's own key. Two negative cases reproduced the issue before the fix; all 44 focused dialog/preset/i18n/style checks, type-check and production build pass afterward.
  • The model catalog suite, scoped vet and diff-scoped lint passed for the previous native implementation; the current follow-up changes no model/backend protocol. The full frontend suite's one datasource-fixture failure was independently reproduced on unmodified upstream and is disclosed in the PR body.
  • Normal APIs on an unmodified v0.8.3 fresh SQLite instance verified save/private-credential replacement and tool discovery. Connection/schema success does not establish business API authorization or balance; that limitation is now documented. No new model inference, media generation or task-query request was made for this follow-up. New native-picker browser acceptance remains explicitly pending; the existing images are dated development captures, not release proof.

The current App, Frontend and Go Lint runs still need first-contributor workflow approval. Could a maintainer enable the checks and advise whether these native service presets fit the project's contribution direction? I can address concrete review findings on this same PR. I have kept the implementation and onboarding in their existing submissions, without a duplicate feature request or marketplace claim.

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant