@piagent/platform 1.7.1 → 1.8.0
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 +16 -0
- package/README.md +2 -2
- package/README.vi.md +2 -2
- package/docs/command-reference-vietnamese.md +3 -3
- package/docs/distribution-standard.md +9 -9
- package/docs/languages.json +2 -2
- package/docs/model-options.md +20 -15
- package/docs/operator-manual-vietnamese.md +10 -10
- package/docs/publishing-for-teams.md +1 -0
- package/docs/quickstart-vietnamese.md +1 -1
- package/docs/release-install-policy.md +15 -11
- package/docs/team-onboarding.md +7 -7
- package/docs-site/architecture.html +1 -1
- package/docs-site/benchmark.html +1 -1
- package/docs-site/commands.html +1 -1
- package/docs-site/content/en/runtime.html +1 -1
- package/docs-site/content/en/whats-new.html +12 -0
- package/docs-site/content/runtime.html +2 -2
- package/docs-site/content/whats-new.html +12 -0
- package/docs-site/context-engine.html +1 -1
- package/docs-site/en/architecture.html +1 -1
- package/docs-site/en/benchmark.html +1 -1
- package/docs-site/en/commands.html +1 -1
- package/docs-site/en/context-engine.html +1 -1
- package/docs-site/en/index.html +1 -1
- package/docs-site/en/mcp-approval.html +1 -1
- package/docs-site/en/mcp-auth.html +1 -1
- package/docs-site/en/mcp-servers.html +1 -1
- package/docs-site/en/mcp.html +1 -1
- package/docs-site/en/permissions.html +1 -1
- package/docs-site/en/profiles.html +1 -1
- package/docs-site/en/quickstart.html +1 -1
- package/docs-site/en/runtime.html +2 -2
- package/docs-site/en/scope.html +1 -1
- package/docs-site/en/security.html +1 -1
- package/docs-site/en/team.html +1 -1
- package/docs-site/en/whats-new.html +13 -1
- package/docs-site/en/workflows.html +1 -1
- package/docs-site/index.html +1 -1
- package/docs-site/mcp-approval.html +1 -1
- package/docs-site/mcp-auth.html +1 -1
- package/docs-site/mcp-servers.html +1 -1
- package/docs-site/mcp.html +1 -1
- package/docs-site/permissions.html +1 -1
- package/docs-site/profiles.html +1 -1
- package/docs-site/quickstart.html +1 -1
- package/docs-site/runtime.html +3 -3
- package/docs-site/scope.html +1 -1
- package/docs-site/security.html +1 -1
- package/docs-site/team.html +1 -1
- package/docs-site/whats-new.html +13 -1
- package/docs-site/workflows.html +1 -1
- package/evals/private-holdout-v1/public-exposure.v2.json +1 -1
- package/package.json +3 -3
- package/packages/piagent-core/package.json +2 -2
- package/packages/piagent-core/runtime/inspection/same-process-bridge-proof.ts +1 -1
- package/packages/piagent-core/runtime/inspection/webui-snapshot.ts +1 -1
- package/packages/piagent-core/runtime/model/model-route-policy.ts +33 -13
- package/packages/piagent-core/runtime/model/model-route-types.ts +10 -6
- package/packages/piagent-webui/dist/client/assets/{MarkdownMessage-DGk34zJT.js → MarkdownMessage-DMU7Xe_O.js} +1 -1
- package/packages/piagent-webui/dist/client/assets/{index-DiKRmCEP.js → index-Cui9AAV_.js} +2 -2
- package/packages/piagent-webui/dist/client/index.html +1 -1
- package/packages/piagent-webui/gateway/session-inspection-registry.ts +3 -4
- package/scripts/configure-model-scope.sh +6 -2
- package/scripts/install-global.sh +2 -2
- package/scripts/model-route-evaluation-core.ts +1 -0
- package/scripts/pi-model-route.mjs +1 -1
- package/scripts/setup.sh +2 -2
- package/scripts/verify-local.sh +3 -3
- package/scripts/verify-release-identity.mjs +1 -1
- package/templates/global/settings.json +5 -1
|
@@ -30,7 +30,7 @@
|
|
|
30
30
|
<span>Pi Agent Platform</span>
|
|
31
31
|
</a>
|
|
32
32
|
<div class="top-actions">
|
|
33
|
-
<span class="pill"><span class="pill-dot"></span>v1.
|
|
33
|
+
<span class="pill"><span class="pill-dot"></span>v1.8.0 docs · EN</span>
|
|
34
34
|
<nav class="language-switch" aria-label="Language">
|
|
35
35
|
<a class="language-option" href="/mcp-approval" hreflang="vi" lang="vi">VI</a>
|
|
36
36
|
<a class="language-option current" href="/en/mcp-approval" hreflang="en" lang="en" aria-current="true">EN</a>
|
|
@@ -30,7 +30,7 @@
|
|
|
30
30
|
<span>Pi Agent Platform</span>
|
|
31
31
|
</a>
|
|
32
32
|
<div class="top-actions">
|
|
33
|
-
<span class="pill"><span class="pill-dot"></span>v1.
|
|
33
|
+
<span class="pill"><span class="pill-dot"></span>v1.8.0 docs · EN</span>
|
|
34
34
|
<nav class="language-switch" aria-label="Language">
|
|
35
35
|
<a class="language-option" href="/mcp-auth" hreflang="vi" lang="vi">VI</a>
|
|
36
36
|
<a class="language-option current" href="/en/mcp-auth" hreflang="en" lang="en" aria-current="true">EN</a>
|
|
@@ -30,7 +30,7 @@
|
|
|
30
30
|
<span>Pi Agent Platform</span>
|
|
31
31
|
</a>
|
|
32
32
|
<div class="top-actions">
|
|
33
|
-
<span class="pill"><span class="pill-dot"></span>v1.
|
|
33
|
+
<span class="pill"><span class="pill-dot"></span>v1.8.0 docs · EN</span>
|
|
34
34
|
<nav class="language-switch" aria-label="Language">
|
|
35
35
|
<a class="language-option" href="/mcp-servers" hreflang="vi" lang="vi">VI</a>
|
|
36
36
|
<a class="language-option current" href="/en/mcp-servers" hreflang="en" lang="en" aria-current="true">EN</a>
|
package/docs-site/en/mcp.html
CHANGED
|
@@ -30,7 +30,7 @@
|
|
|
30
30
|
<span>Pi Agent Platform</span>
|
|
31
31
|
</a>
|
|
32
32
|
<div class="top-actions">
|
|
33
|
-
<span class="pill"><span class="pill-dot"></span>v1.
|
|
33
|
+
<span class="pill"><span class="pill-dot"></span>v1.8.0 docs · EN</span>
|
|
34
34
|
<nav class="language-switch" aria-label="Language">
|
|
35
35
|
<a class="language-option" href="/mcp" hreflang="vi" lang="vi">VI</a>
|
|
36
36
|
<a class="language-option current" href="/en/mcp" hreflang="en" lang="en" aria-current="true">EN</a>
|
|
@@ -30,7 +30,7 @@
|
|
|
30
30
|
<span>Pi Agent Platform</span>
|
|
31
31
|
</a>
|
|
32
32
|
<div class="top-actions">
|
|
33
|
-
<span class="pill"><span class="pill-dot"></span>v1.
|
|
33
|
+
<span class="pill"><span class="pill-dot"></span>v1.8.0 docs · EN</span>
|
|
34
34
|
<nav class="language-switch" aria-label="Language">
|
|
35
35
|
<a class="language-option" href="/permissions" hreflang="vi" lang="vi">VI</a>
|
|
36
36
|
<a class="language-option current" href="/en/permissions" hreflang="en" lang="en" aria-current="true">EN</a>
|
|
@@ -30,7 +30,7 @@
|
|
|
30
30
|
<span>Pi Agent Platform</span>
|
|
31
31
|
</a>
|
|
32
32
|
<div class="top-actions">
|
|
33
|
-
<span class="pill"><span class="pill-dot"></span>v1.
|
|
33
|
+
<span class="pill"><span class="pill-dot"></span>v1.8.0 docs · EN</span>
|
|
34
34
|
<nav class="language-switch" aria-label="Language">
|
|
35
35
|
<a class="language-option" href="/profiles" hreflang="vi" lang="vi">VI</a>
|
|
36
36
|
<a class="language-option current" href="/en/profiles" hreflang="en" lang="en" aria-current="true">EN</a>
|
|
@@ -30,7 +30,7 @@
|
|
|
30
30
|
<span>Pi Agent Platform</span>
|
|
31
31
|
</a>
|
|
32
32
|
<div class="top-actions">
|
|
33
|
-
<span class="pill"><span class="pill-dot"></span>v1.
|
|
33
|
+
<span class="pill"><span class="pill-dot"></span>v1.8.0 docs · EN</span>
|
|
34
34
|
<nav class="language-switch" aria-label="Language">
|
|
35
35
|
<a class="language-option" href="/quickstart" hreflang="vi" lang="vi">VI</a>
|
|
36
36
|
<a class="language-option current" href="/en/quickstart" hreflang="en" lang="en" aria-current="true">EN</a>
|
|
@@ -30,7 +30,7 @@
|
|
|
30
30
|
<span>Pi Agent Platform</span>
|
|
31
31
|
</a>
|
|
32
32
|
<div class="top-actions">
|
|
33
|
-
<span class="pill"><span class="pill-dot"></span>v1.
|
|
33
|
+
<span class="pill"><span class="pill-dot"></span>v1.8.0 docs · EN</span>
|
|
34
34
|
<nav class="language-switch" aria-label="Language">
|
|
35
35
|
<a class="language-option" href="/runtime" hreflang="vi" lang="vi">VI</a>
|
|
36
36
|
<a class="language-option current" href="/en/runtime" hreflang="en" lang="en" aria-current="true">EN</a>
|
|
@@ -105,7 +105,7 @@
|
|
|
105
105
|
<section class="section">
|
|
106
106
|
<div class="command-grid">
|
|
107
107
|
<article class="command-card"><header><span>Global setup</span><button class="clip-btn" data-clip="piagent-setup --mcp-preset core --subagents-preset safe">Copy</button></header><pre><code>piagent-setup --mcp-preset core --subagents-preset safe</code></pre></article>
|
|
108
|
-
<article class="command-card"><header><span>Full update</span><button class="clip-btn" data-clip="npm install -g --ignore-scripts @earendil-works/pi-coding-agent@0.
|
|
108
|
+
<article class="command-card"><header><span>Full update</span><button class="clip-btn" data-clip="npm install -g --ignore-scripts @earendil-works/pi-coding-agent@0.87.1 npm install -g --ignore-scripts @piagent/platform@X.Y.Z piagent-install --stable --dry-run piagent-install --stable">Copy</button></header><pre><code>npm install -g --ignore-scripts @earendil-works/pi-coding-agent@0.87.1
|
|
109
109
|
npm install -g --ignore-scripts @piagent/platform@X.Y.Z
|
|
110
110
|
piagent-install --stable --dry-run
|
|
111
111
|
piagent-install --stable</code></pre></article>
|
package/docs-site/en/scope.html
CHANGED
|
@@ -30,7 +30,7 @@
|
|
|
30
30
|
<span>Pi Agent Platform</span>
|
|
31
31
|
</a>
|
|
32
32
|
<div class="top-actions">
|
|
33
|
-
<span class="pill"><span class="pill-dot"></span>v1.
|
|
33
|
+
<span class="pill"><span class="pill-dot"></span>v1.8.0 docs · EN</span>
|
|
34
34
|
<nav class="language-switch" aria-label="Language">
|
|
35
35
|
<a class="language-option" href="/scope" hreflang="vi" lang="vi">VI</a>
|
|
36
36
|
<a class="language-option current" href="/en/scope" hreflang="en" lang="en" aria-current="true">EN</a>
|
|
@@ -30,7 +30,7 @@
|
|
|
30
30
|
<span>Pi Agent Platform</span>
|
|
31
31
|
</a>
|
|
32
32
|
<div class="top-actions">
|
|
33
|
-
<span class="pill"><span class="pill-dot"></span>v1.
|
|
33
|
+
<span class="pill"><span class="pill-dot"></span>v1.8.0 docs · EN</span>
|
|
34
34
|
<nav class="language-switch" aria-label="Language">
|
|
35
35
|
<a class="language-option" href="/security" hreflang="vi" lang="vi">VI</a>
|
|
36
36
|
<a class="language-option current" href="/en/security" hreflang="en" lang="en" aria-current="true">EN</a>
|
package/docs-site/en/team.html
CHANGED
|
@@ -30,7 +30,7 @@
|
|
|
30
30
|
<span>Pi Agent Platform</span>
|
|
31
31
|
</a>
|
|
32
32
|
<div class="top-actions">
|
|
33
|
-
<span class="pill"><span class="pill-dot"></span>v1.
|
|
33
|
+
<span class="pill"><span class="pill-dot"></span>v1.8.0 docs · EN</span>
|
|
34
34
|
<nav class="language-switch" aria-label="Language">
|
|
35
35
|
<a class="language-option" href="/team" hreflang="vi" lang="vi">VI</a>
|
|
36
36
|
<a class="language-option current" href="/en/team" hreflang="en" lang="en" aria-current="true">EN</a>
|
|
@@ -30,7 +30,7 @@
|
|
|
30
30
|
<span>Pi Agent Platform</span>
|
|
31
31
|
</a>
|
|
32
32
|
<div class="top-actions">
|
|
33
|
-
<span class="pill"><span class="pill-dot"></span>v1.
|
|
33
|
+
<span class="pill"><span class="pill-dot"></span>v1.8.0 docs · EN</span>
|
|
34
34
|
<nav class="language-switch" aria-label="Language">
|
|
35
35
|
<a class="language-option" href="/whats-new" hreflang="vi" lang="vi">VI</a>
|
|
36
36
|
<a class="language-option current" href="/en/whats-new" hreflang="en" lang="en" aria-current="true">EN</a>
|
|
@@ -102,6 +102,18 @@
|
|
|
102
102
|
<h1>Safer task flow with less manual coordination</h1>
|
|
103
103
|
<p>Product stabilization adds runtime truth, trajectories, recovery, helper policy, an activity inspector, and fail-closed completion receipts without breaking existing workflows.</p>
|
|
104
104
|
</div>
|
|
105
|
+
<section class="section">
|
|
106
|
+
<p class="section-kicker">v1.8.0</p>
|
|
107
|
+
<h2 id="v1-8-0">Astra, Sol, and Luna in Piagent</h2>
|
|
108
|
+
<p class="section-lead">Pi 0.87.1 exposes all three GPT-6 models through the authenticated catalog. New sessions prefer Sol High; parent routing remains opt-in.</p>
|
|
109
|
+
<div class="grid cols-3">
|
|
110
|
+
<article class="card"><h3>Luna</h3><p>Focused, verifiable tasks: the low tier at Medium effort.</p></article>
|
|
111
|
+
<article class="card"><h3>Sol</h3><p>Everyday coding: the medium and high tiers; the new-session default is High when available.</p></article>
|
|
112
|
+
<article class="card"><h3>Astra</h3><p>Broad or ambiguous work: the ultra tier at Extra High. Explicit pins and existing sessions stay intact.</p></article>
|
|
113
|
+
</div>
|
|
114
|
+
<p>The router selects only authenticated models and records a legacy 5.6 fallback. The old 108-session result does not measure GPT-6 performance or token savings.</p>
|
|
115
|
+
</section>
|
|
116
|
+
|
|
105
117
|
<section class="section">
|
|
106
118
|
<p class="section-kicker">v1.7.1</p>
|
|
107
119
|
<h2 id="v1-7-0">Long sessions with clearer context and accounting</h2>
|
|
@@ -30,7 +30,7 @@
|
|
|
30
30
|
<span>Pi Agent Platform</span>
|
|
31
31
|
</a>
|
|
32
32
|
<div class="top-actions">
|
|
33
|
-
<span class="pill"><span class="pill-dot"></span>v1.
|
|
33
|
+
<span class="pill"><span class="pill-dot"></span>v1.8.0 docs · EN</span>
|
|
34
34
|
<nav class="language-switch" aria-label="Language">
|
|
35
35
|
<a class="language-option" href="/workflows" hreflang="vi" lang="vi">VI</a>
|
|
36
36
|
<a class="language-option current" href="/en/workflows" hreflang="en" lang="en" aria-current="true">EN</a>
|
package/docs-site/index.html
CHANGED
|
@@ -30,7 +30,7 @@
|
|
|
30
30
|
<span>Pi Agent Platform</span>
|
|
31
31
|
</a>
|
|
32
32
|
<div class="top-actions">
|
|
33
|
-
<span class="pill"><span class="pill-dot"></span>v1.
|
|
33
|
+
<span class="pill"><span class="pill-dot"></span>v1.8.0 docs · VI</span>
|
|
34
34
|
<nav class="language-switch" aria-label="Ngôn ngữ">
|
|
35
35
|
<a class="language-option current" href="/" hreflang="vi" lang="vi" aria-current="true">VI</a>
|
|
36
36
|
<a class="language-option" href="/en/" hreflang="en" lang="en">EN</a>
|
|
@@ -30,7 +30,7 @@
|
|
|
30
30
|
<span>Pi Agent Platform</span>
|
|
31
31
|
</a>
|
|
32
32
|
<div class="top-actions">
|
|
33
|
-
<span class="pill"><span class="pill-dot"></span>v1.
|
|
33
|
+
<span class="pill"><span class="pill-dot"></span>v1.8.0 docs · VI</span>
|
|
34
34
|
<nav class="language-switch" aria-label="Ngôn ngữ">
|
|
35
35
|
<a class="language-option current" href="/mcp-approval" hreflang="vi" lang="vi" aria-current="true">VI</a>
|
|
36
36
|
<a class="language-option" href="/en/mcp-approval" hreflang="en" lang="en">EN</a>
|
package/docs-site/mcp-auth.html
CHANGED
|
@@ -30,7 +30,7 @@
|
|
|
30
30
|
<span>Pi Agent Platform</span>
|
|
31
31
|
</a>
|
|
32
32
|
<div class="top-actions">
|
|
33
|
-
<span class="pill"><span class="pill-dot"></span>v1.
|
|
33
|
+
<span class="pill"><span class="pill-dot"></span>v1.8.0 docs · VI</span>
|
|
34
34
|
<nav class="language-switch" aria-label="Ngôn ngữ">
|
|
35
35
|
<a class="language-option current" href="/mcp-auth" hreflang="vi" lang="vi" aria-current="true">VI</a>
|
|
36
36
|
<a class="language-option" href="/en/mcp-auth" hreflang="en" lang="en">EN</a>
|
|
@@ -30,7 +30,7 @@
|
|
|
30
30
|
<span>Pi Agent Platform</span>
|
|
31
31
|
</a>
|
|
32
32
|
<div class="top-actions">
|
|
33
|
-
<span class="pill"><span class="pill-dot"></span>v1.
|
|
33
|
+
<span class="pill"><span class="pill-dot"></span>v1.8.0 docs · VI</span>
|
|
34
34
|
<nav class="language-switch" aria-label="Ngôn ngữ">
|
|
35
35
|
<a class="language-option current" href="/mcp-servers" hreflang="vi" lang="vi" aria-current="true">VI</a>
|
|
36
36
|
<a class="language-option" href="/en/mcp-servers" hreflang="en" lang="en">EN</a>
|
package/docs-site/mcp.html
CHANGED
|
@@ -30,7 +30,7 @@
|
|
|
30
30
|
<span>Pi Agent Platform</span>
|
|
31
31
|
</a>
|
|
32
32
|
<div class="top-actions">
|
|
33
|
-
<span class="pill"><span class="pill-dot"></span>v1.
|
|
33
|
+
<span class="pill"><span class="pill-dot"></span>v1.8.0 docs · VI</span>
|
|
34
34
|
<nav class="language-switch" aria-label="Ngôn ngữ">
|
|
35
35
|
<a class="language-option current" href="/mcp" hreflang="vi" lang="vi" aria-current="true">VI</a>
|
|
36
36
|
<a class="language-option" href="/en/mcp" hreflang="en" lang="en">EN</a>
|
|
@@ -30,7 +30,7 @@
|
|
|
30
30
|
<span>Pi Agent Platform</span>
|
|
31
31
|
</a>
|
|
32
32
|
<div class="top-actions">
|
|
33
|
-
<span class="pill"><span class="pill-dot"></span>v1.
|
|
33
|
+
<span class="pill"><span class="pill-dot"></span>v1.8.0 docs · VI</span>
|
|
34
34
|
<nav class="language-switch" aria-label="Ngôn ngữ">
|
|
35
35
|
<a class="language-option current" href="/permissions" hreflang="vi" lang="vi" aria-current="true">VI</a>
|
|
36
36
|
<a class="language-option" href="/en/permissions" hreflang="en" lang="en">EN</a>
|
package/docs-site/profiles.html
CHANGED
|
@@ -30,7 +30,7 @@
|
|
|
30
30
|
<span>Pi Agent Platform</span>
|
|
31
31
|
</a>
|
|
32
32
|
<div class="top-actions">
|
|
33
|
-
<span class="pill"><span class="pill-dot"></span>v1.
|
|
33
|
+
<span class="pill"><span class="pill-dot"></span>v1.8.0 docs · VI</span>
|
|
34
34
|
<nav class="language-switch" aria-label="Ngôn ngữ">
|
|
35
35
|
<a class="language-option current" href="/profiles" hreflang="vi" lang="vi" aria-current="true">VI</a>
|
|
36
36
|
<a class="language-option" href="/en/profiles" hreflang="en" lang="en">EN</a>
|
|
@@ -30,7 +30,7 @@
|
|
|
30
30
|
<span>Pi Agent Platform</span>
|
|
31
31
|
</a>
|
|
32
32
|
<div class="top-actions">
|
|
33
|
-
<span class="pill"><span class="pill-dot"></span>v1.
|
|
33
|
+
<span class="pill"><span class="pill-dot"></span>v1.8.0 docs · VI</span>
|
|
34
34
|
<nav class="language-switch" aria-label="Ngôn ngữ">
|
|
35
35
|
<a class="language-option current" href="/quickstart" hreflang="vi" lang="vi" aria-current="true">VI</a>
|
|
36
36
|
<a class="language-option" href="/en/quickstart" hreflang="en" lang="en">EN</a>
|
package/docs-site/runtime.html
CHANGED
|
@@ -30,7 +30,7 @@
|
|
|
30
30
|
<span>Pi Agent Platform</span>
|
|
31
31
|
</a>
|
|
32
32
|
<div class="top-actions">
|
|
33
|
-
<span class="pill"><span class="pill-dot"></span>v1.
|
|
33
|
+
<span class="pill"><span class="pill-dot"></span>v1.8.0 docs · VI</span>
|
|
34
34
|
<nav class="language-switch" aria-label="Ngôn ngữ">
|
|
35
35
|
<a class="language-option current" href="/runtime" hreflang="vi" lang="vi" aria-current="true">VI</a>
|
|
36
36
|
<a class="language-option" href="/en/runtime" hreflang="en" lang="en">EN</a>
|
|
@@ -110,8 +110,8 @@
|
|
|
110
110
|
<pre><code>piagent-setup --mcp-preset core --subagents-preset safe</code></pre>
|
|
111
111
|
</article>
|
|
112
112
|
<article class="command-card">
|
|
113
|
-
<header><span>Full update</span><button class="clip-btn" data-clip="npm install -g --ignore-scripts @earendil-works/pi-coding-agent@0.
|
|
114
|
-
<pre><code>npm install -g --ignore-scripts @earendil-works/pi-coding-agent@0.
|
|
113
|
+
<header><span>Full update</span><button class="clip-btn" data-clip="npm install -g --ignore-scripts @earendil-works/pi-coding-agent@0.87.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>
|
|
114
|
+
<pre><code>npm install -g --ignore-scripts @earendil-works/pi-coding-agent@0.87.1
|
|
115
115
|
npm install -g --ignore-scripts @piagent/platform@X.Y.Z
|
|
116
116
|
piagent-install --stable --dry-run
|
|
117
117
|
piagent-install --stable</code></pre>
|
package/docs-site/scope.html
CHANGED
|
@@ -30,7 +30,7 @@
|
|
|
30
30
|
<span>Pi Agent Platform</span>
|
|
31
31
|
</a>
|
|
32
32
|
<div class="top-actions">
|
|
33
|
-
<span class="pill"><span class="pill-dot"></span>v1.
|
|
33
|
+
<span class="pill"><span class="pill-dot"></span>v1.8.0 docs · VI</span>
|
|
34
34
|
<nav class="language-switch" aria-label="Ngôn ngữ">
|
|
35
35
|
<a class="language-option current" href="/scope" hreflang="vi" lang="vi" aria-current="true">VI</a>
|
|
36
36
|
<a class="language-option" href="/en/scope" hreflang="en" lang="en">EN</a>
|
package/docs-site/security.html
CHANGED
|
@@ -30,7 +30,7 @@
|
|
|
30
30
|
<span>Pi Agent Platform</span>
|
|
31
31
|
</a>
|
|
32
32
|
<div class="top-actions">
|
|
33
|
-
<span class="pill"><span class="pill-dot"></span>v1.
|
|
33
|
+
<span class="pill"><span class="pill-dot"></span>v1.8.0 docs · VI</span>
|
|
34
34
|
<nav class="language-switch" aria-label="Ngôn ngữ">
|
|
35
35
|
<a class="language-option current" href="/security" hreflang="vi" lang="vi" aria-current="true">VI</a>
|
|
36
36
|
<a class="language-option" href="/en/security" hreflang="en" lang="en">EN</a>
|
package/docs-site/team.html
CHANGED
|
@@ -30,7 +30,7 @@
|
|
|
30
30
|
<span>Pi Agent Platform</span>
|
|
31
31
|
</a>
|
|
32
32
|
<div class="top-actions">
|
|
33
|
-
<span class="pill"><span class="pill-dot"></span>v1.
|
|
33
|
+
<span class="pill"><span class="pill-dot"></span>v1.8.0 docs · VI</span>
|
|
34
34
|
<nav class="language-switch" aria-label="Ngôn ngữ">
|
|
35
35
|
<a class="language-option current" href="/team" hreflang="vi" lang="vi" aria-current="true">VI</a>
|
|
36
36
|
<a class="language-option" href="/en/team" hreflang="en" lang="en">EN</a>
|
package/docs-site/whats-new.html
CHANGED
|
@@ -30,7 +30,7 @@
|
|
|
30
30
|
<span>Pi Agent Platform</span>
|
|
31
31
|
</a>
|
|
32
32
|
<div class="top-actions">
|
|
33
|
-
<span class="pill"><span class="pill-dot"></span>v1.
|
|
33
|
+
<span class="pill"><span class="pill-dot"></span>v1.8.0 docs · VI</span>
|
|
34
34
|
<nav class="language-switch" aria-label="Ngôn ngữ">
|
|
35
35
|
<a class="language-option current" href="/whats-new" hreflang="vi" lang="vi" aria-current="true">VI</a>
|
|
36
36
|
<a class="language-option" href="/en/whats-new" hreflang="en" lang="en">EN</a>
|
|
@@ -102,6 +102,18 @@
|
|
|
102
102
|
<h1>Luồng task an toàn hơn, ít thao tác tay hơn</h1>
|
|
103
103
|
<p>Product stabilization bổ sung runtime truth, trajectory, recovery, helper policy, activity inspector và completion receipt fail-closed mà không phá workflow cũ.</p>
|
|
104
104
|
</div>
|
|
105
|
+
<section class="section">
|
|
106
|
+
<p class="section-kicker">v1.8.0</p>
|
|
107
|
+
<h2 id="v1-8-0">Astra, Sol và Luna trong Piagent</h2>
|
|
108
|
+
<p class="section-lead">Pi 0.87.1 đưa ba model GPT-6 vào danh sách đã đăng nhập. Phiên mới ưu tiên Sol High; tier routing vẫn là lựa chọn bật riêng.</p>
|
|
109
|
+
<div class="grid cols-3">
|
|
110
|
+
<article class="card"><h3>Luna</h3><p>Việc gọn, rõ phạm vi và có thể kiểm tra: tier low ở Medium effort.</p></article>
|
|
111
|
+
<article class="card"><h3>Sol</h3><p>Công việc lập trình hằng ngày: tier medium/high; mặc định phiên mới ở High effort khi có quyền dùng.</p></article>
|
|
112
|
+
<article class="card"><h3>Astra</h3><p>Việc rộng hoặc mơ hồ: tier ultra ở Extra High. Model đã pin và phiên cũ được giữ nguyên.</p></article>
|
|
113
|
+
</div>
|
|
114
|
+
<p>Router chỉ chọn model có trong catalog đã đăng nhập; fallback 5.6 được ghi rõ. Kết quả 108 phiên cũ không phải phép đo GPT-6 và bản này không claim tiết kiệm token.</p>
|
|
115
|
+
</section>
|
|
116
|
+
|
|
105
117
|
<section class="section">
|
|
106
118
|
<p class="section-kicker">v1.7.1</p>
|
|
107
119
|
<h2 id="v1-7-0">Phiên dài giữ đúng việc, context và số liệu rõ ràng</h2>
|
package/docs-site/workflows.html
CHANGED
|
@@ -30,7 +30,7 @@
|
|
|
30
30
|
<span>Pi Agent Platform</span>
|
|
31
31
|
</a>
|
|
32
32
|
<div class="top-actions">
|
|
33
|
-
<span class="pill"><span class="pill-dot"></span>v1.
|
|
33
|
+
<span class="pill"><span class="pill-dot"></span>v1.8.0 docs · VI</span>
|
|
34
34
|
<nav class="language-switch" aria-label="Ngôn ngữ">
|
|
35
35
|
<a class="language-option current" href="/workflows" hreflang="vi" lang="vi" aria-current="true">VI</a>
|
|
36
36
|
<a class="language-option" href="/en/workflows" hreflang="en" lang="en">EN</a>
|
|
@@ -257,7 +257,7 @@
|
|
|
257
257
|
{
|
|
258
258
|
"path": "tests",
|
|
259
259
|
"fileCount": 487,
|
|
260
|
-
"sha256": "
|
|
260
|
+
"sha256": "3d59061aef5ac8f4a182ccd0d84433de1bca29f4baadc61a2e1c7a08b704963c"
|
|
261
261
|
}
|
|
262
262
|
],
|
|
263
263
|
"custodianComparisonRules": {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@piagent/platform",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.8.0",
|
|
4
4
|
"license": "MIT",
|
|
5
5
|
"publishConfig": {
|
|
6
6
|
"access": "public",
|
|
@@ -119,8 +119,8 @@
|
|
|
119
119
|
]
|
|
120
120
|
},
|
|
121
121
|
"peerDependencies": {
|
|
122
|
-
"@earendil-works/pi-ai": "0.
|
|
123
|
-
"@earendil-works/pi-coding-agent": "0.
|
|
122
|
+
"@earendil-works/pi-ai": "0.87.1",
|
|
123
|
+
"@earendil-works/pi-coding-agent": "0.87.1",
|
|
124
124
|
"typebox": "1.3.27"
|
|
125
125
|
},
|
|
126
126
|
"peerDependenciesMeta": {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@piagent/core",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.8.0",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"private": true,
|
|
6
6
|
"license": "MIT",
|
|
@@ -33,7 +33,7 @@
|
|
|
33
33
|
}
|
|
34
34
|
},
|
|
35
35
|
"peerDependencies": {
|
|
36
|
-
"@earendil-works/pi-coding-agent": "0.
|
|
36
|
+
"@earendil-works/pi-coding-agent": "0.87.1",
|
|
37
37
|
"typebox": "1.3.27"
|
|
38
38
|
},
|
|
39
39
|
"peerDependenciesMeta": {
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { createHash } from "node:crypto";
|
|
2
2
|
|
|
3
|
-
export const PINNED_BRIDGE_HOST_VERSION = "0.
|
|
3
|
+
export const PINNED_BRIDGE_HOST_VERSION = "0.87.1" as const;
|
|
4
4
|
export const SAME_PROCESS_BRIDGE_PROOF_VERSION = "piagent-webui-same-process-bridge-v1" as const;
|
|
5
5
|
|
|
6
6
|
const HOST_EVENTS = Object.freeze([
|
|
@@ -248,7 +248,7 @@ function capabilities(identity: WebUiIdentity, generatedAt: string, resyncRequir
|
|
|
248
248
|
capabilities: {
|
|
249
249
|
inspect: { status: "available", version: 1, reason: null, sourceViews: ["task", "working-tree", "staged"] },
|
|
250
250
|
"control.chat": unavailableCapability("chat-control-not-enabled", "The same-session bridge exists, but transcript, queue, server control and browser UX are not enabled"),
|
|
251
|
-
"control.lifecycle": unavailableCapability("lifecycle-contract-incomplete", "Pi
|
|
251
|
+
"control.lifecycle": unavailableCapability("lifecycle-contract-incomplete", "Pi host lacks semantic Pause and an acknowledged phase-complete Stop contract"),
|
|
252
252
|
"control.resumeAndContinue": unavailableCapability("compound-control-unavailable", "Resume is unavailable until a durable acknowledged Pause contract exists"),
|
|
253
253
|
"control.sessionOptions": unavailableCapability("effect-scope-not-productionized", "Model and thinking APIs exist but lifecycle and persistence scope enforcement is not enabled"),
|
|
254
254
|
attachments: unavailableCapability("attachments-not-implemented", "Attachments are not implemented"),
|
|
@@ -4,8 +4,11 @@ import {
|
|
|
4
4
|
authenticatedCatalogDigest,
|
|
5
5
|
CAPABILITY_BANDS,
|
|
6
6
|
createModelRouteDecision,
|
|
7
|
+
LEGACY_OPENAI_CODEX_MODEL_ROUTE_MAPPING_VERSION,
|
|
8
|
+
OPENAI_CODEX_MODEL_ROUTE_MAPPING_VERSION,
|
|
7
9
|
type CapabilityBand,
|
|
8
10
|
type ModelRouteDecision,
|
|
11
|
+
type ModelRouteMappingVersion,
|
|
9
12
|
type ModelSelectionSource,
|
|
10
13
|
type ParentRoutingMode,
|
|
11
14
|
type RoutingObjective
|
|
@@ -22,33 +25,47 @@ export type ModelRoutePolicyInput = {
|
|
|
22
25
|
current: { provider: string | null; modelId: string | null; effort: string | null };
|
|
23
26
|
freshTaskBoundary: boolean;
|
|
24
27
|
hostBoundary: ModelRouteHostBoundary;
|
|
28
|
+
mappingVersion?: ModelRouteMappingVersion;
|
|
25
29
|
};
|
|
26
30
|
|
|
27
31
|
type Candidate = { provider: "openai-codex"; modelId: string; effort: string };
|
|
28
32
|
|
|
29
|
-
const
|
|
33
|
+
const LEGACY_BAND_CANDIDATES: Record<CapabilityBand, Candidate[]> = {
|
|
30
34
|
low: [{ provider: "openai-codex", modelId: "gpt-5.6-luna", effort: "medium" }],
|
|
31
35
|
medium: [{ provider: "openai-codex", modelId: "gpt-5.6-terra", effort: "medium" }],
|
|
32
36
|
high: [{ provider: "openai-codex", modelId: "gpt-5.6-sol", effort: "high" }],
|
|
33
37
|
ultra: [{ provider: "openai-codex", modelId: "gpt-5.6-sol", effort: "xhigh" }]
|
|
34
38
|
};
|
|
39
|
+
const BAND_CANDIDATES: Record<CapabilityBand, Candidate[]> = {
|
|
40
|
+
low: [{ provider: "openai-codex", modelId: "gpt-6-luna", effort: "medium" }, ...LEGACY_BAND_CANDIDATES.low],
|
|
41
|
+
medium: [{ provider: "openai-codex", modelId: "gpt-6-sol", effort: "medium" }, ...LEGACY_BAND_CANDIDATES.medium],
|
|
42
|
+
high: [{ provider: "openai-codex", modelId: "gpt-6-sol", effort: "high" }, ...LEGACY_BAND_CANDIDATES.high],
|
|
43
|
+
ultra: [{ provider: "openai-codex", modelId: "gpt-6-astra", effort: "xhigh" }, ...LEGACY_BAND_CANDIDATES.ultra]
|
|
44
|
+
};
|
|
35
45
|
const BAND_INDEX = new Map(CAPABILITY_BANDS.map((band, index) => [band, index]));
|
|
36
46
|
|
|
37
|
-
function exactCandidate(catalog: AuthenticatedModelCatalog, band: CapabilityBand): { model: AuthenticatedModelCatalogEntry; effort: string } | undefined {
|
|
38
|
-
|
|
47
|
+
function exactCandidate(catalog: AuthenticatedModelCatalog, band: CapabilityBand, mappingVersion: ModelRouteMappingVersion): { model: AuthenticatedModelCatalogEntry; effort: string; legacyFallback: boolean } | undefined {
|
|
48
|
+
const candidates = mappingVersion === LEGACY_OPENAI_CODEX_MODEL_ROUTE_MAPPING_VERSION ? LEGACY_BAND_CANDIDATES[band] : BAND_CANDIDATES[band];
|
|
49
|
+
for (const [index, candidate] of candidates.entries()) {
|
|
39
50
|
const model = catalog.models.find((entry) => entry.provider === candidate.provider
|
|
40
51
|
&& entry.modelId === candidate.modelId
|
|
41
52
|
&& (entry.supportedThinkingLevels === null || entry.supportedThinkingLevels.includes(candidate.effort)));
|
|
42
|
-
if (model) return { model, effort: candidate.effort };
|
|
53
|
+
if (model) return { model, effort: candidate.effort, legacyFallback: mappingVersion === OPENAI_CODEX_MODEL_ROUTE_MAPPING_VERSION && index > 0 };
|
|
43
54
|
}
|
|
44
55
|
return undefined;
|
|
45
56
|
}
|
|
46
57
|
|
|
47
|
-
function currentBand(modelId: string | null): CapabilityBand | undefined {
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
58
|
+
function currentBand(modelId: string | null, effort: string | null): CapabilityBand | undefined {
|
|
59
|
+
if (modelId === "gpt-6-luna" || modelId === "gpt-5.6-luna") return "low";
|
|
60
|
+
if (modelId === "gpt-6-astra") return "ultra";
|
|
61
|
+
if (modelId === "gpt-6-sol") {
|
|
62
|
+
if (effort === "medium") return "medium";
|
|
63
|
+
if (effort === "xhigh" || effort === "max") return "ultra";
|
|
64
|
+
return "high";
|
|
65
|
+
}
|
|
66
|
+
if (modelId === "gpt-5.6-terra") return "medium";
|
|
67
|
+
if (modelId === "gpt-5.6-sol") return "high";
|
|
68
|
+
return undefined;
|
|
52
69
|
}
|
|
53
70
|
|
|
54
71
|
function maxBand(left: CapabilityBand, right: CapabilityBand): CapabilityBand {
|
|
@@ -102,6 +119,7 @@ function downgradeSteps(current: CapabilityBand | undefined, target: CapabilityB
|
|
|
102
119
|
}
|
|
103
120
|
|
|
104
121
|
export function routeParentModel(input: ModelRoutePolicyInput): ModelRouteDecision {
|
|
122
|
+
const mappingVersion = input.mappingVersion ?? OPENAI_CODEX_MODEL_ROUTE_MAPPING_VERSION;
|
|
105
123
|
const floor = safetyFloor(input.features);
|
|
106
124
|
const desired = objectiveBand(floor.band, input.objective);
|
|
107
125
|
const catalogDigest = authenticatedCatalogDigest(input.catalog);
|
|
@@ -114,7 +132,8 @@ export function routeParentModel(input: ModelRoutePolicyInput): ModelRouteDecisi
|
|
|
114
132
|
currentModelId: input.current.modelId,
|
|
115
133
|
currentEffort: input.current.effort,
|
|
116
134
|
selectionSource: input.selectionSource,
|
|
117
|
-
catalogDigest
|
|
135
|
+
catalogDigest,
|
|
136
|
+
mappingVersion
|
|
118
137
|
} as const;
|
|
119
138
|
if (input.mode === "off") return createModelRouteDecision({
|
|
120
139
|
...common, capabilityBand: "abstain", fallbackBand: desired, provider: input.current.provider,
|
|
@@ -136,14 +155,15 @@ export function routeParentModel(input: ModelRoutePolicyInput): ModelRouteDecisi
|
|
|
136
155
|
confidence: "low", disposition: "unavailable", reasonCodes: ["authenticated-catalog-unavailable", ...floor.reasons],
|
|
137
156
|
downgradeSteps: 0, enforced: false
|
|
138
157
|
});
|
|
139
|
-
const candidate = exactCandidate(input.catalog, desired);
|
|
158
|
+
const candidate = exactCandidate(input.catalog, desired, mappingVersion);
|
|
140
159
|
if (!candidate) return createModelRouteDecision({
|
|
141
160
|
...common, capabilityBand: "abstain", fallbackBand: desired, provider: null, modelId: null, effort: null,
|
|
142
161
|
confidence: "low", disposition: "unavailable", reasonCodes: ["preferred-model-or-effort-unavailable", "no-silent-substitution", ...floor.reasons],
|
|
143
162
|
downgradeSteps: 0, enforced: false
|
|
144
163
|
});
|
|
145
|
-
const reasons = [...floor.reasons, `objective-${input.objective}`, `candidate-${desired}`, "runtime-catalog-match"
|
|
146
|
-
|
|
164
|
+
const reasons = [...floor.reasons, `objective-${input.objective}`, `candidate-${desired}`, "runtime-catalog-match",
|
|
165
|
+
...(candidate.legacyFallback ? ["legacy-model-fallback"] : [])];
|
|
166
|
+
const steps = downgradeSteps(currentBand(input.current.modelId, input.current.effort), desired);
|
|
147
167
|
if (input.mode === "shadow") return createModelRouteDecision({
|
|
148
168
|
...common, capabilityBand: desired, fallbackBand: null, provider: candidate.model.provider, modelId: candidate.model.modelId,
|
|
149
169
|
effort: candidate.effort, confidence: floor.band === "low" || floor.band === "ultra" ? "high" : "medium",
|
|
@@ -4,7 +4,9 @@ import type { AuthenticatedModelCatalog } from "./authenticated-catalog.ts";
|
|
|
4
4
|
|
|
5
5
|
export const MODEL_ROUTE_DECISION_SCHEMA_VERSION = 1 as const;
|
|
6
6
|
export const MODEL_ROUTE_POLICY_VERSION = "model-route-v1" as const;
|
|
7
|
-
export const
|
|
7
|
+
export const LEGACY_OPENAI_CODEX_MODEL_ROUTE_MAPPING_VERSION = "openai-codex-model-route-map-v1" as const;
|
|
8
|
+
export const OPENAI_CODEX_MODEL_ROUTE_MAPPING_VERSION = "openai-codex-model-route-map-v2" as const;
|
|
9
|
+
export type ModelRouteMappingVersion = typeof LEGACY_OPENAI_CODEX_MODEL_ROUTE_MAPPING_VERSION | typeof OPENAI_CODEX_MODEL_ROUTE_MAPPING_VERSION;
|
|
8
10
|
|
|
9
11
|
export const PARENT_ROUTING_MODES = Object.freeze(["off", "shadow", "recommend", "auto"] as const);
|
|
10
12
|
export const ROUTING_OBJECTIVES = Object.freeze(["intelligence", "balance", "cost"] as const);
|
|
@@ -26,7 +28,7 @@ export type ModelRouteDisposition = "preserved" | "shadowed" | "recommended" | "
|
|
|
26
28
|
export type ModelRouteDecision = {
|
|
27
29
|
schemaVersion: typeof MODEL_ROUTE_DECISION_SCHEMA_VERSION;
|
|
28
30
|
policyVersion: typeof MODEL_ROUTE_POLICY_VERSION;
|
|
29
|
-
mappingVersion:
|
|
31
|
+
mappingVersion: ModelRouteMappingVersion;
|
|
30
32
|
featureHash: string;
|
|
31
33
|
mode: ParentRoutingMode;
|
|
32
34
|
objective: RoutingObjective;
|
|
@@ -88,13 +90,14 @@ export function authenticatedCatalogDigest(catalog: AuthenticatedModelCatalog):
|
|
|
88
90
|
}
|
|
89
91
|
|
|
90
92
|
export function createModelRouteDecision(
|
|
91
|
-
input: Omit<ModelRouteDecision, "schemaVersion" | "policyVersion" | "mappingVersion" | "decisionDigest">
|
|
93
|
+
input: Omit<ModelRouteDecision, "schemaVersion" | "policyVersion" | "mappingVersion" | "decisionDigest"> & { mappingVersion?: ModelRouteMappingVersion }
|
|
92
94
|
): ModelRouteDecision {
|
|
95
|
+
const { mappingVersion = OPENAI_CODEX_MODEL_ROUTE_MAPPING_VERSION, ...decisionInput } = input;
|
|
93
96
|
const payload = {
|
|
94
97
|
schemaVersion: MODEL_ROUTE_DECISION_SCHEMA_VERSION,
|
|
95
98
|
policyVersion: MODEL_ROUTE_POLICY_VERSION,
|
|
96
|
-
mappingVersion
|
|
97
|
-
...structuredClone(
|
|
99
|
+
mappingVersion,
|
|
100
|
+
...structuredClone(decisionInput)
|
|
98
101
|
} satisfies Omit<ModelRouteDecision, "decisionDigest">;
|
|
99
102
|
return validateModelRouteDecision({ ...payload, decisionDigest: digestPayload(payload) });
|
|
100
103
|
}
|
|
@@ -108,7 +111,8 @@ export function modelRouteDecisionValidationErrors(input: unknown): string[] {
|
|
|
108
111
|
];
|
|
109
112
|
if (value.schemaVersion !== MODEL_ROUTE_DECISION_SCHEMA_VERSION
|
|
110
113
|
|| value.policyVersion !== MODEL_ROUTE_POLICY_VERSION
|
|
111
|
-
|| value.mappingVersion !==
|
|
114
|
+
|| (value.mappingVersion !== LEGACY_OPENAI_CODEX_MODEL_ROUTE_MAPPING_VERSION
|
|
115
|
+
&& value.mappingVersion !== OPENAI_CODEX_MODEL_ROUTE_MAPPING_VERSION)) errors.push("model route schema/policy/mapping version is invalid");
|
|
112
116
|
if (typeof value.featureHash !== "string" || !HASH.test(value.featureHash)) errors.push("featureHash must be sha256 hex");
|
|
113
117
|
if (!PARENT_ROUTING_MODES.includes(value.mode as ParentRoutingMode)) errors.push("mode is invalid");
|
|
114
118
|
if (!ROUTING_OBJECTIVES.includes(value.objective as RoutingObjective)) errors.push("objective is invalid");
|