@piagent/platform 1.0.0 → 1.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +11 -0
- package/README.md +5 -5
- package/docs/command-reference-vietnamese.md +3 -3
- package/docs/distribution-standard.md +10 -9
- package/docs/operator-manual-vietnamese.md +9 -9
- package/docs/publishing-for-teams.md +1 -1
- package/docs/quickstart-vietnamese.md +6 -6
- package/docs/release-install-policy.md +31 -10
- package/docs/security-threat-model.md +1 -1
- package/docs/team-onboarding.md +3 -3
- package/docs-site/index.html +10 -10
- package/package.json +2 -2
- package/packages/piagent-core/package.json +2 -2
- package/scripts/install-global.sh +3 -3
- package/scripts/team-doctor.sh +1 -1
- package/scripts/verify-release-identity.mjs +5 -1
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,17 @@
|
|
|
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.0.1 - 2026-07-25
|
|
6
|
+
|
|
7
|
+
Documentation release. v1.0.0 reached the npm registry but no document told anyone it was there, so every install instruction still pointed at the Git source.
|
|
8
|
+
|
|
9
|
+
### Changed
|
|
10
|
+
|
|
11
|
+
- The terminal helper now installs from the registry: `npm install -g --ignore-scripts @piagent/platform@1.0.1`. This replaces the `github:Vt-mmm/piagent#vX.Y.Z` form in the README, the docs site, and every install, update, and rollback flow. Installing from Git still works and produces the same files; the registry path additionally carries a provenance attestation npm can verify.
|
|
12
|
+
- Added an `npm` release channel with a real source, and narrowed `enterprise-npm` to what it actually describes: a fork published under a different scope.
|
|
13
|
+
- Recorded why `stable` still resolves the Pi package to a commit SHA rather than an npm version. Tag-to-SHA resolution is checked against `PIAGENT_EXPECTED_RELEASE_COMMIT`, and a registry version range cannot express that check, so pointing `stable` at npm would remove it rather than replace it.
|
|
14
|
+
- Aligned `repository.url` in both manifests with the form npm stores. Publishing rewrote the field and warned, which left the manifest in the repository disagreeing with the manifest on the registry.
|
|
15
|
+
|
|
5
16
|
## v1.0.0 - 2026-07-25
|
|
6
17
|
|
|
7
18
|
Breaking release. The `company` namespace is replaced by `piagent` with no alias layer, and `apiVersion` becomes a stable contract. Existing projects convert their local state with one migration command; both names never work at once.
|
package/README.md
CHANGED
|
@@ -114,7 +114,7 @@ Node.js `>=22.19.0` and Pi Coding Agent `0.81.1` are required. Pi Coding Agent i
|
|
|
114
114
|
```bash
|
|
115
115
|
node --version # >= 22.19.0
|
|
116
116
|
npm install -g --ignore-scripts @earendil-works/pi-coding-agent@0.81.1
|
|
117
|
-
npm install -g --ignore-scripts
|
|
117
|
+
npm install -g --ignore-scripts @piagent/platform@1.0.1
|
|
118
118
|
piagent-install --stable --dry-run
|
|
119
119
|
piagent-install --stable
|
|
120
120
|
```
|
|
@@ -124,7 +124,7 @@ The npm command installs the `piagent-*` terminal helpers. `piagent-install --st
|
|
|
124
124
|
If you only need to install the Pi package and do not need the `piagent-*` terminal commands, pin the current release tag or a reviewed commit directly:
|
|
125
125
|
|
|
126
126
|
```bash
|
|
127
|
-
pi install git:github.com/Vt-mmm/piagent@v1.0.
|
|
127
|
+
pi install git:github.com/Vt-mmm/piagent@v1.0.1
|
|
128
128
|
```
|
|
129
129
|
|
|
130
130
|
From a checked-out platform repo, the same helper is available as a script:
|
|
@@ -138,7 +138,7 @@ For a full update, update the exact Pi host first, then the npm-global helper, t
|
|
|
138
138
|
|
|
139
139
|
```bash
|
|
140
140
|
npm install -g --ignore-scripts @earendil-works/pi-coding-agent@0.81.1
|
|
141
|
-
npm install -g --ignore-scripts
|
|
141
|
+
npm install -g --ignore-scripts @piagent/platform@X.Y.Z
|
|
142
142
|
piagent-install --stable --dry-run
|
|
143
143
|
piagent-install --stable
|
|
144
144
|
```
|
|
@@ -423,7 +423,7 @@ Most projects do not need shell init. Use this only when you want to pre-create
|
|
|
423
423
|
```bash
|
|
424
424
|
bash /path/to/piagent/scripts/setup.sh /path/to/project \
|
|
425
425
|
--profile be-readonly-fe \
|
|
426
|
-
--package-source git:github.com/Vt-mmm/piagent@v1.0.
|
|
426
|
+
--package-source git:github.com/Vt-mmm/piagent@v1.0.1 \
|
|
427
427
|
--mcp-preset core \
|
|
428
428
|
--subagents-preset safe
|
|
429
429
|
```
|
|
@@ -538,7 +538,7 @@ This repository intentionally excludes:
|
|
|
538
538
|
|
|
539
539
|
## Maturity
|
|
540
540
|
|
|
541
|
-
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.0.
|
|
541
|
+
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.0.1` or a reviewed commit.
|
|
542
542
|
|
|
543
543
|
Ready for:
|
|
544
544
|
|
|
@@ -380,10 +380,10 @@ Các lệnh này chạy ngoài Pi.
|
|
|
380
380
|
| Command | Dùng khi nào |
|
|
381
381
|
|---|---|
|
|
382
382
|
| `npm install -g --ignore-scripts @earendil-works/pi-coding-agent@0.81.1` | Cài Pi CLI tương thích với release hiện tại. |
|
|
383
|
-
| `npm install -g --ignore-scripts
|
|
384
|
-
| `pi install git:github.com/Vt-mmm/piagent@v1.0.
|
|
383
|
+
| `npm install -g --ignore-scripts @piagent/platform@1.0.1` | Cài terminal helper `piagent-*` từ release tag hiện tại. |
|
|
384
|
+
| `pi install git:github.com/Vt-mmm/piagent@v1.0.1` | Cài pinned release khi cần reproducible team setup. |
|
|
385
385
|
| `pi install git:github.com/Vt-mmm/piagent` | Cài latest package platform cho máy cá nhân/sandbox. |
|
|
386
|
-
| Cài exact Pi host của release, rồi `npm install -g --ignore-scripts
|
|
386
|
+
| 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, npm-global helper và Pi package. v1.0.1 yêu cầu Pi `0.81.1`. |
|
|
387
387
|
| Cài exact Pi host ghi trong release cũ, rồi helper `vPREVIOUS` và `piagent-install --stable` | Full rollback; đánh giá dependency risk của host cũ trước khi hạ version. |
|
|
388
388
|
| `piagent-install --stable --dry-run` | Preview Pi package matching với helper hiện tại; stable resolve tag → commit SHA. |
|
|
389
389
|
| `piagent-install --stable` | Cài Pi package matching với helper hiện tại bằng resolved commit SHA. |
|
|
@@ -14,9 +14,10 @@ Repo này phải chạy được cho nhiều project/domain khác nhau. Vì vậ
|
|
|
14
14
|
|
|
15
15
|
| Use case | Package source |
|
|
16
16
|
|---|---|
|
|
17
|
-
| Team pinned release | `git:github.com/Vt-mmm/piagent@v1.0.
|
|
17
|
+
| Team pinned release | `git:github.com/Vt-mmm/piagent@v1.0.1` |
|
|
18
18
|
| Personal/sandbox dev | `git:github.com/Vt-mmm/piagent` |
|
|
19
|
-
|
|
|
19
|
+
| Registry distribution | `npm:@piagent/platform@1.0.1` |
|
|
20
|
+
| Enterprise npm (fork under another scope) | `npm:@your-scope/platform@x.y.z` |
|
|
20
21
|
| Local platform dev | `/path/to/piagent` |
|
|
21
22
|
|
|
22
23
|
Latest tiện cho máy cá nhân muốn nhận cập nhật nhanh. Pin tag/commit cho `.pi/settings.json` trong project nghiêm túc để tránh workflow đổi bất ngờ giữa các developer.
|
|
@@ -25,7 +26,7 @@ Latest tiện cho máy cá nhân muốn nhận cập nhật nhanh. Pin tag/commi
|
|
|
25
26
|
|
|
26
27
|
| Channel | Command | Target | Policy |
|
|
27
28
|
|---|---|---|---|
|
|
28
|
-
| `stable` | `bash scripts/install-global.sh --stable` | Helper release tag resolved to commit SHA, currently `v1.0.
|
|
29
|
+
| `stable` | `bash scripts/install-global.sh --stable` | Helper release tag resolved to commit SHA, currently `v1.0.1` | Install the Pi package matching the helper. |
|
|
29
30
|
| `exact` | `bash scripts/install-global.sh --version vX.Y.Z --resolve-tag` | Requested tag resolved to commit SHA | Pi-package-only rollout, rollback, and incident recovery. |
|
|
30
31
|
| `dev` | `bash scripts/install-global.sh --dev` | Moving Git source | Personal/sandbox only; do not commit into project settings. |
|
|
31
32
|
| `local` | `bash scripts/install-global.sh --local` | Current checkout path | Platform development only. |
|
|
@@ -52,7 +53,7 @@ Root `package.json` có `pi` manifest trỏ tới:
|
|
|
52
53
|
Do đó team có thể:
|
|
53
54
|
|
|
54
55
|
```bash
|
|
55
|
-
pi install git:github.com/Vt-mmm/piagent@v1.0.
|
|
56
|
+
pi install git:github.com/Vt-mmm/piagent@v1.0.1
|
|
56
57
|
```
|
|
57
58
|
|
|
58
59
|
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.
|
|
@@ -64,12 +65,12 @@ Team nên install global package một lần:
|
|
|
64
65
|
```bash
|
|
65
66
|
node --version # >= 22.19.0
|
|
66
67
|
npm install -g --ignore-scripts @earendil-works/pi-coding-agent@0.81.1
|
|
67
|
-
npm install -g --ignore-scripts
|
|
68
|
+
npm install -g --ignore-scripts @piagent/platform@1.0.1
|
|
68
69
|
piagent-install --stable --dry-run
|
|
69
70
|
piagent-install --stable
|
|
70
71
|
```
|
|
71
72
|
|
|
72
|
-
`pi install git:github.com/Vt-mmm/piagent@v1.0.
|
|
73
|
+
`pi install git:github.com/Vt-mmm/piagent@v1.0.1` 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.0.1`.
|
|
73
74
|
|
|
74
75
|
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).
|
|
75
76
|
|
|
@@ -102,7 +103,7 @@ Nếu muốn commit sẵn `.pi/piagent-profile.json` vào repo hoặc bootstrap
|
|
|
102
103
|
```bash
|
|
103
104
|
bash scripts/setup.sh /path/to/project \
|
|
104
105
|
--profile be-readonly-fe \
|
|
105
|
-
--package-source git:github.com/Vt-mmm/piagent@v1.0.
|
|
106
|
+
--package-source git:github.com/Vt-mmm/piagent@v1.0.1 \
|
|
106
107
|
--mcp-preset core \
|
|
107
108
|
--subagents-preset safe
|
|
108
109
|
```
|
|
@@ -175,7 +176,7 @@ Full platform update phải đồng bộ Pi host, npm-global helper và Pi packa
|
|
|
175
176
|
|
|
176
177
|
```bash
|
|
177
178
|
npm install -g --ignore-scripts @earendil-works/pi-coding-agent@0.81.1
|
|
178
|
-
npm install -g --ignore-scripts
|
|
179
|
+
npm install -g --ignore-scripts @piagent/platform@X.Y.Z
|
|
179
180
|
piagent-install --stable --dry-run
|
|
180
181
|
piagent-install --stable
|
|
181
182
|
piagent-doctor /path/to/project --strict-share
|
|
@@ -186,7 +187,7 @@ Full rollback dùng cùng flow với target trước đó. Lấy exact host vers
|
|
|
186
187
|
```bash
|
|
187
188
|
TARGET_PI_VERSION=x.y.z
|
|
188
189
|
npm install -g --ignore-scripts "@earendil-works/pi-coding-agent@$TARGET_PI_VERSION"
|
|
189
|
-
npm install -g --ignore-scripts
|
|
190
|
+
npm install -g --ignore-scripts @piagent/platform@PREVIOUS
|
|
190
191
|
piagent-install --stable --dry-run
|
|
191
192
|
piagent-install --stable
|
|
192
193
|
piagent-doctor /path/to/project --strict-share
|
|
@@ -18,12 +18,12 @@ Support matrix release hiện tại: macOS Apple Silicon + Bash và Linux x64 +
|
|
|
18
18
|
```bash
|
|
19
19
|
node --version # >= 22.19.0
|
|
20
20
|
npm install -g --ignore-scripts @earendil-works/pi-coding-agent@0.81.1
|
|
21
|
-
npm install -g --ignore-scripts
|
|
21
|
+
npm install -g --ignore-scripts @piagent/platform@1.0.1
|
|
22
22
|
piagent-install --stable --dry-run
|
|
23
23
|
piagent-install --stable
|
|
24
24
|
```
|
|
25
25
|
|
|
26
|
-
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.0.
|
|
26
|
+
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.0.1`. Máy cá nhân có thể dùng `git:github.com/Vt-mmm/piagent` để theo latest.
|
|
27
27
|
|
|
28
28
|
Nếu đang ở source checkout của platform, dùng helper theo channel để preview trước khi đổi:
|
|
29
29
|
|
|
@@ -38,7 +38,7 @@ Full update phải đồng bộ exact Pi host trước, rồi npm-global helper
|
|
|
38
38
|
|
|
39
39
|
```bash
|
|
40
40
|
npm install -g --ignore-scripts @earendil-works/pi-coding-agent@0.81.1
|
|
41
|
-
npm install -g --ignore-scripts
|
|
41
|
+
npm install -g --ignore-scripts @piagent/platform@X.Y.Z
|
|
42
42
|
piagent-install --stable --dry-run
|
|
43
43
|
piagent-install --stable
|
|
44
44
|
piagent-doctor /path/to/project --strict-share
|
|
@@ -99,7 +99,7 @@ install package once
|
|
|
99
99
|
|
|
100
100
|
```bash
|
|
101
101
|
npm install -g --ignore-scripts @earendil-works/pi-coding-agent@0.81.1
|
|
102
|
-
npm install -g --ignore-scripts
|
|
102
|
+
npm install -g --ignore-scripts @piagent/platform@1.0.1
|
|
103
103
|
piagent-install --stable --dry-run
|
|
104
104
|
piagent-install --stable
|
|
105
105
|
```
|
|
@@ -269,7 +269,7 @@ Không phải daily default. Dùng khi muốn tạo sẵn `.pi` files cho projec
|
|
|
269
269
|
bash /path/to/piagent/scripts/setup.sh /path/to/project \
|
|
270
270
|
--project-only \
|
|
271
271
|
--profile auto \
|
|
272
|
-
--package-source git:github.com/Vt-mmm/piagent@v1.0.
|
|
272
|
+
--package-source git:github.com/Vt-mmm/piagent@v1.0.1 \
|
|
273
273
|
--mcp-preset core \
|
|
274
274
|
--subagents-preset safe
|
|
275
275
|
```
|
|
@@ -842,10 +842,10 @@ Watchdog là optional adversarial reviewer ở cuối turn, không bật mặc
|
|
|
842
842
|
|
|
843
843
|
| Command | Dùng để |
|
|
844
844
|
|---|---|
|
|
845
|
-
| `npm install -g --ignore-scripts
|
|
846
|
-
| `pi install git:github.com/Vt-mmm/piagent@v1.0.
|
|
845
|
+
| `npm install -g --ignore-scripts @piagent/platform@1.0.1` | Cài terminal helper `piagent-*` từ release tag hiện tại. |
|
|
846
|
+
| `pi install git:github.com/Vt-mmm/piagent@v1.0.1` | Install pinned release cho reproducible team setup. |
|
|
847
847
|
| `pi install git:github.com/Vt-mmm/piagent` | Install latest platform package cho máy cá nhân/sandbox. |
|
|
848
|
-
| Cài exact Pi host của release, rồi `npm install -g --ignore-scripts
|
|
848
|
+
| 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. v1.0.1 yêu cầu Pi `0.81.1`. |
|
|
849
849
|
| 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. |
|
|
850
850
|
| `piagent-install --stable --dry-run` | Preview Pi package matching với helper hiện tại; stable resolve tag → commit SHA. |
|
|
851
851
|
| `piagent-install --stable` | Apply Pi package matching với helper hiện tại bằng resolved commit SHA. |
|
|
@@ -936,7 +936,7 @@ Mở lại Pi session sau khi install.
|
|
|
936
936
|
Cài lại terminal helper đúng release rồi kiểm tra `PATH`:
|
|
937
937
|
|
|
938
938
|
```bash
|
|
939
|
-
npm install -g --ignore-scripts
|
|
939
|
+
npm install -g --ignore-scripts @piagent/platform@1.0.1
|
|
940
940
|
command -v piagent-install
|
|
941
941
|
```
|
|
942
942
|
|
|
@@ -42,7 +42,7 @@ pi install /path/to/piagent
|
|
|
42
42
|
|
|
43
43
|
- `0.1.x`: local/internal pilot.
|
|
44
44
|
- `0.2.x`: có guard ổn định và docs team.
|
|
45
|
-
- `1.0.
|
|
45
|
+
- `1.0.1`: đủ security review, MCP registry, adapter schema versioned.
|
|
46
46
|
|
|
47
47
|
## Không publish
|
|
48
48
|
|
|
@@ -31,17 +31,17 @@ Node.js phải từ `22.19.0` trở lên và Pi Coding Agent phải là `0.81.1`
|
|
|
31
31
|
```bash
|
|
32
32
|
node --version # >= 22.19.0
|
|
33
33
|
npm install -g --ignore-scripts @earendil-works/pi-coding-agent@0.81.1
|
|
34
|
-
npm install -g --ignore-scripts
|
|
34
|
+
npm install -g --ignore-scripts @piagent/platform@1.0.1
|
|
35
35
|
piagent-install --stable --dry-run
|
|
36
36
|
piagent-install --stable
|
|
37
37
|
```
|
|
38
38
|
|
|
39
|
-
Lệnh trên cài Pi CLI, cài terminal command `piagent-*`, rồi install Pi Agent Platform bằng stable release đã resolve tag thành commit SHA. Trong output installer, `currentRelease` là version của terminal helper đang chạy. `v1.0.
|
|
39
|
+
Lệnh trên cài Pi CLI, cài terminal command `piagent-*`, rồi install Pi Agent Platform bằng stable release đã resolve tag thành commit SHA. Trong output installer, `currentRelease` là version của terminal helper đang chạy. `v1.0.1` là release hiện tại của docs này.
|
|
40
40
|
|
|
41
41
|
Nếu chỉ cần cài package vào Pi và không cần terminal command helper:
|
|
42
42
|
|
|
43
43
|
```bash
|
|
44
|
-
pi install git:github.com/Vt-mmm/piagent@v1.0.
|
|
44
|
+
pi install git:github.com/Vt-mmm/piagent@v1.0.1
|
|
45
45
|
```
|
|
46
46
|
|
|
47
47
|
Nếu đang ở source checkout của platform, có thể preview và áp stable bằng helper:
|
|
@@ -57,7 +57,7 @@ Khi update toàn bộ platform, cập nhật exact Pi host trước rồi dùng
|
|
|
57
57
|
|
|
58
58
|
```bash
|
|
59
59
|
npm install -g --ignore-scripts @earendil-works/pi-coding-agent@0.81.1
|
|
60
|
-
npm install -g --ignore-scripts
|
|
60
|
+
npm install -g --ignore-scripts @piagent/platform@X.Y.Z
|
|
61
61
|
piagent-install --stable --dry-run
|
|
62
62
|
piagent-install --stable
|
|
63
63
|
```
|
|
@@ -218,7 +218,7 @@ Nếu chưa có profile/tech stack, dùng select-style flow để tránh agent t
|
|
|
218
218
|
bash /path/to/piagent/scripts/setup.sh /path/to/project \
|
|
219
219
|
--project-only \
|
|
220
220
|
--profile auto \
|
|
221
|
-
--package-source git:github.com/Vt-mmm/piagent@v1.0.
|
|
221
|
+
--package-source git:github.com/Vt-mmm/piagent@v1.0.1 \
|
|
222
222
|
--mcp-preset core \
|
|
223
223
|
--subagents-preset safe
|
|
224
224
|
```
|
|
@@ -241,7 +241,7 @@ Script bash chỉ dùng khi muốn preseed config vào repo:
|
|
|
241
241
|
```bash
|
|
242
242
|
bash /path/to/piagent/scripts/setup.sh /path/to/project \
|
|
243
243
|
--profile be-readonly-fe \
|
|
244
|
-
--package-source git:github.com/Vt-mmm/piagent@v1.0.
|
|
244
|
+
--package-source git:github.com/Vt-mmm/piagent@v1.0.1 \
|
|
245
245
|
--mcp-preset core \
|
|
246
246
|
--subagents-preset safe
|
|
247
247
|
```
|
|
@@ -10,7 +10,7 @@ This file is the canonical install, update, rollback, and release checklist. Oth
|
|
|
10
10
|
|
|
11
11
|
All supported environments require Node.js `>=22.19.0` and Pi Coding Agent `0.81.1`. The Pi host is installed as a Node CLI; Pi Agent Platform still defines its own release matrix because the terminal helpers and shell policy rely on Bash/POSIX behavior.
|
|
12
12
|
|
|
13
|
-
| Surface | Status for v1.0.
|
|
13
|
+
| Surface | Status for v1.0.1 | Rollout guidance |
|
|
14
14
|
|---|---|---|
|
|
15
15
|
| macOS Apple Silicon (`darwin/arm64`) + Bash | Verified for this release. | Safe default for team rollout after normal project smoke tests. |
|
|
16
16
|
| Linux x64 + Bash | Verified in GitHub Actions. | Safe default for CI/server usage after normal project smoke tests. |
|
|
@@ -24,7 +24,7 @@ All supported environments require Node.js `>=22.19.0` and Pi Coding Agent `0.81
|
|
|
24
24
|
| Component | Installed by | Provides |
|
|
25
25
|
|---|---|---|
|
|
26
26
|
| Pi host runtime | `npm install -g --ignore-scripts @earendil-works/pi-coding-agent@<exact-version>` | The compatible `pi` executable. |
|
|
27
|
-
| Terminal helper | `npm install -g --ignore-scripts
|
|
27
|
+
| Terminal helper | `npm install -g --ignore-scripts @piagent/platform@X.Y.Z` | `piagent-*` commands on `PATH`. |
|
|
28
28
|
| Pi package | `piagent-install`, or `pi install ...` | Extensions, prompts, skills, and subagents loaded by Pi. |
|
|
29
29
|
|
|
30
30
|
These three components are versioned independently. A full install, update, or rollback must use the exact Pi host declared by the target release, then install the target terminal helper, then let that helper install its matching Pi package. `piagent-install` changes only the Pi package; it does not replace the Pi host or the npm-global terminal helper currently executing. In installer output, `currentRelease` is the terminal helper package version.
|
|
@@ -33,14 +33,17 @@ These three components are versioned independently. A full install, update, or r
|
|
|
33
33
|
|
|
34
34
|
| Channel | Source shape | Mutability | Use when |
|
|
35
35
|
|---|---|---:|---|
|
|
36
|
-
| `stable` | `git:github.com/Vt-mmm/piagent@<resolved-commit-sha>` from `v1.0.
|
|
36
|
+
| `stable` | `git:github.com/Vt-mmm/piagent@<resolved-commit-sha>` from `v1.0.1` | Fixed after resolution | Default for team rollout. |
|
|
37
37
|
| `exact` | Tag, reviewed commit, or a tag resolved with `--resolve-tag` | Fixed when using a commit SHA | Pi-package-only roll forward, rollback, or reproduction. |
|
|
38
38
|
| `dev` | `git:github.com/Vt-mmm/piagent` | Moving | Personal machine or sandbox only. |
|
|
39
39
|
| `local` | `/path/to/piagent` | Local workspace | Platform development and dry-run validation. |
|
|
40
|
-
| `
|
|
40
|
+
| `npm` | `npm:@piagent/platform@x.y.z` | Fixed | Registry distribution. Use when the machine has no Git access to this repository. |
|
|
41
|
+
| `enterprise-npm` | `npm:@your-scope/platform@x.y.z` | Fixed | Private registry distribution when a fork is published under another scope. |
|
|
41
42
|
|
|
42
43
|
`--stable` reads the helper package version from its own `package.json`, resolves that release tag through GitHub, and installs the resulting commit SHA. If the tag cannot be resolved, install fails closed. Release CI additionally sets `PIAGENT_EXPECTED_RELEASE_COMMIT`; the installer then rejects a tag that resolves anywhere except the commit being verified.
|
|
43
44
|
|
|
45
|
+
The terminal helper installs from the registry while `stable` still resolves the Pi package to a commit SHA. That difference is deliberate. The helper is a published tarball whose provenance attestation is what ties it back to a commit, and npm verifies that. The Pi package instead relies on tag-to-SHA resolution checked against `PIAGENT_EXPECTED_RELEASE_COMMIT`, which is a separate chain that a registry version range cannot express. Pointing `stable` at an npm version would drop that check rather than replace it, so the `npm` channel exists for machines without Git access to this repository, not as the default.
|
|
46
|
+
|
|
44
47
|
Exactly one CLI package selector is accepted: `--package-source`, `--channel`, `--stable`, `--dev`, `--local`, `--version`, or `--tag`. The first CLI selector may replace environment defaults; a second CLI selector is rejected before any install command is printed or executed.
|
|
45
48
|
|
|
46
49
|
## First install — full platform
|
|
@@ -50,7 +53,7 @@ Use this flow when the team needs both terminal commands and the Pi package:
|
|
|
50
53
|
```bash
|
|
51
54
|
node --version # >= 22.19.0
|
|
52
55
|
npm install -g --ignore-scripts @earendil-works/pi-coding-agent@0.81.1
|
|
53
|
-
npm install -g --ignore-scripts
|
|
56
|
+
npm install -g --ignore-scripts @piagent/platform@1.0.1
|
|
54
57
|
piagent-install --stable --dry-run
|
|
55
58
|
piagent-install --stable
|
|
56
59
|
```
|
|
@@ -58,8 +61,8 @@ piagent-install --stable
|
|
|
58
61
|
The stable preview and apply output includes:
|
|
59
62
|
|
|
60
63
|
```text
|
|
61
|
-
currentRelease: v1.0.
|
|
62
|
-
tag: v1.0.
|
|
64
|
+
currentRelease: v1.0.1 (helper package version)
|
|
65
|
+
tag: v1.0.1
|
|
63
66
|
resolvedCommit: <40-char-sha>
|
|
64
67
|
source: git:github.com/Vt-mmm/piagent@<40-char-sha>
|
|
65
68
|
```
|
|
@@ -76,7 +79,7 @@ bash scripts/install-global.sh --stable
|
|
|
76
79
|
Use this only when terminal commands are not needed:
|
|
77
80
|
|
|
78
81
|
```bash
|
|
79
|
-
pi install git:github.com/Vt-mmm/piagent@v1.0.
|
|
82
|
+
pi install git:github.com/Vt-mmm/piagent@v1.0.1
|
|
80
83
|
```
|
|
81
84
|
|
|
82
85
|
Direct `pi install` does not create `piagent-*` commands on `PATH`.
|
|
@@ -87,7 +90,7 @@ Update the exact supported Pi host first, then the npm-global helper, then let t
|
|
|
87
90
|
|
|
88
91
|
```bash
|
|
89
92
|
npm install -g --ignore-scripts @earendil-works/pi-coding-agent@0.81.1
|
|
90
|
-
npm install -g --ignore-scripts
|
|
93
|
+
npm install -g --ignore-scripts @piagent/platform@X.Y.Z
|
|
91
94
|
piagent-install --stable --dry-run
|
|
92
95
|
piagent-install --stable
|
|
93
96
|
piagent-doctor /path/to/project --strict-share
|
|
@@ -120,7 +123,7 @@ Rollback the host, helper, and Pi package together. Determine the exact host ver
|
|
|
120
123
|
```bash
|
|
121
124
|
TARGET_PI_VERSION=x.y.z # replace from vPREVIOUS release policy before execution
|
|
122
125
|
npm install -g --ignore-scripts "@earendil-works/pi-coding-agent@$TARGET_PI_VERSION"
|
|
123
|
-
npm install -g --ignore-scripts
|
|
126
|
+
npm install -g --ignore-scripts @piagent/platform@PREVIOUS
|
|
124
127
|
piagent-install --stable --dry-run
|
|
125
128
|
piagent-install --stable
|
|
126
129
|
piagent-doctor /path/to/project --strict-share
|
|
@@ -154,6 +157,24 @@ Before broad team access, a repository administrator must enable these external
|
|
|
154
157
|
|
|
155
158
|
Verify these settings in GitHub **Settings → Rules** and **Settings → Code security and analysis**. Treat any missing control as an explicit rollout blocker, not as a passing source-code gate. Repository rules also close the remaining mutability risk of bootstrap-by-tag; tag-to-SHA resolution inside `piagent-install` alone cannot protect the helper package before it starts.
|
|
156
159
|
|
|
160
|
+
### Required npm publishing controls
|
|
161
|
+
|
|
162
|
+
The publish workflow authenticates with the `NPM_TOKEN` repository secret. That token needs three things, and read-and-write access alone is not enough:
|
|
163
|
+
|
|
164
|
+
1. Read and write access to the `@piagent` scope.
|
|
165
|
+
2. **Bypass two-factor authentication** enabled on the token. When the npm account requires 2FA for publishing, the registry rejects the upload with `E403 ... two-factor authentication or granular access token with bypass 2fa enabled is required`. CI cannot answer a 2FA prompt, so this is the only way a workflow can publish.
|
|
166
|
+
3. An expiry date the maintainer tracks. An expired token fails as an authentication error that does not say the token expired.
|
|
167
|
+
|
|
168
|
+
The workflow reaches the registry only at its final step, so every gate can pass and the release can still stop there. A failed upload publishes nothing, but the provenance attestation is signed and written to the public transparency log first, so a failed attempt still leaves a public record of the repository, commit, and workflow.
|
|
169
|
+
|
|
170
|
+
Fix the token, then re-run the failed job on the same tag so the publish step still sees a tag ref:
|
|
171
|
+
|
|
172
|
+
```bash
|
|
173
|
+
gh run rerun <run-id> --failed
|
|
174
|
+
```
|
|
175
|
+
|
|
176
|
+
Re-running the workflow from a branch instead skips publishing, because the publish step requires a tag ref.
|
|
177
|
+
|
|
157
178
|
1. Update package versions, `CHANGELOG.md`, install examples, and docs metadata on a release-candidate branch.
|
|
158
179
|
2. Verify the exact release-candidate source:
|
|
159
180
|
|
|
@@ -21,7 +21,7 @@ This document covers the packaged guard, project profiles, capability locks, ins
|
|
|
21
21
|
- The operator, operating-system account, Pi host, and explicitly trusted project repository are trusted to execute code.
|
|
22
22
|
- Project-local Pi resources are loaded only after Pi project trust or an explicit operator override.
|
|
23
23
|
- A human remains available to approve destructive and external-provider actions.
|
|
24
|
-
- Supported release verification covers macOS Apple Silicon + Bash, Linux x64 + Bash, Node.js `>=22.19.0`, and the exact Pi host version declared by the release. macOS Intel + Bash and Linux ARM64 + Bash are supported targets that need local smoke verification before broad rollout. Native Windows is not a team-rollout target for v1.0.
|
|
24
|
+
- Supported release verification covers macOS Apple Silicon + Bash, Linux x64 + Bash, Node.js `>=22.19.0`, and the exact Pi host version declared by the release. macOS Intel + Bash and Linux ARM64 + Bash are supported targets that need local smoke verification before broad rollout. Native Windows is not a team-rollout target for v1.0.1, and WSL2 is experimental/unverified.
|
|
25
25
|
- Registry, GitHub, model-provider, MCP-provider, and Vercel controls are external dependencies. Their account security and platform guarantees are not replaced by this repository.
|
|
26
26
|
|
|
27
27
|
## Threat actors and failure modes
|
package/docs/team-onboarding.md
CHANGED
|
@@ -9,7 +9,7 @@ Một thành viên mới không cần biết local path của maintainer. Luồn
|
|
|
9
9
|
```bash
|
|
10
10
|
node --version # >= 22.19.0
|
|
11
11
|
npm install -g --ignore-scripts @earendil-works/pi-coding-agent@0.81.1
|
|
12
|
-
npm install -g --ignore-scripts
|
|
12
|
+
npm install -g --ignore-scripts @piagent/platform@1.0.1
|
|
13
13
|
piagent-install --stable
|
|
14
14
|
cd /path/to/project
|
|
15
15
|
pi
|
|
@@ -41,7 +41,7 @@ Mặc định team dùng stable helper:
|
|
|
41
41
|
```bash
|
|
42
42
|
node --version # >= 22.19.0
|
|
43
43
|
npm install -g --ignore-scripts @earendil-works/pi-coding-agent@0.81.1
|
|
44
|
-
npm install -g --ignore-scripts
|
|
44
|
+
npm install -g --ignore-scripts @piagent/platform@1.0.1
|
|
45
45
|
piagent-install --stable --dry-run
|
|
46
46
|
piagent-install --stable
|
|
47
47
|
```
|
|
@@ -66,7 +66,7 @@ Full update phải đồng bộ exact Pi host trước, sau đó terminal helper
|
|
|
66
66
|
|
|
67
67
|
```bash
|
|
68
68
|
npm install -g --ignore-scripts @earendil-works/pi-coding-agent@0.81.1
|
|
69
|
-
npm install -g --ignore-scripts
|
|
69
|
+
npm install -g --ignore-scripts @piagent/platform@X.Y.Z
|
|
70
70
|
piagent-install --stable --dry-run
|
|
71
71
|
piagent-install --stable
|
|
72
72
|
piagent-doctor /path/to/project --strict-share
|
package/docs-site/index.html
CHANGED
|
@@ -798,7 +798,7 @@
|
|
|
798
798
|
<span>Pi Agent Platform</span>
|
|
799
799
|
</a>
|
|
800
800
|
<div class="top-actions">
|
|
801
|
-
<span class="pill"><span class="pill-dot"></span>v1.0.
|
|
801
|
+
<span class="pill"><span class="pill-dot"></span>v1.0.1 docs</span>
|
|
802
802
|
<a class="button social" href="https://github.com/Vt-mmm/piagent" target="_blank" rel="noopener noreferrer" aria-label="Mở GitHub repository">
|
|
803
803
|
<svg viewBox="0 0 24 24" fill="none" aria-hidden="true">
|
|
804
804
|
<path d="M7 17 17 7M9 7h8v8" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round" />
|
|
@@ -934,7 +934,7 @@
|
|
|
934
934
|
<article class="step">
|
|
935
935
|
<div>
|
|
936
936
|
<h3>Chuẩn bị runtime</h3>
|
|
937
|
-
<p>Dùng Node.js 22.19.0 trở lên và Pi Coding Agent <span class="inline-code">0.81.1</span>. Pi Agent Platform <span class="inline-code">v1.0.
|
|
937
|
+
<p>Dùng Node.js 22.19.0 trở lên và Pi Coding Agent <span class="inline-code">0.81.1</span>. Pi Agent Platform <span class="inline-code">v1.0.1</span> đang pin compatibility với runtime này và công bố support matrix theo OS/CPU riêng cho platform helper.</p>
|
|
938
938
|
<div class="table-wrap compact-table">
|
|
939
939
|
<table>
|
|
940
940
|
<thead>
|
|
@@ -976,14 +976,14 @@ pi --version</code></pre>
|
|
|
976
976
|
<h3>Cài Pi Agent Platform có pin</h3>
|
|
977
977
|
<p>Team nên cài npm-global helper trước, rồi dùng helper đó resolve stable tag thành commit SHA và cài Pi package matching. Trong output, <span class="inline-code">currentRelease</span> là version của terminal helper đang chạy. Direct Pi install chỉ dùng khi không cần command <span class="inline-code">piagent-*</span>.</p>
|
|
978
978
|
<div class="command-card">
|
|
979
|
-
<header><span>Stable helper install</span><button class="clip-btn" data-clip="npm install -g --ignore-scripts
|
|
980
|
-
<pre><code>npm install -g --ignore-scripts
|
|
979
|
+
<header><span>Stable helper install</span><button class="clip-btn" data-clip="npm install -g --ignore-scripts @piagent/platform@1.0.1 piagent-install --stable --dry-run piagent-install --stable">Lấy lệnh</button></header>
|
|
980
|
+
<pre><code>npm install -g --ignore-scripts @piagent/platform@1.0.1
|
|
981
981
|
piagent-install --stable --dry-run
|
|
982
982
|
piagent-install --stable</code></pre>
|
|
983
983
|
</div>
|
|
984
984
|
<div class="command-card">
|
|
985
|
-
<header><span>Direct Pi package only</span><button class="clip-btn" data-clip="pi install git:github.com/Vt-mmm/piagent@v1.0.
|
|
986
|
-
<pre><code>pi install git:github.com/Vt-mmm/piagent@v1.0.
|
|
985
|
+
<header><span>Direct Pi package only</span><button class="clip-btn" data-clip="pi install git:github.com/Vt-mmm/piagent@v1.0.1">Lấy lệnh</button></header>
|
|
986
|
+
<pre><code>pi install git:github.com/Vt-mmm/piagent@v1.0.1</code></pre>
|
|
987
987
|
</div>
|
|
988
988
|
</div>
|
|
989
989
|
</article>
|
|
@@ -993,9 +993,9 @@ piagent-install --stable</code></pre>
|
|
|
993
993
|
<h3>Update hoặc rollback đúng cả ba thành phần</h3>
|
|
994
994
|
<p>Full update/rollback phải dùng exact Pi host của release target, đổi npm-global helper, rồi apply stable Pi package từ chính helper đó. Lệnh <span class="inline-code">--version ... --resolve-tag</span> chỉ đổi Pi package và giữ host/helper hiện tại.</p>
|
|
995
995
|
<div class="command-card">
|
|
996
|
-
<header><span>Full platform target</span><button class="clip-btn" data-clip="npm install -g --ignore-scripts @earendil-works/pi-coding-agent@0.81.1 npm install -g --ignore-scripts
|
|
996
|
+
<header><span>Full platform target</span><button class="clip-btn" data-clip="npm install -g --ignore-scripts @earendil-works/pi-coding-agent@0.81.1 npm install -g --ignore-scripts @piagent/platform@X.Y.Z piagent-install --stable --dry-run piagent-install --stable">Lấy lệnh</button></header>
|
|
997
997
|
<pre><code>npm install -g --ignore-scripts @earendil-works/pi-coding-agent@0.81.1
|
|
998
|
-
npm install -g --ignore-scripts
|
|
998
|
+
npm install -g --ignore-scripts @piagent/platform@X.Y.Z
|
|
999
999
|
piagent-install --stable --dry-run
|
|
1000
1000
|
piagent-install --stable</code></pre>
|
|
1001
1001
|
</div>
|
|
@@ -1474,9 +1474,9 @@ npm run typecheck</code></pre>
|
|
|
1474
1474
|
<pre><code>piagent-setup --mcp-preset core --subagents-preset safe</code></pre>
|
|
1475
1475
|
</article>
|
|
1476
1476
|
<article class="command-card">
|
|
1477
|
-
<header><span>Full update</span><button class="clip-btn" data-clip="npm install -g --ignore-scripts @earendil-works/pi-coding-agent@0.81.1 npm install -g --ignore-scripts
|
|
1477
|
+
<header><span>Full update</span><button class="clip-btn" data-clip="npm install -g --ignore-scripts @earendil-works/pi-coding-agent@0.81.1 npm install -g --ignore-scripts @piagent/platform@X.Y.Z piagent-install --stable --dry-run piagent-install --stable">Lấy lệnh</button></header>
|
|
1478
1478
|
<pre><code>npm install -g --ignore-scripts @earendil-works/pi-coding-agent@0.81.1
|
|
1479
|
-
npm install -g --ignore-scripts
|
|
1479
|
+
npm install -g --ignore-scripts @piagent/platform@X.Y.Z
|
|
1480
1480
|
piagent-install --stable --dry-run
|
|
1481
1481
|
piagent-install --stable</code></pre>
|
|
1482
1482
|
</article>
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@piagent/platform",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.1",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"publishConfig": {
|
|
6
6
|
"access": "public",
|
|
@@ -11,7 +11,7 @@
|
|
|
11
11
|
"homepage": "https://piagent.io.vn",
|
|
12
12
|
"repository": {
|
|
13
13
|
"type": "git",
|
|
14
|
-
"url": "https://github.com/Vt-mmm/piagent.git"
|
|
14
|
+
"url": "git+https://github.com/Vt-mmm/piagent.git"
|
|
15
15
|
},
|
|
16
16
|
"keywords": [
|
|
17
17
|
"pi-package",
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@piagent/core",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.1",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"private": true,
|
|
6
6
|
"license": "MIT",
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
"homepage": "https://piagent.io.vn",
|
|
9
9
|
"repository": {
|
|
10
10
|
"type": "git",
|
|
11
|
-
"url": "https://github.com/Vt-mmm/piagent.git",
|
|
11
|
+
"url": "git+https://github.com/Vt-mmm/piagent.git",
|
|
12
12
|
"directory": "packages/piagent-core"
|
|
13
13
|
},
|
|
14
14
|
"keywords": [
|
|
@@ -15,7 +15,7 @@ Package source examples:
|
|
|
15
15
|
# Installs the stable tag after resolving it to a commit SHA.
|
|
16
16
|
|
|
17
17
|
# Pin a specific release:
|
|
18
|
-
scripts/install-global.sh --version v1.0.
|
|
18
|
+
scripts/install-global.sh --version v1.0.1 --resolve-tag
|
|
19
19
|
|
|
20
20
|
# Preview the planned install/update without changing user config:
|
|
21
21
|
scripts/install-global.sh --stable --dry-run
|
|
@@ -123,7 +123,7 @@ detect_runtime_surface() {
|
|
|
123
123
|
printf 'native-windows/%s (not release-gated; terminal helpers require Bash semantics)' "$arch_name"
|
|
124
124
|
;;
|
|
125
125
|
*)
|
|
126
|
-
printf '%s/%s (outside v1.0.
|
|
126
|
+
printf '%s/%s (outside v1.0.1 release matrix)' "$os_name" "$arch_name"
|
|
127
127
|
;;
|
|
128
128
|
esac
|
|
129
129
|
}
|
|
@@ -131,7 +131,7 @@ detect_runtime_surface() {
|
|
|
131
131
|
warn_runtime_surface_if_needed() {
|
|
132
132
|
local surface="$1"
|
|
133
133
|
case "$surface" in
|
|
134
|
-
*"supported target"*|*"experimental"*|*"not release-gated"*|*"outside v1.0.
|
|
134
|
+
*"supported target"*|*"experimental"*|*"not release-gated"*|*"outside v1.0.1 release matrix"*)
|
|
135
135
|
echo "WARN: runtime surface is $surface." >&2
|
|
136
136
|
echo "WARN: For team rollout, run piagent-doctor plus the project smoke/verify suite on this machine before relying on it." >&2
|
|
137
137
|
;;
|
package/scripts/team-doctor.sh
CHANGED
|
@@ -137,7 +137,7 @@ function runtimeMatrixStatus() {
|
|
|
137
137
|
surface: `${platform}/${arch}`,
|
|
138
138
|
status: "outside-release-matrix",
|
|
139
139
|
teamRolloutReady: false,
|
|
140
|
-
note: "This runtime is outside the documented v1.0.
|
|
140
|
+
note: "This runtime is outside the documented v1.0.1 support matrix."
|
|
141
141
|
};
|
|
142
142
|
}
|
|
143
143
|
|
|
@@ -55,7 +55,11 @@ if (rootPackage.name !== "@piagent/platform") fail("root package must be named @
|
|
|
55
55
|
if (rootPackage.private) fail("root package must not be private; publishing is intended");
|
|
56
56
|
if (rootPackage.publishConfig?.access !== "public") fail("scoped package must declare publishConfig.access=public");
|
|
57
57
|
if (rootPackage.publishConfig?.provenance !== true) fail("root package must publish with provenance");
|
|
58
|
-
|
|
58
|
+
// The git+ prefix is npm's own normalization. Publishing without it succeeds
|
|
59
|
+
// but rewrites the field, which leaves the manifest in the repository saying
|
|
60
|
+
// something different from the manifest on the registry.
|
|
61
|
+
if (rootPackage.repository?.url !== "git+https://github.com/Vt-mmm/piagent.git") fail("root package repository URL is not canonical");
|
|
62
|
+
if (corePackage.repository?.url !== rootPackage.repository.url) fail("core package repository URL does not match the root package");
|
|
59
63
|
if (rootPackage.dependencies && Object.keys(rootPackage.dependencies).length > 0) fail("root package has unexpected runtime dependencies");
|
|
60
64
|
if (packageLock.name !== rootPackage.name || packageLock.packages?.[""]?.name !== rootPackage.name) fail("package-lock root identity does not match package.json");
|
|
61
65
|
if (!/^\d+\.\d+\.\d+(?:-[0-9A-Za-z.-]+)?$/.test(version ?? "")) fail("package.json version is not a supported release version");
|