diff --git a/.gitignore b/.gitignore index f066f8dbdb..5d76206e92 100644 --- a/.gitignore +++ b/.gitignore @@ -88,3 +88,6 @@ scripts/ralph/codex-streams/ # Agent working files now live user-scoped in ~/.agents (or $AGENTS_DIR). # This entry is a safety net so a stray in-repo .agent/ never gets committed. .agent/ + +# Local rivet-engine binary placed for engine-cli getEnginePath resolution +rivetkit-typescript/packages/engine-cli/rivet-engine diff --git a/.npmrc b/.npmrc new file mode 100644 index 0000000000..d67f374883 --- /dev/null +++ b/.npmrc @@ -0,0 +1 @@ +node-linker=hoisted diff --git a/Cargo.lock b/Cargo.lock index da882ec59f..caece970fb 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -41,7 +41,7 @@ checksum = "aae1277d39aeec15cb388266ecc24b11c80469deae6067e17a1a7aa9e5c1f234" [[package]] name = "agent-os-bridge" -version = "2.3.0-rc.11" +version = "0.2.0-rc.3" dependencies = [ "serde", "serde_json", @@ -49,7 +49,7 @@ dependencies = [ [[package]] name = "agent-os-client" -version = "2.3.0-rc.11" +version = "0.2.0-rc.3" dependencies = [ "agent-os-bridge", "agent-os-sidecar", @@ -75,7 +75,7 @@ dependencies = [ [[package]] name = "agent-os-execution" -version = "2.3.0-rc.11" +version = "0.2.0-rc.3" dependencies = [ "agent-os-bridge", "agent-os-v8-runtime", @@ -85,14 +85,13 @@ dependencies = [ "nix 0.29.0", "serde", "serde_json", - "tempfile", "tokio", - "wat", + "tracing", ] [[package]] name = "agent-os-kernel" -version = "2.3.0-rc.11" +version = "0.2.0-rc.3" dependencies = [ "agent-os-bridge", "base64 0.22.1", @@ -105,7 +104,7 @@ dependencies = [ [[package]] name = "agent-os-sidecar" -version = "2.3.0-rc.11" +version = "0.2.0-rc.3" dependencies = [ "agent-os-bridge", "agent-os-execution", @@ -139,21 +138,22 @@ dependencies = [ "socket2 0.6.0", "tokio", "tokio-rustls 0.26.2", + "tracing", + "tracing-subscriber", "ureq 2.12.1", "url", - "v8", - "wat", ] [[package]] name = "agent-os-v8-runtime" -version = "2.3.0-rc.11" +version = "0.2.0-rc.3" dependencies = [ "agent-os-bridge", "ciborium", "crossbeam-channel", "libc", "openssl", + "serde", "signal-hook", "v8", ] @@ -3579,7 +3579,7 @@ dependencies = [ "js-sys", "log", "wasm-bindgen", - "windows-core 0.58.0", + "windows-core 0.61.2", ] [[package]] @@ -3990,7 +3990,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "07033963ba89ebaf1584d767badaa2e8fcec21aedea6b8c0346d487d49c28667" dependencies = [ "cfg-if", - "windows-targets 0.48.5", + "windows-targets 0.52.6", ] [[package]] @@ -7074,8 +7074,10 @@ dependencies = [ "agent-os-client", "anyhow", "base64 0.22.1", + "bytes", "ciborium", "futures", + "http 1.3.1", "rivet-error", "rivetkit", "rivetkit-core", @@ -7084,6 +7086,7 @@ dependencies = [ "serde_json", "tokio", "tracing", + "uuid", ] [[package]] @@ -9807,17 +9810,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "990065f2fe63003fe337b932cfb5e3b80e0b4d0f5ff650e6985b1048f62c8319" dependencies = [ "leb128fmt", - "wasmparser 0.244.0", -] - -[[package]] -name = "wasm-encoder" -version = "0.248.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ac92cf547bc18d27ecc521015c08c353b4f18b84ab388bb6d1b6b682c620d9b6" -dependencies = [ - "leb128fmt", - "wasmparser 0.248.0", + "wasmparser", ] [[package]] @@ -9828,8 +9821,8 @@ checksum = "bb0e353e6a2fbdc176932bbaab493762eb1255a7900fe0fea1a2f96c296cc909" dependencies = [ "anyhow", "indexmap 2.14.0", - "wasm-encoder 0.244.0", - "wasmparser 0.244.0", + "wasm-encoder", + "wasmparser", ] [[package]] @@ -9857,39 +9850,6 @@ dependencies = [ "semver", ] -[[package]] -name = "wasmparser" -version = "0.248.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "aa4439c5eee9df71ee0c6efb37f63b1fcb1fec38f85f5142c54e7ed05d33091a" -dependencies = [ - "bitflags 2.10.0", - "indexmap 2.14.0", - "semver", -] - -[[package]] -name = "wast" -version = "248.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "acc54622ed5a5cddafcdf152043f9d4aed54d4a653d686b7dfe874809fca99d7" -dependencies = [ - "bumpalo", - "leb128fmt", - "memchr", - "unicode-width", - "wasm-encoder 0.248.0", -] - -[[package]] -name = "wat" -version = "1.248.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d75cd9e510603909748e6ebab89f27cd04472c1d9d85a3c88a7a6fc51a1a7934" -dependencies = [ - "wast", -] - [[package]] name = "web-sys" version = "0.3.77" @@ -9998,7 +9958,7 @@ version = "0.1.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c2a7b1c03c876122aa43f3020e6c3c3ee5c05081c9a00739faf7503aeba10d22" dependencies = [ - "windows-sys 0.48.0", + "windows-sys 0.61.2", ] [[package]] @@ -10470,9 +10430,9 @@ dependencies = [ "serde", "serde_derive", "serde_json", - "wasm-encoder 0.244.0", + "wasm-encoder", "wasm-metadata", - "wasmparser 0.244.0", + "wasmparser", "wit-parser", ] @@ -10491,7 +10451,7 @@ dependencies = [ "serde_derive", "serde_json", "unicode-xid", - "wasmparser 0.244.0", + "wasmparser", ] [[package]] diff --git a/examples/agent-os-e2e/package.json b/examples/agent-os-e2e/package.json index 6796ebb01f..2a98d06e7d 100644 --- a/examples/agent-os-e2e/package.json +++ b/examples/agent-os-e2e/package.json @@ -11,7 +11,7 @@ "dependencies": { "rivetkit": "*", "@rivet-dev/agent-os-common": "*", - "@rivet-dev/agent-os-pi": "^0.1.1" + "@rivet-dev/agent-os-pi": "0.0.0-claude-rust-review-and-runtime-fixes.5955345" }, "devDependencies": { "@types/node": "^22.13.9", diff --git a/examples/agent-os-e2e/src/client.ts b/examples/agent-os-e2e/src/client.ts index 128daf9d93..880fb97c13 100644 --- a/examples/agent-os-e2e/src/client.ts +++ b/examples/agent-os-e2e/src/client.ts @@ -105,9 +105,14 @@ const preview = (await agent.createSignedPreviewUrl(8080, 60)) as { console.log(`Preview path: ${preview.path}`); console.log(`Preview token: ${preview.token}`); -// Fetch through the preview proxy +// Fetch through the preview proxy. getGatewayUrl() returns a routing URL that +// already carries a query string (rvt-namespace/rvt-method/rvt-crash-policy/...), +// so the preview path must be inserted into the pathname before the query rather +// than naively appended (which would land inside the rvt-crash-policy value). const gatewayUrl = await agent.getGatewayUrl(); -const previewUrl = `${gatewayUrl}${preview.path}`; +const previewUrlObj = new URL(gatewayUrl); +previewUrlObj.pathname = previewUrlObj.pathname.replace(/\/$/, "") + preview.path; +const previewUrl = previewUrlObj.toString(); console.log(`Fetching preview URL: ${previewUrl}`); const previewResponse = await fetch(previewUrl); const previewBody = await previewResponse.text(); diff --git a/examples/agent-os/package.json b/examples/agent-os/package.json index 7823fd392b..1dca9a9af1 100644 --- a/examples/agent-os/package.json +++ b/examples/agent-os/package.json @@ -25,7 +25,13 @@ "check-types": "tsc --noEmit" }, "dependencies": { + "@rivet-dev/agent-os-common": "^0.0.260331072558", + "@rivet-dev/agent-os-core": "0.0.0-claude-rust-review-and-runtime-fixes.5955345", + "@rivet-dev/agent-os-pi": "^0.0.0-claude-rust-review-and-runtime-fixes.5955345", + "@rivet-dev/agent-os-s3": "0.0.0-claude-rust-review-and-runtime-fixes.5955345", + "@rivet-dev/agent-os-sandbox": "0.0.0-claude-rust-review-and-runtime-fixes.5955345", "rivetkit": "*", + "sandbox-agent": "^0.4.2", "zod": "^3.25.0" }, "devDependencies": { @@ -34,8 +40,13 @@ "typescript": "^5.5.2" }, "template": { - "technologies": ["typescript"], - "tags": ["agent-os", "vm"], + "technologies": [ + "typescript" + ], + "tags": [ + "agent-os", + "vm" + ], "noFrontend": true, "skipVercel": true }, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 710191d5ba..d49f11fc45 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -219,9 +219,27 @@ importers: examples/agent-os: dependencies: + '@rivet-dev/agent-os-common': + specifier: ^0.0.260331072558 + version: 0.0.260331072558 + '@rivet-dev/agent-os-core': + specifier: 0.0.0-claude-rust-review-and-runtime-fixes.5955345 + version: 0.0.0-claude-rust-review-and-runtime-fixes.5955345 + '@rivet-dev/agent-os-pi': + specifier: ^0.0.0-claude-rust-review-and-runtime-fixes.5955345 + version: 0.0.0-claude-rust-review-and-runtime-fixes.5955345(@modelcontextprotocol/sdk@1.25.3(hono@4.11.9)(zod@3.25.76))(ws@8.19.0)(zod@3.25.76) + '@rivet-dev/agent-os-s3': + specifier: 0.0.0-claude-rust-review-and-runtime-fixes.5955345 + version: 0.0.0-claude-rust-review-and-runtime-fixes.5955345 + '@rivet-dev/agent-os-sandbox': + specifier: 0.0.0-claude-rust-review-and-runtime-fixes.5955345 + version: 0.0.0-claude-rust-review-and-runtime-fixes.5955345(get-port@7.1.0) rivetkit: specifier: workspace:* version: link:../../rivetkit-typescript/packages/rivetkit + sandbox-agent: + specifier: ^0.4.2 + version: 0.4.2(get-port@7.1.0)(zod@3.25.76) zod: specifier: ^3.25.0 version: 3.25.76 @@ -242,8 +260,8 @@ importers: specifier: '*' version: 0.0.260331072558 '@rivet-dev/agent-os-pi': - specifier: ^0.1.1 - version: 0.1.1(@modelcontextprotocol/sdk@1.25.3(hono@4.11.9)(zod@3.25.76))(ws@8.19.0)(zod@3.25.76) + specifier: 0.0.0-claude-rust-review-and-runtime-fixes.5955345 + version: 0.0.0-claude-rust-review-and-runtime-fixes.5955345(@modelcontextprotocol/sdk@1.25.3(hono@4.11.9)(zod@3.25.76))(ws@8.19.0)(zod@3.25.76) rivetkit: specifier: workspace:* version: link:../../rivetkit-typescript/packages/rivetkit @@ -2189,7 +2207,7 @@ importers: version: 1.166.8(@tanstack/react-router@1.167.1(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(@tanstack/router-core@1.167.1)(csstype@3.2.3)(react-dom@19.1.0(react@19.1.0))(react@19.1.0) '@tanstack/router-plugin': specifier: ^1.166.10 - version: 1.166.10(@tanstack/react-router@1.167.1(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(vite@5.4.21(@types/node@20.19.13)(less@4.4.1)(lightningcss@1.32.0)(sass@1.93.2)(stylus@0.62.0)(terser@5.46.0))(webpack@5.101.3(@swc/core@1.15.11(@swc/helpers@0.5.17))(esbuild@0.27.3)) + version: 1.166.10(@tanstack/react-router@1.167.1(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(vite@5.4.21(@types/node@20.19.13)(less@4.4.1)(lightningcss@1.32.0)(sass@1.93.2)(stylus@0.62.0)(terser@5.46.0))(webpack@5.101.3(@swc/core@1.15.11(@swc/helpers@0.5.17))(esbuild@0.27.7)) '@tanstack/store': specifier: ^0.7.5 version: 0.7.5 @@ -2330,7 +2348,7 @@ importers: version: 3.1.1 favigo: specifier: ^1.1.0 - version: 1.1.0(esbuild@0.27.3)(rollup@4.57.1)(vite@5.4.21(@types/node@20.19.13)(less@4.4.1)(lightningcss@1.32.0)(sass@1.93.2)(stylus@0.62.0)(terser@5.46.0))(webpack@5.101.3(@swc/core@1.15.11(@swc/helpers@0.5.17))(esbuild@0.27.3)) + version: 1.1.0(esbuild@0.27.7)(rollup@4.57.1)(vite@5.4.21(@types/node@20.19.13)(less@4.4.1)(lightningcss@1.32.0)(sass@1.93.2)(stylus@0.62.0)(terser@5.46.0))(webpack@5.101.3(@swc/core@1.15.11(@swc/helpers@0.5.17))(esbuild@0.27.7)) file-saver: specifier: ^2.0.5 version: 2.0.5 @@ -2964,8 +2982,11 @@ importers: specifier: ^1.1.5 version: 1.1.5(hono@4.11.9)(zod@4.1.13) '@rivet-dev/agent-os-core': - specifier: ^0.1.1 - version: 0.1.1(pyodide@0.28.3) + specifier: 0.0.0-claude-rust-review-and-runtime-fixes.5955345 + version: 0.0.0-claude-rust-review-and-runtime-fixes.5955345 + '@rivet-dev/agent-os-sidecar': + specifier: 0.0.0-claude-rust-review-and-runtime-fixes.5955345 + version: 0.0.0-claude-rust-review-and-runtime-fixes.5955345 '@rivetkit/bare-ts': specifier: ^0.6.2 version: 0.6.2 @@ -3037,8 +3058,8 @@ importers: specifier: '*' version: 0.0.260331072558 '@rivet-dev/agent-os-pi': - specifier: ^0.1.1 - version: 0.1.1(@modelcontextprotocol/sdk@1.25.3(hono@4.11.9)(zod@4.1.13))(pyodide@0.28.3)(ws@8.19.0)(zod@4.1.13) + specifier: 0.0.0-claude-rust-review-and-runtime-fixes.5955345 + version: 0.0.0-claude-rust-review-and-runtime-fixes.5955345(@modelcontextprotocol/sdk@1.25.3(hono@4.11.9)(zod@4.1.13))(ws@8.19.0)(zod@4.1.13) '@standard-schema/spec': specifier: ^1.0.0 version: 1.0.0 @@ -3716,6 +3737,12 @@ packages: resolution: {integrity: sha512-nLbCWqQNgUiwwtFsen1AdzAtvuLRsQS8rYgMuxCrdKf9kOssamGLuPwyTY9wyYblNr9+1XM8v6zoDTPPSIeANg==} engines: {node: '>=16.0.0'} + '@aws-crypto/crc32c@5.2.0': + resolution: {integrity: sha512-+iWb8qaHLYKrNvGRbiYRHSdKRWhto5XlZUEBwDjYNf+ly5SVYG6zEoYIdxvf5R3zyeP16w4PLBn3rH1xc74Rag==} + + '@aws-crypto/sha1-browser@5.2.0': + resolution: {integrity: sha512-OH6lveCFfcDjX4dbAvCFSYUjJZjDr/3XJ3xHtjn3Oj5b9RjojQo8npoLeA/bNwkOkrSQ0wgrHzXk4tDRxGKJeg==} + '@aws-crypto/sha256-browser@5.2.0': resolution: {integrity: sha512-AXfN/lGotSQwu6HNcEsIASo7kWXZ5HYWvfOmSNKDsEqC4OashTp8alTmaz+F7TC2L083SFv5RdB+qU3Vs1kZqw==} @@ -3729,46 +3756,90 @@ packages: '@aws-crypto/util@5.2.0': resolution: {integrity: sha512-4RkU9EsI6ZpBve5fseQlGNUWKMa1RLPQ1dnjnQoe07ldfIzcsGb5hC5W0Dm7u423KWzawlrpbjXBrXCEv9zazQ==} + '@aws-sdk/checksums@3.1000.5': + resolution: {integrity: sha512-zOXUUnilC6lgCsQtp77p/QNPmRlTES9Xi6tlDwbR6kfC/kz5PCzZckgHWm5z+8DskdwuMAbFDq61x3zr10GEEQ==} + engines: {node: '>=20.0.0'} + '@aws-sdk/client-bedrock-runtime@3.1024.0': resolution: {integrity: sha512-nIhsn0/eYrL2fTh4kMO7Hpfmhv+AkkXl0KGNpD6+fdmotGvRBWcDv9/PmP/+sT6gvrKTYyzH3vu4efpTPzzP0Q==} engines: {node: '>=20.0.0'} + '@aws-sdk/client-s3@3.1068.0': + resolution: {integrity: sha512-lFgaIpxZvloNbJvQ337YPdMXhzI2zJdDw13nATVGnkAGNoNPx4ksD84AQAcuW75hsaaMaIuNmXU9sSx6+FTirA==} + engines: {node: '>=20.0.0'} + '@aws-sdk/core@3.973.26': resolution: {integrity: sha512-A/E6n2W42ruU+sfWk+mMUOyVXbsSgGrY3MJ9/0Az5qUdG67y8I6HYzzoAa+e/lzxxl1uCYmEL6BTMi9ZiZnplQ==} engines: {node: '>=20.0.0'} + '@aws-sdk/core@3.974.20': + resolution: {integrity: sha512-7sDi2B2N3mc3nf1nz6FyEx/FCrJ1N1QnBmraHHQNabFaeAh2IaOOLml48/rHOD1bICHgTRkbBgNTvUzEr5Z35g==} + engines: {node: '>=20.0.0'} + '@aws-sdk/credential-provider-env@3.972.24': resolution: {integrity: sha512-FWg8uFmT6vQM7VuzELzwVo5bzExGaKHdubn0StjgrcU5FvuLExUe+k06kn/40uKv59rYzhez8eFNM4yYE/Yb/w==} engines: {node: '>=20.0.0'} + '@aws-sdk/credential-provider-env@3.972.46': + resolution: {integrity: sha512-+GPXVS2srMOlH74S+SmC1gVuP2TvUZ0siuC0onKO93q+udP+M72dmY8wJfVQ5CX9z/9X5A1HHwz5yRIGBtskvQ==} + engines: {node: '>=20.0.0'} + '@aws-sdk/credential-provider-http@3.972.26': resolution: {integrity: sha512-CY4ppZ+qHYqcXqBVi//sdHST1QK3KzOEiLtpLsc9W2k2vfZPKExGaQIsOwcyvjpjUEolotitmd3mUNY56IwDEA==} engines: {node: '>=20.0.0'} + '@aws-sdk/credential-provider-http@3.972.48': + resolution: {integrity: sha512-fA5loSdlocacRxyUXtpoHSMuk5rsIKRDzQYVMnMxjcmFeZshaJlJ8lymy/hYKji6sne/UmNGj5pxuEs6kq/Qcg==} + engines: {node: '>=20.0.0'} + '@aws-sdk/credential-provider-ini@3.972.28': resolution: {integrity: sha512-wXYvq3+uQcZV7k+bE4yDXCTBdzWTU9x/nMiKBfzInmv6yYK1veMK0AKvRfRBd72nGWYKcL6AxwiPg9z/pYlgpw==} engines: {node: '>=20.0.0'} + '@aws-sdk/credential-provider-ini@3.972.53': + resolution: {integrity: sha512-ZfdhIOR41q8TcWEnUac+gCOb+O2LBWdHLmjedXpXz4IEFW2ppNuFcm6p0sMTavpM+zD5TYfpH5Gp7guRyqSgsQ==} + engines: {node: '>=20.0.0'} + '@aws-sdk/credential-provider-login@3.972.28': resolution: {integrity: sha512-ZSTfO6jqUTCysbdBPtEX5OUR//3rbD0lN7jO3sQeS2Gjr/Y+DT6SbIJ0oT2cemNw3UzKu97sNONd1CwNMthuZQ==} engines: {node: '>=20.0.0'} + '@aws-sdk/credential-provider-login@3.972.52': + resolution: {integrity: sha512-9hu2oR0qH7Fst5Tzdx+UWxm+w5zCXtErTLtOOW5hwwQc170CLwOeniRxyFY6s9mHfGEfC5zFukNBdKBwJR8mhQ==} + engines: {node: '>=20.0.0'} + '@aws-sdk/credential-provider-node@3.972.29': resolution: {integrity: sha512-clSzDcvndpFJAggLDnDb36sPdlZYyEs5Zm6zgZjjUhwsJgSWiWKwFIXUVBcbruidNyBdbpOv2tNDL9sX8y3/0g==} engines: {node: '>=20.0.0'} + '@aws-sdk/credential-provider-node@3.972.55': + resolution: {integrity: sha512-zMGLa/dhESVqmCD7mmIFFKSwSFrJGScvCXcjvBZEVOOMauFS5JRQvLTMukFpMEFWiV6dTAlsen2ATDBulLPtbg==} + engines: {node: '>=20.0.0'} + '@aws-sdk/credential-provider-process@3.972.24': resolution: {integrity: sha512-Q2k/XLrFXhEztPHqj4SLCNID3hEPdlhh1CDLBpNnM+1L8fq7P+yON9/9M1IGN/dA5W45v44ylERfXtDAlmMNmw==} engines: {node: '>=20.0.0'} + '@aws-sdk/credential-provider-process@3.972.46': + resolution: {integrity: sha512-VUoNFBIjWrUN8NbFiQiuxQEgFjvziAlBRPK+ddh27aj65gk0BYu6bLZnrdrNZwpW6vAihtSUtEMQ1PUJ32QRPA==} + engines: {node: '>=20.0.0'} + '@aws-sdk/credential-provider-sso@3.972.28': resolution: {integrity: sha512-IoUlmKMLEITFn1SiCTjPfR6KrE799FBo5baWyk/5Ppar2yXZoUdaRqZzJzK6TcJxx450M8m8DbpddRVYlp5R/A==} engines: {node: '>=20.0.0'} + '@aws-sdk/credential-provider-sso@3.972.52': + resolution: {integrity: sha512-nb2/n4o/HQf+FVpVbZe9vCTFngmuDoIsltMgLAtjixaKzvzhB4J8WSDFyWgnErgLHk55ctWH+I4PU+LIHhyffg==} + engines: {node: '>=20.0.0'} + '@aws-sdk/credential-provider-web-identity@3.972.28': resolution: {integrity: sha512-d+6h0SD8GGERzKe27v5rOzNGKOl0D+l0bWJdqrxH8WSQzHzjsQFIAPgIeOTUwBHVsKKwtSxc91K/SWax6XgswQ==} engines: {node: '>=20.0.0'} + '@aws-sdk/credential-provider-web-identity@3.972.52': + resolution: {integrity: sha512-lKj6aRSGbqLmpYmM24bY7a1Xmfcq2vkE3hv8CSPYfc1yCu0BPu/XEJ1L4Fm61MsU6ULLNSG8UGsffNoFUBjESA==} + 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'} @@ -3777,6 +3848,10 @@ packages: resolution: {integrity: sha512-r+oP+tbCxgqXVC3pu3MUVePgSY0ILMjA+aEwOosS77m3/DRbtvHrHwqvMcw+cjANMeGzJ+i0ar+n77KXpRA8RQ==} engines: {node: '>=20.0.0'} + '@aws-sdk/middleware-flexible-checksums@3.974.30': + resolution: {integrity: sha512-OaIhub+3yTgfFWPzKO8OzOZFIMUoJaiS5v67y3spQg7SoULGoMx4jKVBbE+uhnzkiZXQ+rEDS0RqrK4/aD1yJw==} + engines: {node: '>=20.0.0'} + '@aws-sdk/middleware-host-header@3.972.8': resolution: {integrity: sha512-wAr2REfKsqoKQ+OkNqvOShnBoh+nkPurDKW7uAeVSu6kUECnWlSJiPvnoqxGlfousEY/v9LfS9sNc46hjSYDIQ==} engines: {node: '>=20.0.0'} @@ -3789,6 +3864,10 @@ packages: resolution: {integrity: sha512-/Wt5+CT8dpTFQxEJ9iGy/UGrXr7p2wlIOEHvIr/YcHYByzoLjrqkYqXdJjd9UIgWjv7eqV2HnFJen93UTuwfTQ==} engines: {node: '>=20.0.0'} + '@aws-sdk/middleware-sdk-s3@3.972.51': + resolution: {integrity: sha512-keQgcIUTcHL0Qn7guhsuLaxQU36r9norCrxgaPH4DNCwon4TPtXdI/UdYuycl9vj3Dlwc3YR1dfL3U+6iIwJ6w==} + engines: {node: '>=20.0.0'} + '@aws-sdk/middleware-user-agent@3.972.28': resolution: {integrity: sha512-cfWZFlVh7Va9lRay4PN2A9ARFzaBYcA097InT5M2CdRS05ECF5yaz86jET8Wsl2WcyKYEvVr/QNmKtYtafUHtQ==} engines: {node: '>=20.0.0'} @@ -3801,10 +3880,18 @@ packages: resolution: {integrity: sha512-c7ZSIXrESxHKx2Mcopgd8AlzZgoXMr20fkx5ViPWPOLBvmyhw9VwJx/Govg8Ef/IhEon5R9l53Z8fdYSEmp6VA==} engines: {node: '>=20.0.0'} + '@aws-sdk/nested-clients@3.997.20': + resolution: {integrity: sha512-IYJuLpXp2DEILVQpQOy0PMpkftv0AHEOCn52o0atyOaumA0CdWQ3klPyXdViGYLbNpESsVFMVybvHUeZAuiGxA==} + engines: {node: '>=20.0.0'} + '@aws-sdk/region-config-resolver@3.972.10': resolution: {integrity: sha512-1dq9ToC6e070QvnVhhbAs3bb5r6cQ10gTVc6cyRV5uvQe7P138TV2uG2i6+Yok4bAkVAcx5AqkTEBUvWEtBlsQ==} engines: {node: '>=20.0.0'} + '@aws-sdk/signature-v4-multi-region@3.996.34': + resolution: {integrity: sha512-mx1L5qlumSOt/nKM3BFaHE2HVkWwz0i4Bw0pyYO42FfX/FeLlo8YI6csC0gSPprEk6fTIqI+CZN9RwUwKd5krQ==} + engines: {node: '>=20.0.0'} + '@aws-sdk/token-providers@3.1021.0': resolution: {integrity: sha512-TKY6h9spUk3OLs5v1oAgW9mAeBE3LAGNBwJokLy96wwmd4W2v/tYlXseProyed9ValDj2u1jK/4Rg1T+1NXyJA==} engines: {node: '>=20.0.0'} @@ -3813,6 +3900,14 @@ packages: resolution: {integrity: sha512-eoyTMgd6OzoE1dq50um5Y53NrosEkWsjH0W6pswi7vrv1W9hY/7hR43jDcPevqqj+OQksf/5lc++FTqRlb8Y1Q==} engines: {node: '>=20.0.0'} + '@aws-sdk/token-providers@3.1066.0': + resolution: {integrity: sha512-UqEUJq7dqa44hneLDUcX7UJy95cg8YqEWyakRpvIPnrNS3Mq+UlQHgCDGu5pvwAPtlIW4qcYbvW6reG6++FyvA==} + engines: {node: '>=20.0.0'} + + '@aws-sdk/types@3.973.12': + resolution: {integrity: sha512-43ajd1NF0RMgX5k0hxCNUyEdrtFUsb2aHT2QvpktSC/2Eyb2Jr/JPVqdp0XIoaHWikZJq5tNWSLO6kB5q2eMCA==} + engines: {node: '>=20.0.0'} + '@aws-sdk/types@3.973.6': resolution: {integrity: sha512-Atfcy4E++beKtwJHiDln2Nby8W/mam64opFPTiHEqgsthqeydFS1pY+OUlN1ouNOmf8ArPU/6cDS65anOP3KQw==} engines: {node: '>=20.0.0'} @@ -3845,6 +3940,10 @@ packages: resolution: {integrity: sha512-iu2pyvaqmeatIJLURLqx9D+4jKAdTH20ntzB6BFwjyN7V960r4jK32mx0Zf7YbtOYAbmbtQfDNuL60ONinyw7A==} engines: {node: '>=20.0.0'} + '@aws-sdk/xml-builder@3.972.29': + resolution: {integrity: sha512-fk0niuGFxfi8yIJuMVM4mhwObkiQSuwZFj3tAPrLVx64Pk3BkrEIpqjzHKY4hKoEBUD6Jg/S74Zj9jy+5F3DnQ==} + engines: {node: '>=20.0.0'} + '@aws/lambda-invoke-store@0.2.3': resolution: {integrity: sha512-oLvsaPMTBejkkmHhjf09xTgk71mOqyr/409NKhRIL08If7AhVfUsJhVsx386uJaqNd42v9kWamQ9lFbkoC2dYw==} engines: {node: '>=18.0.0'} @@ -4507,61 +4606,31 @@ packages: cpu: [arm64] os: [darwin] - '@cbor-extract/cbor-extract-darwin-arm64@2.2.2': - resolution: {integrity: sha512-ZKZ/F8US7JR92J4DMct6cLW/Y66o2K576+zjlEN/MevH70bFIsB10wkZEQPLzl2oNh2SMGy55xpJ9JoBRl5DOA==} - cpu: [arm64] - os: [darwin] - '@cbor-extract/cbor-extract-darwin-x64@2.2.0': resolution: {integrity: sha512-1liF6fgowph0JxBbYnAS7ZlqNYLf000Qnj4KjqPNW4GViKrEql2MgZnAsExhY9LSy8dnvA4C0qHEBgPrll0z0w==} cpu: [x64] os: [darwin] - '@cbor-extract/cbor-extract-darwin-x64@2.2.2': - resolution: {integrity: sha512-32b1mgc+P61Js+KW9VZv/c+xRw5EfmOcPx990JbCBSkYJFY0l25VinvyyWfl+3KjibQmAcYwmyzKF9J4DyKP/Q==} - cpu: [x64] - os: [darwin] - '@cbor-extract/cbor-extract-linux-arm64@2.2.0': resolution: {integrity: sha512-rQvhNmDuhjTVXSPFLolmQ47/ydGOFXtbR7+wgkSY0bdOxCFept1hvg59uiLPT2fVDuJFuEy16EImo5tE2x3RsQ==} cpu: [arm64] os: [linux] - '@cbor-extract/cbor-extract-linux-arm64@2.2.2': - resolution: {integrity: sha512-wfqgzqCAy/Vn8i6WVIh7qZd0DdBFaWBjPdB6ma+Wihcjv0gHqD/mw3ouVv7kbbUNrab6dKEx/w3xQZEdeXIlzg==} - cpu: [arm64] - os: [linux] - '@cbor-extract/cbor-extract-linux-arm@2.2.0': resolution: {integrity: sha512-QeBcBXk964zOytiedMPQNZr7sg0TNavZeuUCD6ON4vEOU/25+pLhNN6EDIKJ9VLTKaZ7K7EaAriyYQ1NQ05s/Q==} cpu: [arm] os: [linux] - '@cbor-extract/cbor-extract-linux-arm@2.2.2': - resolution: {integrity: sha512-tNg0za41TpQfkhWjptD+0gSD2fggMiDCSacuIeELyb2xZhr7PrhPe5h66Jc67B/5dmpIhI2QOUtv4SBsricyYQ==} - cpu: [arm] - os: [linux] - '@cbor-extract/cbor-extract-linux-x64@2.2.0': resolution: {integrity: sha512-cWLAWtT3kNLHSvP4RKDzSTX9o0wvQEEAj4SKvhWuOVZxiDAeQazr9A+PSiRILK1VYMLeDml89ohxCnUNQNQNCw==} cpu: [x64] os: [linux] - '@cbor-extract/cbor-extract-linux-x64@2.2.2': - resolution: {integrity: sha512-rpiLnVEsqtPJ+mXTdx1rfz4RtUGYIUg2rUAZgd1KjiC1SehYUSkJN7Yh+aVfSjvCGtVP0/bfkQkXpPXKbmSUaA==} - cpu: [x64] - os: [linux] - '@cbor-extract/cbor-extract-win32-x64@2.2.0': resolution: {integrity: sha512-l2M+Z8DO2vbvADOBNLbbh9y5ST1RY5sqkWOg/58GkUPBYou/cuNZ68SGQ644f1CvZ8kcOxyZtw06+dxWHIoN/w==} cpu: [x64] os: [win32] - '@cbor-extract/cbor-extract-win32-x64@2.2.2': - resolution: {integrity: sha512-dI+9P7cfWxkTQ+oE+7Aa6onEn92PHgfWXZivjNheCRmTBDBf2fx6RyTi0cmgpYLnD1KLZK9ZYrMxaPZ4oiXhGA==} - cpu: [x64] - os: [win32] - '@chevrotain/cst-dts-gen@11.0.3': resolution: {integrity: sha512-BvIKpRLeS/8UbfxXxgC33xOumsacaeCKAjAeLyOn7Pcp95HiRbrpl14S+9vaZLolnbssPIUuiUd8IvgkRyt6NQ==} @@ -4698,6 +4767,12 @@ packages: cpu: [ppc64] os: [aix] + '@esbuild/aix-ppc64@0.27.7': + resolution: {integrity: sha512-EKX3Qwmhz1eMdEJokhALr0YiD0lhQNwDqkPYyPhiSwKrh7/4KRjQc04sZ8db+5DVVnZ1LmbNDI1uAMPEUBnQPg==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [aix] + '@esbuild/android-arm64@0.18.20': resolution: {integrity: sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==} engines: {node: '>=12'} @@ -4728,6 +4803,12 @@ packages: cpu: [arm64] os: [android] + '@esbuild/android-arm64@0.27.7': + resolution: {integrity: sha512-62dPZHpIXzvChfvfLJow3q5dDtiNMkwiRzPylSCfriLvZeq0a1bWChrGx/BbUbPwOrsWKMn8idSllklzBy+dgQ==} + engines: {node: '>=18'} + cpu: [arm64] + os: [android] + '@esbuild/android-arm@0.18.20': resolution: {integrity: sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==} engines: {node: '>=12'} @@ -4758,6 +4839,12 @@ packages: cpu: [arm] os: [android] + '@esbuild/android-arm@0.27.7': + resolution: {integrity: sha512-jbPXvB4Yj2yBV7HUfE2KHe4GJX51QplCN1pGbYjvsyCZbQmies29EoJbkEc+vYuU5o45AfQn37vZlyXy4YJ8RQ==} + engines: {node: '>=18'} + cpu: [arm] + os: [android] + '@esbuild/android-x64@0.18.20': resolution: {integrity: sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==} engines: {node: '>=12'} @@ -4788,6 +4875,12 @@ packages: cpu: [x64] os: [android] + '@esbuild/android-x64@0.27.7': + resolution: {integrity: sha512-x5VpMODneVDb70PYV2VQOmIUUiBtY3D3mPBG8NxVk5CogneYhkR7MmM3yR/uMdITLrC1ml/NV1rj4bMJuy9MCg==} + engines: {node: '>=18'} + cpu: [x64] + os: [android] + '@esbuild/darwin-arm64@0.18.20': resolution: {integrity: sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==} engines: {node: '>=12'} @@ -4818,6 +4911,12 @@ packages: cpu: [arm64] os: [darwin] + '@esbuild/darwin-arm64@0.27.7': + resolution: {integrity: sha512-5lckdqeuBPlKUwvoCXIgI2D9/ABmPq3Rdp7IfL70393YgaASt7tbju3Ac+ePVi3KDH6N2RqePfHnXkaDtY9fkw==} + engines: {node: '>=18'} + cpu: [arm64] + os: [darwin] + '@esbuild/darwin-x64@0.18.20': resolution: {integrity: sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==} engines: {node: '>=12'} @@ -4848,6 +4947,12 @@ packages: cpu: [x64] os: [darwin] + '@esbuild/darwin-x64@0.27.7': + resolution: {integrity: sha512-rYnXrKcXuT7Z+WL5K980jVFdvVKhCHhUwid+dDYQpH+qu+TefcomiMAJpIiC2EM3Rjtq0sO3StMV/+3w3MyyqQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [darwin] + '@esbuild/freebsd-arm64@0.18.20': resolution: {integrity: sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==} engines: {node: '>=12'} @@ -4878,6 +4983,12 @@ packages: cpu: [arm64] os: [freebsd] + '@esbuild/freebsd-arm64@0.27.7': + resolution: {integrity: sha512-B48PqeCsEgOtzME2GbNM2roU29AMTuOIN91dsMO30t+Ydis3z/3Ngoj5hhnsOSSwNzS+6JppqWsuhTp6E82l2w==} + engines: {node: '>=18'} + cpu: [arm64] + os: [freebsd] + '@esbuild/freebsd-x64@0.18.20': resolution: {integrity: sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==} engines: {node: '>=12'} @@ -4908,6 +5019,12 @@ packages: cpu: [x64] os: [freebsd] + '@esbuild/freebsd-x64@0.27.7': + resolution: {integrity: sha512-jOBDK5XEjA4m5IJK3bpAQF9/Lelu/Z9ZcdhTRLf4cajlB+8VEhFFRjWgfy3M1O4rO2GQ/b2dLwCUGpiF/eATNQ==} + engines: {node: '>=18'} + cpu: [x64] + os: [freebsd] + '@esbuild/linux-arm64@0.18.20': resolution: {integrity: sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==} engines: {node: '>=12'} @@ -4938,6 +5055,12 @@ packages: cpu: [arm64] os: [linux] + '@esbuild/linux-arm64@0.27.7': + resolution: {integrity: sha512-RZPHBoxXuNnPQO9rvjh5jdkRmVizktkT7TCDkDmQ0W2SwHInKCAV95GRuvdSvA7w4VMwfCjUiPwDi0ZO6Nfe9A==} + engines: {node: '>=18'} + cpu: [arm64] + os: [linux] + '@esbuild/linux-arm@0.18.20': resolution: {integrity: sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==} engines: {node: '>=12'} @@ -4968,6 +5091,12 @@ packages: cpu: [arm] os: [linux] + '@esbuild/linux-arm@0.27.7': + resolution: {integrity: sha512-RkT/YXYBTSULo3+af8Ib0ykH8u2MBh57o7q/DAs3lTJlyVQkgQvlrPTnjIzzRPQyavxtPtfg0EopvDyIt0j1rA==} + engines: {node: '>=18'} + cpu: [arm] + os: [linux] + '@esbuild/linux-ia32@0.18.20': resolution: {integrity: sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==} engines: {node: '>=12'} @@ -4998,6 +5127,12 @@ packages: cpu: [ia32] os: [linux] + '@esbuild/linux-ia32@0.27.7': + resolution: {integrity: sha512-GA48aKNkyQDbd3KtkplYWT102C5sn/EZTY4XROkxONgruHPU72l+gW+FfF8tf2cFjeHaRbWpOYa/uRBz/Xq1Pg==} + engines: {node: '>=18'} + cpu: [ia32] + os: [linux] + '@esbuild/linux-loong64@0.18.20': resolution: {integrity: sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==} engines: {node: '>=12'} @@ -5028,6 +5163,12 @@ packages: cpu: [loong64] os: [linux] + '@esbuild/linux-loong64@0.27.7': + resolution: {integrity: sha512-a4POruNM2oWsD4WKvBSEKGIiWQF8fZOAsycHOt6JBpZ+JN2n2JH9WAv56SOyu9X5IqAjqSIPTaJkqN8F7XOQ5Q==} + engines: {node: '>=18'} + cpu: [loong64] + os: [linux] + '@esbuild/linux-mips64el@0.18.20': resolution: {integrity: sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==} engines: {node: '>=12'} @@ -5058,6 +5199,12 @@ packages: cpu: [mips64el] os: [linux] + '@esbuild/linux-mips64el@0.27.7': + resolution: {integrity: sha512-KabT5I6StirGfIz0FMgl1I+R1H73Gp0ofL9A3nG3i/cYFJzKHhouBV5VWK1CSgKvVaG4q1RNpCTR2LuTVB3fIw==} + engines: {node: '>=18'} + cpu: [mips64el] + os: [linux] + '@esbuild/linux-ppc64@0.18.20': resolution: {integrity: sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==} engines: {node: '>=12'} @@ -5088,6 +5235,12 @@ packages: cpu: [ppc64] os: [linux] + '@esbuild/linux-ppc64@0.27.7': + resolution: {integrity: sha512-gRsL4x6wsGHGRqhtI+ifpN/vpOFTQtnbsupUF5R5YTAg+y/lKelYR1hXbnBdzDjGbMYjVJLJTd2OFmMewAgwlQ==} + engines: {node: '>=18'} + cpu: [ppc64] + os: [linux] + '@esbuild/linux-riscv64@0.18.20': resolution: {integrity: sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==} engines: {node: '>=12'} @@ -5118,6 +5271,12 @@ packages: cpu: [riscv64] os: [linux] + '@esbuild/linux-riscv64@0.27.7': + resolution: {integrity: sha512-hL25LbxO1QOngGzu2U5xeXtxXcW+/GvMN3ejANqXkxZ/opySAZMrc+9LY/WyjAan41unrR3YrmtTsUpwT66InQ==} + engines: {node: '>=18'} + cpu: [riscv64] + os: [linux] + '@esbuild/linux-s390x@0.18.20': resolution: {integrity: sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==} engines: {node: '>=12'} @@ -5148,6 +5307,12 @@ packages: cpu: [s390x] os: [linux] + '@esbuild/linux-s390x@0.27.7': + resolution: {integrity: sha512-2k8go8Ycu1Kb46vEelhu1vqEP+UeRVj2zY1pSuPdgvbd5ykAw82Lrro28vXUrRmzEsUV0NzCf54yARIK8r0fdw==} + engines: {node: '>=18'} + cpu: [s390x] + os: [linux] + '@esbuild/linux-x64@0.18.20': resolution: {integrity: sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==} engines: {node: '>=12'} @@ -5178,6 +5343,12 @@ packages: cpu: [x64] os: [linux] + '@esbuild/linux-x64@0.27.7': + resolution: {integrity: sha512-hzznmADPt+OmsYzw1EE33ccA+HPdIqiCRq7cQeL1Jlq2gb1+OyWBkMCrYGBJ+sxVzve2ZJEVeePbLM2iEIZSxA==} + engines: {node: '>=18'} + cpu: [x64] + os: [linux] + '@esbuild/netbsd-arm64@0.25.12': resolution: {integrity: sha512-xXwcTq4GhRM7J9A8Gv5boanHhRa/Q9KLVmcyXHCTaM4wKfIpWkdXiMog/KsnxzJ0A1+nD+zoecuzqPmCRyBGjg==} engines: {node: '>=18'} @@ -5190,6 +5361,12 @@ packages: cpu: [arm64] os: [netbsd] + '@esbuild/netbsd-arm64@0.27.7': + resolution: {integrity: sha512-b6pqtrQdigZBwZxAn1UpazEisvwaIDvdbMbmrly7cDTMFnw/+3lVxxCTGOrkPVnsYIosJJXAsILG9XcQS+Yu6w==} + engines: {node: '>=18'} + cpu: [arm64] + os: [netbsd] + '@esbuild/netbsd-x64@0.18.20': resolution: {integrity: sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==} engines: {node: '>=12'} @@ -5220,6 +5397,12 @@ packages: cpu: [x64] os: [netbsd] + '@esbuild/netbsd-x64@0.27.7': + resolution: {integrity: sha512-OfatkLojr6U+WN5EDYuoQhtM+1xco+/6FSzJJnuWiUw5eVcicbyK3dq5EeV/QHT1uy6GoDhGbFpprUiHUYggrw==} + engines: {node: '>=18'} + cpu: [x64] + os: [netbsd] + '@esbuild/openbsd-arm64@0.25.12': resolution: {integrity: sha512-fF96T6KsBo/pkQI950FARU9apGNTSlZGsv1jZBAlcLL1MLjLNIWPBkj5NlSz8aAzYKg+eNqknrUJ24QBybeR5A==} engines: {node: '>=18'} @@ -5232,6 +5415,12 @@ packages: cpu: [arm64] os: [openbsd] + '@esbuild/openbsd-arm64@0.27.7': + resolution: {integrity: sha512-AFuojMQTxAz75Fo8idVcqoQWEHIXFRbOc1TrVcFSgCZtQfSdc1RXgB3tjOn/krRHENUB4j00bfGjyl2mJrU37A==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openbsd] + '@esbuild/openbsd-x64@0.18.20': resolution: {integrity: sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==} engines: {node: '>=12'} @@ -5262,6 +5451,12 @@ packages: cpu: [x64] os: [openbsd] + '@esbuild/openbsd-x64@0.27.7': + resolution: {integrity: sha512-+A1NJmfM8WNDv5CLVQYJ5PshuRm/4cI6WMZRg1by1GwPIQPCTs1GLEUHwiiQGT5zDdyLiRM/l1G0Pv54gvtKIg==} + engines: {node: '>=18'} + cpu: [x64] + os: [openbsd] + '@esbuild/openharmony-arm64@0.25.12': resolution: {integrity: sha512-rm0YWsqUSRrjncSXGA7Zv78Nbnw4XL6/dzr20cyrQf7ZmRcsovpcRBdhD43Nuk3y7XIoW2OxMVvwuRvk9XdASg==} engines: {node: '>=18'} @@ -5274,6 +5469,12 @@ packages: cpu: [arm64] os: [openharmony] + '@esbuild/openharmony-arm64@0.27.7': + resolution: {integrity: sha512-+KrvYb/C8zA9CU/g0sR6w2RBw7IGc5J2BPnc3dYc5VJxHCSF1yNMxTV5LQ7GuKteQXZtspjFbiuW5/dOj7H4Yw==} + engines: {node: '>=18'} + cpu: [arm64] + os: [openharmony] + '@esbuild/sunos-x64@0.18.20': resolution: {integrity: sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==} engines: {node: '>=12'} @@ -5304,6 +5505,12 @@ packages: cpu: [x64] os: [sunos] + '@esbuild/sunos-x64@0.27.7': + resolution: {integrity: sha512-ikktIhFBzQNt/QDyOL580ti9+5mL/YZeUPKU2ivGtGjdTYoqz6jObj6nOMfhASpS4GU4Q/Clh1QtxWAvcYKamA==} + engines: {node: '>=18'} + cpu: [x64] + os: [sunos] + '@esbuild/win32-arm64@0.18.20': resolution: {integrity: sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==} engines: {node: '>=12'} @@ -5334,6 +5541,12 @@ packages: cpu: [arm64] os: [win32] + '@esbuild/win32-arm64@0.27.7': + resolution: {integrity: sha512-7yRhbHvPqSpRUV7Q20VuDwbjW5kIMwTHpptuUzV+AA46kiPze5Z7qgt6CLCK3pWFrHeNfDd1VKgyP4O+ng17CA==} + engines: {node: '>=18'} + cpu: [arm64] + os: [win32] + '@esbuild/win32-ia32@0.18.20': resolution: {integrity: sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==} engines: {node: '>=12'} @@ -5364,6 +5577,12 @@ packages: cpu: [ia32] os: [win32] + '@esbuild/win32-ia32@0.27.7': + resolution: {integrity: sha512-SmwKXe6VHIyZYbBLJrhOoCJRB/Z1tckzmgTLfFYOfpMAx63BJEaL9ExI8x7v0oAO3Zh6D/Oi1gVxEYr5oUCFhw==} + engines: {node: '>=18'} + cpu: [ia32] + os: [win32] + '@esbuild/win32-x64@0.18.20': resolution: {integrity: sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==} engines: {node: '>=12'} @@ -5394,6 +5613,12 @@ packages: cpu: [x64] os: [win32] + '@esbuild/win32-x64@0.27.7': + resolution: {integrity: sha512-56hiAJPhwQ1R4i+21FVF7V8kSD5zZTdHcVuRFMW0hn753vVfQN8xlx4uOPT4xoGH0Z/oVATuR82AiqSTDIpaHg==} + engines: {node: '>=18'} + cpu: [x64] + os: [win32] + '@eslint-community/eslint-utils@4.9.0': resolution: {integrity: sha512-ayVFHdtZ+hsq1t2Dy24wCmGXGe4q9Gu3smhLYALJrr473ZH27MsnSL+LKUlimp4BWJqMDMLmPpx/Q9R3OAlL4g==} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} @@ -6464,6 +6689,9 @@ packages: resolution: {integrity: sha512-XlOlEbQcE9fmuXxrVTXCTlG2nlRXa9Rj3rr5Ue/+tX+nmkgbX720YHh0VR3hBF9xDvwnb8D2shVGOwNx+ulArw==} engines: {node: '>= 20.19.0'} + '@nodable/entities@2.2.0': + resolution: {integrity: sha512-9uGyhaQavEUMC8AIddIjau4NsnsXhou+j5sBAGojCM1oxmQpVKTWR/9JxABD6UAv12vpIms55fPZKFQEhG6uBg==} + '@nodelib/fs.scandir@2.1.5': resolution: {integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==} engines: {node: '>= 8'} @@ -7572,8 +7800,8 @@ packages: '@rivet-dev/agent-os-common@0.0.260331072558': resolution: {integrity: sha512-bkMU6yqLxNLoXYA2/f2qRf0JrlqbIiBRKRpP3d+tbmF+VV2wrAY+iLJDHN6Jw+Q8q3CkT6jB5KTnCZkcYEF3RQ==} - '@rivet-dev/agent-os-core@0.1.1': - resolution: {integrity: sha512-Uw5jr+gUXDY7TDUFqlypjGe1BD2KL9kTHPNo/f1iNS1R+l9IWuvT+FF/MXsLOEkc3fB06OPVu2ZvUuNwp9MpLQ==} + '@rivet-dev/agent-os-core@0.0.0-claude-rust-review-and-runtime-fixes.5955345': + resolution: {integrity: sha512-epIxT2MHo+6JNwYRPCuKysarAzvymQ1yK5Uvs0oP198pMFWTM6xyxIxJl8rN5cofDoTdYUmc3Cc+z2Holm/57g==} '@rivet-dev/agent-os-coreutils@0.0.260331072558': resolution: {integrity: sha512-vI/J2MJnpsJQZ7F5DU/udGqGMtliqhTg28lE6XZ/qEGyjUvmEQ9AiV8CaAcX5HrImAUWOofBbTv6/XGKjOhT1w==} @@ -7593,24 +7821,29 @@ packages: '@rivet-dev/agent-os-gzip@0.0.260331072558': resolution: {integrity: sha512-id9iOrZFAuaXaFWIIiQEo70Ze/poI7hodSqWfo9ro0sajV0xI7kSp0BbXgS4PvGc9O2+VWcOE2qzqTUnKNlBzQ==} - '@rivet-dev/agent-os-pi@0.1.1': - resolution: {integrity: sha512-+PWE8Kubl6ZfXAPETFXhPRBoPKJbsnbXKK3gvrgGqvBa7kJvzPCYM5muUipSsSPwXurLOtIN+vnCiu8bU/Q7kA==} + '@rivet-dev/agent-os-pi@0.0.0-claude-rust-review-and-runtime-fixes.5955345': + resolution: {integrity: sha512-Zu15f1nMWD2q28gYQf4tjo5htPSsqqSfkaB4Wv+RtjaD4bIGzcZqIraNk7WF1P92A0egM3FSEVkg1yJd7GXPnQ==} hasBin: true - '@rivet-dev/agent-os-posix@0.1.0': - resolution: {integrity: sha512-NIrI7cCb9x6jdmzRPPx7dAeXoTF/YCqf93ydEzYFA2zshIelLW9Rp5KtgP/2hM6fP0ly4+vVnOeavxJW0wYtcA==} + '@rivet-dev/agent-os-s3@0.0.0-claude-rust-review-and-runtime-fixes.5955345': + resolution: {integrity: sha512-cTaTGHN3s1NsZul0dssOKArW7fkyJO6lvi+1eJEiF7o39bANF9j2B16yR26a7mlHUUcauwwUgeTy4ZAixWWNmw==} - '@rivet-dev/agent-os-python@0.1.0': - resolution: {integrity: sha512-1tH1beMf1ceSpicQKwN/a6h+NmJrmfuT4GStiRDZmvN/UWfZhkxuy7HR5VPTQpE/feUZJ01FdtBS3Em/Qoxb2Q==} - peerDependencies: - pyodide: '>=0.28.0' - peerDependenciesMeta: - pyodide: - optional: true + '@rivet-dev/agent-os-sandbox@0.0.0-claude-rust-review-and-runtime-fixes.5955345': + resolution: {integrity: sha512-185mGeyquIylfsC3IQ2XQdMDT1+ttdRf37MfU6fY1eXsUQJ8XKdGYDCnclxy5J/3rJrlYgIsHA0iJwj60B32hA==} '@rivet-dev/agent-os-sed@0.0.260331072558': resolution: {integrity: sha512-i/6ifWCcGE2TEfPWR5ig5tMVKUc0qL0ng59htgS+sqt6zdMaPIllwVztOgXNxMEdFM1TF646e/OkMfMzmYZDCA==} + '@rivet-dev/agent-os-sidecar-linux-x64-gnu@0.0.0-claude-rust-review-and-runtime-fixes.5955345': + resolution: {integrity: sha512-gdIxxpxk93u7ldQjIX2o4rWlEJqSnq4YFIAt+QBJqJeSHCaKm4PPgkQC0OruUj37ZrzdlEYE70euZGEDCbbfQg==} + engines: {node: '>=20'} + cpu: [x64] + os: [linux] + + '@rivet-dev/agent-os-sidecar@0.0.0-claude-rust-review-and-runtime-fixes.5955345': + resolution: {integrity: sha512-D5+7hF0EJvIJfxvrVhSd+BZoUv4Ru/samE/l0lEkp7mxzH5W3Y5s7+PT5MLXJ1haIsacHPDfKc3a4GBAQmdInA==} + engines: {node: '>=20'} + '@rivet-dev/agent-os-tar@0.0.260331072558': resolution: {integrity: sha512-LAa8fm4jombNBQRR42O/57WxY6VA13Uea8JFChh6yPN4VtFP84KI5Kg4/Zzne3YDronGZlgJivznNUH3dtTMzA==} @@ -7821,37 +8054,40 @@ packages: '@rushstack/ts-command-line@5.1.2': resolution: {integrity: sha512-jn0EnSefYrkZDrBGd6KGuecL84LI06DgzL4hVQ46AUijNBt2nRU/ST4HhrfII/w91siCd1J/Okvxq/BS75Me/A==} - '@sec-ant/readable-stream@0.4.1': - resolution: {integrity: sha512-831qok9r2t8AlxLko40y2ebgSDhenenCatLVeW/uBtnHPyhHOvG0C7TvfgecV+wHzIm5KUICgzmVpWS+IMEAeg==} - - '@secure-exec/core@0.2.1': - resolution: {integrity: sha512-HsnUv6gClpMA1BBRmX86j30TKTZtgJC/fO1tVavr7IpM2zNKbHU8LgSlBd7mv2SNy02ImTmU/GnQ3aYB4NSbEg==} - - '@secure-exec/nodejs@0.2.1': - resolution: {integrity: sha512-UJMJqVFxexlHJV0Q9nWURvrz6GElj8673DDOOFln6FHR6JS+9SaSU3eISrN158DuNC3SFi4rgjb/scKnK4YOYQ==} - - '@secure-exec/v8-darwin-arm64@0.2.1': - resolution: {integrity: sha512-gEWhMHzUpLwzuBNAD0lVkZXE8wFlWMLp4IOZ+56FYwOW/C+m07cYxuW4TjHyPqZ+vPm3IkoaMqqH5yT9VhjX/Q==} + '@sandbox-agent/cli-darwin-arm64@0.4.2': + resolution: {integrity: sha512-+L1O8SI7k/LLhyB4dG0ghmz1cJHa0WtVjuRTrEE2gw/5EbGLWopPBsCVCmQ7snrQ4fPwtaiZDhfExcEj1VI7aw==} cpu: [arm64] os: [darwin] - '@secure-exec/v8-darwin-x64@0.2.1': - resolution: {integrity: sha512-H2Z5K+Cq+fn/kxjGvhJzepnNFWG6qNdyhZybVWGr5bAAZoSz/Qkad4WnXcurWU+880tKDtnf19LHBXrg7zewNQ==} + '@sandbox-agent/cli-darwin-x64@0.4.2': + resolution: {integrity: sha512-dDg/EwWsdgVVbJiiCX1scSNRRA48u77SsC7Tuqrfzx4fIJMLuLiIcmEtXQyCBWysSyQNV2Cr+PYXXQfCb3xg8g==} cpu: [x64] os: [darwin] - '@secure-exec/v8-linux-arm64-gnu@0.2.1': - resolution: {integrity: sha512-14subGhVV/gW35mYYm7Gv1Keeex7PxIgQfoKji/JH7wYyDuarP6kgaES0nJw+JXVkxEVud52c+kbcIjIggqCEw==} + '@sandbox-agent/cli-linux-arm64@0.4.2': + resolution: {integrity: sha512-TGmTUexMoubmWQyTeaOJu0rDVl2h0Ifh1pZ0ceZy7u/6Eoqs2n46CbfQtasUxZJf10uxPgRyzEDhcdDrTYVQUA==} cpu: [arm64] os: [linux] - '@secure-exec/v8-linux-x64-gnu@0.2.1': - resolution: {integrity: sha512-Az4s+vUf+78vWtsC7rTn/jQc6WKJafAdt2YpEjB4Gnu+sX+FFTIst1hRV4gJonbRyJdy6SW+OQ6DZatmwczorQ==} + '@sandbox-agent/cli-linux-x64@0.4.2': + resolution: {integrity: sha512-H9Rbqq0DRkCHvakzefJUDrDa2y+vJjlYd5/tefzKbQ34locE13TGNygRLxdEVXpBECjK9wVdBwTVEphQNsOcjw==} cpu: [x64] os: [linux] - '@secure-exec/v8@0.2.1': - resolution: {integrity: sha512-ye/seCqzvyMGnvyP+AO7RkVMR/lE3x9m0D2PfmiAXA457R78ZmOFmZ6v+JlJG2vv3LM30KsSXTUhwpG+Teh0hw==} + '@sandbox-agent/cli-shared@0.4.2': + resolution: {integrity: sha512-sjZXRkKeFXCSKR6hHzF2Af8CCRO3F3WFwVQJ22+sLTXJ2xskV8lkUE4egknQU9B5BC1Zumts/YiNCFQWG85awQ==} + + '@sandbox-agent/cli-win32-x64@0.4.2': + resolution: {integrity: sha512-lZNfHWPwQe/VH51Yvrl/ATCUvBZ3a+c8mwovojhQcmZlv4QuUQPkuvxhPqHRh9AyBx78L5J/ha46es2doa34nQ==} + cpu: [x64] + os: [win32] + + '@sandbox-agent/cli@0.4.2': + resolution: {integrity: sha512-trO//ypJBSt5xkewuol9LOykvDgHwUXq8R+yQVS+0CmpN3lYUtewHkb+At9RVGRhDMmJZY2oasaXDnhfurQ33w==} + hasBin: true + + '@sec-ant/readable-stream@0.4.1': + resolution: {integrity: sha512-831qok9r2t8AlxLko40y2ebgSDhenenCatLVeW/uBtnHPyhHOvG0C7TvfgecV+wHzIm5KUICgzmVpWS+IMEAeg==} '@sentry-internal/browser-utils@10.42.0': resolution: {integrity: sha512-HCEICKvepxN4/6NYfnMMMlppcSwIEwtS66X6d1/mwaHdi2ivw0uGl52p7Nfhda/lIJArbrkWprxl0WcjZajhQA==} @@ -8169,10 +8405,18 @@ packages: resolution: {integrity: sha512-J+2TT9D6oGsUVXVEMvz8h2EmdVnkBiy2auCie4aSJMvKlzUtO5hqjEzXhoCUkIMo7gAYjbQcN0g/MMSXEhDs1Q==} engines: {node: '>=18.0.0'} + '@smithy/core@3.24.7': + resolution: {integrity: sha512-KoUi4M1f3BG6kzN1FnCwL7oyFptTbyBJKjR6yhSib+JHRdUmM1o+VwsFtJ66NZCkCzVfJMWRHJNo0R0jznp0Pg==} + engines: {node: '>=18.0.0'} + '@smithy/credential-provider-imds@4.2.12': resolution: {integrity: sha512-cr2lR792vNZcYMriSIj+Um3x9KWrjcu98kn234xA6reOAFMmbRpQMOv8KPgEmLLtx3eldU6c5wALKFqNOhugmg==} engines: {node: '>=18.0.0'} + '@smithy/credential-provider-imds@4.3.9': + resolution: {integrity: sha512-ZlfJ/4Fa3jYb+3eaohPfG9utX9HmdhFNcFtpoGAhUhdynAOmGXtmigbi7eEiONKM+ykHw8RwKuDEb85Lx7t7fA==} + engines: {node: '>=18.0.0'} + '@smithy/eventstream-codec@4.2.12': resolution: {integrity: sha512-FE3bZdEl62ojmy8x4FHqxq2+BuOHlcxiH5vaZ6aqHJr3AIZzwF5jfx8dEiU/X0a8RboyNDjmXjlbr8AdEyLgiA==} engines: {node: '>=18.0.0'} @@ -8197,6 +8441,10 @@ packages: resolution: {integrity: sha512-T4jFU5N/yiIfrtrsb9uOQn7RdELdM/7HbyLNr6uO/mpkj1ctiVs7CihVr51w4LyQlXWDpXFn4BElf1WmQvZu/A==} engines: {node: '>=18.0.0'} + '@smithy/fetch-http-handler@5.4.7': + resolution: {integrity: sha512-NslaM2ir0N2hisDmzXLstPaVINZheh8SokyOC++kzFPloZucL2R7Y7bS57mSzx/1Fc/fqmn7twjkeezTTrV0EA==} + engines: {node: '>=18.0.0'} + '@smithy/hash-node@4.2.12': resolution: {integrity: sha512-QhBYbGrbxTkZ43QoTPrK72DoYviDeg6YKDrHTMJbbC+A0sml3kSjzFtXP7BtbyJnXojLfTQldGdUR0RGD8dA3w==} engines: {node: '>=18.0.0'} @@ -8241,6 +8489,10 @@ packages: resolution: {integrity: sha512-ejjxdAXjkPIs9lyYyVutOGNOraqUE9v/NjGMKwwFrfOM354wfSD8lmlj8hVwUzQmlLLF4+udhfCX9Exnbmvfzw==} engines: {node: '>=18.0.0'} + '@smithy/node-http-handler@4.7.8': + resolution: {integrity: sha512-f+DbsWUwSbtMu1a/j8Y93KiU1SRg9nyzfjereqn1BJ33QOTUXxdlYvVXMhAYl1vuR1Kmna5aIJe09KSIfyFNYw==} + engines: {node: '>=18.0.0'} + '@smithy/property-provider@4.2.12': resolution: {integrity: sha512-jqve46eYU1v7pZ5BM+fmkbq3DerkSluPr5EhvOcHxygxzD05ByDRppRwRPPpFrsFo5yDtCYLKu+kreHKVrvc7A==} engines: {node: '>=18.0.0'} @@ -8269,6 +8521,10 @@ packages: resolution: {integrity: sha512-B/FBwO3MVOL00DaRSXfXfa/TRXRheagt/q5A2NM13u7q+sHS59EOVGQNfG7DkmVtdQm5m3vOosoKAXSqn/OEgw==} engines: {node: '>=18.0.0'} + '@smithy/signature-v4@5.4.7': + resolution: {integrity: sha512-LwQZazFayImv+IOm0S0enoLeUJwmAlhGC5O6YCcLWezyu08dF46GOxPOq35OpBIHkgd7OvNvBStIFwVNyrvoBw==} + engines: {node: '>=18.0.0'} + '@smithy/smithy-client@4.12.8': resolution: {integrity: sha512-aJaAX7vHe5i66smoSSID7t4rKY08PbD8EBU7DOloixvhOozfYWdcSYE4l6/tjkZ0vBZhGjheWzB2mh31sLgCMA==} engines: {node: '>=18.0.0'} @@ -8277,6 +8533,10 @@ packages: resolution: {integrity: sha512-787F3yzE2UiJIQ+wYW1CVg2odHjmaWLGksnKQHUrK/lYZSEcy1msuLVvxaR/sI2/aDe9U+TBuLsXnr3vod1g0g==} engines: {node: '>=18.0.0'} + '@smithy/types@4.14.4': + resolution: {integrity: sha512-B2S9+UGm1+/pHkcx3ZoLVX1a+pmSk8rqxRR+ZsNqZaJ5q9FWX9AFGQVM4qG5+OBeQUZVy99HY8HqW8gK/wgXzQ==} + engines: {node: '>=18.0.0'} + '@smithy/url-parser@4.2.12': resolution: {integrity: sha512-wOPKPEpso+doCZGIlr+e1lVI6+9VAKfL4kZWFgzVgGWY2hZxshNKod4l2LXS3PRC9otH/JRSjtEHqQ/7eLciRA==} engines: {node: '>=18.0.0'} @@ -9460,6 +9720,9 @@ packages: engines: {node: '>=10.0.0'} deprecated: this version has critical issues, please update to the latest version + '@xterm/headless@6.0.0': + resolution: {integrity: sha512-5Yj1QINYCyzrZtf8OFIHi47iQtI+0qYFPHmouEfG8dHNxbZ9Tb9YGSuLcsEwj9Z+OL75GJqPyJbyoFer80a2Hw==} + '@xtuc/ieee754@1.2.0': resolution: {integrity: sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==} @@ -9520,6 +9783,9 @@ packages: engines: {node: '>=0.4.0'} hasBin: true + acp-http-client@0.4.2: + resolution: {integrity: sha512-3wtPieF08YIU4vNXaoL5up/1D0if4i9IX3Ye5q/bwbcwg1BKsazIK/VNNfvN4ldbPjWul69IqIOpGRS3I0qo3Q==} + actor-core@0.6.3: resolution: {integrity: sha512-cdYf0GX3m3jvlubbdujOcnPn93r1fP9F0mEBso72ofMTI0+EeGMS34BNrmaGmk5Pb3iD45KQl3u5ZY5Mzv4DNg==} hasBin: true @@ -9650,6 +9916,9 @@ packages: resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==} engines: {node: '>= 8'} + anynum@1.0.0: + resolution: {integrity: sha512-xjR9/zBVnUOP6ztMIIgShjsxui80nQUQH+5xJnvrYLs+90bF25/KJqaAi8mk+B4RDtX1Nspi6fmp4YTEts8SfA==} + arch@2.2.0: resolution: {integrity: sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ==} @@ -10133,16 +10402,9 @@ packages: resolution: {integrity: sha512-Ig1zM66BjLfTXpNgKpvBePq271BPOvu8MR0Jl080yG7Jsl+wAZunfrwiwA+9ruzm/WEdIV5QF/bjDZTqyAIVHA==} hasBin: true - cbor-extract@2.2.2: - resolution: {integrity: sha512-hlSxxI9XO2yQfe9g6msd3g4xCfDqK5T5P0fRMLuaLHhxn4ViPrm+a+MUfhrvH2W962RGxcBwEGzLQyjbDG1gng==} - hasBin: true - cbor-x@1.6.0: resolution: {integrity: sha512-0kareyRwHSkL6ws5VXHEf8uY1liitysCVJjlmhaLG+IXLqhSaOO+t63coaso7yjwEzWZzLy8fJo06gZDVQM9Qg==} - cbor-x@1.6.4: - resolution: {integrity: sha512-UGKHjp6RHC6QuZ2yy5LCKm7MojM4716DwoSaqwQpaH4DvZvbBTGcoDNTiG9Y2lByXZYFEs9WRkS5tLl96IrF1Q==} - ccount@2.0.1: resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==} @@ -11329,6 +11591,11 @@ packages: engines: {node: '>=18'} hasBin: true + esbuild@0.27.7: + resolution: {integrity: sha512-IxpibTjyVnmrIQo5aqNpCgoACA/dTKLTlhMHihVHhdkxKyPO1uBBthumT0rdHmcsk9uMonIWS0m4FljWzILh3w==} + engines: {node: '>=18'} + hasBin: true + escalade@3.2.0: resolution: {integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==} engines: {node: '>=6'} @@ -11667,10 +11934,17 @@ packages: fast-xml-builder@1.1.4: resolution: {integrity: sha512-f2jhpN4Eccy0/Uz9csxh3Nu6q4ErKxf0XIsasomfOihuSUa3/xw6w8dnOtCDgEItQFJG8KyXPzQXzcODDrrbOg==} + fast-xml-builder@1.2.0: + resolution: {integrity: sha512-00aAWieqff+ZJhsXA4g1g7M8k+7AYoMUUHF+/zFb5U6Uv/P0Vl4QZo84/IcufzYalLuEj9928bXN9PbbFzMF0Q==} + fast-xml-parser@5.5.8: resolution: {integrity: sha512-Z7Fh2nVQSb2d+poDViM063ix2ZGt9jmY1nWhPfHBOK2Hgnb/OW3P4Et3P/81SEej0J7QbWtJqxO05h8QYfK7LQ==} hasBin: true + fast-xml-parser@5.7.3: + resolution: {integrity: sha512-C0AaNuC+mscy6vrAQKAc/rMq+zAPHodfHGZu4sGVehvAQt/JLG1O5zEcYcXSY5zSqr4YVgxsB+pHXTq0i7eDlg==} + hasBin: true + fastq@1.20.1: resolution: {integrity: sha512-GGToxJ/w1x32s/D2EKND7kTil4n8OVk/9mycTc4VDza13lOvpUZTGX3mFSCtV9ksdGBVzvsyAVLM6mHFThxXxw==} @@ -11933,10 +12207,18 @@ packages: resolution: {integrity: sha512-trLf4SzuuUxfusZADLINj+dE8clK1frKdmqiJNb1Es75fmI5oY6X2mxLVUciLLjxqw/xr72Dhy+lER6dGd02FQ==} engines: {node: '>=10'} + gaxios@6.7.1: + resolution: {integrity: sha512-LDODD4TMYx7XXdpwxAVRAIAuB0bzv0s+ywFonY46k126qzQHT9ygyoa9tncmOiQmmDrik65UYsEkv3lbfqQ3yQ==} + engines: {node: '>=14'} + gaxios@7.1.4: resolution: {integrity: sha512-bTIgTsM2bWn3XklZISBTQX7ZSddGW+IO3bMdGaemHZ3tbqExMENHLx6kKZ/KlejgrMtj8q7wBItt51yegqalrA==} engines: {node: '>=18'} + gcp-metadata@6.1.1: + resolution: {integrity: sha512-a4tiq7E0/5fTjxPAaH4jpjkSv/uCaU2p5KC6HVGrvl0cDjA8iBZv4vv1gyzlmK0ZUKqwpOyQMKzZQe3lTit77A==} + engines: {node: '>=14'} + gcp-metadata@8.1.2: resolution: {integrity: sha512-zV/5HKTfCeKWnxG0Dmrw51hEWFGfcF2xiXqcA3+J90WDuP0SvoiSO5ORvcBsifmx/FoIjgQN3oNOGaQ5PhLFkg==} engines: {node: '>=18'} @@ -12075,10 +12357,26 @@ packages: resolution: {integrity: sha512-e27Z6EThmVNNvtYASwQxose/G57rkRuaRbQyxM2bvYLLX/GqWZ5chWq2EBoUchJbCc57eC9ArzO5wMsEmWftCw==} engines: {node: '>=18'} + google-auth-library@9.15.1: + resolution: {integrity: sha512-Jb6Z0+nvECVz+2lzSMt9u98UsoakXxA2HGHMCxh+so3n90XgYWkq5dur19JAJV7ONiJY22yBTyJB1TSkvPq9Ng==} + engines: {node: '>=14'} + + google-logging-utils@0.0.2: + resolution: {integrity: sha512-NEgUnEcBiP5HrPzufUkBzJOD/Sxsco3rLNo1F1TNf7ieU8ryUzBhqba8r756CjLX7rn3fHl6iLEwPYuqpoKgQQ==} + engines: {node: '>=14'} + google-logging-utils@1.1.3: resolution: {integrity: sha512-eAmLkjDjAFCVXg7A1unxHsLf961m6y17QFqXqAXGj/gVkKFrEICfStRfwUlGNfeCEjNRa32JEWOUTlYXPyyKvA==} engines: {node: '>=14'} + googleapis-common@7.2.0: + resolution: {integrity: sha512-/fhDZEJZvOV3X5jmD+fKxMqma5q2Q9nZNSF3kn1F18tpxmA86BcTxAGBQdM0N89Z3bEaIs+HVznSmFJEAmMTjA==} + engines: {node: '>=14.0.0'} + + googleapis@144.0.0: + resolution: {integrity: sha512-ELcWOXtJxjPX4vsKMh+7V+jZvgPwYMlEhQFiu2sa9Qmt5veX8nwXPksOWGGN6Zk4xCiLygUyaz7xGtcMO+Onxw==} + engines: {node: '>=14.0.0'} + gopd@1.2.0: resolution: {integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==} engines: {node: '>= 0.4'} @@ -12090,6 +12388,10 @@ packages: resolution: {integrity: sha512-BBvQ/406p+4CZbTpCbVPSxfzrZrbnuWSP1ELYgyS6B+hNeKzgrdB4JczCa5VZUBQrDa9hUngm0KnexY6pJRN5Q==} engines: {node: ^12.22.0 || ^14.16.0 || ^16.0.0 || >=17.0.0} + gtoken@7.1.0: + resolution: {integrity: sha512-pCcEwRi+TKpMlxAQObHDQ56KawURgyAf6jtIY046fJ5tIv3zDe/LEIubckAO8fj6JnAxLdmWkUfNyulQ2iKdEw==} + engines: {node: '>=14.0.0'} + h3@1.15.4: resolution: {integrity: sha512-z5cFQWDffyOe4vQ9xIqNfCZdV4p//vy6fBnr8Q1AWnVZ0teurKMG66rLj++TKwKPUP3u7iMUvrvKaEUiQw2QWQ==} @@ -14119,6 +14421,10 @@ packages: resolution: {integrity: sha512-d7gQQmLvAKXKXE2GeP9apIGbMYKz88zWdsn/BN2HRWVQsDFdUY36WSLTY0Jvd4HWi7Fb30gQ62oAOzdgJA6fZw==} engines: {node: '>=14.0.0'} + path-expression-matcher@1.5.0: + resolution: {integrity: sha512-cbrerZV+6rvdQrrD+iGMcZFEiiSrbv9Tfdkvnusy6y0x0GKBXREFg/Y65GhIfm0tnLntThhzCnfKwp1WRjeCyQ==} + engines: {node: '>=14.0.0'} + path-is-absolute@1.0.1: resolution: {integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==} engines: {node: '>=0.10.0'} @@ -15175,6 +15481,38 @@ packages: safer-buffer@2.1.2: resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==} + sandbox-agent@0.4.2: + resolution: {integrity: sha512-fH6WDQEaIrgiu93LxZcy+4Dx+t+/cslu+hzXImDyUlsaL6jV2jIv4fdxELkALlo7uzyEDVK9lmqs9qy65RHwBQ==} + peerDependencies: + '@cloudflare/sandbox': '>=0.1.0' + '@daytonaio/sdk': '>=0.12.0' + '@e2b/code-interpreter': '>=1.0.0' + '@fly/sprites': '>=0.0.1' + '@vercel/sandbox': '>=0.1.0' + computesdk: '>=0.1.0' + dockerode: '>=4.0.0' + get-port: '>=7.0.0' + modal: '>=0.1.0' + peerDependenciesMeta: + '@cloudflare/sandbox': + optional: true + '@daytonaio/sdk': + optional: true + '@e2b/code-interpreter': + optional: true + '@fly/sprites': + optional: true + '@vercel/sandbox': + optional: true + computesdk: + optional: true + dockerode: + optional: true + get-port: + optional: true + modal: + optional: true + sass@1.93.2: resolution: {integrity: sha512-t+YPtOQHpGW1QWsh1CHQ5cPIr9lbbGZLZnbihP/D/qZj/yuV68m8qarcV17nvkOX81BCrvzAlq2klCQFZghyTg==} engines: {node: '>=14.0.0'} @@ -15198,9 +15536,6 @@ packages: resolution: {integrity: sha512-eflK8wEtyOE6+hsaRVPxvUKYCpRgzLqDTb8krvAsRIwOGlHoSgYLgBXoubGgLd2fT41/OUYdb48v4k4WWHQurA==} engines: {node: '>= 10.13.0'} - secure-exec@0.2.1: - resolution: {integrity: sha512-oaQDzTPDSCOckYC8G0PimIqzEVxY6sYEvcx0fMGsRR/Wl4wkFVHaZgQ3kc2DHWysV6WHWt5g1AXc/6seafO2XQ==} - secure-exec@https://pkg.pr.new/rivet-dev/secure-exec@7659aba: resolution: {tarball: https://pkg.pr.new/rivet-dev/secure-exec@7659aba} version: 0.1.0 @@ -15584,6 +15919,9 @@ packages: strnum@2.2.0: resolution: {integrity: sha512-Y7Bj8XyJxnPAORMZj/xltsfo55uOiyHcU2tnAVzHUnSJR/KsEX+9RoDeXEnsXtl/CX4fAcrt64gZ13aGaWPeBg==} + strnum@2.4.0: + resolution: {integrity: sha512-sHrVyWWdq28RbhjuJdZsA1SnGRJV6NiXbk6AXBxDOsgAcA+lmpUZCYjOdLBxkXMwis6RRe7dlZt4VlIWFVzkmg==} + strtok3@10.3.4: resolution: {integrity: sha512-KIy5nylvC5le1OdaaoCJ07L+8iQzJHGH6pWDuzS+d07Cu7n1MZ2x26P8ZKIWfbK02+XIL8Mp4RkWeqdUCrDMfg==} engines: {node: '>=18'} @@ -16278,6 +16616,9 @@ packages: url-parse@1.5.10: resolution: {integrity: sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==} + url-template@2.0.8: + resolution: {integrity: sha512-XdVKMF4SJ0nP/O7XIPB0JwAEuT9lDIYnNsK8yGVe43y0AWoKeJNdv3ZNWh7ksJ6KqQFjOO6ox/VEitLnaVNufw==} + url@0.11.4: resolution: {integrity: sha512-oCwdVC7mTuWiPyjLUz/COz5TLk6wgp0RCsN+wHZ2Ekneac9w8uuV0njcbbie2ME+Vs+d6duwmYuR3HgQXs1fOg==} engines: {node: '>= 0.4'} @@ -16341,6 +16682,11 @@ packages: deprecated: uuid@10 and below is no longer supported. For ESM codebases, update to uuid@latest. For CommonJS codebases, use uuid@11 (but be aware this version will likely be deprecated in 2028). hasBin: true + uuid@9.0.1: + resolution: {integrity: sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA==} + deprecated: uuid@10 and below is no longer supported. For ESM codebases, update to uuid@latest. For CommonJS codebases, use uuid@11 (but be aware this version will likely be deprecated in 2028). + hasBin: true + v8-compile-cache-lib@3.0.1: resolution: {integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==} @@ -16720,10 +17066,6 @@ packages: resolution: {integrity: sha512-QW95TCTaHmsYfHDybGMwO5IJIM93I/6vTRk+daHTWFPhwh+C8Cg7j7XyKrwrj8Ib6vYXe0ocYNrmzY4xAAN6ug==} engines: {node: '>= 14'} - web-streams-polyfill@4.2.0: - resolution: {integrity: sha512-0rYDzGOh9EZpig92umN5g5D/9A1Kff7k0/mzPSSCY8jEQeYkgRMoY7LhbXtUCWzLCMX0TUE9aoHkjFNB7D9pfA==} - engines: {node: '>= 8'} - web-vitals@4.2.4: resolution: {integrity: sha512-r4DIlprAGwJ7YM11VZp4R884m0Vmgr6EAKe3P+kO0PPj3Unqyvv59rczf6UiGcb9Z8QxZVcqKNwv/g0WNdWwsw==} @@ -16878,6 +17220,10 @@ packages: resolution: {integrity: sha512-7rVi2KMfwfWFl+GpPg6m80IVMWXLRjO+PxTq7V2CDhoGak0wzYzFgUY2m4XJ47OGdXd8eLE8EmwfAmdjw7lC1g==} hasBin: true + xml-naming@0.1.0: + resolution: {integrity: sha512-k8KO9hrMyNk6tUWqUfkTEZbezRRpONVOzUTnc97VnCvyj6Tf9lyUR9EDAIeiVLv56jsMcoXEwjW8Kv5yPY52lw==} + engines: {node: '>=16.0.0'} + xml2js@0.6.0: resolution: {integrity: sha512-eLTh0kA8uHceqesPqSE+VvO1CDDJWMwlQfB6LuN6T8w6MaDJ8Txm8P7s5cHD0miF0V+GGTZrDQfxPZQVsur33w==} engines: {node: '>=4.0.0'} @@ -17064,6 +17410,10 @@ snapshots: dependencies: zod: 4.1.13 + '@agentclientprotocol/sdk@0.16.1(zod@4.3.6)': + dependencies: + zod: 4.3.6 + '@ai-sdk/anthropic@1.2.12(zod@4.1.13)': dependencies: '@ai-sdk/provider': 1.1.3 @@ -17349,7 +17699,22 @@ snapshots: '@aws-crypto/crc32@5.2.0': dependencies: '@aws-crypto/util': 5.2.0 - '@aws-sdk/types': 3.973.6 + '@aws-sdk/types': 3.973.12 + tslib: 2.8.1 + + '@aws-crypto/crc32c@5.2.0': + dependencies: + '@aws-crypto/util': 5.2.0 + '@aws-sdk/types': 3.973.12 + tslib: 2.8.1 + + '@aws-crypto/sha1-browser@5.2.0': + dependencies: + '@aws-crypto/supports-web-crypto': 5.2.0 + '@aws-crypto/util': 5.2.0 + '@aws-sdk/types': 3.973.12 + '@aws-sdk/util-locate-window': 3.965.5 + '@smithy/util-utf8': 2.3.0 tslib: 2.8.1 '@aws-crypto/sha256-browser@5.2.0': @@ -17357,7 +17722,7 @@ snapshots: '@aws-crypto/sha256-js': 5.2.0 '@aws-crypto/supports-web-crypto': 5.2.0 '@aws-crypto/util': 5.2.0 - '@aws-sdk/types': 3.973.6 + '@aws-sdk/types': 3.973.12 '@aws-sdk/util-locate-window': 3.965.5 '@smithy/util-utf8': 2.3.0 tslib: 2.8.1 @@ -17365,7 +17730,7 @@ snapshots: '@aws-crypto/sha256-js@5.2.0': dependencies: '@aws-crypto/util': 5.2.0 - '@aws-sdk/types': 3.973.6 + '@aws-sdk/types': 3.973.12 tslib: 2.8.1 '@aws-crypto/supports-web-crypto@5.2.0': @@ -17374,10 +17739,21 @@ snapshots: '@aws-crypto/util@5.2.0': dependencies: - '@aws-sdk/types': 3.973.6 + '@aws-sdk/types': 3.973.12 '@smithy/util-utf8': 2.3.0 tslib: 2.8.1 + '@aws-sdk/checksums@3.1000.5': + dependencies: + '@aws-crypto/crc32': 5.2.0 + '@aws-crypto/crc32c': 5.2.0 + '@aws-crypto/util': 5.2.0 + '@aws-sdk/core': 3.974.20 + '@aws-sdk/types': 3.973.12 + '@smithy/core': 3.24.7 + '@smithy/types': 4.14.4 + tslib: 2.8.1 + '@aws-sdk/client-bedrock-runtime@3.1024.0': dependencies: '@aws-crypto/sha256-browser': 5.2.0 @@ -17430,6 +17806,23 @@ snapshots: transitivePeerDependencies: - aws-crt + '@aws-sdk/client-s3@3.1068.0': + dependencies: + '@aws-crypto/sha1-browser': 5.2.0 + '@aws-crypto/sha256-browser': 5.2.0 + '@aws-crypto/sha256-js': 5.2.0 + '@aws-sdk/core': 3.974.20 + '@aws-sdk/credential-provider-node': 3.972.55 + '@aws-sdk/middleware-flexible-checksums': 3.974.30 + '@aws-sdk/middleware-sdk-s3': 3.972.51 + '@aws-sdk/signature-v4-multi-region': 3.996.34 + '@aws-sdk/types': 3.973.12 + '@smithy/core': 3.24.7 + '@smithy/fetch-http-handler': 5.4.7 + '@smithy/node-http-handler': 4.7.8 + '@smithy/types': 4.14.4 + tslib: 2.8.1 + '@aws-sdk/core@3.973.26': dependencies: '@aws-sdk/types': 3.973.6 @@ -17446,6 +17839,17 @@ snapshots: '@smithy/util-utf8': 4.2.2 tslib: 2.8.1 + '@aws-sdk/core@3.974.20': + dependencies: + '@aws-sdk/types': 3.973.12 + '@aws-sdk/xml-builder': 3.972.29 + '@aws/lambda-invoke-store': 0.2.3 + '@smithy/core': 3.24.7 + '@smithy/signature-v4': 5.4.7 + '@smithy/types': 4.14.4 + bowser: 2.14.1 + tslib: 2.8.1 + '@aws-sdk/credential-provider-env@3.972.24': dependencies: '@aws-sdk/core': 3.973.26 @@ -17454,6 +17858,14 @@ snapshots: '@smithy/types': 4.13.1 tslib: 2.8.1 + '@aws-sdk/credential-provider-env@3.972.46': + dependencies: + '@aws-sdk/core': 3.974.20 + '@aws-sdk/types': 3.973.12 + '@smithy/core': 3.24.7 + '@smithy/types': 4.14.4 + tslib: 2.8.1 + '@aws-sdk/credential-provider-http@3.972.26': dependencies: '@aws-sdk/core': 3.973.26 @@ -17467,6 +17879,16 @@ snapshots: '@smithy/util-stream': 4.5.21 tslib: 2.8.1 + '@aws-sdk/credential-provider-http@3.972.48': + dependencies: + '@aws-sdk/core': 3.974.20 + '@aws-sdk/types': 3.973.12 + '@smithy/core': 3.24.7 + '@smithy/fetch-http-handler': 5.4.7 + '@smithy/node-http-handler': 4.7.8 + '@smithy/types': 4.14.4 + tslib: 2.8.1 + '@aws-sdk/credential-provider-ini@3.972.28': dependencies: '@aws-sdk/core': 3.973.26 @@ -17486,6 +17908,22 @@ snapshots: transitivePeerDependencies: - aws-crt + '@aws-sdk/credential-provider-ini@3.972.53': + dependencies: + '@aws-sdk/core': 3.974.20 + '@aws-sdk/credential-provider-env': 3.972.46 + '@aws-sdk/credential-provider-http': 3.972.48 + '@aws-sdk/credential-provider-login': 3.972.52 + '@aws-sdk/credential-provider-process': 3.972.46 + '@aws-sdk/credential-provider-sso': 3.972.52 + '@aws-sdk/credential-provider-web-identity': 3.972.52 + '@aws-sdk/nested-clients': 3.997.20 + '@aws-sdk/types': 3.973.12 + '@smithy/core': 3.24.7 + '@smithy/credential-provider-imds': 4.3.9 + '@smithy/types': 4.14.4 + tslib: 2.8.1 + '@aws-sdk/credential-provider-login@3.972.28': dependencies: '@aws-sdk/core': 3.973.26 @@ -17499,6 +17937,15 @@ snapshots: transitivePeerDependencies: - aws-crt + '@aws-sdk/credential-provider-login@3.972.52': + dependencies: + '@aws-sdk/core': 3.974.20 + '@aws-sdk/nested-clients': 3.997.20 + '@aws-sdk/types': 3.973.12 + '@smithy/core': 3.24.7 + '@smithy/types': 4.14.4 + tslib: 2.8.1 + '@aws-sdk/credential-provider-node@3.972.29': dependencies: '@aws-sdk/credential-provider-env': 3.972.24 @@ -17516,6 +17963,20 @@ snapshots: transitivePeerDependencies: - aws-crt + '@aws-sdk/credential-provider-node@3.972.55': + dependencies: + '@aws-sdk/credential-provider-env': 3.972.46 + '@aws-sdk/credential-provider-http': 3.972.48 + '@aws-sdk/credential-provider-ini': 3.972.53 + '@aws-sdk/credential-provider-process': 3.972.46 + '@aws-sdk/credential-provider-sso': 3.972.52 + '@aws-sdk/credential-provider-web-identity': 3.972.52 + '@aws-sdk/types': 3.973.12 + '@smithy/core': 3.24.7 + '@smithy/credential-provider-imds': 4.3.9 + '@smithy/types': 4.14.4 + tslib: 2.8.1 + '@aws-sdk/credential-provider-process@3.972.24': dependencies: '@aws-sdk/core': 3.973.26 @@ -17525,6 +17986,14 @@ snapshots: '@smithy/types': 4.13.1 tslib: 2.8.1 + '@aws-sdk/credential-provider-process@3.972.46': + dependencies: + '@aws-sdk/core': 3.974.20 + '@aws-sdk/types': 3.973.12 + '@smithy/core': 3.24.7 + '@smithy/types': 4.14.4 + tslib: 2.8.1 + '@aws-sdk/credential-provider-sso@3.972.28': dependencies: '@aws-sdk/core': 3.973.26 @@ -17538,6 +18007,16 @@ snapshots: transitivePeerDependencies: - aws-crt + '@aws-sdk/credential-provider-sso@3.972.52': + dependencies: + '@aws-sdk/core': 3.974.20 + '@aws-sdk/nested-clients': 3.997.20 + '@aws-sdk/token-providers': 3.1066.0 + '@aws-sdk/types': 3.973.12 + '@smithy/core': 3.24.7 + '@smithy/types': 4.14.4 + tslib: 2.8.1 + '@aws-sdk/credential-provider-web-identity@3.972.28': dependencies: '@aws-sdk/core': 3.973.26 @@ -17550,6 +18029,15 @@ snapshots: transitivePeerDependencies: - aws-crt + '@aws-sdk/credential-provider-web-identity@3.972.52': + dependencies: + '@aws-sdk/core': 3.974.20 + '@aws-sdk/nested-clients': 3.997.20 + '@aws-sdk/types': 3.973.12 + '@smithy/core': 3.24.7 + '@smithy/types': 4.14.4 + tslib: 2.8.1 + '@aws-sdk/eventstream-handler-node@3.972.12': dependencies: '@aws-sdk/types': 3.973.6 @@ -17564,6 +18052,11 @@ snapshots: '@smithy/types': 4.13.1 tslib: 2.8.1 + '@aws-sdk/middleware-flexible-checksums@3.974.30': + dependencies: + '@aws-sdk/checksums': 3.1000.5 + tslib: 2.8.1 + '@aws-sdk/middleware-host-header@3.972.8': dependencies: '@aws-sdk/types': 3.973.6 @@ -17585,6 +18078,15 @@ snapshots: '@smithy/types': 4.13.1 tslib: 2.8.1 + '@aws-sdk/middleware-sdk-s3@3.972.51': + dependencies: + '@aws-sdk/core': 3.974.20 + '@aws-sdk/signature-v4-multi-region': 3.996.34 + '@aws-sdk/types': 3.973.12 + '@smithy/core': 3.24.7 + '@smithy/types': 4.14.4 + tslib: 2.8.1 + '@aws-sdk/middleware-user-agent@3.972.28': dependencies: '@aws-sdk/core': 3.973.26 @@ -17654,6 +18156,19 @@ snapshots: transitivePeerDependencies: - aws-crt + '@aws-sdk/nested-clients@3.997.20': + dependencies: + '@aws-crypto/sha256-browser': 5.2.0 + '@aws-crypto/sha256-js': 5.2.0 + '@aws-sdk/core': 3.974.20 + '@aws-sdk/signature-v4-multi-region': 3.996.34 + '@aws-sdk/types': 3.973.12 + '@smithy/core': 3.24.7 + '@smithy/fetch-http-handler': 5.4.7 + '@smithy/node-http-handler': 4.7.8 + '@smithy/types': 4.14.4 + tslib: 2.8.1 + '@aws-sdk/region-config-resolver@3.972.10': dependencies: '@aws-sdk/types': 3.973.6 @@ -17662,6 +18177,13 @@ snapshots: '@smithy/types': 4.13.1 tslib: 2.8.1 + '@aws-sdk/signature-v4-multi-region@3.996.34': + dependencies: + '@aws-sdk/types': 3.973.12 + '@smithy/signature-v4': 5.4.7 + '@smithy/types': 4.14.4 + tslib: 2.8.1 + '@aws-sdk/token-providers@3.1021.0': dependencies: '@aws-sdk/core': 3.973.26 @@ -17686,6 +18208,20 @@ snapshots: transitivePeerDependencies: - aws-crt + '@aws-sdk/token-providers@3.1066.0': + dependencies: + '@aws-sdk/core': 3.974.20 + '@aws-sdk/nested-clients': 3.997.20 + '@aws-sdk/types': 3.973.12 + '@smithy/core': 3.24.7 + '@smithy/types': 4.14.4 + tslib: 2.8.1 + + '@aws-sdk/types@3.973.12': + dependencies: + '@smithy/types': 4.14.4 + tslib: 2.8.1 + '@aws-sdk/types@3.973.6': dependencies: '@smithy/types': 4.13.1 @@ -17732,6 +18268,12 @@ snapshots: fast-xml-parser: 5.5.8 tslib: 2.8.1 + '@aws-sdk/xml-builder@3.972.29': + dependencies: + '@smithy/types': 4.14.4 + fast-xml-parser: 5.7.3 + tslib: 2.8.1 + '@aws/lambda-invoke-store@0.2.3': {} '@babel/code-frame@7.10.4': @@ -18451,39 +18993,21 @@ snapshots: '@cbor-extract/cbor-extract-darwin-arm64@2.2.0': optional: true - '@cbor-extract/cbor-extract-darwin-arm64@2.2.2': - optional: true - '@cbor-extract/cbor-extract-darwin-x64@2.2.0': optional: true - '@cbor-extract/cbor-extract-darwin-x64@2.2.2': - optional: true - '@cbor-extract/cbor-extract-linux-arm64@2.2.0': optional: true - '@cbor-extract/cbor-extract-linux-arm64@2.2.2': - optional: true - '@cbor-extract/cbor-extract-linux-arm@2.2.0': optional: true - '@cbor-extract/cbor-extract-linux-arm@2.2.2': - optional: true - '@cbor-extract/cbor-extract-linux-x64@2.2.0': optional: true - '@cbor-extract/cbor-extract-linux-x64@2.2.2': - optional: true - '@cbor-extract/cbor-extract-win32-x64@2.2.0': optional: true - '@cbor-extract/cbor-extract-win32-x64@2.2.2': - optional: true - '@chevrotain/cst-dts-gen@11.0.3': dependencies: '@chevrotain/gast': 11.0.3 @@ -18658,6 +19182,9 @@ snapshots: '@esbuild/aix-ppc64@0.27.3': optional: true + '@esbuild/aix-ppc64@0.27.7': + optional: true + '@esbuild/android-arm64@0.18.20': optional: true @@ -18673,6 +19200,9 @@ snapshots: '@esbuild/android-arm64@0.27.3': optional: true + '@esbuild/android-arm64@0.27.7': + optional: true + '@esbuild/android-arm@0.18.20': optional: true @@ -18688,6 +19218,9 @@ snapshots: '@esbuild/android-arm@0.27.3': optional: true + '@esbuild/android-arm@0.27.7': + optional: true + '@esbuild/android-x64@0.18.20': optional: true @@ -18703,6 +19236,9 @@ snapshots: '@esbuild/android-x64@0.27.3': optional: true + '@esbuild/android-x64@0.27.7': + optional: true + '@esbuild/darwin-arm64@0.18.20': optional: true @@ -18718,6 +19254,9 @@ snapshots: '@esbuild/darwin-arm64@0.27.3': optional: true + '@esbuild/darwin-arm64@0.27.7': + optional: true + '@esbuild/darwin-x64@0.18.20': optional: true @@ -18733,6 +19272,9 @@ snapshots: '@esbuild/darwin-x64@0.27.3': optional: true + '@esbuild/darwin-x64@0.27.7': + optional: true + '@esbuild/freebsd-arm64@0.18.20': optional: true @@ -18748,6 +19290,9 @@ snapshots: '@esbuild/freebsd-arm64@0.27.3': optional: true + '@esbuild/freebsd-arm64@0.27.7': + optional: true + '@esbuild/freebsd-x64@0.18.20': optional: true @@ -18763,6 +19308,9 @@ snapshots: '@esbuild/freebsd-x64@0.27.3': optional: true + '@esbuild/freebsd-x64@0.27.7': + optional: true + '@esbuild/linux-arm64@0.18.20': optional: true @@ -18778,6 +19326,9 @@ snapshots: '@esbuild/linux-arm64@0.27.3': optional: true + '@esbuild/linux-arm64@0.27.7': + optional: true + '@esbuild/linux-arm@0.18.20': optional: true @@ -18793,6 +19344,9 @@ snapshots: '@esbuild/linux-arm@0.27.3': optional: true + '@esbuild/linux-arm@0.27.7': + optional: true + '@esbuild/linux-ia32@0.18.20': optional: true @@ -18808,6 +19362,9 @@ snapshots: '@esbuild/linux-ia32@0.27.3': optional: true + '@esbuild/linux-ia32@0.27.7': + optional: true + '@esbuild/linux-loong64@0.18.20': optional: true @@ -18823,6 +19380,9 @@ snapshots: '@esbuild/linux-loong64@0.27.3': optional: true + '@esbuild/linux-loong64@0.27.7': + optional: true + '@esbuild/linux-mips64el@0.18.20': optional: true @@ -18838,6 +19398,9 @@ snapshots: '@esbuild/linux-mips64el@0.27.3': optional: true + '@esbuild/linux-mips64el@0.27.7': + optional: true + '@esbuild/linux-ppc64@0.18.20': optional: true @@ -18853,6 +19416,9 @@ snapshots: '@esbuild/linux-ppc64@0.27.3': optional: true + '@esbuild/linux-ppc64@0.27.7': + optional: true + '@esbuild/linux-riscv64@0.18.20': optional: true @@ -18868,6 +19434,9 @@ snapshots: '@esbuild/linux-riscv64@0.27.3': optional: true + '@esbuild/linux-riscv64@0.27.7': + optional: true + '@esbuild/linux-s390x@0.18.20': optional: true @@ -18883,6 +19452,9 @@ snapshots: '@esbuild/linux-s390x@0.27.3': optional: true + '@esbuild/linux-s390x@0.27.7': + optional: true + '@esbuild/linux-x64@0.18.20': optional: true @@ -18898,12 +19470,18 @@ snapshots: '@esbuild/linux-x64@0.27.3': optional: true + '@esbuild/linux-x64@0.27.7': + optional: true + '@esbuild/netbsd-arm64@0.25.12': optional: true '@esbuild/netbsd-arm64@0.27.3': optional: true + '@esbuild/netbsd-arm64@0.27.7': + optional: true + '@esbuild/netbsd-x64@0.18.20': optional: true @@ -18919,12 +19497,18 @@ snapshots: '@esbuild/netbsd-x64@0.27.3': optional: true + '@esbuild/netbsd-x64@0.27.7': + optional: true + '@esbuild/openbsd-arm64@0.25.12': optional: true '@esbuild/openbsd-arm64@0.27.3': optional: true + '@esbuild/openbsd-arm64@0.27.7': + optional: true + '@esbuild/openbsd-x64@0.18.20': optional: true @@ -18940,12 +19524,18 @@ snapshots: '@esbuild/openbsd-x64@0.27.3': optional: true + '@esbuild/openbsd-x64@0.27.7': + optional: true + '@esbuild/openharmony-arm64@0.25.12': optional: true '@esbuild/openharmony-arm64@0.27.3': optional: true + '@esbuild/openharmony-arm64@0.27.7': + optional: true + '@esbuild/sunos-x64@0.18.20': optional: true @@ -18961,6 +19551,9 @@ snapshots: '@esbuild/sunos-x64@0.27.3': optional: true + '@esbuild/sunos-x64@0.27.7': + optional: true + '@esbuild/win32-arm64@0.18.20': optional: true @@ -18976,6 +19569,9 @@ snapshots: '@esbuild/win32-arm64@0.27.3': optional: true + '@esbuild/win32-arm64@0.27.7': + optional: true + '@esbuild/win32-ia32@0.18.20': optional: true @@ -18991,6 +19587,9 @@ snapshots: '@esbuild/win32-ia32@0.27.3': optional: true + '@esbuild/win32-ia32@0.27.7': + optional: true + '@esbuild/win32-x64@0.18.20': optional: true @@ -19006,6 +19605,9 @@ snapshots: '@esbuild/win32-x64@0.27.3': optional: true + '@esbuild/win32-x64@0.27.7': + optional: true + '@eslint-community/eslint-utils@4.9.0(eslint@9.39.1(jiti@2.6.1))': dependencies: eslint: 9.39.1(jiti@2.6.1) @@ -20735,6 +21337,8 @@ snapshots: '@noble/hashes@2.0.1': {} + '@nodable/entities@2.2.0': {} + '@nodelib/fs.scandir@2.1.5': dependencies: '@nodelib/fs.stat': 2.0.5 @@ -22015,18 +22619,24 @@ snapshots: '@rivet-dev/agent-os-sed': 0.0.260331072558 '@rivet-dev/agent-os-tar': 0.0.260331072558 - '@rivet-dev/agent-os-core@0.1.1(pyodide@0.28.3)': + '@rivet-dev/agent-os-core@0.0.0-claude-rust-review-and-runtime-fixes.5955345': dependencies: - '@rivet-dev/agent-os-posix': 0.1.0 - '@rivet-dev/agent-os-python': 0.1.0(pyodide@0.28.3) - '@secure-exec/core': 0.2.1 - '@secure-exec/nodejs': 0.2.1 - '@secure-exec/v8': 0.2.1 + '@aws-sdk/client-s3': 3.1068.0 + '@rivet-dev/agent-os-sidecar': 0.0.0-claude-rust-review-and-runtime-fixes.5955345 + '@xterm/headless': 6.0.0 + better-sqlite3: 12.8.0 croner: 10.0.1 + esbuild: 0.27.7 + googleapis: 144.0.0 + isolated-vm: 6.1.2 long-timeout: 0.1.1 - secure-exec: 0.2.1 + minimatch: 10.2.5 + node-stdlib-browser: 1.3.1 + undici: 7.24.7 + web-streams-polyfill: 3.3.3 transitivePeerDependencies: - - pyodide + - encoding + - supports-color '@rivet-dev/agent-os-coreutils@0.0.260331072558': {} @@ -22040,50 +22650,72 @@ snapshots: '@rivet-dev/agent-os-gzip@0.0.260331072558': {} - '@rivet-dev/agent-os-pi@0.1.1(@modelcontextprotocol/sdk@1.25.3(hono@4.11.9)(zod@3.25.76))(ws@8.19.0)(zod@3.25.76)': + '@rivet-dev/agent-os-pi@0.0.0-claude-rust-review-and-runtime-fixes.5955345(@modelcontextprotocol/sdk@1.25.3(hono@4.11.9)(zod@3.25.76))(ws@8.19.0)(zod@3.25.76)': dependencies: '@agentclientprotocol/sdk': 0.16.1(zod@3.25.76) '@mariozechner/pi-ai': 0.60.0(@modelcontextprotocol/sdk@1.25.3(hono@4.11.9)(zod@3.25.76))(ws@8.19.0)(zod@3.25.76) '@mariozechner/pi-coding-agent': 0.60.0(@modelcontextprotocol/sdk@1.25.3(hono@4.11.9)(zod@3.25.76))(ws@8.19.0)(zod@3.25.76) - '@rivet-dev/agent-os-core': 0.1.1(pyodide@0.28.3) + '@rivet-dev/agent-os-core': 0.0.0-claude-rust-review-and-runtime-fixes.5955345 transitivePeerDependencies: - '@modelcontextprotocol/sdk' - aws-crt - bufferutil - - pyodide + - encoding - supports-color - utf-8-validate - ws - zod - '@rivet-dev/agent-os-pi@0.1.1(@modelcontextprotocol/sdk@1.25.3(hono@4.11.9)(zod@4.1.13))(pyodide@0.28.3)(ws@8.19.0)(zod@4.1.13)': + '@rivet-dev/agent-os-pi@0.0.0-claude-rust-review-and-runtime-fixes.5955345(@modelcontextprotocol/sdk@1.25.3(hono@4.11.9)(zod@4.1.13))(ws@8.19.0)(zod@4.1.13)': dependencies: '@agentclientprotocol/sdk': 0.16.1(zod@4.1.13) '@mariozechner/pi-ai': 0.60.0(@modelcontextprotocol/sdk@1.25.3(hono@4.11.9)(zod@4.1.13))(ws@8.19.0)(zod@4.1.13) '@mariozechner/pi-coding-agent': 0.60.0(@modelcontextprotocol/sdk@1.25.3(hono@4.11.9)(zod@4.1.13))(ws@8.19.0)(zod@4.1.13) - '@rivet-dev/agent-os-core': 0.1.1(pyodide@0.28.3) + '@rivet-dev/agent-os-core': 0.0.0-claude-rust-review-and-runtime-fixes.5955345 transitivePeerDependencies: - '@modelcontextprotocol/sdk' - aws-crt - bufferutil - - pyodide + - encoding - supports-color - utf-8-validate - ws - zod - '@rivet-dev/agent-os-posix@0.1.0': + '@rivet-dev/agent-os-s3@0.0.0-claude-rust-review-and-runtime-fixes.5955345': dependencies: - '@secure-exec/core': 0.2.1 + '@rivet-dev/agent-os-core': 0.0.0-claude-rust-review-and-runtime-fixes.5955345 + transitivePeerDependencies: + - encoding + - supports-color - '@rivet-dev/agent-os-python@0.1.0(pyodide@0.28.3)': + '@rivet-dev/agent-os-sandbox@0.0.0-claude-rust-review-and-runtime-fixes.5955345(get-port@7.1.0)': dependencies: - '@secure-exec/core': 0.2.1 - optionalDependencies: - pyodide: 0.28.3 + '@rivet-dev/agent-os-core': 0.0.0-claude-rust-review-and-runtime-fixes.5955345 + sandbox-agent: 0.4.2(get-port@7.1.0)(zod@4.3.6) + zod: 4.3.6 + transitivePeerDependencies: + - '@cloudflare/sandbox' + - '@daytonaio/sdk' + - '@e2b/code-interpreter' + - '@fly/sprites' + - '@vercel/sandbox' + - computesdk + - dockerode + - encoding + - get-port + - modal + - supports-color '@rivet-dev/agent-os-sed@0.0.260331072558': {} + '@rivet-dev/agent-os-sidecar-linux-x64-gnu@0.0.0-claude-rust-review-and-runtime-fixes.5955345': + optional: true + + '@rivet-dev/agent-os-sidecar@0.0.0-claude-rust-review-and-runtime-fixes.5955345': + optionalDependencies: + '@rivet-dev/agent-os-sidecar-linux-x64-gnu': 0.0.0-claude-rust-review-and-runtime-fixes.5955345 + '@rivet-dev/agent-os-tar@0.0.260331072558': {} '@rivet-gg/api@25.5.3': @@ -22391,43 +23023,35 @@ snapshots: - '@types/node' optional: true - '@sec-ant/readable-stream@0.4.1': {} - - '@secure-exec/core@0.2.1': - dependencies: - better-sqlite3: 12.8.0 - - '@secure-exec/nodejs@0.2.1': - dependencies: - '@secure-exec/core': 0.2.1 - '@secure-exec/v8': 0.2.1 - cbor-x: 1.6.4 - cjs-module-lexer: 2.2.0 - es-module-lexer: 1.7.0 - esbuild: 0.27.3 - node-stdlib-browser: 1.3.1 - web-streams-polyfill: 4.2.0 + '@sandbox-agent/cli-darwin-arm64@0.4.2': + optional: true - '@secure-exec/v8-darwin-arm64@0.2.1': + '@sandbox-agent/cli-darwin-x64@0.4.2': optional: true - '@secure-exec/v8-darwin-x64@0.2.1': + '@sandbox-agent/cli-linux-arm64@0.4.2': optional: true - '@secure-exec/v8-linux-arm64-gnu@0.2.1': + '@sandbox-agent/cli-linux-x64@0.4.2': optional: true - '@secure-exec/v8-linux-x64-gnu@0.2.1': + '@sandbox-agent/cli-shared@0.4.2': {} + + '@sandbox-agent/cli-win32-x64@0.4.2': optional: true - '@secure-exec/v8@0.2.1': + '@sandbox-agent/cli@0.4.2': dependencies: - cbor-x: 1.6.4 + '@sandbox-agent/cli-shared': 0.4.2 optionalDependencies: - '@secure-exec/v8-darwin-arm64': 0.2.1 - '@secure-exec/v8-darwin-x64': 0.2.1 - '@secure-exec/v8-linux-arm64-gnu': 0.2.1 - '@secure-exec/v8-linux-x64-gnu': 0.2.1 + '@sandbox-agent/cli-darwin-arm64': 0.4.2 + '@sandbox-agent/cli-darwin-x64': 0.4.2 + '@sandbox-agent/cli-linux-arm64': 0.4.2 + '@sandbox-agent/cli-linux-x64': 0.4.2 + '@sandbox-agent/cli-win32-x64': 0.4.2 + optional: true + + '@sec-ant/readable-stream@0.4.1': {} '@sentry-internal/browser-utils@10.42.0': dependencies: @@ -22838,6 +23462,12 @@ snapshots: '@smithy/uuid': 1.1.2 tslib: 2.8.1 + '@smithy/core@3.24.7': + dependencies: + '@aws-crypto/crc32': 5.2.0 + '@smithy/types': 4.14.4 + tslib: 2.8.1 + '@smithy/credential-provider-imds@4.2.12': dependencies: '@smithy/node-config-provider': 4.3.12 @@ -22846,6 +23476,12 @@ snapshots: '@smithy/url-parser': 4.2.12 tslib: 2.8.1 + '@smithy/credential-provider-imds@4.3.9': + dependencies: + '@smithy/core': 3.24.7 + '@smithy/types': 4.14.4 + tslib: 2.8.1 + '@smithy/eventstream-codec@4.2.12': dependencies: '@aws-crypto/crc32': 5.2.0 @@ -22884,6 +23520,12 @@ snapshots: '@smithy/util-base64': 4.3.2 tslib: 2.8.1 + '@smithy/fetch-http-handler@5.4.7': + dependencies: + '@smithy/core': 3.24.7 + '@smithy/types': 4.14.4 + tslib: 2.8.1 + '@smithy/hash-node@4.2.12': dependencies: '@smithy/types': 4.13.1 @@ -22959,6 +23601,12 @@ snapshots: '@smithy/types': 4.13.1 tslib: 2.8.1 + '@smithy/node-http-handler@4.7.8': + dependencies: + '@smithy/core': 3.24.7 + '@smithy/types': 4.14.4 + tslib: 2.8.1 + '@smithy/property-provider@4.2.12': dependencies: '@smithy/types': 4.13.1 @@ -23000,6 +23648,12 @@ snapshots: '@smithy/util-utf8': 4.2.2 tslib: 2.8.1 + '@smithy/signature-v4@5.4.7': + dependencies: + '@smithy/core': 3.24.7 + '@smithy/types': 4.14.4 + tslib: 2.8.1 + '@smithy/smithy-client@4.12.8': dependencies: '@smithy/core': 3.23.13 @@ -23014,6 +23668,10 @@ snapshots: dependencies: tslib: 2.8.1 + '@smithy/types@4.14.4': + dependencies: + tslib: 2.8.1 + '@smithy/url-parser@4.2.12': dependencies: '@smithy/querystring-parser': 4.2.12 @@ -23433,7 +24091,7 @@ snapshots: transitivePeerDependencies: - supports-color - '@tanstack/router-plugin@1.166.10(@tanstack/react-router@1.167.1(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(vite@5.4.21(@types/node@20.19.13)(less@4.4.1)(lightningcss@1.32.0)(sass@1.93.2)(stylus@0.62.0)(terser@5.46.0))(webpack@5.101.3(@swc/core@1.15.11(@swc/helpers@0.5.17))(esbuild@0.27.3))': + '@tanstack/router-plugin@1.166.10(@tanstack/react-router@1.167.1(react-dom@19.1.0(react@19.1.0))(react@19.1.0))(vite@5.4.21(@types/node@20.19.13)(less@4.4.1)(lightningcss@1.32.0)(sass@1.93.2)(stylus@0.62.0)(terser@5.46.0))(webpack@5.101.3(@swc/core@1.15.11(@swc/helpers@0.5.17))(esbuild@0.27.7))': dependencies: '@babel/core': 7.29.0 '@babel/plugin-syntax-jsx': 7.28.6(@babel/core@7.29.0) @@ -23451,7 +24109,7 @@ snapshots: optionalDependencies: '@tanstack/react-router': 1.167.1(react-dom@19.1.0(react@19.1.0))(react@19.1.0) vite: 5.4.21(@types/node@20.19.13)(less@4.4.1)(lightningcss@1.32.0)(sass@1.93.2)(stylus@0.62.0)(terser@5.46.0) - webpack: 5.101.3(@swc/core@1.15.11(@swc/helpers@0.5.17))(esbuild@0.27.3) + webpack: 5.101.3(@swc/core@1.15.11(@swc/helpers@0.5.17))(esbuild@0.27.7) transitivePeerDependencies: - supports-color @@ -24529,6 +25187,8 @@ snapshots: '@xmldom/xmldom@0.8.11': {} + '@xterm/headless@6.0.0': {} + '@xtuc/ieee754@1.2.0': optional: true @@ -24595,6 +25255,18 @@ snapshots: acorn@8.16.0: {} + acp-http-client@0.4.2(zod@3.25.76): + dependencies: + '@agentclientprotocol/sdk': 0.16.1(zod@3.25.76) + transitivePeerDependencies: + - zod + + acp-http-client@0.4.2(zod@4.3.6): + dependencies: + '@agentclientprotocol/sdk': 0.16.1(zod@4.3.6) + transitivePeerDependencies: + - zod + actor-core@0.6.3(eventsource@3.0.7)(ws@8.19.0): dependencies: cbor-x: 1.6.0 @@ -24751,6 +25423,8 @@ snapshots: normalize-path: 3.0.0 picomatch: 2.3.1 + anynum@1.0.0: {} + arch@2.2.0: {} arg@4.1.3: {} @@ -25409,26 +26083,10 @@ snapshots: '@cbor-extract/cbor-extract-win32-x64': 2.2.0 optional: true - cbor-extract@2.2.2: - dependencies: - node-gyp-build-optional-packages: 5.1.1 - optionalDependencies: - '@cbor-extract/cbor-extract-darwin-arm64': 2.2.2 - '@cbor-extract/cbor-extract-darwin-x64': 2.2.2 - '@cbor-extract/cbor-extract-linux-arm': 2.2.2 - '@cbor-extract/cbor-extract-linux-arm64': 2.2.2 - '@cbor-extract/cbor-extract-linux-x64': 2.2.2 - '@cbor-extract/cbor-extract-win32-x64': 2.2.2 - optional: true - cbor-x@1.6.0: optionalDependencies: cbor-extract: 2.2.0 - cbor-x@1.6.4: - optionalDependencies: - cbor-extract: 2.2.2 - ccount@2.0.1: {} chai@4.5.0: @@ -26601,6 +27259,35 @@ snapshots: '@esbuild/win32-ia32': 0.27.3 '@esbuild/win32-x64': 0.27.3 + esbuild@0.27.7: + optionalDependencies: + '@esbuild/aix-ppc64': 0.27.7 + '@esbuild/android-arm': 0.27.7 + '@esbuild/android-arm64': 0.27.7 + '@esbuild/android-x64': 0.27.7 + '@esbuild/darwin-arm64': 0.27.7 + '@esbuild/darwin-x64': 0.27.7 + '@esbuild/freebsd-arm64': 0.27.7 + '@esbuild/freebsd-x64': 0.27.7 + '@esbuild/linux-arm': 0.27.7 + '@esbuild/linux-arm64': 0.27.7 + '@esbuild/linux-ia32': 0.27.7 + '@esbuild/linux-loong64': 0.27.7 + '@esbuild/linux-mips64el': 0.27.7 + '@esbuild/linux-ppc64': 0.27.7 + '@esbuild/linux-riscv64': 0.27.7 + '@esbuild/linux-s390x': 0.27.7 + '@esbuild/linux-x64': 0.27.7 + '@esbuild/netbsd-arm64': 0.27.7 + '@esbuild/netbsd-x64': 0.27.7 + '@esbuild/openbsd-arm64': 0.27.7 + '@esbuild/openbsd-x64': 0.27.7 + '@esbuild/openharmony-arm64': 0.27.7 + '@esbuild/sunos-x64': 0.27.7 + '@esbuild/win32-arm64': 0.27.7 + '@esbuild/win32-ia32': 0.27.7 + '@esbuild/win32-x64': 0.27.7 + escalade@3.2.0: {} escape-html@1.0.3: {} @@ -27042,12 +27729,24 @@ snapshots: dependencies: path-expression-matcher: 1.2.1 + fast-xml-builder@1.2.0: + dependencies: + path-expression-matcher: 1.5.0 + xml-naming: 0.1.0 + fast-xml-parser@5.5.8: dependencies: fast-xml-builder: 1.1.4 path-expression-matcher: 1.2.1 strnum: 2.2.0 + fast-xml-parser@5.7.3: + dependencies: + '@nodable/entities': 2.2.0 + fast-xml-builder: 1.2.0 + path-expression-matcher: 1.5.0 + strnum: 2.4.0 + fastq@1.20.1: dependencies: reusify: 1.1.0 @@ -27058,16 +27757,16 @@ snapshots: sharp: 0.33.5 xml2js: 0.6.2 - favigo@1.1.0(esbuild@0.27.3)(rollup@4.57.1)(vite@5.4.21(@types/node@20.19.13)(less@4.4.1)(lightningcss@1.32.0)(sass@1.93.2)(stylus@0.62.0)(terser@5.46.0))(webpack@5.101.3(@swc/core@1.15.11(@swc/helpers@0.5.17))(esbuild@0.27.3)): + favigo@1.1.0(esbuild@0.27.7)(rollup@4.57.1)(vite@5.4.21(@types/node@20.19.13)(less@4.4.1)(lightningcss@1.32.0)(sass@1.93.2)(stylus@0.62.0)(terser@5.46.0))(webpack@5.101.3(@swc/core@1.15.11(@swc/helpers@0.5.17))(esbuild@0.27.7)): dependencies: favicons: 7.2.0 sharp: 0.33.5 unplugin: 1.16.1 optionalDependencies: - esbuild: 0.27.3 + esbuild: 0.27.7 rollup: 4.57.1 vite: 5.4.21(@types/node@20.19.13)(less@4.4.1)(lightningcss@1.32.0)(sass@1.93.2)(stylus@0.62.0)(terser@5.46.0) - webpack: 5.101.3(@swc/core@1.15.11(@swc/helpers@0.5.17))(esbuild@0.27.3) + webpack: 5.101.3(@swc/core@1.15.11(@swc/helpers@0.5.17))(esbuild@0.27.7) fb-dotslash@0.5.8: {} @@ -27334,6 +28033,17 @@ snapshots: fuse.js@7.1.0: {} + gaxios@6.7.1: + dependencies: + extend: 3.0.2 + https-proxy-agent: 7.0.6 + is-stream: 2.0.1 + node-fetch: 2.7.0 + uuid: 9.0.1 + transitivePeerDependencies: + - encoding + - supports-color + gaxios@7.1.4: dependencies: extend: 3.0.2 @@ -27342,6 +28052,15 @@ snapshots: transitivePeerDependencies: - supports-color + gcp-metadata@6.1.1: + dependencies: + gaxios: 6.7.1 + google-logging-utils: 0.0.2 + json-bigint: 1.0.0 + transitivePeerDependencies: + - encoding + - supports-color + gcp-metadata@8.1.2: dependencies: gaxios: 7.1.4 @@ -27498,14 +28217,56 @@ snapshots: transitivePeerDependencies: - supports-color + google-auth-library@9.15.1: + dependencies: + base64-js: 1.5.1 + ecdsa-sig-formatter: 1.0.11 + gaxios: 6.7.1 + gcp-metadata: 6.1.1 + gtoken: 7.1.0 + jws: 4.0.1 + transitivePeerDependencies: + - encoding + - supports-color + + google-logging-utils@0.0.2: {} + google-logging-utils@1.1.3: {} + googleapis-common@7.2.0: + dependencies: + extend: 3.0.2 + gaxios: 6.7.1 + google-auth-library: 9.15.1 + qs: 6.14.1 + url-template: 2.0.8 + uuid: 9.0.1 + transitivePeerDependencies: + - encoding + - supports-color + + googleapis@144.0.0: + dependencies: + google-auth-library: 9.15.1 + googleapis-common: 7.2.0 + transitivePeerDependencies: + - encoding + - supports-color + gopd@1.2.0: {} graceful-fs@4.2.11: {} graphql@16.14.0: {} + gtoken@7.1.0: + dependencies: + gaxios: 6.7.1 + jws: 4.0.1 + transitivePeerDependencies: + - encoding + - supports-color + h3@1.15.4: dependencies: cookie-es: 1.2.2 @@ -30239,6 +31000,8 @@ snapshots: path-expression-matcher@1.2.1: {} + path-expression-matcher@1.5.0: {} + path-is-absolute@1.0.1: {} path-is-inside@1.0.2: {} @@ -31452,6 +32215,26 @@ snapshots: safer-buffer@2.1.2: {} + sandbox-agent@0.4.2(get-port@7.1.0)(zod@3.25.76): + dependencies: + '@sandbox-agent/cli-shared': 0.4.2 + acp-http-client: 0.4.2(zod@3.25.76) + optionalDependencies: + '@sandbox-agent/cli': 0.4.2 + get-port: 7.1.0 + transitivePeerDependencies: + - zod + + sandbox-agent@0.4.2(get-port@7.1.0)(zod@4.3.6): + dependencies: + '@sandbox-agent/cli-shared': 0.4.2 + acp-http-client: 0.4.2(zod@4.3.6) + optionalDependencies: + '@sandbox-agent/cli': 0.4.2 + get-port: 7.1.0 + transitivePeerDependencies: + - zod + sass@1.93.2: dependencies: chokidar: 4.0.3 @@ -31476,11 +32259,6 @@ snapshots: ajv-formats: 2.1.1(ajv@8.17.1) ajv-keywords: 5.1.0(ajv@8.17.1) - secure-exec@0.2.1: - dependencies: - '@secure-exec/core': 0.2.1 - '@secure-exec/nodejs': 0.2.1 - secure-exec@https://pkg.pr.new/rivet-dev/secure-exec@7659aba: dependencies: buffer: 6.0.3 @@ -31960,6 +32738,10 @@ snapshots: strnum@2.2.0: {} + strnum@2.4.0: + dependencies: + anynum: 1.0.0 + strtok3@10.3.4: dependencies: '@tokenizer/token': 0.3.0 @@ -32125,16 +32907,16 @@ snapshots: ansi-escapes: 4.3.2 supports-hyperlinks: 2.3.0 - terser-webpack-plugin@5.4.0(@swc/core@1.15.11(@swc/helpers@0.5.17))(esbuild@0.27.3)(webpack@5.101.3(@swc/core@1.15.11(@swc/helpers@0.5.17))(esbuild@0.27.3)): + terser-webpack-plugin@5.4.0(@swc/core@1.15.11(@swc/helpers@0.5.17))(esbuild@0.27.7)(webpack@5.101.3(@swc/core@1.15.11(@swc/helpers@0.5.17))(esbuild@0.27.7)): dependencies: '@jridgewell/trace-mapping': 0.3.31 jest-worker: 27.5.1 schema-utils: 4.3.3 terser: 5.46.0 - webpack: 5.101.3(@swc/core@1.15.11(@swc/helpers@0.5.17))(esbuild@0.27.3) + webpack: 5.101.3(@swc/core@1.15.11(@swc/helpers@0.5.17))(esbuild@0.27.7) optionalDependencies: '@swc/core': 1.15.11(@swc/helpers@0.5.17) - esbuild: 0.27.3 + esbuild: 0.27.7 optional: true terser@5.46.0: @@ -32801,6 +33583,8 @@ snapshots: querystringify: 2.2.0 requires-port: 1.0.0 + url-template@2.0.8: {} + url@0.11.4: dependencies: punycode: 1.4.1 @@ -32852,6 +33636,8 @@ snapshots: uuid@7.0.3: {} + uuid@9.0.1: {} + v8-compile-cache-lib@3.0.1: {} validate-npm-package-name@5.0.1: {} @@ -33591,8 +34377,6 @@ snapshots: web-streams-polyfill@4.0.0-beta.3: {} - web-streams-polyfill@4.2.0: {} - web-vitals@4.2.4: {} webidl-conversions@3.0.1: {} @@ -33610,7 +34394,7 @@ snapshots: webpack-virtual-modules@0.6.2: {} - webpack@5.101.3(@swc/core@1.15.11(@swc/helpers@0.5.17))(esbuild@0.27.3): + webpack@5.101.3(@swc/core@1.15.11(@swc/helpers@0.5.17))(esbuild@0.27.7): dependencies: '@types/eslint-scope': 3.7.7 '@types/estree': 1.0.8 @@ -33634,7 +34418,7 @@ snapshots: neo-async: 2.6.2 schema-utils: 4.3.3 tapable: 2.3.0 - terser-webpack-plugin: 5.4.0(@swc/core@1.15.11(@swc/helpers@0.5.17))(esbuild@0.27.3)(webpack@5.101.3(@swc/core@1.15.11(@swc/helpers@0.5.17))(esbuild@0.27.3)) + terser-webpack-plugin: 5.4.0(@swc/core@1.15.11(@swc/helpers@0.5.17))(esbuild@0.27.7)(webpack@5.101.3(@swc/core@1.15.11(@swc/helpers@0.5.17))(esbuild@0.27.7)) watchpack: 2.5.1 webpack-sources: 3.3.4 transitivePeerDependencies: @@ -33746,6 +34530,8 @@ snapshots: dependencies: sax: 1.4.4 + xml-naming@0.1.0: {} + xml2js@0.6.0: dependencies: sax: 1.5.0 diff --git a/rivetkit-rust/packages/rivetkit-agent-os/Cargo.toml b/rivetkit-rust/packages/rivetkit-agent-os/Cargo.toml index 4cbb8fc30e..632f753b5b 100644 --- a/rivetkit-rust/packages/rivetkit-agent-os/Cargo.toml +++ b/rivetkit-rust/packages/rivetkit-agent-os/Cargo.toml @@ -6,11 +6,13 @@ license.workspace = true edition.workspace = true [dependencies] -agent-os-client = { path = "../../../ext/agent-os/crates/client" } +agent-os-client = { path = "/home/nathan/a5/crates/client" } anyhow.workspace = true base64.workspace = true +bytes = "1" ciborium.workspace = true futures.workspace = true +http = "1" rivet-error.workspace = true rivetkit = { path = "../rivetkit" } rivetkit-core = { path = "../rivetkit-core" } @@ -19,6 +21,7 @@ serde_bytes.workspace = true serde_json.workspace = true tokio.workspace = true tracing.workspace = true +uuid.workspace = true [dev-dependencies] base64.workspace = true diff --git a/rivetkit-rust/packages/rivetkit-agent-os/src/actions/cron.rs b/rivetkit-rust/packages/rivetkit-agent-os/src/actions/cron.rs new file mode 100644 index 0000000000..ba52b312df --- /dev/null +++ b/rivetkit-rust/packages/rivetkit-agent-os/src/actions/cron.rs @@ -0,0 +1,93 @@ +//! Cron actions. The client's `CronJobOptions` / `CronAction` / +//! `CronJobInfo` are not serde types (they carry closures), so we define +//! serde DTOs here and map to/from the client types. + +use agent_os_client::{AgentOs, CronAction, CronJobOptions, CronOverlap}; +use anyhow::{Result, anyhow}; +use serde::{Deserialize, Serialize}; + +/// `{ type: "exec", command, args }` | `{ type: "session", agentType, prompt }`. +#[derive(Debug, Deserialize)] +#[serde(tag = "type", rename_all = "camelCase")] +pub enum CronActionDto { + Exec { + command: String, + #[serde(default)] + args: Vec, + }, + Session { + agent_type: String, + prompt: String, + }, +} + +/// Options object for `scheduleCron(...)`. +#[derive(Debug, Deserialize)] +#[serde(rename_all = "camelCase")] +pub struct CronJobOptionsDto { + #[serde(default)] + pub id: Option, + pub schedule: String, + pub action: CronActionDto, + #[serde(default)] + pub overlap: Option, +} + +/// `{ id }` returned by `scheduleCron`. +#[derive(Debug, Serialize)] +#[serde(rename_all = "camelCase")] +pub struct ScheduledCronDto { + pub id: String, +} + +/// One entry returned by `listCronJobs`. `last_run` / `next_run` are +/// epoch-millis timestamps serialized as `f64` so they cross the napi +/// boundary as JS `number`s (not `BigInt`s), matching the core API. +#[derive(Debug, Serialize)] +#[serde(rename_all = "camelCase")] +pub struct CronJobInfoDto { + pub id: String, + pub schedule: String, + pub overlap: CronOverlap, + pub last_run: Option, + pub next_run: Option, +} + +fn to_action(dto: CronActionDto) -> CronAction { + match dto { + CronActionDto::Exec { command, args } => CronAction::Exec { command, args }, + CronActionDto::Session { agent_type, prompt } => CronAction::Session { + agent_type, + prompt, + options: None, + }, + } +} + +pub fn schedule_cron(vm: &AgentOs, dto: CronJobOptionsDto) -> Result { + let options = CronJobOptions { + id: dto.id, + schedule: dto.schedule, + action: to_action(dto.action), + overlap: dto.overlap, + }; + let handle = vm.schedule_cron(options).map_err(|e| anyhow!(e))?; + Ok(ScheduledCronDto { id: handle.id }) +} + +pub fn list_cron_jobs(vm: &AgentOs) -> Vec { + vm.list_cron_jobs() + .into_iter() + .map(|info| CronJobInfoDto { + id: info.id, + schedule: info.schedule, + overlap: info.overlap, + last_run: info.last_run.map(|t| t.timestamp_millis() as f64), + next_run: info.next_run.map(|t| t.timestamp_millis() as f64), + }) + .collect() +} + +pub fn cancel_cron_job(vm: &AgentOs, id: &str) { + vm.cancel_cron_job(id); +} diff --git a/rivetkit-rust/packages/rivetkit-agent-os/src/actions/filesystem.rs b/rivetkit-rust/packages/rivetkit-agent-os/src/actions/filesystem.rs index 57f1523a32..232e6e5ea2 100644 --- a/rivetkit-rust/packages/rivetkit-agent-os/src/actions/filesystem.rs +++ b/rivetkit-rust/packages/rivetkit-agent-os/src/actions/filesystem.rs @@ -52,11 +52,18 @@ pub async fn move_path(vm: &AgentOs, from: &str, to: &str) -> Result<()> { vm.move_path(from, to).await } -/// `deleteFile(path)` — port of [`AgentOs::delete`]. Non-recursive by -/// default; matches JS `deleteFile` semantics (use `delete` for the -/// recursive variant when added). -pub async fn delete_file(vm: &AgentOs, path: &str) -> Result<()> { - vm.delete(path, DeleteOptions { recursive: false }).await +/// Options for `deleteFile`. TS sends `{ recursive?: boolean }`. +#[derive(Debug, Default, Deserialize)] +#[serde(rename_all = "camelCase")] +pub struct DeleteOptionsArg { + #[serde(default)] + pub recursive: bool, +} + +/// `deleteFile(path, options?)` — port of [`AgentOs::delete`]. Honors the +/// `recursive` option so directory deletes match JS semantics. +pub async fn delete_file(vm: &AgentOs, path: &str, recursive: bool) -> Result<()> { + vm.delete(path, DeleteOptions { recursive }).await } /// `writeFiles(entries)` — port of [`AgentOs::write_files`]. Per-entry diff --git a/rivetkit-rust/packages/rivetkit-agent-os/src/actions/mod.rs b/rivetkit-rust/packages/rivetkit-agent-os/src/actions/mod.rs index 19856c79f7..9cde20317d 100644 --- a/rivetkit-rust/packages/rivetkit-agent-os/src/actions/mod.rs +++ b/rivetkit-rust/packages/rivetkit-agent-os/src/actions/mod.rs @@ -6,8 +6,12 @@ //! `JSON_COMPAT_UINT8_ARRAY` convention thanks to `Action::ok` running //! through `encode_json_compat`. +pub mod cron; pub mod filesystem; +pub mod network; +pub mod preview; pub mod process; +pub mod session; use agent_os_client::AgentOs; use anyhow::{Result, anyhow}; @@ -18,7 +22,15 @@ use filesystem::{WriteFileContent, WriteFilesEntryArg}; /// Dispatch one action against a live VM. Each arm decodes its args, /// calls the helper, and replies through `action.ok` / `action.err`. -pub async fn dispatch(vm: &AgentOs, action: Action) { +/// +/// `previews` is the actor-scoped signed-preview-URL table. Only the +/// `createSignedPreviewUrl` / `expireSignedPreviewUrl` arms touch it; the +/// run loop also reads it when proxying `/preview/{token}` HTTP requests. +pub async fn dispatch( + vm: &AgentOs, + previews: &mut preview::PreviewStore, + action: Action, +) { let name = action.name().to_owned(); match name.as_str() { "readFile" => { @@ -103,9 +115,20 @@ pub async fn dispatch(vm: &AgentOs, action: Action) { } } "deleteFile" => { - let args: Result<(String,)> = action.decode_as(); - match args { - Ok((path,)) => match filesystem::delete_file(vm, &path).await { + // TS may omit the trailing options object, so the CBOR array has + // length 1 or 2. Try the two-arg shape first, then fall back to + // the one-arg shape (ciborium rejects a short array for a fixed + // tuple, so a plain `Option` tuple is not enough). + let decoded = action + .decode_as::<(String, Option)>() + .map(|(path, options)| (path, options.unwrap_or_default().recursive)) + .or_else(|_| { + action + .decode_as::<(String,)>() + .map(|(path,)| (path, false)) + }); + match decoded { + Ok((path, recursive)) => match filesystem::delete_file(vm, &path, recursive).await { Ok(()) => action.ok(&()), Err(error) => action.err(error), }, @@ -237,6 +260,102 @@ pub async fn dispatch(vm: &AgentOs, action: Action) { Err(error) => action.err(error), } } + "vmFetch" => { + // Trailing options object is optional (length 2 or 3). + let decoded = action + .decode_as::<(u16, String, Option)>() + .map(|(port, url, options)| (port, url, options.unwrap_or_default())) + .or_else(|_| { + action + .decode_as::<(u16, String)>() + .map(|(port, url)| (port, url, network::FetchOptions::default())) + }); + match decoded { + Ok((port, url, options)) => match network::fetch(vm, port, &url, options).await { + Ok(response) => action.ok(&response), + Err(error) => action.err(error), + }, + Err(error) => action.err(error), + } + } + "scheduleCron" => { + let args: Result<(cron::CronJobOptionsDto,)> = action.decode_as(); + match args { + Ok((options,)) => match cron::schedule_cron(vm, options) { + Ok(handle) => action.ok(&handle), + Err(error) => action.err(error), + }, + Err(error) => action.err(error), + } + } + "listCronJobs" => action.ok(&cron::list_cron_jobs(vm)), + "cancelCronJob" => { + let args: Result<(String,)> = action.decode_as(); + match args { + Ok((id,)) => { + cron::cancel_cron_job(vm, &id); + action.ok(&()); + } + Err(error) => action.err(error), + } + } + "createSession" => { + // Trailing options object is optional (length 1 or 2). + let decoded = action + .decode_as::<(String, Option)>() + .map(|(agent_type, options)| (agent_type, options.unwrap_or_default())) + .or_else(|_| { + action + .decode_as::<(String,)>() + .map(|(agent_type,)| (agent_type, session::CreateSessionOptionsDto::default())) + }); + match decoded { + Ok((agent_type, options)) => { + match session::create_session(vm, &agent_type, options).await { + Ok(id) => action.ok(&id), + Err(error) => action.err(error), + } + } + Err(error) => action.err(error), + } + } + "sendPrompt" => { + let args: Result<(String, String)> = action.decode_as(); + match args { + Ok((session_id, text)) => match session::send_prompt(vm, &session_id, &text).await { + Ok(result) => action.ok(&result), + Err(error) => action.err(error), + }, + Err(error) => action.err(error), + } + } + "closeSession" => { + let args: Result<(String,)> = action.decode_as(); + match args { + Ok((session_id,)) => match session::close_session(vm, &session_id) { + Ok(()) => action.ok(&()), + Err(error) => action.err(error), + }, + Err(error) => action.err(error), + } + } + "createSignedPreviewUrl" => { + let args: Result<(u16,)> = action.decode_as(); + match args { + Ok((port,)) => action.ok(&preview::create(previews, port)), + Err(error) => action.err(error), + } + } + "expireSignedPreviewUrl" => { + let args: Result<(String,)> = action.decode_as(); + match args { + Ok((token,)) => { + preview::expire(previews, &token); + action.ok(&()); + } + Err(error) => action.err(error), + } + } _ => action.err(not_implemented(&name)), } } diff --git a/rivetkit-rust/packages/rivetkit-agent-os/src/actions/network.rs b/rivetkit-rust/packages/rivetkit-agent-os/src/actions/network.rs new file mode 100644 index 0000000000..98407ac27d --- /dev/null +++ b/rivetkit-rust/packages/rivetkit-agent-os/src/actions/network.rs @@ -0,0 +1,70 @@ +//! Network actions: `vmFetch` routes an HTTP request to a service +//! listening on a guest loopback port via [`AgentOs::fetch`]. + +use std::collections::BTreeMap; + +use agent_os_client::AgentOs; +use anyhow::Result; +use bytes::Bytes; +use serde::{Deserialize, Serialize}; + +/// Optional request shape for `vmFetch(port, url, options?)`. +#[derive(Debug, Default, Deserialize)] +#[serde(rename_all = "camelCase")] +pub struct FetchOptions { + #[serde(default)] + pub method: Option, + #[serde(default)] + pub headers: Option>, + #[serde(default)] + pub body: Option>, +} + +/// JSON-serializable response returned to the TS client. `body` is wrapped +/// via `serde_bytes` so the rivetkit `JsonCompatAdapter` re-encodes it as +/// `["$Uint8Array", base64]`, which the TS client decodes back to a +/// `Uint8Array` (the shape the example's `TextDecoder` expects). +#[derive(Debug, Serialize)] +#[serde(rename_all = "camelCase")] +pub struct FetchResponseDto { + pub status: u16, + pub headers: BTreeMap, + pub body: serde_bytes::ByteBuf, +} + +/// `vmFetch(port, url, options?)` — port of [`AgentOs::fetch`]. +pub async fn fetch( + vm: &AgentOs, + port: u16, + url: &str, + options: FetchOptions, +) -> Result { + let method = options.method.as_deref().unwrap_or("GET"); + let mut builder = http::Request::builder().method(method).uri(url); + if let Some(headers) = &options.headers { + for (name, value) in headers { + builder = builder.header(name.as_str(), value.as_str()); + } + } + let body = Bytes::from(options.body.unwrap_or_default()); + let request = builder.body(body)?; + + let response = vm.fetch(port, request).await?; + let status = response.status().as_u16(); + let headers = response + .headers() + .iter() + .map(|(name, value)| { + ( + name.as_str().to_owned(), + value.to_str().unwrap_or_default().to_owned(), + ) + }) + .collect(); + let body = serde_bytes::ByteBuf::from(response.into_body().to_vec()); + Ok(FetchResponseDto { + status, + headers, + body, + }) +} diff --git a/rivetkit-rust/packages/rivetkit-agent-os/src/actions/preview.rs b/rivetkit-rust/packages/rivetkit-agent-os/src/actions/preview.rs new file mode 100644 index 0000000000..1587c7e564 --- /dev/null +++ b/rivetkit-rust/packages/rivetkit-agent-os/src/actions/preview.rs @@ -0,0 +1,77 @@ +//! Preview URL actions. These are a rivetkit-actor-layer feature, not part +//! of the core `AgentOs` API: they issue a signed, time-limited token that +//! maps an external request path to a guest loopback port. The actor's HTTP +//! event handler (`crate::run`) proxies `/preview/{token}/...` requests to +//! that port via [`agent_os_client::AgentOs::fetch`]. + +use std::collections::HashMap; +use std::time::{SystemTime, UNIX_EPOCH}; + +use serde::Serialize; +use uuid::Uuid; + +/// Default lifetime of a signed preview URL: one hour. +const PREVIEW_TTL_MS: i64 = 60 * 60 * 1000; + +/// One issued preview token: the guest port it grants access to and the +/// epoch-millis instant after which it is no longer valid. +#[derive(Debug, Clone, Copy)] +pub struct PreviewEntry { + pub port: u16, + pub expires_at: i64, +} + +/// Per-actor table of live preview tokens. Owned by the run loop and mutated +/// only from the single-threaded event dispatch, so no locking is required. +pub type PreviewStore = HashMap; + +/// `{ path, token, port, expiresAt }` returned by `createSignedPreviewUrl`. +/// +/// `expires_at` is an epoch-millis timestamp serialized as `f64` so it +/// crosses the napi boundary as a JS `number` (not a `BigInt`), matching the +/// core API and the example's `new Date(expiresAt)` usage. Millisecond +/// timestamps are exactly representable in `f64` well past the year 10000. +#[derive(Debug, Serialize)] +#[serde(rename_all = "camelCase")] +pub struct SignedPreviewUrlDto { + pub path: String, + pub token: String, + pub port: u16, + pub expires_at: f64, +} + +fn now_ms() -> i64 { + SystemTime::now() + .duration_since(UNIX_EPOCH) + .map(|d| d.as_millis() as i64) + .unwrap_or(0) +} + +/// Issue a signed preview URL for `port`, valid for [`PREVIEW_TTL_MS`]. +pub fn create(store: &mut PreviewStore, port: u16) -> SignedPreviewUrlDto { + let token = Uuid::new_v4().to_string(); + let expires_at = now_ms() + PREVIEW_TTL_MS; + store.insert(token.clone(), PreviewEntry { port, expires_at }); + SignedPreviewUrlDto { + path: format!("/preview/{token}"), + token, + port, + expires_at: expires_at as f64, + } +} + +/// Revoke a previously issued preview token. Idempotent. +pub fn expire(store: &mut PreviewStore, token: &str) { + store.remove(token); +} + +/// Resolve `token` to its target port if it exists and has not expired. +/// Expired tokens are pruned as a side effect. +pub fn resolve(store: &mut PreviewStore, token: &str) -> Option { + let entry = *store.get(token)?; + if entry.expires_at <= now_ms() { + store.remove(token); + return None; + } + Some(entry.port) +} diff --git a/rivetkit-rust/packages/rivetkit-agent-os/src/actions/session.rs b/rivetkit-rust/packages/rivetkit-agent-os/src/actions/session.rs new file mode 100644 index 0000000000..053402a1a5 --- /dev/null +++ b/rivetkit-rust/packages/rivetkit-agent-os/src/actions/session.rs @@ -0,0 +1,64 @@ +//! Agent session actions: create an ACP agent session, send prompts, +//! and close it. Ports of [`AgentOs::create_session`] / `prompt` / +//! `close_session`. + +use std::collections::BTreeMap; + +use agent_os_client::{AgentOs, CreateSessionOptions}; +use anyhow::{Result, anyhow}; +use serde::{Deserialize, Serialize}; + +/// Options object for `createSession(agentType, options?)`. +#[derive(Debug, Default, Deserialize)] +#[serde(rename_all = "camelCase")] +pub struct CreateSessionOptionsDto { + #[serde(default)] + pub cwd: Option, + #[serde(default)] + pub env: BTreeMap, + #[serde(default)] + pub skip_os_instructions: bool, + #[serde(default)] + pub additional_instructions: Option, +} + +/// `{ sessionId }` returned by `createSession`. +#[derive(Debug, Serialize)] +#[serde(rename_all = "camelCase")] +pub struct SessionIdDto { + pub session_id: String, +} + +/// Result of `sendPrompt` exposed to the TS client. +#[derive(Debug, Serialize)] +#[serde(rename_all = "camelCase")] +pub struct PromptResultDto { + pub text: String, +} + +pub async fn create_session( + vm: &AgentOs, + agent_type: &str, + dto: CreateSessionOptionsDto, +) -> Result { + let options = CreateSessionOptions { + cwd: dto.cwd, + env: dto.env, + skip_os_instructions: dto.skip_os_instructions, + additional_instructions: dto.additional_instructions, + ..CreateSessionOptions::default() + }; + let session_id = vm.create_session(agent_type, options).await?; + Ok(SessionIdDto { + session_id: session_id.session_id, + }) +} + +pub async fn send_prompt(vm: &AgentOs, session_id: &str, text: &str) -> Result { + let result = vm.prompt(session_id, text).await?; + Ok(PromptResultDto { text: result.text }) +} + +pub fn close_session(vm: &AgentOs, session_id: &str) -> Result<()> { + vm.close_session(session_id).map_err(|e| anyhow!(e)) +} diff --git a/rivetkit-rust/packages/rivetkit-agent-os/src/run.rs b/rivetkit-rust/packages/rivetkit-agent-os/src/run.rs index 3cbd8656f9..2b776b9bea 100644 --- a/rivetkit-rust/packages/rivetkit-agent-os/src/run.rs +++ b/rivetkit-rust/packages/rivetkit-agent-os/src/run.rs @@ -2,14 +2,17 @@ //! that needs it, tears it down on `Sleep` / `Destroy`, dispatches //! actions through [`actions::dispatch`]. +use std::collections::HashMap; use std::sync::Arc; use agent_os_client::AgentOs; use anyhow::{Result, anyhow}; -use rivetkit::{Ctx, Event, Start}; +use bytes::Bytes; +use rivetkit::{Ctx, Event, HttpCall, Response, Start}; use serde::Serialize; use crate::actions; +use crate::actions::preview::{self, PreviewStore}; use crate::actor::AgentOsActor; use crate::config::AgentOsActorConfig; @@ -31,6 +34,7 @@ pub async fn run( mut start: Start, ) -> Result<()> { let mut vm: Option = None; + let mut previews: PreviewStore = PreviewStore::new(); while let Some(event) = start.events.recv().await { match event { @@ -40,9 +44,9 @@ pub async fn run( continue; } let handle = vm.as_ref().expect("vm present after ensure_vm"); - actions::dispatch(handle, action).await; + actions::dispatch(handle, &mut previews, action).await; } - Event::Http(http) => http.reply_status(404), + Event::Http(http) => proxy_preview(vm.as_ref(), &mut previews, http).await, Event::QueueSend(queue) => queue.err(anyhow!("queue send not supported")), Event::WebSocketOpen(ws) => ws.reject(anyhow!("websocket not supported")), Event::ConnOpen(conn) => conn.accept(()), @@ -69,6 +73,74 @@ pub async fn run( Ok(()) } +/// Proxy a `/preview/{token}/...` HTTP request to the guest port the token +/// was issued for. The first path segment after `/preview/` is the token; +/// the remainder is forwarded to the guest service via [`AgentOs::fetch`]. +/// An unmatched path, an unknown or expired token, or a VM that is not yet +/// up all reply `404`. +async fn proxy_preview(vm: Option<&AgentOs>, previews: &mut PreviewStore, http: HttpCall) { + let path = http + .request() + .map(|request| request.uri().path().to_owned()) + .unwrap_or_default(); + let Some(rest) = path.strip_prefix("/preview/") else { + http.reply_status(404); + return; + }; + let (token, forward_path) = match rest.split_once('/') { + Some((token, tail)) => (token.to_owned(), format!("/{tail}")), + None => (rest.to_owned(), "/".to_owned()), + }; + + let Some(port) = preview::resolve(previews, &token) else { + http.reply_status(404); + return; + }; + let Some(vm) = vm else { + http.reply_status(404); + return; + }; + + let (request, reply) = match http.into_request() { + Ok(pair) => pair, + Err(error) => { + tracing::warn!(?error, "preview request decode failed"); + return; + } + }; + let forward_uri: http::Uri = match forward_path.parse() { + Ok(uri) => uri, + Err(error) => { + reply.reply_err(anyhow!("invalid preview path: {error}")); + return; + } + }; + let (parts, body) = request.into_inner().into_parts(); + let mut forwarded = http::Request::new(Bytes::from(body)); + *forwarded.method_mut() = parts.method; + *forwarded.uri_mut() = forward_uri; + *forwarded.headers_mut() = parts.headers; + + match vm.fetch(port, forwarded).await { + Ok(response) => { + let status = response.status().as_u16(); + let mut headers: HashMap = HashMap::new(); + for (name, value) in response.headers().iter() { + headers.insert( + name.as_str().to_owned(), + String::from_utf8_lossy(value.as_bytes()).into_owned(), + ); + } + let body = response.into_body().to_vec(); + match Response::from_parts(status, headers, body) { + Ok(response) => reply.reply(response), + Err(error) => reply.reply_err(error), + } + } + Err(error) => reply.reply_err(error), + } +} + /// Bring up the VM if not already running. Broadcasts `vmBooted` on /// first success. async fn ensure_vm( diff --git a/rivetkit-typescript/packages/rivetkit-napi/Cargo.toml b/rivetkit-typescript/packages/rivetkit-napi/Cargo.toml index 1e0d79b13f..65057c2b32 100644 --- a/rivetkit-typescript/packages/rivetkit-napi/Cargo.toml +++ b/rivetkit-typescript/packages/rivetkit-napi/Cargo.toml @@ -30,7 +30,7 @@ http.workspace = true rivet-error.workspace = true rivetkit-core = { workspace = true, features = ["sqlite"] } rivetkit-agent-os = { path = "../../../rivetkit-rust/packages/rivetkit-agent-os" } -agent-os-client = { path = "../../../ext/agent-os/crates/client" } +agent-os-client = { path = "/home/nathan/a5/crates/client" } [build-dependencies] napi-build = "2" diff --git a/rivetkit-typescript/packages/rivetkit-napi/index.d.ts b/rivetkit-typescript/packages/rivetkit-napi/index.d.ts index 28c58e3c36..411ab25c85 100644 --- a/rivetkit-typescript/packages/rivetkit-napi/index.d.ts +++ b/rivetkit-typescript/packages/rivetkit-napi/index.d.ts @@ -87,6 +87,13 @@ export interface NapiAgentOsOptions { * fail loud (enforced by `deny_unknown_fields`). */ configJson?: string + /** + * Absolute path to the prebuilt `agent-os-sidecar` binary, resolved on + * the TypeScript side from the `@rivet-dev/agent-os-sidecar` npm package. + * Forwarded to the agent-os client via its `AGENT_OS_SIDECAR_BIN` env so + * the client spawns the bundled binary instead of relying on `PATH`. + */ + sidecarBinaryPath?: string } export interface JsBindParam { kind: string diff --git a/rivetkit-typescript/packages/rivetkit-napi/src/agent_os.rs b/rivetkit-typescript/packages/rivetkit-napi/src/agent_os.rs index 782cf61e69..1a53e2ced7 100644 --- a/rivetkit-typescript/packages/rivetkit-napi/src/agent_os.rs +++ b/rivetkit-typescript/packages/rivetkit-napi/src/agent_os.rs @@ -23,6 +23,11 @@ pub struct NapiAgentOsOptions { /// are intentionally absent; passing them in the JSON envelope must /// fail loud (enforced by `deny_unknown_fields`). pub config_json: Option, + /// Absolute path to the prebuilt `agent-os-sidecar` binary, resolved on + /// the TypeScript side from the `@rivet-dev/agent-os-sidecar` npm package. + /// Forwarded to the agent-os client via its `AGENT_OS_SIDECAR_BIN` env so + /// the client spawns the bundled binary instead of relying on `PATH`. + pub sidecar_binary_path: Option, } /// Serializable mirror of [`AgentOsConfig`] for the Phase 1b minimal scope. @@ -63,6 +68,21 @@ impl AgentOsConfigJson { pub(crate) fn parse_agent_os_options( options: NapiAgentOsOptions, ) -> napi::Result { + // Forward the npm-resolved sidecar binary path to the agent-os client. The + // client reads `AGENT_OS_SIDECAR_BIN` when spawning the native sidecar, so + // setting it here makes the bundled binary authoritative for this process. + if let Some(path) = options.sidecar_binary_path.as_deref() { + if !path.is_empty() { + // SAFETY: runs once during factory construction at registry setup, + // before any VM (and thus any agent-os client thread that reads this + // var via `std::env::var`) is created. No other code reads + // `AGENT_OS_SIDECAR_BIN` concurrently with this write. + unsafe { + std::env::set_var("AGENT_OS_SIDECAR_BIN", path); + } + } + } + let parsed: AgentOsConfigJson = match options.config_json.as_deref() { Some(json) => serde_json::from_str(json).map_err(|error| { napi_anyhow_error( diff --git a/rivetkit-typescript/packages/rivetkit/package.json b/rivetkit-typescript/packages/rivetkit/package.json index e163a3a133..a0876af0f6 100644 --- a/rivetkit-typescript/packages/rivetkit/package.json +++ b/rivetkit-typescript/packages/rivetkit/package.json @@ -181,7 +181,7 @@ "@hono/node-server": "^1.18.2", "@hono/node-ws": "^1.1.1", "@hono/zod-openapi": "^1.1.5", - "@rivet-dev/agent-os-core": "^0.1.1", + "@rivet-dev/agent-os-core": "0.0.0-claude-rust-review-and-runtime-fixes.5955345", "@rivetkit/bare-ts": "^0.6.2", "@rivetkit/engine-cli": "workspace:*", "@rivetkit/engine-envoy-protocol": "workspace:*", @@ -200,13 +200,14 @@ "pino": "^9.5.0", "uuid": "^12.0.0", "vbare": "^0.0.4", - "zod": "^4.1.0" + "zod": "^4.1.0", + "@rivet-dev/agent-os-sidecar": "0.0.0-claude-rust-review-and-runtime-fixes.5955345" }, "devDependencies": { "@biomejs/biome": "^2.3", "@copilotkit/llmock": "^1.6.0", "@rivet-dev/agent-os-common": "*", - "@rivet-dev/agent-os-pi": "^0.1.1", + "@rivet-dev/agent-os-pi": "0.0.0-claude-rust-review-and-runtime-fixes.5955345", "@standard-schema/spec": "^1.0.0", "@types/invariant": "^2", "@types/node": "^22.13.1", diff --git a/rivetkit-typescript/packages/rivetkit/src/agent-os/actor/index.ts b/rivetkit-typescript/packages/rivetkit/src/agent-os/actor/index.ts index 02ff78f2e3..44d3203c2d 100644 --- a/rivetkit-typescript/packages/rivetkit/src/agent-os/actor/index.ts +++ b/rivetkit-typescript/packages/rivetkit/src/agent-os/actor/index.ts @@ -8,6 +8,7 @@ * configuration and hands it across the bridge. */ +import { getSidecarPath } from "@rivet-dev/agent-os-sidecar"; import { actor, type ActorDefinition } from "@/actor/mod"; import type { DatabaseProvider, RawAccess } from "@/common/database/config"; import type { @@ -27,25 +28,61 @@ import type { AgentOsActorState, AgentOsActorVars } from "../types"; * uses `deny_unknown_fields`, so the envelope must stay in lock-step * with `agent_os.rs::AgentOsConfigJson`. * - * `software` is NOT threaded yet. Investigation in 2026-06 showed that - * even when an absolute `packageDir` / `commandDir` is forwarded as the - * Rust-side `package` field (and `Path::join` correctly produces a - * valid `root`), the agent-os-client Rust crate's `ConfigureVm` call - * passes `mounts: Vec::new()` to the sidecar. Software descriptors get - * registered but the wasm command directories are never mounted at the - * guest filesystem path (`/__agentos/commands/{N}/`) that - * `discover_command_guest_paths` reads. The TS port had software → mount - * mapping that the Rust port hasn't reproduced. Fixing this requires - * either modifying `ext/agent-os/crates/client/src/agent_os.rs` to build - * mount descriptors from software inputs, or building those mounts - * ourselves in `rivetkit-agent-os::run::ensure_vm` before calling - * `AgentOs::create`. Until then, `exec` / `shell` / agent sessions that - * depend on wasm-provided commands cannot work end-to-end. + * Software threading: each software descriptor is flattened (meta packages + * such as `common` are arrays of descriptors) and mapped to the Rust + * `SoftwareInput { package, kind }`. The agent-os-client resolves an + * ABSOLUTE `package` directly (its `resolve_software` lets an absolute path + * bypass the `node_modules` prefix), so the descriptor's already-resolved + * `commandDir` (wasm commands) / `packageDir` (agents/tools) is forwarded as + * `package`. `build_command_mounts` then mounts each wasm dir at + * `/__agentos/commands/{N}/`, which is what makes `exec`/shell work. */ +interface SoftwareDescriptorLike { + commandDir?: string; + packageDir?: string; + agent?: unknown; + hostTool?: unknown; + toolkit?: unknown; +} + +function flattenSoftware(input: unknown, out: SoftwareDescriptorLike[]): void { + if (input == null) return; + if (Array.isArray(input)) { + for (const item of input) flattenSoftware(item, out); + return; + } + if (typeof input === "object") out.push(input as SoftwareDescriptorLike); +} + export function buildConfigJson( - _parsed: AgentOsActorConfig, + parsed: AgentOsActorConfig, ): string { - return "{}"; + const descriptors: SoftwareDescriptorLike[] = []; + flattenSoftware((parsed.options as { software?: unknown })?.software, descriptors); + + const software: Array<{ package: string; kind?: string }> = []; + for (const d of descriptors) { + if (typeof d.commandDir === "string") { + // Wasm command directory (kind defaults to WasmCommands on the Rust side). + software.push({ package: d.commandDir }); + } else if (typeof d.packageDir === "string") { + // Agent SDK / host-tool package: forwarded but not mounted as commands. + // `kind` matches the kebab-case serde tags of the Rust `SoftwareKind` + // enum (`wasm-commands` / `agent` / `tool`). + software.push({ + package: d.packageDir, + kind: d.hostTool || d.toolkit ? "tool" : "agent", + }); + } + } + + // `moduleAccessCwd` backs `/root/node_modules` in the VM (agent SDK + transitive + // dep resolution). It defaults to the server's cwd, but can be pointed at a + // pre-generated flat node_modules via `AGENT_OS_MODULE_ACCESS_CWD` so pnpm-isolated + // workspaces can mount a hoisted tree without restructuring the whole workspace. + const moduleAccessCwd = + process.env.AGENT_OS_MODULE_ACCESS_CWD ?? process.cwd(); + return JSON.stringify({ software, moduleAccessCwd }); } function buildNativeFactoryBuilder( @@ -64,6 +101,10 @@ function buildNativeFactoryBuilder( } const options: NapiAgentOsOptions = { configJson: buildConfigJson(parsed), + // Resolve the prebuilt sidecar binary from the npm package and pass + // it through to the agent-os client so it spawns the bundled binary + // rather than relying on `agent-os-sidecar` being on PATH. + sidecarBinaryPath: getSidecarPath(), }; return runtime.createAgentOsFactory(options, undefined); }; diff --git a/rivetkit-typescript/packages/rivetkit/src/registry/runtime.ts b/rivetkit-typescript/packages/rivetkit/src/registry/runtime.ts index a0cf7d6ab0..5c189a8748 100644 --- a/rivetkit-typescript/packages/rivetkit/src/registry/runtime.ts +++ b/rivetkit-typescript/packages/rivetkit/src/registry/runtime.ts @@ -9,6 +9,12 @@ import type { RegistryConfig } from "./config"; */ export interface NapiAgentOsOptions { configJson?: string; + /** + * Absolute path to the prebuilt `agent-os-sidecar` binary, resolved from + * the `@rivet-dev/agent-os-sidecar` npm package. Forwarded to the agent-os + * client (via `AGENT_OS_SIDECAR_BIN`) so it spawns the bundled binary. + */ + sidecarBinaryPath?: string; } /** diff --git a/website/src/content/docs/agent-os/system-prompt.mdx b/website/src/content/docs/agent-os/system-prompt.mdx index 68d8adc49e..dd91d54b0f 100644 --- a/website/src/content/docs/agent-os/system-prompt.mdx +++ b/website/src/content/docs/agent-os/system-prompt.mdx @@ -6,7 +6,7 @@ skill: true agentOS automatically injects a system prompt into every agent session that describes the VM environment and available tools. The prompt is additive and never replaces the agent's own instructions (CLAUDE.md, AGENTS.md, etc.). -The base prompt lives at `/etc/agentos/instructions.md` inside the VM. +The prompt is assembled and injected at the start of each session rather than baked into the VM image, so it always reflects the tools currently exposed to that session. ## Customization