@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 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 github:Vt-mmm/piagent#v1.0.0
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.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 github:Vt-mmm/piagent#vX.Y.Z
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.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.0` or a reviewed commit.
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 github:Vt-mmm/piagent#v1.0.0` | Cài terminal helper `piagent-*` từ release tag hiện tại. |
384
- | `pi install git:github.com/Vt-mmm/piagent@v1.0.0` | Cài pinned release khi cần reproducible team setup. |
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 github:Vt-mmm/piagent#vX.Y.Z` và `piagent-install --stable` | Full update: đồng bộ host, npm-global helper và Pi package. v1.0.0 yêu cầu Pi `0.81.1`. |
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.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
- | Enterprise npm | `npm:@your-scope/platform@x.y.z` |
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.0` | Install the Pi package matching the helper. |
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.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 github:Vt-mmm/piagent#v1.0.0
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.0` 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 github:Vt-mmm/piagent#v1.0.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.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 github:Vt-mmm/piagent#vX.Y.Z
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 github:Vt-mmm/piagent#vPREVIOUS
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 github:Vt-mmm/piagent#v1.0.0
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.0`. Máy cá nhân có thể dùng `git:github.com/Vt-mmm/piagent` để theo latest.
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 github:Vt-mmm/piagent#vX.Y.Z
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 github:Vt-mmm/piagent#v1.0.0
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.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 github:Vt-mmm/piagent#v1.0.0` | Cài terminal helper `piagent-*` từ release tag hiện tại. |
846
- | `pi install git:github.com/Vt-mmm/piagent@v1.0.0` | Install pinned release cho reproducible team setup. |
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 github:Vt-mmm/piagent#vX.Y.Z` và `piagent-install --stable` | Full update: đồng bộ host, terminal helper và Pi package. v1.0.0 yêu cầu Pi `0.81.1`. |
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 github:Vt-mmm/piagent#v1.0.0
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.0`: đủ security review, MCP registry, adapter schema versioned.
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 github:Vt-mmm/piagent#v1.0.0
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.0` là release hiện tại của docs này.
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.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 github:Vt-mmm/piagent#vX.Y.Z
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.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.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.0 | Rollout guidance |
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 github:Vt-mmm/piagent#vX.Y.Z` | `piagent-*` commands on `PATH`. |
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.0` | Fixed after resolution | Default for team rollout. |
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
- | `enterprise-npm` | `npm:@your-scope/platform@x.y.z` | Fixed | Private registry distribution when available. |
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 github:Vt-mmm/piagent#v1.0.0
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.0 (helper package version)
62
- tag: v1.0.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.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 github:Vt-mmm/piagent#vX.Y.Z
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 github:Vt-mmm/piagent#vPREVIOUS
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.0, and WSL2 is experimental/unverified.
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
@@ -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 github:Vt-mmm/piagent#v1.0.0
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 github:Vt-mmm/piagent#v1.0.0
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 github:Vt-mmm/piagent#vX.Y.Z
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
@@ -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.0 docs</span>
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.0</span> đang pin compatibility với runtime này và công bố support matrix theo OS/CPU riêng cho platform helper.</p>
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 github:Vt-mmm/piagent#v1.0.0&#10;piagent-install --stable --dry-run&#10;piagent-install --stable">Lấy lệnh</button></header>
980
- <pre><code>npm install -g --ignore-scripts github:Vt-mmm/piagent#v1.0.0
979
+ <header><span>Stable helper install</span><button class="clip-btn" data-clip="npm install -g --ignore-scripts @piagent/platform@1.0.1&#10;piagent-install --stable --dry-run&#10;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.0">Lấy lệnh</button></header>
986
- <pre><code>pi install git:github.com/Vt-mmm/piagent@v1.0.0</code></pre>
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&#10;npm install -g --ignore-scripts github:Vt-mmm/piagent#vX.Y.Z&#10;piagent-install --stable --dry-run&#10;piagent-install --stable">Lấy lệnh</button></header>
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&#10;npm install -g --ignore-scripts @piagent/platform@X.Y.Z&#10;piagent-install --stable --dry-run&#10;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 github:Vt-mmm/piagent#vX.Y.Z
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&#10;npm install -g --ignore-scripts github:Vt-mmm/piagent#vX.Y.Z&#10;piagent-install --stable --dry-run&#10;piagent-install --stable">Lấy lệnh</button></header>
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&#10;npm install -g --ignore-scripts @piagent/platform@X.Y.Z&#10;piagent-install --stable --dry-run&#10;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 github:Vt-mmm/piagent#vX.Y.Z
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.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.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.0 --resolve-tag
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.0 release matrix)' "$os_name" "$arch_name"
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.0 release matrix"*)
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
  ;;
@@ -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.0 support matrix."
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
- if (rootPackage.repository?.url !== "https://github.com/Vt-mmm/piagent.git") fail("root package repository URL is not canonical");
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");