4 Commits
Author SHA1 Message Date
New Futureandopenhands e9ad33e88b Feat/v5 web mcp (#745)
* feat(rust): add Web dashboard and MCP services

Share configuration, status and synchronization between Web and MCP; add authenticated HTTP, stdio lifecycle support, in-process scheduling and offline regression tests. Exercise native tests on the existing Windows/macOS/Linux CI matrix.

Co-authored-by: openhands <openhands@all-hands.dev>

* ci(rust): allow manual cross-platform validation

Enable workflow_dispatch for feature-branch CI without requiring PR creation. Preserve matrices, permissions, publishing boundaries and trusted-branch cache policy.

Co-authored-by: openhands <openhands@all-hands.dev>

* ci(rust): validate feature branch pushes

Run the existing Rust cross-platform matrix for feat/** pushes while retaining trusted-branch-only cache writes and unchanged release triggers.

Co-authored-by: openhands <openhands@all-hands.dev>

* ci(rust): remove temporary branch trigger

The v5 pull request now exists and runs the complete native matrix, so restore the original trusted push branches while retaining Web/MCP paths and tests.

Co-authored-by: openhands <openhands@all-hands.dev>

---------

Co-authored-by: openhands <openhands@all-hands.dev>
2026-09-12 12:09:26 +08:00
93b79d2103 feat(v5): prepare the Rust DDNS development line (#728)
* feat(rust): add parallel DDNS MVP

Add a synchronous Rust client with compatible configuration, IP discovery, caching, and the first four providers.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>

* fix(rust): address review compatibility gaps

Handle DNSPod failures safely, accept Python-compatible log thresholds, document Rust regex limits, and tolerate non-Unicode environment entries.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>

* fix(rust): preserve generated provider options

Serialize endpoint overrides and --extra.* values so generated configuration files reproduce accepted CLI settings.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>

* fix(rust): align provider and config behavior

Keep provider lookup parameters scoped, continue DNSPod zone discovery safely, and match Python configuration and regex semantics.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>

* fix(rust): harden credentials and CI scoping

Redact provider credentials, align remaining config/cache behavior, and avoid running language-specific builds for unrelated changes while preserving required checks.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>

* fix(rust): preserve authenticated URL compatibility

Translate embedded URL credentials to Basic auth, align generated TTL defaults, and run Rust checks for the abc PR target.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>

* fix(rust): isolate caches and aggregate safe errors

Keep Python cache files untouched, redact retained failures, and continue multi-provider runs after log setup errors.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>

* feat(rust): complete providers and distribution

Port the remaining DNS providers and aliases, add protected native/container release workflows, and provide a checksum-aware Rust installer.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>

* docs(agents): register Rust development guide

Keep the generated project structure contract aligned with the new bilingual Rust documentation.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>

* fix(rust): address review feedback

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>

* refactor(rust): simplify core design

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>

* refactor(rust): use typed borrowed core

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>

* refactor(rust): streamline transport state

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>

* test(rust): share provider fixtures

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>

* test(rust): expand end-to-end coverage

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>

* fix(rust): simplify provider modes and lookup handling

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>

* chore(v5): prepare isolated Rust development line

Keep Rust changes on the v5 integration line and prepare artifacts without publishing or changing the stable Python entrypoint.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>

* fix(rust): redact credential-bearing URL paths

Hide non-root URL paths in diagnostics and omit URI text from transport errors while preserving actual request URLs.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>

* fix(rust): fully mask credential values

Replace credential prefixes and suffixes with a constant opaque marker while retaining raw and percent-encoded masking.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>

* fix(rust): correct provider signing and zone lookup errors

Use RFC3986 canonical queries for Huawei signing. Distinguish documented NameSilo and ClouDNS zone misses from authentication, HTTP, and provider failures. Add offline regressions and matching V5 documentation.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>

* fix(rust): preserve address spelling for regex rules

Match regex rules against the extracted address text without IPv6 canonicalization, while retaining strict IpAddr validation and parsed return values. Cover original spelling, invalid candidates, family filtering, and matching boundaries.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>

* fix(rust): reject unusable local IPs and malformed record lists

Filter loopback and unspecified addresses before local indexing. Reject malformed ClouDNS, Huawei, and NameSilo record lookups without creating duplicates while retaining valid empty responses. Isolate installer test globals and cleanup traps in subshells.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>

* fix(rust): keep DNS.COM signatures out of diagnostics

Use the sensitive request path for signed DNS.COM bodies, omit raw HTTP and JSON failure responses, and redact signatures echoed in API messages. Preserve request signing and ordinary HTTP diagnostics with offline regressions.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>

* fix(rust): mask form credentials and validate upgrades before replacement

Reuse the form encoder for credential redaction and smoke-test temporary installer binaries before replacing a working installation. Cover rejected upgrades and existing trailing-period IP parsing without changing address extraction.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>

* fix(rust): preserve provider updates and V5 preparation contracts

Send Huawei canonical query bytes unchanged, accept nonempty single-label domains at configuration ingress, and honor AliDNS/ESA extras on unchanged addresses. Require V5 prereleases in artifact preparation with offline regression coverage.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>

* fix(rust): accept separated negative CLI integers

Recognize negative integer tokens as required scalar values without consuming option names. Preserve per-option range validation and cover log-level aliases, inline parity, and real CLI execution.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>

* fix(ci): use architecture names for Rust QEMU setup

Install only the arm64 emulator on the amd64 OCI preparation runner while preserving linux/amd64,linux/arm64 for Buildx. Strengthen offline workflow contracts to distinguish the two inputs.

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>

---------

Co-authored-by: NewFuture <6290356+NewFuture@users.noreply.github.com>
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
2026-09-12 00:39:34 +08:00
2501c4a1d8 ci(agent): add deterministic project checks (#735)
* feat(agent): define portable project development contract

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>

* ci(agent): add deterministic project checks

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>

* fix(ci): isolate agent contract concurrency

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>

* fix(ci): run complete agent contracts

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>

* fix(agent): cover generated docs and drift reports

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>

* fix(agent): close project contract coverage gaps

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>

* fix(agent): harden change discovery contracts

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>

* fix(agent): close final contract blind spots

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>

* fix(agent): validate active provider surfaces

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>

* fix(agent): enforce complete validation indexes

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>

* fix(agent): reject stale provider overview rows

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>

* fix(ci): validate all workflow changes

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>

* fix(agent): keep validation inputs deterministic

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>

* fix(agent): ignore deleted format targets

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>

* fix(agent): ignore hidden provider inventories

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>

* perf(agent): deduplicate conservative checks

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>

---------

Co-authored-by: NewFuture <6290356+NewFuture@users.noreply.github.com>
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
2026-08-21 16:58:28 +08:00
08837bbd09 feat(agent): define portable project development contract (#734)
Co-authored-by: NewFuture <6290356+NewFuture@users.noreply.github.com>
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
2026-08-21 14:02:26 +08:00