@piagent/platform 1.38.1 → 1.38.2

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 (97) hide show
  1. package/CHANGELOG.md +13 -0
  2. package/README.md +1 -1
  3. package/README.vi.md +1 -1
  4. package/docs/command-reference-vietnamese.md +2 -2
  5. package/docs/distribution-standard.md +6 -6
  6. package/docs/languages.json +2 -2
  7. package/docs/operator-manual-vietnamese.md +7 -7
  8. package/docs/publishing-for-teams.md +1 -0
  9. package/docs/release-install-policy.md +2 -2
  10. package/docs/team-onboarding.md +2 -2
  11. package/docs-site/architecture.html +1 -1
  12. package/docs-site/benchmark.html +1 -1
  13. package/docs-site/commands.html +1 -1
  14. package/docs-site/content/en/index.html +4 -4
  15. package/docs-site/content/en/whats-new.html +6 -0
  16. package/docs-site/content/index.html +4 -4
  17. package/docs-site/content/whats-new.html +6 -0
  18. package/docs-site/context-engine.html +1 -1
  19. package/docs-site/ecosystem.html +1 -1
  20. package/docs-site/en/architecture.html +1 -1
  21. package/docs-site/en/benchmark.html +1 -1
  22. package/docs-site/en/commands.html +1 -1
  23. package/docs-site/en/context-engine.html +1 -1
  24. package/docs-site/en/ecosystem.html +1 -1
  25. package/docs-site/en/index.html +5 -5
  26. package/docs-site/en/mcp-approval.html +1 -1
  27. package/docs-site/en/mcp-auth.html +1 -1
  28. package/docs-site/en/mcp-servers.html +1 -1
  29. package/docs-site/en/mcp.html +1 -1
  30. package/docs-site/en/permissions.html +1 -1
  31. package/docs-site/en/profiles.html +1 -1
  32. package/docs-site/en/quickstart.html +1 -1
  33. package/docs-site/en/runtime.html +1 -1
  34. package/docs-site/en/scope.html +1 -1
  35. package/docs-site/en/security.html +1 -1
  36. package/docs-site/en/team.html +1 -1
  37. package/docs-site/en/whats-new.html +7 -1
  38. package/docs-site/en/windows.html +1 -1
  39. package/docs-site/en/workflows.html +1 -1
  40. package/docs-site/index.html +5 -5
  41. package/docs-site/mcp-approval.html +1 -1
  42. package/docs-site/mcp-auth.html +1 -1
  43. package/docs-site/mcp-servers.html +1 -1
  44. package/docs-site/mcp.html +1 -1
  45. package/docs-site/permissions.html +1 -1
  46. package/docs-site/profiles.html +1 -1
  47. package/docs-site/quickstart.html +1 -1
  48. package/docs-site/runtime.html +1 -1
  49. package/docs-site/scope.html +1 -1
  50. package/docs-site/security.html +1 -1
  51. package/docs-site/team.html +1 -1
  52. package/docs-site/whats-new.html +7 -1
  53. package/docs-site/windows.html +1 -1
  54. package/docs-site/workflows.html +1 -1
  55. package/evals/private-holdout-v1/public-exposure.v2.json +2 -2
  56. package/package.json +1 -1
  57. package/packages/piagent-core/package.json +1 -1
  58. package/packages/piagent-webui/dist/client/assets/Alert-DGWhP2MM.js +1 -0
  59. package/packages/piagent-webui/dist/client/assets/Button-QItfZUNj.js +1 -0
  60. package/packages/piagent-webui/dist/client/assets/{DialogTitle-CL-fzCnT.js → DialogTitle-CyaFPaiW.js} +3 -3
  61. package/packages/piagent-webui/dist/client/assets/{MarkdownMessage-k4tq1y8s.js → MarkdownMessage-DtEwqme0.js} +2 -2
  62. package/packages/piagent-webui/dist/client/assets/TerminalPanel-C3vkzjQ6.js +2 -0
  63. package/packages/piagent-webui/dist/client/assets/{TerminalView-B_a16moC.js → TerminalView-TNjhBGfa.js} +3 -3
  64. package/packages/piagent-webui/dist/client/assets/Typography-B9om7Evq.js +1 -0
  65. package/packages/piagent-webui/dist/client/assets/WorkspaceCodeEditor-BAhYwQNM.js +2 -0
  66. package/packages/piagent-webui/dist/client/assets/WorkspaceExplorer-Coh_GWCO.js +5 -0
  67. package/packages/piagent-webui/dist/client/assets/WorkspaceQuickOpen-Bn4miZq4.js +1 -0
  68. package/packages/piagent-webui/dist/client/assets/{dist-_JsfplOG.js → dist-B5MCHZv5.js} +2 -2
  69. package/packages/piagent-webui/dist/client/assets/dist-BM_LL1o9.js +1 -0
  70. package/packages/piagent-webui/dist/client/assets/dist-C2TMLUTo.js +23 -0
  71. package/packages/piagent-webui/dist/client/assets/dist-CqL3udNu.js +1 -0
  72. package/packages/piagent-webui/dist/client/assets/{dist-nvgpa2Us.js → dist-D4df0jLQ.js} +1 -1
  73. package/packages/piagent-webui/dist/client/assets/{dist-B1M7IjfA.js → dist-D6i5SpQu.js} +1 -1
  74. package/packages/piagent-webui/dist/client/assets/dist-DfjUS8LS.js +6 -0
  75. package/packages/piagent-webui/dist/client/assets/{dist-idN8f9Fc.js → dist-IRUjhd1P.js} +1 -1
  76. package/packages/piagent-webui/dist/client/assets/{dist-DcEu_WYV.js → dist-sNhoSseW.js} +1 -1
  77. package/packages/piagent-webui/dist/client/assets/index-a-perpOX.js +102 -0
  78. package/packages/piagent-webui/dist/client/assets/tab-close-nAxrK7Lq.js +1 -0
  79. package/packages/piagent-webui/dist/client/assets/ui-preferences-BO3AV7QE.js +10 -0
  80. package/packages/piagent-webui/dist/client/assets/useId-DEefKUAT.js +124 -0
  81. package/packages/piagent-webui/dist/client/index.html +7 -7
  82. package/packages/piagent-webui/package.json +1 -0
  83. package/packages/piagent-webui/dist/client/assets/Alert-DXF8-XqE.js +0 -1
  84. package/packages/piagent-webui/dist/client/assets/Button-DZJosXQi.js +0 -1
  85. package/packages/piagent-webui/dist/client/assets/TerminalPanel-DvOPgrGI.js +0 -2
  86. package/packages/piagent-webui/dist/client/assets/Typography-DMZL1kLS.js +0 -1
  87. package/packages/piagent-webui/dist/client/assets/WorkspaceCodeEditor-BCiYM9NA.js +0 -2
  88. package/packages/piagent-webui/dist/client/assets/WorkspaceExplorer-DttpQtpf.js +0 -5
  89. package/packages/piagent-webui/dist/client/assets/WorkspaceQuickOpen-fgXwQ46B.js +0 -1
  90. package/packages/piagent-webui/dist/client/assets/dist-BUYtGaUP.js +0 -1
  91. package/packages/piagent-webui/dist/client/assets/dist-C82AtDDT.js +0 -6
  92. package/packages/piagent-webui/dist/client/assets/dist-D9b8j6pJ.js +0 -1
  93. package/packages/piagent-webui/dist/client/assets/dist-DLfpWwLs.js +0 -23
  94. package/packages/piagent-webui/dist/client/assets/index-BW8-BUMx.js +0 -102
  95. package/packages/piagent-webui/dist/client/assets/tab-close-HE0XxoJf.js +0 -1
  96. package/packages/piagent-webui/dist/client/assets/ui-preferences-DiddStu0.js +0 -124
  97. package/packages/piagent-webui/dist/client/assets/useTheme-_ESOj7MI.js +0 -10
@@ -30,7 +30,7 @@
30
30
  <span>Pi Agent Platform</span>
31
31
  </a>
32
32
  <div class="top-actions">
33
- <span class="pill"><span class="pill-dot"></span>v1.38.1 docs · EN</span>
33
+ <span class="pill"><span class="pill-dot"></span>v1.38.2 docs · EN</span>
34
34
  <nav class="language-switch" aria-label="Language">
35
35
  <a class="language-option" href="/security" hreflang="vi" lang="vi">VI</a>
36
36
  <a class="language-option current" href="/en/security" hreflang="en" lang="en" aria-current="true">EN</a>
@@ -30,7 +30,7 @@
30
30
  <span>Pi Agent Platform</span>
31
31
  </a>
32
32
  <div class="top-actions">
33
- <span class="pill"><span class="pill-dot"></span>v1.38.1 docs · EN</span>
33
+ <span class="pill"><span class="pill-dot"></span>v1.38.2 docs · EN</span>
34
34
  <nav class="language-switch" aria-label="Language">
35
35
  <a class="language-option" href="/team" hreflang="vi" lang="vi">VI</a>
36
36
  <a class="language-option current" href="/en/team" hreflang="en" lang="en" aria-current="true">EN</a>
@@ -30,7 +30,7 @@
30
30
  <span>Pi Agent Platform</span>
31
31
  </a>
32
32
  <div class="top-actions">
33
- <span class="pill"><span class="pill-dot"></span>v1.38.1 docs · EN</span>
33
+ <span class="pill"><span class="pill-dot"></span>v1.38.2 docs · EN</span>
34
34
  <nav class="language-switch" aria-label="Language">
35
35
  <a class="language-option" href="/whats-new" hreflang="vi" lang="vi">VI</a>
36
36
  <a class="language-option current" href="/en/whats-new" hreflang="en" lang="en" aria-current="true">EN</a>
@@ -104,6 +104,12 @@
104
104
  <h1>1.9.0: ask in plain language, the team's Harness checks</h1>
105
105
  <p>The task contract and workflow commands are gone. Company mode asks for checks and a review on its own; Stop, network commands on approval and clearer approval cards.</p>
106
106
  </div>
107
+ <section class="section">
108
+ <p class="section-kicker">v1.38.2 · 2026-10-23</p>
109
+ <h2 id="v1-38-2">A folder tree as in VS Code, and colour themes</h2>
110
+ <p class="section-lead">The Files panel is a folder tree: folders open in place and the open file is highlighted. Pick a colour theme in Settings → Appearance or the command palette (⌘K): Dracula, One Dark, Monokai, Nord, Tokyo Night, Catppuccin, Gruvbox, Solarized, GitHub; a theme colours the interface, the editor's syntax and the terminal. The editor and terminal stay in view while a long conversation scrolls, with a splitter for their width; on phones the Files/Terminal switches stay visible.</p>
111
+ </section>
112
+
107
113
  <section class="section">
108
114
  <p class="section-kicker">v1.38.1 · 2026-10-23</p>
109
115
  <h2 id="v1-38-1">The dashboard becomes an editor, and Bypass asks nothing</h2>
@@ -30,7 +30,7 @@
30
30
  <span>Pi Agent Platform</span>
31
31
  </a>
32
32
  <div class="top-actions">
33
- <span class="pill"><span class="pill-dot"></span>v1.38.1 docs · EN</span>
33
+ <span class="pill"><span class="pill-dot"></span>v1.38.2 docs · EN</span>
34
34
  <nav class="language-switch" aria-label="Language">
35
35
  <a class="language-option" href="/windows" hreflang="vi" lang="vi">VI</a>
36
36
  <a class="language-option current" href="/en/windows" hreflang="en" lang="en" aria-current="true">EN</a>
@@ -30,7 +30,7 @@
30
30
  <span>Pi Agent Platform</span>
31
31
  </a>
32
32
  <div class="top-actions">
33
- <span class="pill"><span class="pill-dot"></span>v1.38.1 docs · EN</span>
33
+ <span class="pill"><span class="pill-dot"></span>v1.38.2 docs · EN</span>
34
34
  <nav class="language-switch" aria-label="Language">
35
35
  <a class="language-option" href="/workflows" hreflang="vi" lang="vi">VI</a>
36
36
  <a class="language-option current" href="/en/workflows" hreflang="en" lang="en" aria-current="true">EN</a>
@@ -30,7 +30,7 @@
30
30
  <span>Pi Agent Platform</span>
31
31
  </a>
32
32
  <div class="top-actions">
33
- <span class="pill"><span class="pill-dot"></span>v1.38.1 docs · VI</span>
33
+ <span class="pill"><span class="pill-dot"></span>v1.38.2 docs · VI</span>
34
34
  <nav class="language-switch" aria-label="Ngôn ngữ">
35
35
  <a class="language-option current" href="/" hreflang="vi" lang="vi" aria-current="true">VI</a>
36
36
  <a class="language-option" href="/en/" hreflang="en" lang="en">EN</a>
@@ -94,7 +94,7 @@
94
94
  <main>
95
95
  <div class="content-shell" data-article>
96
96
  <section class="hero">
97
- <p class="eyebrow">Piagent 1.38.1</p>
97
+ <p class="eyebrow">Piagent 1.38.2</p>
98
98
  <h1>Coding agent cho cả team, kiểm tra từng bước.</h1>
99
99
  <p>
100
100
  Một dashboard cho Terminal và trình duyệt. Dùng model bằng tài khoản của bạn, hoặc model của công ty qua Agent Watch và Agent Studio. Guard kiểm tra từng tool call; ở chế độ công ty, Harness của team tự yêu cầu chạy check, cho subagent review và báo kết quả ngay dưới câu trả lời.
@@ -108,7 +108,7 @@
108
108
  <div class="hero-actions">
109
109
  <a class="button primary" href="/quickstart">Bắt đầu</a>
110
110
  <a class="button" href="/ecosystem">Hệ sinh thái</a>
111
- <a class="button" href="/whats-new">Có gì mới trong 1.38.1</a>
111
+ <a class="button" href="/whats-new">Có gì mới trong 1.38.2</a>
112
112
  <a class="button" href="/commands">Xem command</a>
113
113
  </div>
114
114
  </section>
@@ -184,9 +184,9 @@ piagent-setup</code></pre>
184
184
  <h2 id="bat-dau-tu-dau">Bắt đầu từ đâu</h2>
185
185
  <div class="card-grid">
186
186
  <a class="doc-card" href="/whats-new">
187
- <span class="card-kicker">Bản 1.38.1</span>
187
+ <span class="card-kicker">Bản 1.38.2</span>
188
188
  <h3>Có gì mới</h3>
189
- <p>Dashboard thành editor: sửa file, terminal, review hunk, khôi phục lượt; Bypass không hỏi gì, cả cuộc trò chuyện công ty khi Harness bật; ở 1.37.1: run Studio chưa xác nhận đóng không còn bị ghi là đã đóng, helper đóng lỗi vẫn giữ câu trả lời, bài học team memory ghi đúng lệnh; ở 1.37.0: câu trả lời bị cắt giữa chừng không còn làm dừng task dài, có <code>piagent studio --rpc</code>; ở 1.36.1: Agent Watch mất kết nối tới Studio trong chốc lát không còn làm dừng task; ở 1.36.0: team memory học từ chỗ làm sai: Studio chấm những gì memory đã đưa, lệnh lỗi lặp lại thành bài học; ở 1.35: task dài không dừng khi Studio cập nhật hay model báo lỗi tạm thời; ở 1.34: helper báo kết quả, Agent Watch báo khi cần bạn; ở 1.33.0: chạy trên Pi 1.3.0; ở 1.32.1: Bypass được giữ sau khi tải lại, tab đang dùng không còn bị đăng xuất sau 8 giờ; ở 1.32.0: lượt lỗi hoặc bấm Stop được dừng cả ở Studio; ở 1.31.1: <code>memory_ask</code> có ngay sau khi cập nhật; ở 1.31.0: Memory của team đi theo branch và luật của team, có <code>memory_ask</code>; ở 1.30.1: Terminal công ty không còn hiện tên model, mở <code>piagent studio</code> ở thư mục home báo rõ cần vào thư mục dự án; ở 1.30.0: context lớn đi qua mạng chậm, Terminal công ty gọn như dashboard; ở 1.29.0: Terminal công ty có giao diện riêng, dừng lượt không còn làm hỏng cuộc trò chuyện; ở 1.28.3: Agent Watch tự cập nhật không còn làm gián đoạn Terminal công ty; ở 1.28.2: không còn lỗi “binding changed” ngay sau khi cập nhật; ở 1.28.1: Terminal công ty và Pi cá nhân không còn giẫm chân nhau (không nạp Piagent hai lần, dọn cấu hình công ty cũ, cuộc trò chuyện công ty chỉ mở bằng piagent studio); ở 1.28.0: team memory v2; ở 1.27.1: team memory chạy ổn cả khi agent đang gọi model; ở 1.27.0: team memory, agent công ty nhớ quyết định và quy tắc của team trong từng repo; ở 1.26.1: đổi tên cuộc trò chuyện được cả khi lượt đang chạy; ở 1.26.0: lệnh / và phím tắt của Terminal ngay trên dashboard, /undo hoàn tác lượt trước của agent, dev server chạy qua nhiều lượt; ở 1.25.0: thiếu môi trường thì agent xin quyền và chạy được sau khi bạn duyệt (run_on_host ngoài sandbox, start_docker mở Docker ngay trong cuộc trò chuyện); ở 1.24.0: chọn Fast ngay trên trang tạo cuộc trò chuyện công ty, nút Fast đổi màu vàng khi đang bật; ở 1.23.1: câu hỏi của agent luôn nằm cuối cuộc trò chuyện, ngay trên ô nhập, và dễ đọc hơn; ở 1.23.0: nút Fast cho cuộc trò chuyện công ty khi Harness cho phép, tool lỗi được báo về Studio (Logs → Tool lỗi), cuộc trò chuyện mới gửi được tin nhắn đầu sau khi Harness đổi; ở 1.22.1: dashboard không còn quay mãi khi project nằm trên ổ Windows nhìn từ WSL (/mnt/d…) hoặc phiên công ty không trả lời; ở 1.22.0: đính kèm được mọi file code và văn bản (.html, .css, .ts, .py, Dockerfile…); ở 1.21.1: bật Bypass được cả khi lượt đang chạy và được giữ sau khi tải lại; ở 1.21.0: câu hỏi và yêu cầu duyệt hiện từng cái một (main agent trước), thông báo góc phải khi cuộc trò chuyện khác xong hay đang chờ bạn, Studio ghi lại mỗi lần compact; ở 1.20.0: cài package trong sandbox công ty không phải duyệt (npm, PyPI, Go, Maven, Gradle… qua proxy chỉ cho registry); ở 1.19.0: task công ty có checklist được làm đến hết, cuối mỗi lượt báo rõ xong, dừng giữa chừng hay lỗi, Docker trong sandbox công ty, folder chứa nhiều repo; ở 1.18.0: đổi nhánh Git trên dashboard, tự thử lại khi lỗi tạm thời, Claude Haiku 5.5; ở 1.17.0: dashboard hiện nhánh Git của project; ở 1.16.3: dashboard cập nhật xong vẫn tự kiểm tra bản mới; ở 1.16.2: Terminal nói giống dashboard: hỏi cập nhật, /bypass, lỗi và ghi chú Harness bằng tiếng Việt; ở 1.16.1: bản mới được báo bằng dialog và kiểm tra mỗi giờ, tab dashboard không còn mất đăng nhập; ở 1.16.0: Bypass cho cuộc trò chuyện công ty, đổi Harness không làm gián đoạn; ở 1.15.2: cuộc trò chuyện dài tự thu gọn trở lại; ở 1.15.1: Studio thấy mỗi call của model dùng để làm gì, nhiều cuộc trò chuyện trong một folder không nhận nhầm thay đổi của nhau; ở 1.15.0: subagent bị từ chối nói đúng lý do; ở 1.14: cập nhật giữ model bạn đã chọn; ở 1.13: cuộc trò chuyện giữ chỗ đang đọc, chữ của agent có định dạng, Piagent trên Windows qua WSL2: sandbox công ty bằng bubblewrap và Agent Watch cho Windows; ở 1.12: @ chọn file và folder trên máy, skill và command dùng bằng /, nhánh cuộc trò chuyện công ty gửi được tin nhắn.</p>
189
+ <p>Cây thư mục như VS Code, theme màu (Dracula, Nord…), editor và terminal đứng yên khi cuộn; ở 1.38.1: dashboard thành editor: sửa file, terminal, review hunk, khôi phục lượt; Bypass không hỏi gì, cả cuộc trò chuyện công ty khi Harness bật; ở 1.37.1: run Studio chưa xác nhận đóng không còn bị ghi là đã đóng, helper đóng lỗi vẫn giữ câu trả lời, bài học team memory ghi đúng lệnh; ở 1.37.0: câu trả lời bị cắt giữa chừng không còn làm dừng task dài, có <code>piagent studio --rpc</code>; ở 1.36.1: Agent Watch mất kết nối tới Studio trong chốc lát không còn làm dừng task; ở 1.36.0: team memory học từ chỗ làm sai: Studio chấm những gì memory đã đưa, lệnh lỗi lặp lại thành bài học; ở 1.35: task dài không dừng khi Studio cập nhật hay model báo lỗi tạm thời; ở 1.34: helper báo kết quả, Agent Watch báo khi cần bạn; ở 1.33.0: chạy trên Pi 1.3.0; ở 1.32.1: Bypass được giữ sau khi tải lại, tab đang dùng không còn bị đăng xuất sau 8 giờ; ở 1.32.0: lượt lỗi hoặc bấm Stop được dừng cả ở Studio; ở 1.31.1: <code>memory_ask</code> có ngay sau khi cập nhật; ở 1.31.0: Memory của team đi theo branch và luật của team, có <code>memory_ask</code>; ở 1.30.1: Terminal công ty không còn hiện tên model, mở <code>piagent studio</code> ở thư mục home báo rõ cần vào thư mục dự án; ở 1.30.0: context lớn đi qua mạng chậm, Terminal công ty gọn như dashboard; ở 1.29.0: Terminal công ty có giao diện riêng, dừng lượt không còn làm hỏng cuộc trò chuyện; ở 1.28.3: Agent Watch tự cập nhật không còn làm gián đoạn Terminal công ty; ở 1.28.2: không còn lỗi “binding changed” ngay sau khi cập nhật; ở 1.28.1: Terminal công ty và Pi cá nhân không còn giẫm chân nhau (không nạp Piagent hai lần, dọn cấu hình công ty cũ, cuộc trò chuyện công ty chỉ mở bằng piagent studio); ở 1.28.0: team memory v2; ở 1.27.1: team memory chạy ổn cả khi agent đang gọi model; ở 1.27.0: team memory, agent công ty nhớ quyết định và quy tắc của team trong từng repo; ở 1.26.1: đổi tên cuộc trò chuyện được cả khi lượt đang chạy; ở 1.26.0: lệnh / và phím tắt của Terminal ngay trên dashboard, /undo hoàn tác lượt trước của agent, dev server chạy qua nhiều lượt; ở 1.25.0: thiếu môi trường thì agent xin quyền và chạy được sau khi bạn duyệt (run_on_host ngoài sandbox, start_docker mở Docker ngay trong cuộc trò chuyện); ở 1.24.0: chọn Fast ngay trên trang tạo cuộc trò chuyện công ty, nút Fast đổi màu vàng khi đang bật; ở 1.23.1: câu hỏi của agent luôn nằm cuối cuộc trò chuyện, ngay trên ô nhập, và dễ đọc hơn; ở 1.23.0: nút Fast cho cuộc trò chuyện công ty khi Harness cho phép, tool lỗi được báo về Studio (Logs → Tool lỗi), cuộc trò chuyện mới gửi được tin nhắn đầu sau khi Harness đổi; ở 1.22.1: dashboard không còn quay mãi khi project nằm trên ổ Windows nhìn từ WSL (/mnt/d…) hoặc phiên công ty không trả lời; ở 1.22.0: đính kèm được mọi file code và văn bản (.html, .css, .ts, .py, Dockerfile…); ở 1.21.1: bật Bypass được cả khi lượt đang chạy và được giữ sau khi tải lại; ở 1.21.0: câu hỏi và yêu cầu duyệt hiện từng cái một (main agent trước), thông báo góc phải khi cuộc trò chuyện khác xong hay đang chờ bạn, Studio ghi lại mỗi lần compact; ở 1.20.0: cài package trong sandbox công ty không phải duyệt (npm, PyPI, Go, Maven, Gradle… qua proxy chỉ cho registry); ở 1.19.0: task công ty có checklist được làm đến hết, cuối mỗi lượt báo rõ xong, dừng giữa chừng hay lỗi, Docker trong sandbox công ty, folder chứa nhiều repo; ở 1.18.0: đổi nhánh Git trên dashboard, tự thử lại khi lỗi tạm thời, Claude Haiku 5.5; ở 1.17.0: dashboard hiện nhánh Git của project; ở 1.16.3: dashboard cập nhật xong vẫn tự kiểm tra bản mới; ở 1.16.2: Terminal nói giống dashboard: hỏi cập nhật, /bypass, lỗi và ghi chú Harness bằng tiếng Việt; ở 1.16.1: bản mới được báo bằng dialog và kiểm tra mỗi giờ, tab dashboard không còn mất đăng nhập; ở 1.16.0: Bypass cho cuộc trò chuyện công ty, đổi Harness không làm gián đoạn; ở 1.15.2: cuộc trò chuyện dài tự thu gọn trở lại; ở 1.15.1: Studio thấy mỗi call của model dùng để làm gì, nhiều cuộc trò chuyện trong một folder không nhận nhầm thay đổi của nhau; ở 1.15.0: subagent bị từ chối nói đúng lý do; ở 1.14: cập nhật giữ model bạn đã chọn; ở 1.13: cuộc trò chuyện giữ chỗ đang đọc, chữ của agent có định dạng, Piagent trên Windows qua WSL2: sandbox công ty bằng bubblewrap và Agent Watch cho Windows; ở 1.12: @ chọn file và folder trên máy, skill và command dùng bằng /, nhánh cuộc trò chuyện công ty gửi được tin nhắn.</p>
190
190
  </a>
191
191
  <a class="doc-card" href="/ecosystem">
192
192
  <span class="card-kicker">Get started</span>
@@ -30,7 +30,7 @@
30
30
  <span>Pi Agent Platform</span>
31
31
  </a>
32
32
  <div class="top-actions">
33
- <span class="pill"><span class="pill-dot"></span>v1.38.1 docs · VI</span>
33
+ <span class="pill"><span class="pill-dot"></span>v1.38.2 docs · VI</span>
34
34
  <nav class="language-switch" aria-label="Ngôn ngữ">
35
35
  <a class="language-option current" href="/mcp-approval" hreflang="vi" lang="vi" aria-current="true">VI</a>
36
36
  <a class="language-option" href="/en/mcp-approval" hreflang="en" lang="en">EN</a>
@@ -30,7 +30,7 @@
30
30
  <span>Pi Agent Platform</span>
31
31
  </a>
32
32
  <div class="top-actions">
33
- <span class="pill"><span class="pill-dot"></span>v1.38.1 docs · VI</span>
33
+ <span class="pill"><span class="pill-dot"></span>v1.38.2 docs · VI</span>
34
34
  <nav class="language-switch" aria-label="Ngôn ngữ">
35
35
  <a class="language-option current" href="/mcp-auth" hreflang="vi" lang="vi" aria-current="true">VI</a>
36
36
  <a class="language-option" href="/en/mcp-auth" hreflang="en" lang="en">EN</a>
@@ -30,7 +30,7 @@
30
30
  <span>Pi Agent Platform</span>
31
31
  </a>
32
32
  <div class="top-actions">
33
- <span class="pill"><span class="pill-dot"></span>v1.38.1 docs · VI</span>
33
+ <span class="pill"><span class="pill-dot"></span>v1.38.2 docs · VI</span>
34
34
  <nav class="language-switch" aria-label="Ngôn ngữ">
35
35
  <a class="language-option current" href="/mcp-servers" hreflang="vi" lang="vi" aria-current="true">VI</a>
36
36
  <a class="language-option" href="/en/mcp-servers" hreflang="en" lang="en">EN</a>
@@ -30,7 +30,7 @@
30
30
  <span>Pi Agent Platform</span>
31
31
  </a>
32
32
  <div class="top-actions">
33
- <span class="pill"><span class="pill-dot"></span>v1.38.1 docs · VI</span>
33
+ <span class="pill"><span class="pill-dot"></span>v1.38.2 docs · VI</span>
34
34
  <nav class="language-switch" aria-label="Ngôn ngữ">
35
35
  <a class="language-option current" href="/mcp" hreflang="vi" lang="vi" aria-current="true">VI</a>
36
36
  <a class="language-option" href="/en/mcp" hreflang="en" lang="en">EN</a>
@@ -30,7 +30,7 @@
30
30
  <span>Pi Agent Platform</span>
31
31
  </a>
32
32
  <div class="top-actions">
33
- <span class="pill"><span class="pill-dot"></span>v1.38.1 docs · VI</span>
33
+ <span class="pill"><span class="pill-dot"></span>v1.38.2 docs · VI</span>
34
34
  <nav class="language-switch" aria-label="Ngôn ngữ">
35
35
  <a class="language-option current" href="/permissions" hreflang="vi" lang="vi" aria-current="true">VI</a>
36
36
  <a class="language-option" href="/en/permissions" hreflang="en" lang="en">EN</a>
@@ -30,7 +30,7 @@
30
30
  <span>Pi Agent Platform</span>
31
31
  </a>
32
32
  <div class="top-actions">
33
- <span class="pill"><span class="pill-dot"></span>v1.38.1 docs · VI</span>
33
+ <span class="pill"><span class="pill-dot"></span>v1.38.2 docs · VI</span>
34
34
  <nav class="language-switch" aria-label="Ngôn ngữ">
35
35
  <a class="language-option current" href="/profiles" hreflang="vi" lang="vi" aria-current="true">VI</a>
36
36
  <a class="language-option" href="/en/profiles" hreflang="en" lang="en">EN</a>
@@ -30,7 +30,7 @@
30
30
  <span>Pi Agent Platform</span>
31
31
  </a>
32
32
  <div class="top-actions">
33
- <span class="pill"><span class="pill-dot"></span>v1.38.1 docs · VI</span>
33
+ <span class="pill"><span class="pill-dot"></span>v1.38.2 docs · VI</span>
34
34
  <nav class="language-switch" aria-label="Ngôn ngữ">
35
35
  <a class="language-option current" href="/quickstart" hreflang="vi" lang="vi" aria-current="true">VI</a>
36
36
  <a class="language-option" href="/en/quickstart" hreflang="en" lang="en">EN</a>
@@ -30,7 +30,7 @@
30
30
  <span>Pi Agent Platform</span>
31
31
  </a>
32
32
  <div class="top-actions">
33
- <span class="pill"><span class="pill-dot"></span>v1.38.1 docs · VI</span>
33
+ <span class="pill"><span class="pill-dot"></span>v1.38.2 docs · VI</span>
34
34
  <nav class="language-switch" aria-label="Ngôn ngữ">
35
35
  <a class="language-option current" href="/runtime" hreflang="vi" lang="vi" aria-current="true">VI</a>
36
36
  <a class="language-option" href="/en/runtime" hreflang="en" lang="en">EN</a>
@@ -30,7 +30,7 @@
30
30
  <span>Pi Agent Platform</span>
31
31
  </a>
32
32
  <div class="top-actions">
33
- <span class="pill"><span class="pill-dot"></span>v1.38.1 docs · VI</span>
33
+ <span class="pill"><span class="pill-dot"></span>v1.38.2 docs · VI</span>
34
34
  <nav class="language-switch" aria-label="Ngôn ngữ">
35
35
  <a class="language-option current" href="/scope" hreflang="vi" lang="vi" aria-current="true">VI</a>
36
36
  <a class="language-option" href="/en/scope" hreflang="en" lang="en">EN</a>
@@ -30,7 +30,7 @@
30
30
  <span>Pi Agent Platform</span>
31
31
  </a>
32
32
  <div class="top-actions">
33
- <span class="pill"><span class="pill-dot"></span>v1.38.1 docs · VI</span>
33
+ <span class="pill"><span class="pill-dot"></span>v1.38.2 docs · VI</span>
34
34
  <nav class="language-switch" aria-label="Ngôn ngữ">
35
35
  <a class="language-option current" href="/security" hreflang="vi" lang="vi" aria-current="true">VI</a>
36
36
  <a class="language-option" href="/en/security" hreflang="en" lang="en">EN</a>
@@ -30,7 +30,7 @@
30
30
  <span>Pi Agent Platform</span>
31
31
  </a>
32
32
  <div class="top-actions">
33
- <span class="pill"><span class="pill-dot"></span>v1.38.1 docs · VI</span>
33
+ <span class="pill"><span class="pill-dot"></span>v1.38.2 docs · VI</span>
34
34
  <nav class="language-switch" aria-label="Ngôn ngữ">
35
35
  <a class="language-option current" href="/team" hreflang="vi" lang="vi" aria-current="true">VI</a>
36
36
  <a class="language-option" href="/en/team" hreflang="en" lang="en">EN</a>
@@ -30,7 +30,7 @@
30
30
  <span>Pi Agent Platform</span>
31
31
  </a>
32
32
  <div class="top-actions">
33
- <span class="pill"><span class="pill-dot"></span>v1.38.1 docs · VI</span>
33
+ <span class="pill"><span class="pill-dot"></span>v1.38.2 docs · VI</span>
34
34
  <nav class="language-switch" aria-label="Ngôn ngữ">
35
35
  <a class="language-option current" href="/whats-new" hreflang="vi" lang="vi" aria-current="true">VI</a>
36
36
  <a class="language-option" href="/en/whats-new" hreflang="en" lang="en">EN</a>
@@ -104,6 +104,12 @@
104
104
  <h1>Bản 1.9.0: nói việc bằng lời, Harness của team kiểm tra</h1>
105
105
  <p>Bỏ task contract và lệnh workflow. Chế độ công ty tự yêu cầu check và review; nút Dừng, lệnh có mạng theo lần duyệt và thẻ duyệt dễ đọc hơn.</p>
106
106
  </div>
107
+ <section class="section">
108
+ <p class="section-kicker">v1.38.2 · 2026-10-23</p>
109
+ <h2 id="v1-38-2">Cây thư mục như VS Code, theme màu</h2>
110
+ <p class="section-lead">Khung Tệp là cây thư mục: thư mục mở ngay tại chỗ, file đang mở được tô sáng. Chọn theme màu trong Cài đặt → Giao diện hoặc bảng lệnh (⌘K): Dracula, One Dark, Monokai, Nord, Tokyo Night, Catppuccin, Gruvbox, Solarized, GitHub; theme đổi màu cả giao diện, cú pháp trong editor và terminal. Editor và terminal đứng yên khi hội thoại dài cuộn xuống, kéo thanh chia để đổi độ rộng; trên điện thoại nút Tệp/Terminal luôn hiện.</p>
111
+ </section>
112
+
107
113
  <section class="section">
108
114
  <p class="section-kicker">v1.38.1 · 2026-10-23</p>
109
115
  <h2 id="v1-38-1">Dashboard thành editor, Bypass không hỏi gì</h2>
@@ -30,7 +30,7 @@
30
30
  <span>Pi Agent Platform</span>
31
31
  </a>
32
32
  <div class="top-actions">
33
- <span class="pill"><span class="pill-dot"></span>v1.38.1 docs · VI</span>
33
+ <span class="pill"><span class="pill-dot"></span>v1.38.2 docs · VI</span>
34
34
  <nav class="language-switch" aria-label="Ngôn ngữ">
35
35
  <a class="language-option current" href="/windows" hreflang="vi" lang="vi" aria-current="true">VI</a>
36
36
  <a class="language-option" href="/en/windows" hreflang="en" lang="en">EN</a>
@@ -30,7 +30,7 @@
30
30
  <span>Pi Agent Platform</span>
31
31
  </a>
32
32
  <div class="top-actions">
33
- <span class="pill"><span class="pill-dot"></span>v1.38.1 docs · VI</span>
33
+ <span class="pill"><span class="pill-dot"></span>v1.38.2 docs · VI</span>
34
34
  <nav class="language-switch" aria-label="Ngôn ngữ">
35
35
  <a class="language-option current" href="/workflows" hreflang="vi" lang="vi" aria-current="true">VI</a>
36
36
  <a class="language-option" href="/en/workflows" hreflang="en" lang="en">EN</a>
@@ -256,8 +256,8 @@
256
256
  },
257
257
  {
258
258
  "path": "tests",
259
- "fileCount": 619,
260
- "sha256": "837b457b95e2aee754b713263ed5bafed0ce1ef3dcff8035b47b43e4f65d3cbe"
259
+ "fileCount": 620,
260
+ "sha256": "e974e1a5b65072eb921060b1b73c5684fdfc9db4d341a04f2a77d36480e76e65"
261
261
  }
262
262
  ],
263
263
  "custodianComparisonRules": {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@piagent/platform",
3
- "version": "1.38.1",
3
+ "version": "1.38.2",
4
4
  "license": "MIT",
5
5
  "publishConfig": {
6
6
  "access": "public",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@piagent/core",
3
- "version": "1.38.1",
3
+ "version": "1.38.2",
4
4
  "type": "module",
5
5
  "private": true,
6
6
  "license": "MIT",
@@ -0,0 +1 @@
1
+ import{r as e}from"./rolldown-runtime-hePW80VL.js";import{D as t,X as n,_ as r,v as i,y as a}from"./ui-preferences-BO3AV7QE.js";import{A as o,C as s,D as c,S as l,b as u,m as d,n as f,r as p,t as m,u as h,w as g,x as _,y as v}from"./useId-DEefKUAT.js";import{r as y}from"./Typography-B9om7Evq.js";var b=e(n(),1),x=t(),S=b.createContext();function C({value:e,...t}){return(0,x.jsx)(S.Provider,{value:e??!0,...t})}var w=()=>b.useContext(S)??!1;function T(e){return typeof e==`string`}function E(e,t=166){let n;function r(...r){clearTimeout(n),n=setTimeout(()=>{e.apply(this,r)},t)}return r.clear=()=>{clearTimeout(n)},r}function D(e){return e&&e.ownerDocument||document}function O(e){return D(e).defaultView||window}var k=o,A=D;function j(e){let t=e.activeElement;for(;t?.shadowRoot?.activeElement!=null;)t=t.shadowRoot.activeElement;return t}var ee=j;function M(e,t,n){return e===void 0||T(e)?t:{...t,ownerState:{...t.ownerState,...n}}}function N(e,t,n){return typeof e==`function`?e(t,n):e}function P(e,t){let n=e.charCodeAt(2);return e[0]===`o`&&e[1]===`n`&&n>=65&&n<=90&&typeof t==`function`}function F(e){if(e===void 0)return{};let t={};for(let n of Object.keys(e))P(n,e[n])&&(t[n]=e[n]);return t}function I(e){if(e===void 0)return{};let t={};return Object.keys(e).filter(t=>!(t.match(/^on[A-Z]/)&&typeof e[t]==`function`)).forEach(n=>{t[n]=e[n]}),t}function te(e){let{getSlotProps:t,additionalProps:n,externalSlotProps:r,externalForwardedProps:i,className:o}=e;if(!t){let e=a(n?.className,o,i?.className,r?.className),t={...n?.style,...i?.style,...r?.style},s={...n,...i,...r};return e.length>0&&(s.className=e),Object.keys(t).length>0&&(s.style=t),{props:s,internalRef:void 0}}let s=F({...i,...r}),c=I(r),l=I(i),u=t(s),d=a(u?.className,n?.className,o,i?.className,r?.className),f={...u?.style,...n?.style,...i?.style,...r?.style},p={...u,...n,...l,...c};return d.length>0&&(p.className=d),Object.keys(f).length>0&&(p.style=f),{props:p,internalRef:u.ref}}function L(e,t){let{className:n,elementType:r,ownerState:i,externalForwardedProps:a,internalForwardedProps:o,shouldForwardComponentProp:s=!1,...c}=t,{component:u,slots:d={[e]:void 0},slotProps:f={[e]:void 0},...p}=a,m=d[e]||r,h=N(f[e],i),{props:{component:g,..._},internalRef:v}=te({className:n,...c,externalForwardedProps:e===`root`?p:void 0,externalSlotProps:h}),y=l(v,h?.ref,t.ref),b=e===`root`?g||u:g;return[m,M(m,{...e===`root`&&!u&&!d[e]&&o,...e!==`root`&&!d[e]&&o,..._,...b&&!s&&{as:b},...b&&s&&{component:b},ref:y},i)]}function ne(e){return i(`MuiSvgIcon`,e)}r(`MuiSvgIcon`,[`root`,`colorPrimary`,`colorSecondary`,`colorAction`,`colorError`,`colorDisabled`,`fontSizeInherit`,`fontSizeSmall`,`fontSizeMedium`,`fontSizeLarge`]);var re=e=>{let{color:t,fontSize:n,classes:r}=e,i={root:[`root`,t!==`inherit`&&`color${v(t)}`,`fontSize${v(n)}`]};return c(i,ne,r)},ie=g(`svg`,{name:`MuiSvgIcon`,slot:`Root`,overridesResolver:(e,t)=>{let{ownerState:n}=e;return[t.root,n.color!==`inherit`&&t[`color${v(n.color)}`],t[`fontSize${v(n.fontSize)}`]]}})(u(({theme:e})=>({userSelect:`none`,width:`1em`,height:`1em`,display:`inline-block`,flexShrink:0,...d(e,`fill`,{duration:(e.vars??e).transitions?.duration?.shorter}),variants:[{props:e=>!e.hasSvgAsChild,style:{fill:`currentColor`}},{props:{fontSize:`inherit`},style:{fontSize:`inherit`}},{props:{fontSize:`small`},style:{fontSize:e.typography?.pxToRem?.(20)||`1.25rem`}},{props:{fontSize:`medium`},style:{fontSize:e.typography?.pxToRem?.(24)||`1.5rem`}},{props:{fontSize:`large`},style:{fontSize:e.typography?.pxToRem?.(35)||`2.1875rem`}},...Object.entries((e.vars??e).palette).filter(([,e])=>e&&e.main).map(([t])=>({props:{color:t},style:{color:(e.vars??e).palette?.[t]?.main}})),{props:{color:`action`},style:{color:(e.vars??e).palette?.action?.active}},{props:{color:`disabled`},style:{color:(e.vars??e).palette?.action?.disabled}},{props:{color:`inherit`},style:{color:void 0}}]}))),R=b.forwardRef(function(e,t){let n=s({props:e,name:`MuiSvgIcon`}),{children:r,className:i,color:o=`inherit`,component:c=`svg`,fontSize:l=`medium`,htmlColor:u,inheritViewBox:d=!1,titleAccess:f,viewBox:p=`0 0 24 24`,...m}=n,h=b.isValidElement(r)&&r.type===`svg`,g={...n,color:o,component:c,fontSize:l,instanceFontSize:e.fontSize,inheritViewBox:d,viewBox:p,hasSvgAsChild:h},_={};d||(_.viewBox=p);let v=re(g);return(0,x.jsxs)(ie,{as:c,className:a(v.root,i),focusable:`false`,color:u,"aria-hidden":!f||void 0,role:f?`img`:void 0,ref:t,..._,...m,...h&&r.props,ownerState:g,children:[h?r.props.children:r,f?(0,x.jsx)(`title`,{children:f}):null]})});R.muiName=`SvgIcon`;function z(e,t){function n(t,n){return(0,x.jsx)(R,{"data-testid":void 0,ref:n,...t,children:e})}return n.muiName=R.muiName,b.memo(b.forwardRef(n))}function B(e,t){if(!e||!t)return!1;if(e.contains(t))return!0;let n=t.getRootNode?.();if(n&&n instanceof ShadowRoot){let n=t;for(;n;){if(e===n)return!0;n=n.parentNode??n.host??null}}return!1}var ae=B;function V(e,t){typeof e==`function`?e(t):e&&(e.current=t)}var oe=E,se=O;function ce(e){return i(`MuiIconButton`,e)}var H=r(`MuiIconButton`,[`root`,`disabled`,`colorInherit`,`colorPrimary`,`colorSecondary`,`colorError`,`colorInfo`,`colorSuccess`,`colorWarning`,`edgeStart`,`edgeEnd`,`sizeSmall`,`sizeMedium`,`sizeLarge`,`loading`,`loadingIndicator`,`loadingWrapper`]),le=e=>{let{classes:t,disabled:n,color:r,edge:i,size:a,loading:o}=e,s={root:[`root`,o&&`loading`,n&&`disabled`,r!=="default"&&`color${v(r)}`,i&&`edge${v(i)}`,`size${v(a)}`],loadingIndicator:[`loadingIndicator`],loadingWrapper:[`loadingWrapper`]};return c(s,ce,t)},ue=g(p,{name:`MuiIconButton`,slot:`Root`,overridesResolver:(e,t)=>{let{ownerState:n}=e;return[t.root,n.loading&&t.loading,n.color!=="default"&&t[`color${v(n.color)}`],n.edge&&t[`edge${v(n.edge)}`],t[`size${v(n.size)}`]]}})(u(({theme:e})=>({textAlign:`center`,flex:`0 0 auto`,fontSize:e.typography.pxToRem(24),padding:8,borderRadius:`50%`,color:(e.vars||e).palette.action.active,...d(e,`background-color`,{duration:e.transitions.duration.shortest}),variants:[{props:e=>!e.disableRipple,style:{"--IconButton-hoverBg":e.alpha((e.vars||e).palette.action.active,(e.vars||e).palette.action.hoverOpacity),"&:hover":{backgroundColor:`var(--IconButton-hoverBg)`,"@media (hover: none)":{backgroundColor:`transparent`}}}},{props:{edge:`start`},style:{marginLeft:-12}},{props:{edge:`start`,size:`small`},style:{marginLeft:-3}},{props:{edge:`end`},style:{marginRight:-12}},{props:{edge:`end`,size:`small`},style:{marginRight:-3}}]})),u(({theme:e})=>({variants:[{props:{color:`inherit`},style:{color:`inherit`}},...Object.entries(e.palette).filter(h()).map(([t])=>({props:{color:t},style:{color:(e.vars||e).palette[t].main,"--IconButton-hoverBg":e.alpha((e.vars||e).palette[t].main,(e.vars||e).palette.action.hoverOpacity)}})),{props:{size:`small`},style:{padding:5,fontSize:e.typography.pxToRem(18)}},{props:{size:`large`},style:{padding:12,fontSize:e.typography.pxToRem(28)}}],[`&.${H.disabled}`]:{backgroundColor:`transparent`,color:(e.vars||e).palette.action.disabled},[`&.${H.loading}`]:{color:`transparent`}}))),de=g(`span`,{name:`MuiIconButton`,slot:`LoadingIndicator`})(({theme:e})=>({display:`none`,position:`absolute`,visibility:`visible`,top:`50%`,left:`50%`,transform:`translate(-50%, -50%)`,color:(e.vars||e).palette.action.disabled,variants:[{props:{loading:!0},style:{display:`flex`}}]})),U=b.forwardRef(function(e,t){let n=s({props:e,name:`MuiIconButton`}),{edge:r=!1,children:i,className:o,color:c=`default`,disabled:l=!1,disableFocusRipple:u=!1,size:d=`medium`,id:p,loading:h=null,loadingIndicator:g,..._}=n,v=m(p),y=g??(0,x.jsx)(f,{"aria-labelledby":v,color:`inherit`,size:16}),b={...n,edge:r,color:c,disabled:l,disableFocusRipple:u,loading:h,loadingIndicator:y,size:d},S=le(b);return(0,x.jsxs)(ue,{id:h?v:p,className:a(S.root,o),centerRipple:!0,internalNativeButton:!0,focusRipple:!u,disabled:l||h,ref:t,..._,ownerState:b,children:[typeof h==`boolean`&&(0,x.jsx)(`span`,{className:S.loadingWrapper,style:{display:`contents`},children:(0,x.jsx)(de,{className:S.loadingIndicator,ownerState:b,children:h&&y})}),i]})}),W=b.createContext(void 0);function G(){let e=b.useContext(W);if(e===void 0)throw Error(`MUI: RovingTabIndexContext is missing. Roving tab index items must be placed within a roving tab index provider.`);return e}var fe=Object.is;function pe(e,t){if(e===t)return!0;if(!(e instanceof Object)||!(t instanceof Object))return!1;let n=0,r=0;for(let r in e)if(n+=1,!fe(e[r],t[r])||!(r in t))return!1;for(let e in t)r+=1;return n===r}var me=[`ArrowRight`,`ArrowLeft`,`ArrowUp`,`ArrowDown`,`Home`,`End`];function he(e){let{activeItemId:t,getDefaultActiveItemId:n,orientation:r,isRtl:i=!1,isItemFocusable:a=Ce,wrap:o=!0}=e,[s,c]=b.useState(t),[l,u]=b.useState(t),d=s;t!==l&&(u(t),t!==void 0&&t!==s&&(d=t,c(t)));let f=b.useRef(null),p=b.useRef(new Map),[m,h]=b.useState(0),g=b.useMemo(()=>X(p.current),[m]),v=K(d,g,a,n),y=b.useRef(v);y.current=v;let x=b.useCallback(()=>{let e=X(p.current);return ye(e,K(y.current,e,a,n))},[n,a]),S=b.useCallback(()=>p.current,[]),C=_(e=>{pe(p.current.get(e.id)??null,e)||(p.current.set(e.id,e),h(e=>e+1))}),w=_(e=>{p.current.delete(e)&&h(e=>e+1)}),T=_(e=>{c(e)}),E=b.useCallback(e=>y.current===e,[]),O=b.useCallback((e,t,n,r)=>{let i=J(Z(p.current),e,t,n,r??a);return i?(i.element?.focus(),c(i.id),i):null},[a]),k=b.useCallback((e,t,n)=>({onFocus:e=>{t?.(e);let n=Z(p.current),r=xe(n,e.target);r!==-1&&c(n[r].id)},onKeyDown:e=>{if(n?.(e),e.defaultPrevented||e.altKey||e.shiftKey||e.ctrlKey||e.metaKey||!me.includes(e.key))return;let t=r===`horizontal`?`ArrowLeft`:`ArrowUp`,a=r===`horizontal`?`ArrowRight`:`ArrowDown`;r===`horizontal`&&i&&(t=`ArrowRight`,a=`ArrowLeft`);let s=Z(p.current),c=j(D(f.current)),l=c===f.current,u=q(s,c,y.current),d=`next`;switch(e.key){case t:d=`previous`,e.preventDefault(),l&&(u=s.length);break;case a:e.preventDefault(),l&&(u=-1);break;case`Home`:e.preventDefault(),u=-1;break;case`End`:e.preventDefault(),d=`previous`,u=s.length;break;default:return}O(u,d,o)},ref:Te(e,e=>{f.current=e})}),[O,i,r,o]),A=b.useCallback(e=>{let t=Z(p.current),n=j(D(f.current)),r=n===f.current?-1:q(t,n,y.current);return O(r,`next`,!0,e)?.id??null},[O]);return b.useMemo(()=>({activeItemId:v,focusNext:A,getActiveItem:x,getContainerProps:k,getItemMap:S,isItemActive:E,registerItem:C,setActiveItemId:T,unregisterItem:w}),[v,A,x,k,S,E,C,T,w])}function ge(e){let{activeItemId:t,registerItem:n,unregisterItem:r}=G(),i=b.useRef(null),a=b.useMemo(()=>({disabled:e.disabled??!1,element:null,focusableWhenDisabled:e.focusableWhenDisabled??!1,id:e.id,selected:e.selected??!1,textValue:e.textValue}),[e.disabled,e.focusableWhenDisabled,e.id,e.selected,e.textValue]),s=b.useRef(a);s.current=a;let c=b.useCallback(t=>{if(i.current=t,t==null){queueMicrotask(()=>{i.current??r(e.id)});return}n({...s.current,element:t})},[e.id,n,r]),u=l(e.ref,c);return o(()=>{i.current&&n({...a,element:i.current})},[a,n]),o(()=>{let t=e.id;return()=>{r(t)}},[e.id,r]),{ref:u,tabIndex:t===e.id?0:-1}}function K(e,t,n,r){return e==null?ve(t,n,r):_e(e,t,n)}function _e(e,t,n){let r=be(t,e);return r===-1?Y(t,n):n(t[r])?t[r].id:J(t,r,`next`,!1,n)?.id??null}function ve(e,t,n){let r=n?.(e);if(r!=null){let n=ye(e,r);if(n&&t(n))return n.id}return Y(e,t)}function q(e,t,n){if(t){let n=xe(e,t);if(n!==-1)return n}return be(e,n)}function J(e,t,n,r,i){let a=e.length-1;if(a===-1)return null;let o=!1,s=Se(t,a,n,r),c=s;for(;s!==-1;){if(s===c){if(o)return null;o=!0}let t=e[s];if(!t||!i(t))s=Se(s,a,n,r);else return t}return null}function Y(e,t){return e.find(e=>t(e))?.id??null}function ye(e,t){return t==null?null:e.find(e=>e.id===t)??null}function be(e,t){return t==null?-1:e.findIndex(e=>e.id===t)}function xe(e,t){return t?e.findIndex(e=>e.element===t||e.element?.contains(t)):-1}function X(e){let t=Array.from(e.values());if(t.every(e=>e.element==null))return t;let n=t.filter(Q).sort((e,t)=>we(e.element,t.element)),r=t.filter(e=>!Q(e));return[...n,...r]}function Z(e){return X(e).filter(Q)}function Se(e,t,n,r=!0){return n===`next`?e===t?r?0:-1:e+1:e===0?r?t:-1:e-1}function Ce(e){return e.element?e.focusableWhenDisabled?!0:!e.disabled&&!e.element.hasAttribute(`disabled`)&&e.element.getAttribute(`aria-disabled`)!==`true`&&e.element.hasAttribute(`tabindex`):!1}function Q(e){return e.element!=null&&e.element.isConnected}function we(e,t){if(e===t)return 0;let n=e.compareDocumentPosition(t);return n&Node.DOCUMENT_POSITION_FOLLOWING||n&Node.DOCUMENT_POSITION_CONTAINED_BY?-1:n&Node.DOCUMENT_POSITION_PRECEDING||n&Node.DOCUMENT_POSITION_CONTAINS?1:0}function Te(...e){return t=>{e.forEach(e=>{V(e??null,t)})}}function Ee(e){let{elementType:t,externalSlotProps:n,ownerState:r,skipResolvingSlotProps:i=!1,...a}=e,o=i?{}:N(n,r),{props:s,internalRef:c}=te({...a,externalSlotProps:o}),u=l(c,o?.ref,e.additionalProps?.ref);return M(t,{...s,ref:u},r)}function De(e){return i(`MuiAlert`,e)}var Oe=r(`MuiAlert`,[`root`,`action`,`icon`,`message`,`filled`,`colorSuccess`,`colorInfo`,`colorWarning`,`colorError`,`outlined`,`standard`]),ke=z((0,x.jsx)(`path`,{d:`M20,12A8,8 0 0,1 12,20A8,8 0 0,1 4,12A8,8 0 0,1 12,4C12.76,4 13.5,4.11 14.2, 4.31L15.77,2.74C14.61,2.26 13.34,2 12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0, 0 22,12M7.91,10.08L6.5,11.5L11,16L21,6L19.59,4.58L11,13.17L7.91,10.08Z`}),`SuccessOutlined`),Ae=z((0,x.jsx)(`path`,{d:`M12 5.99L19.53 19H4.47L12 5.99M12 2L1 21h22L12 2zm1 14h-2v2h2v-2zm0-6h-2v4h2v-4z`}),`ReportProblemOutlined`),je=z((0,x.jsx)(`path`,{d:`M11 15h2v2h-2zm0-8h2v6h-2zm.99-5C6.47 2 2 6.48 2 12s4.47 10 9.99 10C17.52 22 22 17.52 22 12S17.52 2 11.99 2zM12 20c-4.42 0-8-3.58-8-8s3.58-8 8-8 8 3.58 8 8-3.58 8-8 8z`}),`ErrorOutline`),Me=z((0,x.jsx)(`path`,{d:`M11,9H13V7H11M12,20C7.59,20 4,16.41 4,12C4,7.59 7.59,4 12,4C16.41,4 20,7.59 20, 12C20,16.41 16.41,20 12,20M12,2A10,10 0 0,0 2,12A10,10 0 0,0 12,22A10,10 0 0,0 22,12A10, 10 0 0,0 12,2M11,17H13V11H11V17Z`}),`InfoOutlined`),Ne=z((0,x.jsx)(`path`,{d:`M19 6.41L17.59 5 12 10.59 6.41 5 5 6.41 10.59 12 5 17.59 6.41 19 12 13.41 17.59 19 19 17.59 13.41 12z`}),`Close`),Pe=e=>{let{variant:t,color:n,severity:r,classes:i}=e,a={root:[`root`,`color${v(n||r)}`,`${t}`],icon:[`icon`],message:[`message`],action:[`action`]};return c(a,De,i)},Fe=g(y,{name:`MuiAlert`,slot:`Root`,overridesResolver:(e,t)=>{let{ownerState:n}=e;return[t.root,t[n.variant]]}})(u(({theme:e})=>{let t=e.palette.mode===`light`?e.darken:e.lighten,n=e.palette.mode===`light`?e.lighten:e.darken;return{...e.typography.body2,backgroundColor:`transparent`,display:`flex`,padding:`6px 16px`,variants:[...Object.entries(e.palette).filter(h([`light`])).map(([r])=>({props:{colorSeverity:r,variant:`standard`},style:{color:e.vars?e.vars.palette.Alert[`${r}Color`]:t(e.palette[r].light,.6),backgroundColor:e.vars?e.vars.palette.Alert[`${r}StandardBg`]:n(e.palette[r].light,.9),[`& .${Oe.icon}`]:e.vars?{color:e.vars.palette.Alert[`${r}IconColor`]}:{color:e.palette[r].main}}})),...Object.entries(e.palette).filter(h([`light`])).map(([n])=>({props:{colorSeverity:n,variant:`outlined`},style:{color:e.vars?e.vars.palette.Alert[`${n}Color`]:t(e.palette[n].light,.6),border:`1px solid ${(e.vars||e).palette[n].light}`,[`& .${Oe.icon}`]:e.vars?{color:e.vars.palette.Alert[`${n}IconColor`]}:{color:e.palette[n].main}}})),...Object.entries(e.palette).filter(h([`dark`])).map(([t])=>({props:{colorSeverity:t,variant:`filled`},style:{fontWeight:e.typography.fontWeightMedium,...e.vars?{color:e.vars.palette.Alert[`${t}FilledColor`],backgroundColor:e.vars.palette.Alert[`${t}FilledBg`]}:{backgroundColor:e.palette.mode===`dark`?e.palette[t].dark:e.palette[t].main,color:e.palette.getContrastText(e.palette[t].main)}}}))]}})),Ie=g(`div`,{name:`MuiAlert`,slot:`Icon`})({marginRight:12,padding:`7px 0`,display:`flex`,fontSize:22,opacity:.9}),Le=g(`div`,{name:`MuiAlert`,slot:`Message`})({padding:`8px 0`,minWidth:0,overflow:`auto`}),Re=g(`div`,{name:`MuiAlert`,slot:`Action`})({display:`flex`,alignItems:`flex-start`,padding:`4px 0 0 16px`,marginLeft:`auto`,marginRight:-8}),$={success:(0,x.jsx)(ke,{fontSize:`inherit`}),warning:(0,x.jsx)(Ae,{fontSize:`inherit`}),error:(0,x.jsx)(je,{fontSize:`inherit`}),info:(0,x.jsx)(Me,{fontSize:`inherit`})},ze=b.forwardRef(function(e,t){let n=s({props:e,name:`MuiAlert`}),{action:r,children:i,className:o,closeText:c=`Close`,color:l,icon:u,iconMapping:d=$,onClose:f,role:p=`alert`,severity:m=`success`,slotProps:h={},slots:g={},variant:_=`standard`,...v}=n,y={...n,color:l,severity:m,variant:_,colorSeverity:l||m},b=Pe(y),S={slots:g,slotProps:h},[C,w]=L(`root`,{ref:t,shouldForwardComponentProp:!0,className:a(b.root,o),elementType:Fe,externalForwardedProps:{...S,...v},ownerState:y,additionalProps:{role:p,elevation:0}}),[T,E]=L(`icon`,{className:b.icon,elementType:Ie,externalForwardedProps:S,ownerState:y}),[D,O]=L(`message`,{className:b.message,elementType:Le,externalForwardedProps:S,ownerState:y}),[k,A]=L(`action`,{className:b.action,elementType:Re,externalForwardedProps:S,ownerState:y}),[j,ee]=L(`closeButton`,{elementType:U,externalForwardedProps:S,ownerState:y}),[M,N]=L(`closeIcon`,{elementType:Ne,externalForwardedProps:S,ownerState:y});return(0,x.jsxs)(C,{...w,children:[u===!1?null:(0,x.jsx)(T,{...E,children:u||d[m]||$[m]}),(0,x.jsx)(D,{...O,children:i}),r==null?null:(0,x.jsx)(k,{...A,children:r}),r==null&&f?(0,x.jsx)(k,{...A,children:(0,x.jsx)(j,{size:`small`,"aria-label":c,title:c,color:`inherit`,onClick:f,...ee,children:(0,x.jsx)(M,{fontSize:`small`,...N})})}):null]})});export{D as C,w as D,C as E,O as S,T,F as _,he as a,A as b,U as c,V as d,ae as f,L as g,R as h,ge as i,se as l,z as m,Ee as n,W as o,B as p,Ce as r,G as s,ze as t,oe as u,P as v,E as w,k as x,ee as y};
@@ -0,0 +1 @@
1
+ import{r as e}from"./rolldown-runtime-hePW80VL.js";import{D as t,X as n,_ as r,v as i,y as a}from"./ui-preferences-BO3AV7QE.js";import{C as o,D as s,T as c,b as l,j as u,m as d,n as f,r as p,t as m,u as h,w as g,y as _}from"./useId-DEefKUAT.js";var v=e(n(),1);function y(e){return i(`MuiButton`,e)}var b=r(`MuiButton`,`root.text.outlined.contained.disableElevation.focusVisible.disabled.colorInherit.colorPrimary.colorSecondary.colorSuccess.colorError.colorInfo.colorWarning.sizeMedium.sizeSmall.sizeLarge.fullWidth.startIcon.endIcon.icon.loading.loadingWrapper.loadingIconPlaceholder.loadingIndicator.loadingPositionCenter.loadingPositionStart.loadingPositionEnd`.split(`.`)),x=v.createContext({}),S=v.createContext(void 0),C=t(),w=e=>{let{color:t,disableElevation:n,fullWidth:r,size:i,variant:a,loading:o,loadingPosition:c,classes:l}=e,u={root:[`root`,o&&`loading`,a,`size${_(i)}`,`color${_(t)}`,n&&`disableElevation`,r&&`fullWidth`,o&&`loadingPosition${_(c)}`],startIcon:[`icon`,`startIcon`],endIcon:[`icon`,`endIcon`],loadingIndicator:[`loadingIndicator`],loadingWrapper:[`loadingWrapper`]},d=s(u,y,l);return{...l,...d}},T=[{props:{size:`small`},style:{"& > *:nth-of-type(1)":{fontSize:18}}},{props:{size:`medium`},style:{"& > *:nth-of-type(1)":{fontSize:20}}},{props:{size:`large`},style:{"& > *:nth-of-type(1)":{fontSize:22}}}],E=g(p,{shouldForwardProp:e=>c(e)||e===`classes`,name:`MuiButton`,slot:`Root`,overridesResolver:(e,t)=>{let{ownerState:n}=e;return[t.root,t[n.variant],t[`size${_(n.size)}`],n.color===`inherit`&&t.colorInherit,n.disableElevation&&t.disableElevation,n.fullWidth&&t.fullWidth,n.loading&&t.loading]}})(l(({theme:e})=>{let t=e.palette.mode===`light`?e.palette.grey[300]:e.palette.grey[800],n=e.palette.mode===`light`?e.palette.grey.A100:e.palette.grey[700];return{...e.typography.button,minWidth:64,padding:`6px 16px`,border:0,borderRadius:(e.vars||e).shape.borderRadius,...d(e,[`background-color`,`box-shadow`,`border-color`,`color`],{duration:e.transitions.duration.short}),"&:hover":{textDecoration:`none`},[`&.${b.disabled}`]:{color:(e.vars||e).palette.action.disabled},variants:[{props:{variant:`contained`},style:{color:`var(--variant-containedColor)`,backgroundColor:`var(--variant-containedBg)`,boxShadow:(e.vars||e).shadows[2],"&:hover":{boxShadow:(e.vars||e).shadows[4],"@media (hover: none)":{boxShadow:(e.vars||e).shadows[2]}},"&:active":{boxShadow:(e.vars||e).shadows[8]},[`&.${b.focusVisible}`]:{boxShadow:(e.vars||e).shadows[6]},[`&.${b.disabled}`]:{color:(e.vars||e).palette.action.disabled,boxShadow:(e.vars||e).shadows[0],backgroundColor:(e.vars||e).palette.action.disabledBackground}}},{props:{variant:`outlined`},style:{padding:`5px 15px`,border:`1px solid currentColor`,borderColor:`var(--variant-outlinedBorder, currentColor)`,backgroundColor:`var(--variant-outlinedBg)`,color:`var(--variant-outlinedColor)`,[`&.${b.disabled}`]:{border:`1px solid ${(e.vars||e).palette.action.disabledBackground}`}}},{props:{variant:`text`},style:{padding:`6px 8px`,color:`var(--variant-textColor)`,backgroundColor:`var(--variant-textBg)`}},...Object.entries(e.palette).filter(h()).map(([t])=>({props:{color:t},style:{"--variant-textColor":(e.vars||e).palette[t].main,"--variant-outlinedColor":(e.vars||e).palette[t].main,"--variant-outlinedBorder":e.alpha((e.vars||e).palette[t].main,.5),"--variant-containedColor":(e.vars||e).palette[t].contrastText,"--variant-containedBg":(e.vars||e).palette[t].main,"@media (hover: hover)":{"&:hover":{"--variant-containedBg":(e.vars||e).palette[t].dark,"--variant-textBg":e.alpha((e.vars||e).palette[t].main,(e.vars||e).palette.action.hoverOpacity),"--variant-outlinedBorder":(e.vars||e).palette[t].main,"--variant-outlinedBg":e.alpha((e.vars||e).palette[t].main,(e.vars||e).palette.action.hoverOpacity)}}}})),{props:{color:`inherit`},style:{color:`inherit`,borderColor:`currentColor`,"--variant-containedBg":e.vars?e.vars.palette.Button.inheritContainedBg:t,"@media (hover: hover)":{"&:hover":{"--variant-containedBg":e.vars?e.vars.palette.Button.inheritContainedHoverBg:n,"--variant-textBg":e.alpha((e.vars||e).palette.text.primary,(e.vars||e).palette.action.hoverOpacity),"--variant-outlinedBg":e.alpha((e.vars||e).palette.text.primary,(e.vars||e).palette.action.hoverOpacity)}}}},{props:{size:`small`,variant:`text`},style:{padding:`4px 5px`,fontSize:e.typography.pxToRem(13)}},{props:{size:`large`,variant:`text`},style:{padding:`8px 11px`,fontSize:e.typography.pxToRem(15)}},{props:{size:`small`,variant:`outlined`},style:{padding:`3px 9px`,fontSize:e.typography.pxToRem(13)}},{props:{size:`large`,variant:`outlined`},style:{padding:`7px 21px`,fontSize:e.typography.pxToRem(15)}},{props:{size:`small`,variant:`contained`},style:{padding:`4px 10px`,fontSize:e.typography.pxToRem(13)}},{props:{size:`large`,variant:`contained`},style:{padding:`8px 22px`,fontSize:e.typography.pxToRem(15)}},{props:{disableElevation:!0},style:{boxShadow:`none`,"&:hover":{boxShadow:`none`},[`&.${b.focusVisible}`]:{boxShadow:`none`},"&:active":{boxShadow:`none`},[`&.${b.disabled}`]:{boxShadow:`none`}}},{props:{fullWidth:!0},style:{width:`100%`}},{props:{loadingPosition:`center`},style:{...d(e,[`background-color`,`box-shadow`,`border-color`],{duration:e.transitions.duration.short}),[`&.${b.loading}`]:{color:`transparent`}}}]}})),D=g(`span`,{name:`MuiButton`,slot:`StartIcon`,overridesResolver:(e,t)=>{let{ownerState:n}=e;return[t.startIcon,n.loading&&t.startIconLoadingStart]}})(({theme:e})=>({display:`inherit`,alignItems:`center`,marginRight:8,marginLeft:-4,"&::before":{content:`"\\200b"`,width:0,overflow:`hidden`},variants:[{props:{size:`small`},style:{marginLeft:-2}},{props:{loadingPosition:`start`,loading:!0},style:{...d(e,[`opacity`],{duration:e.transitions.duration.short}),opacity:0}},{props:{loadingPosition:`start`,loading:!0,fullWidth:!0},style:{marginRight:-8}},...T]})),O=g(`span`,{name:`MuiButton`,slot:`EndIcon`,overridesResolver:(e,t)=>{let{ownerState:n}=e;return[t.endIcon,n.loading&&t.endIconLoadingEnd]}})(({theme:e})=>({display:`inherit`,marginRight:-4,marginLeft:8,variants:[{props:{size:`small`},style:{marginRight:-2}},{props:{loadingPosition:`end`,loading:!0},style:{...d(e,[`opacity`],{duration:e.transitions.duration.short}),opacity:0}},{props:{loadingPosition:`end`,loading:!0,fullWidth:!0},style:{marginLeft:-8}},...T]})),k=g(`span`,{name:`MuiButton`,slot:`LoadingIndicator`})(({theme:e})=>({display:`none`,position:`absolute`,visibility:`visible`,variants:[{props:{loading:!0},style:{display:`flex`}},{props:{loadingPosition:`start`},style:{left:14}},{props:{loadingPosition:`start`,size:`small`},style:{left:10}},{props:{variant:`text`,loadingPosition:`start`},style:{left:6}},{props:{loadingPosition:`center`},style:{left:`50%`,transform:`translate(-50%)`,color:(e.vars||e).palette.action.disabled}},{props:{loadingPosition:`end`},style:{right:14}},{props:{loadingPosition:`end`,size:`small`},style:{right:10}},{props:{variant:`text`,loadingPosition:`end`},style:{right:6}},{props:{loadingPosition:`start`,fullWidth:!0},style:{position:`relative`,left:-10}},{props:{loadingPosition:`end`,fullWidth:!0},style:{position:`relative`,right:-10}}]})),A=g(`span`,{name:`MuiButton`,slot:`LoadingIconPlaceholder`})({display:`inline-block`,width:`1em`,height:`1em`}),j=v.forwardRef(function(e,t){let n=v.useContext(x),r=v.useContext(S),i=u(n,e),s=o({props:i,name:`MuiButton`}),{children:c,color:l=`primary`,component:d=`button`,className:p,disabled:h=!1,disableElevation:g=!1,disableFocusRipple:_=!1,endIcon:y,focusVisibleClassName:b,fullWidth:T=!1,id:j,loading:M=null,loadingIndicator:N,loadingPosition:P=`center`,size:F=`medium`,startIcon:I,type:L,variant:R=`text`,...z}=s,B=m(j),V=N??(0,C.jsx)(f,{"aria-labelledby":B,color:`inherit`,size:16}),H={...s,color:l,component:d,disabled:h,disableElevation:g,disableFocusRipple:_,fullWidth:T,loading:M,loadingIndicator:V,loadingPosition:P,size:F,type:L,variant:R},U=w(H),W=(I||M&&P===`start`)&&(0,C.jsx)(D,{className:U.startIcon,ownerState:H,children:I||(0,C.jsx)(A,{className:U.loadingIconPlaceholder,ownerState:H})}),G=(y||M&&P===`end`)&&(0,C.jsx)(O,{className:U.endIcon,ownerState:H,children:y||(0,C.jsx)(A,{className:U.loadingIconPlaceholder,ownerState:H})}),K=r||``,q=typeof M==`boolean`?(0,C.jsx)(`span`,{className:U.loadingWrapper,style:{display:`contents`},children:M&&(0,C.jsx)(k,{className:U.loadingIndicator,ownerState:H,children:V})}):null,{root:J,...Y}=U;return(0,C.jsxs)(E,{ownerState:H,className:a(n.className,U.root,p,K),component:d,disabled:h||M,focusRipple:!_,focusVisibleClassName:a(U.focusVisible,b),ref:t,internalNativeButton:!0,type:L,id:M?B:j,...z,classes:Y,children:[W,P!==`end`&&q,c,P===`end`&&q,G]})});export{j as t};