feat(region): add multi-region endpoint and workspace support - #189
Open
luk384090-cloud wants to merge 11 commits into
Open
feat(region): add multi-region endpoint and workspace support#189luk384090-cloud wants to merge 11 commits into
luk384090-cloud wants to merge 11 commits into
Conversation
The warning quotes a literal 'dashscope[rl]', which rich reads as a style tag and drops — users were told to run `pip install 'dashscope'`, which installs none of the extras the message is about. Escape the exception text. Also drop the duplicated instruction: the reinforcement package's ImportError already says how to install, so the CLI appended a second copy. The hint is now added only when the underlying message lacks one.
Mirrors agenticCLI 1acdd7b. A provider persisted from a directory that had a custom-extensions.toml (e.g. zhipu) cannot be built elsewhere, and both entry points mishandled it: startup demanded an API key for a provider with no definition and suggested an env var nothing reads, and /provider offered that unbuildable name as the Enter default so a bare Enter returned "Unknown provider: zhipu; cancelled".
- Introduce `set_region(region, workspace_id)` to switch HTTP, WebSocket, and OpenAI-compatible endpoints
- Add support for MaaS international regions including Singapore, US East, Hong Kong, Germany, Japan, besides Beijing
- Enable environment variable configuration for region and workspace ID
- Implement runtime resolution of endpoint URLs with `{workspace_id}` placeholder substitution
- Update internal API methods to support per-call workspace parameter for endpoint resolution
- Enhance documentation with detailed usage examples of multi-region configuration
- Add comprehensive unit tests covering region switching, URL resolving, and environment variable handling
API keys cannot be mixed across regions (401 on mismatch), so document this next to set_region in both READMEs and the sample. Also document US -us model suffix, EU/JP workspace deployment scope, feature availability limits, and shared-domain overrides. Derive the set_region region list from env.MAAS_REGIONS to prevent drift.
Per the official realtime WebSocket API docs, wss endpoints exist only for cn-beijing and ap-southeast-1; set_region still sets the URL for other regions, so warn that WS-based realtime APIs are unavailable there.
- providers/tongyi: switch from compatible-mode to the native generation route so calls land in the native SLS logstore; per-model text/multimodal-generation endpoint fallback covering both the HTTP-400 and the 200-SSE error-event variants of "url error"; content parts/tool calls converted to the native shape - embedded/sdk: new module + guide_url params; the dashscope expert entry stamps x-dashscope-sdk-client as acli/<version>/expert and the TUI/REPL startup banners show the locale-aware expert guide link - first-run surfaces: get-api-key and dashscope-sdk-expert links in the no-key gate, the example-download offer, and the example README - README/README_zh: how to obtain an API key + expert guide link - includes the pending acli sync baseline (provider/key wizard fixes, subagents/config/dev/session/adapter updates)
…majors Python 3.8 is 0.09% of recent downloads (pypistats, last 30 days) and textual 8.x requires 3.9+, so py3.8 silently back-resolved the acli TUI to an untested textual 6.x. Raise python_requires to >=3.9, widen the CI matrix to 3.9-3.13 (it only ran 3.8), unify the httpx floor at 0.27 with agenticCLI, cap textual/anthropic/openai below their next breaking majors, and switch the camera extra to opencv-python-headless (acli only uses non-GUI cv2 APIs; headless drops the libGL system dependency).
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.
set_region(region, workspace_id)to switch HTTP, WebSocket, and OpenAI-compatible endpoints{workspace_id}placeholder substitutionDescription
[Describe what this PR does and why]
Related Issue: Fixes #[issue_number] or Relates to #[issue_number]
Security Considerations: [Check if API keys or sensitive credentials are exposed in code/logs]
Type of Change
Component(s) Affected
Checklist
Testing
[How to test these changes]
Additional Notes
[Optional: any other context]