mirror of
https://github.com/Twigpine/zero.git
synced 2026-11-10 17:57:54 -10:00
* feat(aimlapi): AI/ML API guided onboarding (top-up + key issuance) Add the AI/ML API provider integration to the zero CLI: a guided TUI onboarding sub-flow that takes an existing key or an email top-up and writes the issued key into the provider profile, attributed to the Gitlawb rebate partner. - internal/aimlapi: OpenAI-compatible client, partner-checkout top-up, key validation, streaming, and endpoint config (Paths A/B/C). - providercatalog / providermodelcatalog: register the aimlapi provider with default headers and models. - tui: aimlapi onboarding screen wired into the provider wizard and onboarding flow. Default endpoints point at production (auth/app/api/pay/aimlapi.com); each is overridable via AIMLAPI_*_URL env vars. Co-Authored-By: Claude Opus 4.8 <[email protected]> * fix(aimlapi): address review findings in onboarding flow - topup: use errors.As for the 5xx retry check so a wrapped APIError still retries instead of aborting a paid checkout. - onboarding: a Path-A top-up on an email with no account now lands on a single coherent "key saved, balance not topped up" screen instead of a green "ready" plus a red error. - onboarding: an empty amount field is rejected instead of silently falling through to the $25 default. - collapse the two identical top-up prompt constants into MsgTopUpPrompt and drop the dead amountPrompt() branch. - reuse stdlib maps.Clone instead of a third bespoke header-copy helper. Co-Authored-By: Claude Opus 4.8 <[email protected]> * fix(aimlapi): retry transient poll errors and sharpen amount validation * fix(aimlapi): retry transient poll errors and surface real amount errors * docs(aimlapi): document exported client API; drop out-of-scope gitignore entry Addresses the two CodeRabbit PR checks on #655: - Add doc comments to the exported aimlapi client API (Client, APIError, the session/checkout/onboarding types and their methods) and ParseAmountUSD, to satisfy the docstring-coverage check. - Remove the unrelated /zero.exe~ .gitignore entry that an earlier review-fix commit added; it is out of scope for the provider work, so the PR no longer touches .gitignore. Co-Authored-By: Claude Opus 4.8 <[email protected]> * fix(aimlapi): render aimlapi row like other recommended providers * fix(aimlapi): resolve onboarding review findings (Path A funding, base URL, request cancellation) * fix(aimlapi): validate pasted API keys * test(aimlapi): clarify pasted key validation * test(aimlapi): cover key-balance low-balance transition * fix(aimlapi): reject non-finite top-up amounts * fix(cli): scope and canonicalize provider headers * fix(tui): distinguish invalid verification codes * feat(aimlapi): resume account-bound top-ups safely * feat(tui): offer top-up for existing AIMLAPI keys * feat(tui): reuse AIMLAPI env key on first run * feat(tui): reuse configured AIMLAPI profiles * test(aimlapi): trim redundant flow coverage * fix(tui): preserve existing AIMLAPI profile metadata * fix(tui): clone AIMLAPI headers in env fallback * fix(aimlapi): address remaining review findings * fix(aimlapi): harden onboarding lifecycle * fix(aimlapi): preserve validated checkout context * fix(aimlapi): harden checkout retry state * fix(tui): clarify AIMLAPI configured choices * fix(aimlapi): make checkout retries idempotent * fix(aimlapi): validate checkout responses * fix(providers): reconcile aimlapi catalog after rebase --------- Co-authored-by: Lookoff123 <[email protected]> Co-authored-by: Claude Opus 4.8 <[email protected]>
43 lines
1.9 KiB
Go
43 lines
1.9 KiB
Go
package aimlapi
|
|
|
|
// UI strings shared by the first-run and provider-wizard onboarding surfaces.
|
|
|
|
const (
|
|
// Path A — existing API key. Pick-path prompt + option labels.
|
|
MsgAPIKeyInputPrompt = "Enter your aimlapi.com key."
|
|
MsgAPIKeyInvalid = "API key is invalid. Please make sure you enter a valid aimlapi.com key."
|
|
MsgPickPathPrompt = "Do you have aimlapi.com key?"
|
|
MsgPickPathHaveKey = "I already have aimlapi.com key"
|
|
MsgPickPathHaveHint = "Proceed to paste the key"
|
|
MsgPickPathNewUser = "I am a new user"
|
|
MsgPickPathNewHint = "One click set up"
|
|
// Path B — email.
|
|
MsgEnterEmail = "Enter your email.\nTo access aimlapi.com dashboard."
|
|
MsgEmailInvalid = "Email format is incorrect."
|
|
MsgAccountActionInvalid = "aimlapi.com returned an unsupported account action. Please try again."
|
|
// %s = email
|
|
MsgCodeSent = "We sent a 6-digit code to %s.\nEnter it below to continue."
|
|
MsgCodeIncorrect = "Code you've entered is incorrect."
|
|
|
|
// Balance check.
|
|
MsgLowBalance = "Your aimlapi.com balance is running low.\nIt is recommended to top up your balance."
|
|
MsgEverythingRuns = "Everything is ready."
|
|
// Low-balance choices (spec wording).
|
|
MsgLowBalanceTopUp = "Sure, let's do that"
|
|
MsgLowBalanceSkip = "I'll skip topping up the balance for now"
|
|
|
|
// Top-up workflow.
|
|
MsgTopUpPrompt = "Add credits.\nEnter an amount (min $20)."
|
|
MsgAmountRequired = "Please enter a top-up amount."
|
|
// %s = checkout URL
|
|
MsgTopUpBrowserFallback = "If the browser did not open automatically please use this link to top up your account: %s"
|
|
MsgTopUpFailed = "Top up failed. Please try again."
|
|
MsgTopUpSuccess = "Top-up successful."
|
|
|
|
// Success — key delivered.
|
|
// %s = amount in dollars (e.g. "25")
|
|
MsgTopUpAddedFmt = "$%s has been added to your balance."
|
|
// %s = email
|
|
MsgSuccessMagicLink = "We've emailed you a magic link to %s. Use it to access your aimlapi.com account and review your usage and balance."
|
|
)
|