@piagent/platform 1.43.5 → 1.43.9

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 (109) hide show
  1. package/CHANGELOG.md +66 -0
  2. package/docs/command-reference-vietnamese.md +2 -2
  3. package/docs/distribution-standard.md +6 -6
  4. package/docs/operator-manual-vietnamese.md +7 -7
  5. package/docs/publishing-for-teams.md +4 -0
  6. package/docs/release-install-policy.md +2 -2
  7. package/docs/team-onboarding.md +2 -2
  8. package/docs-site/architecture.html +1 -1
  9. package/docs-site/assets/search-en.json +1 -1
  10. package/docs-site/assets/search-vi.json +1 -1
  11. package/docs-site/benchmark.html +1 -1
  12. package/docs-site/commands.html +1 -1
  13. package/docs-site/context-engine.html +1 -1
  14. package/docs-site/ecosystem.html +1 -1
  15. package/docs-site/en/architecture.html +1 -1
  16. package/docs-site/en/benchmark.html +1 -1
  17. package/docs-site/en/commands.html +1 -1
  18. package/docs-site/en/context-engine.html +1 -1
  19. package/docs-site/en/ecosystem.html +1 -1
  20. package/docs-site/en/index.html +15 -15
  21. package/docs-site/en/mcp-approval.html +1 -1
  22. package/docs-site/en/mcp-auth.html +1 -1
  23. package/docs-site/en/mcp-servers.html +1 -1
  24. package/docs-site/en/mcp.html +1 -1
  25. package/docs-site/en/permissions.html +1 -1
  26. package/docs-site/en/profiles.html +1 -1
  27. package/docs-site/en/quickstart.html +1 -1
  28. package/docs-site/en/runtime.html +1 -1
  29. package/docs-site/en/scope.html +1 -1
  30. package/docs-site/en/security.html +1 -1
  31. package/docs-site/en/team.html +1 -1
  32. package/docs-site/en/update.html +3 -3
  33. package/docs-site/en/whats-new.html +102 -55
  34. package/docs-site/en/windows.html +1 -1
  35. package/docs-site/en/workflows.html +1 -1
  36. package/docs-site/index.html +15 -15
  37. package/docs-site/mcp-approval.html +1 -1
  38. package/docs-site/mcp-auth.html +1 -1
  39. package/docs-site/mcp-servers.html +1 -1
  40. package/docs-site/mcp.html +1 -1
  41. package/docs-site/permissions.html +1 -1
  42. package/docs-site/profiles.html +1 -1
  43. package/docs-site/quickstart.html +1 -1
  44. package/docs-site/releases.json +149 -0
  45. package/docs-site/runtime.html +1 -1
  46. package/docs-site/scope.html +1 -1
  47. package/docs-site/security.html +1 -1
  48. package/docs-site/team.html +1 -1
  49. package/docs-site/update.html +3 -3
  50. package/docs-site/whats-new.html +102 -55
  51. package/docs-site/windows.html +1 -1
  52. package/docs-site/workflows.html +1 -1
  53. package/evals/fixtures/piagent-webui/workspace-media-v1.invalid.json +18 -0
  54. package/evals/fixtures/piagent-webui/workspace-media-v1.valid.json +18 -0
  55. package/evals/private-holdout-v1/public-exposure.v2.json +2 -2
  56. package/package.json +1 -1
  57. package/packages/piagent-core/extensions/workspace-inspection.ts +15 -0
  58. package/packages/piagent-core/managed/agent-skills.mjs +2 -2
  59. package/packages/piagent-core/managed/boundary-queue.mjs +1 -1
  60. package/packages/piagent-core/managed/dist/workspace/manifest.json +1 -1
  61. package/packages/piagent-core/managed/dist/workspace/worker.mjs +43 -1
  62. package/packages/piagent-core/managed/language-environment.mjs +6 -1
  63. package/packages/piagent-core/managed/session.mjs +1 -1
  64. package/packages/piagent-core/managed/workflow.mjs +19 -4
  65. package/packages/piagent-core/package.json +1 -1
  66. package/packages/piagent-core/runtime/inspection/workspace-worker.ts +3 -3
  67. package/packages/piagent-core/runtime/registration/agent-resources.ts +3 -2
  68. package/packages/piagent-core/runtime/resources/agent-resources.d.mts +3 -2
  69. package/packages/piagent-core/runtime/resources/agent-resources.mjs +17 -10
  70. package/packages/piagent-core/runtime/resources/plugin-skills.mjs +127 -0
  71. package/packages/piagent-core/runtime/session/system-prompt.ts +2 -1
  72. package/packages/piagent-webui/dist/client/assets/{ActivityPanel-CBbfhN-m.js → ActivityPanel-DxQ3_dyT.js} +1 -1
  73. package/packages/piagent-webui/dist/client/assets/App-DcaqK-_s.js +5 -0
  74. package/packages/piagent-webui/dist/client/assets/GatewayApp-5DVdNIyr.js +97 -0
  75. package/packages/piagent-webui/dist/client/assets/{InspectionApp-po4KV8yJ.js → InspectionApp-CBPHxuqj.js} +1 -1
  76. package/packages/piagent-webui/dist/client/assets/{LineReview-DZ9ez8kO.js → LineReview-C_0ZpgCH.js} +1 -1
  77. package/packages/piagent-webui/dist/client/assets/MarkdownMessage-DGt5B-6D.js +29 -0
  78. package/packages/piagent-webui/dist/client/assets/{SessionAgentWorkspace-Cl_esd_w.js → SessionAgentWorkspace-DmD9Qt4f.js} +1 -1
  79. package/packages/piagent-webui/dist/client/assets/SessionInspectorDrawer-CK5ujmH3.js +2 -0
  80. package/packages/piagent-webui/dist/client/assets/SettingsNavigation-BnorH-l_.js +3 -0
  81. package/packages/piagent-webui/dist/client/assets/SettingsPage-Dda8GW2a.js +1 -0
  82. package/packages/piagent-webui/dist/client/assets/{TerminalPanel-3C3tq-a-.js → TerminalPanel-X2389XHl.js} +2 -2
  83. package/packages/piagent-webui/dist/client/assets/{TerminalView-CR4TO5f1.js → TerminalView-yaIg6RCs.js} +3 -3
  84. package/packages/piagent-webui/dist/client/assets/{WorkspaceCodeEditor-v1k4-GB9.js → WorkspaceCodeEditor-Dt3dS_QG.js} +1 -1
  85. package/packages/piagent-webui/dist/client/assets/WorkspaceExplorer-CBHwY4BN.js +5 -0
  86. package/packages/piagent-webui/dist/client/assets/{WorkspaceQuickOpen-vQ5DqfJl.js → WorkspaceQuickOpen-CJmMBmK8.js} +1 -1
  87. package/packages/piagent-webui/dist/client/assets/index-BMQo9OEq.js +37 -0
  88. package/packages/piagent-webui/dist/client/assets/{tab-close-DHDqCxTL.js → tab-close-ITV4Cf4X.js} +1 -1
  89. package/packages/piagent-webui/dist/client/assets/{transcript-view-model-BCyNr6KF.js → transcript-view-model-Bq0nkxyu.js} +1 -1
  90. package/packages/piagent-webui/dist/client/assets/{ui-preferences-Dy4qeODT.js → ui-preferences-0waeSO-S.js} +1 -1
  91. package/packages/piagent-webui/dist/client/assets/{vendor-CA5pzJiI.js → vendor-CSDKB7mU.js} +1 -1
  92. package/packages/piagent-webui/dist/client/assets/workspace-api-D8sJkiZB.js +1 -0
  93. package/packages/piagent-webui/dist/client/assets/workspace-navigation-DkVobhwg.js +1 -0
  94. package/packages/piagent-webui/dist/client/index.html +3 -3
  95. package/packages/piagent-webui/gateway/native-project-picker.ts +40 -14
  96. package/packages/piagent-webui/server/workspace-read-routes.ts +3 -3
  97. package/packages/piagent-webui/server/workspace-reader.ts +2 -2
  98. package/schemas/piagent-webui/catalog-v1.json +9 -0
  99. package/schemas/piagent-webui/workspace-media-v1.schema.json +63 -0
  100. package/packages/piagent-webui/dist/client/assets/App-CoOO2CWp.js +0 -5
  101. package/packages/piagent-webui/dist/client/assets/GatewayApp-Bwy6FBbW.js +0 -97
  102. package/packages/piagent-webui/dist/client/assets/MarkdownMessage-D7bbIWJe.js +0 -29
  103. package/packages/piagent-webui/dist/client/assets/SessionInspectorDrawer-BQziFUF-.js +0 -2
  104. package/packages/piagent-webui/dist/client/assets/SettingsNavigation-DzboWgoR.js +0 -3
  105. package/packages/piagent-webui/dist/client/assets/SettingsPage-DX2QIvRC.js +0 -1
  106. package/packages/piagent-webui/dist/client/assets/WorkspaceExplorer-2QXtYcOx.js +0 -5
  107. package/packages/piagent-webui/dist/client/assets/index-DXXj1NQr.js +0 -37
  108. package/packages/piagent-webui/dist/client/assets/workspace-api-O7auv_td.js +0 -1
  109. package/packages/piagent-webui/dist/client/assets/workspace-navigation-C8GtShbg.js +0 -1
@@ -37,7 +37,7 @@
37
37
  <span class="brand-mark"><img src="/assets/piagent-logo.svg" alt="" width="28" height="28" /></span>
38
38
  <span class="brand-name"><b>Piagent</b> <span>Platform</span></span>
39
39
  </a>
40
- <a class="version-badge" href="/whats-new" data-docs-version="v1.43.5" title="v1.43.5 docs · VI"><span class="dot"></span>v1.43.5</a>
40
+ <a class="version-badge" href="/whats-new" data-docs-version="v1.43.9" title="v1.43.9 docs · VI"><span class="dot"></span>v1.43.9</a>
41
41
  <nav class="top-nav" aria-label="Tài liệu">
42
42
  <a href="/quickstart" aria-current="page">Tài liệu</a>
43
43
  <a href="/whats-new">Changelog</a>
@@ -1,4 +1,153 @@
1
1
  [
2
+ {
3
+ "version": "1.43.9",
4
+ "date": "2026-10-27",
5
+ "status": "stable",
6
+ "title": {
7
+ "en": "Every installed skill, and files the agent hands back",
8
+ "vi": "Đủ skill đã cài, và mở file agent gửi lại"
9
+ },
10
+ "summary": {
11
+ "en": "Skills from Claude and Codex plugins, such as superpowers, reach the agent; a file the agent links opens in the web view; the folder picker works on Windows.",
12
+ "vi": "Skill trong plugin Claude và Codex, như superpowers, đến được agent; file agent gửi lại mở ngay trong web; hộp chọn thư mục chạy trên Windows."
13
+ },
14
+ "items": [
15
+ {
16
+ "kind": "improved",
17
+ "en": "Skills and commands of the member's Claude and Codex plugins are listed and readable, the newest version of each; /plugin:skill works too.",
18
+ "vi": "Skill và lệnh trong plugin Claude và Codex của dev được liệt kê và đọc được, lấy bản mới nhất; gõ /plugin:skill cũng được."
19
+ },
20
+ {
21
+ "kind": "new",
22
+ "en": "A file the agent links in its answer opens in the explorer: code at its line, images as a picture, PDF and office files as their text.",
23
+ "vi": "File agent gắn link trong câu trả lời mở ngay trong explorer: code đúng dòng, ảnh hiện hình, PDF và file office hiện nội dung chữ."
24
+ },
25
+ {
26
+ "kind": "fixed",
27
+ "en": "Choosing a project folder opens the system folder picker on Windows again, also from a dashboard started in the background.",
28
+ "vi": "Chọn thư mục project mở lại được hộp chọn thư mục của Windows, kể cả khi dashboard chạy nền."
29
+ },
30
+ {
31
+ "kind": "fixed",
32
+ "en": "A turn that changed only documentation or Spec Kit files is not sent back to run the repository checks, and a declined approval for a check is not asked again.",
33
+ "vi": "Lượt chỉ sửa tài liệu hay file Spec Kit không bị harness bắt chạy check của repo, và approval cho check đã bị từ chối thì không bị hỏi lại."
34
+ },
35
+ {
36
+ "kind": "fixed",
37
+ "en": "An answer the agent repeats after the harness sends it back is shown once, not once per round.",
38
+ "vi": "Câu trả lời agent lặp lại sau mỗi lần harness trả về chỉ hiện một lần, không lặp theo từng vòng."
39
+ },
40
+ {
41
+ "kind": "fixed",
42
+ "en": "On Linux and Windows (WSL2), checks find a JDK outside PATH: SDKMAN, /usr/lib/jvm or ~/.jdks.",
43
+ "vi": "Trên Linux và Windows (WSL2), check tìm được JDK ngoài PATH: SDKMAN, /usr/lib/jvm hoặc ~/.jdks."
44
+ }
45
+ ],
46
+ "requires": null
47
+ },
48
+ {
49
+ "version": "1.43.8",
50
+ "date": "2026-10-27",
51
+ "status": "unpublished",
52
+ "title": {
53
+ "en": "Every installed skill, and files the agent hands back",
54
+ "vi": "Đủ skill đã cài, và mở file agent gửi lại"
55
+ },
56
+ "summary": {
57
+ "en": "Tagged but not published: a new Linux-only test read the wrong field on CI. Superseded by 1.43.9.",
58
+ "vi": "Đã tag nhưng chưa publish: test mới chỉ chạy trên Linux đọc sai trường trên CI. Thay bằng 1.43.9."
59
+ },
60
+ "items": [
61
+ {
62
+ "kind": "improved",
63
+ "en": "Skills and commands of the member's Claude and Codex plugins are listed and readable, the newest version of each; /plugin:skill works too.",
64
+ "vi": "Skill và lệnh trong plugin Claude và Codex của dev được liệt kê và đọc được, lấy bản mới nhất; gõ /plugin:skill cũng được."
65
+ },
66
+ {
67
+ "kind": "new",
68
+ "en": "A file the agent links in its answer opens in the explorer: code at its line, images as a picture, PDF and office files as their text.",
69
+ "vi": "File agent gắn link trong câu trả lời mở ngay trong explorer: code đúng dòng, ảnh hiện hình, PDF và file office hiện nội dung chữ."
70
+ },
71
+ {
72
+ "kind": "fixed",
73
+ "en": "Choosing a project folder opens the system folder picker on Windows again, also from a dashboard started in the background.",
74
+ "vi": "Chọn thư mục project mở lại được hộp chọn thư mục của Windows, kể cả khi dashboard chạy nền."
75
+ },
76
+ {
77
+ "kind": "fixed",
78
+ "en": "A turn that changed only documentation or Spec Kit files is not sent back to run the repository checks, and a declined approval for a check is not asked again.",
79
+ "vi": "Lượt chỉ sửa tài liệu hay file Spec Kit không bị harness bắt chạy check của repo, và approval cho check đã bị từ chối thì không bị hỏi lại."
80
+ },
81
+ {
82
+ "kind": "fixed",
83
+ "en": "An answer the agent repeats after the harness sends it back is shown once, not once per round.",
84
+ "vi": "Câu trả lời agent lặp lại sau mỗi lần harness trả về chỉ hiện một lần, không lặp theo từng vòng."
85
+ },
86
+ {
87
+ "kind": "fixed",
88
+ "en": "On Linux and Windows (WSL2), checks find a JDK outside PATH: SDKMAN, /usr/lib/jvm or ~/.jdks.",
89
+ "vi": "Trên Linux và Windows (WSL2), check tìm được JDK ngoài PATH: SDKMAN, /usr/lib/jvm hoặc ~/.jdks."
90
+ }
91
+ ],
92
+ "requires": null
93
+ },
94
+ {
95
+ "version": "1.43.7",
96
+ "date": "2026-10-27",
97
+ "status": "unpublished",
98
+ "title": {
99
+ "en": "Every installed skill, and files the agent hands back",
100
+ "vi": "Đủ skill đã cài, và mở file agent gửi lại"
101
+ },
102
+ "summary": {
103
+ "en": "Tagged but not published: the public wording check stopped the release on a product name in the notes. Superseded by 1.43.9.",
104
+ "vi": "Đã tag nhưng chưa publish: kiểm tra wording công khai chặn release vì tên sản phẩm trong ghi chú. Thay bằng 1.43.9."
105
+ },
106
+ "items": [
107
+ {
108
+ "kind": "improved",
109
+ "en": "Skills and commands of the member's Claude and Codex plugins are listed and readable, the newest version of each; /plugin:skill works too.",
110
+ "vi": "Skill và lệnh trong plugin Claude và Codex của dev được liệt kê và đọc được, lấy bản mới nhất; gõ /plugin:skill cũng được."
111
+ },
112
+ {
113
+ "kind": "new",
114
+ "en": "A file the agent links in its answer opens in the explorer: code at its line, images as a picture, PDF and office files as their text.",
115
+ "vi": "File agent gắn link trong câu trả lời mở ngay trong explorer: code đúng dòng, ảnh hiện hình, PDF và file office hiện nội dung chữ."
116
+ },
117
+ {
118
+ "kind": "fixed",
119
+ "en": "Choosing a project folder opens the system folder picker on Windows again, also from a dashboard started in the background.",
120
+ "vi": "Chọn thư mục project mở lại được hộp chọn thư mục của Windows, kể cả khi dashboard chạy nền."
121
+ }
122
+ ],
123
+ "requires": null
124
+ },
125
+ {
126
+ "version": "1.43.6",
127
+ "date": "2026-10-27",
128
+ "status": "stable",
129
+ "title": {
130
+ "en": "Watch the agent's edits while it runs",
131
+ "vi": "Xem thay đổi của agent ngay khi đang chạy"
132
+ },
133
+ "summary": {
134
+ "en": "Changes and Review follow a running turn, so a run going wrong can be caught and stopped early, and a turn still running never looks finished.",
135
+ "vi": "Thay đổi và Review cập nhật theo lượt đang chạy, thấy sai thì dừng sớm được, và lượt còn chạy không còn trông như đã xong."
136
+ },
137
+ "items": [
138
+ {
139
+ "kind": "improved",
140
+ "en": "The Workspace panel lists changed files and opens Review while the agent runs, refreshing every few seconds; Review follows the run too.",
141
+ "vi": "Panel Workspace liệt kê file thay đổi và mở được Review khi agent đang chạy, tự làm mới vài giây một lần; Review cũng cập nhật theo."
142
+ },
143
+ {
144
+ "kind": "fixed",
145
+ "en": "An answer the harness sends back to run checks is marked as interim, and the turn keeps showing that it runs, with Stop, until the checks finish.",
146
+ "vi": "Câu trả lời bị harness trả lại để chạy check được ghi là giữa chừng, và lượt vẫn hiện đang chạy kèm nút Dừng cho tới khi check xong."
147
+ }
148
+ ],
149
+ "requires": null
150
+ },
2
151
  {
3
152
  "version": "1.43.5",
4
153
  "date": "2026-10-27",
@@ -37,7 +37,7 @@
37
37
  <span class="brand-mark"><img src="/assets/piagent-logo.svg" alt="" width="28" height="28" /></span>
38
38
  <span class="brand-name"><b>Piagent</b> <span>Platform</span></span>
39
39
  </a>
40
- <a class="version-badge" href="/whats-new" data-docs-version="v1.43.5" title="v1.43.5 docs · VI"><span class="dot"></span>v1.43.5</a>
40
+ <a class="version-badge" href="/whats-new" data-docs-version="v1.43.9" title="v1.43.9 docs · VI"><span class="dot"></span>v1.43.9</a>
41
41
  <nav class="top-nav" aria-label="Tài liệu">
42
42
  <a href="/quickstart">Tài liệu</a>
43
43
  <a href="/whats-new">Changelog</a>
@@ -37,7 +37,7 @@
37
37
  <span class="brand-mark"><img src="/assets/piagent-logo.svg" alt="" width="28" height="28" /></span>
38
38
  <span class="brand-name"><b>Piagent</b> <span>Platform</span></span>
39
39
  </a>
40
- <a class="version-badge" href="/whats-new" data-docs-version="v1.43.5" title="v1.43.5 docs · VI"><span class="dot"></span>v1.43.5</a>
40
+ <a class="version-badge" href="/whats-new" data-docs-version="v1.43.9" title="v1.43.9 docs · VI"><span class="dot"></span>v1.43.9</a>
41
41
  <nav class="top-nav" aria-label="Tài liệu">
42
42
  <a href="/quickstart">Tài liệu</a>
43
43
  <a href="/whats-new">Changelog</a>
@@ -37,7 +37,7 @@
37
37
  <span class="brand-mark"><img src="/assets/piagent-logo.svg" alt="" width="28" height="28" /></span>
38
38
  <span class="brand-name"><b>Piagent</b> <span>Platform</span></span>
39
39
  </a>
40
- <a class="version-badge" href="/whats-new" data-docs-version="v1.43.5" title="v1.43.5 docs · VI"><span class="dot"></span>v1.43.5</a>
40
+ <a class="version-badge" href="/whats-new" data-docs-version="v1.43.9" title="v1.43.9 docs · VI"><span class="dot"></span>v1.43.9</a>
41
41
  <nav class="top-nav" aria-label="Tài liệu">
42
42
  <a href="/quickstart">Tài liệu</a>
43
43
  <a href="/whats-new">Changelog</a>
@@ -37,7 +37,7 @@
37
37
  <span class="brand-mark"><img src="/assets/piagent-logo.svg" alt="" width="28" height="28" /></span>
38
38
  <span class="brand-name"><b>Piagent</b> <span>Platform</span></span>
39
39
  </a>
40
- <a class="version-badge" href="/whats-new" data-docs-version="v1.43.5" title="v1.43.5 docs · VI"><span class="dot"></span>v1.43.5</a>
40
+ <a class="version-badge" href="/whats-new" data-docs-version="v1.43.9" title="v1.43.9 docs · VI"><span class="dot"></span>v1.43.9</a>
41
41
  <nav class="top-nav" aria-label="Tài liệu">
42
42
  <a href="/quickstart">Tài liệu</a>
43
43
  <a href="/whats-new">Changelog</a>
@@ -37,7 +37,7 @@
37
37
  <span class="brand-mark"><img src="/assets/piagent-logo.svg" alt="" width="28" height="28" /></span>
38
38
  <span class="brand-name"><b>Piagent</b> <span>Platform</span></span>
39
39
  </a>
40
- <a class="version-badge" href="/whats-new" data-docs-version="v1.43.5" title="v1.43.5 docs · VI"><span class="dot"></span>v1.43.5</a>
40
+ <a class="version-badge" href="/whats-new" data-docs-version="v1.43.9" title="v1.43.9 docs · VI"><span class="dot"></span>v1.43.9</a>
41
41
  <nav class="top-nav" aria-label="Tài liệu">
42
42
  <a href="/quickstart">Tài liệu</a>
43
43
  <a href="/whats-new">Changelog</a>
@@ -145,9 +145,9 @@
145
145
  <h2 id="pin-cho-team">Pin một bản cho cả team</h2>
146
146
  <p>Khi rollout cho team, cài đúng bản Pi host và đúng bản platform, rồi chạy installer ở chế độ stable. Bước <code>--dry-run</code> in ra những gì sẽ đổi.</p>
147
147
  <div class="command-card">
148
- <header><span>Cài pin theo bản</span><button class="clip-btn" data-clip="npm install -g --ignore-scripts @earendil-works/pi-coding-agent@1.3.0&#10;npm install -g --ignore-scripts @piagent/platform@1.43.5&#10;piagent-install --stable --dry-run&#10;piagent-install --stable">Lấy lệnh</button></header>
148
+ <header><span>Cài pin theo bản</span><button class="clip-btn" data-clip="npm install -g --ignore-scripts @earendil-works/pi-coding-agent@1.3.0&#10;npm install -g --ignore-scripts @piagent/platform@1.43.9&#10;piagent-install --stable --dry-run&#10;piagent-install --stable">Lấy lệnh</button></header>
149
149
  <pre><code>npm install -g --ignore-scripts @earendil-works/pi-coding-agent@1.3.0
150
- npm install -g --ignore-scripts @piagent/platform@1.43.5
150
+ npm install -g --ignore-scripts @piagent/platform@1.43.9
151
151
  piagent-install --stable --dry-run
152
152
  piagent-install --stable</code></pre>
153
153
  </div>
@@ -37,7 +37,7 @@
37
37
  <span class="brand-mark"><img src="/assets/piagent-logo.svg" alt="" width="28" height="28" /></span>
38
38
  <span class="brand-name"><b>Piagent</b> <span>Platform</span></span>
39
39
  </a>
40
- <a class="version-badge" href="/whats-new" data-docs-version="v1.43.5" title="v1.43.5 docs · VI"><span class="dot"></span>v1.43.5</a>
40
+ <a class="version-badge" href="/whats-new" data-docs-version="v1.43.9" title="v1.43.9 docs · VI"><span class="dot"></span>v1.43.9</a>
41
41
  <nav class="top-nav" aria-label="Tài liệu">
42
42
  <a href="/quickstart">Tài liệu</a>
43
43
  <a href="/whats-new" aria-current="page">Changelog</a>
@@ -108,7 +108,60 @@
108
108
  <div class="release-filter" role="toolbar" aria-label="Lọc theo loại thay đổi"><button type="button" data-filter-kind="all" aria-pressed="true">Tất cả</button><button type="button" data-filter-kind="new" aria-pressed="false">Mới</button><button type="button" data-filter-kind="improved" aria-pressed="false">Cải thiện</button><button type="button" data-filter-kind="fixed" aria-pressed="false">Sửa lỗi</button><button type="button" data-filter-kind="security" aria-pressed="false">Bảo mật</button></div>
109
109
  <section class="section releases" data-releases>
110
110
  <h2 id="latest" class="sr-only">Mới nhất</h2>
111
- <article class="release latest" id="v1-43-5" data-release>
111
+ <article class="release latest" id="v1-43-9" data-release>
112
+ <div class="release-meta"><a class="release-version" href="#v1-43-9">v1.43.9</a><time class="release-date" datetime="2026-10-27">27/10/2026</time></div>
113
+ <div class="release-body">
114
+ <h3 data-toc-skip id="v1-43-9-title">Đủ skill đã cài, và mở file agent gửi lại</h3>
115
+ <p>Skill trong plugin Claude và Codex, như superpowers, đến được agent; file agent gửi lại mở ngay trong web; hộp chọn thư mục chạy trên Windows.</p>
116
+ <ul class="release-items">
117
+ <li data-kind="new"><span class="kind kind-new">Mới</span><span>File agent gắn link trong câu trả lời mở ngay trong explorer: code đúng dòng, ảnh hiện hình, PDF và file office hiện nội dung chữ.</span></li>
118
+ <li data-kind="improved"><span class="kind kind-improved">Cải thiện</span><span>Skill và lệnh trong plugin Claude và Codex của dev được liệt kê và đọc được, lấy bản mới nhất; gõ /plugin:skill cũng được.</span></li>
119
+ <li data-kind="fixed"><span class="kind kind-fixed">Sửa lỗi</span><span>Chọn thư mục project mở lại được hộp chọn thư mục của Windows, kể cả khi dashboard chạy nền.</span></li>
120
+ <li data-kind="fixed"><span class="kind kind-fixed">Sửa lỗi</span><span>Lượt chỉ sửa tài liệu hay file Spec Kit không bị harness bắt chạy check của repo, và approval cho check đã bị từ chối thì không bị hỏi lại.</span></li>
121
+ <li data-kind="fixed"><span class="kind kind-fixed">Sửa lỗi</span><span>Câu trả lời agent lặp lại sau mỗi lần harness trả về chỉ hiện một lần, không lặp theo từng vòng.</span></li>
122
+ <li data-kind="fixed"><span class="kind kind-fixed">Sửa lỗi</span><span>Trên Linux và Windows (WSL2), check tìm được JDK ngoài PATH: SDKMAN, /usr/lib/jvm hoặc ~/.jdks.</span></li>
123
+ </ul>
124
+ </div>
125
+ </article>
126
+ <article class="release" id="v1-43-8" data-release>
127
+ <div class="release-meta"><a class="release-version" href="#v1-43-8">v1.43.8</a><time class="release-date" datetime="2026-10-27">27/10/2026</time></div>
128
+ <div class="release-body">
129
+ <h3 data-toc-skip id="v1-43-8-title">Đủ skill đã cài, và mở file agent gửi lại <span class="tag">không phát hành</span></h3>
130
+ <p>Đã tag nhưng chưa publish: test mới chỉ chạy trên Linux đọc sai trường trên CI. Thay bằng 1.43.9.</p>
131
+ <ul class="release-items">
132
+ <li data-kind="new"><span class="kind kind-new">Mới</span><span>File agent gắn link trong câu trả lời mở ngay trong explorer: code đúng dòng, ảnh hiện hình, PDF và file office hiện nội dung chữ.</span></li>
133
+ <li data-kind="improved"><span class="kind kind-improved">Cải thiện</span><span>Skill và lệnh trong plugin Claude và Codex của dev được liệt kê và đọc được, lấy bản mới nhất; gõ /plugin:skill cũng được.</span></li>
134
+ <li data-kind="fixed"><span class="kind kind-fixed">Sửa lỗi</span><span>Chọn thư mục project mở lại được hộp chọn thư mục của Windows, kể cả khi dashboard chạy nền.</span></li>
135
+ <li data-kind="fixed"><span class="kind kind-fixed">Sửa lỗi</span><span>Lượt chỉ sửa tài liệu hay file Spec Kit không bị harness bắt chạy check của repo, và approval cho check đã bị từ chối thì không bị hỏi lại.</span></li>
136
+ <li data-kind="fixed"><span class="kind kind-fixed">Sửa lỗi</span><span>Câu trả lời agent lặp lại sau mỗi lần harness trả về chỉ hiện một lần, không lặp theo từng vòng.</span></li>
137
+ <li data-kind="fixed"><span class="kind kind-fixed">Sửa lỗi</span><span>Trên Linux và Windows (WSL2), check tìm được JDK ngoài PATH: SDKMAN, /usr/lib/jvm hoặc ~/.jdks.</span></li>
138
+ </ul>
139
+ </div>
140
+ </article>
141
+ <article class="release" id="v1-43-7" data-release>
142
+ <div class="release-meta"><a class="release-version" href="#v1-43-7">v1.43.7</a><time class="release-date" datetime="2026-10-27">27/10/2026</time></div>
143
+ <div class="release-body">
144
+ <h3 data-toc-skip id="v1-43-7-title">Đủ skill đã cài, và mở file agent gửi lại <span class="tag">không phát hành</span></h3>
145
+ <p>Đã tag nhưng chưa publish: kiểm tra wording công khai chặn release vì tên sản phẩm trong ghi chú. Thay bằng 1.43.9.</p>
146
+ <ul class="release-items">
147
+ <li data-kind="new"><span class="kind kind-new">Mới</span><span>File agent gắn link trong câu trả lời mở ngay trong explorer: code đúng dòng, ảnh hiện hình, PDF và file office hiện nội dung chữ.</span></li>
148
+ <li data-kind="improved"><span class="kind kind-improved">Cải thiện</span><span>Skill và lệnh trong plugin Claude và Codex của dev được liệt kê và đọc được, lấy bản mới nhất; gõ /plugin:skill cũng được.</span></li>
149
+ <li data-kind="fixed"><span class="kind kind-fixed">Sửa lỗi</span><span>Chọn thư mục project mở lại được hộp chọn thư mục của Windows, kể cả khi dashboard chạy nền.</span></li>
150
+ </ul>
151
+ </div>
152
+ </article>
153
+ <article class="release" id="v1-43-6" data-release>
154
+ <div class="release-meta"><a class="release-version" href="#v1-43-6">v1.43.6</a><time class="release-date" datetime="2026-10-27">27/10/2026</time></div>
155
+ <div class="release-body">
156
+ <h3 data-toc-skip id="v1-43-6-title">Xem thay đổi của agent ngay khi đang chạy</h3>
157
+ <p>Thay đổi và Review cập nhật theo lượt đang chạy, thấy sai thì dừng sớm được, và lượt còn chạy không còn trông như đã xong.</p>
158
+ <ul class="release-items">
159
+ <li data-kind="improved"><span class="kind kind-improved">Cải thiện</span><span>Panel Workspace liệt kê file thay đổi và mở được Review khi agent đang chạy, tự làm mới vài giây một lần; Review cũng cập nhật theo.</span></li>
160
+ <li data-kind="fixed"><span class="kind kind-fixed">Sửa lỗi</span><span>Câu trả lời bị harness trả lại để chạy check được ghi là giữa chừng, và lượt vẫn hiện đang chạy kèm nút Dừng cho tới khi check xong.</span></li>
161
+ </ul>
162
+ </div>
163
+ </article>
164
+ <article class="release" id="v1-43-5" data-release>
112
165
  <div class="release-meta"><a class="release-version" href="#v1-43-5">v1.43.5</a><time class="release-date" datetime="2026-10-27">27/10/2026</time></div>
113
166
  <div class="release-body">
114
167
  <h3 data-toc-skip id="v1-43-5-title">Xem trước ảnh và đính kèm file văn phòng</h3>
@@ -377,64 +430,58 @@
377
430
  <p class="release-requires"><strong>Cần:</strong> Agent Studio 0.36.0</p>
378
431
  </div>
379
432
  </article>
380
- <article class="release" id="v1-34-3" data-release>
381
- <div class="release-meta"><a class="release-version" href="#v1-34-3">v1.34.3</a><time class="release-date" datetime="2026-10-20">20/10/2026</time></div>
382
- <div class="release-body">
383
- <h3 data-toc-skip id="v1-34-3-title">Agent Watch báo cho cuộc trò chuyện công ty</h3>
384
- <p>Trạng thái cuộc trò chuyện công ty từng được ghi vào chỗ Agent Watch không đọc nên không có thông báo; giờ được ghi đúng chỗ.</p>
385
- <ul class="release-items">
386
- <li data-kind="fixed"><span class="kind kind-fixed">Sửa lỗi</span><span>Agent Watch từng không báo gì cho cuộc trò chuyện công ty; giờ trạng thái được ghi vào <code>~/.pi/agent/status/company</code>, không kèm prompt hay câu trả lời.</span></li>
387
- </ul>
388
- </div>
389
- </article>
390
- <article class="release" id="v1-34-2" data-release>
391
- <div class="release-meta"><a class="release-version" href="#v1-34-2">v1.34.2</a><time class="release-date" datetime="2026-10-20">20/10/2026</time></div>
392
- <div class="release-body">
393
- <h3 data-toc-skip id="v1-34-2-title">Kết quả của helper đến được Studio</h3>
394
- <p>Ở bản 1.34.1, Studio từ chối báo cáo của helper vì gửi bằng token cũ nên không ghi nhận kết quả; giờ báo cáo dùng token hiện tại.</p>
395
- <ul class="release-items">
396
- <li data-kind="fixed"><span class="kind kind-fixed">Sửa lỗi</span><span>Báo cáo của helper từng bị từ chối sau khi token được gia hạn và không có kết quả nào được ghi nhận; giờ dùng token hiện tại của role.</span></li>
397
- </ul>
398
- </div>
399
- </article>
400
- <article class="release" id="v1-34-1" data-release>
401
- <div class="release-meta"><a class="release-version" href="#v1-34-1">v1.34.1</a><time class="release-date" datetime="2026-10-20">20/10/2026</time></div>
402
- <div class="release-body">
403
- <h3 data-toc-skip id="v1-34-1-title">Kết quả helper, comment theo dòng và thông báo Agent Watch</h3>
404
- <p>Helper báo kết quả công việc, comment theo dòng trên diff được gửi cho agent, và Agent Watch báo khi cuộc trò chuyện cần bạn.</p>
405
- <ul class="release-items">
406
- <li data-kind="new"><span class="kind kind-new">Mới</span><span>Mỗi helper báo cách nó kết thúc: thành công, lỗi, đã dừng hay chưa kiểm chứng được; Studio hiện trong Logs → Lượt agent.</span></li>
407
- <li data-kind="new"><span class="kind kind-new">Mới</span><span>Trong Source Changes, bấm số dòng để comment; comment trên nhiều file được đưa vào ô soạn tin thành một tin nhắn có <code>file:line</code>.</span></li>
408
- <li data-kind="new"><span class="kind kind-new">Mới</span><span>Kết quả của helper review hiện ngay dưới dòng nó nói tới, và kết quả không có dòng hiện dưới file.</span></li>
409
- <li data-kind="new"><span class="kind kind-new">Mới</span><span>Trạng thái cuộc trò chuyện được ghi để Agent Watch thông báo, chỉ có tên cuộc trò chuyện và tên project, không có prompt hay câu trả lời.</span></li>
410
- <li data-kind="new"><span class="kind kind-new">Mới</span><span>Tool <code>delegate</code> nhận thêm các trường tùy chọn: mục tiêu, thay đổi, ràng buộc, phạm vi được đụng và tiêu chí chấp nhận, đặt ở đầu brief của helper.</span></li>
411
- <li data-kind="improved"><span class="kind kind-improved">Cải thiện</span><span>Piagent hỏi Studio mỗi giờ những thao tác nó hỗ trợ và chỉ dùng thao tác mới khi có trong danh sách; Studio cũ vẫn chạy như trước.</span></li>
412
- </ul>
413
- <p class="release-requires"><strong>Cần:</strong> Agent Studio 0.34, Agent Watch 0.15.9 (Windows 0.1.15)</p>
414
- </div>
415
- </article>
416
- <article class="release" id="v1-33-0" data-release>
417
- <div class="release-meta"><a class="release-version" href="#v1-33-0">v1.33.0</a><time class="release-date" datetime="2026-10-20">20/10/2026</time></div>
418
- <div class="release-body">
419
- <h3 data-toc-skip id="v1-33-0-title">Session công ty và cá nhân chạy trên Pi 1.3.0</h3>
420
- <p><code>piagent-setup</code> và <code>piagent-update</code> chuyển Piagent từ Pi 0.87.1 lên Pi 1.3.0, từ chối lời gọi tool hỏng và tự thử lại lỗi gateway.</p>
421
- <ul class="release-items">
422
- <li data-kind="breaking"><span class="kind kind-breaking">Thay đổi lớn</span><span>Lệnh <code>pi</code> cá nhân cũng lên 1.3.0: tham chiếu <code>$schema</code> của theme đã đổi, và URL gốc ghi đè cho <code>kimi-coding</code> phải kết thúc bằng <code>/v1</code>.</span></li>
423
- <li data-kind="improved"><span class="kind kind-improved">Cải thiện</span><span>Lời gọi tool có tham số JSON hỏng bị từ chối và trả lại cho model thay vì chạy với phần đọc được trước chỗ lỗi.</span></li>
424
- <li data-kind="improved"><span class="kind kind-improved">Cải thiện</span><span>Lỗi gateway được tự thử lại, session mở lại giữ đúng các tool đang bật, và đổi model sẽ bỏ thinking của model trước.</span></li>
425
- <li data-kind="improved"><span class="kind kind-improved">Cải thiện</span><span>GPT-6.1 Sol trong session công ty vẫn giữ cửa sổ 272k đã duyệt, vì phần trên 272k bị tính giá gấp đôi.</span></li>
426
- <li data-kind="fixed"><span class="kind kind-fixed">Sửa lỗi</span><span>Lượt chạy bắt đầu từ một tin nhắn tùy chỉnh nay nhận system prompt như thường và không tạo thêm lượt, task hay context pack.</span></li>
427
- <li data-kind="security"><span class="kind kind-security">Bảo mật</span><span>Ba cảnh báo bảo mật dependency từng được chấp nhận đã được xử lý: Pi 1.3.0 cài bản đã sửa.</span></li>
428
- </ul>
429
- <p class="release-requires"><strong>Cần:</strong> Pi 1.3.0</p>
430
- </div>
431
- </article>
432
433
  </section>
433
434
  <section class="section archive">
434
435
  <h2 id="archive">Các bản trước</h2>
435
436
  <p class="section-lead">Bản cũ hơn, gom theo tháng. Mở một tháng để xem từng thay đổi.</p>
436
437
  <details class="release-archive">
437
- <summary><span>Tháng 10/2026</span><span class="archive-count">46</span></summary>
438
+ <summary><span>Tháng 10/2026</span><span class="archive-count">50</span></summary>
439
+ <div class="archive-row" id="v1-34-3">
440
+ <div class="archive-head"><a class="release-version" href="#v1-34-3">v1.34.3</a> <span class="release-date">20/10/2026</span></div>
441
+ <div class="archive-body">
442
+ <p><strong>Agent Watch báo cho cuộc trò chuyện công ty</strong> — Trạng thái cuộc trò chuyện công ty từng được ghi vào chỗ Agent Watch không đọc nên không có thông báo; giờ được ghi đúng chỗ.</p>
443
+ <ul class="release-items">
444
+ <li data-kind="fixed"><span class="kind kind-fixed">Sửa lỗi</span><span>Agent Watch từng không báo gì cho cuộc trò chuyện công ty; giờ trạng thái được ghi vào <code>~/.pi/agent/status/company</code>, không kèm prompt hay câu trả lời.</span></li>
445
+ </ul>
446
+ </div>
447
+ </div>
448
+ <div class="archive-row" id="v1-34-2">
449
+ <div class="archive-head"><a class="release-version" href="#v1-34-2">v1.34.2</a> <span class="release-date">20/10/2026</span></div>
450
+ <div class="archive-body">
451
+ <p><strong>Kết quả của helper đến được Studio</strong> — Ở bản 1.34.1, Studio từ chối báo cáo của helper vì gửi bằng token cũ nên không ghi nhận kết quả; giờ báo cáo dùng token hiện tại.</p>
452
+ <ul class="release-items">
453
+ <li data-kind="fixed"><span class="kind kind-fixed">Sửa lỗi</span><span>Báo cáo của helper từng bị từ chối sau khi token được gia hạn và không có kết quả nào được ghi nhận; giờ dùng token hiện tại của role.</span></li>
454
+ </ul>
455
+ </div>
456
+ </div>
457
+ <div class="archive-row" id="v1-34-1">
458
+ <div class="archive-head"><a class="release-version" href="#v1-34-1">v1.34.1</a> <span class="release-date">20/10/2026</span></div>
459
+ <div class="archive-body">
460
+ <p><strong>Kết quả helper, comment theo dòng và thông báo Agent Watch</strong> — Helper báo kết quả công việc, comment theo dòng trên diff được gửi cho agent, và Agent Watch báo khi cuộc trò chuyện cần bạn.</p>
461
+ <ul class="release-items">
462
+ <li data-kind="new"><span class="kind kind-new">Mới</span><span>Mỗi helper báo cách nó kết thúc: thành công, lỗi, đã dừng hay chưa kiểm chứng được; Studio hiện trong Logs → Lượt agent.</span></li>
463
+ <li data-kind="new"><span class="kind kind-new">Mới</span><span>Trong Source Changes, bấm số dòng để comment; comment trên nhiều file được đưa vào ô soạn tin thành một tin nhắn có <code>file:line</code>.</span></li>
464
+ <li data-kind="new"><span class="kind kind-new">Mới</span><span>Kết quả của helper review hiện ngay dưới dòng nó nói tới, và kết quả không có dòng hiện dưới file.</span></li>
465
+ <li data-kind="new"><span class="kind kind-new">Mới</span><span>Trạng thái cuộc trò chuyện được ghi để Agent Watch thông báo, chỉ có tên cuộc trò chuyện và tên project, không có prompt hay câu trả lời.</span></li>
466
+ <li data-kind="new"><span class="kind kind-new">Mới</span><span>Tool <code>delegate</code> nhận thêm các trường tùy chọn: mục tiêu, thay đổi, ràng buộc, phạm vi được đụng và tiêu chí chấp nhận, đặt ở đầu brief của helper.</span></li>
467
+ <li data-kind="improved"><span class="kind kind-improved">Cải thiện</span><span>Piagent hỏi Studio mỗi giờ những thao tác nó hỗ trợ và chỉ dùng thao tác mới khi có trong danh sách; Studio cũ vẫn chạy như trước.</span></li>
468
+ </ul>
469
+ </div>
470
+ </div>
471
+ <div class="archive-row" id="v1-33-0">
472
+ <div class="archive-head"><a class="release-version" href="#v1-33-0">v1.33.0</a> <span class="release-date">20/10/2026</span></div>
473
+ <div class="archive-body">
474
+ <p><strong>Session công ty và cá nhân chạy trên Pi 1.3.0</strong> — <code>piagent-setup</code> và <code>piagent-update</code> chuyển Piagent từ Pi 0.87.1 lên Pi 1.3.0, từ chối lời gọi tool hỏng và tự thử lại lỗi gateway.</p>
475
+ <ul class="release-items">
476
+ <li data-kind="breaking"><span class="kind kind-breaking">Thay đổi lớn</span><span>Lệnh <code>pi</code> cá nhân cũng lên 1.3.0: tham chiếu <code>$schema</code> của theme đã đổi, và URL gốc ghi đè cho <code>kimi-coding</code> phải kết thúc bằng <code>/v1</code>.</span></li>
477
+ <li data-kind="improved"><span class="kind kind-improved">Cải thiện</span><span>Lời gọi tool có tham số JSON hỏng bị từ chối và trả lại cho model thay vì chạy với phần đọc được trước chỗ lỗi.</span></li>
478
+ <li data-kind="improved"><span class="kind kind-improved">Cải thiện</span><span>Lỗi gateway được tự thử lại, session mở lại giữ đúng các tool đang bật, và đổi model sẽ bỏ thinking của model trước.</span></li>
479
+ <li data-kind="improved"><span class="kind kind-improved">Cải thiện</span><span>GPT-6.1 Sol trong session công ty vẫn giữ cửa sổ 272k đã duyệt, vì phần trên 272k bị tính giá gấp đôi.</span></li>
480
+ <li data-kind="fixed"><span class="kind kind-fixed">Sửa lỗi</span><span>Lượt chạy bắt đầu từ một tin nhắn tùy chỉnh nay nhận system prompt như thường và không tạo thêm lượt, task hay context pack.</span></li>
481
+ <li data-kind="security"><span class="kind kind-security">Bảo mật</span><span>Ba cảnh báo bảo mật dependency từng được chấp nhận đã được xử lý: Pi 1.3.0 cài bản đã sửa.</span></li>
482
+ </ul>
483
+ </div>
484
+ </div>
438
485
  <div class="archive-row" id="v1-32-1">
439
486
  <div class="archive-head"><a class="release-version" href="#v1-32-1">v1.32.1</a> <span class="release-date">19/10/2026</span></div>
440
487
  <div class="archive-body">
@@ -37,7 +37,7 @@
37
37
  <span class="brand-mark"><img src="/assets/piagent-logo.svg" alt="" width="28" height="28" /></span>
38
38
  <span class="brand-name"><b>Piagent</b> <span>Platform</span></span>
39
39
  </a>
40
- <a class="version-badge" href="/whats-new" data-docs-version="v1.43.5" title="v1.43.5 docs · VI"><span class="dot"></span>v1.43.5</a>
40
+ <a class="version-badge" href="/whats-new" data-docs-version="v1.43.9" title="v1.43.9 docs · VI"><span class="dot"></span>v1.43.9</a>
41
41
  <nav class="top-nav" aria-label="Tài liệu">
42
42
  <a href="/quickstart">Tài liệu</a>
43
43
  <a href="/whats-new">Changelog</a>
@@ -37,7 +37,7 @@
37
37
  <span class="brand-mark"><img src="/assets/piagent-logo.svg" alt="" width="28" height="28" /></span>
38
38
  <span class="brand-name"><b>Piagent</b> <span>Platform</span></span>
39
39
  </a>
40
- <a class="version-badge" href="/whats-new" data-docs-version="v1.43.5" title="v1.43.5 docs · VI"><span class="dot"></span>v1.43.5</a>
40
+ <a class="version-badge" href="/whats-new" data-docs-version="v1.43.9" title="v1.43.9 docs · VI"><span class="dot"></span>v1.43.9</a>
41
41
  <nav class="top-nav" aria-label="Tài liệu">
42
42
  <a href="/quickstart">Tài liệu</a>
43
43
  <a href="/whats-new">Changelog</a>
@@ -0,0 +1,18 @@
1
+ {
2
+ "schemaVersion": 1,
3
+ "version": "piagent-webui-workspace-media-v1",
4
+ "generatedAt": "2026-10-22T00:00:00.000Z",
5
+ "identity": {
6
+ "projectRef": "project_01",
7
+ "runtimeInstanceId": "runtime_01",
8
+ "sessionRef": "session_01",
9
+ "taskId": null,
10
+ "taskRunId": null,
11
+ "agentOperationId": null,
12
+ "toolCallId": null
13
+ },
14
+ "path": "out/chart.png",
15
+ "mime": "text/html",
16
+ "data": "PHNjcmlwdD4=",
17
+ "reasonCode": null
18
+ }
@@ -0,0 +1,18 @@
1
+ {
2
+ "schemaVersion": 1,
3
+ "version": "piagent-webui-workspace-media-v1",
4
+ "generatedAt": "2026-10-22T00:00:00.000Z",
5
+ "identity": {
6
+ "projectRef": "project_01",
7
+ "runtimeInstanceId": "runtime_01",
8
+ "sessionRef": "session_01",
9
+ "taskId": null,
10
+ "taskRunId": null,
11
+ "agentOperationId": null,
12
+ "toolCallId": null
13
+ },
14
+ "path": "out/chart.png",
15
+ "mime": "image/png",
16
+ "data": "iVBORw0KGgo=",
17
+ "reasonCode": null
18
+ }
@@ -256,8 +256,8 @@
256
256
  },
257
257
  {
258
258
  "path": "tests",
259
- "fileCount": 626,
260
- "sha256": "460e6eb886420c1245a269f04a744587a55a89e7cf1ebc0ee51ea0664e701878"
259
+ "fileCount": 627,
260
+ "sha256": "b5348255a9be4cc54e203df95af8677a1defd3407017fc45c8a4a0cbcf5d6469"
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.43.5",
3
+ "version": "1.43.9",
4
4
  "license": "MIT",
5
5
  "publishConfig": {
6
6
  "access": "public",
@@ -137,6 +137,21 @@ export function inspectWorkspaceFile(root: string, relative: string, options: Wo
137
137
  return { ...base, content, digest, revision: `sha256:${digest}` };
138
138
  }
139
139
 
140
+ // An image the agent made or names, shown as a picture in the explorer (the
141
+ // page takes data: images only). Protected files are never read.
142
+ const IMAGE_MIMES: Record<string, string> = { png: "image/png", jpg: "image/jpeg", jpeg: "image/jpeg", gif: "image/gif",
143
+ webp: "image/webp", bmp: "image/bmp", ico: "image/x-icon", avif: "image/avif" };
144
+ const MAX_MEDIA_BYTES = 8 << 20;
145
+ export function inspectWorkspaceMedia(root: string, relative: string, options: WorkspacePolicy) {
146
+ validPath(relative);
147
+ const mime = IMAGE_MIMES[relative.split(".").at(-1)?.toLowerCase() ?? ""] ?? null;
148
+ const base = { path: relative, mime, data: null as string | null, reasonCode: null as string | null };
149
+ if (workspacePathFlags(relative, options).protected) return { ...base, reasonCode: "protected" };
150
+ if (!mime) return { ...base, reasonCode: "unsupported" };
151
+ try { return { ...base, data: readWorkspaceFile(root, relative, MAX_MEDIA_BYTES).toString("base64") }; }
152
+ catch (error) { if (error instanceof WorkspaceReadError && error.code === "oversized") return { ...base, reasonCode: "oversized" }; throw error; }
153
+ }
154
+
140
155
  export async function inspectWorkspacePaths(root: string, query: string, options: WorkspacePolicy) {
141
156
  if (query.length > 512 || /[\x00-\x1f\x7f]/.test(query)) throw new Error("workspace-query-invalid");
142
157
  const result = await suggestPaths({ root, query, projectOnly: true,
@@ -26,7 +26,7 @@ async function load(api, sdk, cwd, home) {
26
26
  }
27
27
 
28
28
  // A member's /skill:name, /command or /skill-name (as other agents call a
29
- // skill), expanded as Pi does: a command's prompt with its arguments, or the
29
+ // skill; a plugin's as /plugin:skill-name too), expanded as Pi does: a command's prompt with its arguments, or the
30
30
  // skill's instructions followed by what the member asked. Anything else, a
31
31
  // path such as /tmp/x included, is left as typed.
32
32
  export function expandCommand(text, skills, prompts, stripFrontmatter, expandPromptTemplate) {
@@ -35,7 +35,7 @@ export function expandCommand(text, skills, prompts, stripFrontmatter, expandPro
35
35
  const args = space < 0 ? '' : text.slice(space + 1).trim();
36
36
  const explicit = head.startsWith('skill:'), name = explicit ? head.slice(6) : head;
37
37
  if (!explicit && prompts.some((prompt) => prompt.name === name)) return expandPromptTemplate(text, prompts);
38
- const skill = skills.find((item) => item.name === name);
38
+ const skill = skills.find((item) => item.name === name) ?? (name.includes(':') ? skills.find((item) => item.name === name.slice(name.lastIndexOf(':') + 1)) : undefined);
39
39
  if (!skill) return text;
40
40
  let body;
41
41
  try { body = stripFrontmatter(fs.readFileSync(skill.filePath, 'utf8')).trim(); } catch { return text; }
@@ -4,7 +4,7 @@
4
4
  // agent's running command: a few run beside it, a few more wait for them, and
5
5
  // beyond that they are refused (the panels retry).
6
6
  const LIMIT = 3, WAITING = 16;
7
- const memberRead = (name, args) => name === 'workspace' && (['tree', 'file', 'paths', 'search', 'write-state'].includes(args?.kind)
7
+ const memberRead = (name, args) => name === 'workspace' && (['tree', 'file', 'media', 'paths', 'search', 'write-state'].includes(args?.kind)
8
8
  || args?.kind === 'source' && ['sources', 'diff', 'preview'].includes(args.request?.kind));
9
9
  export class BoundaryQueue {
10
10
  #tail = Promise.resolve();
@@ -3,7 +3,7 @@
3
3
  "files": [
4
4
  {
5
5
  "file": "worker.mjs",
6
- "sha256": "ae13fccbffd00e4e87642c7577cfb9af6349f79c050df02d0630d85099232d0f"
6
+ "sha256": "71d88643e57135d306045901e0c81ad48d58e6c18c3cb028859cb330a0b1da83"
7
7
  },
8
8
  {
9
9
  "file": "workspace-search-index.mjs",