From 987935e8182e014812446d1aa06b7e2f5d9eb68d Mon Sep 17 00:00:00 2001 From: JonathanLab Date: Fri, 31 Jul 2026 13:33:17 +0200 Subject: [PATCH] chore(harness): upgrade Pi to 0.83.0 --- packages/harness/package.json | 1 + .../harness/src/extensions/mcp/schema.test.ts | 13 +++ packages/harness/src/runtime.test.ts | 4 +- pnpm-lock.yaml | 107 +++++++----------- pnpm-workspace.yaml | 8 +- 5 files changed, 60 insertions(+), 73 deletions(-) diff --git a/packages/harness/package.json b/packages/harness/package.json index b0f39fd3c7..a158c46ba3 100644 --- a/packages/harness/package.json +++ b/packages/harness/package.json @@ -97,6 +97,7 @@ "@posthog/shared": "workspace:*", "lru-cache": "^11.1.0", "turndown": "^7.2.4", + "typebox": "1.3.7", "zod": "^4.2.0" }, "devDependencies": { diff --git a/packages/harness/src/extensions/mcp/schema.test.ts b/packages/harness/src/extensions/mcp/schema.test.ts index c96850e6ad..bd0fbe5740 100644 --- a/packages/harness/src/extensions/mcp/schema.test.ts +++ b/packages/harness/src/extensions/mcp/schema.test.ts @@ -1,3 +1,4 @@ +import { Compile } from "typebox/compile"; import { describe, expect, it } from "vitest"; import { convertJsonSchemaToTypebox } from "./schema"; @@ -107,6 +108,18 @@ describe("convertJsonSchemaToTypebox", () => { expect(result.anyOf?.[1]).toMatchObject({ type: "null" }); }); + it("validates nullable arrays", () => { + const schema = convertJsonSchemaToTypebox({ + type: ["array", "null"], + items: { type: "string" }, + }); + const check = Compile(schema); + + expect(check.Check(null)).toBe(true); + expect(check.Check(["value"])).toBe(true); + expect(check.Check([1])).toBe(false); + }); + it.each([["oneOf"], ["anyOf"]])("converts %s to a union", (key) => { const result = convert({ [key]: [{ type: "string" }, { type: "number" }], diff --git a/packages/harness/src/runtime.test.ts b/packages/harness/src/runtime.test.ts index 6314e26b35..d127d073ec 100644 --- a/packages/harness/src/runtime.test.ts +++ b/packages/harness/src/runtime.test.ts @@ -111,7 +111,7 @@ describe("createHarnessRuntime", () => { posthogOAuthCredentials: { access: "access-token", refresh: "refresh-token", - expires: Date.now() + 60_000, + expires: Date.now() + 10 * 60_000, region: "us", }, sessionManager: pi.SessionManager.inMemory(cwd), @@ -150,7 +150,7 @@ describe("createHarnessRuntime", () => { posthogOAuthCredentials: { access: "access-token", refresh: "refresh-token", - expires: Date.now() + 60_000, + expires: Date.now() + 10 * 60_000, region: "us", }, sessionManager: pi.SessionManager.inMemory(cwd), diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index affda653c0..c06bbfb1e0 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -7,17 +7,17 @@ settings: catalogs: default: '@earendil-works/pi-agent-core': - specifier: 0.82.1 - version: 0.82.1 + specifier: 0.83.0 + version: 0.83.0 '@earendil-works/pi-ai': - specifier: 0.82.1 - version: 0.82.1 + specifier: 0.83.0 + version: 0.83.0 '@earendil-works/pi-coding-agent': - specifier: 0.82.1 - version: 0.82.1 + specifier: 0.83.0 + version: 0.83.0 '@earendil-works/pi-tui': - specifier: 0.82.1 - version: 0.82.1 + specifier: 0.83.0 + version: 0.83.0 '@hono/node-server': specifier: ^1.13.7 version: 1.19.9 @@ -780,13 +780,13 @@ importers: version: 0.109.0(zod@4.4.3) '@earendil-works/pi-agent-core': specifier: 'catalog:' - version: 0.82.1(@modelcontextprotocol/sdk@1.29.0(zod@4.4.3))(ws@8.21.1)(zod@4.4.3) + version: 0.83.0(@modelcontextprotocol/sdk@1.29.0(zod@4.4.3))(ws@8.21.1)(zod@4.4.3) '@earendil-works/pi-ai': specifier: 'catalog:' - version: 0.82.1(@modelcontextprotocol/sdk@1.29.0(zod@4.4.3))(ws@8.21.1)(zod@4.4.3) + version: 0.83.0(@modelcontextprotocol/sdk@1.29.0(zod@4.4.3))(ws@8.21.1)(zod@4.4.3) '@earendil-works/pi-coding-agent': specifier: 'catalog:' - version: 0.82.1(@modelcontextprotocol/sdk@1.29.0(zod@4.4.3))(ws@8.21.1)(zod@4.4.3) + version: 0.83.0(@modelcontextprotocol/sdk@1.29.0(zod@4.4.3))(ws@8.21.1)(zod@4.4.3) '@hono/node-server': specifier: ^1.19.9 version: 1.19.9(hono@4.11.7) @@ -1065,13 +1065,13 @@ importers: dependencies: '@earendil-works/pi-ai': specifier: 'catalog:' - version: 0.82.1(@modelcontextprotocol/sdk@1.29.0(zod@4.4.3))(ws@8.21.1)(zod@4.4.3) + version: 0.83.0(@modelcontextprotocol/sdk@1.29.0(zod@4.4.3))(ws@8.21.1)(zod@4.4.3) '@earendil-works/pi-coding-agent': specifier: 'catalog:' - version: 0.82.1(@modelcontextprotocol/sdk@1.29.0(zod@4.4.3))(ws@8.21.1)(zod@4.4.3) + version: 0.83.0(@modelcontextprotocol/sdk@1.29.0(zod@4.4.3))(ws@8.21.1)(zod@4.4.3) '@earendil-works/pi-tui': specifier: 'catalog:' - version: 0.82.1 + version: 0.83.0 '@modelcontextprotocol/sdk': specifier: ^1.29.0 version: 1.29.0(zod@4.4.3) @@ -1084,6 +1084,9 @@ importers: turndown: specifier: ^7.2.4 version: 7.2.4 + typebox: + specifier: 1.3.7 + version: 1.3.7 zod: specifier: 4.4.3 version: 4.4.3 @@ -2684,22 +2687,22 @@ packages: '@drizzle-team/brocli@0.10.2': resolution: {integrity: sha512-z33Il7l5dKjUgGULTqBsQBQwckHh5AbIuxhdsIxDDiZAzBOrZO6q9ogcWC65kU382AfynTfgNumVcNIjuIua6w==} - '@earendil-works/pi-agent-core@0.82.1': - resolution: {integrity: sha512-Z3kloziJIE2dmrisRckZX8zDca/gIv9/YdFAzeoqpHiLV2wsni6bL4hInNSjVKLbqT+4kqLIkph2JQLKvSepjg==} + '@earendil-works/pi-agent-core@0.83.0': + resolution: {integrity: sha512-RorGp9OH5l3ElpuC5a5ZQ2eWcchZGXflXRzVGkV99y3y6tT+LLNyxoYIdVKvTKWEObwhExeQbTH0fI2tE4iX4g==} engines: {node: '>=22.19.0'} - '@earendil-works/pi-ai@0.82.1': - resolution: {integrity: sha512-3WFYRhEp3lQB3444EhPMBcM7zSaEUE3eJgHOR7s4081NLqbw/FsWilIKWXSua0Gv3sRr7m9xMidR3pPDE7jI/A==} + '@earendil-works/pi-ai@0.83.0': + resolution: {integrity: sha512-m3IZD4g3er0V8TC9+Vpgw/sjTKqcJlkcIBy/JvsgRubuuik3tAVzyugUg4rVrShIkkOT69mEd34NEqKUIsl6JQ==} engines: {node: '>=22.19.0'} hasBin: true - '@earendil-works/pi-coding-agent@0.82.1': - resolution: {integrity: sha512-zbkAhoIuDPMF3pKuja0ajZabrMWU29FUMV9A/XMXT/XC1yXs5xt6t6t13GogQFsDrDqbFP4DkZQO1w8rWRAzYA==} + '@earendil-works/pi-coding-agent@0.83.0': + resolution: {integrity: sha512-uYhF+FsZxogoSX/AxBcUdiY+ZklubwaXyAoEGA2eQwsHcyEAhUYIKh/WLXe/a8+k8eTCmxb+ZN2Zo9mzQtzbWw==} engines: {node: '>=22.19.0'} hasBin: true - '@earendil-works/pi-tui@0.82.1': - resolution: {integrity: sha512-9yN8hALfKaxZq7n54EMxqhFCWnMi6LHkraMJ/1YjHiATq75XrI6XDMVppn9EDtiK7Fks8hUe1SDXUTrIvwRWfQ==} + '@earendil-works/pi-tui@0.83.0': + resolution: {integrity: sha512-IoYrb0rORjELmEpNtoCA/U8je3KopMkRAVJRdSzvXRvgb+Huo1gNh8Q5CSZvNOiYtDxJdj2tYZZHZ4B3+IN3hA==} engines: {node: '>=22.19.0'} '@ecies/ciphers@0.2.6': @@ -14855,8 +14858,8 @@ packages: resolution: {integrity: sha512-OZs6gsjF4vMp32qrCbiVSkrFmXtG/AZhY3t0iAMrMBiAZyV9oALtXO8hsrHbMXF9x6L3grlFuwW2oAz7cav+Gw==} engines: {node: '>= 0.6'} - typebox@1.1.38: - resolution: {integrity: sha512-pZ0aQPmMmXoUvSbeuWf/Hzsc+avNw/Zd6VeE8CFgkVGWyuHPJvqeJJDeJqLve+K70LvjYIoleGcoJHPT17cWoA==} + typebox@1.3.7: + resolution: {integrity: sha512-meKuifc33Pccx0O6PdIzYMq3Og8zvP4TIi/a+Bw3AEMZMxOD0+RHGQvpglEe6Zdy3wZ8nqn/j95h8LUZLk/6Hg==} typed-openapi@2.2.7: resolution: {integrity: sha512-iTDy0V9Wc8kuRBeGxJKNhZk3Gye3kqux4gUrMD0grf9h9TQcJ/EI7EGpyXd7PdbuGrsQcTX2t5q0S+vwlzubsA==} @@ -16922,12 +16925,12 @@ snapshots: '@drizzle-team/brocli@0.10.2': {} - '@earendil-works/pi-agent-core@0.82.1(@modelcontextprotocol/sdk@1.29.0(zod@4.4.3))(ws@8.21.1)(zod@4.4.3)': + '@earendil-works/pi-agent-core@0.83.0(@modelcontextprotocol/sdk@1.29.0(zod@4.4.3))(ws@8.21.1)(zod@4.4.3)': dependencies: - '@earendil-works/pi-ai': 0.82.1(@modelcontextprotocol/sdk@1.29.0(zod@4.4.3))(ws@8.21.1)(zod@4.4.3) + '@earendil-works/pi-ai': 0.83.0(@modelcontextprotocol/sdk@1.29.0(zod@4.4.3))(ws@8.21.1)(zod@4.4.3) diff: 8.0.4 ignore: 7.0.5 - typebox: 1.1.38 + typebox: 1.3.7 yaml: 2.9.0 transitivePeerDependencies: - '@modelcontextprotocol/sdk' @@ -16937,7 +16940,7 @@ snapshots: - ws - zod - '@earendil-works/pi-ai@0.82.1(@modelcontextprotocol/sdk@1.29.0(zod@4.4.3))(ws@8.21.1)(zod@4.4.3)': + '@earendil-works/pi-ai@0.83.0(@modelcontextprotocol/sdk@1.29.0(zod@4.4.3))(ws@8.21.1)(zod@4.4.3)': dependencies: '@anthropic-ai/sdk': 0.91.1(zod@4.4.3) '@aws-sdk/client-bedrock-runtime': 3.1048.0 @@ -16949,7 +16952,7 @@ snapshots: https-proxy-agent: 7.0.6 openai: 6.26.0(ws@8.21.1)(zod@4.4.3) partial-json: 0.1.7 - typebox: 1.1.38 + typebox: 1.3.7 transitivePeerDependencies: - '@modelcontextprotocol/sdk' - bufferutil @@ -16958,11 +16961,11 @@ snapshots: - ws - zod - '@earendil-works/pi-coding-agent@0.82.1(@modelcontextprotocol/sdk@1.29.0(zod@4.4.3))(ws@8.21.1)(zod@4.4.3)': + '@earendil-works/pi-coding-agent@0.83.0(@modelcontextprotocol/sdk@1.29.0(zod@4.4.3))(ws@8.21.1)(zod@4.4.3)': dependencies: - '@earendil-works/pi-agent-core': 0.82.1(@modelcontextprotocol/sdk@1.29.0(zod@4.4.3))(ws@8.21.1)(zod@4.4.3) - '@earendil-works/pi-ai': 0.82.1(@modelcontextprotocol/sdk@1.29.0(zod@4.4.3))(ws@8.21.1)(zod@4.4.3) - '@earendil-works/pi-tui': 0.82.1 + '@earendil-works/pi-agent-core': 0.83.0(@modelcontextprotocol/sdk@1.29.0(zod@4.4.3))(ws@8.21.1)(zod@4.4.3) + '@earendil-works/pi-ai': 0.83.0(@modelcontextprotocol/sdk@1.29.0(zod@4.4.3))(ws@8.21.1)(zod@4.4.3) + '@earendil-works/pi-tui': 0.83.0 '@silvia-odwyer/photon-node': 0.3.4 chalk: 5.6.2 cross-spawn: 7.0.6 @@ -16975,7 +16978,7 @@ snapshots: minimatch: 10.2.5 proper-lockfile: 4.1.2 semver: 7.8.0 - typebox: 1.1.38 + typebox: 1.3.7 undici: 8.5.0 yaml: 2.9.0 optionalDependencies: @@ -16988,7 +16991,7 @@ snapshots: - ws - zod - '@earendil-works/pi-tui@0.82.1': + '@earendil-works/pi-tui@0.83.0': dependencies: get-east-asian-width: 1.6.0 marked: 18.0.5 @@ -22625,7 +22628,7 @@ snapshots: sirv: 3.0.2 tinyglobby: 0.2.15 tinyrainbow: 3.1.0 - vitest: 4.1.8(@opentelemetry/api@1.9.1)(@types/node@24.12.0)(@vitest/ui@4.1.8)(jsdom@26.1.0)(msw@2.12.8(@types/node@24.12.0)(typescript@5.9.3))(rolldown-vite@7.3.1(@emnapi/core@1.11.2)(@emnapi/runtime@1.11.2)(@types/node@24.12.0)(esbuild@0.27.2)(jiti@2.7.0)(terser@5.46.0)(tsx@4.22.4)(yaml@2.9.0)) + vitest: 4.1.8(@opentelemetry/api@1.9.1)(@types/node@25.2.0)(@vitest/ui@4.1.8)(jsdom@26.1.0)(msw@2.12.8(@types/node@25.2.0)(typescript@5.9.3))(vite@7.3.5(@types/node@25.2.0)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.46.0)(tsx@4.21.0)(yaml@2.9.0)) '@vitest/utils@3.2.4': dependencies: @@ -30714,7 +30717,7 @@ snapshots: media-typer: 1.1.0 mime-types: 3.0.2 - typebox@1.1.38: {} + typebox@1.3.7: {} typed-openapi@2.2.7(openapi-types@12.1.3)(react@19.2.6): dependencies: @@ -31161,36 +31164,6 @@ snapshots: transitivePeerDependencies: - msw - vitest@4.1.8(@opentelemetry/api@1.9.1)(@types/node@24.12.0)(@vitest/ui@4.1.8)(jsdom@26.1.0)(msw@2.12.8(@types/node@24.12.0)(typescript@5.9.3))(rolldown-vite@7.3.1(@emnapi/core@1.11.2)(@emnapi/runtime@1.11.2)(@types/node@24.12.0)(esbuild@0.27.2)(jiti@2.7.0)(terser@5.46.0)(tsx@4.22.4)(yaml@2.9.0)): - dependencies: - '@vitest/expect': 4.1.8 - '@vitest/mocker': 4.1.8(msw@2.12.8(@types/node@24.12.0)(typescript@5.9.3))(rolldown-vite@7.3.1(@emnapi/core@1.11.2)(@emnapi/runtime@1.11.2)(@types/node@24.12.0)(esbuild@0.27.2)(jiti@2.7.0)(terser@5.46.0)(tsx@4.22.4)(yaml@2.9.0)) - '@vitest/pretty-format': 4.1.8 - '@vitest/runner': 4.1.8 - '@vitest/snapshot': 4.1.8 - '@vitest/spy': 4.1.8 - '@vitest/utils': 4.1.8 - es-module-lexer: 2.0.0 - expect-type: 1.3.0 - magic-string: 0.30.21 - obug: 2.1.1 - pathe: 2.0.3 - picomatch: 4.0.3 - std-env: 4.1.0 - tinybench: 2.9.0 - tinyexec: 1.0.2 - tinyglobby: 0.2.15 - tinyrainbow: 3.1.0 - vite: rolldown-vite@7.3.1(@emnapi/core@1.11.2)(@emnapi/runtime@1.11.2)(@types/node@24.12.0)(esbuild@0.27.2)(jiti@2.7.0)(terser@5.46.0)(tsx@4.22.4)(yaml@2.9.0) - why-is-node-running: 2.3.0 - optionalDependencies: - '@opentelemetry/api': 1.9.1 - '@types/node': 24.12.0 - '@vitest/ui': 4.1.8(vitest@4.1.8) - jsdom: 26.1.0 - transitivePeerDependencies: - - msw - vitest@4.1.8(@opentelemetry/api@1.9.1)(@types/node@25.2.0)(@vitest/ui@4.1.8)(jsdom@26.1.0)(msw@2.12.8(@types/node@25.2.0)(typescript@5.9.3))(vite@7.3.5(@types/node@25.2.0)(jiti@2.7.0)(lightningcss@1.32.0)(terser@5.46.0)(tsx@4.21.0)(yaml@2.9.0)): dependencies: '@vitest/expect': 4.1.8 diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index ca93303720..ffff9f5752 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -6,10 +6,10 @@ packages: catalog: '@hono/node-server': ^1.13.7 '@hono/trpc-server': ^0.3.4 - '@earendil-works/pi-agent-core': 0.82.1 - '@earendil-works/pi-ai': 0.82.1 - '@earendil-works/pi-coding-agent': 0.82.1 - '@earendil-works/pi-tui': 0.82.1 + '@earendil-works/pi-agent-core': 0.83.0 + '@earendil-works/pi-ai': 0.83.0 + '@earendil-works/pi-coding-agent': 0.83.0 + '@earendil-works/pi-tui': 0.83.0 '@parcel/watcher': ^2.5.6 '@phosphor-icons/react': ^2.1.10 '@posthog/quill': 0.3.0-beta.24