diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 74afb72b75..bb2255c09e 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -936,10 +936,10 @@ importers: dependencies: '@flue/cli': specifier: npm:@rivet-dev/labs-flue-cli@1.0.0-beta.9-rivet.2 - version: '@rivet-dev/labs-flue-cli@1.0.0-beta.9-rivet.2(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(@types/node@24.13.2)(bufferutil@4.1.0)(esbuild@0.28.1)(hono@4.12.9)(jiti@2.7.0)(tsx@4.21.0)(typebox@1.3.6)(typescript@5.9.3)(wrangler@4.113.0(bufferutil@4.1.0))(ws@8.21.0(bufferutil@4.1.0))(yaml@2.9.0)(zod-to-json-schema@3.25.2(zod@4.3.6))(zod@4.3.6)' + version: '@rivet-dev/labs-flue-cli@1.0.0-beta.9-rivet.2(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(@types/node@24.13.2)(bufferutil@4.1.0)(esbuild@0.28.1)(hono@4.12.9)(jiti@2.7.0)(tsx@4.21.0)(typebox@1.3.7)(typescript@5.9.3)(wrangler@4.113.0(bufferutil@4.1.0))(ws@8.21.0(bufferutil@4.1.0))(yaml@2.9.0)(zod-to-json-schema@3.25.2(zod@4.3.6))(zod@4.3.6)' '@flue/runtime': specifier: npm:@rivet-dev/labs-flue-runtime@1.0.0-beta.9-rivet.2 - version: '@rivet-dev/labs-flue-runtime@1.0.0-beta.9-rivet.2(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(bufferutil@4.1.0)(typebox@1.3.6)(typescript@5.9.3)(ws@8.21.0(bufferutil@4.1.0))(zod-to-json-schema@3.25.2(zod@4.3.6))(zod@4.3.6)' + version: '@rivet-dev/labs-flue-runtime@1.0.0-beta.9-rivet.2(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(bufferutil@4.1.0)(typebox@1.3.7)(typescript@5.9.3)(ws@8.21.0(bufferutil@4.1.0))(zod-to-json-schema@3.25.2(zod@4.3.6))(zod@4.3.6)' '@rivet-dev/agentos': specifier: workspace:* version: link:../../packages/agentos @@ -948,7 +948,7 @@ importers: version: link:../../packages/flue '@rivet-dev/flue': specifier: 2.3.9 - version: 2.3.9(@opentelemetry/api@1.9.0)(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(@types/node@24.13.2)(better-sqlite3@12.8.0)(bufferutil@4.1.0)(esbuild@0.28.1)(hono@4.12.9)(jiti@2.7.0)(pyodide@0.28.3(bufferutil@4.1.0))(sql.js@1.14.1)(tsx@4.21.0)(typebox@1.3.6)(typescript@5.9.3)(wrangler@4.113.0(bufferutil@4.1.0))(ws@8.21.0(bufferutil@4.1.0))(yaml@2.9.0)(zod-to-json-schema@3.25.2(zod@4.3.6))(zod@4.3.6) + version: 2.3.9(@opentelemetry/api@1.9.0)(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(@types/node@24.13.2)(better-sqlite3@12.8.0)(bufferutil@4.1.0)(esbuild@0.28.1)(hono@4.12.9)(jiti@2.7.0)(pyodide@0.28.3(bufferutil@4.1.0))(sql.js@1.14.1)(tsx@4.21.0)(typebox@1.3.7)(typescript@5.9.3)(wrangler@4.113.0(bufferutil@4.1.0))(ws@8.21.0(bufferutil@4.1.0))(yaml@2.9.0)(zod-to-json-schema@3.25.2(zod@4.3.6))(zod@4.3.6) rivetkit: specifier: 2.3.9 version: 2.3.9(@opentelemetry/api@1.9.0)(better-sqlite3@12.8.0)(pyodide@0.28.3(bufferutil@4.1.0))(sql.js@1.14.1)(ws@8.21.0(bufferutil@4.1.0)) @@ -3189,7 +3189,7 @@ importers: devDependencies: '@flue/runtime': specifier: npm:@rivet-dev/labs-flue-runtime@1.0.0-beta.9-rivet.2 - version: '@rivet-dev/labs-flue-runtime@1.0.0-beta.9-rivet.2(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(bufferutil@4.1.0)(typebox@1.3.6)(typescript@5.9.3)(ws@8.21.0(bufferutil@4.1.0))(zod-to-json-schema@3.25.2(zod@4.3.6))(zod@4.3.6)' + version: '@rivet-dev/labs-flue-runtime@1.0.0-beta.9-rivet.2(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(bufferutil@4.1.0)(typebox@1.3.7)(typescript@5.9.3)(ws@8.21.0(bufferutil@4.1.0))(zod-to-json-schema@3.25.2(zod@4.3.6))(zod@4.3.6)' '@rivet-dev/agentos': specifier: workspace:* version: link:../agentos @@ -4144,8 +4144,8 @@ importers: specifier: 1.2.1 version: 1.2.1(zod@3.25.76) '@earendil-works/pi-coding-agent': - specifier: 0.80.6 - version: 0.80.6(@modelcontextprotocol/sdk@1.29.0(@cfworker/json-schema@4.1.1)(zod@3.25.76))(bufferutil@4.1.0)(ws@8.21.0(bufferutil@4.1.0))(zod@3.25.76) + specifier: 0.83.0 + version: 0.83.0(@modelcontextprotocol/sdk@1.29.0(@cfworker/json-schema@4.1.1)(zod@3.25.76))(bufferutil@4.1.0)(ws@8.21.0(bufferutil@4.1.0))(zod@3.25.76) pi-mcp-adapter: specifier: 2.11.0 version: 2.11.0(@cfworker/json-schema@4.1.1)(@opentelemetry/api@1.9.0)(bufferutil@4.1.0)(react-dom@19.2.7(react@19.2.7))(react@19.2.7)(ws@8.21.0(bufferutil@4.1.0))(zod@3.25.76) @@ -5337,10 +5337,6 @@ packages: '@aws-crypto/util@5.2.0': resolution: {integrity: sha512-4RkU9EsI6ZpBve5fseQlGNUWKMa1RLPQ1dnjnQoe07ldfIzcsGb5hC5W0Dm7u423KWzawlrpbjXBrXCEv9zazQ==} - '@aws-sdk/client-bedrock-runtime@3.1020.0': - resolution: {integrity: sha512-nqDCbaB05gRc3FuIEN74Mo04+k8RNI0YT2YBAU/9nioqgDyoqzMx8Ia2QWaw9UhUyIHMBjcFEfKIPfCZx7caCw==} - engines: {node: '>=20.0.0'} - '@aws-sdk/client-bedrock-runtime@3.1048.0': resolution: {integrity: sha512-u+NT61JZEkRFtpL0CAw1N1dwxnaLgwVXQl/zjJxTGgLyS/jTIdg2SdoEoCTHxgDyCnqa1HEi9QOoE9/pYRNpOQ==} engines: {node: '>=20.0.0'} @@ -5429,10 +5425,6 @@ packages: resolution: {integrity: sha512-gHQb/Kt0chjk/JQDa/GJDqmAvEuVn8n7z10wK2h0LFM9TUDRkohgOO4aEF+s2sBLM0br7Cl5W6P7phgjrrJvLQ==} engines: {node: '>=20.0.0'} - '@aws-sdk/eventstream-handler-node@3.972.12': - resolution: {integrity: sha512-ruyc/MNR6e+cUrGCth7fLQ12RXBZDy/bV06tgqB9Z5n/0SN/C0m6bsQEV8FF9zPI6VSAOaRd0rNgmpYVnGawrQ==} - engines: {node: '>=20.0.0'} - '@aws-sdk/eventstream-handler-node@3.972.29': resolution: {integrity: sha512-t3tKQRTVXsI2QNPE3CaNjHl0wRO9Xi3acZkAyti2RQsiFmZ9Gi0kArX2ighlRJ1BtDVuul413gThAgzyTfgmWA==} engines: {node: '>=20.0.0'} @@ -5445,10 +5437,6 @@ packages: resolution: {integrity: sha512-oykin4mDWxNOuYQ7SF1cHzgYeuFEkF4cdRwgvjFFbIklkx09qIFBiOgsORafG9sXZFO3TayMmQuAQYgADXhI8w==} engines: {node: '>=20.0.0'} - '@aws-sdk/middleware-eventstream@3.972.8': - resolution: {integrity: sha512-r+oP+tbCxgqXVC3pu3MUVePgSY0ILMjA+aEwOosS77m3/DRbtvHrHwqvMcw+cjANMeGzJ+i0ar+n77KXpRA8RQ==} - engines: {node: '>=20.0.0'} - '@aws-sdk/middleware-expect-continue@3.972.8': resolution: {integrity: sha512-5DTBTiotEES1e2jOHAq//zyzCjeMB78lEHd35u15qnrid4Nxm7diqIf9fQQ3Ov0ChH1V3Vvt13thOnrACmfGVQ==} engines: {node: '>=20.0.0'} @@ -5485,10 +5473,6 @@ packages: resolution: {integrity: sha512-TIRLO5UR2+FVUGmhYoAwVkKhcVzywEDX/5LzR9tjy1h8FQAXOtFg2IqgmwvxU7y933rkTn9rl6AdgcAUgQ1/Kg==} engines: {node: '>=20.0.0'} - '@aws-sdk/middleware-websocket@3.972.14': - resolution: {integrity: sha512-qnfDlIHjm6DrTYNvWOUbnZdVKgtoKbO/Qzj+C0Wp5Y7VUrsvBRQtGKxD+hc+mRTS4N0kBJ6iZ3+zxm4N1OSyjg==} - engines: {node: '>= 14.0.0'} - '@aws-sdk/middleware-websocket@3.972.41': resolution: {integrity: sha512-LSbGvvYmjc4Br9BPYI2dTLnIclmrSiQbahkP4D6nRGVEv4qsCZ8csVuKBPVEEFCVD+EEngGh8ROls6XpumtwMg==} engines: {node: '>= 14.0.0'} @@ -5545,10 +5529,6 @@ packages: resolution: {integrity: sha512-Uh93L5sXFNbyR5sEPMzUU8tJ++Ku97EY4udmC01nB8Zu+xfBPwpIwJ6F7snqQeq8h2pf+8SGN5/NoytfKgYPIw==} engines: {node: '>=20.0.0'} - '@aws-sdk/util-format-url@3.972.8': - resolution: {integrity: sha512-J6DS9oocrgxM8xlUTTmQOuwRF6rnAGEujAN9SAzllcrQmwn5iJ58ogxy3SEhD0Q7JZvlA5jvIXBkpQRqEqlE9A==} - engines: {node: '>=20.0.0'} - '@aws-sdk/util-locate-window@3.965.5': resolution: {integrity: sha512-WhlJNNINQB+9qtLtZJcpQdgZw3SCDCpXdUJP7cToGwHbCWCnRckGlc6Bx/OhWwIYFNAn+FIydY8SZ0QmVu3xTQ==} engines: {node: '>=20.0.0'} @@ -5921,6 +5901,10 @@ packages: resolution: {integrity: sha512-nwnOR3SuLYGRFfyQm8ri4Nj5VGVAvAM9GuqQd3u7BUQj0d6hmD2F8w7OHAAjThE3CuySIdM+v8E22QJG6/RfCg==} engines: {node: '>=22.19.0'} + '@earendil-works/pi-agent-core@0.83.0': + resolution: {integrity: sha512-RorGp9OH5l3ElpuC5a5ZQ2eWcchZGXflXRzVGkV99y3y6tT+LLNyxoYIdVKvTKWEObwhExeQbTH0fI2tE4iX4g==} + engines: {node: '>=22.19.0'} + '@earendil-works/pi-ai@0.74.2': resolution: {integrity: sha512-ukQBHGDm20k9ZUS2cGjNN9vDJp/48r35xmvgSx3paCaC06r2N/PLuRZoJmwQ1ZM7f8T3072odv9YPWn+77w0LA==} engines: {node: '>=20.0.0'} @@ -5936,8 +5920,13 @@ packages: engines: {node: '>=22.19.0'} hasBin: true - '@earendil-works/pi-coding-agent@0.80.6': - resolution: {integrity: sha512-vcfD6tOk402isLl3Cm/qbn2O10TvgroMp1+/fEGM24ZdvETFCdOYv5VZ7m59EI5fPsjfSJh+CpQ5bhBrhfOg7g==} + '@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.83.0': + resolution: {integrity: sha512-uYhF+FsZxogoSX/AxBcUdiY+ZklubwaXyAoEGA2eQwsHcyEAhUYIKh/WLXe/a8+k8eTCmxb+ZN2Zo9mzQtzbWw==} engines: {node: '>=22.19.0'} hasBin: true @@ -5945,8 +5934,8 @@ packages: resolution: {integrity: sha512-valQPz74qbdydRqII6t9rJ46YANMOOJeDhKm25a1ZrWvWwdjAaAEu6s3ur/LWz84Wkkwcbub2ZkVjzCZi8gFGA==} engines: {node: '>=20.0.0'} - '@earendil-works/pi-tui@0.80.10': - resolution: {integrity: sha512-c2JO29PbhKPEQ6fgHQKAl0WhwuFqzWfzspMmP+8B5tpDuP+0mvarRbKKg8gq4b+pQx/QX+6aVS4ko7deoyjQjg==} + '@earendil-works/pi-tui@0.83.0': + resolution: {integrity: sha512-IoYrb0rORjELmEpNtoCA/U8je3KopMkRAVJRdSzvXRvgb+Huo1gNh8Q5CSZvNOiYtDxJdj2tYZZHZ4B3+IN3hA==} engines: {node: '>=22.19.0'} '@emnapi/core@1.11.1': @@ -6653,15 +6642,6 @@ packages: '@gerrit0/mini-shiki@3.23.0': resolution: {integrity: sha512-bEMORlG0cqdjVyCEuU0cDQbORWX+kYCeo0kV1lbxF5bt4r7SID2l9bqsxJEM0zndaxpOUT7riCyIVEuqq/Ynxg==} - '@google/genai@1.47.0': - resolution: {integrity: sha512-0VV7AaXm5rQu3oRHNZNEubRAOL2lv5u+YA72eWnDwcOx3B1jFRbvtgL4drRHlocRHOnludvr3xmbQGbR+/RQAQ==} - engines: {node: '>=20.0.0'} - peerDependencies: - '@modelcontextprotocol/sdk': ^1.25.2 - peerDependenciesMeta: - '@modelcontextprotocol/sdk': - optional: true - '@google/genai@1.52.0': resolution: {integrity: sha512-gwSvbpiN/17O9TbsqSsE/OzZcpv5Fo4RQjdngGgogtuB9RsyJ8ZHhX5KjHj1bp5N9snN2eK8LDGXSaWW2hof8Q==} engines: {node: '>=20.0.0'} @@ -14233,6 +14213,9 @@ packages: typebox@1.3.6: resolution: {integrity: sha512-Sc8RA0NCMEFmApHNU9ZMzqcpQj46She44J8ffpLM/bdhLNUZKq7DJumcLcsFx1gRmDfQPgCgOmFFJ7rcnfWNyA==} + typebox@1.3.7: + resolution: {integrity: sha512-meKuifc33Pccx0O6PdIzYMq3Og8zvP4TIi/a+Bw3AEMZMxOD0+RHGQvpglEe6Zdy3wZ8nqn/j95h8LUZLk/6Hg==} + typed-array-buffer@1.0.3: resolution: {integrity: sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==} engines: {node: '>= 0.4'} @@ -15513,13 +15496,13 @@ snapshots: '@aws-crypto/crc32@5.2.0': dependencies: '@aws-crypto/util': 5.2.0 - '@aws-sdk/types': 3.973.6 + '@aws-sdk/types': 3.974.2 tslib: 2.8.1 '@aws-crypto/crc32c@5.2.0': dependencies: '@aws-crypto/util': 5.2.0 - '@aws-sdk/types': 3.973.6 + '@aws-sdk/types': 3.974.2 tslib: 2.8.1 '@aws-crypto/sha1-browser@5.2.0': @@ -15557,58 +15540,6 @@ snapshots: '@smithy/util-utf8': 2.3.0 tslib: 2.8.1 - '@aws-sdk/client-bedrock-runtime@3.1020.0': - dependencies: - '@aws-crypto/sha256-browser': 5.2.0 - '@aws-crypto/sha256-js': 5.2.0 - '@aws-sdk/core': 3.973.26 - '@aws-sdk/credential-provider-node': 3.972.28 - '@aws-sdk/eventstream-handler-node': 3.972.12 - '@aws-sdk/middleware-eventstream': 3.972.8 - '@aws-sdk/middleware-host-header': 3.972.8 - '@aws-sdk/middleware-logger': 3.972.8 - '@aws-sdk/middleware-recursion-detection': 3.972.9 - '@aws-sdk/middleware-user-agent': 3.972.27 - '@aws-sdk/middleware-websocket': 3.972.14 - '@aws-sdk/region-config-resolver': 3.972.10 - '@aws-sdk/token-providers': 3.1020.0 - '@aws-sdk/types': 3.973.6 - '@aws-sdk/util-endpoints': 3.996.5 - '@aws-sdk/util-user-agent-browser': 3.972.8 - '@aws-sdk/util-user-agent-node': 3.973.13 - '@smithy/config-resolver': 4.4.13 - '@smithy/core': 3.23.13 - '@smithy/eventstream-serde-browser': 4.2.12 - '@smithy/eventstream-serde-config-resolver': 4.3.12 - '@smithy/eventstream-serde-node': 4.2.12 - '@smithy/fetch-http-handler': 5.3.15 - '@smithy/hash-node': 4.2.12 - '@smithy/invalid-dependency': 4.2.12 - '@smithy/middleware-content-length': 4.2.12 - '@smithy/middleware-endpoint': 4.4.28 - '@smithy/middleware-retry': 4.4.45 - '@smithy/middleware-serde': 4.2.16 - '@smithy/middleware-stack': 4.2.12 - '@smithy/node-config-provider': 4.3.12 - '@smithy/node-http-handler': 4.9.7 - '@smithy/protocol-http': 5.3.12 - '@smithy/smithy-client': 4.12.8 - '@smithy/types': 4.13.1 - '@smithy/url-parser': 4.2.12 - '@smithy/util-base64': 4.3.2 - '@smithy/util-body-length-browser': 4.2.2 - '@smithy/util-body-length-node': 4.2.3 - '@smithy/util-defaults-mode-browser': 4.3.44 - '@smithy/util-defaults-mode-node': 4.2.48 - '@smithy/util-endpoints': 3.3.3 - '@smithy/util-middleware': 4.2.12 - '@smithy/util-retry': 4.2.12 - '@smithy/util-stream': 4.5.21 - '@smithy/util-utf8': 4.2.2 - tslib: 2.8.1 - transitivePeerDependencies: - - aws-crt - '@aws-sdk/client-bedrock-runtime@3.1048.0': dependencies: '@aws-crypto/sha256-browser': 5.2.0 @@ -15730,15 +15661,15 @@ snapshots: '@aws-sdk/crc64-nvme@3.972.5': dependencies: - '@smithy/types': 4.13.1 + '@smithy/types': 4.16.1 tslib: 2.8.1 '@aws-sdk/credential-provider-env@3.972.24': dependencies: - '@aws-sdk/core': 3.973.26 - '@aws-sdk/types': 3.973.6 + '@aws-sdk/core': 3.975.3 + '@aws-sdk/types': 3.974.2 '@smithy/property-provider': 4.2.12 - '@smithy/types': 4.13.1 + '@smithy/types': 4.16.1 tslib: 2.8.1 '@aws-sdk/credential-provider-env@3.972.59': @@ -15751,14 +15682,14 @@ snapshots: '@aws-sdk/credential-provider-http@3.972.26': dependencies: - '@aws-sdk/core': 3.973.26 - '@aws-sdk/types': 3.973.6 - '@smithy/fetch-http-handler': 5.3.15 + '@aws-sdk/core': 3.975.3 + '@aws-sdk/types': 3.974.2 + '@smithy/fetch-http-handler': 5.6.7 '@smithy/node-http-handler': 4.9.7 '@smithy/property-provider': 4.2.12 '@smithy/protocol-http': 5.3.12 '@smithy/smithy-client': 4.12.8 - '@smithy/types': 4.13.1 + '@smithy/types': 4.16.1 '@smithy/util-stream': 4.5.21 tslib: 2.8.1 @@ -15774,7 +15705,7 @@ snapshots: '@aws-sdk/credential-provider-ini@3.972.27': dependencies: - '@aws-sdk/core': 3.973.26 + '@aws-sdk/core': 3.975.3 '@aws-sdk/credential-provider-env': 3.972.24 '@aws-sdk/credential-provider-http': 3.972.26 '@aws-sdk/credential-provider-login': 3.972.27 @@ -15782,11 +15713,11 @@ snapshots: '@aws-sdk/credential-provider-sso': 3.972.27 '@aws-sdk/credential-provider-web-identity': 3.972.27 '@aws-sdk/nested-clients': 3.996.17 - '@aws-sdk/types': 3.973.6 + '@aws-sdk/types': 3.974.2 '@smithy/credential-provider-imds': 4.2.12 '@smithy/property-provider': 4.2.12 '@smithy/shared-ini-file-loader': 4.4.7 - '@smithy/types': 4.13.1 + '@smithy/types': 4.16.1 tslib: 2.8.1 transitivePeerDependencies: - aws-crt @@ -15862,11 +15793,11 @@ snapshots: '@aws-sdk/credential-provider-process@3.972.24': dependencies: - '@aws-sdk/core': 3.973.26 - '@aws-sdk/types': 3.973.6 + '@aws-sdk/core': 3.975.3 + '@aws-sdk/types': 3.974.2 '@smithy/property-provider': 4.2.12 '@smithy/shared-ini-file-loader': 4.4.7 - '@smithy/types': 4.13.1 + '@smithy/types': 4.16.1 tslib: 2.8.1 '@aws-sdk/credential-provider-process@3.972.59': @@ -15879,13 +15810,13 @@ snapshots: '@aws-sdk/credential-provider-sso@3.972.27': dependencies: - '@aws-sdk/core': 3.973.26 + '@aws-sdk/core': 3.975.3 '@aws-sdk/nested-clients': 3.996.17 '@aws-sdk/token-providers': 3.1020.0 - '@aws-sdk/types': 3.973.6 + '@aws-sdk/types': 3.974.2 '@smithy/property-provider': 4.2.12 '@smithy/shared-ini-file-loader': 4.4.7 - '@smithy/types': 4.13.1 + '@smithy/types': 4.16.1 tslib: 2.8.1 transitivePeerDependencies: - aws-crt @@ -15902,12 +15833,12 @@ snapshots: '@aws-sdk/credential-provider-web-identity@3.972.27': dependencies: - '@aws-sdk/core': 3.973.26 + '@aws-sdk/core': 3.975.3 '@aws-sdk/nested-clients': 3.996.17 - '@aws-sdk/types': 3.973.6 + '@aws-sdk/types': 3.974.2 '@smithy/property-provider': 4.2.12 '@smithy/shared-ini-file-loader': 4.4.7 - '@smithy/types': 4.13.1 + '@smithy/types': 4.16.1 tslib: 2.8.1 transitivePeerDependencies: - aws-crt @@ -15921,13 +15852,6 @@ snapshots: '@smithy/types': 4.16.1 tslib: 2.8.1 - '@aws-sdk/eventstream-handler-node@3.972.12': - dependencies: - '@aws-sdk/types': 3.974.2 - '@smithy/eventstream-codec': 4.2.12 - '@smithy/types': 4.16.1 - tslib: 2.8.1 - '@aws-sdk/eventstream-handler-node@3.972.29': dependencies: '@aws-sdk/types': 3.974.2 @@ -15952,13 +15876,6 @@ snapshots: '@smithy/types': 4.16.1 tslib: 2.8.1 - '@aws-sdk/middleware-eventstream@3.972.8': - dependencies: - '@aws-sdk/types': 3.974.2 - '@smithy/protocol-http': 5.3.12 - '@smithy/types': 4.16.1 - tslib: 2.8.1 - '@aws-sdk/middleware-expect-continue@3.972.8': dependencies: '@aws-sdk/types': 3.973.6 @@ -16044,21 +15961,6 @@ snapshots: '@smithy/util-retry': 4.2.12 tslib: 2.8.1 - '@aws-sdk/middleware-websocket@3.972.14': - dependencies: - '@aws-sdk/types': 3.974.2 - '@aws-sdk/util-format-url': 3.972.8 - '@smithy/eventstream-codec': 4.2.12 - '@smithy/eventstream-serde-browser': 4.2.12 - '@smithy/fetch-http-handler': 5.6.7 - '@smithy/protocol-http': 5.3.12 - '@smithy/signature-v4': 5.3.12 - '@smithy/types': 4.16.1 - '@smithy/util-base64': 4.3.2 - '@smithy/util-hex-encoding': 4.2.2 - '@smithy/util-utf8': 4.2.2 - tslib: 2.8.1 - '@aws-sdk/middleware-websocket@3.972.41': dependencies: '@aws-sdk/core': 3.975.3 @@ -16208,13 +16110,6 @@ snapshots: '@smithy/util-endpoints': 3.3.3 tslib: 2.8.1 - '@aws-sdk/util-format-url@3.972.8': - dependencies: - '@aws-sdk/types': 3.974.2 - '@smithy/querystring-builder': 4.2.12 - '@smithy/types': 4.16.1 - tslib: 2.8.1 - '@aws-sdk/util-locate-window@3.965.5': dependencies: tslib: 2.8.1 @@ -16237,7 +16132,7 @@ snapshots: '@aws-sdk/xml-builder@3.972.16': dependencies: - '@smithy/types': 4.13.1 + '@smithy/types': 4.16.1 fast-xml-parser: 5.5.8 tslib: 2.8.1 @@ -16479,7 +16374,7 @@ snapshots: '@ai-sdk/provider': 2.0.3 '@anthropic-ai/sdk': 0.39.0 '@browserbasehq/sdk': 2.10.0 - '@google/genai': 1.47.0(@modelcontextprotocol/sdk@1.29.0(@cfworker/json-schema@4.1.1)(zod@4.3.6))(bufferutil@4.1.0) + '@google/genai': 1.52.0(@modelcontextprotocol/sdk@1.29.0(@cfworker/json-schema@4.1.1)(zod@4.3.6))(bufferutil@4.1.0) '@langchain/openai': 0.4.9(@langchain/core@0.3.80(@opentelemetry/api@1.9.0)(openai@4.104.0(ws@8.21.0(bufferutil@4.1.0))(zod@4.3.6)))(ws@8.21.0(bufferutil@4.1.0)) '@modelcontextprotocol/sdk': 1.29.0(@cfworker/json-schema@4.1.1)(zod@4.3.6) ai: 5.0.172(zod@4.3.6) @@ -16532,7 +16427,7 @@ snapshots: '@ai-sdk/provider': 2.0.3 '@anthropic-ai/sdk': 0.39.0 '@browserbasehq/sdk': 2.10.0 - '@google/genai': 1.47.0(@modelcontextprotocol/sdk@1.29.0(@cfworker/json-schema@4.1.1)(zod@4.3.6))(bufferutil@4.1.0) + '@google/genai': 1.52.0(@modelcontextprotocol/sdk@1.29.0(@cfworker/json-schema@4.1.1)(zod@4.3.6))(bufferutil@4.1.0) '@modelcontextprotocol/sdk': 1.29.0(@cfworker/json-schema@4.1.1)(zod@4.3.6) ai: 5.0.172(zod@4.3.6) devtools-protocol: 0.0.1642743 @@ -16710,9 +16605,9 @@ snapshots: '@microsoft/fetch-event-source': 2.0.1 fastq: 1.20.1 - '@earendil-works/pi-agent-core@0.80.10(@modelcontextprotocol/sdk@1.29.0(@cfworker/json-schema@4.1.1)(zod@3.25.76))(bufferutil@4.1.0)(ws@8.21.0(bufferutil@4.1.0))(zod@3.25.76)': + '@earendil-works/pi-agent-core@0.80.10(@modelcontextprotocol/sdk@1.29.0(@cfworker/json-schema@4.1.1)(zod@4.3.6))(bufferutil@4.1.0)(ws@8.21.0(bufferutil@4.1.0))(zod@4.3.6)': dependencies: - '@earendil-works/pi-ai': 0.80.10(@modelcontextprotocol/sdk@1.29.0(@cfworker/json-schema@4.1.1)(zod@3.25.76))(bufferutil@4.1.0)(ws@8.21.0(bufferutil@4.1.0))(zod@3.25.76) + '@earendil-works/pi-ai': 0.80.10(@modelcontextprotocol/sdk@1.29.0(@cfworker/json-schema@4.1.1)(zod@4.3.6))(bufferutil@4.1.0)(ws@8.21.0(bufferutil@4.1.0))(zod@4.3.6) ignore: 7.0.5 typebox: 1.1.38 yaml: 2.9.0 @@ -16724,11 +16619,12 @@ snapshots: - ws - zod - '@earendil-works/pi-agent-core@0.80.10(@modelcontextprotocol/sdk@1.29.0(@cfworker/json-schema@4.1.1)(zod@4.3.6))(bufferutil@4.1.0)(ws@8.21.0(bufferutil@4.1.0))(zod@4.3.6)': + '@earendil-works/pi-agent-core@0.83.0(@modelcontextprotocol/sdk@1.29.0(@cfworker/json-schema@4.1.1)(zod@3.25.76))(bufferutil@4.1.0)(ws@8.21.0(bufferutil@4.1.0))(zod@3.25.76)': dependencies: - '@earendil-works/pi-ai': 0.80.10(@modelcontextprotocol/sdk@1.29.0(@cfworker/json-schema@4.1.1)(zod@4.3.6))(bufferutil@4.1.0)(ws@8.21.0(bufferutil@4.1.0))(zod@4.3.6) + '@earendil-works/pi-ai': 0.83.0(@modelcontextprotocol/sdk@1.29.0(@cfworker/json-schema@4.1.1)(zod@3.25.76))(bufferutil@4.1.0)(ws@8.21.0(bufferutil@4.1.0))(zod@3.25.76) + diff: 8.0.4 ignore: 7.0.5 - typebox: 1.1.38 + typebox: 1.3.7 yaml: 2.9.0 transitivePeerDependencies: - '@modelcontextprotocol/sdk' @@ -16742,13 +16638,13 @@ snapshots: dependencies: '@anthropic-ai/sdk': 0.91.1(zod@3.25.76) '@aws-sdk/client-bedrock-runtime': 3.1089.0 - '@google/genai': 1.47.0(@modelcontextprotocol/sdk@1.29.0(@cfworker/json-schema@4.1.1)(zod@3.25.76))(bufferutil@4.1.0) + '@google/genai': 1.52.0(@modelcontextprotocol/sdk@1.29.0(@cfworker/json-schema@4.1.1)(zod@3.25.76))(bufferutil@4.1.0) '@mistralai/mistralai': 2.4.1(@opentelemetry/api@1.9.0)(bufferutil@4.1.0) http-proxy-agent: 7.0.2 https-proxy-agent: 7.0.6 openai: 6.26.0(ws@8.21.0(bufferutil@4.1.0))(zod@3.25.76) partial-json: 0.1.7 - typebox: 1.3.6 + typebox: 1.3.7 transitivePeerDependencies: - '@modelcontextprotocol/sdk' - '@opentelemetry/api' @@ -16758,17 +16654,17 @@ snapshots: - ws - zod - '@earendil-works/pi-ai@0.80.10(@modelcontextprotocol/sdk@1.29.0(@cfworker/json-schema@4.1.1)(zod@3.25.76))(bufferutil@4.1.0)(ws@8.21.0(bufferutil@4.1.0))(zod@3.25.76)': + '@earendil-works/pi-ai@0.80.10(@modelcontextprotocol/sdk@1.29.0(@cfworker/json-schema@4.1.1)(zod@4.3.6))(bufferutil@4.1.0)(ws@8.21.0(bufferutil@4.1.0))(zod@4.3.6)': dependencies: - '@anthropic-ai/sdk': 0.91.1(zod@3.25.76) + '@anthropic-ai/sdk': 0.91.1(zod@4.3.6) '@aws-sdk/client-bedrock-runtime': 3.1048.0 - '@google/genai': 1.52.0(@modelcontextprotocol/sdk@1.29.0(@cfworker/json-schema@4.1.1)(zod@3.25.76))(bufferutil@4.1.0) + '@google/genai': 1.52.0(@modelcontextprotocol/sdk@1.29.0(@cfworker/json-schema@4.1.1)(zod@4.3.6))(bufferutil@4.1.0) '@mistralai/mistralai': 2.2.6(@opentelemetry/api@1.9.0)(bufferutil@4.1.0) '@opentelemetry/api': 1.9.0 '@smithy/node-http-handler': 4.7.3 http-proxy-agent: 7.0.2 https-proxy-agent: 7.0.6 - openai: 6.26.0(ws@8.21.0(bufferutil@4.1.0))(zod@3.25.76) + openai: 6.26.0(ws@8.21.0(bufferutil@4.1.0))(zod@4.3.6) partial-json: 0.1.7 typebox: 1.1.38 transitivePeerDependencies: @@ -16779,7 +16675,7 @@ snapshots: - ws - zod - '@earendil-works/pi-ai@0.80.10(@modelcontextprotocol/sdk@1.29.0(@cfworker/json-schema@4.1.1)(zod@4.3.6))(bufferutil@4.1.0)(ws@8.21.0(bufferutil@4.1.0))(zod@4.3.6)': + '@earendil-works/pi-ai@0.81.1(@modelcontextprotocol/sdk@1.29.0(@cfworker/json-schema@4.1.1)(zod@4.3.6))(bufferutil@4.1.0)(ws@8.21.0(bufferutil@4.1.0))(zod@4.3.6)': dependencies: '@anthropic-ai/sdk': 0.91.1(zod@4.3.6) '@aws-sdk/client-bedrock-runtime': 3.1048.0 @@ -16800,19 +16696,19 @@ snapshots: - ws - zod - '@earendil-works/pi-ai@0.81.1(@modelcontextprotocol/sdk@1.29.0(@cfworker/json-schema@4.1.1)(zod@4.3.6))(bufferutil@4.1.0)(ws@8.21.0(bufferutil@4.1.0))(zod@4.3.6)': + '@earendil-works/pi-ai@0.83.0(@modelcontextprotocol/sdk@1.29.0(@cfworker/json-schema@4.1.1)(zod@3.25.76))(bufferutil@4.1.0)(ws@8.21.0(bufferutil@4.1.0))(zod@3.25.76)': dependencies: - '@anthropic-ai/sdk': 0.91.1(zod@4.3.6) + '@anthropic-ai/sdk': 0.91.1(zod@3.25.76) '@aws-sdk/client-bedrock-runtime': 3.1048.0 - '@google/genai': 1.52.0(@modelcontextprotocol/sdk@1.29.0(@cfworker/json-schema@4.1.1)(zod@4.3.6))(bufferutil@4.1.0) + '@google/genai': 1.52.0(@modelcontextprotocol/sdk@1.29.0(@cfworker/json-schema@4.1.1)(zod@3.25.76))(bufferutil@4.1.0) '@mistralai/mistralai': 2.2.6(@opentelemetry/api@1.9.0)(bufferutil@4.1.0) '@opentelemetry/api': 1.9.0 '@smithy/node-http-handler': 4.7.3 http-proxy-agent: 7.0.2 https-proxy-agent: 7.0.6 - openai: 6.26.0(ws@8.21.0(bufferutil@4.1.0))(zod@4.3.6) + openai: 6.26.0(ws@8.21.0(bufferutil@4.1.0))(zod@3.25.76) partial-json: 0.1.7 - typebox: 1.1.38 + typebox: 1.3.7 transitivePeerDependencies: - '@modelcontextprotocol/sdk' - bufferutil @@ -16821,11 +16717,11 @@ snapshots: - ws - zod - '@earendil-works/pi-coding-agent@0.80.6(@modelcontextprotocol/sdk@1.29.0(@cfworker/json-schema@4.1.1)(zod@3.25.76))(bufferutil@4.1.0)(ws@8.21.0(bufferutil@4.1.0))(zod@3.25.76)': + '@earendil-works/pi-coding-agent@0.83.0(@modelcontextprotocol/sdk@1.29.0(@cfworker/json-schema@4.1.1)(zod@3.25.76))(bufferutil@4.1.0)(ws@8.21.0(bufferutil@4.1.0))(zod@3.25.76)': dependencies: - '@earendil-works/pi-agent-core': 0.80.10(@modelcontextprotocol/sdk@1.29.0(@cfworker/json-schema@4.1.1)(zod@3.25.76))(bufferutil@4.1.0)(ws@8.21.0(bufferutil@4.1.0))(zod@3.25.76) - '@earendil-works/pi-ai': 0.80.10(@modelcontextprotocol/sdk@1.29.0(@cfworker/json-schema@4.1.1)(zod@3.25.76))(bufferutil@4.1.0)(ws@8.21.0(bufferutil@4.1.0))(zod@3.25.76) - '@earendil-works/pi-tui': 0.80.10 + '@earendil-works/pi-agent-core': 0.83.0(@modelcontextprotocol/sdk@1.29.0(@cfworker/json-schema@4.1.1)(zod@3.25.76))(bufferutil@4.1.0)(ws@8.21.0(bufferutil@4.1.0))(zod@3.25.76) + '@earendil-works/pi-ai': 0.83.0(@modelcontextprotocol/sdk@1.29.0(@cfworker/json-schema@4.1.1)(zod@3.25.76))(bufferutil@4.1.0)(ws@8.21.0(bufferutil@4.1.0))(zod@3.25.76) + '@earendil-works/pi-tui': 0.83.0 '@silvia-odwyer/photon-node': 0.3.4 chalk: 5.6.2 cross-spawn: 7.0.6 @@ -16838,7 +16734,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: @@ -16858,7 +16754,7 @@ snapshots: optionalDependencies: koffi: 2.15.2 - '@earendil-works/pi-tui@0.80.10': + '@earendil-works/pi-tui@0.83.0': dependencies: get-east-asian-width: 1.6.0 marked: 18.0.5 @@ -17271,32 +17167,6 @@ snapshots: '@shikijs/types': 3.23.0 '@shikijs/vscode-textmate': 10.0.2 - '@google/genai@1.47.0(@modelcontextprotocol/sdk@1.29.0(@cfworker/json-schema@4.1.1)(zod@3.25.76))(bufferutil@4.1.0)': - dependencies: - google-auth-library: 10.6.2 - p-retry: 4.6.2 - protobufjs: 7.5.4 - ws: 8.21.0(bufferutil@4.1.0) - optionalDependencies: - '@modelcontextprotocol/sdk': 1.29.0(@cfworker/json-schema@4.1.1)(zod@3.25.76) - transitivePeerDependencies: - - bufferutil - - supports-color - - utf-8-validate - - '@google/genai@1.47.0(@modelcontextprotocol/sdk@1.29.0(@cfworker/json-schema@4.1.1)(zod@4.3.6))(bufferutil@4.1.0)': - dependencies: - google-auth-library: 10.6.2 - p-retry: 4.6.2 - protobufjs: 7.5.4 - ws: 8.21.0(bufferutil@4.1.0) - optionalDependencies: - '@modelcontextprotocol/sdk': 1.29.0(@cfworker/json-schema@4.1.1)(zod@4.3.6) - transitivePeerDependencies: - - bufferutil - - supports-color - - utf-8-validate - '@google/genai@1.52.0(@modelcontextprotocol/sdk@1.29.0(@cfworker/json-schema@4.1.1)(zod@3.25.76))(bufferutil@4.1.0)': dependencies: google-auth-library: 10.6.2 @@ -17779,7 +17649,6 @@ snapshots: '@mariozechner/pi-ai': 0.60.0(@modelcontextprotocol/sdk@1.29.0(@cfworker/json-schema@4.1.1)(zod@3.25.76))(bufferutil@4.1.0)(ws@8.21.0(bufferutil@4.1.0))(zod@3.25.76) transitivePeerDependencies: - '@modelcontextprotocol/sdk' - - aws-crt - bufferutil - supports-color - utf-8-validate @@ -17791,7 +17660,6 @@ snapshots: '@mariozechner/pi-ai': 0.60.0(@modelcontextprotocol/sdk@1.29.0(@cfworker/json-schema@4.1.1)(zod@4.3.6))(bufferutil@4.1.0)(ws@8.21.0(bufferutil@4.1.0))(zod@4.3.6) transitivePeerDependencies: - '@modelcontextprotocol/sdk' - - aws-crt - bufferutil - supports-color - utf-8-validate @@ -17801,8 +17669,8 @@ snapshots: '@mariozechner/pi-ai@0.60.0(@modelcontextprotocol/sdk@1.29.0(@cfworker/json-schema@4.1.1)(zod@3.25.76))(bufferutil@4.1.0)(ws@8.21.0(bufferutil@4.1.0))(zod@3.25.76)': dependencies: '@anthropic-ai/sdk': 0.73.0(zod@3.25.76) - '@aws-sdk/client-bedrock-runtime': 3.1020.0 - '@google/genai': 1.47.0(@modelcontextprotocol/sdk@1.29.0(@cfworker/json-schema@4.1.1)(zod@3.25.76))(bufferutil@4.1.0) + '@aws-sdk/client-bedrock-runtime': 3.1089.0 + '@google/genai': 1.52.0(@modelcontextprotocol/sdk@1.29.0(@cfworker/json-schema@4.1.1)(zod@3.25.76))(bufferutil@4.1.0) '@mistralai/mistralai': 1.14.1(bufferutil@4.1.0) '@sinclair/typebox': 0.34.49 ajv: 8.18.0 @@ -17815,7 +17683,6 @@ snapshots: zod-to-json-schema: 3.25.2(zod@3.25.76) transitivePeerDependencies: - '@modelcontextprotocol/sdk' - - aws-crt - bufferutil - supports-color - utf-8-validate @@ -17825,8 +17692,8 @@ snapshots: '@mariozechner/pi-ai@0.60.0(@modelcontextprotocol/sdk@1.29.0(@cfworker/json-schema@4.1.1)(zod@4.3.6))(bufferutil@4.1.0)(ws@8.21.0(bufferutil@4.1.0))(zod@4.3.6)': dependencies: '@anthropic-ai/sdk': 0.73.0(zod@4.3.6) - '@aws-sdk/client-bedrock-runtime': 3.1020.0 - '@google/genai': 1.47.0(@modelcontextprotocol/sdk@1.29.0(@cfworker/json-schema@4.1.1)(zod@4.3.6))(bufferutil@4.1.0) + '@aws-sdk/client-bedrock-runtime': 3.1089.0 + '@google/genai': 1.52.0(@modelcontextprotocol/sdk@1.29.0(@cfworker/json-schema@4.1.1)(zod@4.3.6))(bufferutil@4.1.0) '@mistralai/mistralai': 1.14.1(bufferutil@4.1.0) '@sinclair/typebox': 0.34.49 ajv: 8.18.0 @@ -17839,7 +17706,6 @@ snapshots: zod-to-json-schema: 3.25.2(zod@4.3.6) transitivePeerDependencies: - '@modelcontextprotocol/sdk' - - aws-crt - bufferutil - supports-color - utf-8-validate @@ -17871,7 +17737,6 @@ snapshots: '@mariozechner/clipboard': 0.3.2 transitivePeerDependencies: - '@modelcontextprotocol/sdk' - - aws-crt - bufferutil - supports-color - utf-8-validate @@ -17903,7 +17768,6 @@ snapshots: '@mariozechner/clipboard': 0.3.2 transitivePeerDependencies: - '@modelcontextprotocol/sdk' - - aws-crt - bufferutil - supports-color - utf-8-validate @@ -19548,10 +19412,10 @@ snapshots: optionalDependencies: pyodide: 0.28.3(bufferutil@4.1.0) - '@rivet-dev/flue@2.3.9(@opentelemetry/api@1.9.0)(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(@types/node@24.13.2)(better-sqlite3@12.8.0)(bufferutil@4.1.0)(esbuild@0.28.1)(hono@4.12.9)(jiti@2.7.0)(pyodide@0.28.3(bufferutil@4.1.0))(sql.js@1.14.1)(tsx@4.21.0)(typebox@1.3.6)(typescript@5.9.3)(wrangler@4.113.0(bufferutil@4.1.0))(ws@8.21.0(bufferutil@4.1.0))(yaml@2.9.0)(zod-to-json-schema@3.25.2(zod@4.3.6))(zod@4.3.6)': + '@rivet-dev/flue@2.3.9(@opentelemetry/api@1.9.0)(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(@types/node@24.13.2)(better-sqlite3@12.8.0)(bufferutil@4.1.0)(esbuild@0.28.1)(hono@4.12.9)(jiti@2.7.0)(pyodide@0.28.3(bufferutil@4.1.0))(sql.js@1.14.1)(tsx@4.21.0)(typebox@1.3.7)(typescript@5.9.3)(wrangler@4.113.0(bufferutil@4.1.0))(ws@8.21.0(bufferutil@4.1.0))(yaml@2.9.0)(zod-to-json-schema@3.25.2(zod@4.3.6))(zod@4.3.6)': dependencies: - '@flue/cli': '@rivet-dev/labs-flue-cli@1.0.0-beta.9-rivet.2(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(@types/node@24.13.2)(bufferutil@4.1.0)(esbuild@0.28.1)(hono@4.12.9)(jiti@2.7.0)(tsx@4.21.0)(typebox@1.3.6)(typescript@5.9.3)(wrangler@4.113.0(bufferutil@4.1.0))(ws@8.21.0(bufferutil@4.1.0))(yaml@2.9.0)(zod-to-json-schema@3.25.2(zod@4.3.6))(zod@4.3.6)' - '@flue/runtime': '@rivet-dev/labs-flue-runtime@1.0.0-beta.9-rivet.2(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(bufferutil@4.1.0)(typebox@1.3.6)(typescript@5.9.3)(ws@8.21.0(bufferutil@4.1.0))(zod-to-json-schema@3.25.2(zod@4.3.6))(zod@4.3.6)' + '@flue/cli': '@rivet-dev/labs-flue-cli@1.0.0-beta.9-rivet.2(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(@types/node@24.13.2)(bufferutil@4.1.0)(esbuild@0.28.1)(hono@4.12.9)(jiti@2.7.0)(tsx@4.21.0)(typebox@1.3.7)(typescript@5.9.3)(wrangler@4.113.0(bufferutil@4.1.0))(ws@8.21.0(bufferutil@4.1.0))(yaml@2.9.0)(zod-to-json-schema@3.25.2(zod@4.3.6))(zod@4.3.6)' + '@flue/runtime': '@rivet-dev/labs-flue-runtime@1.0.0-beta.9-rivet.2(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(bufferutil@4.1.0)(typebox@1.3.7)(typescript@5.9.3)(ws@8.21.0(bufferutil@4.1.0))(zod-to-json-schema@3.25.2(zod@4.3.6))(zod@4.3.6)' rivetkit: 2.3.9(@opentelemetry/api@1.9.0)(better-sqlite3@12.8.0)(pyodide@0.28.3(bufferutil@4.1.0))(sql.js@1.14.1)(ws@8.21.0(bufferutil@4.1.0)) transitivePeerDependencies: - '@aws-sdk/client-rds-data' @@ -19615,10 +19479,10 @@ snapshots: - zod-openapi - zod-to-json-schema - '@rivet-dev/labs-flue-cli@1.0.0-beta.9-rivet.2(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(@types/node@24.13.2)(bufferutil@4.1.0)(esbuild@0.28.1)(hono@4.12.9)(jiti@2.7.0)(tsx@4.21.0)(typebox@1.3.6)(typescript@5.9.3)(wrangler@4.113.0(bufferutil@4.1.0))(ws@8.21.0(bufferutil@4.1.0))(yaml@2.9.0)(zod-to-json-schema@3.25.2(zod@4.3.6))(zod@4.3.6)': + '@rivet-dev/labs-flue-cli@1.0.0-beta.9-rivet.2(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(@types/node@24.13.2)(bufferutil@4.1.0)(esbuild@0.28.1)(hono@4.12.9)(jiti@2.7.0)(tsx@4.21.0)(typebox@1.3.7)(typescript@5.9.3)(wrangler@4.113.0(bufferutil@4.1.0))(ws@8.21.0(bufferutil@4.1.0))(yaml@2.9.0)(zod-to-json-schema@3.25.2(zod@4.3.6))(zod@4.3.6)': dependencies: '@cloudflare/vite-plugin': 1.46.0(bufferutil@4.1.0)(vite@8.1.5(@types/node@24.13.2)(esbuild@0.28.1)(jiti@2.7.0)(tsx@4.21.0)(yaml@2.9.0))(wrangler@4.113.0(bufferutil@4.1.0)) - '@flue/runtime': '@rivet-dev/labs-flue-runtime@1.0.0-beta.9-rivet.2(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(bufferutil@4.1.0)(typebox@1.3.6)(typescript@5.9.3)(ws@8.21.0(bufferutil@4.1.0))(zod-to-json-schema@3.25.2(zod@4.3.6))(zod@4.3.6)' + '@flue/runtime': '@rivet-dev/labs-flue-runtime@1.0.0-beta.9-rivet.2(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(bufferutil@4.1.0)(typebox@1.3.7)(typescript@5.9.3)(ws@8.21.0(bufferutil@4.1.0))(zod-to-json-schema@3.25.2(zod@4.3.6))(zod@4.3.6)' '@flue/sdk': '@rivet-dev/labs-flue-sdk@1.0.0-beta.9-rivet.2' '@hono/node-server': 2.0.11(hono@4.12.9) '@vercel/detect-agent': 1.2.3 @@ -19659,7 +19523,7 @@ snapshots: - zod-openapi - zod-to-json-schema - '@rivet-dev/labs-flue-runtime@1.0.0-beta.9-rivet.2(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(bufferutil@4.1.0)(typebox@1.3.6)(typescript@5.9.3)(ws@8.21.0(bufferutil@4.1.0))(zod-to-json-schema@3.25.2(zod@4.3.6))(zod@4.3.6)': + '@rivet-dev/labs-flue-runtime@1.0.0-beta.9-rivet.2(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(bufferutil@4.1.0)(typebox@1.3.7)(typescript@5.9.3)(ws@8.21.0(bufferutil@4.1.0))(zod-to-json-schema@3.25.2(zod@4.3.6))(zod@4.3.6)': dependencies: '@cfworker/json-schema': 4.1.1 '@earendil-works/pi-agent-core': 0.80.10(@modelcontextprotocol/sdk@1.29.0(@cfworker/json-schema@4.1.1)(zod@4.3.6))(bufferutil@4.1.0)(ws@8.21.0(bufferutil@4.1.0))(zod@4.3.6) @@ -19667,11 +19531,11 @@ snapshots: '@hono/node-server': 2.0.11(hono@4.12.9) '@hono/standard-validator': 0.2.3(@standard-schema/spec@1.1.0)(hono@4.12.9) '@modelcontextprotocol/sdk': 1.29.0(@cfworker/json-schema@4.1.1)(zod@4.3.6) - '@standard-community/standard-json': 0.3.5(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(@valibot/to-json-schema@1.7.1(valibot@1.4.2(typescript@5.9.3)))(quansync@0.2.11)(typebox@1.3.6)(valibot@1.4.2(typescript@5.9.3))(zod-to-json-schema@3.25.2(zod@4.3.6))(zod@4.3.6) - '@standard-community/standard-openapi': 0.2.9(@standard-community/standard-json@0.3.5(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(@valibot/to-json-schema@1.7.1(valibot@1.4.2(typescript@5.9.3)))(quansync@0.2.11)(typebox@1.3.6)(valibot@1.4.2(typescript@5.9.3))(zod-to-json-schema@3.25.2(zod@4.3.6))(zod@4.3.6))(@standard-schema/spec@1.1.0)(openapi-types@12.1.3)(typebox@1.3.6)(valibot@1.4.2(typescript@5.9.3))(zod@4.3.6) + '@standard-community/standard-json': 0.3.5(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(@valibot/to-json-schema@1.7.1(valibot@1.4.2(typescript@5.9.3)))(quansync@0.2.11)(typebox@1.3.7)(valibot@1.4.2(typescript@5.9.3))(zod-to-json-schema@3.25.2(zod@4.3.6))(zod@4.3.6) + '@standard-community/standard-openapi': 0.2.9(@standard-community/standard-json@0.3.5(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(@valibot/to-json-schema@1.7.1(valibot@1.4.2(typescript@5.9.3)))(quansync@0.2.11)(typebox@1.3.7)(valibot@1.4.2(typescript@5.9.3))(zod-to-json-schema@3.25.2(zod@4.3.6))(zod@4.3.6))(@standard-schema/spec@1.1.0)(openapi-types@12.1.3)(typebox@1.3.7)(valibot@1.4.2(typescript@5.9.3))(zod@4.3.6) '@valibot/to-json-schema': 1.7.1(valibot@1.4.2(typescript@5.9.3)) hono: 4.12.9 - hono-openapi: 1.3.1(@hono/standard-validator@0.2.3(@standard-schema/spec@1.1.0)(hono@4.12.9))(@standard-community/standard-json@0.3.5(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(@valibot/to-json-schema@1.7.1(valibot@1.4.2(typescript@5.9.3)))(quansync@0.2.11)(typebox@1.3.6)(valibot@1.4.2(typescript@5.9.3))(zod-to-json-schema@3.25.2(zod@4.3.6))(zod@4.3.6))(@standard-community/standard-openapi@0.2.9(@standard-community/standard-json@0.3.5(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(@valibot/to-json-schema@1.7.1(valibot@1.4.2(typescript@5.9.3)))(quansync@0.2.11)(typebox@1.3.6)(valibot@1.4.2(typescript@5.9.3))(zod-to-json-schema@3.25.2(zod@4.3.6))(zod@4.3.6))(@standard-schema/spec@1.1.0)(openapi-types@12.1.3)(typebox@1.3.6)(valibot@1.4.2(typescript@5.9.3))(zod@4.3.6))(@types/json-schema@7.0.15)(hono@4.12.9)(openapi-types@12.1.3) + hono-openapi: 1.3.1(@hono/standard-validator@0.2.3(@standard-schema/spec@1.1.0)(hono@4.12.9))(@standard-community/standard-json@0.3.5(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(@valibot/to-json-schema@1.7.1(valibot@1.4.2(typescript@5.9.3)))(quansync@0.2.11)(typebox@1.3.7)(valibot@1.4.2(typescript@5.9.3))(zod-to-json-schema@3.25.2(zod@4.3.6))(zod@4.3.6))(@standard-community/standard-openapi@0.2.9(@standard-community/standard-json@0.3.5(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(@valibot/to-json-schema@1.7.1(valibot@1.4.2(typescript@5.9.3)))(quansync@0.2.11)(typebox@1.3.7)(valibot@1.4.2(typescript@5.9.3))(zod-to-json-schema@3.25.2(zod@4.3.6))(zod@4.3.6))(@standard-schema/spec@1.1.0)(openapi-types@12.1.3)(typebox@1.3.7)(valibot@1.4.2(typescript@5.9.3))(zod@4.3.6))(@types/json-schema@7.0.15)(hono@4.12.9)(openapi-types@12.1.3) js-yaml: 4.3.0 just-bash: 3.1.0 openapi-types: 12.1.3 @@ -20445,7 +20309,7 @@ snapshots: dependencies: '@smithy/node-config-provider': 4.3.12 '@smithy/property-provider': 4.2.12 - '@smithy/types': 4.13.1 + '@smithy/types': 4.16.1 '@smithy/url-parser': 4.2.12 tslib: 2.8.1 @@ -20482,7 +20346,7 @@ snapshots: '@smithy/eventstream-serde-universal@4.2.12': dependencies: '@smithy/eventstream-codec': 4.2.12 - '@smithy/types': 4.13.1 + '@smithy/types': 4.16.1 tslib: 2.8.1 '@smithy/fetch-http-handler@5.3.15': @@ -20607,7 +20471,7 @@ snapshots: '@smithy/property-provider@4.2.12': dependencies: - '@smithy/types': 4.13.1 + '@smithy/types': 4.16.1 tslib: 2.8.1 '@smithy/protocol-http@5.3.12': @@ -20617,29 +20481,29 @@ snapshots: '@smithy/querystring-builder@4.2.12': dependencies: - '@smithy/types': 4.13.1 + '@smithy/types': 4.16.1 '@smithy/util-uri-escape': 4.2.2 tslib: 2.8.1 '@smithy/querystring-parser@4.2.12': dependencies: - '@smithy/types': 4.13.1 + '@smithy/types': 4.16.1 tslib: 2.8.1 '@smithy/service-error-classification@4.2.12': dependencies: - '@smithy/types': 4.13.1 + '@smithy/types': 4.16.1 '@smithy/shared-ini-file-loader@4.4.7': dependencies: - '@smithy/types': 4.13.1 + '@smithy/types': 4.16.1 tslib: 2.8.1 '@smithy/signature-v4@5.3.12': dependencies: '@smithy/is-array-buffer': 4.2.2 '@smithy/protocol-http': 5.3.12 - '@smithy/types': 4.13.1 + '@smithy/types': 4.16.1 '@smithy/util-hex-encoding': 4.2.2 '@smithy/util-middleware': 4.2.12 '@smithy/util-uri-escape': 4.2.2 @@ -20745,7 +20609,7 @@ snapshots: '@smithy/util-stream@4.5.21': dependencies: '@smithy/fetch-http-handler': 5.3.15 - '@smithy/node-http-handler': 4.5.1 + '@smithy/node-http-handler': 4.9.7 '@smithy/types': 4.13.1 '@smithy/util-base64': 4.3.2 '@smithy/util-buffer-from': 4.2.2 @@ -20780,25 +20644,25 @@ snapshots: '@stablelib/base64@1.0.1': {} - '@standard-community/standard-json@0.3.5(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(@valibot/to-json-schema@1.7.1(valibot@1.4.2(typescript@5.9.3)))(quansync@0.2.11)(typebox@1.3.6)(valibot@1.4.2(typescript@5.9.3))(zod-to-json-schema@3.25.2(zod@4.3.6))(zod@4.3.6)': + '@standard-community/standard-json@0.3.5(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(@valibot/to-json-schema@1.7.1(valibot@1.4.2(typescript@5.9.3)))(quansync@0.2.11)(typebox@1.3.7)(valibot@1.4.2(typescript@5.9.3))(zod-to-json-schema@3.25.2(zod@4.3.6))(zod@4.3.6)': dependencies: '@standard-schema/spec': 1.1.0 '@types/json-schema': 7.0.15 quansync: 0.2.11 optionalDependencies: '@valibot/to-json-schema': 1.7.1(valibot@1.4.2(typescript@5.9.3)) - typebox: 1.3.6 + typebox: 1.3.7 valibot: 1.4.2(typescript@5.9.3) zod: 4.3.6 zod-to-json-schema: 3.25.2(zod@4.3.6) - '@standard-community/standard-openapi@0.2.9(@standard-community/standard-json@0.3.5(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(@valibot/to-json-schema@1.7.1(valibot@1.4.2(typescript@5.9.3)))(quansync@0.2.11)(typebox@1.3.6)(valibot@1.4.2(typescript@5.9.3))(zod-to-json-schema@3.25.2(zod@4.3.6))(zod@4.3.6))(@standard-schema/spec@1.1.0)(openapi-types@12.1.3)(typebox@1.3.6)(valibot@1.4.2(typescript@5.9.3))(zod@4.3.6)': + '@standard-community/standard-openapi@0.2.9(@standard-community/standard-json@0.3.5(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(@valibot/to-json-schema@1.7.1(valibot@1.4.2(typescript@5.9.3)))(quansync@0.2.11)(typebox@1.3.7)(valibot@1.4.2(typescript@5.9.3))(zod-to-json-schema@3.25.2(zod@4.3.6))(zod@4.3.6))(@standard-schema/spec@1.1.0)(openapi-types@12.1.3)(typebox@1.3.7)(valibot@1.4.2(typescript@5.9.3))(zod@4.3.6)': dependencies: - '@standard-community/standard-json': 0.3.5(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(@valibot/to-json-schema@1.7.1(valibot@1.4.2(typescript@5.9.3)))(quansync@0.2.11)(typebox@1.3.6)(valibot@1.4.2(typescript@5.9.3))(zod-to-json-schema@3.25.2(zod@4.3.6))(zod@4.3.6) + '@standard-community/standard-json': 0.3.5(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(@valibot/to-json-schema@1.7.1(valibot@1.4.2(typescript@5.9.3)))(quansync@0.2.11)(typebox@1.3.7)(valibot@1.4.2(typescript@5.9.3))(zod-to-json-schema@3.25.2(zod@4.3.6))(zod@4.3.6) '@standard-schema/spec': 1.1.0 openapi-types: 12.1.3 optionalDependencies: - typebox: 1.3.6 + typebox: 1.3.7 valibot: 1.4.2(typescript@5.9.3) zod: 4.3.6 @@ -23741,10 +23605,10 @@ snapshots: dependencies: react-is: 16.13.1 - hono-openapi@1.3.1(@hono/standard-validator@0.2.3(@standard-schema/spec@1.1.0)(hono@4.12.9))(@standard-community/standard-json@0.3.5(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(@valibot/to-json-schema@1.7.1(valibot@1.4.2(typescript@5.9.3)))(quansync@0.2.11)(typebox@1.3.6)(valibot@1.4.2(typescript@5.9.3))(zod-to-json-schema@3.25.2(zod@4.3.6))(zod@4.3.6))(@standard-community/standard-openapi@0.2.9(@standard-community/standard-json@0.3.5(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(@valibot/to-json-schema@1.7.1(valibot@1.4.2(typescript@5.9.3)))(quansync@0.2.11)(typebox@1.3.6)(valibot@1.4.2(typescript@5.9.3))(zod-to-json-schema@3.25.2(zod@4.3.6))(zod@4.3.6))(@standard-schema/spec@1.1.0)(openapi-types@12.1.3)(typebox@1.3.6)(valibot@1.4.2(typescript@5.9.3))(zod@4.3.6))(@types/json-schema@7.0.15)(hono@4.12.9)(openapi-types@12.1.3): + hono-openapi@1.3.1(@hono/standard-validator@0.2.3(@standard-schema/spec@1.1.0)(hono@4.12.9))(@standard-community/standard-json@0.3.5(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(@valibot/to-json-schema@1.7.1(valibot@1.4.2(typescript@5.9.3)))(quansync@0.2.11)(typebox@1.3.7)(valibot@1.4.2(typescript@5.9.3))(zod-to-json-schema@3.25.2(zod@4.3.6))(zod@4.3.6))(@standard-community/standard-openapi@0.2.9(@standard-community/standard-json@0.3.5(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(@valibot/to-json-schema@1.7.1(valibot@1.4.2(typescript@5.9.3)))(quansync@0.2.11)(typebox@1.3.7)(valibot@1.4.2(typescript@5.9.3))(zod-to-json-schema@3.25.2(zod@4.3.6))(zod@4.3.6))(@standard-schema/spec@1.1.0)(openapi-types@12.1.3)(typebox@1.3.7)(valibot@1.4.2(typescript@5.9.3))(zod@4.3.6))(@types/json-schema@7.0.15)(hono@4.12.9)(openapi-types@12.1.3): dependencies: - '@standard-community/standard-json': 0.3.5(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(@valibot/to-json-schema@1.7.1(valibot@1.4.2(typescript@5.9.3)))(quansync@0.2.11)(typebox@1.3.6)(valibot@1.4.2(typescript@5.9.3))(zod-to-json-schema@3.25.2(zod@4.3.6))(zod@4.3.6) - '@standard-community/standard-openapi': 0.2.9(@standard-community/standard-json@0.3.5(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(@valibot/to-json-schema@1.7.1(valibot@1.4.2(typescript@5.9.3)))(quansync@0.2.11)(typebox@1.3.6)(valibot@1.4.2(typescript@5.9.3))(zod-to-json-schema@3.25.2(zod@4.3.6))(zod@4.3.6))(@standard-schema/spec@1.1.0)(openapi-types@12.1.3)(typebox@1.3.6)(valibot@1.4.2(typescript@5.9.3))(zod@4.3.6) + '@standard-community/standard-json': 0.3.5(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(@valibot/to-json-schema@1.7.1(valibot@1.4.2(typescript@5.9.3)))(quansync@0.2.11)(typebox@1.3.7)(valibot@1.4.2(typescript@5.9.3))(zod-to-json-schema@3.25.2(zod@4.3.6))(zod@4.3.6) + '@standard-community/standard-openapi': 0.2.9(@standard-community/standard-json@0.3.5(@standard-schema/spec@1.1.0)(@types/json-schema@7.0.15)(@valibot/to-json-schema@1.7.1(valibot@1.4.2(typescript@5.9.3)))(quansync@0.2.11)(typebox@1.3.7)(valibot@1.4.2(typescript@5.9.3))(zod-to-json-schema@3.25.2(zod@4.3.6))(zod@4.3.6))(@standard-schema/spec@1.1.0)(openapi-types@12.1.3)(typebox@1.3.7)(valibot@1.4.2(typescript@5.9.3))(zod@4.3.6) '@types/json-schema': 7.0.15 openapi-types: 12.1.3 optionalDependencies: @@ -27119,6 +26983,8 @@ snapshots: typebox@1.3.6: {} + typebox@1.3.7: {} + typed-array-buffer@1.0.3: dependencies: call-bound: 1.0.4 diff --git a/software/pi/agentos-package.json b/software/pi/agentos-package.json index b378ea263f..bf29d4ff4e 100644 --- a/software/pi/agentos-package.json +++ b/software/pi/agentos-package.json @@ -3,8 +3,7 @@ "agent": { "acpEntrypoint": "pi-acp", "env": { - "PI_ACP_PI_COMMAND": "/opt/agentos/bin/pi", - "PI_ACP_PI_ENTRYPOINT": "/opt/agentos/pkgs/pi/0.0.1/node_modules/@earendil-works/pi-coding-agent/dist/cli.js" + "PI_ACP_PI_COMMAND": "/opt/agentos/bin/pi-agentos" } }, "registry": { diff --git a/software/pi/package.json b/software/pi/package.json index e0967f4b22..59b51deda2 100644 --- a/software/pi/package.json +++ b/software/pi/package.json @@ -6,8 +6,9 @@ "main": "./dist/index.js", "types": "./dist/index.d.ts", "bin": { - "pi": "./node_modules/@earendil-works/pi-coding-agent/dist/cli.js", - "pi-acp": "./dist/pi-acp/index.js" + "pi": "./dist/pi-command.mjs", + "pi-agentos": "./dist/pi-agentos.mjs", + "pi-acp": "./dist/pi-acp-agentos.mjs" }, "exports": { ".": { @@ -24,13 +25,13 @@ "agentos-package.json" ], "scripts": { - "build": "rm -rf dist && node scripts/build-pi-acp.mjs && tsc && agentos-toolchain pack . --out dist/package --agent pi-acp --prune-native --omit-optional", + "build": "rm -rf dist && node scripts/build-pi-acp.mjs && tsc && agentos-toolchain pack . --out dist/package --agent pi-acp --prune-native --omit-optional && agentos-toolchain pack-aospkg dist/package.tar dist/package.aospkg", "check-types": "tsc --noEmit", "test": "pnpm build && node --test --test-force-exit tests/*.test.mjs" }, "dependencies": { "@agentclientprotocol/sdk": "1.2.1", - "@earendil-works/pi-coding-agent": "0.80.6", + "@earendil-works/pi-coding-agent": "0.83.0", "pi-mcp-adapter": "2.11.0", "zod": "3.25.76" }, diff --git a/software/pi/scripts/build-pi-acp.mjs b/software/pi/scripts/build-pi-acp.mjs index 39838840d5..8aabb459a3 100644 --- a/software/pi/scripts/build-pi-acp.mjs +++ b/software/pi/scripts/build-pi-acp.mjs @@ -26,6 +26,10 @@ const tarballPath = resolve(cacheDir, `pi-acp-${SOURCE_COMMIT}.tar.gz`); const sourceRoot = resolve(cacheDir, `pi-acp-${SOURCE_COMMIT}`); const outputDir = resolve(packageDir, "dist", "pi-acp"); const manifestPath = resolve(packageDir, "dist", "pi-acp-upstream.json"); +const wrapperPath = resolve(packageDir, "wrappers", "pi-agentos.mjs"); +const acpWrapperPath = resolve(packageDir, "wrappers", "pi-acp-agentos.mjs"); +const acpErrorsPath = resolve(packageDir, "wrappers", "acp-errors.mjs"); +const piCommandPath = resolve(packageDir, "wrappers", "pi-command.mjs"); function sha256(path) { return createHash("sha256").update(readFileSync(path)).digest("hex"); @@ -110,6 +114,10 @@ cpSync(sourceEntrypoint, resolve(outputDir, "index.js")); cpSync(resolve(sourceRoot, "package.json"), resolve(outputDir, "package.json")); const sourceMap = `${sourceEntrypoint}.map`; if (existsSync(sourceMap)) cpSync(sourceMap, resolve(outputDir, "index.js.map")); +cpSync(wrapperPath, resolve(packageDir, "dist", "pi-agentos.mjs")); +cpSync(acpWrapperPath, resolve(packageDir, "dist", "pi-acp-agentos.mjs")); +cpSync(acpErrorsPath, resolve(packageDir, "dist", "acp-errors.mjs")); +cpSync(piCommandPath, resolve(packageDir, "dist", "pi-command.mjs")); mkdirSync(dirname(manifestPath), { recursive: true }); writeFileSync( diff --git a/software/pi/tests/package.test.mjs b/software/pi/tests/package.test.mjs index a547f920dc..0066d35c35 100644 --- a/software/pi/tests/package.test.mjs +++ b/software/pi/tests/package.test.mjs @@ -34,19 +34,18 @@ test("Pi packages the commit-pinned rivet-dev ACP adapter and runtime closure", assert.equal(manifest.agent.acpEntrypoint, "pi-acp"); assert.equal(manifest.agent.runtime, undefined); assert.equal(manifest.agent.snapshot, undefined); - assert.equal(manifest.agent.env.PI_ACP_PI_COMMAND, "/opt/agentos/bin/pi"); - assert.equal( - manifest.agent.env.PI_ACP_PI_ENTRYPOINT, - "/opt/agentos/pkgs/pi/0.0.1/node_modules/@earendil-works/pi-coding-agent/dist/cli.js", - ); - assert.equal(packageJson.bin["pi-acp"], "./dist/pi-acp/index.js"); + assert.equal(manifest.agent.env.PI_ACP_PI_COMMAND, "/opt/agentos/bin/pi-agentos"); + assert.equal(manifest.agent.env.PI_ACP_PI_ENTRYPOINT, undefined); + assert.equal(manifest.agent.env.PI_ACP_PI_EXTENSION, undefined); + assert.equal(packageJson.bin["pi-acp"], "./dist/pi-acp-agentos.mjs"); + assert.equal(packageJson.bin["pi-agentos"], "./dist/pi-agentos.mjs"); assert.equal( packageJson.bin.pi, - "./node_modules/@earendil-works/pi-coding-agent/dist/cli.js", + "./dist/pi-command.mjs", ); assert.equal( packageJson.dependencies["@earendil-works/pi-coding-agent"], - "0.80.6", + "0.83.0", ); assert.equal(packageJson.dependencies["pi-acp"], undefined); assert.equal(packageJson.dependencies["pi-mcp-adapter"], "2.11.0"); @@ -60,6 +59,7 @@ test("Pi packages the commit-pinned rivet-dev ACP adapter and runtime closure", "85bc7e133d28e9d870ecad7aa3de9e6a17ffea142443a177d618597a56c72cd7", ); assert.equal(upstreamManifest.sourcePackageVersion, "0.0.31"); + assert.equal(upstreamManifest.compatibilityPatches, undefined); assert.deepEqual(upstreamManifest.buildCommands, ["npm ci", "npm run build"]); assert.ok(adapterEntrypoint.startsWith("#!/usr/bin/env node")); assert.equal(adapterPackageJson.name, "pi-acp"); @@ -68,7 +68,65 @@ test("Pi packages the commit-pinned rivet-dev ACP adapter and runtime closure", assert.equal(packageJson.dependencies["@mariozechner/pi-coding-agent"], undefined); }); +test("AgentOS ACP shim normalizes only missing native Pi sessions", async () => { + const { acpRequestCwd, normalizeAcpResponse } = await import( + new URL( + "../dist/package/node_modules/@agentos-software/pi/dist/acp-errors.mjs", + import.meta.url, + ) + ); + const missing = JSON.stringify({ + jsonrpc: "2.0", + id: 7, + error: { code: -32602, message: "Invalid params: Unknown sessionId: old-id", data: {} }, + }); + assert.deepEqual(JSON.parse(normalizeAcpResponse(missing)), { + jsonrpc: "2.0", + id: 7, + error: { code: -32002, message: "Resource not found", data: { kind: "unknown_session" } }, + }); + const wrongCwd = JSON.stringify({ + jsonrpc: "2.0", + id: 9, + error: { + code: -32602, + message: "Invalid params: cwd does not match persisted session: expected /, received /workspace", + data: {}, + }, + }); + assert.equal(JSON.parse(normalizeAcpResponse(wrongCwd)).error.code, -32002); + const unrelated = JSON.stringify({ + jsonrpc: "2.0", + id: 8, + error: { code: -32602, message: "Invalid params: bad model", data: {} }, + }); + assert.equal(normalizeAcpResponse(unrelated), unrelated); + assert.equal(normalizeAcpResponse("not-json"), "not-json"); + assert.equal(acpRequestCwd('{"method":"session/new","params":{"cwd":"/workspace"}}'), "/workspace"); + assert.equal(acpRequestCwd('{"method":"session/prompt","params":{"cwd":"/other"}}'), null); + assert.equal(acpRequestCwd('{"method":"session/new","params":{"cwd":"relative"}}'), null); +}); + +test("AgentOS Pi command answers the guest-safe version probe", async () => { + const command = new URL("../dist/package/bin/pi", import.meta.url).pathname; + const child = spawn(command, ["--version"], { stdio: ["ignore", "pipe", "pipe"] }); + let stdout = ""; + let stderr = ""; + child.stdout.setEncoding("utf8"); + child.stderr.setEncoding("utf8"); + child.stdout.on("data", (chunk) => { stdout += chunk; }); + child.stderr.on("data", (chunk) => { stderr += chunk; }); + const code = await new Promise((resolve, reject) => { + child.once("error", reject); + child.once("exit", resolve); + }); + assert.equal(code, 0); + assert.equal(stdout.trim(), "0.83.0"); + assert.equal(stderr, ""); +}); + test("packaged pinned Pi adapter initializes with persistent session capabilities", async (t) => { + const piCommand = new URL("../dist/package/bin/pi-agentos", import.meta.url).pathname; const child = spawn( new URL("../dist/package/bin/pi-acp", import.meta.url).pathname, [], @@ -76,7 +134,7 @@ test("packaged pinned Pi adapter initializes with persistent session capabilitie stdio: ["pipe", "pipe", "pipe"], env: { ...process.env, - PI_ACP_PI_COMMAND: "/opt/agentos/bin/pi", + PI_ACP_PI_COMMAND: piCommand, }, }, ); @@ -135,4 +193,40 @@ test("packaged pinned Pi adapter initializes with persistent session capabilitie response.result.agentCapabilities.sessionCapabilities.close, {}, ); + + const session = await new Promise((resolve, reject) => { + const timeout = setTimeout( + () => reject(new Error(`session/new timed out: ${stderr}`)), + 10_000, + ); + let buffer = ""; + child.stdout.on("data", (chunk) => { + buffer += chunk; + const lines = buffer.split("\n"); + buffer = lines.pop() ?? ""; + for (const line of lines) { + if (!line.trim()) continue; + const message = JSON.parse(line); + if (message.id !== 2) continue; + clearTimeout(timeout); + resolve(message); + } + }); + child.stdin.write( + `${JSON.stringify({ + jsonrpc: "2.0", + id: 2, + method: "session/new", + params: { cwd: new URL("..", import.meta.url).pathname, mcpServers: [] }, + })}\n`, + ); + }); + + assert.equal(session.error, undefined); + assert.equal(typeof session.result.sessionId, "string"); + assert.ok( + session.result.models.availableModels.some( + (model) => model.modelId === "openai-codex/gpt-5.6-terra", + ), + ); }); diff --git a/software/pi/wrappers/acp-errors.mjs b/software/pi/wrappers/acp-errors.mjs new file mode 100644 index 0000000000..54aef38931 --- /dev/null +++ b/software/pi/wrappers/acp-errors.mjs @@ -0,0 +1,33 @@ +export function normalizeAcpResponse(line) { + let message; + try { + message = JSON.parse(line); + } catch { + return line; + } + const invalidSession = /unknown sessionid:|cwd does not match persisted session:/i.test( + message?.error?.message ?? "", + ); + if (message?.error?.code !== -32602 || !invalidSession) return line; + + return JSON.stringify({ + ...message, + error: { + ...message.error, + code: -32002, + message: "Resource not found", + data: { kind: "unknown_session" }, + }, + }); +} + +export function acpRequestCwd(line) { + try { + const message = JSON.parse(line); + if (!["session/new", "session/load", "session/resume"].includes(message?.method)) return null; + const cwd = message?.params?.cwd; + return typeof cwd === "string" && cwd.startsWith("/") ? cwd : null; + } catch { + return null; + } +} diff --git a/software/pi/wrappers/pi-acp-agentos.mjs b/software/pi/wrappers/pi-acp-agentos.mjs new file mode 100644 index 0000000000..2d6480a7ec --- /dev/null +++ b/software/pi/wrappers/pi-acp-agentos.mjs @@ -0,0 +1,83 @@ +#!/usr/bin/env node + +import { spawn } from "node:child_process"; +import { rmSync, writeFileSync } from "node:fs"; +import { tmpdir } from "node:os"; +import { resolve } from "node:path"; +import { createInterface } from "node:readline"; + +import { acpRequestCwd, normalizeAcpResponse } from "./acp-errors.mjs"; + +const upstreamEntrypoint = new URL("./pi-acp/index.js", import.meta.url).pathname; +const cwdPath = resolve(tmpdir(), `agentos-pi-cwd-${process.pid}`); +const child = spawn(process.execPath, [upstreamEntrypoint, ...process.argv.slice(2)], { + env: { ...process.env, AGENTOS_PI_CWD_FILE: cwdPath }, + stdio: ["pipe", "pipe", "inherit"], +}); + +let inputBuffer = ""; +let sessionCwd = ""; +let finished = false; +function writeInput(value) { + if (child.stdin.write(value) || typeof process.stdin.pause !== "function") return; + process.stdin.pause(); + child.stdin.once("drain", () => process.stdin.resume?.()); +} +function forwardInput(line, newline = true) { + const cwd = acpRequestCwd(line); + if (cwd && !sessionCwd) { + sessionCwd = cwd; + writeFileSync(cwdPath, `${cwd}\n`, { mode: 0o600 }); + } else if (cwd && cwd !== sessionCwd) { + throw new Error(`ACP adapter cannot change cwd from ${sessionCwd} to ${cwd}`); + } + writeInput(`${line}${newline ? "\n" : ""}`); +} +process.stdin.on("data", (chunk) => { + if (sessionCwd) { + writeInput(chunk); + return; + } + inputBuffer += chunk.toString(); + for (;;) { + const newline = inputBuffer.indexOf("\n"); + if (newline < 0) return; + const line = inputBuffer.slice(0, newline); + inputBuffer = inputBuffer.slice(newline + 1); + forwardInput(line); + if (!sessionCwd) continue; + if (inputBuffer) writeInput(inputBuffer); + inputBuffer = ""; + return; + } +}); +process.stdin.on("end", () => { + if (inputBuffer) forwardInput(inputBuffer, false); + child.stdin.end(); +}); +const output = createInterface({ input: child.stdout, crlfDelay: Infinity }); +output.on("line", (line) => process.stdout.write(`${normalizeAcpResponse(line)}\n`)); + +for (const signal of ["SIGINT", "SIGTERM"]) { + process.once(signal, () => { + child.kill(signal); + setTimeout(() => child.kill("SIGKILL"), 2_000).unref?.(); + }); +} +child.once("error", (error) => { + process.stderr.write(`${error.stack ?? error}\n`); + finish(1); +}); +child.once("close", (code, signal) => { + finish(code ?? 1, signal); +}); + +function finish(code, signal) { + if (finished) return; + finished = true; + process.stdin.removeAllListeners?.("data"); + process.stdin.removeAllListeners?.("end"); + output.close(); + rmSync(cwdPath, { force: true }); + process.exitCode = signal === "SIGINT" ? 130 : signal === "SIGTERM" ? 143 : code; +} diff --git a/software/pi/wrappers/pi-agentos.mjs b/software/pi/wrappers/pi-agentos.mjs new file mode 100644 index 0000000000..540b2e79a7 --- /dev/null +++ b/software/pi/wrappers/pi-agentos.mjs @@ -0,0 +1,104 @@ +#!/usr/bin/env node + +import { readFileSync } from "node:fs"; +import { isAbsolute, resolve } from "node:path"; +import { + createAgentSessionFromServices, + createAgentSessionRuntime, + createAgentSessionServices, + getAgentDir, + parseArgs, + runRpcMode, + SessionManager, + SettingsManager, +} from "@earendil-works/pi-coding-agent"; + +process.title = "pi-agentos-rpc"; +process.env.PI_CODING_AGENT = "true"; + +let configuredCwd = ""; +if (process.env.AGENTOS_PI_CWD_FILE) { + try { + configuredCwd = readFileSync(process.env.AGENTOS_PI_CWD_FILE, "utf8").trim(); + } catch (error) { + if (error?.code !== "ENOENT") throw error; + } +} +const launchCwd = isAbsolute(configuredCwd) ? configuredCwd : process.cwd(); +process.chdir(launchCwd); +process.env.PWD = launchCwd; +const agentDir = getAgentDir(); +const parsed = parseArgs(process.argv.slice(2)); +const errors = parsed.diagnostics.filter((diagnostic) => diagnostic.type === "error"); +if (parsed.mode && parsed.mode !== "rpc") { + errors.push({ type: "error", message: "pi-agentos only supports RPC mode" }); +} +if (errors.length > 0) throw new Error(errors.map((diagnostic) => diagnostic.message).join("\n")); + +const extensionPaths = (parsed.extensions ?? []).map((path) => + isAbsolute(path) ? path : resolve(launchCwd, path), +); +const startupSettings = SettingsManager.create(launchCwd, agentDir, { projectTrusted: false }); +const sessionDir = parsed.sessionDir ?? process.env.PI_CODING_AGENT_SESSION_DIR ?? startupSettings.getSessionDir(); +const sessionManager = parsed.noSession + ? SessionManager.inMemory(launchCwd) + : parsed.session + ? SessionManager.open( + isAbsolute(parsed.session) ? parsed.session : resolve(launchCwd, parsed.session), + sessionDir, + ) + : SessionManager.create(launchCwd, sessionDir); + +const createRuntime = async ({ cwd, agentDir: runtimeAgentDir, sessionManager, sessionStartEvent }) => { + const settingsManager = SettingsManager.create(cwd, runtimeAgentDir, { projectTrusted: false }); + const services = await createAgentSessionServices({ + cwd, + agentDir: runtimeAgentDir, + settingsManager, + extensionFlagValues: parsed.unknownFlags, + resourceLoaderOptions: { + additionalExtensionPaths: extensionPaths, + noThemes: parsed.noThemes ?? true, + noExtensions: parsed.noExtensions, + noSkills: parsed.noSkills, + noPromptTemplates: parsed.noPromptTemplates, + noContextFiles: parsed.noContextFiles, + additionalSkillPaths: parsed.skills, + additionalPromptTemplatePaths: parsed.promptTemplates, + additionalThemePaths: parsed.themes, + systemPrompt: parsed.systemPrompt, + appendSystemPrompt: parsed.appendSystemPrompt, + }, + }); + const diagnostics = [ + ...services.diagnostics, + ...services.resourceLoader.getExtensions().errors.map(({ path, error }) => ({ + type: "error", + message: `Failed to load extension "${path}": ${error}`, + })), + ]; + const runtimeErrors = diagnostics.filter((diagnostic) => diagnostic.type === "error"); + if (runtimeErrors.length > 0) { + throw new Error(runtimeErrors.map((diagnostic) => diagnostic.message).join("\n")); + } + + return { + ...(await createAgentSessionFromServices({ + services, + sessionManager, + sessionStartEvent, + tools: parsed.tools, + excludeTools: parsed.excludeTools, + noTools: parsed.noTools ? "all" : parsed.noBuiltinTools ? "builtin" : undefined, + })), + services, + diagnostics, + }; +}; + +const runtime = await createAgentSessionRuntime(createRuntime, { + cwd: sessionManager.getCwd(), + agentDir, + sessionManager, +}); +await runRpcMode(runtime); diff --git a/software/pi/wrappers/pi-command.mjs b/software/pi/wrappers/pi-command.mjs new file mode 100644 index 0000000000..75d4ba4a59 --- /dev/null +++ b/software/pi/wrappers/pi-command.mjs @@ -0,0 +1,28 @@ +#!/usr/bin/env node + +import { spawn } from "node:child_process"; + +if (process.argv.length === 3 && process.argv[2] === "--version") { + process.stdout.write("0.83.0\n"); + process.exit(0); +} + +const upstreamEntrypoint = new URL( + "../node_modules/@earendil-works/pi-coding-agent/dist/cli.js", + import.meta.url, +).pathname; +const child = spawn(process.execPath, [upstreamEntrypoint, ...process.argv.slice(2)], { + env: process.env, + stdio: "inherit", +}); +for (const signal of ["SIGINT", "SIGTERM"]) { + process.once(signal, () => child.kill(signal)); +} +child.once("error", (error) => { + process.stderr.write(`${error.stack ?? error}\n`); + process.exitCode = 1; +}); +child.once("exit", (code, signal) => { + if (signal) process.kill(process.pid, signal); + else process.exitCode = code ?? 1; +});