Skip to content

feat(tui): M0A.5b TUI 登录#84

Draft
wangjk9527 wants to merge 2 commits into
datagallery-lab:mainfrom
wangjk9527:feat/m0a5b-tui-login
Draft

feat(tui): M0A.5b TUI 登录#84
wangjk9527 wants to merge 2 commits into
datagallery-lab:mainfrom
wangjk9527:feat/m0a5b-tui-login

Conversation

@wangjk9527

Copy link
Copy Markdown
Collaborator

Summary

  • 为 TUI 增加正式账号登录、Session 持久化、交互注册引导、账号切换与 /logout
  • REST、AG-UI 与启动 preflight(含 run-defaults)共用 AuthenticatedTransport;身份探测走 GET /api/v1/me
  • 删除离线 Demo 模式,并增加 Web/TUI 会话共享 smoke

Depends on

Depends on #83feat/m0a5a-formal-auth-foundation)。本分支从 5a stacked 叠出;upstream 无 5a 分支作 base,故暂以 main 开 Draft。请先合并 #83,再审/合本 PR(或改 base 到已合入的 main)。

Test plan

  • npm --workspace @datafoundry/tui test(62 passed)
  • npm run typecheck
  • npm run test:auth-foundation
  • npm run smoke:auth
  • npm run smoke:tui-auth-sharing
  • CI green on this PR

实现 password 模式会话/CSRF/注册策略,并修复 HITL 事件桥、cookie Path
与缺失注册策略静默 open 等确定性缺陷。
@wangjk9527
wangjk9527 force-pushed the feat/m0a5b-tui-login branch from 0636a15 to 114eba5 Compare July 23, 2026 16:49
@wangjk9527

Copy link
Copy Markdown
Collaborator Author

静态审查逐条结论(已落地)

# 条目 判定 处理
1 --no-auto-login 不注销旧 Session 成立 已修:仍读取缓存作 previousSession(不恢复 cookies / 不调 /me),新登录成功后 best-effort logout 旧 Session
2 真实终端密码可能回显 成立 已修:createSecurePrompt 改为同一时间只挂一个 readline;密码走 muted stdout,避免 visible+muted 双 reader 抢 stdin
3 Session 失效不回登录界面 成立 已修:AuthenticatedTransport 增加 onAuthRequired;401 / CSRF refresh 失败走同一失效路径;Ink App unmount,runTuiauth-required 重进登录
4 browser opener 命令不存在可崩溃 成立 已修:spawn 后监听 error 防未处理异步异常;调用方始终打印可复制 URL(ok 时也带 url
5 API 不可达缺恢复入口 部分成立 已修轻量版:getStatus 失败时顶层 [r]etry / [q]uit;改地址仍通过重启 --runtime-url(本 PR 不加交互改址 UI)

验证

  • apps/tuinpm test → 68 pass
  • scripts/auth-foundation.test.mjs → 15 pass
  • scripts/smoke-tui-auth-sharing.mjs → OK

Commit

相对 5a(0989386)单实现 commit:114eba5(已 --force-with-lease 更新分支)。

- 接入 password 登录、本地 Session 恢复与账号切换
- AuthenticatedTransport 统一 REST/AG-UI/preflight,401 粘性通知 onAuthRequired
- API 不可达时支持重试 / 使用其他地址 / 退出
- 删除 offline demo,补充认证接线与恢复路径测试
@wangjk9527
wangjk9527 force-pushed the feat/m0a5b-tui-login branch from 114eba5 to 04a9a1c Compare July 23, 2026 16:58
@wangjk9527

Copy link
Copy Markdown
Collaborator Author

复审结论(对照 tip 04a9a1c

GitHub 上当前 无新的 reviewer inline / review;以下为会话中粘贴的两轮静态审查,逐条对照现码。

第一轮(5 项)

# 条目 判定 现状(04a9a1c
1 --no-auto-login 不注销旧 Session 成立 → 已修 仍读缓存为 previousSession(不恢复 cookies / 不调 /me);新登录成功后 best-effort logout 旧 Session
2 真实终端密码可能回显 成立 → 已修 createSecurePrompt 同一时间只挂一个 readline;密码走 muted stdout
3 Session 失效不回登录界面 成立 → 已修 onAuthRequired + Ink unmount;runTuiauth-required 重进登录;CSRF refresh 失败同路径
4 browser opener 命令不存在可崩溃 成立 → 已修 spawn 后挂 error listener;调用方始终打印可复制 URL
5 API 不可达缺恢复入口 成立 → 已修 [r]etry / [o]ther address / [q]uitruntimeUrl/configBaseUrl 可在循环内更新

第二轮(2 项)

# 条目 判定 现状(04a9a1c
R1 preflight 401 后 onAuthRequired 事件永久丢失 成立 → 已修 粘性 sessionInvalidNotified;订阅时若已失效立即 replay;有「先 401、后订阅」单测
R2 恢复菜单缺「使用其他地址」 成立 → 已修 见上第 5 项;有 switches runtime URL from recovery menu 测试

验证

  • apps/tuinpm test71 pass
  • npm run test:auth-foundation → 跑通

Commit

相对 5a(0989386)仍为单实现 commit04a9a1c(无 docs/superpowers)。此前评论中的 114eba5 /「仅 retry-quit」已过时。

本轮无新增代码改动(tip 已覆盖上述条目)。

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