@piagent/platform 1.15.1 → 1.15.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.
- package/CHANGELOG.md +13 -0
- package/README.md +1 -1
- package/README.vi.md +1 -1
- package/docs/command-reference-vietnamese.md +2 -2
- package/docs/distribution-standard.md +6 -6
- package/docs/languages.json +2 -2
- package/docs/operator-manual-vietnamese.md +7 -7
- package/docs/publishing-for-teams.md +1 -0
- package/docs/release-install-policy.md +2 -2
- package/docs/team-onboarding.md +2 -2
- package/docs-site/architecture.html +1 -1
- package/docs-site/benchmark.html +1 -1
- package/docs-site/commands.html +1 -1
- package/docs-site/content/en/index.html +4 -4
- package/docs-site/content/en/whats-new.html +11 -0
- package/docs-site/content/index.html +4 -4
- package/docs-site/content/whats-new.html +11 -0
- package/docs-site/context-engine.html +1 -1
- package/docs-site/ecosystem.html +1 -1
- package/docs-site/en/architecture.html +1 -1
- package/docs-site/en/benchmark.html +1 -1
- package/docs-site/en/commands.html +1 -1
- package/docs-site/en/context-engine.html +1 -1
- package/docs-site/en/ecosystem.html +1 -1
- package/docs-site/en/index.html +5 -5
- package/docs-site/en/mcp-approval.html +1 -1
- package/docs-site/en/mcp-auth.html +1 -1
- package/docs-site/en/mcp-servers.html +1 -1
- package/docs-site/en/mcp.html +1 -1
- package/docs-site/en/permissions.html +1 -1
- package/docs-site/en/profiles.html +1 -1
- package/docs-site/en/quickstart.html +1 -1
- package/docs-site/en/runtime.html +1 -1
- package/docs-site/en/scope.html +1 -1
- package/docs-site/en/security.html +1 -1
- package/docs-site/en/team.html +1 -1
- package/docs-site/en/whats-new.html +12 -1
- package/docs-site/en/windows.html +1 -1
- package/docs-site/en/workflows.html +1 -1
- package/docs-site/index.html +5 -5
- package/docs-site/mcp-approval.html +1 -1
- package/docs-site/mcp-auth.html +1 -1
- package/docs-site/mcp-servers.html +1 -1
- package/docs-site/mcp.html +1 -1
- package/docs-site/permissions.html +1 -1
- package/docs-site/profiles.html +1 -1
- package/docs-site/quickstart.html +1 -1
- package/docs-site/runtime.html +1 -1
- package/docs-site/scope.html +1 -1
- package/docs-site/security.html +1 -1
- package/docs-site/team.html +1 -1
- package/docs-site/whats-new.html +12 -1
- package/docs-site/windows.html +1 -1
- package/docs-site/workflows.html +1 -1
- package/evals/private-holdout-v1/public-exposure.v2.json +1 -1
- package/package.json +1 -1
- package/packages/piagent-core/managed/call-purpose.mjs +11 -1
- package/packages/piagent-core/managed/compaction.mjs +47 -1
- package/packages/piagent-core/managed/request-stream.mjs +9 -1
- package/packages/piagent-core/managed/session.mjs +2 -1
- package/packages/piagent-core/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,19 @@
|
|
|
2
2
|
|
|
3
3
|
This file records release-facing changes for Pi Agent Platform. Copy the relevant version block into GitHub Releases when publishing a tag.
|
|
4
4
|
|
|
5
|
+
## v1.15.2 - 2026-10-07
|
|
6
|
+
|
|
7
|
+
Long company conversations shrink again, earlier.
|
|
8
|
+
|
|
9
|
+
### Fixes
|
|
10
|
+
|
|
11
|
+
- A long company conversation could not be summarised: Pi's summary request carried the company provider's placeholder key instead of the run's grant, Studio refused it (401 `authentication_required`, listed as "Chưa chọn tài khoản" / "CLI trực tiếp" in the request monitor) before every step, and the conversation kept growing past the model's window. Summaries now use the run's grant, and Studio logs them as `summary`.
|
|
12
|
+
- A summary that fails is asked again after 1, 2, 4 … minutes (at most 30) instead of before every step.
|
|
13
|
+
|
|
14
|
+
### Changes
|
|
15
|
+
|
|
16
|
+
- A company conversation is summarised at 90% of the model's window and never later than 300k tokens, as Codex does: 244.8k on a 272k GPT window (prices double above 272k), 300k on a 1M-token window instead of about 984k. The summary keeps about the last 20k tokens word for word, as before.
|
|
17
|
+
|
|
5
18
|
## v1.15.1 - 2026-10-07
|
|
6
19
|
|
|
7
20
|
Studio sees what each company model call is for; several conversations in one folder keep their changes apart.
|
package/README.md
CHANGED
|
@@ -346,7 +346,7 @@ This repository intentionally excludes:
|
|
|
346
346
|
|
|
347
347
|
## Maturity
|
|
348
348
|
|
|
349
|
-
The current package version is read from package metadata and release tags. Personal machines may follow the unpinned package source when accepting ongoing updates; production/team quickstarts and committed project settings should pin an explicit tag such as `v1.15.
|
|
349
|
+
The current package version is read from package metadata and release tags. Personal machines may follow the unpinned package source when accepting ongoing updates; production/team quickstarts and committed project settings should pin an explicit tag such as `v1.15.2` or a reviewed commit.
|
|
350
350
|
|
|
351
351
|
Ready for:
|
|
352
352
|
|
package/README.vi.md
CHANGED
|
@@ -179,7 +179,7 @@ Xem [bằng chứng benchmark](https://piagent.io.vn/benchmark) và
|
|
|
179
179
|
|
|
180
180
|
Gate này chạy architecture check, test, typecheck, capability validation, runtime smoke và docs consistency trước khi release.
|
|
181
181
|
|
|
182
|
-
Bản phát hành hiện tại là `v1.15.
|
|
182
|
+
Bản phát hành hiện tại là `v1.15.2`. Với team hoặc production, hãy pin tag này
|
|
183
183
|
hoặc một commit đã review thay vì dựa vào nguồn package không cố định.
|
|
184
184
|
|
|
185
185
|
## Security
|
|
@@ -473,8 +473,8 @@ Các lệnh này chạy ngoài Pi.
|
|
|
473
473
|
| Command | Dùng khi nào |
|
|
474
474
|
|---|---|
|
|
475
475
|
| `npm install -g --ignore-scripts @earendil-works/pi-coding-agent@0.87.1` | Cài Pi CLI tương thích với release hiện tại. |
|
|
476
|
-
| `npm install -g --ignore-scripts @piagent/platform@1.15.
|
|
477
|
-
| `pi install git:github.com/Vt-mmm/piagent@v1.15.
|
|
476
|
+
| `npm install -g --ignore-scripts @piagent/platform@1.15.2` | Cài terminal helper `piagent-*` từ release tag hiện tại. |
|
|
477
|
+
| `pi install git:github.com/Vt-mmm/piagent@v1.15.2` | Cài pinned release khi cần reproducible team setup. |
|
|
478
478
|
| `pi install git:github.com/Vt-mmm/piagent` | Cài latest package platform cho máy cá nhân/sandbox. |
|
|
479
479
|
| `piagent-update --check` | Báo version hiện tại vs version sẽ lên cho cả ba thành phần; không cài gì. |
|
|
480
480
|
| `piagent-update` | Full update global một lệnh cho cả máy: Pi host → npm-global helper → Pi package, đúng thứ tự release yêu cầu. |
|
|
@@ -15,9 +15,9 @@ Repo này phải chạy được cho nhiều project/domain khác nhau. Vì vậ
|
|
|
15
15
|
|
|
16
16
|
| Use case | Package source |
|
|
17
17
|
|---|---|
|
|
18
|
-
| Team pinned release | `git:github.com/Vt-mmm/piagent@v1.15.
|
|
18
|
+
| Team pinned release | `git:github.com/Vt-mmm/piagent@v1.15.2` |
|
|
19
19
|
| Personal/sandbox dev | `git:github.com/Vt-mmm/piagent` |
|
|
20
|
-
| Registry distribution | `npm:@piagent/platform@1.15.
|
|
20
|
+
| Registry distribution | `npm:@piagent/platform@1.15.2` |
|
|
21
21
|
| Enterprise npm (fork under another scope) | `npm:@your-scope/platform@x.y.z` |
|
|
22
22
|
| Local platform dev | `/path/to/piagent` |
|
|
23
23
|
|
|
@@ -54,7 +54,7 @@ Root `package.json` có `pi` manifest trỏ tới:
|
|
|
54
54
|
Do đó team có thể:
|
|
55
55
|
|
|
56
56
|
```bash
|
|
57
|
-
pi install git:github.com/Vt-mmm/piagent@v1.15.
|
|
57
|
+
pi install git:github.com/Vt-mmm/piagent@v1.15.2
|
|
58
58
|
```
|
|
59
59
|
|
|
60
60
|
Không cần biết internal folder `packages/piagent-core`. Source không pin chỉ dành cho personal/sandbox như bảng channel ở trên.
|
|
@@ -66,12 +66,12 @@ Team nên install global package một lần:
|
|
|
66
66
|
```bash
|
|
67
67
|
node --version # >= 22.19.0
|
|
68
68
|
npm install -g --ignore-scripts @earendil-works/pi-coding-agent@0.87.1
|
|
69
|
-
npm install -g --ignore-scripts @piagent/platform@1.15.
|
|
69
|
+
npm install -g --ignore-scripts @piagent/platform@1.15.2
|
|
70
70
|
piagent-install --stable --dry-run
|
|
71
71
|
piagent-install --stable
|
|
72
72
|
```
|
|
73
73
|
|
|
74
|
-
`pi install git:github.com/Vt-mmm/piagent@v1.15.
|
|
74
|
+
`pi install git:github.com/Vt-mmm/piagent@v1.15.2` vẫn hợp lệ nếu chỉ cần cài Pi package. Lệnh đó không tự tạo các binary terminal `piagent-*`; muốn có helper global thì dùng `npm install -g --ignore-scripts @piagent/platform@1.15.2`.
|
|
75
75
|
|
|
76
76
|
Support matrix hiện tại: macOS Apple Silicon + Bash và Linux x64 + Bash đã được verify; macOS Intel + Bash và Linux ARM64 + Bash là supported target cần chạy smoke trước rollout; native Windows chưa phải target rollout team; WSL2 experimental. Chi tiết và version runtime nằm trong [release/install policy](release-install-policy.md).
|
|
77
77
|
|
|
@@ -118,7 +118,7 @@ Nếu muốn commit sẵn `.pi/piagent-profile.json` vào repo hoặc bootstrap
|
|
|
118
118
|
```bash
|
|
119
119
|
bash scripts/setup.sh /path/to/project \
|
|
120
120
|
--profile be-readonly-fe \
|
|
121
|
-
--package-source git:github.com/Vt-mmm/piagent@v1.15.
|
|
121
|
+
--package-source git:github.com/Vt-mmm/piagent@v1.15.2 \
|
|
122
122
|
--mcp-preset core \
|
|
123
123
|
--subagents-preset safe
|
|
124
124
|
```
|
package/docs/languages.json
CHANGED
|
@@ -21,8 +21,8 @@
|
|
|
21
21
|
"en": "README.md",
|
|
22
22
|
"vi": "README.vi.md",
|
|
23
23
|
"consistentAt": {
|
|
24
|
-
"en": "
|
|
25
|
-
"vi": "
|
|
24
|
+
"en": "4c0030541519dbd1e6e873642cc2c385f04f9366",
|
|
25
|
+
"vi": "74d755462ff2c5368814479f850ef826a41c844c"
|
|
26
26
|
}
|
|
27
27
|
},
|
|
28
28
|
{
|
|
@@ -19,12 +19,12 @@ Support matrix release hiện tại: macOS Apple Silicon + Bash và Linux x64 +
|
|
|
19
19
|
```bash
|
|
20
20
|
node --version # >= 22.19.0
|
|
21
21
|
npm install -g --ignore-scripts @earendil-works/pi-coding-agent@0.87.1
|
|
22
|
-
npm install -g --ignore-scripts @piagent/platform@1.15.
|
|
22
|
+
npm install -g --ignore-scripts @piagent/platform@1.15.2
|
|
23
23
|
piagent-install --stable --dry-run
|
|
24
24
|
piagent-install --stable
|
|
25
25
|
```
|
|
26
26
|
|
|
27
|
-
Khi seed `.pi/settings.json` cho team/repo cần audit lặp lại, giữ package source dạng pinned tag như `git:github.com/Vt-mmm/piagent@v1.15.
|
|
27
|
+
Khi seed `.pi/settings.json` cho team/repo cần audit lặp lại, giữ package source dạng pinned tag như `git:github.com/Vt-mmm/piagent@v1.15.2`. Máy cá nhân có thể dùng `git:github.com/Vt-mmm/piagent` để theo latest.
|
|
28
28
|
|
|
29
29
|
Nếu đang ở source checkout của platform, dùng helper theo channel để preview trước khi đổi:
|
|
30
30
|
|
|
@@ -100,7 +100,7 @@ install package once
|
|
|
100
100
|
|
|
101
101
|
```bash
|
|
102
102
|
npm install -g --ignore-scripts @earendil-works/pi-coding-agent@0.87.1
|
|
103
|
-
npm install -g --ignore-scripts @piagent/platform@1.15.
|
|
103
|
+
npm install -g --ignore-scripts @piagent/platform@1.15.2
|
|
104
104
|
piagent-install --stable --dry-run
|
|
105
105
|
piagent-install --stable
|
|
106
106
|
```
|
|
@@ -285,7 +285,7 @@ Không phải daily default. Dùng khi muốn tạo sẵn `.pi` files cho projec
|
|
|
285
285
|
bash /path/to/piagent/scripts/setup.sh /path/to/project \
|
|
286
286
|
--project-only \
|
|
287
287
|
--profile auto \
|
|
288
|
-
--package-source git:github.com/Vt-mmm/piagent@v1.15.
|
|
288
|
+
--package-source git:github.com/Vt-mmm/piagent@v1.15.2 \
|
|
289
289
|
--mcp-preset core \
|
|
290
290
|
--subagents-preset safe
|
|
291
291
|
```
|
|
@@ -999,8 +999,8 @@ Watchdog là optional adversarial reviewer ở cuối turn, không bật mặc
|
|
|
999
999
|
|
|
1000
1000
|
| Command | Dùng để |
|
|
1001
1001
|
|---|---|
|
|
1002
|
-
| `npm install -g --ignore-scripts @piagent/platform@1.15.
|
|
1003
|
-
| `pi install git:github.com/Vt-mmm/piagent@v1.15.
|
|
1002
|
+
| `npm install -g --ignore-scripts @piagent/platform@1.15.2` | Cài terminal helper `piagent-*` từ release tag hiện tại. |
|
|
1003
|
+
| `pi install git:github.com/Vt-mmm/piagent@v1.15.2` | Install pinned release cho reproducible team setup. |
|
|
1004
1004
|
| `pi install git:github.com/Vt-mmm/piagent` | Install latest platform package cho máy cá nhân/sandbox. |
|
|
1005
1005
|
| Cài exact Pi host của release, rồi `npm install -g --ignore-scripts @piagent/platform@X.Y.Z` và `piagent-install --stable` | Full update: đồng bộ host, terminal helper và Pi package. Mỗi release pin một Pi host chính xác; lấy đúng version của release đang cài trong [release/install policy](release-install-policy.md). |
|
|
1006
1006
|
| Cài exact Pi host ghi trong release cũ, rồi helper `vPREVIOUS` và `piagent-install --stable` | Full rollback; đánh giá lại dependency findings của host cũ trước khi hạ version. |
|
|
@@ -1096,7 +1096,7 @@ Mở lại Pi session sau khi install.
|
|
|
1096
1096
|
Cài lại terminal helper đúng release rồi kiểm tra `PATH`:
|
|
1097
1097
|
|
|
1098
1098
|
```bash
|
|
1099
|
-
npm install -g --ignore-scripts @piagent/platform@1.15.
|
|
1099
|
+
npm install -g --ignore-scripts @piagent/platform@1.15.2
|
|
1100
1100
|
command -v piagent-install
|
|
1101
1101
|
```
|
|
1102
1102
|
|
|
@@ -41,6 +41,7 @@ pi install /path/to/piagent
|
|
|
41
41
|
|
|
42
42
|
## Versioning
|
|
43
43
|
|
|
44
|
+
- `1.15.2`: cuộc trò chuyện công ty dài tóm tắt được trở lại (trước đó Studio từ chối với 401 `authentication_required`); tóm tắt ở 90% cửa sổ model, muộn nhất 300k token; tóm tắt lỗi được thử lại sau 1, 2, 4 … phút.
|
|
44
45
|
- `1.15.1`: mỗi call model công ty báo Studio mục đích (Studio 0.20.0: Logs → "Lượt agent"); nhiều cuộc trò chuyện trong một folder không nhận nhầm thay đổi của nhau; runtime công ty không mở được nói rõ lý do và lưu trữ được.
|
|
45
46
|
- `1.15.0`: subagent bị Studio từ chối nói đúng lý do (cần Agent Watch 0.15.0); lệnh in nhiều và chạy lâu không còn bị dừng vì `managed-tool-output-too-large`; ghi vào `/tmp` được chỉ sang `$TMPDIR`.
|
|
46
47
|
- `1.14.0`: cập nhật Piagent giữ model mặc định và danh sách model thành viên đã chọn, chỉ thêm model mới của bản phát hành; trên Windows, WSL2 không còn bị báo là thử nghiệm.
|
|
@@ -153,7 +153,7 @@ Use this flow when the team needs both terminal commands and the Pi package:
|
|
|
153
153
|
```bash
|
|
154
154
|
node --version # >= 22.19.0
|
|
155
155
|
npm install -g --ignore-scripts @earendil-works/pi-coding-agent@0.87.1
|
|
156
|
-
npm install -g --ignore-scripts @piagent/platform@1.15.
|
|
156
|
+
npm install -g --ignore-scripts @piagent/platform@1.15.2
|
|
157
157
|
piagent-install --stable --dry-run
|
|
158
158
|
piagent-install --stable
|
|
159
159
|
```
|
|
@@ -179,7 +179,7 @@ bash scripts/install-global.sh --stable
|
|
|
179
179
|
Use this only when terminal commands are not needed:
|
|
180
180
|
|
|
181
181
|
```bash
|
|
182
|
-
pi install git:github.com/Vt-mmm/piagent@v1.15.
|
|
182
|
+
pi install git:github.com/Vt-mmm/piagent@v1.15.2
|
|
183
183
|
```
|
|
184
184
|
|
|
185
185
|
Direct `pi install` does not create `piagent-*` commands on `PATH`.
|
package/docs/team-onboarding.md
CHANGED
|
@@ -10,7 +10,7 @@ Một thành viên mới không cần biết local path của maintainer. Luồn
|
|
|
10
10
|
```bash
|
|
11
11
|
node --version # >= 22.19.0
|
|
12
12
|
npm install -g --ignore-scripts @earendil-works/pi-coding-agent@0.87.1
|
|
13
|
-
npm install -g --ignore-scripts @piagent/platform@1.15.
|
|
13
|
+
npm install -g --ignore-scripts @piagent/platform@1.15.2
|
|
14
14
|
piagent-install --stable
|
|
15
15
|
cd /path/to/project
|
|
16
16
|
pi
|
|
@@ -45,7 +45,7 @@ Mặc định team dùng stable helper:
|
|
|
45
45
|
```bash
|
|
46
46
|
node --version # >= 22.19.0
|
|
47
47
|
npm install -g --ignore-scripts @earendil-works/pi-coding-agent@0.87.1
|
|
48
|
-
npm install -g --ignore-scripts @piagent/platform@1.15.
|
|
48
|
+
npm install -g --ignore-scripts @piagent/platform@1.15.2
|
|
49
49
|
piagent-install --stable --dry-run
|
|
50
50
|
piagent-install --stable
|
|
51
51
|
```
|
|
@@ -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.15.
|
|
33
|
+
<span class="pill"><span class="pill-dot"></span>v1.15.2 docs · VI</span>
|
|
34
34
|
<nav class="language-switch" aria-label="Ngôn ngữ">
|
|
35
35
|
<a class="language-option current" href="/architecture" hreflang="vi" lang="vi" aria-current="true">VI</a>
|
|
36
36
|
<a class="language-option" href="/en/architecture" hreflang="en" lang="en">EN</a>
|
package/docs-site/benchmark.html
CHANGED
|
@@ -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.15.
|
|
33
|
+
<span class="pill"><span class="pill-dot"></span>v1.15.2 docs · VI</span>
|
|
34
34
|
<nav class="language-switch" aria-label="Ngôn ngữ">
|
|
35
35
|
<a class="language-option current" href="/benchmark" hreflang="vi" lang="vi" aria-current="true">VI</a>
|
|
36
36
|
<a class="language-option" href="/en/benchmark" hreflang="en" lang="en">EN</a>
|
package/docs-site/commands.html
CHANGED
|
@@ -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.15.
|
|
33
|
+
<span class="pill"><span class="pill-dot"></span>v1.15.2 docs · VI</span>
|
|
34
34
|
<nav class="language-switch" aria-label="Ngôn ngữ">
|
|
35
35
|
<a class="language-option current" href="/commands" hreflang="vi" lang="vi" aria-current="true">VI</a>
|
|
36
36
|
<a class="language-option" href="/en/commands" hreflang="en" lang="en">EN</a>
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
<section class="hero">
|
|
2
|
-
<p class="eyebrow">Piagent 1.15.
|
|
2
|
+
<p class="eyebrow">Piagent 1.15.2</p>
|
|
3
3
|
<h1>A coding agent for the whole team, checked at every step.</h1>
|
|
4
4
|
<p>
|
|
5
5
|
One dashboard for Terminal and the browser. Use models with your own account, or the company's models through Agent Watch and Agent Studio. The guard checks every tool call; in company mode the team's Harness asks for checks, has a subagent review the change and reports the outcome right under the answer.
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
<div class="hero-actions">
|
|
14
14
|
<a class="button primary" href="/en/quickstart">Get started</a>
|
|
15
15
|
<a class="button" href="/en/ecosystem">Ecosystem</a>
|
|
16
|
-
<a class="button" href="/en/whats-new">What’s new in 1.15.
|
|
16
|
+
<a class="button" href="/en/whats-new">What’s new in 1.15.2</a>
|
|
17
17
|
<a class="button" href="/en/commands">View commands</a>
|
|
18
18
|
</div>
|
|
19
19
|
</section>
|
|
@@ -89,9 +89,9 @@ piagent-setup</code></pre>
|
|
|
89
89
|
<h2 id="where-to-start">Where to start</h2>
|
|
90
90
|
<div class="card-grid">
|
|
91
91
|
<a class="doc-card" href="/en/whats-new">
|
|
92
|
-
<span class="card-kicker">Release 1.15.
|
|
92
|
+
<span class="card-kicker">Release 1.15.2</span>
|
|
93
93
|
<h3>What’s new</h3>
|
|
94
|
-
<p>Studio sees what each model call is for, conversations in one folder keep their changes apart; in 1.15.0: a refused subagent says why; in 1.14: updates keep the models you chose; in 1.13: conversations keep their place, the agent's notes are formatted, Piagent on Windows through WSL2: a bubblewrap sandbox for company conversations and Agent Watch for Windows; in 1.12: @ picks files and folders on the Mac, skills and commands run from /, and forked company conversations take messages.</p>
|
|
94
|
+
<p>Long company conversations shrink again, and earlier (90% of the window, at most 300k tokens); in 1.15.1: Studio sees what each model call is for, conversations in one folder keep their changes apart; in 1.15.0: a refused subagent says why; in 1.14: updates keep the models you chose; in 1.13: conversations keep their place, the agent's notes are formatted, Piagent on Windows through WSL2: a bubblewrap sandbox for company conversations and Agent Watch for Windows; in 1.12: @ picks files and folders on the Mac, skills and commands run from /, and forked company conversations take messages.</p>
|
|
95
95
|
</a>
|
|
96
96
|
<a class="doc-card" href="/en/ecosystem">
|
|
97
97
|
<span class="card-kicker">Get started</span>
|
|
@@ -1,3 +1,14 @@
|
|
|
1
|
+
<section class="section">
|
|
2
|
+
<p class="section-kicker">v1.15.2 · 2026-10-07</p>
|
|
3
|
+
<h2 id="v1-15-2">Long company conversations shrink again, earlier</h2>
|
|
4
|
+
<p class="section-lead">A long company conversation's summary carried the provider's placeholder key instead of the run's grant, so Studio refused it (401 <span class="inline-code">authentication_required</span>, "Chưa chọn tài khoản" / "CLI trực tiếp" in the request monitor) before every step and the conversation kept growing. Summaries now use the run's grant, and Studio logs them as <span class="inline-code">summary</span>.</p>
|
|
5
|
+
<ul>
|
|
6
|
+
<li>A conversation is summarised at 90% of the model's window and never later than 300k tokens: 244.8k on a 272k GPT window (prices double above 272k), 300k on a 1M-token window instead of about 984k. About the last 20k tokens stay word for word.</li>
|
|
7
|
+
<li>A summary that fails is asked again after 1, 2, 4 … minutes (at most 30) instead of before every step.</li>
|
|
8
|
+
</ul>
|
|
9
|
+
<p>Updating from 1.15.x needs no re-import in Agent Watch.</p>
|
|
10
|
+
</section>
|
|
11
|
+
|
|
1
12
|
<section class="section">
|
|
2
13
|
<p class="section-kicker">v1.15.1 · 2026-10-07</p>
|
|
3
14
|
<h2 id="v1-15-1">Studio sees what each model call is for</h2>
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
<section class="hero">
|
|
2
|
-
<p class="eyebrow">Piagent 1.15.
|
|
2
|
+
<p class="eyebrow">Piagent 1.15.2</p>
|
|
3
3
|
<h1>Coding agent cho cả team, kiểm tra từng bước.</h1>
|
|
4
4
|
<p>
|
|
5
5
|
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.
|
|
@@ -13,7 +13,7 @@
|
|
|
13
13
|
<div class="hero-actions">
|
|
14
14
|
<a class="button primary" href="/quickstart">Bắt đầu</a>
|
|
15
15
|
<a class="button" href="/ecosystem">Hệ sinh thái</a>
|
|
16
|
-
<a class="button" href="/whats-new">Có gì mới trong 1.15.
|
|
16
|
+
<a class="button" href="/whats-new">Có gì mới trong 1.15.2</a>
|
|
17
17
|
<a class="button" href="/commands">Xem command</a>
|
|
18
18
|
</div>
|
|
19
19
|
</section>
|
|
@@ -89,9 +89,9 @@ piagent-setup</code></pre>
|
|
|
89
89
|
<h2 id="bat-dau-tu-dau">Bắt đầu từ đâu</h2>
|
|
90
90
|
<div class="card-grid">
|
|
91
91
|
<a class="doc-card" href="/whats-new">
|
|
92
|
-
<span class="card-kicker">Bản 1.15.
|
|
92
|
+
<span class="card-kicker">Bản 1.15.2</span>
|
|
93
93
|
<h3>Có gì mới</h3>
|
|
94
|
-
<p>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>
|
|
94
|
+
<p>Cuộc trò chuyện công ty dài tự thu gọn trở lại, sớm hơn (90% cửa sổ, muộn nhất 300k token); ở 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>
|
|
95
95
|
</a>
|
|
96
96
|
<a class="doc-card" href="/ecosystem">
|
|
97
97
|
<span class="card-kicker">Get started</span>
|
|
@@ -1,3 +1,14 @@
|
|
|
1
|
+
<section class="section">
|
|
2
|
+
<p class="section-kicker">v1.15.2 · 2026-10-07</p>
|
|
3
|
+
<h2 id="v1-15-2">Cuộc trò chuyện công ty dài tự thu gọn trở lại, và sớm hơn</h2>
|
|
4
|
+
<p class="section-lead">Tóm tắt hội thoại dài ở chế độ công ty gửi nhầm key giữ chỗ thay vì quyền của lượt chạy, nên Studio từ chối (401 <span class="inline-code">authentication_required</span>, hiện là "Chưa chọn tài khoản" / "CLI trực tiếp" trong theo dõi request) trước mỗi bước và hội thoại cứ dài thêm. Giờ tóm tắt dùng quyền của lượt chạy và Studio ghi là <span class="inline-code">summary</span>.</p>
|
|
5
|
+
<ul>
|
|
6
|
+
<li>Hội thoại được tóm tắt khi đạt 90% cửa sổ của model và muộn nhất ở 300k token: 244,8k với GPT 272k (giá gấp đôi trên 272k), 300k với model 1M thay vì khoảng 984k. Khoảng 20k token gần nhất vẫn giữ nguyên văn.</li>
|
|
7
|
+
<li>Tóm tắt bị lỗi được thử lại sau 1, 2, 4 … phút (tối đa 30) thay vì trước mỗi bước.</li>
|
|
8
|
+
</ul>
|
|
9
|
+
<p>Cập nhật từ 1.15.x không cần nhập lại cấu hình trong Agent Watch.</p>
|
|
10
|
+
</section>
|
|
11
|
+
|
|
1
12
|
<section class="section">
|
|
2
13
|
<p class="section-kicker">v1.15.1 · 2026-10-07</p>
|
|
3
14
|
<h2 id="v1-15-1">Studio thấy mỗi call của model dùng để làm 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.15.
|
|
33
|
+
<span class="pill"><span class="pill-dot"></span>v1.15.2 docs · VI</span>
|
|
34
34
|
<nav class="language-switch" aria-label="Ngôn ngữ">
|
|
35
35
|
<a class="language-option current" href="/context-engine" hreflang="vi" lang="vi" aria-current="true">VI</a>
|
|
36
36
|
<a class="language-option" href="/en/context-engine" hreflang="en" lang="en">EN</a>
|
package/docs-site/ecosystem.html
CHANGED
|
@@ -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.15.
|
|
33
|
+
<span class="pill"><span class="pill-dot"></span>v1.15.2 docs · VI</span>
|
|
34
34
|
<nav class="language-switch" aria-label="Ngôn ngữ">
|
|
35
35
|
<a class="language-option current" href="/ecosystem" hreflang="vi" lang="vi" aria-current="true">VI</a>
|
|
36
36
|
<a class="language-option" href="/en/ecosystem" 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.15.
|
|
33
|
+
<span class="pill"><span class="pill-dot"></span>v1.15.2 docs · EN</span>
|
|
34
34
|
<nav class="language-switch" aria-label="Language">
|
|
35
35
|
<a class="language-option" href="/architecture" hreflang="vi" lang="vi">VI</a>
|
|
36
36
|
<a class="language-option current" href="/en/architecture" 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.15.
|
|
33
|
+
<span class="pill"><span class="pill-dot"></span>v1.15.2 docs · EN</span>
|
|
34
34
|
<nav class="language-switch" aria-label="Language">
|
|
35
35
|
<a class="language-option" href="/benchmark" hreflang="vi" lang="vi">VI</a>
|
|
36
36
|
<a class="language-option current" href="/en/benchmark" 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.15.
|
|
33
|
+
<span class="pill"><span class="pill-dot"></span>v1.15.2 docs · EN</span>
|
|
34
34
|
<nav class="language-switch" aria-label="Language">
|
|
35
35
|
<a class="language-option" href="/commands" hreflang="vi" lang="vi">VI</a>
|
|
36
36
|
<a class="language-option current" href="/en/commands" 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.15.
|
|
33
|
+
<span class="pill"><span class="pill-dot"></span>v1.15.2 docs · EN</span>
|
|
34
34
|
<nav class="language-switch" aria-label="Language">
|
|
35
35
|
<a class="language-option" href="/context-engine" hreflang="vi" lang="vi">VI</a>
|
|
36
36
|
<a class="language-option current" href="/en/context-engine" 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.15.
|
|
33
|
+
<span class="pill"><span class="pill-dot"></span>v1.15.2 docs · EN</span>
|
|
34
34
|
<nav class="language-switch" aria-label="Language">
|
|
35
35
|
<a class="language-option" href="/ecosystem" hreflang="vi" lang="vi">VI</a>
|
|
36
36
|
<a class="language-option current" href="/en/ecosystem" hreflang="en" lang="en" aria-current="true">EN</a>
|
package/docs-site/en/index.html
CHANGED
|
@@ -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.15.
|
|
33
|
+
<span class="pill"><span class="pill-dot"></span>v1.15.2 docs · EN</span>
|
|
34
34
|
<nav class="language-switch" aria-label="Language">
|
|
35
35
|
<a class="language-option" href="/" hreflang="vi" lang="vi">VI</a>
|
|
36
36
|
<a class="language-option current" href="/en/" hreflang="en" lang="en" aria-current="true">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.15.
|
|
97
|
+
<p class="eyebrow">Piagent 1.15.2</p>
|
|
98
98
|
<h1>A coding agent for the whole team, checked at every step.</h1>
|
|
99
99
|
<p>
|
|
100
100
|
One dashboard for Terminal and the browser. Use models with your own account, or the company's models through Agent Watch and Agent Studio. The guard checks every tool call; in company mode the team's Harness asks for checks, has a subagent review the change and reports the outcome right under the answer.
|
|
@@ -108,7 +108,7 @@
|
|
|
108
108
|
<div class="hero-actions">
|
|
109
109
|
<a class="button primary" href="/en/quickstart">Get started</a>
|
|
110
110
|
<a class="button" href="/en/ecosystem">Ecosystem</a>
|
|
111
|
-
<a class="button" href="/en/whats-new">What’s new in 1.15.
|
|
111
|
+
<a class="button" href="/en/whats-new">What’s new in 1.15.2</a>
|
|
112
112
|
<a class="button" href="/en/commands">View commands</a>
|
|
113
113
|
</div>
|
|
114
114
|
</section>
|
|
@@ -184,9 +184,9 @@ piagent-setup</code></pre>
|
|
|
184
184
|
<h2 id="where-to-start">Where to start</h2>
|
|
185
185
|
<div class="card-grid">
|
|
186
186
|
<a class="doc-card" href="/en/whats-new">
|
|
187
|
-
<span class="card-kicker">Release 1.15.
|
|
187
|
+
<span class="card-kicker">Release 1.15.2</span>
|
|
188
188
|
<h3>What’s new</h3>
|
|
189
|
-
<p>Studio sees what each model call is for, conversations in one folder keep their changes apart; in 1.15.0: a refused subagent says why; in 1.14: updates keep the models you chose; in 1.13: conversations keep their place, the agent's notes are formatted, Piagent on Windows through WSL2: a bubblewrap sandbox for company conversations and Agent Watch for Windows; in 1.12: @ picks files and folders on the Mac, skills and commands run from /, and forked company conversations take messages.</p>
|
|
189
|
+
<p>Long company conversations shrink again, and earlier (90% of the window, at most 300k tokens); in 1.15.1: Studio sees what each model call is for, conversations in one folder keep their changes apart; in 1.15.0: a refused subagent says why; in 1.14: updates keep the models you chose; in 1.13: conversations keep their place, the agent's notes are formatted, Piagent on Windows through WSL2: a bubblewrap sandbox for company conversations and Agent Watch for Windows; in 1.12: @ picks files and folders on the Mac, skills and commands run from /, and forked company conversations take messages.</p>
|
|
190
190
|
</a>
|
|
191
191
|
<a class="doc-card" href="/en/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.15.
|
|
33
|
+
<span class="pill"><span class="pill-dot"></span>v1.15.2 docs · EN</span>
|
|
34
34
|
<nav class="language-switch" aria-label="Language">
|
|
35
35
|
<a class="language-option" href="/mcp-approval" hreflang="vi" lang="vi">VI</a>
|
|
36
36
|
<a class="language-option current" href="/en/mcp-approval" 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.15.
|
|
33
|
+
<span class="pill"><span class="pill-dot"></span>v1.15.2 docs · EN</span>
|
|
34
34
|
<nav class="language-switch" aria-label="Language">
|
|
35
35
|
<a class="language-option" href="/mcp-auth" hreflang="vi" lang="vi">VI</a>
|
|
36
36
|
<a class="language-option current" href="/en/mcp-auth" 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.15.
|
|
33
|
+
<span class="pill"><span class="pill-dot"></span>v1.15.2 docs · EN</span>
|
|
34
34
|
<nav class="language-switch" aria-label="Language">
|
|
35
35
|
<a class="language-option" href="/mcp-servers" hreflang="vi" lang="vi">VI</a>
|
|
36
36
|
<a class="language-option current" href="/en/mcp-servers" hreflang="en" lang="en" aria-current="true">EN</a>
|
package/docs-site/en/mcp.html
CHANGED
|
@@ -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.15.
|
|
33
|
+
<span class="pill"><span class="pill-dot"></span>v1.15.2 docs · EN</span>
|
|
34
34
|
<nav class="language-switch" aria-label="Language">
|
|
35
35
|
<a class="language-option" href="/mcp" hreflang="vi" lang="vi">VI</a>
|
|
36
36
|
<a class="language-option current" href="/en/mcp" 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.15.
|
|
33
|
+
<span class="pill"><span class="pill-dot"></span>v1.15.2 docs · EN</span>
|
|
34
34
|
<nav class="language-switch" aria-label="Language">
|
|
35
35
|
<a class="language-option" href="/permissions" hreflang="vi" lang="vi">VI</a>
|
|
36
36
|
<a class="language-option current" href="/en/permissions" 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.15.
|
|
33
|
+
<span class="pill"><span class="pill-dot"></span>v1.15.2 docs · EN</span>
|
|
34
34
|
<nav class="language-switch" aria-label="Language">
|
|
35
35
|
<a class="language-option" href="/profiles" hreflang="vi" lang="vi">VI</a>
|
|
36
36
|
<a class="language-option current" href="/en/profiles" 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.15.
|
|
33
|
+
<span class="pill"><span class="pill-dot"></span>v1.15.2 docs · EN</span>
|
|
34
34
|
<nav class="language-switch" aria-label="Language">
|
|
35
35
|
<a class="language-option" href="/quickstart" hreflang="vi" lang="vi">VI</a>
|
|
36
36
|
<a class="language-option current" href="/en/quickstart" 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.15.
|
|
33
|
+
<span class="pill"><span class="pill-dot"></span>v1.15.2 docs · EN</span>
|
|
34
34
|
<nav class="language-switch" aria-label="Language">
|
|
35
35
|
<a class="language-option" href="/runtime" hreflang="vi" lang="vi">VI</a>
|
|
36
36
|
<a class="language-option current" href="/en/runtime" hreflang="en" lang="en" aria-current="true">EN</a>
|
package/docs-site/en/scope.html
CHANGED
|
@@ -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.15.
|
|
33
|
+
<span class="pill"><span class="pill-dot"></span>v1.15.2 docs · EN</span>
|
|
34
34
|
<nav class="language-switch" aria-label="Language">
|
|
35
35
|
<a class="language-option" href="/scope" hreflang="vi" lang="vi">VI</a>
|
|
36
36
|
<a class="language-option current" href="/en/scope" 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.15.
|
|
33
|
+
<span class="pill"><span class="pill-dot"></span>v1.15.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>
|
package/docs-site/en/team.html
CHANGED
|
@@ -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.15.
|
|
33
|
+
<span class="pill"><span class="pill-dot"></span>v1.15.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.15.
|
|
33
|
+
<span class="pill"><span class="pill-dot"></span>v1.15.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,17 @@
|
|
|
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.15.2 · 2026-10-07</p>
|
|
109
|
+
<h2 id="v1-15-2">Long company conversations shrink again, earlier</h2>
|
|
110
|
+
<p class="section-lead">A long company conversation's summary carried the provider's placeholder key instead of the run's grant, so Studio refused it (401 <span class="inline-code">authentication_required</span>, "Chưa chọn tài khoản" / "CLI trực tiếp" in the request monitor) before every step and the conversation kept growing. Summaries now use the run's grant, and Studio logs them as <span class="inline-code">summary</span>.</p>
|
|
111
|
+
<ul>
|
|
112
|
+
<li>A conversation is summarised at 90% of the model's window and never later than 300k tokens: 244.8k on a 272k GPT window (prices double above 272k), 300k on a 1M-token window instead of about 984k. About the last 20k tokens stay word for word.</li>
|
|
113
|
+
<li>A summary that fails is asked again after 1, 2, 4 … minutes (at most 30) instead of before every step.</li>
|
|
114
|
+
</ul>
|
|
115
|
+
<p>Updating from 1.15.x needs no re-import in Agent Watch.</p>
|
|
116
|
+
</section>
|
|
117
|
+
|
|
107
118
|
<section class="section">
|
|
108
119
|
<p class="section-kicker">v1.15.1 · 2026-10-07</p>
|
|
109
120
|
<h2 id="v1-15-1">Studio sees what each model call is for</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.15.
|
|
33
|
+
<span class="pill"><span class="pill-dot"></span>v1.15.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.15.
|
|
33
|
+
<span class="pill"><span class="pill-dot"></span>v1.15.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>
|
package/docs-site/index.html
CHANGED
|
@@ -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.15.
|
|
33
|
+
<span class="pill"><span class="pill-dot"></span>v1.15.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.15.
|
|
97
|
+
<p class="eyebrow">Piagent 1.15.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.15.
|
|
111
|
+
<a class="button" href="/whats-new">Có gì mới trong 1.15.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.15.
|
|
187
|
+
<span class="card-kicker">Bản 1.15.2</span>
|
|
188
188
|
<h3>Có gì mới</h3>
|
|
189
|
-
<p>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>Cuộc trò chuyện công ty dài tự thu gọn trở lại, sớm hơn (90% cửa sổ, muộn nhất 300k token); ở 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.15.
|
|
33
|
+
<span class="pill"><span class="pill-dot"></span>v1.15.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>
|
package/docs-site/mcp-auth.html
CHANGED
|
@@ -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.15.
|
|
33
|
+
<span class="pill"><span class="pill-dot"></span>v1.15.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.15.
|
|
33
|
+
<span class="pill"><span class="pill-dot"></span>v1.15.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>
|
package/docs-site/mcp.html
CHANGED
|
@@ -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.15.
|
|
33
|
+
<span class="pill"><span class="pill-dot"></span>v1.15.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.15.
|
|
33
|
+
<span class="pill"><span class="pill-dot"></span>v1.15.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>
|
package/docs-site/profiles.html
CHANGED
|
@@ -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.15.
|
|
33
|
+
<span class="pill"><span class="pill-dot"></span>v1.15.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.15.
|
|
33
|
+
<span class="pill"><span class="pill-dot"></span>v1.15.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>
|
package/docs-site/runtime.html
CHANGED
|
@@ -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.15.
|
|
33
|
+
<span class="pill"><span class="pill-dot"></span>v1.15.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>
|
package/docs-site/scope.html
CHANGED
|
@@ -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.15.
|
|
33
|
+
<span class="pill"><span class="pill-dot"></span>v1.15.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>
|
package/docs-site/security.html
CHANGED
|
@@ -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.15.
|
|
33
|
+
<span class="pill"><span class="pill-dot"></span>v1.15.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>
|
package/docs-site/team.html
CHANGED
|
@@ -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.15.
|
|
33
|
+
<span class="pill"><span class="pill-dot"></span>v1.15.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>
|
package/docs-site/whats-new.html
CHANGED
|
@@ -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.15.
|
|
33
|
+
<span class="pill"><span class="pill-dot"></span>v1.15.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,17 @@
|
|
|
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.15.2 · 2026-10-07</p>
|
|
109
|
+
<h2 id="v1-15-2">Cuộc trò chuyện công ty dài tự thu gọn trở lại, và sớm hơn</h2>
|
|
110
|
+
<p class="section-lead">Tóm tắt hội thoại dài ở chế độ công ty gửi nhầm key giữ chỗ thay vì quyền của lượt chạy, nên Studio từ chối (401 <span class="inline-code">authentication_required</span>, hiện là "Chưa chọn tài khoản" / "CLI trực tiếp" trong theo dõi request) trước mỗi bước và hội thoại cứ dài thêm. Giờ tóm tắt dùng quyền của lượt chạy và Studio ghi là <span class="inline-code">summary</span>.</p>
|
|
111
|
+
<ul>
|
|
112
|
+
<li>Hội thoại được tóm tắt khi đạt 90% cửa sổ của model và muộn nhất ở 300k token: 244,8k với GPT 272k (giá gấp đôi trên 272k), 300k với model 1M thay vì khoảng 984k. Khoảng 20k token gần nhất vẫn giữ nguyên văn.</li>
|
|
113
|
+
<li>Tóm tắt bị lỗi được thử lại sau 1, 2, 4 … phút (tối đa 30) thay vì trước mỗi bước.</li>
|
|
114
|
+
</ul>
|
|
115
|
+
<p>Cập nhật từ 1.15.x không cần nhập lại cấu hình trong Agent Watch.</p>
|
|
116
|
+
</section>
|
|
117
|
+
|
|
107
118
|
<section class="section">
|
|
108
119
|
<p class="section-kicker">v1.15.1 · 2026-10-07</p>
|
|
109
120
|
<h2 id="v1-15-1">Studio thấy mỗi call của model dùng để làm gì</h2>
|
package/docs-site/windows.html
CHANGED
|
@@ -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.15.
|
|
33
|
+
<span class="pill"><span class="pill-dot"></span>v1.15.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>
|
package/docs-site/workflows.html
CHANGED
|
@@ -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.15.
|
|
33
|
+
<span class="pill"><span class="pill-dot"></span>v1.15.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>
|
|
@@ -257,7 +257,7 @@
|
|
|
257
257
|
{
|
|
258
258
|
"path": "tests",
|
|
259
259
|
"fileCount": 524,
|
|
260
|
-
"sha256": "
|
|
260
|
+
"sha256": "d35f964fb3f4cc90d79f2f65ada154f81f255fc44c3861e473bffab813189afd"
|
|
261
261
|
}
|
|
262
262
|
],
|
|
263
263
|
"custodianComparisonRules": {
|
package/package.json
CHANGED
|
@@ -29,7 +29,7 @@ export function jobTitle(task, title) {
|
|
|
29
29
|
export function purposeHeaders(owner, runtime, role, context) {
|
|
30
30
|
const messages = context?.messages ?? [], last = messages.at(-1);
|
|
31
31
|
let purpose, after = '';
|
|
32
|
-
if (
|
|
32
|
+
if (systemText(context).startsWith(SUMMARY_PROMPT)) purpose = 'summary';
|
|
33
33
|
else if (last?.role === 'toolResult') { purpose = 'tool_step'; after = afterTools(messages.findLast(m => m.role === 'assistant')); }
|
|
34
34
|
else if (role !== 'main') purpose = 'brief';
|
|
35
35
|
else if (owner.nextPurpose === 'harness') { purpose = 'harness'; owner.nextPurpose = null; }
|
|
@@ -37,3 +37,13 @@ export function purposeHeaders(owner, runtime, role, context) {
|
|
|
37
37
|
const title = purpose === 'brief' ? owner.jobTitles?.get(runtime) : '';
|
|
38
38
|
return { 'X-Agent-Purpose': purpose, ...(after ? { 'X-Agent-After': after } : {}), ...(title ? { 'X-Agent-Task': encodeURIComponent(title) } : {}) };
|
|
39
39
|
}
|
|
40
|
+
|
|
41
|
+
// Pi folds the system prompt into a leading system message before a call
|
|
42
|
+
// reaches a provider, so a summary is recognised in either shape.
|
|
43
|
+
function systemText(context) {
|
|
44
|
+
if (typeof context?.systemPrompt === 'string') return context.systemPrompt;
|
|
45
|
+
const first = context?.messages?.[0];
|
|
46
|
+
if (first?.role !== 'system') return '';
|
|
47
|
+
if (typeof first.content === 'string') return first.content;
|
|
48
|
+
return Array.isArray(first.content) ? first.content.filter(p => p?.type === 'text').map(p => p.text).join('') : '';
|
|
49
|
+
}
|
|
@@ -17,6 +17,49 @@ function addUsage(a, b) {
|
|
|
17
17
|
totalTokens: sum(a.totalTokens, b.totalTokens), cost: Object.fromEntries(Object.keys(a.cost ?? {}).map(k => [k, sum(a.cost[k], b.cost?.[k])])) };
|
|
18
18
|
}
|
|
19
19
|
|
|
20
|
+
// When a long conversation is summarised. Pi waits until the window is full
|
|
21
|
+
// but for its 16k reserve; Codex summarises at 90% of the window, and its
|
|
22
|
+
// GPT models report a 272k window under an 872k maximum. A turn re-reads the
|
|
23
|
+
// whole context: a 1M-token window full to the brim bills about 1M input
|
|
24
|
+
// tokens per step (GPT doubles its price above 272k) and answers worse.
|
|
25
|
+
// Summarise at 90% of the window, and never later than 300k tokens.
|
|
26
|
+
export const COMPACT_SHARE = 0.9, COMPACT_CEILING_TOKENS = 300_000;
|
|
27
|
+
// Pi's own reserve: the summary may write up to 80% of it.
|
|
28
|
+
export const SUMMARY_RESERVE_TOKENS = 16_384;
|
|
29
|
+
export function compactionTrigger(contextWindow) {
|
|
30
|
+
return Math.min(Math.floor(contextWindow * COMPACT_SHARE), contextWindow - SUMMARY_RESERVE_TOKENS, COMPACT_CEILING_TOKENS);
|
|
31
|
+
}
|
|
32
|
+
// Pi compacts once context > window - reserveTokens: the trigger is set
|
|
33
|
+
// through the reserve, per model (Auto may move a conversation to another
|
|
34
|
+
// window). The summary keeps Pi's reserve (see stageCompaction).
|
|
35
|
+
export function compactEarly(settingsManager) {
|
|
36
|
+
const settings = settingsManager.getCompactionSettings.bind(settingsManager);
|
|
37
|
+
settingsManager.getCompactionSettings = model => {
|
|
38
|
+
const own = settings(model), window = model?.contextWindow;
|
|
39
|
+
return window > 0 ? { ...own, reserveTokens: Math.max(own.reserveTokens, window - compactionTrigger(window)) } : own;
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
// A summary that failed is not asked again at every step: each attempt can
|
|
43
|
+
// cost a full read of the conversation. Threshold attempts wait 1, 2, 4 …
|
|
44
|
+
// minutes (at most 30) after a failure; a success or an overflow (Pi retries
|
|
45
|
+
// that once on its own) is not held back.
|
|
46
|
+
export const COMPACT_BACKOFF_MS = 60_000, COMPACT_BACKOFF_MAX_MS = 30 * 60_000;
|
|
47
|
+
export function backOffFailedCompaction(session, now = Date.now) {
|
|
48
|
+
const run = session._runAutoCompaction?.bind(session);
|
|
49
|
+
if (!run) throw Error('managed-sdk-version-unqualified');
|
|
50
|
+
let failures = 0, failedAt = 0;
|
|
51
|
+
session.subscribe(event => {
|
|
52
|
+
if (event?.type !== 'compaction_end' || event.reason !== 'threshold') return;
|
|
53
|
+
if (event.result) failures = 0;
|
|
54
|
+
else if (!event.aborted) { failures += 1; failedAt = now(); }
|
|
55
|
+
});
|
|
56
|
+
session._runAutoCompaction = (reason, willRetry) => {
|
|
57
|
+
const wait = failures ? Math.min(COMPACT_BACKOFF_MS * 2 ** (failures - 1), COMPACT_BACKOFF_MAX_MS) : 0;
|
|
58
|
+
if (reason === 'threshold' && now() - failedAt < wait) return Promise.resolve(false);
|
|
59
|
+
return run(reason, willRetry);
|
|
60
|
+
};
|
|
61
|
+
}
|
|
62
|
+
|
|
20
63
|
// Pi summarises everything older than the kept tail in one request. A
|
|
21
64
|
// conversation can be longer than the window of the model a run uses now
|
|
22
65
|
// (the harness moved from a 1M-token model to a 272k one, or Auto fell
|
|
@@ -33,7 +76,10 @@ export async function stageCompaction(session, api, sdk) {
|
|
|
33
76
|
return unfinished(plan) ? { ...result, summary: `${result.summary}\n\nCurrent plan (kept verbatim; keep it up to date with update_plan):\n${planText(plan)}` } : result;
|
|
34
77
|
};
|
|
35
78
|
session._runDefaultCompaction = async (preparation, model, apiKey, headers, instructions, signal, env, reason) => {
|
|
36
|
-
|
|
79
|
+
// The reserve that set the trigger is not the summary's budget.
|
|
80
|
+
const settings = { ...preparation.settings, reserveTokens: Math.min(preparation.settings.reserveTokens, SUMMARY_RESERVE_TOKENS) };
|
|
81
|
+
preparation = { ...preparation, settings };
|
|
82
|
+
const { previousSummary } = preparation, room = model.contextWindow - settings.reserveTokens;
|
|
37
83
|
const history = [...preparation.messagesToSummarize, ...preparation.turnPrefixMessages];
|
|
38
84
|
const size = history.reduce((n, m) => n + api.estimateTokens(m), 0) + Math.ceil((previousSummary?.length ?? 0) / 4);
|
|
39
85
|
if (size + 4096 <= room) {
|
|
@@ -11,6 +11,14 @@ import { CLIENT_AGENT } from './client-agent.mjs';
|
|
|
11
11
|
import { shareGrant, releaseGrant } from './grant-share.mjs';
|
|
12
12
|
import { purposeHeaders } from './call-purpose.mjs';
|
|
13
13
|
|
|
14
|
+
// A caller may pass the provider's resolved auth headers (Pi's compaction and
|
|
15
|
+
// branch summaries do): for this provider that is the registered placeholder
|
|
16
|
+
// key, and caller headers override the role token. Only the grant authenticates.
|
|
17
|
+
const CREDENTIAL_HEADERS = /^(authorization|x-api-key)$/i;
|
|
18
|
+
function withoutCredentials(headers) {
|
|
19
|
+
return headers && Object.fromEntries(Object.entries(headers).filter(([name]) => !CREDENTIAL_HEADERS.test(name)));
|
|
20
|
+
}
|
|
21
|
+
|
|
14
22
|
// How long one request waits in line for a free company model account.
|
|
15
23
|
const CAPACITY_WAIT_MS = 20 * 60_000;
|
|
16
24
|
// How long a helper's request waits before the helper moves to another model.
|
|
@@ -62,7 +70,7 @@ export function wrapRoleStreams(owner, runtime, role, { provider, verifyGrant })
|
|
|
62
70
|
// same company account and prompt cache; a helper names its role.
|
|
63
71
|
const conversation = role === 'main' ? conversationSession(owner) : null;
|
|
64
72
|
const stream = original({ ...model, id: route.native }, context, { ...options, apiKey: grant.token, sessionId: conversation ?? grant.role_id, maxRetries: 0,
|
|
65
|
-
headers: { ...options?.headers, ...purpose, 'User-Agent': CLIENT_AGENT, 'X-Session-Id': grant.role_id, ...(conversation ? { 'X-Claude-Code-Session-Id': conversation } : {}) } });
|
|
73
|
+
headers: { ...withoutCredentials(options?.headers), ...purpose, 'User-Agent': CLIENT_AGENT, 'X-Session-Id': grant.role_id, ...(conversation ? { 'X-Claude-Code-Session-Id': conversation } : {}) } });
|
|
66
74
|
// Whether Studio admitted the request is known at its first event
|
|
67
75
|
// after "start": until then nothing is passed on, so a refused
|
|
68
76
|
// request leaves no trace in the conversation.
|
|
@@ -17,7 +17,7 @@ import { wrapRoleStreams } from './request-stream.mjs';
|
|
|
17
17
|
import { runHelper } from './helper-run.mjs';
|
|
18
18
|
import { askTool } from './member-questions.mjs';
|
|
19
19
|
import { setTimeout as sleep } from 'node:timers/promises';
|
|
20
|
-
import { stageCompaction } from './compaction.mjs';
|
|
20
|
+
import { stageCompaction, compactEarly, backOffFailedCompaction } from './compaction.mjs';
|
|
21
21
|
import { readPatchDigest, readPatchSnapshot, readChangedFiles } from './patch-snapshot.mjs';
|
|
22
22
|
import { workflowPolicy, repositoryChecks, planTool, currentPlan, PLAN_ENTRY, workflowPrompt, RunProcess, completionGate, pendingBaseline, pendingPaths, processEditTools } from './workflow.mjs';
|
|
23
23
|
import { beforeDelegate } from './objections.mjs';
|
|
@@ -197,6 +197,7 @@ export class ManagedSession {
|
|
|
197
197
|
if (event?.type === 'tool_execution_end' && event.isError && textContent(event.result ?? {}) === `Tool ${event.toolName} not found`) self.run && (self.run.unknownTools += 1);
|
|
198
198
|
});
|
|
199
199
|
await stageCompaction(self.session, self.api, self.sdk);
|
|
200
|
+
compactEarly(settings); backOffFailedCompaction(self.session);
|
|
200
201
|
self.publishHelpers();
|
|
201
202
|
const setThinking=self.session.setThinkingLevel.bind(self.session);
|
|
202
203
|
self.runThinking = setThinking;
|