Skip to content

feat(web): restore managed-cloud mvp surface - #121

Draft
YoneRai12 wants to merge 19 commits into
mainfrom
codex/managed-cloud-mvp-phase1
Draft

feat(web): restore managed-cloud mvp surface#121
YoneRai12 wants to merge 19 commits into
mainfrom
codex/managed-cloud-mvp-phase1

Conversation

@YoneRai12

Copy link
Copy Markdown
Owner

Summary

  • freeze the Official Managed Cloud MVP surface in docs and clarify the public repo role in README
  • restore a public-safe yonerai.com top page plus /jp/chat shell with shared site styling
  • reintroduce minimal Google session auth, /api/auth/me, and public chat message/SSE routes using the current run loop
  • add storage support for web sessions, identities, and public chat usage logging
  • cover the MVP surface with focused FastAPI tests

Test

  • pytest tests/test_managed_cloud_mvp.py tests/test_api.py -q

Notes

  • this does not restore the full historical public web stack
  • attachments, files host, hooks host, and admin/operator surfaces remain out of scope for this phase
  • local visual verification still needs a runtime with uvicorn installed

@gemini-code-assist gemini-code-assist Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request implements the YonerAI Managed Cloud MVP, introducing a 3-mode architecture and updating branding across the repository. Key technical additions include Google OAuth integration, session management, and public chat endpoints with Server-Sent Events (SSE) support. The database schema was expanded to include user identities, web sessions, and API usage tracking. New static assets and documentation for OpenAI CUA sidecar adoption were also added. Review feedback identifies a missing import for "JSONResponse" and suggests utilizing the new static page helper function in the setup UI for consistency.

Comment thread src/web/endpoints.py
Comment on lines +1417 to +1422
token = (request.cookies.get(WEB_SESSION_COOKIE) or "").strip()
if token:
await get_store().revoke_web_session(session_hash=_session_hash(token))
response = JSONResponse({"ok": True})
response.delete_cookie(WEB_SESSION_COOKIE, path="/")
return response

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

high

The auth_logout function returns a JSONResponse but it is not imported in this file. Please ensure JSONResponse is imported from fastapi.responses.

from fastapi.responses import RedirectResponse, JSONResponse

Comment thread src/web/app.py Outdated
Comment on lines +116 to +120
def _serve_static_page(filename: str) -> FileResponse:
path = os.path.join(static_dir, filename)
if not os.path.exists(path):
raise HTTPException(status_code=404, detail=f"{filename} is missing.")
return FileResponse(path)

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

The _serve_static_page helper function is defined but not used in the setup_ui function, which still uses FileResponse directly. Consider using this helper for consistency.

Suggested change
def _serve_static_page(filename: str) -> FileResponse:
path = os.path.join(static_dir, filename)
if not os.path.exists(path):
raise HTTPException(status_code=404, detail=f"{filename} is missing.")
return FileResponse(path)
return _serve_static_page("setup.html")

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