Skip to content

feat(mpa): mount isolated TOS output for Studio-created sessions - #16

Merged
superops-team merged 32 commits into
superops-team:mainfrom
PolarisCzh:feat/mpa-tos-output-mount
Sep 30, 2026
Merged

superops-team merged 32 commits into
superops-team:mainfrom
PolarisCzh:feat/mpa-tos-output-mount

Conversation

@PolarisCzh

@PolarisCzh PolarisCzh commented Sep 30, 2026 •

Copy link
Copy Markdown

Summary

  • Add TOS AK/SK/bucket fields to Studio MPA creation and pass them to AgentKit Tool TOS mount configuration.
  • Mount an isolated TOS prefix at /data/output for each sandbox session; keep credentials at the Tool boundary.
  • Align managed Runtime/Worker creation, workload identity, IAM permissions, and TOS-capable SDK packaging for the cloud Studio path.

Verification

  • Python MPA/Studio regression: 486 passed.
  • Frontend: 1367 Node tests + 47 Vitest tests passed; production build passed.
  • Cloud E2E: remote Studio created a Ready MPA Runtime and TOS-enabled Tool; two independent sessions wrote files to distinct TOS prefixes, and both objects were read back.
  • Final cleaned Studio bundle (d9cf3bf6) was deployed successfully and the public Studio endpoint returned HTTP 200. A new MPA was not created after that cleanup deployment.

Notes

  • Temporary Error/V0 Runtime auto-recovery exploration was removed from the final code. No credentials are included in this PR.

Companion Agent Runtime MR: https://code.byted.org/iaasng/agentkit-mpa-agent/merge_requests/14

MPA creation navigation fix (2026-09-30)

  • Make all three step headers native buttons and show Previous for restored/submitted drafts. Preserve forward validation, busy-state guards, submitted-field locks and retry identity.
  • New executable statement coverage: 3/3 (100%); full frontend tests/build and pre-commit checks passed.
  • Navigation code 1bed366a deployed successfully to the existing cloud Studio at 10:31 Asia/Shanghai. Remote browser verified step clicks, keyboard activation, Previous and close/reopen draft restoration with the same agent ID.
  • No new MPA was submitted for this UI navigation verification. TOS provisioning behavior was not changed.

Explicit fresh request (2026-09-30)

  • Any submitted recovery draft now offers Create another agent, including uncertain/running/unavailable tasks. It generates fresh request and agent IDs, restores configured defaults and opens editable fields. Reopening and same-ID retry retain the original identity until that explicit action.
  • Reuse the existing reset and native button disabling; no new dependency, CSS or backend/API change. New Agent replaces only browser recovery state and never cancels/modifies the old cloud task. Active-task admission still applies.
  • Dialog regression: 30/30 passed; full frontend: 1367 Node + 47 Vitest passed; build and pre-commit/secret scans passed. Added executable statements: 1/1 covered (100%).
  • Code 4f1650de deployed at 11:02 Asia/Shanghai. The user’s original locked cloud tab was verified: keyboard New Agent opened a different identity, description/images/OpenViking/TOS unlocked, description and bucket edits worked, and 720px layout passed. Test values cleared; viewport reset; no new MPA was submitted.

Runtime JWT default (2026-09-30)

  • dd11bc61 restores DISABLE_JWT_AUTH=true in shared MPA environment generation (Studio flat creation and CLI). Explicit false overrides and referenced Runtime/template environments are preserved; gateway key-auth is unchanged. No new switch/dependency or MPA_AGENTKIT_MODE injection.
  • This bypasses the inner legacy REST JWT gate, including admin checks and header-based identity paths. Trusted callers must control identity headers. ADK discovery may be advertised instead of forced A2A; old sessions are not migrated.
  • Regression-first default assertion failed before the fix; 460 affected tests passed afterward. The constant has no independent executable coverage line; its enclosing dictionary assignment is covered 1/1 (100%). Module combined coverage is 96.77% (statements 98.98%).
  • Ruff, formatting, pre-commit, secret scans and Markdown link checks passed. Full regression: 6152 passed, 7 failed, 2 collection errors, 22 skipped, 2 xfailed. Unrelated failures: missing optional llama_index/anthropic and unchanged wheel SDK >=0.8.0-vs->=0.8.5 assertion. Pyright reports two diagnostics on unchanged managed-test lines 78/137; production helper and environment test pass.
  • No cloud deployment, image rebuild or live download E2E in this update. Paired PRD records commands and gate limitations: prd-spec/bugfixes/mpa-default-jwt/2026-09-30-studio-key-auth-default.md / .zh.md.

MPA artifact entry visibility (2026-09-30)

  • Commit: 7c365f00. Hide the separate 会话产物 component for native and A2A MPA using existing classification predicates; its mount-time fetch hook no longer runs for MPA.
  • General Runtime sessions retain the entry. MPA Markdown downloads, storage mounts, authorization and transport classification are unchanged. No new styles, dependencies or adapters.
  • Test-first: 5 regression failures before the fix; 25 focused tests pass after. Full frontend suite: 1376 Node + 47 Vitest tests pass; 19 explicit artifact interaction/cache tests pass.
  • Incremental actual-guard source-extraction V8 coverage: 100% (5/5 ranges), not whole-App coverage. TypeScript/Vite/widget builds, packaged assets (113 files/350 references), pre-commit and secret scans pass. Matching webui bundles included.
  • Local Vite browser login/home/picker checked. MPA list stayed loading, preventing existing-session, switching and narrow-window browser verification; no browser E2E success is claimed. No cloud deployment or model invocation in this change.
  • Bilingual PRD and Sandbox-download CON-5 updated. Python behavior unchanged; unrelated full Python suite not rerun.

MPA A2A discovery preference (2026-09-30)

  • Commit 50ccce88: authorized MPA Runtime-proxy GET list-apps probes the existing Agent Card first and returns a2a-default when usable, even if ADK also works. General Runtime discovery and MPA without a usable card retain existing behavior.
  • Reuses the existing A2A create/run/history adapter and avoids native Profile/execution-config preflight. Four executable production lines; no frontend bundle, new dependency/helper, Runtime/Worker code, JWT default, TOS mount or download changes. Independent management auth remains unchanged.
  • Test-first: discovery matrix 8 failures/2 passes before; focused discovery/bridge 40 passes after. Targeted proxy/decoder/URL tests: 188 passes. Frontend protocol/cancellation: 49 passes. Incremental coverage: 4/4 lines and 4/4 branch arcs, 100% (not whole-module coverage).
  • Full Python regression: 6174 passed, 7 failed, 2 collection errors, 22 skipped, 2 xfailed, 6 subtests passed. All seven failures and both errors reproduced at pre-change 7c365f00: missing optional extensions and existing wheel SDK assertion. Direct file Ruff/Pyright diagnostics match baseline exactly (105/56, no additions); those gates are not reported as passing. Pinned pre-commit including secret scans passes.
  • Bilingual PRD, CON-13 and auth/discovery docs synchronized. Baseline comparison checkout removed. No cloud deployment, real Runtime/model/browser E2E or live download in this change. After updating Studio, reconnect MPA to refresh cached discovered apps; existing native sessions are not migrated.

@superops-team
superops-team merged commit e0448a4 into superops-team:main Sep 30, 2026
11 of 14 checks passed
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.

3 participants