diff --git a/docs/host-persistence.md b/docs/host-persistence.md index 679e3fda5..9894c1ff6 100644 --- a/docs/host-persistence.md +++ b/docs/host-persistence.md @@ -568,9 +568,13 @@ writes which Pie intentionally does not own: **Daemon cold transcript open** is a Developer-approved exception: while a Pie session holds no live Pi child and none is starting, that session may call `SessionManager.findById` and then `SessionManager.open` in the daemon - process (`packages/server/src/harness/session.ts`). Pi 0.99.1 still owns the - file format. `open` is not read-only. On Pi 0.99.1 it may rewrite the - transcript when repairing or migrating it: + process (`packages/server/src/harness/session.ts`). Pi still owns the file + format. `open` is not read-only. On Pi 0.99.1 and 1.0.2 it may rewrite the + transcript when repairing or migrating it. Pi 1.0.2's `open` matches 0.99.1: + `dist/core/session-manager.js` is byte-identical, as are the modules it + depends on (`dist/core/messages.js`, `dist/utils/paths.js`), and the + `config.js` exports it uses (`getAgentDir`, `getSessionsDir`, `APP_NAME`) + are unchanged, so 1.0.2 adds no `open` side effects: | Property | Current contract | | ------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | @@ -580,9 +584,22 @@ writes which Pie intentionally does not own: | Repair writes | Only inside Pi's `open`, and only for these cases. A final parsed entry with no trailing newline is repaired by appending one `\n` (`appendFileSync`) after the header is validated. A header version below 3 (missing counts as 1) is migrated in memory and the whole file is rewritten by `_rewriteFile` (`openSync` with `"w"`, then one JSON line plus `\n` per entry). A zero-byte file is rewritten with a version-3 session header at that same path. A non-empty file that is not a Pi session throws and is left unchanged. | | Atomicity | Newline repair is one append. `_rewriteFile` truncates then rewrites; it is not temp-file plus rename. A crash during that rewrite can leave a short file. | | Concurrency | One Pie session holds at most one daemon `SessionManager`. A held or still-starting Pi child is the only reader; the daemon does not `open` then. Starting or releasing the child drops the daemon handle first so the two do not both keep the file. There is no lock against another daemon or a user `pi` on the same file. A cold read that already opened may still fold its in-memory copy after the handle is dropped; it does not append. | - | Compatibility | Migrated files stay at version 3. Pie downgrade does not reverse the migration, the added newline, or a header written into a previously empty file. Older JSONL readers can still read the rewritten lines if they tolerate version 3. Further `open` side effects in a newer Pi need a new persistence decision. | + | Compatibility | Migrated files stay at version 3. Pie downgrade does not reverse the migration, the added newline, or a header written into a previously empty file. Older JSONL readers can still read the rewritten lines if they tolerate version 3. The comparison above covers Pi 1.0.2; it adds no `open` side effects. Further `open` side effects in a Pi newer than 1.0.2 need a new persistence decision. | | Retention | Pie session delete and uninstall do not remove the transcript or directories `findById` created. Permissions follow the process umask. Transcripts may contain prompts and tool output; this path does not copy them into Pie logs. | + **MCP OAuth credentials** are Pi-owned state in + `$PI_CODING_AGENT_DIR/mcp-auth.json` (`PI_CODING_AGENT_DIR` defaults to + `~/.pi/agent`). Pi 1.0 keys entries by server name and URL + (`mcp__|`, with `-` in the name replaced by `_`) instead of the + URL alone. The first time a server loads a legacy URL-only entry, Pi copies + it onto that server's name+URL key and deletes the URL-only key. Another + server with the same URL does not receive those credentials and must sign + in. The file holds OAuth client registration and tokens. Pi creates it mode + `0600` and rewrites it in place under its auth-file lock. Pie does not read, + migrate, or delete it, and uninstall does not remove it. A Pie or `pi` older + than 1.0 that uses the same agent directory, including after rollback, still + looks up the URL-only key, so those MCP servers must be signed in again. + 2. **Workspace mutation.** Agent tools and commands may create, edit, rename, or delete arbitrary files under the selected project/worktree and may invoke other host tools with their own state. The paths and data structures are diff --git a/packages/server/src/harness/pi/rpc/json-event.ts b/packages/server/src/harness/pi/rpc/json-event.ts index a0469638f..867d84192 100644 --- a/packages/server/src/harness/pi/rpc/json-event.ts +++ b/packages/server/src/harness/pi/rpc/json-event.ts @@ -1,5 +1,5 @@ /** - * Vendored from @earendil-works/pi-coding-agent v0.99.1 + * Vendored from @earendil-works/pi-coding-agent v1.0.2 * (`packages/coding-agent/src/modes/json-event.ts`). */ diff --git a/packages/server/src/harness/pi/rpc/jsonl.ts b/packages/server/src/harness/pi/rpc/jsonl.ts index 1b69fc4fa..fa4fb8397 100644 --- a/packages/server/src/harness/pi/rpc/jsonl.ts +++ b/packages/server/src/harness/pi/rpc/jsonl.ts @@ -1,5 +1,5 @@ /** - * Vendored from @earendil-works/pi-coding-agent v0.99.1 + * Vendored from @earendil-works/pi-coding-agent v1.0.2 * (`packages/coding-agent/src/modes/rpc/jsonl.ts`). */ diff --git a/packages/server/src/harness/pi/rpc/main.ts b/packages/server/src/harness/pi/rpc/main.ts index 70fd173c2..966e10113 100644 --- a/packages/server/src/harness/pi/rpc/main.ts +++ b/packages/server/src/harness/pi/rpc/main.ts @@ -1,6 +1,6 @@ /** * Pie-owned Pi RPC child. Session construction uses the published SDK; - * the JSONL loop is `./rpc-mode.ts` (vendored from Pi v0.99.1). + * the JSONL loop is `./rpc-mode.ts` (vendored from Pi v1.0.2). * * Do not import package `runRpcMode` or spawn `./rpc-entry`: pie owns * extension bind/UI/protocol here, and extension loading via diff --git a/packages/server/src/harness/pi/rpc/output-guard.ts b/packages/server/src/harness/pi/rpc/output-guard.ts index 2edb81b2b..4eb3a7e0c 100644 --- a/packages/server/src/harness/pi/rpc/output-guard.ts +++ b/packages/server/src/harness/pi/rpc/output-guard.ts @@ -1,5 +1,5 @@ /** - * Vendored from @earendil-works/pi-coding-agent v0.99.1 + * Vendored from @earendil-works/pi-coding-agent v1.0.2 * (`packages/coding-agent/src/core/output-guard.ts`). * RPC JSONL must own stdout; agent console noise is redirected to stderr. */ diff --git a/packages/server/src/harness/pi/rpc/rpc-mode.ts b/packages/server/src/harness/pi/rpc/rpc-mode.ts index 548d567ba..b2600ca82 100644 --- a/packages/server/src/harness/pi/rpc/rpc-mode.ts +++ b/packages/server/src/harness/pi/rpc/rpc-mode.ts @@ -1,5 +1,5 @@ /** - * Vendored from @earendil-works/pi-coding-agent v0.99.1 + * Vendored from @earendil-works/pi-coding-agent v1.0.2 * (`packages/coding-agent/src/modes/rpc/rpc-mode.ts`). * * Pie owns this loop so extension bind (`session.bindExtensions`), the RPC diff --git a/packages/server/src/harness/pi/rpc/rpc-types.ts b/packages/server/src/harness/pi/rpc/rpc-types.ts index a83febf60..542bf83e3 100644 --- a/packages/server/src/harness/pi/rpc/rpc-types.ts +++ b/packages/server/src/harness/pi/rpc/rpc-types.ts @@ -1,5 +1,5 @@ /** - * Vendored from @earendil-works/pi-coding-agent v0.99.1 + * Vendored from @earendil-works/pi-coding-agent v1.0.2 * (`packages/coding-agent/src/modes/rpc/rpc-types.ts`). * Pie owns this command table. */ diff --git a/packages/server/test/harness/pi/rpc-bundle.test.ts b/packages/server/test/harness/pi/rpc-bundle.test.ts index bf870ac32..d18cedc47 100644 --- a/packages/server/test/harness/pi/rpc-bundle.test.ts +++ b/packages/server/test/harness/pi/rpc-bundle.test.ts @@ -116,7 +116,7 @@ layer(NodeServices.layer, { excludeTestServices: true })("Pi RPC bundle", (it) = assert.equal(getModel("xai", "grok-4.6").provider, "xai"); assert.ok(builtInExtensions.some((extension) => extension.name === "llama.cpp")); assert.equal(getPackageDir(), path.join(process.cwd(), "runtime")); - assert.equal(VERSION, "0.99.1"); + assert.equal(VERSION, "1.0.2"); for (const file of [getReadmePath(), path.join(getDocsPath(), "extensions.md"), path.join(getExamplesPath(), "sdk/06-extensions.ts"), path.join(getPackageDir(), "CHANGELOG.md")]) { diff --git a/patches/@earendil-works__pi-coding-agent@0.99.1.patch b/patches/@earendil-works__pi-coding-agent@1.0.2.patch similarity index 97% rename from patches/@earendil-works__pi-coding-agent@0.99.1.patch rename to patches/@earendil-works__pi-coding-agent@1.0.2.patch index 2d39feed6..4ed02dd12 100644 --- a/patches/@earendil-works__pi-coding-agent@0.99.1.patch +++ b/patches/@earendil-works__pi-coding-agent@1.0.2.patch @@ -1,5 +1,5 @@ diff --git a/dist/index.d.ts b/dist/index.d.ts -index 045ddb2aaa9dc0b2f1dc9c4cd81e4278a08131d2..da92b3d93de07227423220d8b66de2c76307f4b4 100644 +index 9f9bd7370e5ecc288de58d20e81b2a0aadb6ea4b..a8182623f7fc65fc859806a1a007900862f36bfe 100644 --- a/dist/index.d.ts +++ b/dist/index.d.ts @@ -1,3 +1,5 @@ @@ -290,18 +290,18 @@ index 7c40360ce63bc65d8eff063379bfce8646e9389b..a445a5f73bd4f129faaddc6db761c3e9 +export function supportsLanguage(_name) { return false; } diff --git a/examples/extensions/custom-provider-anthropic/package-lock.json b/examples/extensions/custom-provider-anthropic/package-lock.json deleted file mode 100644 -index 0f04a4b6e990ec2354e48dd096522edbe95fe8bf..0000000000000000000000000000000000000000 +index bd05ded4a4e3fa90b71cd5167e46fba1060c1822..0000000000000000000000000000000000000000 diff --git a/examples/extensions/gondolin/package-lock.json b/examples/extensions/gondolin/package-lock.json deleted file mode 100644 -index 8ccf39f0447d6635656ae041d9cffc842f7099cb..0000000000000000000000000000000000000000 +index cd411a5c669fa5020451ee5df7abea0fdf92b903..0000000000000000000000000000000000000000 diff --git a/examples/extensions/sandbox/package-lock.json b/examples/extensions/sandbox/package-lock.json deleted file mode 100644 -index b701a1ba670ce5ea05dfcd5c5e7566ba7f703810..0000000000000000000000000000000000000000 +index 8966a1ac64e89bbf59340c3eab342432926f5886..0000000000000000000000000000000000000000 diff --git a/examples/extensions/with-deps/package-lock.json b/examples/extensions/with-deps/package-lock.json deleted file mode 100644 -index 2b01794b0f89bcebf1d6bf38cbf356d65b8fe6b9..0000000000000000000000000000000000000000 +index dff4bb95909145d4d7677322458af92b48f39371..0000000000000000000000000000000000000000 diff --git a/package.json b/package.json -index 22b6fdcb43e81f4eb7f782c44e4d659293dcb544..c5012a27d2bebc9358970b0cabf7c270eefefbd6 100644 +index 90f4c62dcd7e5ce51134f5da9f69937eba7da02d..01ece5041cc8017d99562f279054e908d7bdae6f 100644 --- a/package.json +++ b/package.json @@ -16,6 +16,14 @@ diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index b6de3315b..200a535bf 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -245,8 +245,8 @@ catalogs: version: 2.0.0-beta.35 pi: '@earendil-works/pi-coding-agent': - specifier: 0.99.1 - version: 0.99.1 + specifier: 1.0.2 + version: 1.0.2 tailwind: '@tailwindcss/vite': specifier: ^4.3.3 @@ -300,7 +300,7 @@ overrides: packageExtensionsChecksum: sha256-krQ8w+xxiZ9Mgc7ennDQqwconiHv6V6eTOTbkuDELx4= patchedDependencies: - '@earendil-works/pi-coding-agent@0.99.1': a8b30f4cb67fa1e0a8152b28ca7ddafc34b8c9767df094ccfe95f0cad4743e90 + '@earendil-works/pi-coding-agent@1.0.2': 3d84f740f7394ce34f715046358dc7b41dc56ee2d9916e3a3a42ab15edf429cc '@shadcn/lint@0.1.0': 273b110768f4b3df665b11a0b5b87b5814ecc513382db2cc9647529606554bbf react-scan@0.5.7: 40dc21f57d476ff8623ca33e24df589d1e7ce31695648f2f80a72a3359a76b65 @@ -649,7 +649,7 @@ importers: dependencies: '@earendil-works/pi-coding-agent': specifier: catalog:pi - version: 0.99.1(patch_hash=a8b30f4cb67fa1e0a8152b28ca7ddafc34b8c9767df094ccfe95f0cad4743e90)(@aws-sdk/credential-provider-node@3.972.84)(@modelcontextprotocol/sdk@1.29.0(supports-color@10.2.2)(zod@4.6.5))(@smithy/signature-v4@5.7.3)(supports-color@10.2.2)(ws@8.21.3)(zod@4.6.5) + version: 1.0.2(patch_hash=3d84f740f7394ce34f715046358dc7b41dc56ee2d9916e3a3a42ab15edf429cc)(@aws-sdk/credential-provider-node@3.972.84)(@modelcontextprotocol/sdk@1.29.0(supports-color@10.2.2)(zod@4.6.5))(@smithy/signature-v4@5.7.3)(supports-color@10.2.2)(ws@8.21.3)(zod@4.6.5) '@orpc/contract': specifier: catalog:orpc version: 2.0.0-beta.35 @@ -721,7 +721,7 @@ importers: devDependencies: '@earendil-works/pi-coding-agent': specifier: catalog:pi - version: 0.99.1(patch_hash=a8b30f4cb67fa1e0a8152b28ca7ddafc34b8c9767df094ccfe95f0cad4743e90)(@aws-sdk/credential-provider-node@3.972.84)(@modelcontextprotocol/sdk@1.29.0(supports-color@10.2.2)(zod@4.6.5))(@smithy/signature-v4@5.7.3)(supports-color@10.2.2)(ws@8.21.3)(zod@4.6.5) + version: 1.0.2(patch_hash=3d84f740f7394ce34f715046358dc7b41dc56ee2d9916e3a3a42ab15edf429cc)(@aws-sdk/credential-provider-node@3.972.84)(@modelcontextprotocol/sdk@1.29.0(supports-color@10.2.2)(zod@4.6.5))(@smithy/signature-v4@5.7.3)(supports-color@10.2.2)(ws@8.21.3)(zod@4.6.5) '@getpie/typescript': specifier: workspace:* version: link:../../tools/typescript @@ -743,7 +743,7 @@ importers: devDependencies: '@earendil-works/pi-coding-agent': specifier: catalog:pi - version: 0.99.1(patch_hash=a8b30f4cb67fa1e0a8152b28ca7ddafc34b8c9767df094ccfe95f0cad4743e90)(@aws-sdk/credential-provider-node@3.972.84)(@modelcontextprotocol/sdk@1.29.0(supports-color@10.2.2)(zod@4.6.5))(@smithy/signature-v4@5.7.3)(supports-color@10.2.2)(ws@8.21.3)(zod@4.6.5) + version: 1.0.2(patch_hash=3d84f740f7394ce34f715046358dc7b41dc56ee2d9916e3a3a42ab15edf429cc)(@aws-sdk/credential-provider-node@3.972.84)(@modelcontextprotocol/sdk@1.29.0(supports-color@10.2.2)(zod@4.6.5))(@smithy/signature-v4@5.7.3)(supports-color@10.2.2)(ws@8.21.3)(zod@4.6.5) '@effect/platform-node': specifier: 4.0.0-rc.115 version: 4.0.0-rc.115(effect@4.0.0-rc.115)(redis@6.2.1(@opentelemetry/api@1.9.1)) @@ -800,13 +800,13 @@ importers: dependencies: '@earendil-works/pi-coding-agent': specifier: catalog:pi - version: 0.99.1(patch_hash=a8b30f4cb67fa1e0a8152b28ca7ddafc34b8c9767df094ccfe95f0cad4743e90)(@aws-sdk/credential-provider-node@3.972.84)(@modelcontextprotocol/sdk@1.29.0(supports-color@10.2.2)(zod@4.6.5))(@smithy/signature-v4@5.7.3)(supports-color@10.2.2)(ws@8.21.3)(zod@4.6.5) + version: 1.0.2(patch_hash=3d84f740f7394ce34f715046358dc7b41dc56ee2d9916e3a3a42ab15edf429cc)(@aws-sdk/credential-provider-node@3.972.84)(@modelcontextprotocol/sdk@1.29.0(supports-color@10.2.2)(zod@4.6.5))(@smithy/signature-v4@5.7.3)(supports-color@10.2.2)(ws@8.21.3)(zod@4.6.5) '@effect/platform-node': specifier: 4.0.0-rc.115 version: 4.0.0-rc.115(effect@4.0.0-rc.115)(redis@6.2.1(@opentelemetry/api@1.9.1)) '@ff-labs/pi-fff': specifier: 0.10.6 - version: 0.10.6(@earendil-works/pi-coding-agent@0.99.1(patch_hash=a8b30f4cb67fa1e0a8152b28ca7ddafc34b8c9767df094ccfe95f0cad4743e90)(@aws-sdk/credential-provider-node@3.972.84)(@modelcontextprotocol/sdk@1.29.0(supports-color@10.2.2)(zod@4.6.5))(@smithy/signature-v4@5.7.3)(supports-color@10.2.2)(ws@8.21.3)(zod@4.6.5))(@earendil-works/pi-tui@0.99.1)(@sinclair/typebox@0.34.52) + version: 0.10.6(@earendil-works/pi-coding-agent@1.0.2(patch_hash=3d84f740f7394ce34f715046358dc7b41dc56ee2d9916e3a3a42ab15edf429cc)(@aws-sdk/credential-provider-node@3.972.84)(@modelcontextprotocol/sdk@1.29.0(supports-color@10.2.2)(zod@4.6.5))(@smithy/signature-v4@5.7.3)(supports-color@10.2.2)(ws@8.21.3)(zod@4.6.5))(@earendil-works/pi-tui@1.0.2)(@sinclair/typebox@0.34.52) '@getpie/contract': specifier: workspace:* version: link:../contract @@ -1078,8 +1078,8 @@ packages: engines: {node: '>=20.19.0'} hasBin: true - '@anthropic-ai/sdk@0.124.0': - resolution: {integrity: sha512-cN5O8i9UVxHeOQAzj/XjshWXG8KiibJDw9OGpH2Z/eR3n/RBxdoLxDJOcfqAJWvjaMDFfHTBADU04hWRJVkDyA==} + '@anthropic-ai/sdk@0.129.0': + resolution: {integrity: sha512-MH7LB20kNpGLUpPTe2OG5XvL/KhX8HUO9XyBaFjgFk6TLS4Xjt0VPIuMKywe7POKKPslX+QxSlVok9e+8kG5Nw==} hasBin: true peerDependencies: zod: ^3.25.0 || ^4.0.0 @@ -1436,38 +1436,38 @@ packages: '@date-fns/tz@1.5.0': resolution: {integrity: sha512-lwYN/vDPeNRULcepoE/LO2Pgx+7/RV+S9ARfbc9lr2DtGkOD7pAiruHvbR1RX3Qyf6ja47EWJDMsNK5vK08DJg==} - '@earendil-works/chord@0.99.1': - resolution: {integrity: sha512-4xyn0IBzJ+Xu/iOGi2hjXJGAR61QEhEWZsIqTDqr+GmItdquYwBO5jYFnqGiBaTqlY12/EpM7QHoEKSHbyvOug==} + '@earendil-works/chord@1.0.2': + resolution: {integrity: sha512-eUXGZjigyEQsFiT/oBJUOaCrzYZRmqf8AgLrlbyuS4u02hjSVhLYRi3xqk1o4UERCgRfjRegqwj/oucawIR7YQ==} engines: {node: '>=22.19.0'} - '@earendil-works/pi-agent-core@0.99.1': - resolution: {integrity: sha512-zywvWnj5FujeuFI/x/CJHwwxhcLIQgjqseTA+bQgX4O8gJTcgjRd/I8SZnQDqJvxC9QcV12ujiGLviv6EgwcCg==} + '@earendil-works/pi-agent-core@1.0.2': + resolution: {integrity: sha512-VRfewY1R5mbedJzlm01PxdCmqU8QrSXjXXhV50bp6rvVuT8YYQv1inTXRY4YzssmGAYpkC2rXipJKP5BpBFXew==} engines: {node: '>=22.19.0'} - '@earendil-works/pi-ai@0.99.1': - resolution: {integrity: sha512-4nV9JKc94iPX8bwdGPc2nTuVPKIPsffhnp3WoN9NYCNqbtoOF8LhYcIs/+Sn/alroqJK/5QRu6/Z6Ck+n0hyBA==} + '@earendil-works/pi-ai@1.0.2': + resolution: {integrity: sha512-JP59xGlSAQ/HhQ6EHN5qmneBlWfDyu6FPPryAvAaSo8A38ubAsEpS9YisCM5Jbbns0srrDffLZonE0OXorHI5A==} engines: {node: '>=22.19.0'} hasBin: true - '@earendil-works/pi-codemode@0.99.1': - resolution: {integrity: sha512-oh8TMsBI3SWTN3xTQtX8u5n+BKhnVXcFagroWumfn6/WWfBnDYL/LmeQtjLb83WRTb9rcu+ZdK8rFa4vggvCJg==} + '@earendil-works/pi-codemode@1.0.2': + resolution: {integrity: sha512-tvfDSVz984ra/4y/hIFmYGpP5ojC+C6/ey+DNbjTzfJvbXviW4JYTXwVcm33KAceI0xcOuE+P1yRGLtQgis0/w==} engines: {node: '>=22.19.0'} - '@earendil-works/pi-coding-agent@0.99.1': - resolution: {integrity: sha512-cWUrTOqA5M73cOYMgsh9PlhDrsBhavd+n5kVY6F7BGbGl1RjqCteVCoeVMVqhngoGACVDyw1tbLjajL8l9jrHg==} + '@earendil-works/pi-coding-agent@1.0.2': + resolution: {integrity: sha512-3ZdIghMSELMGV3sKi5iASOb1Jwb696fLjmNu0aezaqDxTLLWWoRpqBYkGxJ1CgAMCbtfqXWEF0lcRrlVXmiEGQ==} engines: {node: '>=22.19.0'} hasBin: true - '@earendil-works/pi-mcp@0.99.1': - resolution: {integrity: sha512-YCFGPkmDzLwQuIzwfbP6Vuk/g/ukKpZhwTpbcfzomuI1Fkiu6hHRkOGwAqsO3G8cTkZWkM8vmOkFJjStQNC4qA==} + '@earendil-works/pi-mcp@1.0.2': + resolution: {integrity: sha512-ED3+q41xLQkxzdadZIQy68SLYcqCJbve8iGbGkZoWjPJ9OZCPHTKcof24fjMO1LfnbIl1uMfhRBueS6IfdiCbQ==} engines: {node: '>=22.19.0'} - '@earendil-works/pi-telemetry@0.99.1': - resolution: {integrity: sha512-9PBPjGk+TXRtuMianpqBbHBpYpyKusESF6rwdmgD0WTZSTUQXhcKEO0hAINRLuSwy4V7yPvXV+EVV0ONY7mbpQ==} + '@earendil-works/pi-telemetry@1.0.2': + resolution: {integrity: sha512-Ev5h9TE8nEXHCfRKhWj0qpUFhQgVqNteS95vsM2KNGRGm533vOO2ruDPaEwImBKPMBKXy4omz3D6V2cm41gLOQ==} engines: {node: '>=22.19.0'} - '@earendil-works/pi-tui@0.99.1': - resolution: {integrity: sha512-gZp0Guat96Fr1AuC/xqVz5B2lulZakp/PxD1lXx3lSgBdjiqmwYhJbcQ0HRrGAfy0WtMGn9b05RJr5qJf7oIuw==} + '@earendil-works/pi-tui@1.0.2': + resolution: {integrity: sha512-ElfzjnckohEjzHK5Q5iOpqLpQ1YbM/c/XmjBdPVR5k4uoorQPnny5BtT+rvC0cAjVVCUOHWAWppust7FAaEsOQ==} engines: {node: '>=22.19.0'} '@effect/platform-node-shared@4.0.0-rc.115': @@ -7407,6 +7407,10 @@ packages: resolution: {integrity: sha512-YGdwFmQXGQulT63SnVD9JI1hV2EwGnZHrgSlUMQaOkvnhYA200QwDeb7DfVT8UBt34lBvbkjtz8VRFJugHjsRQ==} engines: {node: ^20.19.0 || >=22.13.0} + oxlint-plugin-react-doctor@0.9.17: + resolution: {integrity: sha512-j6tdFoJbLztISYNlw7LMT+6naqhVsXTNn7drhoGRIqf0x2mCSD2Ur71hK0E/VrLens355finI6j+sMqHxHpEfA==} + engines: {node: ^20.19.0 || >=22.13.0} + oxlint-tsgolint@0.24.0: resolution: {integrity: sha512-giCk5sEvG02d5tzPmFMX3hem8ndzEEu1xvGYS5OwNfO2WGl6ZVxt5LjE0yiMDoz94INI7XkXwgFAQiydPvVHDw==} hasBin: true @@ -7802,6 +7806,11 @@ packages: engines: {node: ^20.19.0 || >=22.13.0} hasBin: true + react-doctor@0.9.17: + resolution: {integrity: sha512-YCsjYk6MocO/oBhVxCcKvPotFxEOf/WJep/oF7jrpyVUBVKDKdpt7jVwTxrJrFE8uALMmVTljzXNTIjoL3talg==} + engines: {node: ^20.19.0 || >=22.13.0} + hasBin: true + react-dom@19.3.0: resolution: {integrity: sha512-JDk8dgif51OjFoDE70+OT9ICyYr+69HlmihNwp1+Nsfbna3t5sIiCa9ZJktDmQ4/1b/rn26hIAR2uYXDMr5r0Q==} peerDependencies: @@ -9000,7 +9009,7 @@ snapshots: tinyexec: 1.3.0 tinyglobby: 0.2.17 - '@anthropic-ai/sdk@0.124.0(zod@4.6.5)': + '@anthropic-ai/sdk@0.129.0(zod@4.6.5)': dependencies: json-schema-to-ts: 3.1.1 standardwebhooks: 1.1.1 @@ -9700,19 +9709,14 @@ snapshots: '@date-fns/tz@1.5.0': {} - '@earendil-works/chord@0.99.1': + '@earendil-works/chord@1.0.2': dependencies: esbuild: 0.28.2 - '@earendil-works/pi-agent-core@0.99.1(@aws-sdk/credential-provider-node@3.972.84)(@modelcontextprotocol/sdk@1.29.0(supports-color@10.2.2)(zod@4.6.5))(@smithy/signature-v4@5.7.3)(supports-color@10.2.2)(undici@8.10.2)(ws@8.21.3)(zod@4.6.5)': + '@earendil-works/pi-agent-core@1.0.2(@aws-sdk/credential-provider-node@3.972.84)(@modelcontextprotocol/sdk@1.29.0(supports-color@10.2.2)(zod@4.6.5))(@smithy/signature-v4@5.7.3)(supports-color@10.2.2)(undici@8.10.2)(ws@8.21.3)(zod@4.6.5)': dependencies: - '@earendil-works/chord': 0.99.1 - '@earendil-works/pi-ai': 0.99.1(@aws-sdk/credential-provider-node@3.972.84)(@modelcontextprotocol/sdk@1.29.0(supports-color@10.2.2)(zod@4.6.5))(@smithy/signature-v4@5.7.3)(supports-color@10.2.2)(undici@8.10.2)(ws@8.21.3)(zod@4.6.5) - '@earendil-works/pi-telemetry': 0.99.1 - diff: 8.0.4 - ignore: 7.0.8 + '@earendil-works/pi-ai': 1.0.2(@aws-sdk/credential-provider-node@3.972.84)(@modelcontextprotocol/sdk@1.29.0(supports-color@10.2.2)(zod@4.6.5))(@smithy/signature-v4@5.7.3)(supports-color@10.2.2)(undici@8.10.2)(ws@8.21.3)(zod@4.6.5) typebox: 1.3.27 - yaml: 2.9.0 transitivePeerDependencies: - '@aws-sdk/credential-provider-node' - '@modelcontextprotocol/sdk' @@ -9726,11 +9730,11 @@ snapshots: - ws - zod - '@earendil-works/pi-ai@0.99.1(@aws-sdk/credential-provider-node@3.972.84)(@modelcontextprotocol/sdk@1.29.0(supports-color@10.2.2)(zod@4.6.5))(@smithy/signature-v4@5.7.3)(supports-color@10.2.2)(undici@8.10.2)(ws@8.21.3)(zod@4.6.5)': + '@earendil-works/pi-ai@1.0.2(@aws-sdk/credential-provider-node@3.972.84)(@modelcontextprotocol/sdk@1.29.0(supports-color@10.2.2)(zod@4.6.5))(@smithy/signature-v4@5.7.3)(supports-color@10.2.2)(undici@8.10.2)(ws@8.21.3)(zod@4.6.5)': dependencies: - '@anthropic-ai/sdk': 0.124.0(zod@4.6.5) + '@anthropic-ai/sdk': 0.129.0(zod@4.6.5) '@aws-sdk/client-bedrock-runtime': 3.1127.0 - '@earendil-works/pi-telemetry': 0.99.1 + '@earendil-works/pi-telemetry': 1.0.2 '@google/genai': 2.21.0(@modelcontextprotocol/sdk@1.29.0(supports-color@10.2.2)(zod@4.6.5))(supports-color@10.2.2) '@smithy/node-http-handler': 4.12.1 http-proxy-agent: 9.1.0(supports-color@10.2.2) @@ -9751,19 +9755,20 @@ snapshots: - ws - zod - '@earendil-works/pi-codemode@0.99.1': + '@earendil-works/pi-codemode@1.0.2': dependencies: quickjs-wasi: 3.6.2 - '@earendil-works/pi-coding-agent@0.99.1(patch_hash=a8b30f4cb67fa1e0a8152b28ca7ddafc34b8c9767df094ccfe95f0cad4743e90)(@aws-sdk/credential-provider-node@3.972.84)(@modelcontextprotocol/sdk@1.29.0(supports-color@10.2.2)(zod@4.6.5))(@smithy/signature-v4@5.7.3)(supports-color@10.2.2)(ws@8.21.3)(zod@4.6.5)': + '@earendil-works/pi-coding-agent@1.0.2(patch_hash=3d84f740f7394ce34f715046358dc7b41dc56ee2d9916e3a3a42ab15edf429cc)(@aws-sdk/credential-provider-node@3.972.84)(@modelcontextprotocol/sdk@1.29.0(supports-color@10.2.2)(zod@4.6.5))(@smithy/signature-v4@5.7.3)(supports-color@10.2.2)(ws@8.21.3)(zod@4.6.5)': dependencies: - '@earendil-works/chord': 0.99.1 - '@earendil-works/pi-agent-core': 0.99.1(@aws-sdk/credential-provider-node@3.972.84)(@modelcontextprotocol/sdk@1.29.0(supports-color@10.2.2)(zod@4.6.5))(@smithy/signature-v4@5.7.3)(supports-color@10.2.2)(undici@8.10.2)(ws@8.21.3)(zod@4.6.5) - '@earendil-works/pi-ai': 0.99.1(@aws-sdk/credential-provider-node@3.972.84)(@modelcontextprotocol/sdk@1.29.0(supports-color@10.2.2)(zod@4.6.5))(@smithy/signature-v4@5.7.3)(supports-color@10.2.2)(undici@8.10.2)(ws@8.21.3)(zod@4.6.5) - '@earendil-works/pi-codemode': 0.99.1 - '@earendil-works/pi-mcp': 0.99.1 - '@earendil-works/pi-tui': 0.99.1 + '@earendil-works/chord': 1.0.2 + '@earendil-works/pi-agent-core': 1.0.2(@aws-sdk/credential-provider-node@3.972.84)(@modelcontextprotocol/sdk@1.29.0(supports-color@10.2.2)(zod@4.6.5))(@smithy/signature-v4@5.7.3)(supports-color@10.2.2)(undici@8.10.2)(ws@8.21.3)(zod@4.6.5) + '@earendil-works/pi-ai': 1.0.2(@aws-sdk/credential-provider-node@3.972.84)(@modelcontextprotocol/sdk@1.29.0(supports-color@10.2.2)(zod@4.6.5))(@smithy/signature-v4@5.7.3)(supports-color@10.2.2)(undici@8.10.2)(ws@8.21.3)(zod@4.6.5) + '@earendil-works/pi-codemode': 1.0.2 + '@earendil-works/pi-mcp': 1.0.2 + '@earendil-works/pi-tui': 1.0.2 '@silvia-odwyer/photon-node': 0.3.4 + brace-expansion: 5.0.12 chalk: 6.0.0 cross-spawn: 7.0.6 diff: 8.0.4 @@ -9791,13 +9796,13 @@ snapshots: - ws - zod - '@earendil-works/pi-mcp@0.99.1': + '@earendil-works/pi-mcp@1.0.2': dependencies: cross-spawn: 7.0.6 - '@earendil-works/pi-telemetry@0.99.1': {} + '@earendil-works/pi-telemetry@1.0.2': {} - '@earendil-works/pi-tui@0.99.1': + '@earendil-works/pi-tui@1.0.2': dependencies: get-east-asian-width: 1.6.0 marked: 18.0.11 @@ -10265,10 +10270,10 @@ snapshots: '@ff-labs/fff-bin-win32-arm64': 0.10.6 '@ff-labs/fff-bin-win32-x64': 0.10.6 - '@ff-labs/pi-fff@0.10.6(@earendil-works/pi-coding-agent@0.99.1(patch_hash=a8b30f4cb67fa1e0a8152b28ca7ddafc34b8c9767df094ccfe95f0cad4743e90)(@aws-sdk/credential-provider-node@3.972.84)(@modelcontextprotocol/sdk@1.29.0(supports-color@10.2.2)(zod@4.6.5))(@smithy/signature-v4@5.7.3)(supports-color@10.2.2)(ws@8.21.3)(zod@4.6.5))(@earendil-works/pi-tui@0.99.1)(@sinclair/typebox@0.34.52)': + '@ff-labs/pi-fff@0.10.6(@earendil-works/pi-coding-agent@1.0.2(patch_hash=3d84f740f7394ce34f715046358dc7b41dc56ee2d9916e3a3a42ab15edf429cc)(@aws-sdk/credential-provider-node@3.972.84)(@modelcontextprotocol/sdk@1.29.0(supports-color@10.2.2)(zod@4.6.5))(@smithy/signature-v4@5.7.3)(supports-color@10.2.2)(ws@8.21.3)(zod@4.6.5))(@earendil-works/pi-tui@1.0.2)(@sinclair/typebox@0.34.52)': dependencies: - '@earendil-works/pi-coding-agent': 0.99.1(patch_hash=a8b30f4cb67fa1e0a8152b28ca7ddafc34b8c9767df094ccfe95f0cad4743e90)(@aws-sdk/credential-provider-node@3.972.84)(@modelcontextprotocol/sdk@1.29.0(supports-color@10.2.2)(zod@4.6.5))(@smithy/signature-v4@5.7.3)(supports-color@10.2.2)(ws@8.21.3)(zod@4.6.5) - '@earendil-works/pi-tui': 0.99.1 + '@earendil-works/pi-coding-agent': 1.0.2(patch_hash=3d84f740f7394ce34f715046358dc7b41dc56ee2d9916e3a3a42ab15edf429cc)(@aws-sdk/credential-provider-node@3.972.84)(@modelcontextprotocol/sdk@1.29.0(supports-color@10.2.2)(zod@4.6.5))(@smithy/signature-v4@5.7.3)(supports-color@10.2.2)(ws@8.21.3)(zod@4.6.5) + '@earendil-works/pi-tui': 1.0.2 '@ff-labs/fff-bun': 0.10.6 '@ff-labs/fff-node': 0.10.6 '@sinclair/typebox': 0.34.52 @@ -15726,6 +15731,15 @@ snapshots: lightningcss: 1.33.0 oxc-parser: 0.148.0 + oxlint-plugin-react-doctor@0.9.17: + dependencies: + '@shaderfrog/glsl-parser': 7.0.1 + '@typescript-eslint/types': 8.70.0 + eslint-scope: 9.1.2 + eslint-visitor-keys: 5.0.1 + lightningcss: 1.33.0 + oxc-parser: 0.148.0 + oxlint-tsgolint@0.24.0: optionalDependencies: '@oxlint-tsgolint/darwin-arm64': 0.24.0 @@ -16225,6 +16239,36 @@ snapshots: - supports-color - vite-plus + react-doctor@0.9.17(@opentelemetry/core@2.9.0(@opentelemetry/api@1.9.1))(eslint@10.7.0(jiti@2.7.0)(supports-color@10.2.2))(oxlint-tsgolint@7.0.2001)(react@19.3.0)(supports-color@10.2.2)(vite-plus@0.2.4(@opentelemetry/api@1.9.1)(@types/node@24.13.4)(@vitest/browser-playwright@5.0.0)(@vitest/ui@5.0.0)(esbuild@0.28.1)(jiti@2.7.0)(jsdom@26.1.0(supports-color@10.2.2))(publint@0.3.24)(tsx@4.23.13)(typescript@5.9.3)(unrun@0.3.1)(vite@8.3.0(@types/node@24.13.4)(esbuild@0.28.1)(jiti@2.7.0)(tsx@4.23.13)(yaml@2.9.0))(yaml@2.9.0)): + dependencies: + '@astrojs/compiler': 4.0.0 + '@sentry/node': 10.65.0(@opentelemetry/core@2.9.0(@opentelemetry/api@1.9.1))(supports-color@10.2.2) + agent-install: 0.0.5 + bippy: 0.6.1(react@19.3.0) + conf: 15.1.0 + confbox: 0.2.4 + eslint-plugin-react-hooks: 7.1.1(eslint@10.7.0(jiti@2.7.0)(supports-color@10.2.2))(supports-color@10.2.2) + is-unicode-supported: 2.1.0 + jiti: 2.7.0 + magicast: 0.5.4 + oxc-parser: 0.148.0 + oxc-resolver: 11.24.2 + oxlint: 1.81.0(oxlint-tsgolint@7.0.2001)(vite-plus@0.2.4(@opentelemetry/api@1.9.1)(@types/node@24.13.4)(@vitest/browser-playwright@5.0.0)(@vitest/ui@5.0.0)(esbuild@0.28.1)(jiti@2.7.0)(jsdom@26.1.0(supports-color@10.2.2))(publint@0.3.24)(tsx@4.23.13)(typescript@5.9.3)(unrun@0.3.1)(vite@8.3.0(@types/node@24.13.4)(esbuild@0.28.1)(jiti@2.7.0)(tsx@4.23.13)(yaml@2.9.0))(yaml@2.9.0)) + oxlint-plugin-react-doctor: 0.9.17 + playwright-core: 1.63.0 + prompts: 2.4.2 + typescript: 5.9.3 + yaml: 2.9.0 + yoga-layout: 3.2.1 + transitivePeerDependencies: + - '@opentelemetry/core' + - '@opentelemetry/exporter-trace-otlp-http' + - eslint + - oxlint-tsgolint + - react + - supports-color + - vite-plus + react-dom@19.3.0(react@19.3.0): dependencies: react: 19.3.0 @@ -16270,7 +16314,7 @@ snapshots: preact: 10.29.7(preact-render-to-string@6.6.5) prompts: 2.4.2 react: 19.3.0 - react-doctor: 0.9.14(@opentelemetry/core@2.9.0(@opentelemetry/api@1.9.1))(eslint@10.7.0(jiti@2.7.0)(supports-color@10.2.2))(oxlint-tsgolint@7.0.2001)(react@19.3.0)(supports-color@10.2.2)(vite-plus@0.2.4(@opentelemetry/api@1.9.1)(@types/node@24.13.4)(@vitest/browser-playwright@5.0.0)(@vitest/ui@5.0.0)(esbuild@0.28.1)(jiti@2.7.0)(jsdom@26.1.0(supports-color@10.2.2))(publint@0.3.24)(tsx@4.23.13)(typescript@5.9.3)(unrun@0.3.1)(vite@8.3.0(@types/node@24.13.4)(esbuild@0.28.1)(jiti@2.7.0)(tsx@4.23.13)(yaml@2.9.0))(yaml@2.9.0)) + react-doctor: 0.9.17(@opentelemetry/core@2.9.0(@opentelemetry/api@1.9.1))(eslint@10.7.0(jiti@2.7.0)(supports-color@10.2.2))(oxlint-tsgolint@7.0.2001)(react@19.3.0)(supports-color@10.2.2)(vite-plus@0.2.4(@opentelemetry/api@1.9.1)(@types/node@24.13.4)(@vitest/browser-playwright@5.0.0)(@vitest/ui@5.0.0)(esbuild@0.28.1)(jiti@2.7.0)(jsdom@26.1.0(supports-color@10.2.2))(publint@0.3.24)(tsx@4.23.13)(typescript@5.9.3)(unrun@0.3.1)(vite@8.3.0(@types/node@24.13.4)(esbuild@0.28.1)(jiti@2.7.0)(tsx@4.23.13)(yaml@2.9.0))(yaml@2.9.0)) react-dom: 19.3.0(react@19.3.0) react-grab: 0.2.0(react@19.3.0) optionalDependencies: diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index e8a48dd0a..543a559d6 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -90,8 +90,8 @@ catalogs: # Pi packages move together. Exact pins: the coding-agent patch key below # is version-specific, and a caret would admit a release the patch misses. pi: - "@earendil-works/pi-coding-agent": 0.99.1 - "@earendil-works/pi-tui": 0.99.1 + "@earendil-works/pi-coding-agent": 1.0.2 + "@earendil-works/pi-tui": 1.0.2 overrides: # These overrides force TRANSITIVE deps onto the catalog version — the # catalog alone only governs workspace package.json entries. Load-bearing: @@ -152,7 +152,7 @@ allowBuilds: # works inside git worktrees); the package's own postinstall would just fail. simple-git-hooks: false patchedDependencies: - "@earendil-works/pi-coding-agent@0.99.1": patches/@earendil-works__pi-coding-agent@0.99.1.patch + "@earendil-works/pi-coding-agent@1.0.2": patches/@earendil-works__pi-coding-agent@1.0.2.patch # react-scan fetches react-grab.com/api/version from `start()` with no way to # opt out — the renderer CSP blocks it and logs an error on every launch. The # patch makes that one function return early; nothing else. On a react-scan