@rainmanhhh/pi-web 0.12.1 → 0.13.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (86) hide show
  1. package/README.md +6 -4
  2. package/README.zh-CN.md +6 -4
  3. package/dist/server.mjs +138 -143
  4. package/dist/static/assets/{CodeMirrorEditor-DyqBVSPi.js → CodeMirrorEditor-dxFa46S3.js} +1 -1
  5. package/dist/static/assets/architecture-YZFGNWBL-YsvqFfeS.js +1 -0
  6. package/dist/static/assets/{architectureDiagram-Q4EWVU46-CbsCubBM.js → architectureDiagram-Q4EWVU46-CdckvmDu.js} +1 -1
  7. package/dist/static/assets/{blockDiagram-DXYQGD6D-x9PYyzrt.js → blockDiagram-DXYQGD6D-B_HmIb9_.js} +1 -1
  8. package/dist/static/assets/{c4Diagram-AHTNJAMY-CXs9E-rY.js → c4Diagram-AHTNJAMY-P48H-CCr.js} +1 -1
  9. package/dist/static/assets/channel-DhZIn_bN.js +1 -0
  10. package/dist/static/assets/{chunk-4TB4RGXK-I-QnFgII.js → chunk-4TB4RGXK-Dxtz2aBS.js} +1 -1
  11. package/dist/static/assets/{chunk-5FUZZQ4R-BRKi3Ebh.js → chunk-5FUZZQ4R-X2O5iprK.js} +1 -1
  12. package/dist/static/assets/{chunk-5PVQY5BW-DCJxDS9J.js → chunk-5PVQY5BW-mWD9goz9.js} +1 -1
  13. package/dist/static/assets/{chunk-EDXVE4YY-DF3yD5i5.js → chunk-EDXVE4YY-CMgGBO4E.js} +1 -1
  14. package/dist/static/assets/{chunk-ENJZ2VHE-LXWp424T.js → chunk-ENJZ2VHE-ChSJgwA9.js} +1 -1
  15. package/dist/static/assets/{chunk-ICPOFSXX-D9jRfQbL.js → chunk-ICPOFSXX-m8WKEaCP.js} +1 -1
  16. package/dist/static/assets/{chunk-K5T4RW27-B0AoYXCH.js → chunk-K5T4RW27-QgiM2Ch9.js} +1 -1
  17. package/dist/static/assets/{chunk-OYMX7WX6-DE-AFNu2.js → chunk-OYMX7WX6-DzDTsVqu.js} +1 -1
  18. package/dist/static/assets/{chunk-U2HBQHQK-DUOD_n0f.js → chunk-U2HBQHQK-CddHtRdR.js} +1 -1
  19. package/dist/static/assets/{chunk-X2U36JSP-D1saXNfW.js → chunk-X2U36JSP-pu_ivzoZ.js} +1 -1
  20. package/dist/static/assets/{chunk-YZCP3GAM-cTU1dCAB.js → chunk-YZCP3GAM-BZS9_R6H.js} +1 -1
  21. package/dist/static/assets/{chunk-ZZ45TVLE-BFz5v0o6.js → chunk-ZZ45TVLE-DfYZ_MYm.js} +1 -1
  22. package/dist/static/assets/classDiagram-6PBFFD2Q-Dx_u1uAs.js +1 -0
  23. package/dist/static/assets/classDiagram-v2-HSJHXN6E-Dx_u1uAs.js +1 -0
  24. package/dist/static/assets/clone-D4wwGq0Y.js +1 -0
  25. package/dist/static/assets/{dagre-78eC8mnD.js → dagre-CDbeowJ0.js} +1 -1
  26. package/dist/static/assets/{dagre-KV5264BT-DhsMxXHk.js → dagre-KV5264BT-C8MGA0xR.js} +1 -1
  27. package/dist/static/assets/{diagram-5BDNPKRD-DKxDwH0x.js → diagram-5BDNPKRD-DbNxJJ0-.js} +1 -1
  28. package/dist/static/assets/{diagram-G4DWMVQ6-CQc6vLIR.js → diagram-G4DWMVQ6-By1GJVur.js} +1 -1
  29. package/dist/static/assets/{diagram-MMDJMWI5-B8OdXt_B.js → diagram-MMDJMWI5-CnjqFM7f.js} +1 -1
  30. package/dist/static/assets/{diagram-TYMM5635-BBeRbGWI.js → diagram-TYMM5635-DwmMzKuo.js} +1 -1
  31. package/dist/static/assets/{erDiagram-SMLLAGMA-BBVUKLlz.js → erDiagram-SMLLAGMA-DQsvD8RQ.js} +1 -1
  32. package/dist/static/assets/{flatten-DfaVu_vJ.js → flatten-Cjro-LE0.js} +1 -1
  33. package/dist/static/assets/{flowDiagram-DWJPFMVM-DYyp_Eh0.js → flowDiagram-DWJPFMVM-D10N8GId.js} +1 -1
  34. package/dist/static/assets/{ganttDiagram-T4ZO3ILL-DL_V3ywo.js → ganttDiagram-T4ZO3ILL-DyEvbCEB.js} +1 -1
  35. package/dist/static/assets/gitGraph-7Q5UKJZL-CLj_Ykqy.js +1 -0
  36. package/dist/static/assets/{gitGraphDiagram-UUTBAWPF-9D1mYfNO.js → gitGraphDiagram-UUTBAWPF-lT0AwNTv.js} +1 -1
  37. package/dist/static/assets/{graphlib-CjbeiJVq.js → graphlib-CyHXAvbu.js} +1 -1
  38. package/dist/static/assets/{highlighted-body-OFNGDK62-CXXM_XTX.js → highlighted-body-OFNGDK62-Ds683jEq.js} +1 -1
  39. package/dist/static/assets/index-BZjy9FIa.css +1 -0
  40. package/dist/static/assets/{index-C_-6dc3k.js → index-D2TQUdwI.js} +120 -120
  41. package/dist/static/assets/info-OMHHGYJF-x_UMMWdP.js +1 -0
  42. package/dist/static/assets/{infoDiagram-42DDH7IO-BYKCSs73.js → infoDiagram-42DDH7IO-B7oMTbSE.js} +1 -1
  43. package/dist/static/assets/{ishikawaDiagram-UXIWVN3A-CwJ5mwC-.js → ishikawaDiagram-UXIWVN3A-BnOr-1rW.js} +1 -1
  44. package/dist/static/assets/{journeyDiagram-VCZTEJTY-C9x-Pdfg.js → journeyDiagram-VCZTEJTY-CUHkeVKX.js} +1 -1
  45. package/dist/static/assets/{kanban-definition-6JOO6SKY-bkiuzeXJ.js → kanban-definition-6JOO6SKY-x1PDzPSG.js} +1 -1
  46. package/dist/static/assets/{line-p-m2u7h2.js → line-D0K6blP4.js} +1 -1
  47. package/dist/static/assets/mermaid-GHXKKRXX-CT6IQ1lQ.js +1 -0
  48. package/dist/static/assets/{mermaid-parser.core-BnB8XbS0.js → mermaid-parser.core-C5TFRh1o.js} +2 -2
  49. package/dist/static/assets/{mermaid.core-WyCcU0B3.js → mermaid.core-DPACeF7l.js} +4 -4
  50. package/dist/static/assets/{mindmap-definition-QFDTVHPH-CufekIMm.js → mindmap-definition-QFDTVHPH-DjtaABoT.js} +1 -1
  51. package/dist/static/assets/packet-4T2RLAQJ-y_C5Aw8K.js +1 -0
  52. package/dist/static/assets/pie-ZZUOXDRM-CEcqKts3.js +1 -0
  53. package/dist/static/assets/{pieDiagram-DEJITSTG-USpAsWqY.js → pieDiagram-DEJITSTG-B3XnMnlF.js} +1 -1
  54. package/dist/static/assets/{quadrantDiagram-34T5L4WZ-DxMd2QZk.js → quadrantDiagram-34T5L4WZ-DlnDu10v.js} +1 -1
  55. package/dist/static/assets/radar-PYXPWWZC-BgfQ2z6y.js +1 -0
  56. package/dist/static/assets/{reduce-CMMR_LL6.js → reduce-DzlzctfK.js} +1 -1
  57. package/dist/static/assets/{requirementDiagram-MS252O5E-ZBVutuF8.js → requirementDiagram-MS252O5E-Bk8hANC2.js} +1 -1
  58. package/dist/static/assets/{sankeyDiagram-XADWPNL6-RPywp_s3.js → sankeyDiagram-XADWPNL6-BPE4M-8g.js} +1 -1
  59. package/dist/static/assets/{sequenceDiagram-FGHM5R23-C6S_NWUi.js → sequenceDiagram-FGHM5R23-haSQtRFF.js} +1 -1
  60. package/dist/static/assets/{stateDiagram-FHFEXIEX-DchxZ_bK.js → stateDiagram-FHFEXIEX-Be6hFIvG.js} +1 -1
  61. package/dist/static/assets/stateDiagram-v2-QKLJ7IA2-QP8OoPxc.js +1 -0
  62. package/dist/static/assets/{timeline-definition-GMOUNBTQ-CWk8DiK3.js → timeline-definition-GMOUNBTQ-DSApr2E_.js} +1 -1
  63. package/dist/static/assets/treeView-SZITEDCU-Bto3Abds.js +1 -0
  64. package/dist/static/assets/treemap-W4RFUUIX-DIOjwJXp.js +1 -0
  65. package/dist/static/assets/{vennDiagram-DHZGUBPP-BSHnJhIu.js → vennDiagram-DHZGUBPP-BKkg9gff.js} +1 -1
  66. package/dist/static/assets/wardley-RL74JXVD-CI19TNgv.js +1 -0
  67. package/dist/static/assets/{wardleyDiagram-NUSXRM2D-PhkAdRYI.js → wardleyDiagram-NUSXRM2D-B4r9OxMz.js} +1 -1
  68. package/dist/static/assets/{xychartDiagram-5P7HB3ND-B7L1yLP2.js → xychartDiagram-5P7HB3ND-BAh2dH1X.js} +1 -1
  69. package/dist/static/index.html +2 -2
  70. package/package.json +4 -2
  71. package/dist/static/assets/architecture-YZFGNWBL-CAfwzu8t.js +0 -1
  72. package/dist/static/assets/channel-DvHYNuuZ.js +0 -1
  73. package/dist/static/assets/classDiagram-6PBFFD2Q-BIRKixFL.js +0 -1
  74. package/dist/static/assets/classDiagram-v2-HSJHXN6E-BIRKixFL.js +0 -1
  75. package/dist/static/assets/clone-DJRFo-IR.js +0 -1
  76. package/dist/static/assets/gitGraph-7Q5UKJZL-DAxFalMn.js +0 -1
  77. package/dist/static/assets/index-Bh80tz-0.css +0 -1
  78. package/dist/static/assets/info-OMHHGYJF-tSmTrDvU.js +0 -1
  79. package/dist/static/assets/mermaid-GHXKKRXX-R9C3IpNt.js +0 -1
  80. package/dist/static/assets/packet-4T2RLAQJ-ykfAURkf.js +0 -1
  81. package/dist/static/assets/pie-ZZUOXDRM-DFaOARgr.js +0 -1
  82. package/dist/static/assets/radar-PYXPWWZC-Dc6JaTS5.js +0 -1
  83. package/dist/static/assets/stateDiagram-v2-QKLJ7IA2-C7oJiyWR.js +0 -1
  84. package/dist/static/assets/treeView-SZITEDCU-DLVO6WS_.js +0 -1
  85. package/dist/static/assets/treemap-W4RFUUIX-D1lVf0eg.js +0 -1
  86. package/dist/static/assets/wardley-RL74JXVD-Dpxx9Btz.js +0 -1
package/README.md CHANGED
@@ -35,6 +35,7 @@ pi-web --hostname 0.0.0.0 # expose on a trusted network
35
35
  pi-web -p 8080 -H 0.0.0.0 # combine options
36
36
  pi-web --open # open the browser when the server is ready
37
37
  pi-web --agent-dir ~/.pi/agent # point at another pi agent directory
38
+ pi-web -d # verbose debug logs (also written to server.log)
38
39
 
39
40
  PORT=8080 pi-web # environment variable is also supported
40
41
  HOST=0.0.0.0 pi-web # explicit network exposure
@@ -76,15 +77,16 @@ npx @rainmanhhh/pi-web@latest
76
77
  - **Work across branches**: switch Git worktrees from the sidebar so new sessions and the Explorer follow the checkout you choose.
77
78
  - **Chat beside the project**: browse files on the left and preview source, docs, images, audio, and PDFs on the right while the agent works.
78
79
  - **See session state clearly**: context usage, cost, compaction state, and system prompt details are visible from the top bar.
79
- - **Configure less from the terminal**: manage models, login/API keys, model tests, and skill switches from the web UI.
80
+ - **Configure less from the terminal**: manage models, login/API keys, model tests, thinking levels, and skill switches from the web UI.
81
+ - **Commit faster from the Explorer**: stage, commit, and push from the web UI, with AI-generated Conventional Commits messages — use a small fixed model or follow the current chat model.
80
82
  - **Use the interface in your language**: switch between the supported UI languages from the top bar.
81
83
 
82
84
  ## Notes
83
85
 
84
86
  - **Data directory**: Pi Web reads `~/.pi/agent/sessions` by default. Set `PI_CODING_AGENT_DIR` to point at another pi agent directory.
85
87
  - **Session files**: files are stored as `~/.pi/agent/sessions/<encoded-cwd>/<timestamp>_<uuid>.jsonl`.
86
- - **Model config**: the Models panel reads and writes `models.json` in the pi agent directory. Model lists and defaults come from pi's config.
87
- - **Preferences**: UI preferences (scroll step, auto-reload, long-block collapse, …) live in `pi-web-preferences.json` in the pi agent directory (default `~/.pi/agent/pi-web-preferences.json`). The browser's `localStorage` holds a front-end copy; the server file is the source of truth for other clients.
88
+ - **Model config**: the Models panel reads and writes `models.json` in the pi agent directory. Model lists and defaults come from pi's config; lists synced from a provider's `/models` endpoint are cached under `<agentDir>/pi-web/provider/`.
89
+ - **Preferences**: UI preferences (scroll step, auto-reload, long-block collapse, …) live in `<agentDir>/pi-web/config.json` (default `~/.pi/agent/pi-web/config.json`). The browser's `localStorage` holds a front-end copy; the server file is the source of truth for other clients. The legacy `pi-web-preferences.json` is migrated once on startup.
88
90
  - **File access**: file browsing and preview are scoped to the selected project directory and working directories that appear in sessions.
89
91
  - **Git worktrees**: see [Worktrees in Pi Web](./docs/worktrees.md) for when the switcher appears, how new worktrees are created, and what removal does.
90
92
  - **Forks vs in-session branches**: Fork creates a new `.jsonl` file. "Edit from here" creates another branch inside the same session file.
@@ -130,7 +132,7 @@ Known issue: `bun publish` does not read the `//registry.npmjs.org/:_authToken`
130
132
  src/
131
133
  components/ # React UI: AppShell, SessionSidebar, ChatWindow, ChatInput,
132
134
  # MessageView, ModelsConfig, SkillsConfig, FileExplorer, FileViewer, …
133
- hooks/ # useAgentSession (SSE state machine), useTheme, useDragDrop, …
135
+ hooks/ # useAgentSession (WebSocket bus state machine), useTheme, useDragDrop, …
134
136
  lib/ # session .jsonl parsing, RPC manager, file-access safety,
135
137
  # request security, i18n, markdown setup
136
138
  main.tsx # frontend entry
package/README.zh-CN.md CHANGED
@@ -33,6 +33,7 @@ pi-web --hostname 0.0.0.0 # 在可信网络中开放访问
33
33
  pi-web -p 8080 -H 0.0.0.0 # 组合使用
34
34
  pi-web --open # 服务就绪后自动打开浏览器
35
35
  pi-web --agent-dir ~/.pi/agent # 指定其他 pi agent 目录
36
+ pi-web -d # 输出调试日志(同时写入 server.log)
36
37
 
37
38
  PORT=8080 pi-web # 也支持环境变量
38
39
  HOST=0.0.0.0 pi-web # 显式开放网络访问
@@ -74,15 +75,16 @@ npx @rainmanhhh/pi-web@latest
74
75
  - **跨分支工作**:在侧边栏切换 Git worktree,让新会话和 Explorer 跟随你选择的 checkout。
75
76
  - **边聊边看项目文件**:左侧浏览项目文件,右侧打开源码、文档、图片、音频和 PDF;文件变化会自动刷新,适合边让 agent 改边检查结果。
76
77
  - **随时掌握会话状态**:在顶部就能看到上下文占用、花费、压缩结果和系统提示,长会话不再像黑箱。
77
- - **少离开当前界面**:模型、登录/API key、模型测试和技能开关都能在网页里处理,配置 agent 时不用在多个工具之间来回切换。
78
+ - **少离开当前界面**:模型、登录/API key、模型测试、思考级别和技能开关都能在网页里处理,配置 agent 时不用在多个工具之间来回切换。
79
+ - **在 Explorer 里更快提交**:网页内完成暂存、提交和推送,还能用 AI 生成符合 Conventional Commits 的提交信息——可以固定用一个小模型,也可以跟随当前会话的主模型。
78
80
  - **界面语言可选**:在顶部栏切换界面支持的 UI 语言。
79
81
 
80
82
  ## 注意事项
81
83
 
82
84
  - **数据目录**:默认读取 `~/.pi/agent/sessions` 下的会话文件。可通过环境变量 `PI_CODING_AGENT_DIR` 指定其他 pi agent 目录。
83
85
  - **会话文件**:路径形如 `~/.pi/agent/sessions/<编码后的工作目录>/<时间戳>_<uuid>.jsonl`。
84
- - **模型配置**:Models 面板读写 pi agent 目录下的 `models.json`,模型列表和默认模型由 pi 的配置解析得到。
85
- - **偏好配置**:UI 偏好(滚动步长、自动刷新、长块折叠等)保存在 pi agent 目录下的 `pi-web-preferences.json`(默认 `~/.pi/agent/pi-web-preferences.json`)。浏览器 `localStorage` 是前端副本,服务端文件是其他客户端读取的权威来源。
86
+ - **模型配置**:Models 面板读写 pi agent 目录下的 `models.json`,模型列表和默认模型由 pi 的配置解析得到;从服务商 `/models` 端点同步的模型列表缓存在 `<agentDir>/pi-web/provider/` 下。
87
+ - **偏好配置**:UI 偏好(滚动步长、自动刷新、长块折叠等)保存在 pi agent 目录下的 `pi-web/config.json`(默认 `~/.pi/agent/pi-web/config.json`)。浏览器 `localStorage` 是前端副本,服务端文件是其他客户端读取的权威来源。旧版 `pi-web-preferences.json` 会在启动时一次性迁移。
86
88
  - **文件访问**:文件浏览和预览面向当前选择的项目目录,以及会话中已出现过的工作目录。
87
89
  - **Git worktree**:什么时候显示切换器、新建目录在哪里、删除会影响什么,见 [Pi Web 里的 Worktree](./docs/worktrees.zh-CN.md)。
88
90
  - **Fork 与会话内分支不同**:Fork 会创建新的 `.jsonl` 文件;“Edit from here” 是同一会话文件里的分支。
@@ -128,7 +130,7 @@ bun run test:e2e # Playwright;e2e 使用隔离端口(E2E_API_PORT 等)
128
130
  src/
129
131
  components/ # React UI:AppShell、SessionSidebar、ChatWindow、ChatInput、
130
132
  # MessageView、ModelsConfig、SkillsConfig、FileExplorer、FileViewer 等
131
- hooks/ # useAgentSession(SSE 状态机)、useTheme、useDragDrop 等
133
+ hooks/ # useAgentSession(WebSocket 总线状态机)、useTheme、useDragDrop 等
132
134
  lib/ # 会话 .jsonl 解析、RPC manager、文件访问安全边界、
133
135
  # 请求安全、i18n、markdown 配置
134
136
  main.tsx # 前端入口