@piagent/platform 1.1.9 → 1.2.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.
Files changed (81) hide show
  1. package/CHANGELOG.md +175 -1
  2. package/README.md +2 -2
  3. package/docs/command-reference-vietnamese.md +19 -5
  4. package/docs/distribution-standard.md +7 -7
  5. package/docs/mcp-and-tools.md +154 -2
  6. package/docs/model-options.md +10 -8
  7. package/docs/operator-manual-vietnamese.md +25 -13
  8. package/docs/publishing-for-teams.md +2 -0
  9. package/docs/quickstart-vietnamese.md +2 -2
  10. package/docs/release-install-policy.md +6 -6
  11. package/docs/security-threat-model.md +4 -3
  12. package/docs/team-onboarding.md +4 -4
  13. package/docs/usage-observability.md +29 -0
  14. package/docs/vercel-docs-site.md +34 -4
  15. package/docs-site/architecture.html +152 -0
  16. package/docs-site/assets/docs.css +1001 -0
  17. package/docs-site/assets/docs.js +84 -0
  18. package/docs-site/commands.html +203 -0
  19. package/docs-site/content/architecture.html +29 -0
  20. package/docs-site/content/commands.html +80 -0
  21. package/docs-site/content/index.html +80 -0
  22. package/docs-site/content/mcp-approval.html +133 -0
  23. package/docs-site/content/mcp-auth.html +76 -0
  24. package/docs-site/content/mcp-servers.html +111 -0
  25. package/docs-site/content/mcp.html +120 -0
  26. package/docs-site/content/permissions.html +54 -0
  27. package/docs-site/content/profiles.html +68 -0
  28. package/docs-site/content/quickstart.html +144 -0
  29. package/docs-site/content/runtime.html +45 -0
  30. package/docs-site/content/scope.html +71 -0
  31. package/docs-site/content/security.html +51 -0
  32. package/docs-site/content/team.html +23 -0
  33. package/docs-site/content/workflows.html +47 -0
  34. package/docs-site/index.html +131 -1534
  35. package/docs-site/mcp-approval.html +256 -0
  36. package/docs-site/mcp-auth.html +199 -0
  37. package/docs-site/mcp-servers.html +234 -0
  38. package/docs-site/mcp.html +243 -0
  39. package/docs-site/permissions.html +177 -0
  40. package/docs-site/profiles.html +191 -0
  41. package/docs-site/quickstart.html +267 -0
  42. package/docs-site/runtime.html +168 -0
  43. package/docs-site/scope.html +194 -0
  44. package/docs-site/security.html +174 -0
  45. package/docs-site/team.html +142 -0
  46. package/docs-site/workflows.html +170 -0
  47. package/package.json +4 -2
  48. package/packages/piagent-core/capabilities/capability-core.js +58 -5
  49. package/packages/piagent-core/capabilities/capability-sources.js +73 -12
  50. package/packages/piagent-core/extensions/document-intake.ts +5 -5
  51. package/packages/piagent-core/extensions/piagent-guard.ts +432 -2
  52. package/packages/piagent-core/extensions/policy-core.js +1586 -98
  53. package/packages/piagent-core/mcp/mcp-approval-store.js +216 -0
  54. package/packages/piagent-core/mcp/mcp-auth-readiness.js +225 -0
  55. package/packages/piagent-core/mcp/mcp-command-actions.js +400 -0
  56. package/packages/piagent-core/mcp/mcp-config-layers.js +466 -0
  57. package/packages/piagent-core/mcp/mcp-import-kinds.js +240 -0
  58. package/packages/piagent-core/mcp/mcp-server-catalog.js +150 -0
  59. package/packages/piagent-core/mcp/mcp-server-entry.js +293 -0
  60. package/packages/piagent-core/mcp/mcp-session-view.js +236 -0
  61. package/packages/piagent-core/mcp/mcp-tool-naming.js +90 -0
  62. package/packages/piagent-core/package.json +7 -3
  63. package/packages/piagent-core/prompts/model-options.md +8 -8
  64. package/scripts/build-docs-site.mjs +421 -0
  65. package/scripts/configure-model-scope.sh +21 -5
  66. package/scripts/configure-subagents.sh +18 -5
  67. package/scripts/init-project.sh +15 -8
  68. package/scripts/install-global.sh +5 -5
  69. package/scripts/mcp-manage.mjs +656 -0
  70. package/scripts/pi-model-catalog.sh +11 -1
  71. package/scripts/pi-session-stats.sh +27 -1
  72. package/scripts/pi-usage-history.mjs +567 -0
  73. package/scripts/piagent-cli.mjs +1 -1
  74. package/scripts/preview-docs-site.mjs +88 -0
  75. package/scripts/quality-benchmark.sh +37 -9
  76. package/scripts/setup.sh +23 -15
  77. package/scripts/team-doctor.sh +18 -2
  78. package/scripts/uninstall-global.sh +10 -4
  79. package/scripts/verify-local.sh +65 -19
  80. package/scripts/verify-release-identity.mjs +37 -2
  81. package/scripts/configure-mcp.sh +0 -349
@@ -0,0 +1,45 @@
1
+ <section class="section">
2
+
3
+ <div class="command-grid">
4
+ <article class="command-card">
5
+ <header><span>Setup global</span><button class="clip-btn" data-clip="piagent-setup --mcp-preset core --subagents-preset safe">Lấy lệnh</button></header>
6
+ <pre><code>piagent-setup --mcp-preset core --subagents-preset safe</code></pre>
7
+ </article>
8
+ <article class="command-card">
9
+ <header><span>Full update</span><button class="clip-btn" data-clip="npm install -g --ignore-scripts @earendil-works/pi-coding-agent@0.82.0&#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>
10
+ <pre><code>npm install -g --ignore-scripts @earendil-works/pi-coding-agent@0.82.0
11
+ npm install -g --ignore-scripts @piagent/platform@X.Y.Z
12
+ piagent-install --stable --dry-run
13
+ piagent-install --stable</code></pre>
14
+ </article>
15
+ <article class="command-card">
16
+ <header><span>Pi package only</span><button class="clip-btn" data-clip="piagent-install --version vX.Y.Z --resolve-tag --dry-run&#10;piagent-install --version vX.Y.Z --resolve-tag">Lấy lệnh</button></header>
17
+ <pre><code>piagent-install --version vX.Y.Z --resolve-tag --dry-run
18
+ piagent-install --version vX.Y.Z --resolve-tag</code></pre>
19
+ </article>
20
+ <article class="command-card">
21
+ <header><span>Init project</span><button class="clip-btn" data-clip="piagent-init /path/to/project">Lấy lệnh</button></header>
22
+ <pre><code>piagent-init /path/to/project</code></pre>
23
+ </article>
24
+ <article class="command-card">
25
+ <header><span>Doctor</span><button class="clip-btn" data-clip="piagent-doctor /path/to/project">Lấy lệnh</button></header>
26
+ <pre><code>piagent-doctor /path/to/project</code></pre>
27
+ </article>
28
+ <article class="command-card">
29
+ <header><span>Trusted run</span><button class="clip-btn" data-clip="piagent-auto --full-access -p &quot;Run the trusted local benchmark suite.&quot;">Lấy lệnh</button></header>
30
+ <pre><code>piagent-auto --read-only -p "Scout payment mapping. Do not edit source."
31
+ piagent-auto --full-access -p "Run the trusted local benchmark suite."</code></pre>
32
+ </article>
33
+ <article class="command-card">
34
+ <header><span>Capabilities</span><button class="clip-btn" data-clip="piagent-capabilities catalog --check&#10;piagent-capabilities doctor --profile .pi/piagent-profile.json">Lấy lệnh</button></header>
35
+ <pre><code>piagent-capabilities catalog --check
36
+ piagent-capabilities doctor --profile .pi/piagent-profile.json</code></pre>
37
+ </article>
38
+ <article class="command-card">
39
+ <header><span>Verification</span><button class="clip-btn" data-clip="npm run verify&#10;npm test&#10;npm run typecheck">Lấy lệnh</button></header>
40
+ <pre><code>npm run verify
41
+ npm test
42
+ npm run typecheck</code></pre>
43
+ </article>
44
+ </div>
45
+ </section>
@@ -0,0 +1,71 @@
1
+ <section class="section">
2
+ <h2 id="khong-phai-agent-moi">Đây không phải một agent mới</h2>
3
+ <p>Platform này không có model riêng, không có runtime riêng, không có vòng lặp agent riêng. Nó chạy như extension của Pi và chỉ thêm đúng một thứ: <strong>một cách vận hành cố định</strong> mà mọi repo trong team dùng lại được.</p>
4
+ <p>Agent coding CLI tổng quát nào cũng đã có sandbox, approval và cơ chế cấu hình theo project. Câu hỏi đáng hỏi không phải "cái nào mạnh hơn" mà là "cái đó cấu hình được, nhưng ai cấu hình, và cấu hình đó có giống nhau giữa 20 repo không".</p>
5
+
6
+ <div class="table-wrap">
7
+ <table>
8
+ <thead>
9
+ <tr>
10
+ <th>Hạng mục</th>
11
+ <th>Agent CLI tổng quát đã có</th>
12
+ <th>Platform này thêm</th>
13
+ </tr>
14
+ </thead>
15
+ <tbody>
16
+ <tr>
17
+ <td>Vai trò</td>
18
+ <td>Coding agent chạy trên local repo, tự chọn tool và tự chạy lệnh.</td>
19
+ <td>Lớp governance cho Pi: policy, profile và workflow vận hành được ghi thành file, không nằm trong prompt.</td>
20
+ </tr>
21
+ <tr>
22
+ <td>Tuỳ biến team</td>
23
+ <td>File hướng dẫn, settings, permission, hooks, skills, MCP — mỗi repo tự khai.</td>
24
+ <td>Adapter profile, base policy, command guard, capability pack, docs và scripts — khai một lần, <span class="inline-code">piagent-init</span> rải sang repo mới.</td>
25
+ </tr>
26
+ <tr>
27
+ <td>Quyền chạy</td>
28
+ <td>Sandbox ở mức OS hoặc process, approval theo lượt, giới hạn thư mục làm việc.</td>
29
+ <td>Ba mode đặt tên sẵn — <span class="inline-code">read-only</span>, <span class="inline-code">workspace-write</span>, <span class="inline-code">trusted-full-access</span> — đổi bằng một command, không sửa file nào.</td>
30
+ </tr>
31
+ <tr>
32
+ <td>Bảo mật secret</td>
33
+ <td>Sandbox, approval và network policy ở lớp dưới tool.</td>
34
+ <td>Policy ở lớp application, chạy sau khi tool được gọi: protected path, shell check, symlink alias, output redaction, integrity lock.</td>
35
+ </tr>
36
+ <tr>
37
+ <td>Điểm mạnh riêng</td>
38
+ <td>Trải nghiệm agent hoàn chỉnh, hệ sinh thái tool rộng.</td>
39
+ <td>Tính lặp lại: mọi repo cùng profile, cùng guard, cùng kỷ luật verify — và khác biệt thì thấy được vì nó nằm trong file.</td>
40
+ </tr>
41
+ </tbody>
42
+ </table>
43
+ </div>
44
+ </section>
45
+
46
+ <section class="section">
47
+ <h2 id="hai-lop-khong-thay-the-nhau">Hai lớp không thay thế nhau</h2>
48
+ <p>Sandbox của host chặn ở mức process: tiến trình không mở được file ngoài phạm vi cho phép. Guard của platform chặn ở mức lời gọi tool: nó đọc được <em>tham số</em> mà agent định dùng, nên biết lệnh đang đọc file nào, đang ghi ở đâu, đang gửi gì ra ngoài.</p>
49
+
50
+ <div class="split">
51
+ <div class="card">
52
+ <h3 id="lop-duoi">Lớp dưới thấy process</h3>
53
+ <p>Biết một tiến trình đang cố ghi ra ngoài workspace. Không biết tiến trình đó là <span class="inline-code">npm test</span> hay là một script vừa được sinh ra trong lượt này.</p>
54
+ </div>
55
+ <div class="card">
56
+ <h3 id="lop-tren">Lớp trên thấy ý định</h3>
57
+ <p>Biết tool nào, tham số nào, capability nào. Đủ để chặn <span class="inline-code">.env</span> theo tên, redact token trong output, và từ chối một MCP server mà repo mang theo.</p>
58
+ </div>
59
+ </div>
60
+
61
+ <div class="callout">
62
+ <strong>Bỏ lớp nào cũng hụt</strong>
63
+ <p>Guard ở lớp application không thay được sandbox: một tiến trình đã chạy rồi thì guard không với tới nữa. Ngược lại sandbox không biết <span class="inline-code">.env</span> khác gì <span class="inline-code">.env.example</span>. Platform này giả định lớp dưới vẫn bật.</p>
64
+ </div>
65
+ </section>
66
+
67
+ <section class="section">
68
+ <h2 id="khi-nao-khong-can">Khi nào không cần</h2>
69
+ <p>Một repo, một người, không secret nào đáng kể, không có ai khác phải làm theo cùng cách — thì cấu hình sẵn của Pi là đủ, và thêm một lớp nữa chỉ tốn thời gian đọc.</p>
70
+ <p>Platform này bắt đầu có lãi khi số repo đủ nhiều để không ai nhớ nổi repo nào đang mở quyền gì, hoặc khi câu "đã verify chưa" cần một câu trả lời giống nhau ở mọi repo.</p>
71
+ </section>
@@ -0,0 +1,51 @@
1
+ <section class="section">
2
+
3
+ <div class="grid cols-2">
4
+ <article class="card">
5
+ <h3 id="protected-paths">Protected paths</h3>
6
+ <p>Chặn đọc/ghi qua controlled tools đối với file như <span class="inline-code">.env</span>, <span class="inline-code">auth.json</span>, local trust files, profile lock và settings nhạy cảm.</p>
7
+ </article>
8
+ <article class="card">
9
+ <h3 id="shell-hardening">Shell hardening</h3>
10
+ <p>Guard dựa vào shell parser và rule cho command được kiểm soát để bắt glob, brace, redirection, bare-word symlink và xargs composition trước khi shell mở rộng runtime.</p>
11
+ </article>
12
+ <article class="card">
13
+ <h3 id="secret-redaction">Secret redaction</h3>
14
+ <p>Tool output text đi qua redactor để che token, provider keys, secret keyword patterns và giá trị nhạy cảm phổ biến. Benchmark hiện là synthetic/internal và model vẫn đang hoàn thiện.</p>
15
+ </article>
16
+ <article class="card">
17
+ <h3 id="capability-lock">Capability lock</h3>
18
+ <p>Pack lock có digest và tamper detection. Lock hỏng thì fail-closed, không tự nới quyền.</p>
19
+ </article>
20
+ <article class="card">
21
+ <h3 id="human-action-gate">Human-action gate</h3>
22
+ <p>Destructive hoặc external-provider action vẫn cần operator xác nhận rõ, kể cả khi full-access đang bật. Gate áp dụng cho direct tool, MCP proxy đã decode và các shell form như GitHub CLI write hoặc HTTP non-GET.</p>
23
+ </article>
24
+ <article class="card">
25
+ <h3 id="verify-evidence">Verify evidence</h3>
26
+ <p>Handoff hoàn tất cần bằng chứng verify từ bash result đã quan sát, không nhận câu trả lời “đã test” suông.</p>
27
+ </article>
28
+ </div>
29
+
30
+ <div class="callout">
31
+ <strong>Ranh giới quan trọng</strong>
32
+ <p>Guard phụ thuộc vào tool path, controlled tools và shell parser mà platform quan sát được. Nó không ngăn một process khác chạy cùng quyền OS đọc/ghi ngoài guard, và không thay thế sandbox của hệ điều hành.</p>
33
+ <ul>
34
+ <li>Có thể bị ảnh hưởng bởi symlink, encoding, nested payload, shell expansion hoặc tool mới chưa được policy hoá.</li>
35
+ <li>Redaction là backstop giảm rò rỉ, không phải giấy phép để đưa secret thật vào prompt/output.</li>
36
+ <li>Workload không tin cậy cần container/VM với giới hạn filesystem, process, network và credential.</li>
37
+ </ul>
38
+ </div>
39
+
40
+ <div class="callout">
41
+ <strong>Redaction cần kiểm toán độc lập</strong>
42
+ <p>Các benchmark hiện tại là kiểm thử synthetic/internal cho regression và release gate, chưa tương đương external security audit. Dự án công khai <a href="https://github.com/Vt-mmm/piagent/blob/main/docs/security-threat-model.md" target="_blank" rel="noopener noreferrer">threat model và attack-vector map</a>; phạm vi OS/shell rộng hơn, parser fuzzing, third-party audit và LTS vẫn là các mức bảo đảm cao hơn chưa được claim. Signed provenance thì đã có: mỗi bản publish lên npm mang attestation ký qua sigstore từ GitHub Actions, buộc tarball về đúng commit và workflow tạo ra nó.</p>
43
+ </div>
44
+
45
+ <div class="callout">
46
+ <strong>Dependency gate tách hai lớp</strong>
47
+ <p>Release kiểm toán riêng dependency tree nhỏ của terminal helper và cây exact Pi host + pinned add-on. Helper tree hiện sạch hoàn toàn. Cây Pi host có 1 high và 11 moderate, và dự án nói thẳng con số đó thay vì gọi runtime là “0 vulnerability”.</p>
48
+ <p>Bản high là <span class="inline-code">GHSA-mh99-v99m-4gvg</span> trong <span class="inline-code">brace-expansion</span> — DoS, không leo quyền, không lộ dữ liệu. Repo này không sửa được: Pi host publish kèm <span class="inline-code">npm-shrinkwrap.json</span> ghim version dính lỗi, mà shrinkwrap đã publish thì thắng <span class="inline-code">overrides</span> của consumer. Mọi bản Pi đã phát hành đều dính một advisory brace-expansion, nên pin bản cũ chỉ đổi lỗi này lấy lỗi khác. Vì vậy gate miễn trừ đúng một advisory có tên, kèm lý do ghi trong mã nguồn, và tự đỏ lại khi hết hạn rà soát <span class="inline-code">2026-08-25</span> hoặc ngay khi upstream vá xong. Mọi high/critical khác vẫn chặn.</p>
49
+ <p>11 moderate còn lại thuộc hai advisory upstream: encoded-backslash path traversal trên Windows trong Hono adapter, và protobuf parser DoS. Native Windows/WSL2 chưa nằm trong matrix rollout team, nhưng dự án vẫn theo dõi cả hai.</p>
50
+ </div>
51
+ </section>
@@ -0,0 +1,23 @@
1
+ <section class="section">
2
+
3
+ <div class="split">
4
+ <article class="card">
5
+ <h3 id="viec-nen-lam">Việc nên làm</h3>
6
+ <p>Chạy <span class="inline-code">/onboard-project</span>, áp <span class="inline-code">/profile auto</span>, dùng workflow command, verify thật và ghi blockers rõ ràng.</p>
7
+ </article>
8
+ <article class="card">
9
+ <h3 id="viec-nen-tranh">Việc nên tránh</h3>
10
+ <p>Đưa token, auth file, cache, session, private examples hoặc business logic riêng vào core package public.</p>
11
+ </article>
12
+ </div>
13
+
14
+ <div class="callout ok-callout">
15
+ <strong>Chuẩn handoff</strong>
16
+ <p>Final response nên nói ngắn: đã đổi gì, verify nào đã chạy, có dùng subagent không, và còn rủi ro hoặc next step nào cần người review.</p>
17
+ </div>
18
+
19
+ <div class="callout">
20
+ <strong>Release docs gate</strong>
21
+ <p>Version docs mới chỉ được promote lên Vercel sau khi tag-triggered CI pass và stable dry-run resolve đúng commit SHA. Phải promote đúng tagged commit, không chèn merge commit hay docs-only edit khác. Domain canonical là <span class="inline-code">piagent.io.vn</span>; apex phải là Vercel primary và <span class="inline-code">www</span> redirect về apex.</p>
22
+ </div>
23
+ </section>
@@ -0,0 +1,47 @@
1
+ <section class="section">
2
+ <div class="callout ok-callout">
3
+ <strong>Git trong Pi Agent</strong>
4
+ <p>Không có namespace <span class="inline-code">/git</span> riêng. Dùng <span class="inline-code">/commit</span> để commit local đã review, dùng <span class="inline-code">/pr</span> để chuẩn bị PR. Các hành động như <span class="inline-code">git push</span> hoặc stage rộng <span class="inline-code">git add -A</span> vẫn cần operator xác nhận.</p>
5
+ </div>
6
+
7
+ <div class="callout">
8
+ <strong>Solo-first orchestration</strong>
9
+ <p>Dùng <span class="inline-code">/piagent-orchestration</span> để xem mode, max subagents, review lenses, Field Guide và writer policy. Mặc định parent agent tự làm chính; subagents chỉ dùng khi scout, planning hoặc review có lane độc lập đáng token.</p>
10
+ </div>
11
+
12
+ <div class="command-grid">
13
+ <article class="command-card">
14
+ <header><span>Implementation bounded</span><button class="clip-btn" data-clip="/task Fix the failing checkout test and verify.">Lấy lệnh</button></header>
15
+ <pre><code>/task Fix the failing checkout test and verify.</code></pre>
16
+ </article>
17
+ <article class="command-card">
18
+ <header><span>Read-only scout</span><button class="clip-btn" data-clip="/scout Map the auth flow and risk areas.">Lấy lệnh</button></header>
19
+ <pre><code>/scout Map the auth flow and risk areas.</code></pre>
20
+ </article>
21
+ <article class="command-card">
22
+ <header><span>Plan trước khi code</span><button class="clip-btn" data-clip="/plan Add multi-tenant billing support.">Lấy lệnh</button></header>
23
+ <pre><code>/plan Add multi-tenant billing support.</code></pre>
24
+ </article>
25
+ <article class="command-card">
26
+ <header><span>Review diff</span><button class="clip-btn" data-clip="/review">Lấy lệnh</button></header>
27
+ <pre><code>/review</code></pre>
28
+ </article>
29
+ <article class="command-card">
30
+ <header><span>Commit local có guard</span><button class="clip-btn" data-clip="/commit &quot;feat: add guarded git workflow&quot;">Lấy lệnh</button></header>
31
+ <pre><code>/commit "feat: add guarded git workflow"</code></pre>
32
+ </article>
33
+ <article class="command-card">
34
+ <header><span>Chuẩn bị pull request</span><button class="clip-btn" data-clip="/pr &quot;Prepare PR for guarded git workflow&quot;">Lấy lệnh</button></header>
35
+ <pre><code>/pr "Prepare PR for guarded git workflow"</code></pre>
36
+ </article>
37
+ <article class="command-card">
38
+ <header><span>Backend spec sang frontend</span><button class="clip-btn" data-clip="/be-to-fe Implement frontend support for the new user status endpoint.">Lấy lệnh</button></header>
39
+ <pre><code>/profile be-readonly-fe
40
+ /be-to-fe Implement frontend support for the new user status endpoint.</code></pre>
41
+ </article>
42
+ <article class="command-card">
43
+ <header><span>Cải thiện platform</span><button class="clip-btn" data-clip="/platform-improve Harden command docs and run verification.">Lấy lệnh</button></header>
44
+ <pre><code>/platform-improve Harden command docs and run verification.</code></pre>
45
+ </article>
46
+ </div>
47
+ </section>