From fb9ab96c963a3bde84baa449eeb5f6502bf90014 Mon Sep 17 00:00:00 2001 From: Elias Posen Date: Tue, 27 Jan 2026 23:21:14 -0500 Subject: [PATCH 1/4] use pctx for code mode Signed-off-by: Elias Posen --- Cargo.lock | 3028 ++++++++++++++--- crates/goose-cli/src/session/output.rs | 52 +- crates/goose/Cargo.toml | 48 +- .../src/agents/code_execution_extension.rs | 1395 ++------ crates/goose/src/agents/extension.rs | 2 +- crates/goose/src/agents/extension_manager.rs | 4 +- .../docs/guides/managing-tools/code-mode.md | 2 +- scripts/test_providers.sh | 6 +- .../src/components/ToolCallWithResponse.tsx | 77 +- 9 files changed, 2911 insertions(+), 1703 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 39ed1a471481..35f6752eb3bb 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -2,6 +2,15 @@ # It is not intended for manual editing. version = 4 +[[package]] +name = "addr2line" +version = "0.25.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1b5d307320b3181d6d7954e663bd7c774a838b8220fe0593c86d9fb09f498b4b" +dependencies = [ + "gimli", +] + [[package]] name = "adler2" version = "2.0.1" @@ -27,7 +36,7 @@ checksum = "6903a00e8ac822f9bacac59a1932754d7387c72ebb7c9c7439ad021505591da4" dependencies = [ "anyhow", "derive_more", - "schemars", + "schemars 1.2.0", "serde", "serde_json", "strum", @@ -56,15 +65,6 @@ dependencies = [ "memchr", ] -[[package]] -name = "aligned-vec" -version = "0.6.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc890384c8602f339876ded803c97ad529f3842aba97f6392b3dba0dd171769b" -dependencies = [ - "equator", -] - [[package]] name = "alloc-no-stdlib" version = "2.0.4" @@ -187,6 +187,12 @@ version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50" +[[package]] +name = "ascii" +version = "1.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d92bec98840b8f03a5ff5413de5293bfcd8bf96467cf5452609f939ec6f5de16" + [[package]] name = "assert-json-diff" version = "2.0.2" @@ -197,6 +203,17 @@ dependencies = [ "serde_json", ] +[[package]] +name = "ast_node" +version = "5.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2eb025ef00a6da925cf40870b9c8d008526b6004ece399cb0974209720f0b194" +dependencies = [ + "quote", + "swc_macros_common", + "syn 2.0.111", +] + [[package]] name = "async-compression" version = "0.4.36" @@ -210,6 +227,12 @@ dependencies = [ "tokio", ] +[[package]] +name = "async-once-cell" +version = "0.5.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4288f83726785267c6f2ef073a3d83dc3f9b81464e9f99898240cced85fce35a" + [[package]] name = "async-stream" version = "0.3.6" @@ -322,7 +345,7 @@ version = "0.30.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "dbfd150b5dbdb988bcc8fb1fe787eb6b7ee6180ca24da683b61ea5405f3d43ff" dependencies = [ - "bindgen", + "bindgen 0.69.5", "cc", "cmake", "dunce", @@ -680,7 +703,7 @@ dependencies = [ "aws-smithy-async", "aws-smithy-runtime-api", "aws-smithy-types", - "rustc_version 0.4.1", + "rustc_version", "tracing", ] @@ -798,6 +821,33 @@ dependencies = [ "syn 2.0.111", ] +[[package]] +name = "az" +version = "1.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "be5eb007b7cacc6c660343e96f650fedf4b5a77512399eb952ca6642cf8d13f7" + +[[package]] +name = "backtrace" +version = "0.3.76" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bb531853791a215d7c62a30daf0dde835f381ab5de4589cfe7c649d2cbe92bd6" +dependencies = [ + "addr2line", + "cfg-if", + "libc", + "miniz_oxide", + "object", + "rustc-demangle", + "windows-link 0.2.1", +] + +[[package]] +name = "base32" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "022dfe9eb35f19ebbcb51e0b40a5ab759f46ad60cadf7297e0bd085afb50e076" + [[package]] name = "base64" version = "0.21.7" @@ -855,7 +905,7 @@ dependencies = [ "path_abs", "plist", "regex", - "semver 1.0.27", + "semver", "serde", "serde_derive", "serde_with", @@ -870,6 +920,15 @@ dependencies = [ "wild", ] +[[package]] +name = "better_scoped_tls" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7cd228125315b132eed175bf47619ac79b945b26e56b848ba203ae4ea8603609" +dependencies = [ + "scoped-tls", +] + [[package]] name = "bincode" version = "1.3.3" @@ -902,6 +961,289 @@ dependencies = [ "which 4.4.2", ] +[[package]] +name = "bindgen" +version = "0.72.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "993776b509cfb49c750f11b8f07a46fa23e0a1386ffc01fb1e7d343efc387895" +dependencies = [ + "bitflags 2.10.0", + "cexpr", + "clang-sys", + "itertools 0.13.0", + "log", + "prettyplease", + "proc-macro2", + "quote", + "regex", + "rustc-hash 2.1.1", + "shlex", + "syn 2.0.111", +] + +[[package]] +name = "biome_console" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5bff6dcd31afe7872430d10b3b79d66ba01e090c3a000ba826e91830bca95d0c" +dependencies = [ + "biome_markup", + "biome_text_size", + "schemars 0.8.22", + "serde", + "termcolor", + "unicode-segmentation", + "unicode-width 0.1.14", +] + +[[package]] +name = "biome_deserialize" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a9969c2b032155b05dc837c71337149800bdc56b07ecc3cfd7c2d963db07f049" +dependencies = [ + "biome_console", + "biome_diagnostics", + "biome_json_parser", + "biome_json_syntax", + "biome_rowan", + "bitflags 2.10.0", + "indexmap 1.9.3", + "serde", + "serde_json", + "tracing", +] + +[[package]] +name = "biome_diagnostics" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "92eeba94d7926178e59511b85cdcd0398ba1cc54a9f658ec261184e20028dd0e" +dependencies = [ + "backtrace", + "biome_console", + "biome_diagnostics_categories", + "biome_diagnostics_macros", + "biome_rowan", + "biome_text_edit", + "biome_text_size", + "bitflags 2.10.0", + "bpaf", + "serde", + "termcolor", + "unicode-width 0.1.14", +] + +[[package]] +name = "biome_diagnostics_categories" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a4e8ef1f8a683438b2c6e68c996d66ceeb4764c3672e1eb20c9e6b404056a3d4" +dependencies = [ + "quote", + "serde", +] + +[[package]] +name = "biome_diagnostics_macros" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cf9a4eeb40457bd8ed3ea91d2b48ad12e80dc92eb083f909a8b5ad1d1b71d5c4" +dependencies = [ + "proc-macro-error", + "proc-macro2", + "quote", + "syn 1.0.109", +] + +[[package]] +name = "biome_formatter" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7fd09e51dc9b0b6e52017ef6dacea26c3291181b42a3dbbccc61d47b8f9330d1" +dependencies = [ + "biome_console", + "biome_deserialize", + "biome_diagnostics", + "biome_rowan", + "cfg-if", + "countme", + "drop_bomb", + "indexmap 1.9.3", + "rustc-hash 1.1.0", + "tracing", + "unicode-width 0.1.14", +] + +[[package]] +name = "biome_js_factory" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eb1ed97002c53c737b765e2dc8f25da2f91ecec03385d2280afa5ab94456972a" +dependencies = [ + "biome_js_syntax", + "biome_rowan", +] + +[[package]] +name = "biome_js_formatter" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e010bc8836e38c7168a9bfbec9391efa3bd6b5e9b321e05d613fc511d1e5db51" +dependencies = [ + "biome_console", + "biome_deserialize", + "biome_diagnostics_categories", + "biome_formatter", + "biome_js_factory", + "biome_js_syntax", + "biome_js_unicode_table", + "biome_json_syntax", + "biome_rowan", + "biome_text_size", + "cfg-if", + "smallvec", + "tracing", + "unicode-width 0.1.14", +] + +[[package]] +name = "biome_js_parser" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7cef3036cef3632c72c83cc1197c3af868ae440ec2576a494ea812fafe5ee18e" +dependencies = [ + "biome_console", + "biome_diagnostics", + "biome_js_factory", + "biome_js_syntax", + "biome_js_unicode_table", + "biome_parser", + "biome_rowan", + "bitflags 2.10.0", + "cfg-if", + "drop_bomb", + "indexmap 1.9.3", + "rustc-hash 1.1.0", + "serde", + "serde_json", + "smallvec", + "tracing", + "unicode-bom", +] + +[[package]] +name = "biome_js_syntax" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "874ff2a6f691d231195a02b85243c5e2ba820973f7ba71e29f320aaabe1a749e" +dependencies = [ + "biome_console", + "biome_diagnostics", + "biome_rowan", +] + +[[package]] +name = "biome_js_unicode_table" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6b174dd2a0e5d74e1763045a9eb021bf89c38e3bf48f5852653635688a8675b9" + +[[package]] +name = "biome_json_factory" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7ec30f94381f11b6c4f2cb49492cf02b34dec74fd8cf01b7b1b10138d2f6b41e" +dependencies = [ + "biome_json_syntax", + "biome_rowan", +] + +[[package]] +name = "biome_json_parser" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "baddbd7fee954d8b20b6db922e77c70db8d73fadeb43bae254e7fb2e0364a553" +dependencies = [ + "biome_console", + "biome_diagnostics", + "biome_js_unicode_table", + "biome_json_factory", + "biome_json_syntax", + "biome_parser", + "biome_rowan", + "tracing", + "unicode-bom", +] + +[[package]] +name = "biome_json_syntax" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97bb81952034ac0a4e5100d939c4286862193361a687c21aa0c15da388b29b32" +dependencies = [ + "biome_rowan", +] + +[[package]] +name = "biome_markup" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "94b75b241c9346a7a55968398e51502333c18e200bec5d72b08d448084045e02" +dependencies = [ + "proc-macro-error", + "proc-macro2", + "quote", +] + +[[package]] +name = "biome_parser" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "33531b8a29ce80cfd320f3278a167ec41985d9b4701013184d95aef9642bf761" +dependencies = [ + "biome_console", + "biome_diagnostics", + "biome_rowan", + "bitflags 2.10.0", + "drop_bomb", +] + +[[package]] +name = "biome_rowan" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e46e82f8245181cdf45794f3025db1daa4865e8730214345e540eae570957aa" +dependencies = [ + "biome_text_edit", + "biome_text_size", + "countme", + "hashbrown 0.12.3", + "memoffset", + "rustc-hash 1.1.0", + "tracing", +] + +[[package]] +name = "biome_text_edit" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "81ff84924f11cc4d9a5ee2a3b59630aa9f2c2c359f7623ac541b1ff82390d80b" +dependencies = [ + "biome_text_size", + "serde", + "similar", +] + +[[package]] +name = "biome_text_size" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9e945f7da7f14dd66563ca6be0133014e6a1cbe935247f7b5ee8e28b2b8282f6" +dependencies = [ + "serde", +] + [[package]] name = "bit-set" version = "0.5.3" @@ -953,6 +1295,18 @@ dependencies = [ "serde_core", ] +[[package]] +name = "bitvec" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bc2832c24239b0141d5674bb9174f9d68a8b5b3f2753311927c172ca46f7e9c" +dependencies = [ + "funty", + "radium", + "tap", + "wyz", +] + [[package]] name = "blake3" version = "1.5.3" @@ -994,158 +1348,47 @@ dependencies = [ ] [[package]] -name = "boa_ast" -version = "0.21.0" +name = "borrow-or-share" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc0b364ead1874514c8c2855ab558056ebfeb775653e7ae45ff72f28f8f3166c" + +[[package]] +name = "boxed_error" +version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bc119a5ad34c3f459062a96907f53358989b173d104258891bb74f95d93747e8" +checksum = "17d4f95e880cfd28c4ca5a006cf7f6af52b4bcb7b5866f573b2faa126fb7affb" dependencies = [ - "bitflags 2.10.0", - "boa_interner", - "boa_macros", - "boa_string", - "indexmap 2.12.1", - "num-bigint", - "rustc-hash 2.1.1", + "quote", + "syn 2.0.111", ] [[package]] -name = "boa_engine" -version = "0.21.0" +name = "boxfnonce" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5988cb1d626264ac94100be357308f29ff7cbdd3b36bda27f450a4ee3f713426" + +[[package]] +name = "bpaf" +version = "0.9.22" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e637ec52ea66d76b0ca86180c259d6c7bb6e6a6e14b2f36b85099306d8b00cc3" +checksum = "4ffe12d9bbc54238745f1749c5a18dc5759e03c235618dd05554a9be350390b1" dependencies = [ - "aligned-vec", - "arrayvec", - "bitflags 2.10.0", - "boa_ast", - "boa_gc", - "boa_interner", - "boa_macros", - "boa_parser", - "boa_string", - "bytemuck", - "cfg-if", - "cow-utils", - "dashmap", - "dynify", - "fast-float2", - "float16", - "futures-channel", - "futures-concurrency", - "futures-lite", - "hashbrown 0.16.1", - "icu_normalizer", - "indexmap 2.12.1", - "intrusive-collections", - "itertools 0.14.0", - "num-bigint", - "num-integer", - "num-traits", - "num_enum", - "paste", - "portable-atomic", - "rand 0.9.2", - "regress", - "rustc-hash 2.1.1", - "ryu-js", - "serde", - "serde_json", - "small_btree", - "static_assertions", - "tag_ptr", - "tap", - "thin-vec", - "thiserror 2.0.17", - "time", - "xsum", -] - -[[package]] -name = "boa_gc" -version = "0.21.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f1179f690cbfcbe5364cceee5f1cb577265bb6f07b0be6f210aabe270adcf9da" -dependencies = [ - "boa_macros", - "boa_string", - "hashbrown 0.16.1", - "thin-vec", -] - -[[package]] -name = "boa_interner" -version = "0.21.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "9626505d33dc63d349662437297df1d3afd9d5fc4a2b3ad34e5e1ce879a78848" -dependencies = [ - "boa_gc", - "boa_macros", - "hashbrown 0.16.1", - "indexmap 2.12.1", - "once_cell", - "phf", - "rustc-hash 2.1.1", - "static_assertions", + "bpaf_derive", ] [[package]] -name = "boa_macros" -version = "0.21.0" +name = "bpaf_derive" +version = "0.5.21" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7f36418a46544b152632c141b0a0b7a453cd69ca150caeef83aee9e2f4b48b7d" +checksum = "9e7d8cbf45f5994072fad3eb22761aacbe8752bbe733a247f7d35827556ea057" dependencies = [ - "cfg-if", - "cow-utils", "proc-macro2", "quote", "syn 2.0.111", - "synstructure", -] - -[[package]] -name = "boa_parser" -version = "0.21.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02f99bf5b684f0de946378fcfe5f38c3a0fbd51cbf83a0f39ff773a0e218541f" -dependencies = [ - "bitflags 2.10.0", - "boa_ast", - "boa_interner", - "boa_macros", - "fast-float2", - "icu_properties", - "num-bigint", - "num-traits", - "regress", - "rustc-hash 2.1.1", -] - -[[package]] -name = "boa_string" -version = "0.21.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "45ce9d7aa5563a2e14eab111e2ae1a06a69a812f6c0c3d843196c9d03fbef440" -dependencies = [ - "fast-float2", - "itoa", - "paste", - "rustc-hash 2.1.1", - "ryu-js", - "static_assertions", ] -[[package]] -name = "borrow-or-share" -version = "0.2.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "dc0b364ead1874514c8c2855ab558056ebfeb775653e7ae45ff72f28f8f3166c" - -[[package]] -name = "boxfnonce" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5988cb1d626264ac94100be357308f29ff7cbdd3b36bda27f450a4ee3f713426" - [[package]] name = "brotli" version = "8.0.2" @@ -1194,6 +1437,9 @@ name = "bumpalo" version = "3.19.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5dd9dc738b7a8311c7ade152424974d8115f2cdad61e8dab8dac9f2362298510" +dependencies = [ + "allocator-api2", +] [[package]] name = "bytecount" @@ -1206,20 +1452,6 @@ name = "bytemuck" version = "1.24.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1fbdf580320f38b612e485521afda1ee26d10cc9884efaaa750d383e13e3c5f4" -dependencies = [ - "bytemuck_derive", -] - -[[package]] -name = "bytemuck_derive" -version = "1.10.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f9abbd1bc6865053c427f7198e6af43bfdedc55ab791faed4fbd361d789575ff" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.111", -] [[package]] name = "byteorder" @@ -1239,6 +1471,16 @@ version = "1.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b35204fbdc0b3f4446b89fc1ac2cf84a8a68971995d0bf2e925ec7cd960f9cb3" +[[package]] +name = "bytes-str" +version = "0.2.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7c60b5ce37e0b883c37eb89f79a1e26fbe9c1081945d024eee93e8d91a7e18b3" +dependencies = [ + "bytes", + "serde", +] + [[package]] name = "bytes-utils" version = "0.1.4" @@ -1275,6 +1517,62 @@ dependencies = [ "pkg-config", ] +[[package]] +name = "cache_control" +version = "0.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1bf2a5fb3207c12b5d208ebc145f967fea5cac41a021c37417ccc31ba40f39ee" + +[[package]] +name = "calendrical_calculations" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3a0b39595c6ee54a8d0900204ba4c401d0ab4eb45adaf07178e8d017541529e7" +dependencies = [ + "core_maths", + "displaydoc", +] + +[[package]] +name = "camino" +version = "1.2.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e629a66d692cb9ff1a1c664e41771b3dcaf961985a9774c0eb0bd1b51cf60a48" +dependencies = [ + "serde_core", +] + +[[package]] +name = "capacity_builder" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8f2d24a6dcf0cd402a21b65d35340f3a49ff3475dc5fdac91d22d2733e6641c6" +dependencies = [ + "capacity_builder_macros", + "ecow", + "hipstr", + "itoa", +] + +[[package]] +name = "capacity_builder_macros" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b4a6cae9efc04cc6cbb8faf338d2c497c165c83e74509cf4dbedea948bbf6e5" +dependencies = [ + "quote", + "syn 2.0.111", +] + +[[package]] +name = "castaway" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dec551ab6e7578819132c713a93c022a05d60159dc86e7a7050223577484c55a" +dependencies = [ + "rustversion", +] + [[package]] name = "cbc" version = "0.1.2" @@ -1492,6 +1790,19 @@ dependencies = [ "memchr", ] +[[package]] +name = "compact_str" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f86b9c4c00838774a6d902ef931eff7470720c51d90c2e32cfe15dc304737b3f" +dependencies = [ + "castaway", + "cfg-if", + "itoa", + "ryu", + "static_assertions", +] + [[package]] name = "compression-codecs" version = "0.4.35" @@ -1632,6 +1943,12 @@ dependencies = [ "unicode-segmentation", ] +[[package]] +name = "cooked-waker" +version = "5.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "147be55d677052dabc6b22252d5dd0fd4c29c8c27aa4f2fbef0f94aa003b406f" + [[package]] name = "cookie" version = "0.18.1" @@ -1698,10 +2015,19 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "773648b94d0e5d620f64f280777445740e61fe701025087ec8b57f45c791888b" [[package]] -name = "cow-utils" -version = "0.1.3" +name = "core_maths" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "77745e017f5edba1a9c1d854f6f3a52dac8a12dd5af5d2f54aecf61e43d80d30" +dependencies = [ + "libm", +] + +[[package]] +name = "countme" +version = "3.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "417bef24afe1460300965a25ff4a24b8b45ad011948302ec221e8a0a81eb2c79" +checksum = "7704b5fdd17b18ae31c4c1da5a2e0305a2bf17b5249300a9ee9ed7b72114c636" [[package]] name = "cpufeatures" @@ -1918,6 +2244,19 @@ dependencies = [ "syn 2.0.111", ] +[[package]] +name = "dashmap" +version = "5.5.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "978747c1d849a7d2ee5e8adc0159961c48fb7e5db2f06af6723b80123bb53856" +dependencies = [ + "cfg-if", + "hashbrown 0.14.5", + "lock_api", + "once_cell", + "parking_lot_core", +] + [[package]] name = "dashmap" version = "6.1.0" @@ -1938,6 +2277,12 @@ version = "2.9.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2a2330da5de22e8a3cb63252ce2abb30116bf5265e89c0e01bc17015ce30a476" +[[package]] +name = "data-url" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "be1e0bca6c3637f992fc1cc7cbc52a78c1ef6db076dbf1059c4323d6a2048376" + [[package]] name = "dbus" version = "0.9.10" @@ -1979,72 +2324,432 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "092966b41edc516079bdf31ec78a2e0588d1d0c08f78b91d8307215928642b2b" [[package]] -name = "der" -version = "0.7.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e7c1832837b905bbfb5101e07cc24c8deddf52f93225eee6ead5f4d63d53ddcb" -dependencies = [ - "const-oid", - "pem-rfc7468", - "zeroize", -] - -[[package]] -name = "deranged" -version = "0.5.5" +name = "debugid" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ececcb659e7ba858fb4f10388c250a7252eb0a27373f1a72b8748afdd248e587" +checksum = "bef552e6f588e446098f6ba40d89ac146c8c7b64aade83c051ee00bb5d2bc18d" dependencies = [ - "powerfmt", + "serde", + "uuid", ] [[package]] -name = "derive_arbitrary" -version = "1.4.2" +name = "deno_ast" +version = "0.52.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1e567bd82dcff979e4b03460c307b3cdc9e96fde3d73bed1496d2bc75d9dd62a" +checksum = "30c2f6f65154faed61e45d6578566f9fab9d2a330c35c87366706883701cce51" dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.111", + "base64 0.22.1", + "capacity_builder", + "deno_error", + "deno_media_type", + "deno_terminal", + "dprint-swc-ext", + "percent-encoding", + "serde", + "swc_atoms", + "swc_common", + "swc_config", + "swc_config_macro", + "swc_ecma_ast", + "swc_ecma_codegen", + "swc_ecma_codegen_macros", + "swc_ecma_lexer", + "swc_ecma_loader", + "swc_ecma_parser", + "swc_ecma_transforms_base", + "swc_ecma_transforms_classes", + "swc_ecma_transforms_macros", + "swc_ecma_transforms_proposal", + "swc_ecma_transforms_react", + "swc_ecma_transforms_typescript", + "swc_ecma_utils", + "swc_ecma_visit", + "swc_eq_ignore_macros", + "swc_macros_common", + "swc_sourcemap", + "swc_visit", + "text_lines", + "thiserror 2.0.17", + "unicode-width 0.2.2", + "url", ] [[package]] -name = "derive_builder" -version = "0.20.2" +name = "deno_cache_dir" +version = "0.26.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "507dfb09ea8b7fa618fcf76e953f4f5e192547945816d5358edffe39f6f94947" +checksum = "7862aa4b7aad895ee979a3078bd25da192a1810b30cb5a7e764fed38d065eba9" dependencies = [ - "derive_builder_macro", + "async-trait", + "base32", + "base64 0.21.7", + "boxed_error", + "cache_control", + "chrono", + "data-url", + "deno_error", + "deno_media_type", + "deno_path_util", + "http 1.4.0", + "indexmap 2.12.1", + "log", + "once_cell", + "parking_lot", + "serde", + "serde_json", + "sha2", + "sys_traits", + "thiserror 2.0.17", + "url", ] [[package]] -name = "derive_builder_core" -version = "0.20.2" +name = "deno_config" +version = "0.77.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2d5bcf7b024d6835cfb3d473887cd966994907effbe9227e8c8219824d06c4e8" +checksum = "ba166cbf37d43fb2d34d9a1dce8ce2c0f9b84727a99db0ed12564c05a46886b4" dependencies = [ - "darling 0.20.11", - "proc-macro2", - "quote", - "syn 2.0.111", + "boxed_error", + "capacity_builder", + "chrono", + "deno_error", + "deno_maybe_sync", + "deno_package_json", + "deno_path_util", + "deno_semver", + "glob", + "ignore", + "import_map", + "indexmap 2.12.1", + "jsonc-parser", + "log", + "serde", + "serde_json", + "sys_traits", + "thiserror 2.0.17", + "url", ] [[package]] -name = "derive_builder_macro" -version = "0.20.2" +name = "deno_core" +version = "0.381.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ab63b0e2bf4d5928aff72e83a7dace85d7bba5fe12dcc3c5a572d78caffd3f3c" +checksum = "77660b04f5368bcd69a42e0fdd6343e325eb781ec7d79bbf49ff2548ae4f17b6" dependencies = [ - "derive_builder_core", - "syn 2.0.111", -] - -[[package]] -name = "derive_more" -version = "2.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d751e9e49156b02b44f9c1815bcb94b984cdcc4396ecc32521c739452808b134" + "anyhow", + "az", + "bincode", + "bit-set 0.8.0", + "bit-vec 0.8.0", + "boxed_error", + "bytes", + "capacity_builder", + "cooked-waker", + "deno_core_icudata", + "deno_error", + "deno_ops", + "deno_path_util", + "deno_unsync", + "futures", + "indexmap 2.12.1", + "libc", + "parking_lot", + "percent-encoding", + "pin-project", + "serde", + "serde_json", + "serde_v8", + "smallvec", + "sourcemap", + "static_assertions", + "thiserror 2.0.17", + "tokio", + "url", + "v8", + "wasm_dep_analyzer", +] + +[[package]] +name = "deno_core_icudata" +version = "0.77.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a9efff8990a82c1ae664292507e1a5c6749ddd2312898cdf9cd7cb1fd4bc64c6" + +[[package]] +name = "deno_error" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bfafd2219b29886a71aecbb3449e462deed1b2c474dc5b12f855f0e58c478931" +dependencies = [ + "deno_error_macro", + "libc", + "serde", + "serde_json", + "tokio", + "url", +] + +[[package]] +name = "deno_error_macro" +version = "0.7.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1c28ede88783f14cd8aae46ca89f230c226b40e4a81ab06fa52ed72af84beb2f" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.111", +] + +[[package]] +name = "deno_lockfile" +version = "0.32.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d71c0df1464034be21a9472e7ec8f9a21958418d203fa2c40507fb5cafe799d" +dependencies = [ + "async-trait", + "deno_semver", + "serde", + "serde_json", + "thiserror 2.0.17", +] + +[[package]] +name = "deno_maybe_sync" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "042601bdeb305f3accea03d005ab106305960bbfc1b9649fe14d8ee29decf8dc" + +[[package]] +name = "deno_media_type" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ac0109d26ff08a089642a79b45c65f91a849404c1ef3ec78c837a412956d8808" +dependencies = [ + "data-url", + "serde", + "url", +] + +[[package]] +name = "deno_npm" +version = "0.42.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "8ff75f741a6ead7e13ed60151071d886310d75942845fff8b523423115772e3f" +dependencies = [ + "async-trait", + "capacity_builder", + "chrono", + "deno_error", + "deno_lockfile", + "deno_semver", + "futures", + "indexmap 2.12.1", + "log", + "monch", + "serde", + "serde_json", + "thiserror 2.0.17", + "url", +] + +[[package]] +name = "deno_ops" +version = "0.257.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9dd9aa20a48be11c922d9451a524afecde323a22d5defacc1dd79f8deac728fb" +dependencies = [ + "indexmap 2.12.1", + "proc-macro2", + "quote", + "stringcase", + "strum", + "strum_macros", + "syn 2.0.111", + "syn-match", + "thiserror 2.0.17", +] + +[[package]] +name = "deno_package_json" +version = "0.29.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "52308462288a304df2d659a8c3aa71426bee546843d23820605666e7c99b91e9" +dependencies = [ + "boxed_error", + "deno_error", + "deno_maybe_sync", + "deno_path_util", + "deno_semver", + "indexmap 2.12.1", + "serde", + "serde_json", + "sys_traits", + "thiserror 2.0.17", + "url", +] + +[[package]] +name = "deno_path_util" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "78c7e98943f0d068928906db0c7bde89de684fa32c6a8018caacc4cee2cdd72b" +dependencies = [ + "deno_error", + "percent-encoding", + "sys_traits", + "thiserror 2.0.17", + "url", +] + +[[package]] +name = "deno_resolver" +version = "0.58.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fbbc1abe929b6f3719871c4075154c6334d516b88c046b5c2ba7d7998ae62301" +dependencies = [ + "anyhow", + "async-once-cell", + "async-trait", + "base32", + "boxed_error", + "capacity_builder", + "chrono", + "deno_cache_dir", + "deno_config", + "deno_error", + "deno_lockfile", + "deno_maybe_sync", + "deno_media_type", + "deno_npm", + "deno_package_json", + "deno_path_util", + "deno_semver", + "deno_terminal", + "deno_unsync", + "dissimilar", + "futures", + "import_map", + "indexmap 2.12.1", + "jsonc-parser", + "log", + "node_resolver", + "once_cell", + "parking_lot", + "phf", + "serde", + "serde_json", + "sys_traits", + "thiserror 2.0.17", + "twox-hash", + "url", +] + +[[package]] +name = "deno_semver" +version = "0.9.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "92d46d2fd6959170a6e9f6607a6f79683868fa82ceac56ca520ab014e4fa5b21" +dependencies = [ + "capacity_builder", + "deno_error", + "ecow", + "hipstr", + "monch", + "once_cell", + "serde", + "thiserror 2.0.17", + "url", +] + +[[package]] +name = "deno_terminal" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f3ba8041ae7319b3ca6a64c399df4112badcbbe0868b4517637647614bede4be" +dependencies = [ + "once_cell", + "termcolor", +] + +[[package]] +name = "deno_unsync" +version = "0.4.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6742a724e8becb372a74c650a1aefb8924a5b8107f7d75b3848763ea24b27a87" +dependencies = [ + "futures-util", + "parking_lot", + "tokio", +] + +[[package]] +name = "der" +version = "0.7.10" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e7c1832837b905bbfb5101e07cc24c8deddf52f93225eee6ead5f4d63d53ddcb" +dependencies = [ + "const-oid", + "pem-rfc7468", + "zeroize", +] + +[[package]] +name = "deranged" +version = "0.5.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ececcb659e7ba858fb4f10388c250a7252eb0a27373f1a72b8748afdd248e587" +dependencies = [ + "powerfmt", +] + +[[package]] +name = "derive_arbitrary" +version = "1.4.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1e567bd82dcff979e4b03460c307b3cdc9e96fde3d73bed1496d2bc75d9dd62a" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.111", +] + +[[package]] +name = "derive_builder" +version = "0.20.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "507dfb09ea8b7fa618fcf76e953f4f5e192547945816d5358edffe39f6f94947" +dependencies = [ + "derive_builder_macro", +] + +[[package]] +name = "derive_builder_core" +version = "0.20.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2d5bcf7b024d6835cfb3d473887cd966994907effbe9227e8c8219824d06c4e8" +dependencies = [ + "darling 0.20.11", + "proc-macro2", + "quote", + "syn 2.0.111", +] + +[[package]] +name = "derive_builder_macro" +version = "0.20.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ab63b0e2bf4d5928aff72e83a7dace85d7bba5fe12dcc3c5a572d78caffd3f3c" +dependencies = [ + "derive_builder_core", + "syn 2.0.111", +] + +[[package]] +name = "derive_more" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d751e9e49156b02b44f9c1815bcb94b984cdcc4396ecc32521c739452808b134" dependencies = [ "derive_more-impl", ] @@ -2058,7 +2763,7 @@ dependencies = [ "convert_case 0.10.0", "proc-macro2", "quote", - "rustc_version 0.4.1", + "rustc_version", "syn 2.0.111", "unicode-xid", ] @@ -2079,6 +2784,12 @@ version = "0.2.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ab03c107fafeb3ee9f5925686dbb7a73bc76e3932abb0d2b365cb64b169cf04c" +[[package]] +name = "diff" +version = "0.1.13" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "56254986775e3233ffa9c4d7d3faaf6d36a2c09d30b20687e9f88bc8bafc16c8" + [[package]] name = "digest" version = "0.10.7" @@ -2091,6 +2802,38 @@ dependencies = [ "subtle", ] +[[package]] +name = "diplomat" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9adb46b05e2f53dcf6a7dfc242e4ce9eb60c369b6b6eb10826a01e93167f59c6" +dependencies = [ + "diplomat_core", + "proc-macro2", + "quote", + "syn 2.0.111", +] + +[[package]] +name = "diplomat-runtime" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0569bd3caaf13829da7ee4e83dbf9197a0e1ecd72772da6d08f0b4c9285c8d29" + +[[package]] +name = "diplomat_core" +version = "0.14.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "51731530ed7f2d4495019abc7df3744f53338e69e2863a6a64ae91821c763df1" +dependencies = [ + "proc-macro2", + "quote", + "serde", + "smallvec", + "strck", + "syn 2.0.111", +] + [[package]] name = "dirs" version = "5.0.1" @@ -2167,6 +2910,12 @@ dependencies = [ "syn 2.0.111", ] +[[package]] +name = "dissimilar" +version = "1.0.9" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "59f8e79d1fbf76bdfbde321e902714bf6c49df88a7dda6fc682fc2979226962d" + [[package]] name = "dlv-list" version = "0.5.2" @@ -2218,6 +2967,28 @@ version = "0.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1435fa1053d8b2fbbe9be7e97eca7f33d37b28409959813daefc1446a14247f1" +[[package]] +name = "dprint-swc-ext" +version = "0.26.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "33175ddb7a6d418589cab2966bd14a710b3b1139459d3d5ca9edf783c4833f4c" +dependencies = [ + "num-bigint", + "rustc-hash 2.1.1", + "swc_atoms", + "swc_common", + "swc_ecma_ast", + "swc_ecma_lexer", + "swc_ecma_parser", + "text_lines", +] + +[[package]] +name = "drop_bomb" +version = "0.1.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9bda8e21c04aca2ae33ffc2fd8c23134f3cac46db123ba97bd9d3f3b8a4a85e1" + [[package]] name = "dunce" version = "1.0.5" @@ -2231,32 +3002,21 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d0881ea181b1df73ff77ffaaf9c7544ecc11e82fba9b5f27b262a3c73a332555" [[package]] -name = "dynify" -version = "0.1.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "81acb15628a3e22358bf73de5e7e62360b8a777dbcb5fc9ac7dfa9ae73723747" -dependencies = [ - "dynify-macros", -] - -[[package]] -name = "dynify-macros" +name = "ecb" version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1ec431cd708430d5029356535259c5d645d60edd3d39c54e5eea9782d46caa7d" +checksum = "1a8bfa975b1aec2145850fcaa1c6fe269a16578c44705a532ae3edc92b8881c7" dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.111", + "cipher", ] [[package]] -name = "ecb" -version = "0.1.2" +name = "ecow" +version = "0.2.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1a8bfa975b1aec2145850fcaa1c6fe269a16578c44705a532ae3edc92b8881c7" +checksum = "78e4f79b296fbaab6ce2e22d52cb4c7f010fe0ebe7a32e34fa25885fd797bd02" dependencies = [ - "cipher", + "serde", ] [[package]] @@ -2333,26 +3093,6 @@ dependencies = [ "log", ] -[[package]] -name = "equator" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4711b213838dfee0117e3be6ac926007d7f433d7bbe33595975d4190cb07e6fc" -dependencies = [ - "equator-macro", -] - -[[package]] -name = "equator-macro" -version = "0.4.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "44f23cf4b44bfce11a86ace86f8a73ffdec849c9fd00a386a53d278bd9e81fb3" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.111", -] - [[package]] name = "equivalent" version = "1.0.2" @@ -2455,12 +3195,6 @@ dependencies = [ "regex-syntax", ] -[[package]] -name = "fast-float2" -version = "0.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f8eb564c5c7423d25c886fb561d1e4ee69f72354d16918afa32c08811f6b6a55" - [[package]] name = "fastrand" version = "2.3.0" @@ -2515,16 +3249,6 @@ dependencies = [ "miniz_oxide", ] -[[package]] -name = "float16" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7bffafbd079d520191c7c2779ae9cf757601266cf4167d3f659ff09617ff8483" -dependencies = [ - "cfg-if", - "rustc_version 0.2.3", -] - [[package]] name = "fluent-uri" version = "0.3.2" @@ -2605,6 +3329,16 @@ version = "2.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "28dd6caf6059519a65843af8fe2a3ae298b14b80179855aeb4adc2c1934ee619" +[[package]] +name = "from_variant" +version = "3.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e5ff35a391aef949120a0340d690269b3d9f63460a6106e99bd07b961f345ea9" +dependencies = [ + "swc_macros_common", + "syn 2.0.111", +] + [[package]] name = "fs-err" version = "3.2.2" @@ -2630,6 +3364,22 @@ version = "1.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "42703706b716c37f96a77aea830392ad231f44c9e9a67872fa5548707e11b11c" +[[package]] +name = "fslock" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "04412b8935272e3a9bae6f48c7bfff74c2911f60525404edfdd28e49884c3bfb" +dependencies = [ + "libc", + "winapi", +] + +[[package]] +name = "funty" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e6d5a32815ae3f33302d95fdcb2ce17862f8c65363dcfd29360480ba1001fc9c" + [[package]] name = "futures" version = "0.3.31" @@ -2842,6 +3592,12 @@ dependencies = [ "weezl", ] +[[package]] +name = "gimli" +version = "0.32.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e629b9b98ef3dd8afe6ca2bd0f89306cec16d43d907889945bc5d6687f2f13c7" + [[package]] name = "git-version" version = "0.3.9" @@ -2909,11 +3665,10 @@ dependencies = [ "axum 0.8.8", "base64 0.22.1", "blake3", - "boa_engine", "chrono", "clap", "ctor", - "dashmap", + "dashmap 6.1.0", "dirs 5.0.1", "dotenvy", "env-lock", @@ -2935,17 +3690,18 @@ dependencies = [ "mockall", "nanoid", "once_cell", - "opentelemetry", + "opentelemetry 0.27.1", "opentelemetry-appender-tracing", - "opentelemetry-otlp", - "opentelemetry_sdk", + "opentelemetry-otlp 0.27.0", + "opentelemetry_sdk 0.27.1", "paste", + "pctx_code_mode", "posthog-rs", "rand 0.8.5", "regex", "reqwest 0.12.28", "rmcp 0.14.0", - "schemars", + "schemars 1.2.0", "serde", "serde_json", "serde_urlencoded", @@ -2970,7 +3726,7 @@ dependencies = [ "unicode-normalization", "url", "urlencoding", - "utoipa", + "utoipa 4.2.3", "uuid", "v_htmlescape", "webbrowser", @@ -3096,7 +3852,7 @@ dependencies = [ "regex", "reqwest 0.12.28", "rmcp 0.14.0", - "schemars", + "schemars 1.2.0", "serde", "serde_json", "serial_test", @@ -3160,7 +3916,7 @@ dependencies = [ "tracing-appender", "tracing-subscriber", "url", - "utoipa", + "utoipa 4.2.3", "uuid", "winreg 0.55.0", "wiremock", @@ -3188,6 +3944,15 @@ dependencies = [ "winapi-util", ] +[[package]] +name = "gzip-header" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "95cc527b92e6029a62960ad99aa8a6660faa4555fe5f731aab13aa6a921795a2" +dependencies = [ + "crc32fast", +] + [[package]] name = "h2" version = "0.3.27" @@ -3237,6 +4002,22 @@ dependencies = [ "zerocopy", ] +[[package]] +name = "handlebars" +version = "6.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9b3f9296c208515b87bd915a2f5d1163d4b3f863ba83337d7713cf478055948e" +dependencies = [ + "derive_builder", + "log", + "num-order", + "pest", + "pest_derive", + "serde", + "serde_json", + "thiserror 2.0.17", +] + [[package]] name = "hashbrown" version = "0.12.3" @@ -3309,6 +4090,17 @@ version = "0.4.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7f24254aa9a54b5c858eaee2f5bccdb46aaf0e486a595ed5fd8f86ba55232a70" +[[package]] +name = "hipstr" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "97971ffc85d4c98de12e2608e992a43f5294ebb625fdb045b27c731b64c4c6d6" +dependencies = [ + "serde", + "serde_bytes", + "sptr", +] + [[package]] name = "hkdf" version = "0.12.4" @@ -3336,6 +4128,20 @@ dependencies = [ "windows-sys 0.61.2", ] +[[package]] +name = "hstr" +version = "3.0.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "faa57007c3c9dab34df2fa4c1fb52fe9c34ec5a27ed9d8edea53254b50cd7887" +dependencies = [ + "hashbrown 0.14.5", + "new_debug_unreachable", + "once_cell", + "rustc-hash 2.1.1", + "serde", + "triomphe", +] + [[package]] name = "html_parser" version = "0.7.0" @@ -3517,6 +4323,22 @@ dependencies = [ "tower-service", ] +[[package]] +name = "hyper-tls" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "70206fc6890eaca9fde8a0bf71caa2ddfc9fe045ac9e5c70df101a7dbde866e0" +dependencies = [ + "bytes", + "http-body-util", + "hyper 1.8.1", + "hyper-util", + "native-tls", + "tokio", + "tokio-native-tls", + "tower-service", +] + [[package]] name = "hyper-util" version = "0.1.19" @@ -3536,9 +4358,11 @@ dependencies = [ "percent-encoding", "pin-project-lite", "socket2 0.6.1", + "system-configuration", "tokio", "tower-service", "tracing", + "windows-registry", ] [[package]] @@ -3565,11 +4389,33 @@ dependencies = [ "cc", ] +[[package]] +name = "icu_calendar" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d6f0e52e009b6b16ba9c0693578796f2dd4aaa59a7f8f920423706714a89ac4e" +dependencies = [ + "calendrical_calculations", + "displaydoc", + "icu_calendar_data", + "icu_locale", + "icu_locale_core", + "icu_provider", + "tinystr", + "zerovec", +] + +[[package]] +name = "icu_calendar_data" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "527f04223b17edfe0bd43baf14a0cb1b017830db65f3950dc00224860a9a446d" + [[package]] name = "icu_collections" -version = "2.0.0" +version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "200072f5d0e3614556f94a9930d5dc3e0662a652823904c3a75dc3b0af7fee47" +checksum = "4c6b649701667bbe825c3b7e6388cb521c23d88644678e83c0c4d0a621a34b43" dependencies = [ "displaydoc", "potential_utf", @@ -3578,6 +4424,21 @@ dependencies = [ "zerovec", ] +[[package]] +name = "icu_locale" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "532b11722e350ab6bf916ba6eb0efe3ee54b932666afec989465f9243fe6dd60" +dependencies = [ + "icu_collections", + "icu_locale_core", + "icu_locale_data", + "icu_provider", + "potential_utf", + "tinystr", + "zerovec", +] + [[package]] name = "icu_locale_core" version = "2.1.1" @@ -3592,50 +4453,51 @@ dependencies = [ "zerovec", ] +[[package]] +name = "icu_locale_data" +version = "2.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1c5f1d16b4c3a2642d3a719f18f6b06070ab0aef246a6418130c955ae08aa831" + [[package]] name = "icu_normalizer" -version = "2.0.1" +version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8b24a59706036ba941c9476a55cd57b82b77f38a3c667d637ee7cabbc85eaedc" +checksum = "5f6c8828b67bf8908d82127b2054ea1b4427ff0230ee9141c54251934ab1b599" dependencies = [ - "displaydoc", "icu_collections", "icu_normalizer_data", "icu_properties", "icu_provider", "smallvec", - "utf16_iter", - "write16", "zerovec", ] [[package]] name = "icu_normalizer_data" -version = "2.0.0" +version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "00210d6893afc98edb752b664b8890f0ef174c8adbb8d0be9710fa66fbbf72d3" +checksum = "7aedcccd01fc5fe81e6b489c15b247b8b0690feb23304303a9e560f37efc560a" [[package]] name = "icu_properties" -version = "2.0.2" +version = "2.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f5a97b8ac6235e69506e8dacfb2adf38461d2ce6d3e9bd9c94c4cbc3cd4400a4" +checksum = "020bfc02fe870ec3a66d93e677ccca0562506e5872c650f893269e08615d74ec" dependencies = [ - "displaydoc", "icu_collections", "icu_locale_core", "icu_properties_data", "icu_provider", - "potential_utf", "zerotrie", "zerovec", ] [[package]] name = "icu_properties_data" -version = "2.0.1" +version = "2.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "298459143998310acd25ffe6810ed544932242d3f07083eee1084d83a71bd632" +checksum = "616c294cf8d725c6afcd8f55abc17c56464ef6211f9ed59cccffe534129c77af" [[package]] name = "icu_provider" @@ -3681,6 +4543,12 @@ dependencies = [ "icu_properties", ] +[[package]] +name = "if_chain" +version = "1.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cd62e6b5e86ea8eeeb8db1de02880a6abc01a397b2ebb64b5d74ac255318f5cb" + [[package]] name = "ignore" version = "0.4.25" @@ -3734,6 +4602,23 @@ version = "0.14.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "09e54e57b4c48b40f7aec75635392b12b3421fa26fe8b4332e63138ed278459c" +[[package]] +name = "import_map" +version = "0.24.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f83a4958a41489355816028239fee373797435384d162f4908e7980c83c3bb1b" +dependencies = [ + "boxed_error", + "deno_error", + "indexmap 2.12.1", + "log", + "percent-encoding", + "serde", + "serde_json", + "thiserror 2.0.17", + "url", +] + [[package]] name = "include_dir" version = "0.7.4" @@ -3761,6 +4646,7 @@ checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" dependencies = [ "autocfg", "hashbrown 0.12.3", + "serde", ] [[package]] @@ -3819,15 +4705,6 @@ dependencies = [ "tempfile", ] -[[package]] -name = "intrusive-collections" -version = "0.9.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "189d0897e4cbe8c75efedf3502c18c887b05046e59d28404d4d8e46cbc4d1e86" -dependencies = [ - "memoffset", -] - [[package]] name = "ipnet" version = "2.11.0" @@ -3848,9 +4725,21 @@ dependencies = [ name = "is-docker" version = "0.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "928bae27f42bc99b60d9ac7334e3a21d10ad8f1835a4e12ec3ec0464765ed1b3" +checksum = "928bae27f42bc99b60d9ac7334e3a21d10ad8f1835a4e12ec3ec0464765ed1b3" +dependencies = [ + "once_cell", +] + +[[package]] +name = "is-macro" +version = "0.3.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d57a3e447e24c22647738e4607f1df1e0ec6f72e16182c4cd199f647cdfb0e4" dependencies = [ - "once_cell", + "heck", + "proc-macro2", + "quote", + "syn 2.0.111", ] [[package]] @@ -3902,6 +4791,12 @@ version = "1.0.17" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "92ecc6618181def0457392ccd0ee51198e065e016d1d527a7ac1b6dc7c1f09d2" +[[package]] +name = "ixdtf" +version = "0.6.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "84de9d95a6d2547d9b77ee3f25fa0ee32e3c3a6484d47a55adebc0439c077992" + [[package]] name = "jiff" version = "0.2.17" @@ -4005,6 +4900,15 @@ dependencies = [ "serde", ] +[[package]] +name = "jsonc-parser" +version = "0.27.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "01958dcb05b69d9612853b47df8f7881810e4f61b5cedd8894be04291f28ccb9" +dependencies = [ + "serde_json", +] + [[package]] name = "jsonrpcmsg" version = "0.1.2" @@ -4065,6 +4969,7 @@ checksum = "eebcc3aff044e5944a8fbaf69eb277d11986064cba30c468730e8b9909fb551c" dependencies = [ "byteorder", "dbus-secret-service", + "linux-keyutils", "log", "openssl", "security-framework 2.11.1", @@ -4073,6 +4978,29 @@ dependencies = [ "zeroize", ] +[[package]] +name = "lazy-regex" +version = "3.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c5c13b6857ade4c8ee05c3c3dc97d2ab5415d691213825b90d3211c425c1f907" +dependencies = [ + "lazy-regex-proc_macros", + "once_cell", + "regex", +] + +[[package]] +name = "lazy-regex-proc_macros" +version = "3.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32a95c68db5d41694cea563c86a4ba4dc02141c16ef64814108cb23def4d5438" +dependencies = [ + "proc-macro2", + "quote", + "regex", + "syn 2.0.111", +] + [[package]] name = "lazy_static" version = "1.5.0" @@ -4178,6 +5106,16 @@ version = "0.5.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "0717cef1bc8b636c6e1c1bbdefc09e6322da8a9321966e8928ef80d20f7f770f" +[[package]] +name = "linux-keyutils" +version = "0.2.4" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "761e49ec5fd8a5a463f9b84e877c373d888935b71c6be78f3767fe2ae6bed18e" +dependencies = [ + "bitflags 2.10.0", + "libc", +] + [[package]] name = "linux-raw-sys" version = "0.4.15" @@ -4320,9 +5258,9 @@ checksum = "38d1115007560874e373613744c6fba374c17688327a71c1476d1a5954cc857b" [[package]] name = "memoffset" -version = "0.9.1" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "488016bfae457b036d996092f6cb448677611ce4449e970ceaf42695203f218a" +checksum = "d61c719bcfbcf5d62b3a09efa6088de8c54bc0bfcd3ea7ae39fcc186108b8de1" dependencies = [ "autocfg", ] @@ -4407,6 +5345,12 @@ dependencies = [ "syn 2.0.111", ] +[[package]] +name = "monch" +version = "0.5.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b52c1b33ff98142aecea13138bd399b68aa7ab5d9546c300988c345004001eea" + [[package]] name = "moxcms" version = "0.7.11" @@ -4441,12 +5385,35 @@ dependencies = [ "rand 0.8.5", ] +[[package]] +name = "native-tls" +version = "0.2.14" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "87de3442987e9dbec73158d5c715e7ad9072fda936bb03d19d7fa10e00520f0e" +dependencies = [ + "libc", + "log", + "openssl", + "openssl-probe 0.1.6", + "openssl-sys", + "schannel", + "security-framework 2.11.1", + "security-framework-sys", + "tempfile", +] + [[package]] name = "ndk-context" version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "27b02d87554356db9e9a873add8782d4ea6e3e58ea071a9adb9a2e8ddb884a8b" +[[package]] +name = "new_debug_unreachable" +version = "1.0.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "650eef8c711430f1a879fdd01d4745a7deea475becfb90269c06775983bbf086" + [[package]] name = "nibble_vec" version = "0.1.0" @@ -4480,6 +5447,37 @@ dependencies = [ "libc", ] +[[package]] +name = "node_resolver" +version = "0.65.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "01957d40d64724eb35d92ac2ccd5b4be660072639c82c3bf831a24ba325a15f8" +dependencies = [ + "anyhow", + "async-trait", + "boxed_error", + "capacity_builder", + "dashmap 5.5.3", + "deno_error", + "deno_maybe_sync", + "deno_media_type", + "deno_package_json", + "deno_path_util", + "deno_semver", + "futures", + "lazy-regex", + "log", + "once_cell", + "path-clean", + "pretty_assertions", + "regex", + "serde", + "serde_json", + "sys_traits", + "thiserror 2.0.17", + "url", +] + [[package]] name = "nom" version = "7.1.3" @@ -4550,6 +5548,7 @@ checksum = "a5e44f723f1133c9deac646763579fdb3ac745e418f2a7af9cd0c431da1f20b9" dependencies = [ "num-integer", "num-traits", + "rand 0.8.5", "serde", ] @@ -4621,6 +5620,21 @@ dependencies = [ "num-traits", ] +[[package]] +name = "num-modular" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "17bb261bf36fa7d83f4c294f834e91256769097b3cb505d44831e0a179ac647f" + +[[package]] +name = "num-order" +version = "1.2.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "537b596b97c40fcf8056d153049eb22f481c17ebce72a513ec9286e4986d1bb6" +dependencies = [ + "num-modular", +] + [[package]] name = "num-rational" version = "0.4.2" @@ -4652,37 +5666,6 @@ dependencies = [ "libc", ] -[[package]] -name = "num_enum" -version = "0.7.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b1207a7e20ad57b847bbddc6776b968420d38292bbfe2089accff5e19e82454c" -dependencies = [ - "num_enum_derive", - "rustversion", -] - -[[package]] -name = "num_enum_derive" -version = "0.7.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ff32365de1b6743cb203b710788263c44a03de03802daf96092f2da4fe6ba4d7" -dependencies = [ - "proc-macro-crate", - "proc-macro2", - "quote", - "syn 2.0.111", -] - -[[package]] -name = "num_threads" -version = "0.1.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5c7398b9c8b70908f6371f47ed36737907c87c52af34c268fed0bf0ceb92ead9" -dependencies = [ - "libc", -] - [[package]] name = "oauth2" version = "5.0.0" @@ -4966,6 +5949,15 @@ dependencies = [ "objc2-foundation", ] +[[package]] +name = "object" +version = "0.37.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff76201f031d8863c38aa7f905eca4f53abbfa15f609db4277d44cd8938f33fe" +dependencies = [ + "memchr", +] + [[package]] name = "once_cell" version = "1.21.3" @@ -5037,6 +6029,12 @@ dependencies = [ "syn 2.0.111", ] +[[package]] +name = "openssl-probe" +version = "0.1.6" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d05e27ee213611ffe7d6348b942e8f942b37114c00cc03cec254295a4a17852e" + [[package]] name = "openssl-probe" version = "0.2.0" @@ -5079,13 +6077,27 @@ dependencies = [ "tracing", ] +[[package]] +name = "opentelemetry" +version = "0.31.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b84bcd6ae87133e903af7ef497404dda70c60d0ea14895fc8a5e6722754fc2a0" +dependencies = [ + "futures-core", + "futures-sink", + "js-sys", + "pin-project-lite", + "thiserror 2.0.17", + "tracing", +] + [[package]] name = "opentelemetry-appender-tracing" version = "0.27.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ab5feffc321035ad94088a7e5333abb4d84a8726e54a802e736ce9dd7237e85b" dependencies = [ - "opentelemetry", + "opentelemetry 0.27.1", "tracing", "tracing-core", "tracing-subscriber", @@ -5100,7 +6112,20 @@ dependencies = [ "async-trait", "bytes", "http 1.4.0", - "opentelemetry", + "opentelemetry 0.27.1", + "reqwest 0.12.28", +] + +[[package]] +name = "opentelemetry-http" +version = "0.31.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d7a6d09a73194e6b66df7c8f1b680f156d916a1a942abf2de06823dd02b7855d" +dependencies = [ + "async-trait", + "bytes", + "http 1.4.0", + "opentelemetry 0.31.0", "reqwest 0.12.28", ] @@ -5113,15 +6138,34 @@ dependencies = [ "async-trait", "futures-core", "http 1.4.0", - "opentelemetry", - "opentelemetry-http", - "opentelemetry-proto", - "opentelemetry_sdk", - "prost", + "opentelemetry 0.27.1", + "opentelemetry-http 0.27.0", + "opentelemetry-proto 0.27.0", + "opentelemetry_sdk 0.27.1", + "prost 0.13.5", "reqwest 0.12.28", "thiserror 1.0.69", "tokio", - "tonic", + "tonic 0.12.3", + "tracing", +] + +[[package]] +name = "opentelemetry-otlp" +version = "0.31.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7a2366db2dca4d2ad033cad11e6ee42844fd727007af5ad04a1730f4cb8163bf" +dependencies = [ + "http 1.4.0", + "opentelemetry 0.31.0", + "opentelemetry-http 0.31.0", + "opentelemetry-proto 0.31.0", + "opentelemetry_sdk 0.31.0", + "prost 0.14.3", + "reqwest 0.12.28", + "thiserror 2.0.17", + "tokio", + "tonic 0.14.2", "tracing", ] @@ -5131,10 +6175,23 @@ version = "0.27.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a6e05acbfada5ec79023c85368af14abd0b307c015e9064d249b2a950ef459a6" dependencies = [ - "opentelemetry", - "opentelemetry_sdk", - "prost", - "tonic", + "opentelemetry 0.27.1", + "opentelemetry_sdk 0.27.1", + "prost 0.13.5", + "tonic 0.12.3", +] + +[[package]] +name = "opentelemetry-proto" +version = "0.31.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a7175df06de5eaee9909d4805a3d07e28bb752c34cab57fa9cff549da596b30f" +dependencies = [ + "opentelemetry 0.31.0", + "opentelemetry_sdk 0.31.0", + "prost 0.14.3", + "tonic 0.14.2", + "tonic-prost", ] [[package]] @@ -5148,7 +6205,7 @@ dependencies = [ "futures-executor", "futures-util", "glob", - "opentelemetry", + "opentelemetry 0.27.1", "percent-encoding", "rand 0.8.5", "serde_json", @@ -5158,6 +6215,21 @@ dependencies = [ "tracing", ] +[[package]] +name = "opentelemetry_sdk" +version = "0.31.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e14ae4f5991976fd48df6d843de219ca6d31b01daaab2dad5af2badeded372bd" +dependencies = [ + "futures-channel", + "futures-executor", + "futures-util", + "opentelemetry 0.31.0", + "percent-encoding", + "rand 0.9.2", + "thiserror 2.0.17", +] + [[package]] name = "option-ext" version = "0.2.0" @@ -5180,6 +6252,15 @@ version = "0.5.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1a80800c0488c3a21695ea981a54918fbb37abf04f4d0720c453632255e2ff0e" +[[package]] +name = "par-core" +version = "2.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e96cbd21255b7fb29a5d51ef38a779b517a91abd59e2756c039583f43ef4c90f" +dependencies = [ + "once_cell", +] + [[package]] name = "parking" version = "2.2.1" @@ -5227,36 +6308,178 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "57c0d7b74b563b49d38dae00a0c37d4d6de9b432382b2892f0574ddcae73fd0a" [[package]] -name = "pastey" -version = "0.2.1" +name = "pastey" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b867cad97c0791bbd3aaa6472142568c6c9e8f71937e98379f584cfb0cf35bec" + +[[package]] +name = "path-clean" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ecba01bf2678719532c5e3059e0b5f0811273d94b397088b82e3bd0a78c78fdd" + +[[package]] +name = "path_abs" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05ef02f6342ac01d8a93b65f96db53fe68a92a15f41144f97fb00a9e669633c3" +dependencies = [ + "std_prelude", +] + +[[package]] +name = "pathdiff" +version = "0.2.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df94ce210e5bc13cb6651479fa48d14f601d9858cfe0467f43ae157023b938d3" + +[[package]] +name = "pbkdf2" +version = "0.11.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "83a0692ec44e4cf1ef28ca317f14f8f07da2d95ec3fa01f86e4467b725e60917" +dependencies = [ + "digest", + "hmac", + "password-hash", + "sha2", +] + +[[package]] +name = "pctx_code_execution_runtime" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5433c26c36d176b5a8df58c231abd58e7e742faa8a154c1528b39b7560270675" +dependencies = [ + "anyhow", + "deno_core", + "deno_error", + "pctx_config", + "reqwest 0.13.1", + "rmcp 0.14.0", + "serde", + "serde_json", + "thiserror 2.0.17", + "tracing", + "url", +] + +[[package]] +name = "pctx_code_mode" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "48117f2247f09990096794cca228a16657bf1a20a47ba665a16fc9cea4786002" +dependencies = [ + "futures", + "pctx_code_execution_runtime", + "pctx_codegen", + "pctx_config", + "pctx_executor", + "schemars 1.2.0", + "serde", + "serde_json", + "thiserror 2.0.17", + "tokio", + "tracing", + "utoipa 5.4.0", +] + +[[package]] +name = "pctx_codegen" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aebab01af80ced5df67e44d85c6caa9ccc5d0c6e07e0881e7d573447f1ee0f13" +dependencies = [ + "biome_formatter", + "biome_js_formatter", + "biome_js_parser", + "biome_js_syntax", + "handlebars", + "heck", + "indexmap 2.12.1", + "regex", + "schemars 0.8.22", + "serde", + "serde_json", + "thiserror 2.0.17", + "tracing", + "unicode-ident", +] + +[[package]] +name = "pctx_config" +version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b867cad97c0791bbd3aaa6472142568c6c9e8f71937e98379f584cfb0cf35bec" +checksum = "34959e922cfcc5784d86e34493e402a9603e152c1ac24c98d8ebe83831309f34" +dependencies = [ + "anyhow", + "base64 0.22.1", + "camino", + "http 1.4.0", + "indexmap 2.12.1", + "keyring", + "opentelemetry-otlp 0.31.0", + "opentelemetry_sdk 0.31.0", + "reqwest 0.12.28", + "rmcp 0.14.0", + "serde", + "serde_json", + "shlex", + "thiserror 2.0.17", + "tokio", + "tonic 0.14.2", + "tracing", + "url", +] [[package]] -name = "path_abs" -version = "0.5.1" +name = "pctx_deno_transpiler" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "05ef02f6342ac01d8a93b65f96db53fe68a92a15f41144f97fb00a9e669633c3" +checksum = "2d0569477b4b06a749da9d37ddc3f9876444bd532f06bac0709010f0c85efc2d" dependencies = [ - "std_prelude", + "deno_ast", + "thiserror 2.0.17", ] [[package]] -name = "pathdiff" -version = "0.2.3" +name = "pctx_executor" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "df94ce210e5bc13cb6651479fa48d14f601d9858cfe0467f43ae157023b938d3" +checksum = "0ff23e96bcdc598b12792f3c327bdb69c3a1af51b032d357a7a216cf488e4976" +dependencies = [ + "deno_core", + "deno_resolver", + "futures", + "node_resolver", + "pctx_code_execution_runtime", + "pctx_config", + "pctx_deno_transpiler", + "pctx_type_check_runtime", + "regex", + "serde", + "serde_json", + "sys_traits", + "tempfile", + "thiserror 2.0.17", + "tracing", + "windows-sys 0.59.0", +] [[package]] -name = "pbkdf2" -version = "0.11.0" +name = "pctx_type_check_runtime" +version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "83a0692ec44e4cf1ef28ca317f14f8f07da2d95ec3fa01f86e4467b725e60917" +checksum = "71b3e2fa9831b26e71f86d714c08a4b2cb052b594bfae8528efbc6ccd3b0b1ce" dependencies = [ - "digest", - "hmac", - "password-hash", - "sha2", + "deno_ast", + "deno_core", + "futures", + "once_cell", + "serde", + "serde_json", + "thiserror 2.0.17", ] [[package]] @@ -5329,9 +6552,9 @@ dependencies = [ [[package]] name = "phf" -version = "0.13.1" +version = "0.11.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c1562dc717473dbaa4c1f85a36410e03c047b2e7df7f45ee938fbef64ae7fadf" +checksum = "1fd6780a80ae0c52cc120a26a1a42c1ae51b247a253e4e06113d23d2c2edd078" dependencies = [ "phf_macros", "phf_shared", @@ -5339,19 +6562,19 @@ dependencies = [ [[package]] name = "phf_generator" -version = "0.13.1" +version = "0.11.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "135ace3a761e564ec88c03a77317a7c6b80bb7f7135ef2544dbe054243b89737" +checksum = "3c80231409c20246a13fddb31776fb942c38553c51e871f8cbd687a4cfb5843d" dependencies = [ - "fastrand", "phf_shared", + "rand 0.8.5", ] [[package]] name = "phf_macros" -version = "0.13.1" +version = "0.11.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "812f032b54b1e759ccd5f8b6677695d5268c588701effba24601f6932f8269ef" +checksum = "f84ac04429c13a7ff43785d75ad27569f2951ce0ffd30a3321230db2fc727216" dependencies = [ "phf_generator", "phf_shared", @@ -5362,11 +6585,11 @@ dependencies = [ [[package]] name = "phf_shared" -version = "0.13.1" +version = "0.11.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e57fef6bc5981e38c2ce2d63bfa546861309f875b8a75f092d1d54ae2d64f266" +checksum = "67eabc2ef2a60eb7faa00097bd1ffdb5bd28e62bf39990626a582201b7a754e5" dependencies = [ - "siphasher", + "siphasher 1.0.1", ] [[package]] @@ -5491,7 +6714,7 @@ dependencies = [ "chrono", "derive_builder", "reqwest 0.11.27", - "semver 1.0.27", + "semver", "serde", "serde_json", "uuid", @@ -5503,6 +6726,8 @@ version = "0.1.4" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b73949432f5e2a09657003c25bca5e19a0e9c84f8058ca374f49e0ebe605af77" dependencies = [ + "serde_core", + "writeable", "zerovec", ] @@ -5548,22 +6773,23 @@ dependencies = [ ] [[package]] -name = "prettyplease" -version = "0.2.37" +name = "pretty_assertions" +version = "1.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "479ca8adacdd7ce8f1fb39ce9ecccbfe93a3f1344b3d0d97f20bc0196208f62b" +checksum = "3ae130e2f271fbc2ac3a40fb1d07180839cdbbe443c7a27e1e3c13c5cac0116d" dependencies = [ - "proc-macro2", - "syn 2.0.111", + "diff", + "yansi", ] [[package]] -name = "proc-macro-crate" -version = "3.4.0" +name = "prettyplease" +version = "0.2.37" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "219cb19e96be00ab2e37d6e299658a0cfa83e52429179969b0f0121b4ac46983" +checksum = "479ca8adacdd7ce8f1fb39ce9ecccbfe93a3f1344b3d0d97f20bc0196208f62b" dependencies = [ - "toml_edit 0.23.10+spec-1.0.0", + "proc-macro2", + "syn 2.0.111", ] [[package]] @@ -5620,7 +6846,17 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "2796faa41db3ec313a31f7624d9286acf277b52de526150b7e69f3debf891ee5" dependencies = [ "bytes", - "prost-derive", + "prost-derive 0.13.5", +] + +[[package]] +name = "prost" +version = "0.14.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d2ea70524a2f82d518bce41317d0fae74151505651af45faf1ffbd6fd33f0568" +dependencies = [ + "bytes", + "prost-derive 0.14.3", ] [[package]] @@ -5636,12 +6872,34 @@ dependencies = [ "syn 2.0.111", ] +[[package]] +name = "prost-derive" +version = "0.14.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "27c6023962132f4b30eb4c172c91ce92d933da334c59c23cddee82358ddafb0b" +dependencies = [ + "anyhow", + "itertools 0.14.0", + "proc-macro2", + "quote", + "syn 2.0.111", +] + [[package]] name = "psl-types" version = "2.0.11" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "33cb294fe86a74cbcf50d4445b37da762029549ebeea341421c7c70370f86cac" +[[package]] +name = "psm" +version = "0.1.23" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "aa37f80ca58604976033fae9515a8a2989fc13797d953f7c04fb8fa36a11f205" +dependencies = [ + "cc", +] + [[package]] name = "publicsuffix" version = "2.3.0" @@ -5724,6 +6982,7 @@ version = "0.11.13" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f1906b49b0c3bc04b5fe5d86a77925ae6524a19b816ae38ce1e426255f1d8a31" dependencies = [ + "aws-lc-rs", "bytes", "getrandom 0.3.4", "lru-slab", @@ -5768,6 +7027,12 @@ version = "5.3.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "69cdb34c158ceb288df11e18b4bd39de994f6657d83847bdffdbd7f346754b0f" +[[package]] +name = "radium" +version = "0.7.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dc33ff2d4973d518d823d61aa239014831e521c75da58e3df4840d3f47749d09" + [[package]] name = "radix_trie" version = "0.2.1" @@ -5972,16 +7237,6 @@ version = "0.8.8" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7a2d987857b319362043e95f5353c0535c1f58eec5336fdfcf626430af7def58" -[[package]] -name = "regress" -version = "0.10.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2057b2325e68a893284d1538021ab90279adac1139957ca2a74426c6f118fb48" -dependencies = [ - "hashbrown 0.16.1", - "memchr", -] - [[package]] name = "reqwest" version = "0.11.27" @@ -6043,11 +7298,13 @@ dependencies = [ "http-body-util", "hyper 1.8.1", "hyper-rustls 0.27.7", + "hyper-tls", "hyper-util", "js-sys", "log", "mime", "mime_guess", + "native-tls", "percent-encoding", "pin-project-lite", "quinn", @@ -6059,6 +7316,7 @@ dependencies = [ "serde_urlencoded", "sync_wrapper 1.0.2", "tokio", + "tokio-native-tls", "tokio-rustls 0.26.4", "tokio-util", "tower 0.5.2", @@ -6072,6 +7330,56 @@ dependencies = [ "webpki-roots 1.0.4", ] +[[package]] +name = "reqwest" +version = "0.13.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "04e9018c9d814e5f30cc16a0f03271aeab3571e609612d9fe78c1aa8d11c2f62" +dependencies = [ + "base64 0.22.1", + "bytes", + "encoding_rs", + "futures-core", + "h2 0.4.12", + "http 1.4.0", + "http-body 1.0.1", + "http-body-util", + "hyper 1.8.1", + "hyper-rustls 0.27.7", + "hyper-util", + "js-sys", + "log", + "mime", + "percent-encoding", + "pin-project-lite", + "quinn", + "rustls 0.23.31", + "rustls-pki-types", + "rustls-platform-verifier", + "serde", + "serde_json", + "sync_wrapper 1.0.2", + "tokio", + "tokio-rustls 0.26.4", + "tower 0.5.2", + "tower-http", + "tower-service", + "url", + "wasm-bindgen", + "wasm-bindgen-futures", + "web-sys", +] + +[[package]] +name = "resb" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6a067ab3b5ca3b4dc307d0de9cf75f9f5e6ca9717b192b2f28a36c83e5de9e76" +dependencies = [ + "potential_utf", + "serde_core", +] + [[package]] name = "rgb" version = "0.8.52" @@ -6108,7 +7416,7 @@ dependencies = [ "pastey", "pin-project-lite", "rmcp-macros 0.12.0", - "schemars", + "schemars 1.2.0", "serde", "serde_json", "thiserror 2.0.17", @@ -6139,7 +7447,7 @@ dependencies = [ "rand 0.9.2", "reqwest 0.12.28", "rmcp-macros 0.14.0", - "schemars", + "schemars 1.2.0", "serde", "serde_json", "sse-stream", @@ -6223,6 +7531,12 @@ dependencies = [ "ordered-multimap", ] +[[package]] +name = "rustc-demangle" +version = "0.1.27" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b50b8869d9fc858ce7266cce0194bd74df58b9d0e3f6df3a9fc8eb470d95c09d" + [[package]] name = "rustc-hash" version = "1.1.0" @@ -6235,22 +7549,13 @@ version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "357703d41365b4b27c590e3ed91eabb1b663f07c4c084095e60cbed4362dff0d" -[[package]] -name = "rustc_version" -version = "0.2.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "138e3e0acb6c9fb258b19b67cb8abd63c00679d2851805ea151465464fe9030a" -dependencies = [ - "semver 0.9.0", -] - [[package]] name = "rustc_version" version = "0.4.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92" dependencies = [ - "semver 1.0.27", + "semver", ] [[package]] @@ -6313,7 +7618,7 @@ version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "612460d5f7bea540c490b2b6395d8e34a953e52b491accd6c86c8164c5932a63" dependencies = [ - "openssl-probe", + "openssl-probe 0.2.0", "rustls-pki-types", "schannel", "security-framework 3.5.1", @@ -6338,6 +7643,33 @@ dependencies = [ "zeroize", ] +[[package]] +name = "rustls-platform-verifier" +version = "0.6.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1d99feebc72bae7ab76ba994bb5e121b8d83d910ca40b36e0921f53becc41784" +dependencies = [ + "core-foundation 0.10.1", + "core-foundation-sys", + "jni", + "log", + "once_cell", + "rustls 0.23.31", + "rustls-native-certs", + "rustls-platform-verifier-android", + "rustls-webpki 0.103.4", + "security-framework 3.5.1", + "security-framework-sys", + "webpki-root-certs", + "windows-sys 0.61.2", +] + +[[package]] +name = "rustls-platform-verifier-android" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f87165f0995f63a9fbeea62b64d10b4d9d8e78ec6d7d51fb2125fda7bb36788f" + [[package]] name = "rustls-webpki" version = "0.101.7" @@ -6415,7 +7747,7 @@ dependencies = [ "jsonrpcmsg", "rmcp 0.12.0", "sacp-derive", - "schemars", + "schemars 1.2.0", "serde", "serde_json", "thiserror 2.0.17", @@ -6463,6 +7795,19 @@ dependencies = [ "windows-sys 0.61.2", ] +[[package]] +name = "schemars" +version = "0.8.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3fbf2ae1b8bc8e02df939598064d22402220cd5bbcca1c76f7d6a310974d5615" +dependencies = [ + "dyn-clone", + "indexmap 1.9.3", + "schemars_derive 0.8.22", + "serde", + "serde_json", +] + [[package]] name = "schemars" version = "1.2.0" @@ -6472,11 +7817,23 @@ dependencies = [ "chrono", "dyn-clone", "ref-cast", - "schemars_derive", + "schemars_derive 1.2.0", "serde", "serde_json", ] +[[package]] +name = "schemars_derive" +version = "0.8.22" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "32e265784ad618884abaea0600a9adf15393368d840e0222d101a072f3f7534d" +dependencies = [ + "proc-macro2", + "quote", + "serde_derive_internals", + "syn 2.0.111", +] + [[package]] name = "schemars_derive" version = "1.2.0" @@ -6559,15 +7916,6 @@ version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "16c2f82143577edb4921b71ede051dac62ca3c16084e918bf7b40c96ae10eb33" -[[package]] -name = "semver" -version = "0.9.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d7eb9ef2c18661902cc47e535f9bc51b78acd254da71d375c2f6720d9a40403" -dependencies = [ - "semver-parser", -] - [[package]] name = "semver" version = "1.0.27" @@ -6575,10 +7923,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "d767eb0aabc880b29956c35734170f26ed551a859dbd361d140cdbeca61ab1e2" [[package]] -name = "semver-parser" -version = "0.7.0" +name = "seq-macro" +version = "0.3.6" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3" +checksum = "1bc711410fbe7399f390ca1c3b60ad0f53f80e95c5eb935e52268a0e2cd49acc" [[package]] name = "serde" @@ -6602,6 +7950,16 @@ dependencies = [ "typeid", ] +[[package]] +name = "serde_bytes" +version = "0.11.19" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a5d440709e79d88e51ac01c4b72fc6cb7314017bb7da9eeff678aa94c10e3ea8" +dependencies = [ + "serde", + "serde_core", +] + [[package]] name = "serde_core" version = "1.0.228" @@ -6688,6 +8046,20 @@ dependencies = [ "serde", ] +[[package]] +name = "serde_v8" +version = "0.290.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "21a52aca5a5661aea9c2ccf8c2f985f2381266d7aab03a0d02beadb4ae1190ea" +dependencies = [ + "deno_error", + "num-bigint", + "serde", + "smallvec", + "thiserror 2.0.17", + "v8", +] + [[package]] name = "serde_with" version = "3.16.1" @@ -6837,6 +8209,10 @@ name = "similar" version = "2.7.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "bbbb5d9659141646ae647b42fe094daf6c6192d1620870b449d9557f748b2daa" +dependencies = [ + "bstr", + "unicode-segmentation", +] [[package]] name = "simple_asn1" @@ -6850,6 +8226,12 @@ dependencies = [ "time", ] +[[package]] +name = "siphasher" +version = "0.3.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "38b58827f4464d87d377d175e90bf58eb00fd8716ff0a62f80356b5e61555d0d" + [[package]] name = "siphasher" version = "1.0.1" @@ -6863,21 +8245,23 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7a2ae44ef20feb57a68b23d846850f861394c2e02dc425a50098ae8c90267589" [[package]] -name = "small_btree" -version = "0.1.0" +name = "smallvec" +version = "1.15.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ba60d2df92ba73864714808ca68c059734853e6ab722b40e1cf543ebb3a057a" +checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03" dependencies = [ - "arrayvec", + "serde", ] [[package]] -name = "smallvec" -version = "1.15.1" +name = "smartstring" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "67b1b7a3b5fe4f1376887184045fcf45c69e92af734b7aaddc05fb777b6fbd03" +checksum = "3fb72c633efbaa2dd666986505016c32c3044395ceaf881518399d2f4127ee29" dependencies = [ - "serde", + "autocfg", + "static_assertions", + "version_check", ] [[package]] @@ -6906,6 +8290,24 @@ dependencies = [ "windows-sys 0.60.2", ] +[[package]] +name = "sourcemap" +version = "9.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "314d62a489431668f719ada776ca1d49b924db951b7450f8974c9ae51ab05ad7" +dependencies = [ + "base64-simd", + "bitvec", + "data-encoding", + "debugid", + "if_chain", + "rustc-hash 2.1.1", + "serde", + "serde_json", + "unicode-id-start", + "url", +] + [[package]] name = "spin" version = "0.9.8" @@ -6931,6 +8333,12 @@ dependencies = [ "der", ] +[[package]] +name = "sptr" +version = "0.3.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3b9b39299b249ad65f3b7e96443bad61c02ca5cd3589f46cb6d610a0fd6c0d6a" + [[package]] name = "sqlformat" version = "0.2.6" @@ -7161,6 +8569,19 @@ version = "1.2.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "6ce2be8dc25455e1f91df71bfa12ad37d7af1092ae736f3a6cd0e37bc7810596" +[[package]] +name = "stacker" +version = "0.1.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "799c883d55abdb5e98af1a7b3f23b9b6de8ecada0ecac058672d7635eb48ca7b" +dependencies = [ + "cc", + "cfg-if", + "libc", + "psm", + "windows-sys 0.59.0", +] + [[package]] name = "static_assertions" version = "1.1.0" @@ -7173,6 +8594,32 @@ version = "0.2.12" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "8207e78455ffdf55661170876f88daf85356e4edd54e0a3dbc79586ca1e50cbe" +[[package]] +name = "strck" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "42316e70da376f3d113a68d138a60d8a9883c604fe97942721ec2068dab13a9f" +dependencies = [ + "unicode-ident", +] + +[[package]] +name = "string_enum" +version = "1.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ae36a4951ca7bd1cfd991c241584a9824a70f6aff1e7d4f693fb3f2465e4030e" +dependencies = [ + "quote", + "swc_macros_common", + "syn 2.0.111", +] + +[[package]] +name = "stringcase" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72abeda133c49d7bddece6c154728f83eec8172380c80ab7096da9487e20d27c" + [[package]] name = "stringprep" version = "0.1.5" @@ -7194,28 +8641,409 @@ checksum = "7da8b5736845d9f2fcb837ea5d9e2628564b3b043a70948a3f0b778838c5fb4f" name = "strum" version = "0.27.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "af23d6f6c1a224baef9d3f61e287d2761385a5b88fdab4eb4c6f11aeb54c4bcf" +checksum = "af23d6f6c1a224baef9d3f61e287d2761385a5b88fdab4eb4c6f11aeb54c4bcf" +dependencies = [ + "strum_macros", +] + +[[package]] +name = "strum_macros" +version = "0.27.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7695ce3845ea4b33927c055a39dc438a45b059f7c1b3d91d38d10355fb8cbca7" +dependencies = [ + "heck", + "proc-macro2", + "quote", + "syn 2.0.111", +] + +[[package]] +name = "subtle" +version = "2.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" + +[[package]] +name = "swc_allocator" +version = "4.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "9d7eefd2c8b228a8c73056482b2ae4b3a1071fbe07638e3b55ceca8570cc48bb" +dependencies = [ + "allocator-api2", + "bumpalo", + "hashbrown 0.14.5", + "rustc-hash 2.1.1", +] + +[[package]] +name = "swc_atoms" +version = "9.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "d4ccbe2ecad10ad7432100f878a107b1d972a8aee83ca53184d00c23a078bb8a" +dependencies = [ + "hstr", + "once_cell", + "serde", +] + +[[package]] +name = "swc_common" +version = "17.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "259b675d633a26d24efe3802a9d88858c918e6e8f062d3222d3aa02d56a2cf4c" +dependencies = [ + "anyhow", + "ast_node", + "better_scoped_tls", + "bytes-str", + "either", + "from_variant", + "new_debug_unreachable", + "num-bigint", + "once_cell", + "rustc-hash 2.1.1", + "serde", + "siphasher 0.3.11", + "swc_atoms", + "swc_eq_ignore_macros", + "swc_sourcemap", + "swc_visit", + "tracing", + "unicode-width 0.2.2", + "url", +] + +[[package]] +name = "swc_config" +version = "3.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "72e90b52ee734ded867104612218101722ad87ff4cf74fe30383bd244a533f97" +dependencies = [ + "anyhow", + "bytes-str", + "indexmap 2.12.1", + "serde", + "serde_json", + "swc_config_macro", +] + +[[package]] +name = "swc_config_macro" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7b416e8ce6de17dc5ea496e10c7012b35bbc0e3fef38d2e065eed936490db0b3" +dependencies = [ + "proc-macro2", + "quote", + "swc_macros_common", + "syn 2.0.111", +] + +[[package]] +name = "swc_ecma_ast" +version = "18.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a573a0c72850dec8d4d8085f152d5778af35a2520c3093b242d2d1d50776da7c" +dependencies = [ + "bitflags 2.10.0", + "is-macro", + "num-bigint", + "once_cell", + "phf", + "rustc-hash 2.1.1", + "serde", + "string_enum", + "swc_atoms", + "swc_common", + "swc_visit", + "unicode-id-start", +] + +[[package]] +name = "swc_ecma_codegen" +version = "20.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ff2a6ee1ec49dda8dedeac54e4147b4e8b3f278d9bb34ab28983257a393d34ed" +dependencies = [ + "ascii", + "compact_str", + "memchr", + "num-bigint", + "once_cell", + "regex", + "rustc-hash 2.1.1", + "ryu-js", + "serde", + "swc_allocator", + "swc_atoms", + "swc_common", + "swc_ecma_ast", + "swc_ecma_codegen_macros", + "swc_sourcemap", + "tracing", +] + +[[package]] +name = "swc_ecma_codegen_macros" +version = "2.0.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e276dc62c0a2625a560397827989c82a93fd545fcf6f7faec0935a82cc4ddbb8" +dependencies = [ + "proc-macro2", + "swc_macros_common", + "syn 2.0.111", +] + +[[package]] +name = "swc_ecma_lexer" +version = "26.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "5e82f7747e052c6ff6e111fa4adeb14e33b46ee6e94fe5ef717601f651db48fc" +dependencies = [ + "bitflags 2.10.0", + "either", + "num-bigint", + "rustc-hash 2.1.1", + "seq-macro", + "serde", + "smallvec", + "smartstring", + "stacker", + "swc_atoms", + "swc_common", + "swc_ecma_ast", + "swc_ecma_parser", + "tracing", +] + +[[package]] +name = "swc_ecma_loader" +version = "17.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "fbcababb48f0d46587a0a854b2c577eb3a56fa99687de558338021e93cd2c8f5" +dependencies = [ + "anyhow", + "pathdiff", + "rustc-hash 2.1.1", + "serde", + "swc_atoms", + "swc_common", + "tracing", +] + +[[package]] +name = "swc_ecma_parser" +version = "27.0.7" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7f1a51af1a92cd4904c073b293e491bbc0918400a45d58227b34c961dd6f52d7" +dependencies = [ + "bitflags 2.10.0", + "either", + "num-bigint", + "phf", + "rustc-hash 2.1.1", + "seq-macro", + "serde", + "smartstring", + "stacker", + "swc_atoms", + "swc_common", + "swc_ecma_ast", + "tracing", +] + +[[package]] +name = "swc_ecma_transforms_base" +version = "30.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "250f6f165578ca4fee47bd57585c1b9597c94bf4ea6591df47f2b5fa5b1883fe" +dependencies = [ + "better_scoped_tls", + "indexmap 2.12.1", + "once_cell", + "par-core", + "phf", + "rustc-hash 2.1.1", + "serde", + "swc_atoms", + "swc_common", + "swc_ecma_ast", + "swc_ecma_parser", + "swc_ecma_utils", + "swc_ecma_visit", + "tracing", +] + +[[package]] +name = "swc_ecma_transforms_classes" +version = "30.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "3d3ab35eff4a980e02d708798ae4c35bc017612292adbffe7b7b554df772fdf5" +dependencies = [ + "swc_common", + "swc_ecma_ast", + "swc_ecma_transforms_base", + "swc_ecma_utils", + "swc_ecma_visit", +] + +[[package]] +name = "swc_ecma_transforms_macros" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bc777288799bf6786e5200325a56e4fbabba590264a4a48a0c70b16ad0cf5cd8" +dependencies = [ + "proc-macro2", + "quote", + "swc_macros_common", + "syn 2.0.111", +] + +[[package]] +name = "swc_ecma_transforms_proposal" +version = "30.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c2d7748d4112c87ce1885260035e4a43cebfe7661a40174b7d77a0a04760a257" +dependencies = [ + "either", + "rustc-hash 2.1.1", + "serde", + "swc_atoms", + "swc_common", + "swc_ecma_ast", + "swc_ecma_transforms_base", + "swc_ecma_transforms_classes", + "swc_ecma_utils", + "swc_ecma_visit", +] + +[[package]] +name = "swc_ecma_transforms_react" +version = "33.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "03de12e38e47ac1c96ac576f793ad37a9d7b16fbf4f2203881f89152f2498682" +dependencies = [ + "base64 0.22.1", + "bytes-str", + "indexmap 2.12.1", + "once_cell", + "rustc-hash 2.1.1", + "serde", + "sha1", + "string_enum", + "swc_atoms", + "swc_common", + "swc_config", + "swc_ecma_ast", + "swc_ecma_parser", + "swc_ecma_transforms_base", + "swc_ecma_utils", + "swc_ecma_visit", +] + +[[package]] +name = "swc_ecma_transforms_typescript" +version = "33.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4408800fdeb541fabf3659db622189a0aeb386f57b6103f9294ff19dfde4f7b0" +dependencies = [ + "bytes-str", + "rustc-hash 2.1.1", + "serde", + "swc_atoms", + "swc_common", + "swc_ecma_ast", + "swc_ecma_transforms_base", + "swc_ecma_transforms_react", + "swc_ecma_utils", + "swc_ecma_visit", +] + +[[package]] +name = "swc_ecma_utils" +version = "24.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "0fb99e179988cabd473779a4452ab942bcb777176983ca3cbaf22a8f056a65b0" +dependencies = [ + "indexmap 2.12.1", + "num_cpus", + "once_cell", + "par-core", + "rustc-hash 2.1.1", + "ryu-js", + "swc_atoms", + "swc_common", + "swc_ecma_ast", + "swc_ecma_visit", + "tracing", +] + +[[package]] +name = "swc_ecma_visit" +version = "18.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a9611a72a4008d62608547a394e5d72a5245413104db096d95a52368a8cc1d63" +dependencies = [ + "new_debug_unreachable", + "num-bigint", + "swc_atoms", + "swc_common", + "swc_ecma_ast", + "swc_visit", + "tracing", +] + +[[package]] +name = "swc_eq_ignore_macros" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c16ce73424a6316e95e09065ba6a207eba7765496fed113702278b7711d4b632" dependencies = [ - "strum_macros", + "proc-macro2", + "quote", + "syn 2.0.111", ] [[package]] -name = "strum_macros" -version = "0.27.2" +name = "swc_macros_common" +version = "1.0.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7695ce3845ea4b33927c055a39dc438a45b059f7c1b3d91d38d10355fb8cbca7" +checksum = "aae1efbaa74943dc5ad2a2fb16cbd78b77d7e4d63188f3c5b4df2b4dcd2faaae" dependencies = [ - "heck", "proc-macro2", "quote", "syn 2.0.111", ] [[package]] -name = "subtle" -version = "2.6.1" +name = "swc_sourcemap" +version = "9.3.4" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" +checksum = "de08ef00f816acdd1a58ee8a81c0e1a59eefef2093aefe5611f256fa6b64c4d7" +dependencies = [ + "base64-simd", + "bitvec", + "bytes-str", + "data-encoding", + "debugid", + "if_chain", + "rustc-hash 2.1.1", + "serde", + "serde_json", + "unicode-id-start", + "url", +] + +[[package]] +name = "swc_visit" +version = "2.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "62fb71484b486c185e34d2172f0eabe7f4722742aad700f426a494bb2de232a2" +dependencies = [ + "either", + "new_debug_unreachable", +] [[package]] name = "syn" @@ -7224,6 +9052,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" dependencies = [ "proc-macro2", + "quote", "unicode-ident", ] @@ -7238,6 +9067,17 @@ dependencies = [ "unicode-ident", ] +[[package]] +name = "syn-match" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "783c4140d7ed89f37116e865b49e5a9fdd28608b9071a9dd1e158b50fc0a31fc" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.111", +] + [[package]] name = "sync_wrapper" version = "0.1.2" @@ -7295,6 +9135,26 @@ dependencies = [ "libc", ] +[[package]] +name = "sys_traits" +version = "0.1.17" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "4f74a2c95f72e36fa6bd04a40d15623a9904bab1cc2fa6c6135b09d774a65088" +dependencies = [ + "sys_traits_macros", +] + +[[package]] +name = "sys_traits_macros" +version = "0.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "181f22127402abcf8ee5c83ccd5b408933fec36a6095cf82cda545634692657e" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.111", +] + [[package]] name = "sysinfo" version = "0.33.1" @@ -7330,12 +9190,6 @@ dependencies = [ "libc", ] -[[package]] -name = "tag_ptr" -version = "0.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c0e973b34477b7823833469eb0f5a3a60370fef7a453e02d751b59180d0a5a05" - [[package]] name = "tap" version = "1.0.1" @@ -7366,6 +9220,39 @@ dependencies = [ "windows-sys 0.61.2", ] +[[package]] +name = "temporal_capi" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a151e402c2bdb6a3a2a2f3f225eddaead2e7ce7dd5d3fa2090deb11b17aa4ed8" +dependencies = [ + "diplomat", + "diplomat-runtime", + "icu_calendar", + "icu_locale", + "num-traits", + "temporal_rs", + "timezone_provider", + "writeable", + "zoneinfo64", +] + +[[package]] +name = "temporal_rs" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "88afde3bd75d2fc68d77a914bece426aa08aa7649ffd0cdd4a11c3d4d33474d1" +dependencies = [ + "core_maths", + "icu_calendar", + "icu_locale", + "ixdtf", + "num-traits", + "timezone_provider", + "tinystr", + "writeable", +] + [[package]] name = "termcolor" version = "1.4.1" @@ -7450,6 +9337,15 @@ dependencies = [ "test-case-core", ] +[[package]] +name = "text_lines" +version = "0.6.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7fd5828de7deaa782e1dd713006ae96b3bee32d3279b79eb67ecf8072c059bcf" +dependencies = [ + "serde", +] + [[package]] name = "textwrap" version = "0.16.2" @@ -7557,10 +9453,7 @@ checksum = "91e7d9e3bb61134e77bde20dd4825b97c010155709965fedf0f49bb138e52a9d" dependencies = [ "deranged", "itoa", - "js-sys", - "libc", "num-conv", - "num_threads", "powerfmt", "serde", "time-core", @@ -7583,6 +9476,18 @@ dependencies = [ "time-core", ] +[[package]] +name = "timezone_provider" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "df9ba0000e9e73862f3e7ca1ff159e2ddf915c9d8bb11e38a7874760f445d993" +dependencies = [ + "tinystr", + "zerotrie", + "zerovec", + "zoneinfo64", +] + [[package]] name = "tiny-keccak" version = "2.0.2" @@ -7661,6 +9566,16 @@ dependencies = [ "syn 2.0.111", ] +[[package]] +name = "tokio-native-tls" +version = "0.3.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bbae76ab933c85776efabc971569dd6119c580d8f5d448769dec1764bf796ef2" +dependencies = [ + "native-tls", + "tokio", +] + [[package]] name = "tokio-rustls" version = "0.24.1" @@ -7733,7 +9648,7 @@ dependencies = [ "serde", "serde_spanned 0.6.9", "toml_datetime 0.6.11", - "toml_edit 0.22.27", + "toml_edit", ] [[package]] @@ -7781,18 +9696,6 @@ dependencies = [ "winnow", ] -[[package]] -name = "toml_edit" -version = "0.23.10+spec-1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "84c8b9f757e028cee9fa244aea147aab2a9ec09d5325a9b01e0a49730c2b5269" -dependencies = [ - "indexmap 2.12.1", - "toml_datetime 0.7.5+spec-1.1.0", - "toml_parser", - "winnow", -] - [[package]] name = "toml_parser" version = "1.0.6+spec-1.1.0" @@ -7828,7 +9731,7 @@ dependencies = [ "hyper-util", "percent-encoding", "pin-project", - "prost", + "prost 0.13.5", "socket2 0.5.10", "tokio", "tokio-stream", @@ -7838,6 +9741,46 @@ dependencies = [ "tracing", ] +[[package]] +name = "tonic" +version = "0.14.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "eb7613188ce9f7df5bfe185db26c5814347d110db17920415cf2fbcad85e7203" +dependencies = [ + "async-trait", + "axum 0.8.8", + "base64 0.22.1", + "bytes", + "h2 0.4.12", + "http 1.4.0", + "http-body 1.0.1", + "http-body-util", + "hyper 1.8.1", + "hyper-timeout", + "hyper-util", + "percent-encoding", + "pin-project", + "socket2 0.6.1", + "sync_wrapper 1.0.2", + "tokio", + "tokio-stream", + "tower 0.5.2", + "tower-layer", + "tower-service", + "tracing", +] + +[[package]] +name = "tonic-prost" +version = "0.14.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "66bd50ad6ce1252d87ef024b3d64fe4c3cf54a86fb9ef4c631fdd0ded7aeaa67" +dependencies = [ + "bytes", + "prost 0.14.3", + "tonic 0.14.2", +] + [[package]] name = "tower" version = "0.4.13" @@ -7866,9 +9809,12 @@ checksum = "d039ad9159c98b70ecfd540b2573b97f7f52c3e8d9f8ad57a24b916a536975f9" dependencies = [ "futures-core", "futures-util", + "indexmap 2.12.1", "pin-project-lite", + "slab", "sync_wrapper 1.0.2", "tokio", + "tokio-util", "tower-layer", "tower-service", "tracing", @@ -7980,8 +9926,8 @@ checksum = "97a971f6058498b5c0f1affa23e7ea202057a7301dbff68e968b2d578bcbd053" dependencies = [ "js-sys", "once_cell", - "opentelemetry", - "opentelemetry_sdk", + "opentelemetry 0.27.1", + "opentelemetry_sdk 0.27.1", "smallvec", "tracing", "tracing-core", @@ -8102,6 +10048,16 @@ dependencies = [ "tree-sitter", ] +[[package]] +name = "triomphe" +version = "0.1.15" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "dd69c5aa8f924c7519d6372789a74eac5b94fb0f8fcf0d4a97eb0bfc3e785f39" +dependencies = [ + "serde", + "stable_deref_trait", +] + [[package]] name = "try-lock" version = "0.2.5" @@ -8127,6 +10083,12 @@ dependencies = [ "utf-8", ] +[[package]] +name = "twox-hash" +version = "2.1.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "e7b17f197b3050ba473acf9181f7b1d3b66d1cf7356c6cc57886662276e65908" + [[package]] name = "typeid" version = "1.0.3" @@ -8198,6 +10160,18 @@ version = "0.3.18" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "5c1cb5db39152898a79168971543b1cb5020dff7fe43c8dc468b0885f5e29df5" +[[package]] +name = "unicode-bom" +version = "2.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "7eec5d1121208364f6793f7d2e222bf75a915c19557537745b195b253dd64217" + +[[package]] +name = "unicode-id-start" +version = "1.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "81b79ad29b5e19de4260020f8919b443b2ef0277d242ce532ec7b7a2cc8b6007" + [[package]] name = "unicode-ident" version = "1.0.22" @@ -8298,12 +10272,6 @@ version = "0.7.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "09cc8ee72d2a9becf2f2febe0205bbed8fc6615b7cb429ad062dc7b7ddd036a9" -[[package]] -name = "utf16_iter" -version = "1.0.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c8232dd3cdaed5356e0f716d285e4b40b932ac434100fe9b7e0e8e935b9e6246" - [[package]] name = "utf8_iter" version = "1.0.4" @@ -8325,7 +10293,19 @@ dependencies = [ "indexmap 2.12.1", "serde", "serde_json", - "utoipa-gen", + "utoipa-gen 4.3.1", +] + +[[package]] +name = "utoipa" +version = "5.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2fcc29c80c21c31608227e0912b2d7fddba57ad76b606890627ba8ee7964e993" +dependencies = [ + "indexmap 2.12.1", + "serde", + "serde_json", + "utoipa-gen 5.4.0", ] [[package]] @@ -8341,6 +10321,17 @@ dependencies = [ "syn 2.0.111", ] +[[package]] +name = "utoipa-gen" +version = "5.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "6d79d08d92ab8af4c5e8a6da20c47ae3f61a0f1dabc1997cdf2d082b757ca08b" +dependencies = [ + "proc-macro2", + "quote", + "syn 2.0.111", +] + [[package]] name = "uuid" version = "1.19.0" @@ -8364,6 +10355,23 @@ dependencies = [ "vsimd", ] +[[package]] +name = "v8" +version = "145.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "61d9a107e16bae35a0be2bb0096ac1d2318aac352c82edd796ab2b9cac66d8f0" +dependencies = [ + "bindgen 0.72.1", + "bitflags 2.10.0", + "fslock", + "gzip-header", + "home", + "miniz_oxide", + "paste", + "temporal_capi", + "which 6.0.3", +] + [[package]] name = "v_htmlescape" version = "0.15.8" @@ -8505,6 +10513,16 @@ dependencies = [ "web-sys", ] +[[package]] +name = "wasm_dep_analyzer" +version = "0.4.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "a10e6b67c951a84de7029487e0e0a496860dae49f6699edd279d5ff35b8fbf54" +dependencies = [ + "deno_error", + "thiserror 2.0.17", +] + [[package]] name = "web-sys" version = "0.3.83" @@ -8541,6 +10559,15 @@ dependencies = [ "web-sys", ] +[[package]] +name = "webpki-root-certs" +version = "1.0.5" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "36a29fc0408b113f68cf32637857ab740edfafdf460c326cd2afaa2d84cc05dc" +dependencies = [ + "rustls-pki-types", +] + [[package]] name = "webpki-roots" version = "0.25.4" @@ -8574,6 +10601,18 @@ dependencies = [ "rustix 0.38.44", ] +[[package]] +name = "which" +version = "6.0.3" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b4ee928febd44d98f2f459a4a79bd4d928591333a494a10a868418ac1b39cf1f" +dependencies = [ + "either", + "home", + "rustix 0.38.44", + "winsafe", +] + [[package]] name = "which" version = "8.0.0" @@ -8866,6 +10905,17 @@ dependencies = [ "windows-link 0.1.3", ] +[[package]] +name = "windows-registry" +version = "0.6.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "02752bf7fbdcce7f2a27a742f798510f3e5ad88dbe84871e5168e2120c3d5720" +dependencies = [ + "windows-link 0.2.1", + "windows-result 0.4.1", + "windows-strings 0.5.1", +] + [[package]] name = "windows-result" version = "0.1.2" @@ -9290,18 +11340,21 @@ version = "0.46.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f17a85883d4e6d00e8a97c586de764dabcc06133f7f1d55dce5cdc070ad7fe59" -[[package]] -name = "write16" -version = "1.0.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d1890f4022759daae28ed4fe62859b1236caebfc61ede2f63ed4e695f3f6d936" - [[package]] name = "writeable" version = "0.6.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "9edde0db4769d2dc68579893f2306b26c6ecfbe0ef499b013d731b7b9247e0b9" +[[package]] +name = "wyz" +version = "0.5.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "05f360fc0b24296329c78fda852a1e9ae82de9cf7b27dae4b7f62f118f77b9ed" +dependencies = [ + "tap", +] + [[package]] name = "xattr" version = "1.6.1" @@ -9362,12 +11415,6 @@ version = "0.13.6" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "66fee0b777b0f5ac1c69bb06d361268faafa61cd4682ae064a171c16c433e9e4" -[[package]] -name = "xsum" -version = "0.1.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0637d3a5566a82fa5214bae89087bc8c9fb94cd8e8a3c07feb691bb8d9c632db" - [[package]] name = "xterm-color" version = "1.0.2" @@ -9394,6 +11441,12 @@ dependencies = [ "hashlink 0.10.0", ] +[[package]] +name = "yansi" +version = "1.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "cfe53a6657fd280eaa890a3bc59152892ffa3e30101319d168b781ed6529b049" + [[package]] name = "yoke" version = "0.8.1" @@ -9555,6 +11608,19 @@ version = "1.0.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "e9747e91771f56fd7893e1164abd78febd14a670ceec257caad15e051de35f06" +[[package]] +name = "zoneinfo64" +version = "0.2.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "bb2e5597efbe7c421da8a7fd396b20b571704e787c21a272eecf35dfe9d386f0" +dependencies = [ + "calendrical_calculations", + "icu_locale_core", + "potential_utf", + "resb", + "serde", +] + [[package]] name = "zopfli" version = "0.8.3" diff --git a/crates/goose-cli/src/session/output.rs b/crates/goose-cli/src/session/output.rs index fb4a778a795a..297a3d133c32 100644 --- a/crates/goose-cli/src/session/output.rs +++ b/crates/goose-cli/src/session/output.rs @@ -286,7 +286,7 @@ fn render_tool_request(req: &ToolRequest, theme: Theme, debug: bool) { Ok(call) => match call.name.to_string().as_str() { "developer__text_editor" => render_text_editor_request(call, debug), "developer__shell" => render_shell_request(call, debug), - "code_execution__execute_code" => render_execute_code_request(call, debug), + "code_execution__execute" => render_execute_code_request(call, debug), "subagent" => render_subagent_request(call, debug), "todo__write" => render_todo_request(call, debug), _ => render_default_request(call, debug), @@ -462,57 +462,25 @@ fn render_shell_request(call: &CallToolRequestParams, debug: bool) { } fn render_execute_code_request(call: &CallToolRequestParams, debug: bool) { - let tool_graph = call + let code = call .arguments .as_ref() - .and_then(|args| args.get("tool_graph")) - .and_then(Value::as_array) - .filter(|arr| !arr.is_empty()); + .and_then(|args| args.get("code")) + .and_then(Value::as_str) + .filter(|c| !c.is_empty()); - let Some(tool_graph) = tool_graph else { + let Some(code) = code else { return render_default_request(call, debug); }; - let count = tool_graph.len(); - let plural = if count == 1 { "" } else { "s" }; println!(); println!( - "─── {} tool call{} | {} ──────────────────────────", - style(count).cyan(), - plural, - style("execute_code").magenta().dim() + "─── {} tool call | {} ──────────────────────────", + style("Code Mode").cyan(), + style("execute").magenta().dim() ); + println!("{}", style(code).green()); - for (i, node) in tool_graph.iter().filter_map(Value::as_object).enumerate() { - let tool = node - .get("tool") - .and_then(Value::as_str) - .unwrap_or("unknown"); - let desc = node - .get("description") - .and_then(Value::as_str) - .unwrap_or(""); - let deps: Vec<_> = node - .get("depends_on") - .and_then(Value::as_array) - .into_iter() - .flatten() - .filter_map(Value::as_u64) - .map(|d| (d + 1).to_string()) - .collect(); - let deps_str = if deps.is_empty() { - String::new() - } else { - format!(" (uses {})", deps.join(", ")) - }; - println!( - " {}. {}: {}{}", - style(i + 1).dim(), - style(tool).cyan(), - style(desc).green(), - style(deps_str).dim() - ); - } println!(); } diff --git a/crates/goose/Cargo.toml b/crates/goose/Cargo.toml index 3aadb82adbf2..9eded044e47a 100644 --- a/crates/goose/Cargo.toml +++ b/crates/goose/Cargo.toml @@ -12,7 +12,10 @@ workspace = true [build-dependencies] tokio = { workspace = true } -reqwest = { workspace = true, features = ["json", "rustls-tls-native-roots"], default-features = false } +reqwest = { workspace = true, features = [ + "json", + "rustls-tls-native-roots", +], default-features = false } [dependencies] lru = "0.16" @@ -27,7 +30,19 @@ anyhow = { workspace = true } thiserror = "1.0" futures = { workspace = true } dirs = "5.0" -reqwest = { workspace = true, features = ["rustls-tls-native-roots", "json", "cookies", "gzip", "brotli", "deflate", "zstd", "charset", "http2", "stream", "blocking"], default-features = false } +reqwest = { workspace = true, features = [ + "rustls-tls-native-roots", + "json", + "cookies", + "gzip", + "brotli", + "deflate", + "zstd", + "charset", + "http2", + "stream", + "blocking", +], default-features = false } tokio = { workspace = true } serde = { version = "1.0", features = ["derive"] } serde_json = { workspace = true } @@ -48,7 +63,7 @@ sha2 = "0.10" base64 = { workspace = true } url = { workspace = true } axum = "0.8.1" -webbrowser = {workspace = true} +webbrowser = { workspace = true } lazy_static = "1.5.0" tracing = { workspace = true } tracing-subscriber = "0.3" @@ -56,8 +71,16 @@ tracing-opentelemetry = "0.28" opentelemetry = "0.27" opentelemetry-appender-tracing = "0.27" opentelemetry_sdk = { version = "0.27", features = ["rt-tokio", "metrics"] } -opentelemetry-otlp = { version = "0.27", features = ["http-proto", "reqwest-client"] } -keyring = { version = "3.6.2", features = ["apple-native", "windows-native", "sync-secret-service", "vendored"] } +opentelemetry-otlp = { version = "0.27", features = [ + "http-proto", + "reqwest-client", +] } +keyring = { version = "3.6.2", features = [ + "apple-native", + "windows-native", + "sync-secret-service", + "vendored", +] } serde_yaml = "0.9.34" once_cell = "1.20.2" etcetera = { workspace = true } @@ -66,7 +89,12 @@ utoipa = { version = "4.1", features = ["chrono"] } tokio-cron-scheduler = "0.14.0" urlencoding = "2.1" v_htmlescape = "0.15" -sqlx = { version = "0.8", features = ["runtime-tokio-rustls", "sqlite", "chrono", "json"] } +sqlx = { version = "0.8", features = [ + "runtime-tokio-rustls", + "sqlite", + "chrono", + "json", +] } # For Bedrock provider aws-config = { version = "=1.8.12", features = ["behavior-version-latest"] } @@ -91,15 +119,17 @@ goose-mcp = { path = "../goose-mcp" } zip = "0.6" sys-info = "0.9" -schemars = { version = "1.0.4", default-features = false, features = ["derive"] } +schemars = { version = "1.0.4", default-features = false, features = [ + "derive", +] } insta = "1.43.2" paste = "1.0.0" posthog-rs = "0.3.7" shellexpand = "3.1.1" indexmap = "2.12.0" ignore = { workspace = true } -which = { workspace = true} -boa_engine = "0.21.0" +which = { workspace = true } +pctx_code_mode = "^0.2.1" unbinder = "0.1.7" [target.'cfg(target_os = "windows")'.dependencies] diff --git a/crates/goose/src/agents/code_execution_extension.rs b/crates/goose/src/agents/code_execution_extension.rs index 93486ddee68b..6b2f8af8c454 100644 --- a/crates/goose/src/agents/code_execution_extension.rs +++ b/crates/goose/src/agents/code_execution_extension.rs @@ -1,420 +1,31 @@ use crate::agents::extension::PlatformExtensionContext; -use crate::agents::extension_manager::get_parameter_names; use crate::agents::mcp_client::{Error, McpClientTrait}; use anyhow::Result; use async_trait::async_trait; -use boa_engine::builtins::promise::PromiseState; -use boa_engine::module::{MapModuleLoader, Module, SyntheticModuleInitializer}; -use boa_engine::{js_string, Context, JsNativeError, JsString, JsValue, NativeFunction, Source}; use indoc::indoc; -use regex::Regex; +use pctx_code_mode::model::{CallbackConfig, ExecuteInput, GetFunctionDetailsInput}; +use pctx_code_mode::{CallbackRegistry, CodeMode}; use rmcp::model::{ CallToolRequestParams, CallToolResult, Content, Implementation, InitializeResult, JsonObject, ListToolsResult, ProtocolVersion, RawContent, ServerCapabilities, Tool as McpTool, ToolAnnotations, ToolsCapability, }; use schemars::{schema_for, JsonSchema}; -use serde::{Deserialize, Serialize}; -use serde_json::Value; -use std::collections::{BTreeMap, BTreeSet}; -use std::rc::Rc; -use tokio::sync::mpsc; +use serde_json::{json, Value}; +use std::collections::hash_map::DefaultHasher; +use std::future::Future; +use std::hash::{Hash, Hasher}; +use std::pin::Pin; +use std::sync::Arc; +use tokio::sync::RwLock; use tokio_util::sync::CancellationToken; pub static EXTENSION_NAME: &str = "code_execution"; -type ToolCallRequest = ( - String, - String, - tokio::sync::oneshot::Sender>, -); - -#[derive(Debug, Clone, Serialize, Deserialize, JsonSchema)] -struct ToolGraphNode { - /// Tool name in format "server/tool" (e.g., "developer/shell") - tool: String, - /// Brief description of what this call does (e.g., "list files in /src") - description: String, - /// Indices of nodes this depends on (empty if no dependencies) - #[serde(default)] - depends_on: Vec, -} - -#[derive(Debug, Serialize, Deserialize, JsonSchema)] -struct ExecuteCodeParams { - /// JavaScript code with ES6 imports for MCP tools. - code: String, - /// DAG of tool calls showing execution flow. Each node represents a tool call. - /// Use depends_on to show data flow (e.g., node 1 uses output from node 0). - #[serde(default)] - tool_graph: Vec, -} - -#[derive(Debug, Serialize, Deserialize, JsonSchema)] -struct ReadModuleParams { - /// Module path format: - /// - For entire server: "server_name" - /// - For specific tool: "server_name/tool_name" - module_path: String, -} - -#[derive(Debug, Serialize, Deserialize, JsonSchema)] -struct SearchModulesParams { - /// Search terms to find servers/tools (case-insensitive). Can be a single string or array of strings. - terms: SearchTerms, - /// If true, treat search terms as regex patterns - #[serde(default)] - regex: bool, -} - -#[derive(Debug, Serialize, Deserialize, JsonSchema)] -#[serde(untagged)] -enum SearchTerms { - Single(String), - Multiple(Vec), -} - -#[derive(Debug, Default, Deserialize)] -struct InputSchema { - #[serde(default)] - properties: BTreeMap, - #[serde(default)] - required: Vec, -} - -fn quote_join(vals: &[&str]) -> String { - format!("\"{}\"", vals.join("\" | \"")) -} - -fn infer_type(schema: &Value) -> Option { - if schema.get("properties").is_some() { - Some("object".to_string()) - } else if schema.get("items").is_some() { - Some("array".to_string()) - } else { - None - } -} - -fn extract_type_from_schema(schema: &Value) -> Option { - // enum array (github-mcp style) - if let Some(arr) = schema.get("enum").and_then(|e| e.as_array()) { - let vals: Vec<_> = arr.iter().filter_map(|v| v.as_str()).collect(); - if !vals.is_empty() { - return Some(quote_join(&vals)); - } - } - - // oneOf with const (schemars enums) - if let Some(arr) = schema.get("oneOf").and_then(|o| o.as_array()) { - let vals: Vec<_> = arr - .iter() - .filter_map(|v| v.get("const")?.as_str()) - .collect(); - if !vals.is_empty() { - return Some(quote_join(&vals)); - } - } - - // anyOf (Option or unions) - if let Some(arr) = schema.get("anyOf").and_then(|o| o.as_array()) { - let non_null: Vec<_> = arr - .iter() - .filter(|v| v.get("type").and_then(|t| t.as_str()) != Some("null")) - .collect(); - if non_null.len() == 1 { - return extract_type_from_schema(non_null[0]).or_else(|| infer_type(non_null[0])); - } - if non_null.len() > 1 { - let types: Vec<_> = non_null - .iter() - .filter_map(|v| extract_type_from_schema(v).or_else(|| infer_type(v))) - .collect(); - if !types.is_empty() { - return Some(types.join(" | ")); - } - } - } - - // type field (string or array) - match schema.get("type") { - Some(Value::String(s)) if s == "array" => { - let item_type = schema - .get("items") - .and_then(extract_type_from_schema) - .unwrap_or_else(|| "any".to_string()); - Some(if item_type == "any" { - "array".into() - } else { - format!("{item_type}[]") - }) - } - Some(Value::String(s)) if s == "object" => { - let Some(props) = schema.get("properties").and_then(|p| p.as_object()) else { - return Some("object".to_string()); - }; - let required: Vec<_> = schema - .get("required") - .and_then(|r| r.as_array()) - .map(|arr| arr.iter().filter_map(|v| v.as_str()).collect()) - .unwrap_or_default(); - let mut fields: Vec<_> = props - .iter() - .map(|(name, schema)| { - let ty = extract_type_from_schema(schema).unwrap_or_else(|| "any".into()); - let opt = if required.contains(&name.as_str()) { - "" - } else { - "?" - }; - format!("{name}{opt}: {ty}") - }) - .collect(); - fields.sort(); - Some(format!("{{ {} }}", fields.join(", "))) - } - Some(Value::String(s)) => Some(s.clone()), - Some(Value::Array(arr)) => { - let non_null: Vec<_> = arr - .iter() - .filter_map(|v| v.as_str()) - .filter(|s| *s != "null") - .collect(); - match non_null.len() { - 0 => None, - 1 => Some(non_null[0].to_string()), - _ => Some(non_null.join(" | ")), - } - } - _ => None, - } -} - -struct ToolInfo { - server_name: String, - tool_name: String, - full_name: String, - description: String, - params: Vec<(String, String, bool)>, - return_type: String, -} - -impl ToolInfo { - fn from_mcp_tool(tool: &McpTool) -> Option { - let (server_name, tool_name) = tool.name.as_ref().split_once("__")?; - let param_names = get_parameter_names(tool); - - let mut schema_value = Value::Object(tool.input_schema.as_ref().clone()); - let _ = unbinder::dereference_schema(&mut schema_value, unbinder::Options::default()); - let schema: InputSchema = serde_json::from_value(schema_value).unwrap_or_default(); - - let params = param_names - .iter() - .map(|name| { - let ty = schema - .properties - .get(name) - .and_then(extract_type_from_schema) - .unwrap_or_else(|| "any".to_string()); - let required = schema.required.contains(name); - (name.clone(), ty, required) - }) - .collect(); - - let return_type = tool - .output_schema - .as_ref() - .and_then(|schema| { - let mut schema_value = Value::Object(schema.as_ref().clone()); - let _ = - unbinder::dereference_schema(&mut schema_value, unbinder::Options::default()); - extract_type_from_schema(&schema_value) - }) - .unwrap_or_else(|| "string".to_string()); - - Some(Self { - server_name: server_name.to_string(), - tool_name: tool_name.to_string(), - full_name: tool.name.as_ref().to_string(), - description: tool - .description - .as_ref() - .map(|d| d.as_ref().to_string()) - .unwrap_or_default(), - params, - return_type, - }) - } - - fn to_signature(&self) -> String { - let params = self - .params - .iter() - .map(|(name, ty, req)| format!("{name}{}: {ty}", if *req { "" } else { "?" })) - .collect::>() - .join(", "); - let desc = self.description.lines().next().unwrap_or(""); - format!( - "{}[\"{}\"]({{{params}}}): {} - {desc}", - self.server_name, self.tool_name, self.return_type - ) - } -} - -thread_local! { - static CALL_TX: std::cell::RefCell>> = - const { std::cell::RefCell::new(None) }; - static RESULT_CELL: std::cell::RefCell> = - const { std::cell::RefCell::new(None) }; -} - -fn create_server_module( - server_name: &str, - server_tools: &[&ToolInfo], - ctx: &mut Context, -) -> Module { - let tool_data: Vec<(String, String)> = server_tools - .iter() - .map(|t| (t.tool_name.clone(), t.full_name.clone())) - .collect(); - - let mut export_names: Vec = server_tools - .iter() - .map(|t| js_string!(t.tool_name.as_str())) - .collect(); - export_names.push(js_string!(server_name)); - - let server_name_owned = server_name.to_string(); - - Module::synthetic( - &export_names, - SyntheticModuleInitializer::from_copy_closure_with_captures( - |module, (tools, server_name), context| { - let namespace_obj = boa_engine::JsObject::with_null_proto(); - - for (tool_name, full_name) in tools.iter() { - let func = create_tool_function(full_name.clone()); - let js_func = func.to_js_function(context.realm()); - module.set_export(&js_string!(tool_name.as_str()), js_func.clone().into())?; - namespace_obj - .set(js_string!(tool_name.as_str()), js_func, false, context) - .map_err(|e| { - JsNativeError::error().with_message(format!("Failed to set prop: {e}")) - })?; - } - module.set_export(&js_string!(server_name.as_str()), namespace_obj.into())?; - - Ok(()) - }, - (tool_data, server_name_owned), - ), - None, - None, - ctx, - ) -} - -fn parse_result_to_js(result: &str, ctx: &mut Context) -> JsValue { - serde_json::from_str::(result) - .ok() - .and_then(|v| JsValue::from_json(&v, ctx).ok()) - .unwrap_or_else(|| JsValue::from(js_string!(result))) -} - -fn create_tool_function(full_tool_name: String) -> NativeFunction { - NativeFunction::from_copy_closure_with_captures( - |_this, args, full_name: &String, ctx| { - let args_json = args - .first() - .cloned() - .unwrap_or(JsValue::undefined()) - .to_json(ctx) - .map_err(|e| JsNativeError::error().with_message(e.to_string()))? - .unwrap_or(Value::Object(serde_json::Map::new())); - - let args_str = serde_json::to_string(&args_json).unwrap_or_else(|_| "{}".to_string()); - let (tx, rx) = tokio::sync::oneshot::channel(); - - CALL_TX - .with(|call_tx| { - call_tx - .borrow() - .as_ref() - .and_then(|sender| sender.send((full_name.clone(), args_str, tx)).ok()) - }) - .ok_or_else(|| JsNativeError::error().with_message("Channel unavailable"))?; - - rx.blocking_recv() - .map_err(|e| e.to_string()) - .and_then(|r| r) - .map(|result| parse_result_to_js(&result, ctx)) - .map_err(|e| JsNativeError::error().with_message(e).into()) - }, - full_tool_name, - ) -} - -fn run_js_module( - code: &str, - tools: &[ToolInfo], - call_tx: mpsc::UnboundedSender, -) -> Result { - CALL_TX.with(|tx| *tx.borrow_mut() = Some(call_tx)); - RESULT_CELL.with(|cell| *cell.borrow_mut() = None); - - let loader = Rc::new(MapModuleLoader::new()); - let mut ctx = Context::builder() - .module_loader(loader.clone()) - .build() - .map_err(|e| format!("Failed to create JS context: {e}"))?; - - let record_result = NativeFunction::from_copy_closure(|_this, args, ctx| { - let value = args.first().cloned().unwrap_or(JsValue::undefined()); - let fallback = || value.display().to_string(); - let result_str = value - .to_json(ctx) - .ok() - .flatten() - .map(|v| serde_json::to_string_pretty(&v).unwrap_or_else(|_| fallback())) - .unwrap_or_else(fallback); - RESULT_CELL.with(|cell| *cell.borrow_mut() = Some(result_str)); - Ok(value) - }); - - ctx.register_global_callable(js_string!("record_result"), 1, record_result) - .map_err(|e| format!("Failed to register record_result: {e}"))?; - - let mut by_server: BTreeMap<&str, Vec<&ToolInfo>> = BTreeMap::new(); - for tool in tools { - by_server.entry(&tool.server_name).or_default().push(tool); - } - - for (server_name, server_tools) in &by_server { - let module = create_server_module(server_name, server_tools, &mut ctx); - loader.insert(*server_name, module); - } - - let user_module = Module::parse(Source::from_bytes(code), None, &mut ctx) - .map_err(|e| format!("Parse error: {e}"))?; - loader.insert("__main__", user_module.clone()); - - let promise = user_module.load_link_evaluate(&mut ctx); - ctx.run_jobs() - .map_err(|e| format!("Job execution error: {e}"))?; - - match promise.state() { - PromiseState::Fulfilled(_) => { - let result = RESULT_CELL.with(|cell| cell.borrow().clone()); - Ok(result.unwrap_or_else(|| "undefined".to_string())) - } - PromiseState::Rejected(err) => Err(format!("Module error: {}", err.display())), - PromiseState::Pending => Err("Module evaluation did not complete".to_string()), - } -} - pub struct CodeExecutionClient { info: InitializeResult, context: PlatformExtensionContext, + state: RwLock>, } impl CodeExecutionClient { @@ -440,272 +51,220 @@ impl CodeExecutionClient { website_url: None, }, instructions: Some(indoc! {r#" - BATCH MULTIPLE TOOL CALLS INTO ONE execute_code CALL. + BATCH MULTIPLE TOOL CALLS INTO ONE execute CALL. This extension exists to reduce round-trips. When a task requires multiple tool calls: - - WRONG: Multiple execute_code calls, each with one tool - - RIGHT: One execute_code call with a script that calls all needed tools + - WRONG: Multiple execute calls, each with one tool + - RIGHT: One execute call with a script that calls all needed tools - IMPORTANT: All tool calls are SYNCHRONOUS. Do NOT use async/await. + IMPORTANT: All tool calls are ASYNC. Use await for each call. Workflow: - 1. Use the read_module tool to discover tools and signatures + 1. Use the list_functions and get_function_details tools to discover tools and signatures 2. Write ONE script that imports and calls ALL tools needed for the task 3. Chain results: use output from one tool as input to the next + 4. Only return and console.log data you need, tools could have very large responses. "#}.to_string()), }; - Ok(Self { info, context }) + Ok(Self { + info, + context, + state: RwLock::new(None), + }) } - async fn get_tool_infos(&self, session_id: &str) -> Vec { - let Some(manager) = self + async fn load_callback_configs(&self, session_id: &str) -> Option> { + let manager = self .context .extension_manager .as_ref() - .and_then(|w| w.upgrade()) - else { - return Vec::new(); - }; + .and_then(|w| w.upgrade())?; - match manager + let tools = manager .get_prefixed_tools_excluding(session_id, EXTENSION_NAME) .await + .ok()?; + let mut cfgs = vec![]; + for tool in tools { + let (server_name, tool_name) = tool.name.as_ref().split_once("__")?; + cfgs.push(CallbackConfig { + name: tool_name.into(), + namespace: server_name.into(), + description: tool.description.as_ref().map(|d| d.to_string()), + input_schema: Some(json!(tool.input_schema)), + output_schema: tool.output_schema.as_ref().map(|s| json!(s)), + }) + } + Some(cfgs) + } + + /// Get the cached CodeMode, rebuilding if callback configs have changed + async fn get_code_mode(&self, session_id: &str) -> Result { + let cfgs = self + .load_callback_configs(session_id) + .await + .ok_or("Failed to load callback configs")?; + let current_hash = CodeModeState::hash(&cfgs); + + // Use cache if no state change { - Ok(tools) if !tools.is_empty() => { - tools.iter().filter_map(ToolInfo::from_mcp_tool).collect() + let guard = self.state.read().await; + if let Some(state) = guard.as_ref() { + if state.hash == current_hash { + return Ok(state.code_mode.clone()); + } + } + } + + // Rebuild CodeMode & cache + let mut guard = self.state.write().await; + // Double-check after acquiring write lock + if let Some(state) = guard.as_ref() { + if state.hash == current_hash { + return Ok(state.code_mode.clone()); } - _ => Vec::new(), } + + let state = CodeModeState::new(cfgs)?; + let code_mode = state.code_mode.clone(); + *guard = Some(state); + Ok(code_mode) } - async fn handle_execute_code( + /// Build a CallbackRegistry with all tool callbacks registered + fn build_callback_registry( &self, session_id: &str, - arguments: Option, - ) -> Result, String> { - let code = arguments + code_mode: &CodeMode, + ) -> Result { + let manager = self + .context + .extension_manager .as_ref() - .and_then(|a| a.get("code")) - .and_then(|v| v.as_str()) - .ok_or("Missing required parameter: code")? - .to_string(); + .and_then(|w| w.upgrade()) + .ok_or("Extension manager not available")?; + + let registry = CallbackRegistry::default(); + for cfg in code_mode.callbacks() { + let full_name = format!("{}__{}", &cfg.namespace, &cfg.name); + let callback = create_tool_callback(session_id.to_string(), full_name, manager.clone()); + registry + .add(&cfg.id(), callback) + .map_err(|e| format!("Failed to register callback: {e}"))?; + } - let tools = self.get_tool_infos(session_id).await; - let (call_tx, call_rx) = mpsc::unbounded_channel(); - let tool_handler = tokio::spawn(Self::run_tool_handler( - session_id.to_string(), - call_rx, - self.context.extension_manager.clone(), - )); + Ok(registry) + } - let js_result = tokio::task::spawn_blocking(move || run_js_module(&code, &tools, call_tx)) - .await - .map_err(|e| format!("JS execution task failed: {e}"))?; + /// Handle the list_functions tool call + async fn handle_list_functions(&self, session_id: &str) -> Result, String> { + let code_mode = self.get_code_mode(session_id).await?; + let output = code_mode.list_functions(); - tool_handler.abort(); - js_result.map(|r| vec![Content::text(format!("Result: {r}"))]) + Ok(vec![Content::text(output.code)]) } - async fn handle_read_module( + /// Handle the get_function_details tool call + async fn handle_get_function_details( &self, session_id: &str, arguments: Option, ) -> Result, String> { - let path = arguments - .as_ref() - .and_then(|a| a.get("module_path")) - .and_then(|v| v.as_str()) - .ok_or("Missing required parameter: module_path")?; + let input: GetFunctionDetailsInput = arguments + .map(|args| serde_json::from_value(Value::Object(args))) + .transpose() + .map_err(|e| format!("Failed to parse arguments: {e}"))? + .ok_or("Missing arguments for get_function_details")?; - let tools = self.get_tool_infos(session_id).await; - let parts: Vec<&str> = path.trim_start_matches('/').split('/').collect(); + let code_mode = self.get_code_mode(session_id).await?; + let output = code_mode.get_function_details(input); - match parts.as_slice() { - [server] => { - let server_tools: Vec<_> = - tools.iter().filter(|t| t.server_name == *server).collect(); - if server_tools.is_empty() { - return Err(format!("Module not found: {server}")); - } - let sigs: Vec<_> = server_tools.iter().map(|t| t.to_signature()).collect(); - Ok(vec![Content::text(format!( - "// import * as {server} from \"{server}\";\n\n{}", - sigs.join("\n") - ))]) - } - [server, tool] => { - let t = tools - .iter() - .find(|t| t.server_name == *server && t.tool_name == *tool) - .ok_or_else(|| format!("Tool not found: {server}/{tool}"))?; - Ok(vec![Content::text(format!( - "// import * as {server} from \"{server}\";\n\n{}\n\n{}", - t.to_signature(), - t.description - ))]) - } - _ => Err(format!( - "Invalid path: {path}. Use 'server' or 'server/tool'" - )), - } + Ok(vec![Content::text(output.code)]) } - async fn handle_search_modules( + /// Handle the execute tool call + async fn handle_execute( &self, session_id: &str, arguments: Option, ) -> Result, String> { - let terms = arguments - .as_ref() - .and_then(|a| a.get("terms")) - .ok_or("Missing required parameter: terms")?; - - let terms_vec = if let Some(arr) = terms.as_array() { - arr.iter() - .filter_map(|v| v.as_str().map(String::from)) - .collect() - } else if let Some(s) = terms.as_str() { - if s.starts_with('[') && s.ends_with(']') { - serde_json::from_str::>(s).unwrap_or_else(|_| vec![s.to_string()]) - } else { - vec![s.to_string()] - } - } else { - return Err("Parameter 'terms' must be a string or array of strings".to_string()); - }; - - if terms_vec.is_empty() { - return Err("Search terms cannot be empty".to_string()); - } - - let use_regex = arguments - .as_ref() - .and_then(|a| a.get("regex")) - .and_then(|v| v.as_bool()) - .unwrap_or(false); - - let tools = self.get_tool_infos(session_id).await; - Self::handle_search(&tools, &terms_vec, use_regex) - } - - fn handle_search( - tools: &[ToolInfo], - terms: &[String], - use_regex: bool, - ) -> Result, String> { - enum Matcher { - Regex(Vec), - Plain(Vec), - } - - let matcher = if use_regex { - let patterns: Result, _> = terms - .iter() - .map(|t| { - Regex::new(&format!("(?i){t}")).map_err(|e| format!("Invalid regex '{t}': {e}")) - }) - .collect(); - Matcher::Regex(patterns?) - } else { - Matcher::Plain(terms.iter().map(|t| t.to_lowercase()).collect()) - }; - - let matches_any = |text: &str| -> bool { - match &matcher { - Matcher::Regex(patterns) => patterns.iter().any(|p| p.is_match(text)), - Matcher::Plain(terms) => { - let lower = text.to_lowercase(); - terms.iter().any(|t| lower.contains(t)) - } - } - }; - - let mut matching_servers: BTreeSet<&str> = BTreeSet::new(); - let mut matching_tools: Vec<&ToolInfo> = Vec::new(); - - for tool in tools { - if matches_any(&tool.server_name) { - matching_servers.insert(&tool.server_name); - } - if matches_any(&tool.tool_name) || matches_any(&tool.description) { - matching_tools.push(tool); - } - } - - if matching_servers.is_empty() && matching_tools.is_empty() { - return Err(format!("No matches found for: {}", terms.join(", "))); - } - - let mut output = String::new(); - - if !matching_servers.is_empty() { - output.push_str("## Matching Servers\n"); - for server in &matching_servers { - let count = tools.iter().filter(|t| t.server_name == *server).count(); - output.push_str(&format!("- {server} ({count} tools)\n")); - } - output.push('\n'); - } - - if !matching_tools.is_empty() { - output.push_str("## Matching Tools\n"); - output.push_str("Use the read_module tool for full signature and import syntax\n\n"); - for tool in &matching_tools { - output.push_str(&format!( - "- {}/{}: {}\n", - tool.server_name, - tool.tool_name, - tool.description.lines().next().unwrap_or("") - )); - } - } + let input: ExecuteInput = arguments + .map(|args| serde_json::from_value(Value::Object(args))) + .transpose() + .map_err(|e| format!("Failed to parse arguments: {e}"))? + .ok_or("Missing arguments for execute")?; + + let code_mode = self.get_code_mode(session_id).await?; + let registry = self.build_callback_registry(session_id, &code_mode)?; + let code = input.code.clone(); + + // Deno runtime is not Send, so we need to run it in a blocking task + // with its own tokio runtime + let output = tokio::task::spawn_blocking(move || { + let rt = tokio::runtime::Builder::new_current_thread() + .enable_all() + .build() + .map_err(|e| format!("Failed to create runtime: {e}"))?; + + rt.block_on(async move { + code_mode + .execute(&code, Some(registry)) + .await + .map_err(|e| format!("Execution error: {e}")) + }) + }) + .await + .map_err(|e| format!("Execution task failed: {e}"))??; - Ok(vec![Content::text(output)]) + Ok(vec![Content::text(output.markdown())]) } +} - async fn run_tool_handler( - session_id: String, - mut call_rx: mpsc::UnboundedReceiver, - extension_manager: Option>, - ) { - while let Some((tool_name, arguments, response_tx)) = call_rx.recv().await { - let result = match extension_manager.as_ref().and_then(|w| w.upgrade()) { - Some(manager) => { - let tool_call = CallToolRequestParams { - meta: None, - task: None, - name: tool_name.into(), - arguments: serde_json::from_str(&arguments).ok(), - }; - match manager - .dispatch_tool_call(&session_id, tool_call, CancellationToken::new()) - .await - { - Ok(dispatch_result) => match dispatch_result.result.await { - Ok(result) => Ok(if let Some(sc) = &result.structured_content { - serde_json::to_string(sc).unwrap_or_default() - } else { - result - .content - .iter() - .filter_map(|c| match &c.raw { - RawContent::Text(t) => Some(t.text.clone()), - _ => None, - }) - .collect::>() - .join("\n") - }), - Err(e) => Err(format!("Tool error: {}", e.message)), - }, - Err(e) => Err(format!("Dispatch error: {e}")), - } - } - None => Err("Extension manager not available".to_string()), +fn create_tool_callback( + session_id: String, + full_name: String, + manager: Arc, +) -> pctx_code_mode::CallbackFn { + Arc::new(move |args: Option| { + let session_id = session_id.clone(); + let full_name = full_name.clone(); + let manager = manager.clone(); + Box::pin(async move { + let tool_call = CallToolRequestParams { + task: None, + meta: None, + name: full_name.into(), + arguments: args.and_then(|v| v.as_object().cloned()), }; - let _ = response_tx.send(result); - } - } + match manager + .dispatch_tool_call(&session_id, tool_call, CancellationToken::new()) + .await + { + Ok(dispatch_result) => match dispatch_result.result.await { + Ok(result) => { + if let Some(sc) = &result.structured_content { + Ok(serde_json::to_value(sc).unwrap_or(Value::Null)) + } else { + let text: String = result + .content + .iter() + .filter_map(|c| match &c.raw { + RawContent::Text(t) => Some(t.text.clone()), + _ => None, + }) + .collect::>() + .join("\n"); + // Try to parse as JSON, otherwise return as string + Ok(serde_json::from_str(&text).unwrap_or(Value::String(text))) + } + } + Err(e) => Err(format!("Tool error: {}", e.message)), + }, + Err(e) => Err(format!("Dispatch error: {e}")), + } + }) as Pin> + Send>> + }) } #[async_trait] @@ -723,112 +282,101 @@ impl McpClientTrait for CodeExecutionClient { .expect("valid schema") } + // Empty schema for list_functions (no parameters) + let empty_schema: JsonObject = serde_json::from_value(json!({ + "type": "object", + "properties": {}, + "required": [] + })) + .expect("valid schema"); + Ok(ListToolsResult { tools: vec![ McpTool::new( - "execute_code".to_string(), + "list_functions".to_string(), indoc! {r#" - Batch multiple MCP tool calls into ONE execution. This is the primary purpose of this tool. - - CRITICAL: Always combine related operations into a single execute_code call. - - WRONG: execute_code to read → execute_code to write (2 calls) - - RIGHT: execute_code that reads AND writes in one script (1 call) - - EXAMPLE - Read file and write to another (ONE call): - ```javascript - import { text_editor } from "developer"; - const content = text_editor({ path: "/path/to/source.md", command: "view" }); - text_editor({ path: "/path/to/dest.md", command: "write", file_text: content }); - record_result({ copied: true }); - ``` - - EXAMPLE - Multiple operations chained: - ```javascript - import { shell, text_editor } from "developer"; - const files = shell({ command: "ls -la" }); - const readme = text_editor({ path: "./README.md", command: "view" }); - const status = shell({ command: "git status" }); - record_result({ files, readme, status }); - ``` - - SYNTAX: - - Import: import { tool1, tool2 } from "serverName"; - - Call: toolName({ param1: value, param2: value }) - - Result: record_result(value) - call this to return a value from the script - - All calls are synchronous, return strings - - TOOL_GRAPH: Always provide tool_graph to describe the execution flow for the UI. - Each node has: tool (server/name), description (what it does), depends_on (indices of dependencies). - Example for chained operations: - [ - {"tool": "developer/shell", "description": "list files", "depends_on": []}, - {"tool": "developer/text_editor", "description": "read README.md", "depends_on": []}, - {"tool": "developer/text_editor", "description": "write output.txt", "depends_on": [0, 1]} - ] - - BEFORE CALLING: Use the read_module tool to check required parameters. + List all available functions across all namespaces. + + This will not return function input and output types. + After determining which functions are needed use + get_function_details to get input and output type + information about specific functions. "#} .to_string(), - schema::(), + empty_schema, ) .annotate(ToolAnnotations { - title: Some("Execute JavaScript".to_string()), - read_only_hint: Some(false), - destructive_hint: Some(true), - idempotent_hint: Some(false), - open_world_hint: Some(true), + title: Some("List functions".to_string()), + read_only_hint: Some(true), + destructive_hint: Some(false), + idempotent_hint: Some(true), + open_world_hint: Some(false), }), McpTool::new( - "read_module".to_string(), + "get_function_details".to_string(), indoc! {r#" - Read tool definitions to understand how to call them correctly. - - PATHS: - - "serverName" → lists all tools with signatures (shows required vs optional params) - - "serverName/toolName" → full details for one tool including description + Get detailed type information for specific functions. - USE THIS BEFORE execute_code when: - - You haven't used a tool before - - You're unsure of parameter names or which are required - - A previous call failed due to missing/wrong parameters + Provide a list of function identifiers in the format "Namespace.functionName" + (e.g., "Developer.shell", "Github.create_issue"). - The signature format is: toolName({ param1: type, param2?: type }): string - Parameters with ? are optional; others are required. + Returns full TypeScript interface definitions with parameter types, + return types, and descriptions for the requested functions. "#} .to_string(), - schema::(), + schema::(), ) .annotate(ToolAnnotations { - title: Some("Read module".to_string()), + title: Some("Get function details".to_string()), read_only_hint: Some(true), destructive_hint: Some(false), idempotent_hint: Some(true), open_world_hint: Some(false), }), McpTool::new( - "search_modules".to_string(), + "execute".to_string(), indoc! {r#" - Search for tools by name or description across all available modules. - - USAGE: - - Single term: terms="github" (just a plain string) - - Multiple terms: terms=["git", "shell"] (a JSON array, NOT a string) - - Regex patterns: terms="sh.*", regex=true - - IMPORTANT: Do NOT stringify arrays. Use terms=["a","b"] not terms="[\"a\",\"b\"]" + Execute TypeScript code that calls available functions. + + SYNTAX - TypeScript with async run() function: + ```typescript + async function run() { + // Access functions via Namespace.functionName({ params }) + const files = await Developer.shell({ command: "ls -la" }); + const readme = await Developer.text_editor({ path: "./README.md", command: "view" }); + return { files, readme }; + } + ``` - Returns matching servers and tools with descriptions. - Use this when you don't know which module contains the tool you need. + KEY RULES: + - Code MUST define an async function named `run()` + - All function calls are async - use `await` + - Access functions as Namespace.functionName() (e.g., Developer.shell, Github.create_issue) + - Return value from `run()` is the result, all `console.log()` output will be returned as well. + - Only functions from `list_functions()` are available - no `fetch()`, fs, or other Node/Deno APIs + - Variables don't persist between `execute()` calls - return or log anything you need later + - Add console.log() statements between API calls to track progress if errors occur + - Code runs in an isolated Deno sandbox with restricted network access + - If a function returns `any` do not assume it has any particular fields + + TOKEN USAGE WARNING: This tool could return LARGE responses if your code returns big objects. + To minimize tokens: + - Filter/map/reduce data IN YOUR CODE before returning + - Only return specific fields you need (e.g., return {id: result.id, count: items.length}) + - Use console.log() for intermediate results instead of returning everything + - Avoid returning full API responses - extract just what you need + + BEFORE CALLING: Use list_functions or get_function_details to check available functions and their parameters. "#} .to_string(), - schema::(), + schema::(), ) .annotate(ToolAnnotations { - title: Some("Search modules".to_string()), - read_only_hint: Some(true), - destructive_hint: Some(false), - idempotent_hint: Some(true), - open_world_hint: Some(false), + title: Some("Execute TypeScript".to_string()), + read_only_hint: Some(false), + destructive_hint: Some(true), + idempotent_hint: Some(false), + open_world_hint: Some(true), }), ], next_cursor: None, @@ -843,14 +391,17 @@ impl McpClientTrait for CodeExecutionClient { arguments: Option, _cancellation_token: CancellationToken, ) -> Result { - let content = match name { - "execute_code" => self.handle_execute_code(session_id, arguments).await, - "read_module" => self.handle_read_module(session_id, arguments).await, - "search_modules" => self.handle_search_modules(session_id, arguments).await, + let result = match name { + "list_functions" => self.handle_list_functions(session_id).await, + "get_function_details" => { + self.handle_get_function_details(session_id, arguments) + .await + } + "execute" => self.handle_execute(session_id, arguments).await, _ => Err(format!("Unknown tool: {name}")), }; - match content { + match result { Ok(content) => Ok(CallToolResult::success(content)), Err(error) => Ok(CallToolResult::error(vec![Content::text(format!( "Error: {error}" @@ -863,431 +414,57 @@ impl McpClientTrait for CodeExecutionClient { } async fn get_moim(&self, session_id: &str) -> Option { - let tools = self.get_tool_infos(session_id).await; - if tools.is_empty() { - return None; - } - - let mut servers: BTreeSet<&str> = BTreeSet::new(); - for tool in &tools { - servers.insert(&tool.server_name); - } - - let server_list: Vec<_> = servers.into_iter().collect(); + let code_mode = self.get_code_mode(session_id).await.ok()?; + let available: Vec<_> = code_mode + .list_functions() + .functions + .iter() + .map(|f| format!("{}.{}", &f.namespace, &f.name)) + .collect(); Some(format!( indoc::indoc! {r#" - ALWAYS batch multiple tool operations into ONE execute_code call. - - WRONG: Separate execute_code calls for read file, then write file - - RIGHT: One execute_code with a script that reads AND writes + ALWAYS batch multiple tool operations into ONE execute call. + - WRONG: Separate execute calls for read file, then write file + - RIGHT: One execute with an async run() function that reads AND writes - Modules: {} + Available namespaces: {} - Use the read_module tool to see signatures before calling unfamiliar tools. + Use the list_functions & get_function_details tools to see tool signatures and input/output types before calling unfamiliar tools. "#}, - server_list.join(", ") + available.join(", ") )) } } -#[cfg(test)] -mod tests { - use super::*; - use std::sync::Arc; - use test_case::test_case; - - #[tokio::test] - async fn test_execute_code_simple() { - let temp_dir = tempfile::tempdir().unwrap(); - let session_manager = Arc::new(crate::session::SessionManager::new( - temp_dir.path().to_path_buf(), - )); - let context = PlatformExtensionContext { - extension_manager: None, - session_manager, - }; - let client = CodeExecutionClient::new(context).unwrap(); - - let mut args = JsonObject::new(); - args.insert( - "code".to_string(), - Value::String("record_result(2 + 2)".to_string()), - ); - - let result = client - .call_tool( - "test-session-id", - "execute_code", - Some(args), - CancellationToken::new(), - ) - .await - .unwrap(); - - assert!(!result.is_error.unwrap_or(false)); - if let RawContent::Text(text) = &result.content[0].raw { - assert_eq!(text.text, "Result: 4"); - } else { - panic!("Expected text content"); - } - } - - #[tokio::test] - async fn test_record_result_outputs_valid_json() { - let temp_dir = tempfile::tempdir().unwrap(); - let session_manager = Arc::new(crate::session::SessionManager::new( - temp_dir.path().to_path_buf(), - )); - let context = PlatformExtensionContext { - extension_manager: None, - session_manager, - }; - let client = CodeExecutionClient::new(context).unwrap(); - - // Nested array in object - this triggers truncation with display() (e.g., "items: Array(3)") - let mut args = JsonObject::new(); - args.insert( - "code".to_string(), - Value::String("record_result({items: [1, 2, 3], count: 3})".to_string()), - ); - - let result = client - .call_tool( - "test-session-id", - "execute_code", - Some(args), - CancellationToken::new(), - ) - .await - .unwrap(); - - assert!(!result.is_error.unwrap_or(false)); - if let RawContent::Text(text) = &result.content[0].raw { - let json_str = text.text.strip_prefix("Result: ").unwrap_or(&text.text); - let parsed: serde_json::Value = serde_json::from_str(json_str) - .unwrap_or_else(|_| panic!("Output should be valid JSON, got: {}", text.text)); - assert_eq!(parsed["items"].as_array().unwrap().len(), 3); - assert_eq!(parsed["count"], 3); - } else { - panic!("Expected text content"); - } - } - - #[tokio::test] - async fn test_read_module_not_found() { - let temp_dir = tempfile::tempdir().unwrap(); - let session_manager = Arc::new(crate::session::SessionManager::new( - temp_dir.path().to_path_buf(), - )); - let context = PlatformExtensionContext { - extension_manager: None, - session_manager, - }; - let client = CodeExecutionClient::new(context).unwrap(); - - let mut args = JsonObject::new(); - args.insert( - "module_path".to_string(), - Value::String("nonexistent".to_string()), - ); - - let result = client - .handle_read_module("test-session-id", Some(args)) - .await; - assert!(result.is_err()); - } - - #[test] - fn test_search_plain_text() { - let tools = vec![ - ToolInfo { - server_name: "developer".to_string(), - tool_name: "shell".to_string(), - full_name: "developer__shell".to_string(), - description: "Execute shell commands".to_string(), - params: vec![("command".to_string(), "string".to_string(), true)], - return_type: "string".to_string(), - }, - ToolInfo { - server_name: "developer".to_string(), - tool_name: "text_editor".to_string(), - full_name: "developer__text_editor".to_string(), - description: "Edit text files".to_string(), - params: vec![("path".to_string(), "string".to_string(), true)], - return_type: "string".to_string(), - }, - ToolInfo { - server_name: "git".to_string(), - tool_name: "commit".to_string(), - full_name: "git__commit".to_string(), - description: "Commit changes to git".to_string(), - params: vec![("message".to_string(), "string".to_string(), true)], - return_type: "string".to_string(), - }, - ]; - - // Search for "shell" - should match tool name - let result = - CodeExecutionClient::handle_search(&tools, &["shell".to_string()], false).unwrap(); - let text = match &result[0].raw { - RawContent::Text(t) => &t.text, - _ => panic!("Expected text"), - }; - assert!(text.contains("developer/shell")); - assert!(!text.contains("git/commit")); - - // Search for "developer" - should match server name - let result = - CodeExecutionClient::handle_search(&tools, &["developer".to_string()], false).unwrap(); - let text = match &result[0].raw { - RawContent::Text(t) => &t.text, - _ => panic!("Expected text"), - }; - assert!(text.contains("developer (2 tools)")); - - // Search for "edit" - should match description - let result = - CodeExecutionClient::handle_search(&tools, &["edit".to_string()], false).unwrap(); - let text = match &result[0].raw { - RawContent::Text(t) => &t.text, - _ => panic!("Expected text"), - }; - assert!(text.contains("developer/text_editor")); - - // Search for multiple terms - let result = CodeExecutionClient::handle_search( - &tools, - &["shell".to_string(), "git".to_string()], - false, - ) - .unwrap(); - let text = match &result[0].raw { - RawContent::Text(t) => &t.text, - _ => panic!("Expected text"), - }; - assert!(text.contains("developer/shell")); - assert!(text.contains("git/commit")); - - // Search with no matches - let result = - CodeExecutionClient::handle_search(&tools, &["nonexistent".to_string()], false); - assert!(result.is_err()); - } - - #[test] - fn test_search_regex() { - let tools = vec![ - ToolInfo { - server_name: "developer".to_string(), - tool_name: "shell".to_string(), - full_name: "developer__shell".to_string(), - description: "Execute shell commands".to_string(), - params: vec![], - return_type: "string".to_string(), - }, - ToolInfo { - server_name: "developer".to_string(), - tool_name: "text_editor".to_string(), - full_name: "developer__text_editor".to_string(), - description: "Edit text files".to_string(), - params: vec![], - return_type: "string".to_string(), - }, - ]; - - // Regex search for "sh.*" - should match shell - let result = - CodeExecutionClient::handle_search(&tools, &["sh.*".to_string()], true).unwrap(); - let text = match &result[0].raw { - RawContent::Text(t) => &t.text, - _ => panic!("Expected text"), - }; - assert!(text.contains("developer/shell")); +struct CodeModeState { + code_mode: CodeMode, + hash: u64, +} - // Regex search for "^text" - should match text_editor - let result = - CodeExecutionClient::handle_search(&tools, &["^text".to_string()], true).unwrap(); - let text = match &result[0].raw { - RawContent::Text(t) => &t.text, - _ => panic!("Expected text"), - }; - assert!(text.contains("developer/text_editor")); +impl CodeModeState { + fn new(cfgs: Vec) -> Result { + let hash = Self::hash(&cfgs); - // Invalid regex should error - let result = CodeExecutionClient::handle_search(&tools, &["[invalid".to_string()], true); - assert!(result.is_err()); - assert!(result.unwrap_err().contains("Invalid regex")); - } + let code_mode = CodeMode::default() + .with_callbacks(&cfgs) + .map_err(|e| format!("failed adding callback configs to CodeMode: {e}"))?; - #[test_case( - "github__get_me", - serde_json::json!({"type": "object", "properties": {}}), - None, - "github[\"get_me\"]({}): string - Get details of the authenticated user"; - "no params, no output schema" - )] - #[test_case( - "filesystem__read_text_file", - serde_json::json!({"type": "object", "properties": {"path": {"type": "string"}, "tail": {"type": "number"}, "head": {"type": "number"}}, "required": ["path"]}), - Some(serde_json::json!({"type": "object", "properties": {"content": {"type": "string"}}, "required": ["content"]})), - "filesystem[\"read_text_file\"]({head?: number, path: string, tail?: number}): { content: string } - Read the complete contents of a file"; - "optional number params, object output" - )] - #[test_case( - "memory__create_entities", - serde_json::json!({"type": "object", "properties": {"entities": {"type": "array", "items": {"type": "object", "properties": {"name": {"type": "string"}, "entityType": {"type": "string"}, "observations": {"type": "array", "items": {"type": "string"}}}, "required": ["name", "entityType", "observations"]}}}, "required": ["entities"]}), - Some(serde_json::json!({"type": "object", "properties": {"entities": {"type": "array", "items": {"type": "object", "properties": {"name": {"type": "string"}, "entityType": {"type": "string"}, "observations": {"type": "array", "items": {"type": "string"}}}, "required": ["name", "entityType", "observations"]}}}, "required": ["entities"]})), - "memory[\"create_entities\"]({entities: { entityType: string, name: string, observations: string[] }[]}): { entities: { entityType: string, name: string, observations: string[] }[] } - Create multiple new entities"; - "nested object array with typed props" - )] - #[test_case( - "github__dismiss_notification", - serde_json::json!({"type": "object", "properties": { - "threadID": {"type": "string"}, - "state": {"type": "string", "enum": ["read", "done"]} - }, "required": ["threadID", "state"]}), - None, - "github[\"dismiss_notification\"]({state: \"read\" | \"done\", threadID: string}): string - Dismiss a notification"; - "enum param, no output schema" - )] - #[test_case( - "computercontroller__web_scrape", - serde_json::json!({"type": "object", "properties": { - "url": {"type": "string"}, - "save_as": {"oneOf": [{"const": "text"}, {"const": "json"}, {"const": "binary"}]} - }, "required": ["url"]}), - None, - "computercontroller[\"web_scrape\"]({save_as?: \"text\" | \"json\" | \"binary\", url: string}): string - Scrape content from URL"; - "oneOf const param (schemars), no output schema" - )] - #[test_case( - "kiwitravel__search-flight", - serde_json::json!({"type": "object", "properties": { - "flyFrom": {"type": "string"}, - "flyTo": {"type": "string"}, - "departureDate": {"type": "string"} - }, "required": ["flyFrom", "flyTo", "departureDate"]}), - None, - "kiwitravel[\"search-flight\"]({departureDate: string, flyFrom: string, flyTo: string}): string - Search for flights"; - "hyphenated tool name uses bracket notation" - )] - fn test_mcp_tool_signature( - name: &str, - input: serde_json::Value, - output: Option, - expected: &str, - ) { - let input_schema: serde_json::Map = - serde_json::from_value(input).unwrap(); - let output_schema = output.map(|v| { - Arc::new( - serde_json::from_value::>(v).unwrap(), - ) - }); - let desc = expected.split(" - ").nth(1).unwrap_or("").to_string(); - let tool = McpTool { - name: name.to_string().into(), - title: None, - description: Some(desc.into()), - input_schema: Arc::new(input_schema), - output_schema, - annotations: None, - icons: None, - meta: None, - }; - let info = ToolInfo::from_mcp_tool(&tool).unwrap(); - assert_eq!(info.to_signature(), expected); + Ok(Self { code_mode, hash }) } - #[test_case(serde_json::json!({"type": "string"}), "string"; "string")] - #[test_case(serde_json::json!({"type": "number"}), "number"; "number")] - #[test_case(serde_json::json!({"type": "boolean"}), "boolean"; "boolean")] - #[test_case(serde_json::json!({"type": "array"}), "array"; "array bare")] - #[test_case(serde_json::json!({"type": "array", "items": {"type": "string"}}), "string[]"; "array with items")] - #[test_case(serde_json::json!({"type": "object"}), "object"; "object bare")] - #[test_case(serde_json::json!({"type": "object", "properties": {"a": {"type": "string"}}, "required": ["a"]}), "{ a: string }"; "object with prop")] - #[test_case(serde_json::json!({"type": "object", "properties": {"a": {"type": "string"}}}), "{ a?: string }"; "object optional prop")] - #[test_case(serde_json::json!({"type": "object", "properties": {"a": {"type": "array", "items": {"type": "string"}}}, "required": ["a"]}), "{ a: string[] }"; "object with array prop")] - #[test_case(serde_json::json!({"enum": ["a", "b"]}), "\"a\" | \"b\""; "enum array")] - #[test_case(serde_json::json!({"oneOf": [{"const": "x"}, {"const": "y"}]}), "\"x\" | \"y\""; "oneOf const")] - fn test_extract_type_from_schema(schema: serde_json::Value, expected: &str) { - assert_eq!( - extract_type_from_schema(&schema), - Some(expected.to_string()) - ); - } + /// Compute order-independent hash of callback configs + fn hash(cfgs: &[CallbackConfig]) -> u64 { + let mut cfg_strings: Vec<_> = cfgs + .iter() + .filter_map(|c| serde_json::to_string(c).ok()) + .collect(); + cfg_strings.sort(); - fn eval_with_tools(code: &str, tools: &[(&str, &str)]) -> String { - let mut ctx = Context::default(); - for &(name, response) in tools { - let resp = response.to_string(); - let func = NativeFunction::from_copy_closure_with_captures( - |_this, _args, resp: &String, ctx| Ok(parse_result_to_js(resp, ctx)), - resp, - ); - ctx.register_global_callable(js_string!(name), 0, func) - .unwrap(); + let mut hasher = DefaultHasher::new(); + for s in cfg_strings { + s.hash(&mut hasher); } - ctx.eval(Source::from_bytes(code)) - .unwrap() - .display() - .to_string() - } - - #[test_case("2 + 2", &[], "4"; "pure_js")] - #[test_case("get_data({}).content", &[("get_data", r#"{"content":"hello"}"#)], "\"hello\""; "structured_property_access")] - #[test_case("typeof shell({})", &[("shell", "plain text")], "\"string\""; "plain_text_is_string")] - #[test_case("shell({}).content", &[("shell", "plain text")], "undefined"; "plain_text_no_property")] - fn test_tool_result(code: &str, tools: &[(&str, &str)], expected: &str) { - assert_eq!(eval_with_tools(code, tools), expected); - } - - #[test] - fn test_namespace_import_with_synthetic_module() { - let tools = vec![ToolInfo { - server_name: "testserver".to_string(), - tool_name: "get_value".to_string(), - full_name: "testserver__get_value".to_string(), - description: "Get a value".to_string(), - params: vec![], - return_type: "string".to_string(), - }]; - - let (tx, _rx) = mpsc::unbounded_channel(); - - let code_named = r#"import { get_value } from "testserver"; typeof get_value"#; - let result = run_js_module(code_named, &tools, tx.clone()); - assert!( - result.is_ok(), - "Named import should work: {:?}", - result.err() - ); - - let code_namespace = - r#"import * as testserver from "testserver"; typeof testserver.get_value"#; - let result = run_js_module(code_namespace, &tools, tx.clone()); - assert!( - result.is_ok(), - "Namespace import should work: {:?}", - result.err() - ); - - let code_server_named = - r#"import { testserver } from "testserver"; typeof testserver.get_value"#; - let result = run_js_module(code_server_named, &tools, tx.clone()); - assert!( - result.is_ok(), - "Server-named import should work: {:?}", - result.err() - ); - - let code_bracket = - r#"import { testserver } from "testserver"; typeof testserver["get_value"]"#; - let result = run_js_module(code_bracket, &tools, tx); - assert!( - result.is_ok(), - "Bracket notation should work: {:?}", - result.err() - ); + hasher.finish() } } diff --git a/crates/goose/src/agents/extension.rs b/crates/goose/src/agents/extension.rs index aebb4fddae39..d7171b0796a8 100644 --- a/crates/goose/src/agents/extension.rs +++ b/crates/goose/src/agents/extension.rs @@ -104,7 +104,7 @@ pub static PLATFORM_EXTENSIONS: Lazy code_execution_extension::EXTENSION_NAME, PlatformExtensionDef { name: code_execution_extension::EXTENSION_NAME, - description: "Execute JavaScript code in a sandboxed environment", + description: "Execute TypeScript code in a sandboxed environment", default_enabled: false, client_factory: |ctx| { Box::new(code_execution_extension::CodeExecutionClient::new(ctx).unwrap()) diff --git a/crates/goose/src/agents/extension_manager.rs b/crates/goose/src/agents/extension_manager.rs index e4966aff2154..a49e167bf716 100644 --- a/crates/goose/src/agents/extension_manager.rs +++ b/crates/goose/src/agents/extension_manager.rs @@ -1204,11 +1204,11 @@ impl ExtensionManager { // Some models strip the tool prefix, so auto-add it for known code_execution tools let tool_name_str = tool_call.name.to_string(); let prefixed_name = if !tool_name_str.contains("__") { - let code_exec_tools = ["execute_code", "read_module", "search_modules"]; + let code_exec_tools = ["execute", "list_functions", "get_function_details"]; if code_exec_tools.contains(&tool_name_str.as_str()) && self.extensions.lock().await.contains_key("code_execution") { - format!("code_execution__{}", tool_name_str) + format!("code_execution__{tool_name_str}") } else { tool_name_str } diff --git a/documentation/docs/guides/managing-tools/code-mode.md b/documentation/docs/guides/managing-tools/code-mode.md index 9562f0c75eea..4db2c26415ea 100644 --- a/documentation/docs/guides/managing-tools/code-mode.md +++ b/documentation/docs/guides/managing-tools/code-mode.md @@ -32,7 +32,7 @@ Traditional MCP tool calling and Code Mode are two different approaches to the s | Aspect | Traditional | Code Mode | |--------|------------------|-----------| -| **Tool Discovery** | All tools from enabled extensions, for example:
• `developer.shell`
• `developer.text_editor`
• `github.list_issues`
• `github.get_pull_request`
• `slack.send_message`
• ... *potentially many more* | Code Execution extension's meta-tools:
• `search_modules`
• `read_module`
• `execute_code`

The LLM uses these tools to discover tools from other enabled extensions as needed | +| **Tool Discovery** | All tools from enabled extensions, for example:
• `developer.shell`
• `developer.text_editor`
• `github.list_issues`
• `github.get_pull_request`
• `slack.send_message`
• ... *potentially many more* | Code Execution extension's meta-tools:
• `list_functions`
• `get_function_details`
• `execute`

The LLM uses these tools to discover tools from other enabled extensions as needed | | **Tool Calling** | • Sequential tool calls
• Each result sent to the LLM before the next call | • May require tool discovery calls
• Multiple tool calls batched in one execution
• Intermediate results are chained and processed locally | | **Context Window** | Every LLM call includes all tool definitions from enabled extensions | Every LLM call includes the 3 meta-tool definitions, plus any tool definitions previously discovered in the session | | **Best For** | • 1-3 enabled extensions
• Simple tasks using 1-2 tools | • 5+ extensions
• Well-defined multi-step workflows | diff --git a/scripts/test_providers.sh b/scripts/test_providers.sh index a0fdc41a2204..a8cd383a340c 100755 --- a/scripts/test_providers.sh +++ b/scripts/test_providers.sh @@ -69,9 +69,9 @@ if [ "$CODE_EXEC_MODE" = true ]; then echo "Mode: code_execution (JS batching)" BUILTINS="developer,code_execution" # Match code_execution tool usage: - # - "execute_code | code_execution" or "read_module | code_execution" (fallback format) - # - "tool call | execute_code" or "tool calls | execute_code" (new format with tool_graph) - SUCCESS_PATTERN="(execute_code \| code_execution)|(read_module \| code_execution)|(tool calls? \| execute_code)" + # - "execute | code_execution" or "get_function_details | code_execution" (fallback format) + # - "tool call | execute" or "tool calls | execute" (new format with tool_graph) + SUCCESS_PATTERN="(execute \| code_execution)|(get_function_details \| code_execution)|(tool calls? \| execute)" SUCCESS_MSG="code_execution tool called" FAILURE_MSG="no code_execution tools called" else diff --git a/ui/desktop/src/components/ToolCallWithResponse.tsx b/ui/desktop/src/components/ToolCallWithResponse.tsx index 1d91fd4a294c..013cc6f8a1d8 100644 --- a/ui/desktop/src/components/ToolCallWithResponse.tsx +++ b/ui/desktop/src/components/ToolCallWithResponse.tsx @@ -19,12 +19,6 @@ import { isUIResource } from '@mcp-ui/client'; import { CallToolResponse, Content, EmbeddedResource } from '../api'; import McpAppRenderer from './McpApps/McpAppRenderer'; -interface ToolGraphNode { - tool: string; - description: string; - depends_on: number[]; -} - type UiMeta = { ui?: { resourceUri?: string; @@ -545,16 +539,11 @@ function ToolCallView({ case 'computer_control': return `poking around...`; - case 'execute_code': { - const toolGraph = args.tool_graph as unknown as ToolGraphNode[] | undefined; - if (toolGraph && Array.isArray(toolGraph) && toolGraph.length > 0) { - if (toolGraph.length === 1) { - return `${toolGraph[0].description}`; - } - if (toolGraph.length === 2) { - return `${toolGraph[0].tool}, ${toolGraph[1].tool}`; - } - return `${toolGraph.length} tools used`; + case 'execute': { + const code = args.code as unknown as string | undefined; + if (code && typeof code === 'string' && code.length > 0) { + const lines = code.split('\n').length; + return `${lines} lines of code executed`; } return 'executing code'; } @@ -640,18 +629,14 @@ function ToolCallView({ > {(() => { const toolName = toolCall.name.substring(toolCall.name.lastIndexOf('__') + 2); - const toolGraph = toolCall.arguments?.tool_graph as unknown as ToolGraphNode[] | undefined; const code = toolCall.arguments?.code as unknown as string | undefined; - const hasToolGraph = - toolName === 'execute_code' && - toolGraph && - Array.isArray(toolGraph) && - toolGraph.length > 0; + const hasCode = + toolName === 'execute' && code && typeof code === 'string' && code.length > 0; - if (hasToolGraph) { + if (hasCode) { return (
- +
); } @@ -724,41 +709,23 @@ function ToolDetailsView({ toolCall, isStartExpanded }: ToolDetailsViewProps) { ); } -interface ToolGraphViewProps { - toolGraph: ToolGraphNode[]; - code?: string; +interface ToolCodeViewProps { + code: string; } -function ToolGraphView({ toolGraph, code }: ToolGraphViewProps) { - const renderGraph = () => { - if (toolGraph.length === 0) return null; - - const lines: string[] = []; - - toolGraph.forEach((node, index) => { - const deps = - node.depends_on.length > 0 ? ` (uses ${node.depends_on.map((d) => d + 1).join(', ')})` : ''; - lines.push(`${index + 1}. ${node.tool}: ${node.description}${deps}`); - }); - - return lines.join('\n'); - }; - +function ToolCodeView({ code }: ToolCodeViewProps) { return (
-
{renderGraph()}
- {code && ( -
- Code} - isStartExpanded={false} - > -
-              {code}
-            
-
-
- )} +
+ Code} + isStartExpanded={false} + > +
+            {code}
+          
+
+
); } From 8c4b0144d43ce8dbe88ae4c85f745ca711af1fe2 Mon Sep 17 00:00:00 2001 From: Elias Posen Date: Wed, 28 Jan 2026 11:18:35 -0500 Subject: [PATCH 2/4] fix upstream native-tls dependency Signed-off-by: Elias Posen --- Cargo.lock | 161 +++------------------------------------- crates/goose/Cargo.toml | 2 +- 2 files changed, 10 insertions(+), 153 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 35f6752eb3bb..af0d5ec1034d 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4323,22 +4323,6 @@ dependencies = [ "tower-service", ] -[[package]] -name = "hyper-tls" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70206fc6890eaca9fde8a0bf71caa2ddfc9fe045ac9e5c70df101a7dbde866e0" -dependencies = [ - "bytes", - "http-body-util", - "hyper 1.8.1", - "hyper-util", - "native-tls", - "tokio", - "tokio-native-tls", - "tower-service", -] - [[package]] name = "hyper-util" version = "0.1.19" @@ -4358,11 +4342,9 @@ dependencies = [ "percent-encoding", "pin-project-lite", "socket2 0.6.1", - "system-configuration", "tokio", "tower-service", "tracing", - "windows-registry", ] [[package]] @@ -5385,23 +5367,6 @@ dependencies = [ "rand 0.8.5", ] -[[package]] -name = "native-tls" -version = "0.2.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87de3442987e9dbec73158d5c715e7ad9072fda936bb03d19d7fa10e00520f0e" -dependencies = [ - "libc", - "log", - "openssl", - "openssl-probe 0.1.6", - "openssl-sys", - "schannel", - "security-framework 2.11.1", - "security-framework-sys", - "tempfile", -] - [[package]] name = "ndk-context" version = "0.1.1" @@ -6029,12 +5994,6 @@ dependencies = [ "syn 2.0.111", ] -[[package]] -name = "openssl-probe" -version = "0.1.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d05e27ee213611ffe7d6348b942e8f942b37114c00cc03cec254295a4a17852e" - [[package]] name = "openssl-probe" version = "0.2.0" @@ -6348,15 +6307,14 @@ dependencies = [ [[package]] name = "pctx_code_execution_runtime" -version = "0.1.2" +version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5433c26c36d176b5a8df58c231abd58e7e742faa8a154c1528b39b7560270675" +checksum = "9180fee1264bed9613b65e8702b2bd4ba404a4606d802ac237808e032d476e84" dependencies = [ "anyhow", "deno_core", "deno_error", "pctx_config", - "reqwest 0.13.1", "rmcp 0.14.0", "serde", "serde_json", @@ -6367,9 +6325,9 @@ dependencies = [ [[package]] name = "pctx_code_mode" -version = "0.2.1" +version = "0.2.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "48117f2247f09990096794cca228a16657bf1a20a47ba665a16fc9cea4786002" +checksum = "5788a3f1aaa7bc0fdcbae6d9ff24a080a6cc0d202d8affa8f1c29097e40a504a" dependencies = [ "futures", "pctx_code_execution_runtime", @@ -6409,9 +6367,9 @@ dependencies = [ [[package]] name = "pctx_config" -version = "0.1.2" +version = "0.1.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "34959e922cfcc5784d86e34493e402a9603e152c1ac24c98d8ebe83831309f34" +checksum = "3f5d3440e3936b1e06f168ce1657dbb0f05e2be63972ddb51050f81a12e771fb" dependencies = [ "anyhow", "base64 0.22.1", @@ -6445,9 +6403,9 @@ dependencies = [ [[package]] name = "pctx_executor" -version = "0.1.1" +version = "0.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "0ff23e96bcdc598b12792f3c327bdb69c3a1af51b032d357a7a216cf488e4976" +checksum = "ba5377dedd1b2f8dd5eed9baed09ae8efe46d131ed4eb1669a579e2588e91386" dependencies = [ "deno_core", "deno_resolver", @@ -6982,7 +6940,6 @@ version = "0.11.13" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "f1906b49b0c3bc04b5fe5d86a77925ae6524a19b816ae38ce1e426255f1d8a31" dependencies = [ - "aws-lc-rs", "bytes", "getrandom 0.3.4", "lru-slab", @@ -7298,13 +7255,11 @@ dependencies = [ "http-body-util", "hyper 1.8.1", "hyper-rustls 0.27.7", - "hyper-tls", "hyper-util", "js-sys", "log", "mime", "mime_guess", - "native-tls", "percent-encoding", "pin-project-lite", "quinn", @@ -7316,7 +7271,6 @@ dependencies = [ "serde_urlencoded", "sync_wrapper 1.0.2", "tokio", - "tokio-native-tls", "tokio-rustls 0.26.4", "tokio-util", "tower 0.5.2", @@ -7330,46 +7284,6 @@ dependencies = [ "webpki-roots 1.0.4", ] -[[package]] -name = "reqwest" -version = "0.13.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "04e9018c9d814e5f30cc16a0f03271aeab3571e609612d9fe78c1aa8d11c2f62" -dependencies = [ - "base64 0.22.1", - "bytes", - "encoding_rs", - "futures-core", - "h2 0.4.12", - "http 1.4.0", - "http-body 1.0.1", - "http-body-util", - "hyper 1.8.1", - "hyper-rustls 0.27.7", - "hyper-util", - "js-sys", - "log", - "mime", - "percent-encoding", - "pin-project-lite", - "quinn", - "rustls 0.23.31", - "rustls-pki-types", - "rustls-platform-verifier", - "serde", - "serde_json", - "sync_wrapper 1.0.2", - "tokio", - "tokio-rustls 0.26.4", - "tower 0.5.2", - "tower-http", - "tower-service", - "url", - "wasm-bindgen", - "wasm-bindgen-futures", - "web-sys", -] - [[package]] name = "resb" version = "0.1.1" @@ -7618,7 +7532,7 @@ version = "0.8.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "612460d5f7bea540c490b2b6395d8e34a953e52b491accd6c86c8164c5932a63" dependencies = [ - "openssl-probe 0.2.0", + "openssl-probe", "rustls-pki-types", "schannel", "security-framework 3.5.1", @@ -7643,33 +7557,6 @@ dependencies = [ "zeroize", ] -[[package]] -name = "rustls-platform-verifier" -version = "0.6.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1d99feebc72bae7ab76ba994bb5e121b8d83d910ca40b36e0921f53becc41784" -dependencies = [ - "core-foundation 0.10.1", - "core-foundation-sys", - "jni", - "log", - "once_cell", - "rustls 0.23.31", - "rustls-native-certs", - "rustls-platform-verifier-android", - "rustls-webpki 0.103.4", - "security-framework 3.5.1", - "security-framework-sys", - "webpki-root-certs", - "windows-sys 0.61.2", -] - -[[package]] -name = "rustls-platform-verifier-android" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f87165f0995f63a9fbeea62b64d10b4d9d8e78ec6d7d51fb2125fda7bb36788f" - [[package]] name = "rustls-webpki" version = "0.101.7" @@ -9566,16 +9453,6 @@ dependencies = [ "syn 2.0.111", ] -[[package]] -name = "tokio-native-tls" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bbae76ab933c85776efabc971569dd6119c580d8f5d448769dec1764bf796ef2" -dependencies = [ - "native-tls", - "tokio", -] - [[package]] name = "tokio-rustls" version = "0.24.1" @@ -10559,15 +10436,6 @@ dependencies = [ "web-sys", ] -[[package]] -name = "webpki-root-certs" -version = "1.0.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "36a29fc0408b113f68cf32637857ab740edfafdf460c326cd2afaa2d84cc05dc" -dependencies = [ - "rustls-pki-types", -] - [[package]] name = "webpki-roots" version = "0.25.4" @@ -10905,17 +10773,6 @@ dependencies = [ "windows-link 0.1.3", ] -[[package]] -name = "windows-registry" -version = "0.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "02752bf7fbdcce7f2a27a742f798510f3e5ad88dbe84871e5168e2120c3d5720" -dependencies = [ - "windows-link 0.2.1", - "windows-result 0.4.1", - "windows-strings 0.5.1", -] - [[package]] name = "windows-result" version = "0.1.2" diff --git a/crates/goose/Cargo.toml b/crates/goose/Cargo.toml index 9eded044e47a..ec421473a2cd 100644 --- a/crates/goose/Cargo.toml +++ b/crates/goose/Cargo.toml @@ -129,7 +129,7 @@ shellexpand = "3.1.1" indexmap = "2.12.0" ignore = { workspace = true } which = { workspace = true } -pctx_code_mode = "^0.2.1" +pctx_code_mode = "^0.2.2" unbinder = "0.1.7" [target.'cfg(target_os = "windows")'.dependencies] From 2bbbbc79c861b55a12d3fd271170813e1a65f819 Mon Sep 17 00:00:00 2001 From: Elias Posen Date: Wed, 28 Jan 2026 15:42:57 -0500 Subject: [PATCH 3/4] re-introduce tool_graph for rendering & render code mode inputs/outputs with markdown Signed-off-by: Elias Posen --- crates/goose-cli/src/session/output.rs | 59 +++++++++-- .../src/agents/code_execution_extension.rs | 40 ++++++- .../src/components/ToolCallWithResponse.tsx | 100 +++++++++++++----- 3 files changed, 162 insertions(+), 37 deletions(-) diff --git a/crates/goose-cli/src/session/output.rs b/crates/goose-cli/src/session/output.rs index 297a3d133c32..ba99441ebb31 100644 --- a/crates/goose-cli/src/session/output.rs +++ b/crates/goose-cli/src/session/output.rs @@ -462,24 +462,67 @@ fn render_shell_request(call: &CallToolRequestParams, debug: bool) { } fn render_execute_code_request(call: &CallToolRequestParams, debug: bool) { - let code = call + let tool_graph = call .arguments .as_ref() - .and_then(|args| args.get("code")) - .and_then(Value::as_str) - .filter(|c| !c.is_empty()); + .and_then(|args| args.get("tool_graph")) + .and_then(Value::as_array) + .filter(|arr| !arr.is_empty()); - let Some(code) = code else { + let Some(tool_graph) = tool_graph else { return render_default_request(call, debug); }; + let count = tool_graph.len(); + let plural = if count == 1 { "" } else { "s" }; println!(); println!( - "─── {} tool call | {} ──────────────────────────", - style("Code Mode").cyan(), + "─── {} tool call{} | {} ──────────────────────────", + style(count).cyan(), + plural, style("execute").magenta().dim() ); - println!("{}", style(code).green()); + + for (i, node) in tool_graph.iter().filter_map(Value::as_object).enumerate() { + let tool = node + .get("tool") + .and_then(Value::as_str) + .unwrap_or("unknown"); + let desc = node + .get("description") + .and_then(Value::as_str) + .unwrap_or(""); + let deps: Vec<_> = node + .get("depends_on") + .and_then(Value::as_array) + .into_iter() + .flatten() + .filter_map(Value::as_u64) + .map(|d| (d + 1).to_string()) + .collect(); + let deps_str = if deps.is_empty() { + String::new() + } else { + format!(" (uses {})", deps.join(", ")) + }; + println!( + " {}. {}: {}{}", + style(i + 1).dim(), + style(tool).cyan(), + style(desc).green(), + style(deps_str).dim() + ); + } + + let code = call + .arguments + .as_ref() + .and_then(|args| args.get("code")) + .and_then(Value::as_str) + .filter(|c| !c.is_empty()); + if code.is_some_and(|_| debug) { + println!("{}", style(code.unwrap_or_default()).green()); + } println!(); } diff --git a/crates/goose/src/agents/code_execution_extension.rs b/crates/goose/src/agents/code_execution_extension.rs index 6b2f8af8c454..a62df3e6b33d 100644 --- a/crates/goose/src/agents/code_execution_extension.rs +++ b/crates/goose/src/agents/code_execution_extension.rs @@ -11,6 +11,7 @@ use rmcp::model::{ ToolAnnotations, ToolsCapability, }; use schemars::{schema_for, JsonSchema}; +use serde::{Deserialize, Serialize}; use serde_json::{json, Value}; use std::collections::hash_map::DefaultHasher; use std::future::Future; @@ -28,6 +29,27 @@ pub struct CodeExecutionClient { state: RwLock>, } +#[derive(Debug, Clone, Serialize, Deserialize, JsonSchema)] +struct ToolGraphNode { + /// Tool name in format "server/tool" (e.g., "developer/shell") + tool: String, + /// Brief description of what this call does (e.g., "list files in /src") + description: String, + /// Indices of nodes this depends on (empty if no dependencies) + #[serde(default)] + depends_on: Vec, +} + +#[derive(Debug, Serialize, Deserialize, JsonSchema)] +pub struct ExecuteWithToolGraph { + #[serde(flatten)] + input: ExecuteInput, + /// DAG of tool calls showing execution flow. Each node represents a tool call. + /// Use depends_on to show data flow (e.g., node 1 uses output from node 0). + #[serde(default)] + tool_graph: Vec, +} + impl CodeExecutionClient { pub fn new(context: PlatformExtensionContext) -> Result { let info = InitializeResult { @@ -61,7 +83,8 @@ impl CodeExecutionClient { Workflow: 1. Use the list_functions and get_function_details tools to discover tools and signatures - 2. Write ONE script that imports and calls ALL tools needed for the task + 2. Write ONE script that calls ALL tools needed for the task, no need to import anything, + all the namespaces returned by list_functions and get_function_details will be available 3. Chain results: use output from one tool as input to the next 4. Only return and console.log data you need, tools could have very large responses. "#}.to_string()), @@ -189,7 +212,7 @@ impl CodeExecutionClient { session_id: &str, arguments: Option, ) -> Result, String> { - let input: ExecuteInput = arguments + let args: ExecuteWithToolGraph = arguments .map(|args| serde_json::from_value(Value::Object(args))) .transpose() .map_err(|e| format!("Failed to parse arguments: {e}"))? @@ -197,7 +220,7 @@ impl CodeExecutionClient { let code_mode = self.get_code_mode(session_id).await?; let registry = self.build_callback_registry(session_id, &code_mode)?; - let code = input.code.clone(); + let code = args.input.code.clone(); // Deno runtime is not Send, so we need to run it in a blocking task // with its own tokio runtime @@ -348,6 +371,15 @@ impl McpClientTrait for CodeExecutionClient { } ``` + TOOL_GRAPH: Always provide tool_graph to describe the execution flow for the UI. + Each node has: tool (Namespace.functionName), description (what it does), depends_on (indices of dependencies). + Example for chained operations: + [ + {"tool": "Developer.shell", "description": "list files", "depends_on": []}, + {"tool": "Developer.textEditor", "description": "read README.md", "depends_on": []}, + {"tool": "Developer.textEditor", "description": "write output.txt", "depends_on": [0, 1]} + ] + KEY RULES: - Code MUST define an async function named `run()` - All function calls are async - use `await` @@ -369,7 +401,7 @@ impl McpClientTrait for CodeExecutionClient { BEFORE CALLING: Use list_functions or get_function_details to check available functions and their parameters. "#} .to_string(), - schema::(), + schema::(), ) .annotate(ToolAnnotations { title: Some("Execute TypeScript".to_string()), diff --git a/ui/desktop/src/components/ToolCallWithResponse.tsx b/ui/desktop/src/components/ToolCallWithResponse.tsx index 013cc6f8a1d8..a7608c1b4c2f 100644 --- a/ui/desktop/src/components/ToolCallWithResponse.tsx +++ b/ui/desktop/src/components/ToolCallWithResponse.tsx @@ -19,6 +19,12 @@ import { isUIResource } from '@mcp-ui/client'; import { CallToolResponse, Content, EmbeddedResource } from '../api'; import McpAppRenderer from './McpApps/McpAppRenderer'; +interface ToolGraphNode { + tool: string; + description: string; + depends_on: number[]; +} + type UiMeta = { ui?: { resourceUri?: string; @@ -540,10 +546,15 @@ function ToolCallView({ return `poking around...`; case 'execute': { - const code = args.code as unknown as string | undefined; - if (code && typeof code === 'string' && code.length > 0) { - const lines = code.split('\n').length; - return `${lines} lines of code executed`; + const toolGraph = args.tool_graph as unknown as ToolGraphNode[] | undefined; + if (toolGraph && Array.isArray(toolGraph) && toolGraph.length > 0) { + if (toolGraph.length === 1) { + return `${toolGraph[0].description}`; + } + if (toolGraph.length === 2) { + return `${toolGraph[0].tool}, ${toolGraph[1].tool}`; + } + return `${toolGraph.length} tools used`; } return 'executing code'; } @@ -628,15 +639,16 @@ function ToolCallView({ } > {(() => { - const toolName = toolCall.name.substring(toolCall.name.lastIndexOf('__') + 2); const code = toolCall.arguments?.code as unknown as string | undefined; - const hasCode = - toolName === 'execute' && code && typeof code === 'string' && code.length > 0; + const toolGraph = toolCall.arguments?.tool_graph as unknown as ToolGraphNode[] | undefined; - if (hasCode) { + if ( + toolCall.name === 'code_execution__execute' && + (typeof code === 'string' || Array.isArray(toolGraph)) + ) { return (
- +
); } @@ -677,7 +689,7 @@ function ToolCallView({ <> {toolResults.map((result, index) => (
- +
))} @@ -709,33 +721,59 @@ function ToolDetailsView({ toolCall, isStartExpanded }: ToolDetailsViewProps) { ); } -interface ToolCodeViewProps { - code: string; +interface CodeModeViewProps { + toolGraph?: ToolGraphNode[]; + code?: string; } -function ToolCodeView({ code }: ToolCodeViewProps) { +function CodeModeView({ toolGraph, code }: CodeModeViewProps) { + const renderGraph = () => { + const graph = toolGraph ?? []; + if (graph.length === 0) return null; + + const lines: string[] = []; + + graph.forEach((node, index) => { + const deps = + node.depends_on.length > 0 ? ` (uses ${node.depends_on.map((d) => d + 1).join(', ')})` : ''; + lines.push(`${index + 1}. ${node.tool}: ${node.description}${deps}`); + }); + + return lines.join('\n'); + }; + return (
-
- Code} - isStartExpanded={false} - > -
-            {code}
-          
-
-
+ {toolGraph && ( +
{renderGraph()}
+ )} + {code && ( +
+ Code} + isStartExpanded={false} + > + + +
+ )}
); } interface ToolResultViewProps { + toolCall: { + name: string; + arguments: Record; + }; result: Content; isStartExpanded: boolean; } -function ToolResultView({ result, isStartExpanded }: ToolResultViewProps) { +function ToolResultView({ toolCall, result, isStartExpanded }: ToolResultViewProps) { const hasText = (c: Content): c is Content & { text: string } => 'text' in c && typeof (c as Record).text === 'string'; @@ -747,6 +785,18 @@ function ToolResultView({ result, isStartExpanded }: ToolResultViewProps) { const hasResource = (c: Content): c is Content & { resource: unknown } => 'resource' in c; + const wrapMarkdown = (text: string): string => { + if ( + ['code_execution__list_functions', 'code_execution__get_function_details'].includes( + toolCall.name + ) + ) { + return '```typescript\n' + text + '\n```'; + } else { + return text; + } + }; + return ( Output} @@ -755,7 +805,7 @@ function ToolResultView({ result, isStartExpanded }: ToolResultViewProps) {
{hasText(result) && ( )} From ee1e083ebeee6f247418522750f16f8ee686f4b1 Mon Sep 17 00:00:00 2001 From: Adrian Cole Date: Tue, 3 Feb 2026 11:19:35 +0800 Subject: [PATCH 4/4] acp: adjusts diff in replay tests Signed-off-by: Adrian Cole --- clippy-baselines/too_many_lines.txt | 1 + crates/goose-acp/tests/common_tests/mod.rs | 10 +- .../test_data/openai_builtin_execute.txt | 434 +++++++++++++----- .../tests/test_data/openai_builtin_final.txt | 354 ++++++++++---- .../test_data/openai_builtin_read_modules.txt | 43 -- .../tests/test_data/openai_builtin_search.txt | 38 +- crates/goose/Cargo.toml | 1 + 7 files changed, 619 insertions(+), 262 deletions(-) delete mode 100644 crates/goose-acp/tests/test_data/openai_builtin_read_modules.txt diff --git a/clippy-baselines/too_many_lines.txt b/clippy-baselines/too_many_lines.txt index e69d0ef3a1ce..bf3d3f536b72 100644 --- a/clippy-baselines/too_many_lines.txt +++ b/clippy-baselines/too_many_lines.txt @@ -16,6 +16,7 @@ crates/goose/src/agents/agent.rs::create_recipe crates/goose/src/agents/agent.rs::dispatch_tool_call crates/goose/src/agents/agent.rs::reply crates/goose/src/agents/agent.rs::reply_internal +crates/goose/src/providers/canonical/build_canonical_models.rs::build_canonical_models crates/goose/src/providers/formats/anthropic.rs::format_messages crates/goose/src/providers/formats/anthropic.rs::response_to_streaming_message crates/goose/src/providers/formats/databricks.rs::format_messages diff --git a/crates/goose-acp/tests/common_tests/mod.rs b/crates/goose-acp/tests/common_tests/mod.rs index 2917e22d1bc4..73e1122695c1 100644 --- a/crates/goose-acp/tests/common_tests/mod.rs +++ b/crates/goose-acp/tests/common_tests/mod.rs @@ -72,7 +72,7 @@ pub async fn run_mcp_http_server() { pub async fn run_builtin_and_mcp() { let expected_session_id = ExpectedSessionId::default(); let prompt = - "Search for get_code and text_editor tools. Use them to save the code to /tmp/result.txt."; + "Search for getCode and textEditor tools. Use them to save the code to /tmp/result.txt."; let mcp = McpFixture::new(expected_session_id.clone()).await; let openai = OpenAiFixture::new( vec![ @@ -81,15 +81,11 @@ pub async fn run_builtin_and_mcp() { include_str!("../test_data/openai_builtin_search.txt"), ), ( - r#"lookup/get_code: Get the code"#.into(), - include_str!("../test_data/openai_builtin_read_modules.txt"), - ), - ( - r#"lookup[\"get_code\"]({}): string - Get the code"#.into(), + r#"export async function getCode"#.into(), include_str!("../test_data/openai_builtin_execute.txt"), ), ( - r#"Successfully wrote to /tmp/result.txt"#.into(), + r#""writeResult": "Successfully wrote to /tmp/result.txt"#.into(), include_str!("../test_data/openai_builtin_final.txt"), ), ], diff --git a/crates/goose-acp/tests/test_data/openai_builtin_execute.txt b/crates/goose-acp/tests/test_data/openai_builtin_execute.txt index 49d8b4992cb1..1e1eefda5fd6 100644 --- a/crates/goose-acp/tests/test_data/openai_builtin_execute.txt +++ b/crates/goose-acp/tests/test_data/openai_builtin_execute.txt @@ -1,227 +1,435 @@ -data: {"id":"chatcmpl-Cqnxk0p34ZkYNestA1fcahFGuLiRR","object":"chat.completion.chunk","created":1766701148,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"role":"assistant","content":null,"tool_calls":[{"index":0,"id":"call_hcC9QZSyxfjpHmJdtEWe18ay","type":"function","function":{"name":"code_execution__execute_code","arguments":""}}],"refusal":null},"finish_reason":null}],"usage":null,"obfuscation":"b19o47w5ougEAzn"} +data: {"id":"chatcmpl-D52mhi3yQh0ZVyJeuHwBBdtr5PZ2L","object":"chat.completion.chunk","created":1770094715,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"role":"assistant","content":null,"tool_calls":[{"index":0,"id":"call_UBLtxrNOFHnLNHCInjjeVLzP","type":"function","function":{"name":"code_execution__execute","arguments":""}}],"refusal":null},"finish_reason":null}],"usage":null,"obfuscation":"WDLD"} -data: {"id":"chatcmpl-Cqnxk0p34ZkYNestA1fcahFGuLiRR","object":"chat.completion.chunk","created":1766701148,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"{\""}}]},"finish_reason":null}],"usage":null,"obfuscation":"rdSrkQ1Cz6"} +data: {"id":"chatcmpl-D52mhi3yQh0ZVyJeuHwBBdtr5PZ2L","object":"chat.completion.chunk","created":1770094715,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"{\""}}]},"finish_reason":null}],"usage":null,"obfuscation":"yJBJJfdldX"} -data: {"id":"chatcmpl-Cqnxk0p34ZkYNestA1fcahFGuLiRR","object":"chat.completion.chunk","created":1766701148,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"code"}}]},"finish_reason":null}],"usage":null,"obfuscation":"Osxenpc4x"} +data: {"id":"chatcmpl-D52mhi3yQh0ZVyJeuHwBBdtr5PZ2L","object":"chat.completion.chunk","created":1770094715,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"code"}}]},"finish_reason":null}],"usage":null,"obfuscation":"EYtPIkyWy"} -data: {"id":"chatcmpl-Cqnxk0p34ZkYNestA1fcahFGuLiRR","object":"chat.completion.chunk","created":1766701148,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"\":\""}}]},"finish_reason":null}],"usage":null,"obfuscation":"DTBcfoOJ"} +data: {"id":"chatcmpl-D52mhi3yQh0ZVyJeuHwBBdtr5PZ2L","object":"chat.completion.chunk","created":1770094715,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"\":\""}}]},"finish_reason":null}],"usage":null,"obfuscation":"kLCKi4W0"} -data: {"id":"chatcmpl-Cqnxk0p34ZkYNestA1fcahFGuLiRR","object":"chat.completion.chunk","created":1766701148,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"import"}}]},"finish_reason":null}],"usage":null,"obfuscation":"sqbC9nK"} +data: {"id":"chatcmpl-D52mhi3yQh0ZVyJeuHwBBdtr5PZ2L","object":"chat.completion.chunk","created":1770094715,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"async"}}]},"finish_reason":null}],"usage":null,"obfuscation":"0pB1gVsj"} -data: {"id":"chatcmpl-Cqnxk0p34ZkYNestA1fcahFGuLiRR","object":"chat.completion.chunk","created":1766701148,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":" {"}}]},"finish_reason":null}],"usage":null,"obfuscation":"7A3BEIL77xh"} +data: {"id":"chatcmpl-D52mhi3yQh0ZVyJeuHwBBdtr5PZ2L","object":"chat.completion.chunk","created":1770094715,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":" function"}}]},"finish_reason":null}],"usage":null,"obfuscation":"Quyw"} -data: {"id":"chatcmpl-Cqnxk0p34ZkYNestA1fcahFGuLiRR","object":"chat.completion.chunk","created":1766701148,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":" get"}}]},"finish_reason":null}],"usage":null,"obfuscation":"AsczaKDd7"} +data: {"id":"chatcmpl-D52mhi3yQh0ZVyJeuHwBBdtr5PZ2L","object":"chat.completion.chunk","created":1770094715,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":" run"}}]},"finish_reason":null}],"usage":null,"obfuscation":"C47A3bchK"} -data: {"id":"chatcmpl-Cqnxk0p34ZkYNestA1fcahFGuLiRR","object":"chat.completion.chunk","created":1766701148,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"_code"}}]},"finish_reason":null}],"usage":null,"obfuscation":"UjJwIZXo"} +data: {"id":"chatcmpl-D52mhi3yQh0ZVyJeuHwBBdtr5PZ2L","object":"chat.completion.chunk","created":1770094715,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"()"}}]},"finish_reason":null}],"usage":null,"obfuscation":"GnzOrhzYZew"} -data: {"id":"chatcmpl-Cqnxk0p34ZkYNestA1fcahFGuLiRR","object":"chat.completion.chunk","created":1766701148,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":" }"}}]},"finish_reason":null}],"usage":null,"obfuscation":"spOTdMkMdlp"} +data: {"id":"chatcmpl-D52mhi3yQh0ZVyJeuHwBBdtr5PZ2L","object":"chat.completion.chunk","created":1770094715,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":" {\\"}}]},"finish_reason":null}],"usage":null,"obfuscation":"sMmX7plrr"} -data: {"id":"chatcmpl-Cqnxk0p34ZkYNestA1fcahFGuLiRR","object":"chat.completion.chunk","created":1766701148,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":" from"}}]},"finish_reason":null}],"usage":null,"obfuscation":"n2UHITYZ"} +data: {"id":"chatcmpl-D52mhi3yQh0ZVyJeuHwBBdtr5PZ2L","object":"chat.completion.chunk","created":1770094715,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"n"}}]},"finish_reason":null}],"usage":null,"obfuscation":"wqLsTgMRSxtN"} -data: {"id":"chatcmpl-Cqnxk0p34ZkYNestA1fcahFGuLiRR","object":"chat.completion.chunk","created":1766701148,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":" \\\""}}]},"finish_reason":null}],"usage":null,"obfuscation":"am1f6FmN"} +data: {"id":"chatcmpl-D52mhi3yQh0ZVyJeuHwBBdtr5PZ2L","object":"chat.completion.chunk","created":1770094715,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":" "}}]},"finish_reason":null}],"usage":null,"obfuscation":"5MHvUdIfJ0qJ"} -data: {"id":"chatcmpl-Cqnxk0p34ZkYNestA1fcahFGuLiRR","object":"chat.completion.chunk","created":1766701148,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"lookup"}}]},"finish_reason":null}],"usage":null,"obfuscation":"7smqbS0"} +data: {"id":"chatcmpl-D52mhi3yQh0ZVyJeuHwBBdtr5PZ2L","object":"chat.completion.chunk","created":1770094715,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":" console"}}]},"finish_reason":null}],"usage":null,"obfuscation":"Uv1zV"} -data: {"id":"chatcmpl-Cqnxk0p34ZkYNestA1fcahFGuLiRR","object":"chat.completion.chunk","created":1766701148,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"\\\""}}]},"finish_reason":null}],"usage":null,"obfuscation":"punuQk0H6"} +data: {"id":"chatcmpl-D52mhi3yQh0ZVyJeuHwBBdtr5PZ2L","object":"chat.completion.chunk","created":1770094715,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":".log"}}]},"finish_reason":null}],"usage":null,"obfuscation":"JAPWfZ8vW"} -data: {"id":"chatcmpl-Cqnxk0p34ZkYNestA1fcahFGuLiRR","object":"chat.completion.chunk","created":1766701148,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":";\\"}}]},"finish_reason":null}],"usage":null,"obfuscation":"0MlZhMM3Wb"} +data: {"id":"chatcmpl-D52mhi3yQh0ZVyJeuHwBBdtr5PZ2L","object":"chat.completion.chunk","created":1770094715,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"(\\\""}}]},"finish_reason":null}],"usage":null,"obfuscation":"r2howfHn"} -data: {"id":"chatcmpl-Cqnxk0p34ZkYNestA1fcahFGuLiRR","object":"chat.completion.chunk","created":1766701148,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"n"}}]},"finish_reason":null}],"usage":null,"obfuscation":"qNe4Y7heibZN"} +data: {"id":"chatcmpl-D52mhi3yQh0ZVyJeuHwBBdtr5PZ2L","object":"chat.completion.chunk","created":1770094715,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"Fetching"}}]},"finish_reason":null}],"usage":null,"obfuscation":"3uEtb"} -data: {"id":"chatcmpl-Cqnxk0p34ZkYNestA1fcahFGuLiRR","object":"chat.completion.chunk","created":1766701148,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"import"}}]},"finish_reason":null}],"usage":null,"obfuscation":"jAg7bgI"} +data: {"id":"chatcmpl-D52mhi3yQh0ZVyJeuHwBBdtr5PZ2L","object":"chat.completion.chunk","created":1770094715,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":" code"}}]},"finish_reason":null}],"usage":null,"obfuscation":"73EB8Vfy"} -data: {"id":"chatcmpl-Cqnxk0p34ZkYNestA1fcahFGuLiRR","object":"chat.completion.chunk","created":1766701148,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":" {"}}]},"finish_reason":null}],"usage":null,"obfuscation":"7GtakYXk4U1"} +data: {"id":"chatcmpl-D52mhi3yQh0ZVyJeuHwBBdtr5PZ2L","object":"chat.completion.chunk","created":1770094715,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":" using"}}]},"finish_reason":null}],"usage":null,"obfuscation":"bj5YgoP"} -data: {"id":"chatcmpl-Cqnxk0p34ZkYNestA1fcahFGuLiRR","object":"chat.completion.chunk","created":1766701148,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":" text"}}]},"finish_reason":null}],"usage":null,"obfuscation":"iABvoSVl"} +data: {"id":"chatcmpl-D52mhi3yQh0ZVyJeuHwBBdtr5PZ2L","object":"chat.completion.chunk","created":1770094715,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":" get"}}]},"finish_reason":null}],"usage":null,"obfuscation":"a0nSxyCLV"} -data: {"id":"chatcmpl-Cqnxk0p34ZkYNestA1fcahFGuLiRR","object":"chat.completion.chunk","created":1766701148,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"_editor"}}]},"finish_reason":null}],"usage":null,"obfuscation":"WGyvWz"} +data: {"id":"chatcmpl-D52mhi3yQh0ZVyJeuHwBBdtr5PZ2L","object":"chat.completion.chunk","created":1770094715,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"Code"}}]},"finish_reason":null}],"usage":null,"obfuscation":"sE6BzCdcA"} -data: {"id":"chatcmpl-Cqnxk0p34ZkYNestA1fcahFGuLiRR","object":"chat.completion.chunk","created":1766701148,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":" }"}}]},"finish_reason":null}],"usage":null,"obfuscation":"kXeb0jURGpD"} +data: {"id":"chatcmpl-D52mhi3yQh0ZVyJeuHwBBdtr5PZ2L","object":"chat.completion.chunk","created":1770094715,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"...\\"}}]},"finish_reason":null}],"usage":null,"obfuscation":"piPx4wDk"} -data: {"id":"chatcmpl-Cqnxk0p34ZkYNestA1fcahFGuLiRR","object":"chat.completion.chunk","created":1766701148,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":" from"}}]},"finish_reason":null}],"usage":null,"obfuscation":"daxDWT2G"} +data: {"id":"chatcmpl-D52mhi3yQh0ZVyJeuHwBBdtr5PZ2L","object":"chat.completion.chunk","created":1770094715,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"\");"}}]},"finish_reason":null}],"usage":null,"obfuscation":"8dYsX5mrP"} -data: {"id":"chatcmpl-Cqnxk0p34ZkYNestA1fcahFGuLiRR","object":"chat.completion.chunk","created":1766701148,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":" \\\""}}]},"finish_reason":null}],"usage":null,"obfuscation":"p1uq4MMs"} +data: {"id":"chatcmpl-D52mhi3yQh0ZVyJeuHwBBdtr5PZ2L","object":"chat.completion.chunk","created":1770094715,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"\\"}}]},"finish_reason":null}],"usage":null,"obfuscation":"5VbIZPEA6ix"} -data: {"id":"chatcmpl-Cqnxk0p34ZkYNestA1fcahFGuLiRR","object":"chat.completion.chunk","created":1766701148,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"developer"}}]},"finish_reason":null}],"usage":null,"obfuscation":"ZZJ0"} +data: {"id":"chatcmpl-D52mhi3yQh0ZVyJeuHwBBdtr5PZ2L","object":"chat.completion.chunk","created":1770094715,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"n"}}]},"finish_reason":null}],"usage":null,"obfuscation":"01RMMD23GQkr"} -data: {"id":"chatcmpl-Cqnxk0p34ZkYNestA1fcahFGuLiRR","object":"chat.completion.chunk","created":1766701148,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"\\\""}}]},"finish_reason":null}],"usage":null,"obfuscation":"2pjhI3CHm"} +data: {"id":"chatcmpl-D52mhi3yQh0ZVyJeuHwBBdtr5PZ2L","object":"chat.completion.chunk","created":1770094715,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":" "}}]},"finish_reason":null}],"usage":null,"obfuscation":"Ig3VtqefZFcI"} -data: {"id":"chatcmpl-Cqnxk0p34ZkYNestA1fcahFGuLiRR","object":"chat.completion.chunk","created":1766701148,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":";\\"}}]},"finish_reason":null}],"usage":null,"obfuscation":"BGPB0Y92qx"} +data: {"id":"chatcmpl-D52mhi3yQh0ZVyJeuHwBBdtr5PZ2L","object":"chat.completion.chunk","created":1770094715,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":" const"}}]},"finish_reason":null}],"usage":null,"obfuscation":"227PgWF"} -data: {"id":"chatcmpl-Cqnxk0p34ZkYNestA1fcahFGuLiRR","object":"chat.completion.chunk","created":1766701148,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"n"}}]},"finish_reason":null}],"usage":null,"obfuscation":"sPtg1aux9Q7t"} +data: {"id":"chatcmpl-D52mhi3yQh0ZVyJeuHwBBdtr5PZ2L","object":"chat.completion.chunk","created":1770094715,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":" code"}}]},"finish_reason":null}],"usage":null,"obfuscation":"zYLjrdtw"} -data: {"id":"chatcmpl-Cqnxk0p34ZkYNestA1fcahFGuLiRR","object":"chat.completion.chunk","created":1766701148,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"\\n"}}]},"finish_reason":null}],"usage":null,"obfuscation":"uzSwsf36Eq"} +data: {"id":"chatcmpl-D52mhi3yQh0ZVyJeuHwBBdtr5PZ2L","object":"chat.completion.chunk","created":1770094715,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"Result"}}]},"finish_reason":null}],"usage":null,"obfuscation":"85j33BB"} -data: {"id":"chatcmpl-Cqnxk0p34ZkYNestA1fcahFGuLiRR","object":"chat.completion.chunk","created":1766701148,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"const"}}]},"finish_reason":null}],"usage":null,"obfuscation":"q36eyCe4"} +data: {"id":"chatcmpl-D52mhi3yQh0ZVyJeuHwBBdtr5PZ2L","object":"chat.completion.chunk","created":1770094715,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":" ="}}]},"finish_reason":null}],"usage":null,"obfuscation":"m9B1dsMaGtk"} -data: {"id":"chatcmpl-Cqnxk0p34ZkYNestA1fcahFGuLiRR","object":"chat.completion.chunk","created":1766701148,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":" code"}}]},"finish_reason":null}],"usage":null,"obfuscation":"Yv253z8V"} +data: {"id":"chatcmpl-D52mhi3yQh0ZVyJeuHwBBdtr5PZ2L","object":"chat.completion.chunk","created":1770094715,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":" await"}}]},"finish_reason":null}],"usage":null,"obfuscation":"y1QKhVE"} -data: {"id":"chatcmpl-Cqnxk0p34ZkYNestA1fcahFGuLiRR","object":"chat.completion.chunk","created":1766701148,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"Content"}}]},"finish_reason":null}],"usage":null,"obfuscation":"dbtiH2"} +data: {"id":"chatcmpl-D52mhi3yQh0ZVyJeuHwBBdtr5PZ2L","object":"chat.completion.chunk","created":1770094715,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":" Lookup"}}]},"finish_reason":null}],"usage":null,"obfuscation":"tyu2C3"} -data: {"id":"chatcmpl-Cqnxk0p34ZkYNestA1fcahFGuLiRR","object":"chat.completion.chunk","created":1766701148,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":" ="}}]},"finish_reason":null}],"usage":null,"obfuscation":"V0BBzDO4BnO"} +data: {"id":"chatcmpl-D52mhi3yQh0ZVyJeuHwBBdtr5PZ2L","object":"chat.completion.chunk","created":1770094715,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":".get"}}]},"finish_reason":null}],"usage":null,"obfuscation":"mSnyOOHWO"} -data: {"id":"chatcmpl-Cqnxk0p34ZkYNestA1fcahFGuLiRR","object":"chat.completion.chunk","created":1766701148,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":" get"}}]},"finish_reason":null}],"usage":null,"obfuscation":"eV7Z0MBJk"} +data: {"id":"chatcmpl-D52mhi3yQh0ZVyJeuHwBBdtr5PZ2L","object":"chat.completion.chunk","created":1770094715,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"Code"}}]},"finish_reason":null}],"usage":null,"obfuscation":"zKEttDzEa"} -data: {"id":"chatcmpl-Cqnxk0p34ZkYNestA1fcahFGuLiRR","object":"chat.completion.chunk","created":1766701148,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"_code"}}]},"finish_reason":null}],"usage":null,"obfuscation":"qODA1iJ3"} +data: {"id":"chatcmpl-D52mhi3yQh0ZVyJeuHwBBdtr5PZ2L","object":"chat.completion.chunk","created":1770094715,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"({"}}]},"finish_reason":null}],"usage":null,"obfuscation":"KevY7aP3ryh"} -data: {"id":"chatcmpl-Cqnxk0p34ZkYNestA1fcahFGuLiRR","object":"chat.completion.chunk","created":1766701148,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"({"}}]},"finish_reason":null}],"usage":null,"obfuscation":"ZLHVDfQXZIT"} +data: {"id":"chatcmpl-D52mhi3yQh0ZVyJeuHwBBdtr5PZ2L","object":"chat.completion.chunk","created":1770094715,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"});"}}]},"finish_reason":null}],"usage":null,"obfuscation":"EgG4bzRSW8"} -data: {"id":"chatcmpl-Cqnxk0p34ZkYNestA1fcahFGuLiRR","object":"chat.completion.chunk","created":1766701148,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"});"}}]},"finish_reason":null}],"usage":null,"obfuscation":"xkfrxJ0vqN"} +data: {"id":"chatcmpl-D52mhi3yQh0ZVyJeuHwBBdtr5PZ2L","object":"chat.completion.chunk","created":1770094715,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"\\"}}]},"finish_reason":null}],"usage":null,"obfuscation":"x0sZLH8SbhL"} -data: {"id":"chatcmpl-Cqnxk0p34ZkYNestA1fcahFGuLiRR","object":"chat.completion.chunk","created":1766701148,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"\\"}}]},"finish_reason":null}],"usage":null,"obfuscation":"Ri1sVVmThdE"} +data: {"id":"chatcmpl-D52mhi3yQh0ZVyJeuHwBBdtr5PZ2L","object":"chat.completion.chunk","created":1770094715,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"n"}}]},"finish_reason":null}],"usage":null,"obfuscation":"IHuyUXshht2C"} -data: {"id":"chatcmpl-Cqnxk0p34ZkYNestA1fcahFGuLiRR","object":"chat.completion.chunk","created":1766701148,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"n"}}]},"finish_reason":null}],"usage":null,"obfuscation":"EaMfvD5zX3O4"} +data: {"id":"chatcmpl-D52mhi3yQh0ZVyJeuHwBBdtr5PZ2L","object":"chat.completion.chunk","created":1770094715,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":" "}}]},"finish_reason":null}],"usage":null,"obfuscation":"zv2aVS40gP6A"} -data: {"id":"chatcmpl-Cqnxk0p34ZkYNestA1fcahFGuLiRR","object":"chat.completion.chunk","created":1766701148,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"const"}}]},"finish_reason":null}],"usage":null,"obfuscation":"Ktj0iLMG"} +data: {"id":"chatcmpl-D52mhi3yQh0ZVyJeuHwBBdtr5PZ2L","object":"chat.completion.chunk","created":1770094715,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":" let"}}]},"finish_reason":null}],"usage":null,"obfuscation":"q2RPbnzIm"} -data: {"id":"chatcmpl-Cqnxk0p34ZkYNestA1fcahFGuLiRR","object":"chat.completion.chunk","created":1766701148,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":" write"}}]},"finish_reason":null}],"usage":null,"obfuscation":"BuVITia"} +data: {"id":"chatcmpl-D52mhi3yQh0ZVyJeuHwBBdtr5PZ2L","object":"chat.completion.chunk","created":1770094715,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":" code"}}]},"finish_reason":null}],"usage":null,"obfuscation":"RpPYIgMc"} -data: {"id":"chatcmpl-Cqnxk0p34ZkYNestA1fcahFGuLiRR","object":"chat.completion.chunk","created":1766701148,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"Res"}}]},"finish_reason":null}],"usage":null,"obfuscation":"b9iRJbneyy"} +data: {"id":"chatcmpl-D52mhi3yQh0ZVyJeuHwBBdtr5PZ2L","object":"chat.completion.chunk","created":1770094715,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":" ="}}]},"finish_reason":null}],"usage":null,"obfuscation":"hthkNEp3btP"} -data: {"id":"chatcmpl-Cqnxk0p34ZkYNestA1fcahFGuLiRR","object":"chat.completion.chunk","created":1766701148,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":" ="}}]},"finish_reason":null}],"usage":null,"obfuscation":"gCMQmiR8LDN"} +data: {"id":"chatcmpl-D52mhi3yQh0ZVyJeuHwBBdtr5PZ2L","object":"chat.completion.chunk","created":1770094715,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":" ''"}}]},"finish_reason":null}],"usage":null,"obfuscation":"czifZEqaPz"} -data: {"id":"chatcmpl-Cqnxk0p34ZkYNestA1fcahFGuLiRR","object":"chat.completion.chunk","created":1766701148,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":" text"}}]},"finish_reason":null}],"usage":null,"obfuscation":"WywYQ1Wq"} +data: {"id":"chatcmpl-D52mhi3yQh0ZVyJeuHwBBdtr5PZ2L","object":"chat.completion.chunk","created":1770094715,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":";\\"}}]},"finish_reason":null}],"usage":null,"obfuscation":"Z94iEsTOFM"} -data: {"id":"chatcmpl-Cqnxk0p34ZkYNestA1fcahFGuLiRR","object":"chat.completion.chunk","created":1766701148,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"_editor"}}]},"finish_reason":null}],"usage":null,"obfuscation":"APkX6z"} +data: {"id":"chatcmpl-D52mhi3yQh0ZVyJeuHwBBdtr5PZ2L","object":"chat.completion.chunk","created":1770094715,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"n"}}]},"finish_reason":null}],"usage":null,"obfuscation":"YmsDuM4CGmAm"} -data: {"id":"chatcmpl-Cqnxk0p34ZkYNestA1fcahFGuLiRR","object":"chat.completion.chunk","created":1766701148,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"({"}}]},"finish_reason":null}],"usage":null,"obfuscation":"O04vBMryw3h"} +data: {"id":"chatcmpl-D52mhi3yQh0ZVyJeuHwBBdtr5PZ2L","object":"chat.completion.chunk","created":1770094715,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":" "}}]},"finish_reason":null}],"usage":null,"obfuscation":"F9VDjITdevyZ"} -data: {"id":"chatcmpl-Cqnxk0p34ZkYNestA1fcahFGuLiRR","object":"chat.completion.chunk","created":1766701148,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":" command"}}]},"finish_reason":null}],"usage":null,"obfuscation":"5jIuc"} +data: {"id":"chatcmpl-D52mhi3yQh0ZVyJeuHwBBdtr5PZ2L","object":"chat.completion.chunk","created":1770094715,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":" if"}}]},"finish_reason":null}],"usage":null,"obfuscation":"3mTNWX7Ccs"} -data: {"id":"chatcmpl-Cqnxk0p34ZkYNestA1fcahFGuLiRR","object":"chat.completion.chunk","created":1766701148,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":":"}}]},"finish_reason":null}],"usage":null,"obfuscation":"WmdqnCOKVLwM"} +data: {"id":"chatcmpl-D52mhi3yQh0ZVyJeuHwBBdtr5PZ2L","object":"chat.completion.chunk","created":1770094715,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":" ("}}]},"finish_reason":null}],"usage":null,"obfuscation":"VPSM2U9ztaj"} -data: {"id":"chatcmpl-Cqnxk0p34ZkYNestA1fcahFGuLiRR","object":"chat.completion.chunk","created":1766701148,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":" \\\""}}]},"finish_reason":null}],"usage":null,"obfuscation":"tV8pBGp7"} +data: {"id":"chatcmpl-D52mhi3yQh0ZVyJeuHwBBdtr5PZ2L","object":"chat.completion.chunk","created":1770094715,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"typeof"}}]},"finish_reason":null}],"usage":null,"obfuscation":"EjlBDWl"} -data: {"id":"chatcmpl-Cqnxk0p34ZkYNestA1fcahFGuLiRR","object":"chat.completion.chunk","created":1766701148,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"write"}}]},"finish_reason":null}],"usage":null,"obfuscation":"rdlyfaq1"} +data: {"id":"chatcmpl-D52mhi3yQh0ZVyJeuHwBBdtr5PZ2L","object":"chat.completion.chunk","created":1770094715,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":" code"}}]},"finish_reason":null}],"usage":null,"obfuscation":"waNmvkMf"} -data: {"id":"chatcmpl-Cqnxk0p34ZkYNestA1fcahFGuLiRR","object":"chat.completion.chunk","created":1766701148,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"\\\","}}]},"finish_reason":null}],"usage":null,"obfuscation":"SxWxNrDR"} +data: {"id":"chatcmpl-D52mhi3yQh0ZVyJeuHwBBdtr5PZ2L","object":"chat.completion.chunk","created":1770094715,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"Result"}}]},"finish_reason":null}],"usage":null,"obfuscation":"MtFriQX"} -data: {"id":"chatcmpl-Cqnxk0p34ZkYNestA1fcahFGuLiRR","object":"chat.completion.chunk","created":1766701148,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":" path"}}]},"finish_reason":null}],"usage":null,"obfuscation":"PeHPMaR6"} +data: {"id":"chatcmpl-D52mhi3yQh0ZVyJeuHwBBdtr5PZ2L","object":"chat.completion.chunk","created":1770094715,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":" ==="}}]},"finish_reason":null}],"usage":null,"obfuscation":"6lERzMmdv"} -data: {"id":"chatcmpl-Cqnxk0p34ZkYNestA1fcahFGuLiRR","object":"chat.completion.chunk","created":1766701148,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":":"}}]},"finish_reason":null}],"usage":null,"obfuscation":"d0y267V7PORM"} +data: {"id":"chatcmpl-D52mhi3yQh0ZVyJeuHwBBdtr5PZ2L","object":"chat.completion.chunk","created":1770094715,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":" '"}}]},"finish_reason":null}],"usage":null,"obfuscation":"tFFzpFq7XNp"} -data: {"id":"chatcmpl-Cqnxk0p34ZkYNestA1fcahFGuLiRR","object":"chat.completion.chunk","created":1766701148,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":" \\"}}]},"finish_reason":null}],"usage":null,"obfuscation":"ywEAhNkA9w"} +data: {"id":"chatcmpl-D52mhi3yQh0ZVyJeuHwBBdtr5PZ2L","object":"chat.completion.chunk","created":1770094715,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"string"}}]},"finish_reason":null}],"usage":null,"obfuscation":"R3I84RZ"} -data: {"id":"chatcmpl-Cqnxk0p34ZkYNestA1fcahFGuLiRR","object":"chat.completion.chunk","created":1766701148,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"\"/"}}]},"finish_reason":null}],"usage":null,"obfuscation":"m9RiqrrR4d"} +data: {"id":"chatcmpl-D52mhi3yQh0ZVyJeuHwBBdtr5PZ2L","object":"chat.completion.chunk","created":1770094715,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"')"}}]},"finish_reason":null}],"usage":null,"obfuscation":"BSnvZ4pAb76"} -data: {"id":"chatcmpl-Cqnxk0p34ZkYNestA1fcahFGuLiRR","object":"chat.completion.chunk","created":1766701148,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"tmp"}}]},"finish_reason":null}],"usage":null,"obfuscation":"KdkE9OEMbk"} +data: {"id":"chatcmpl-D52mhi3yQh0ZVyJeuHwBBdtr5PZ2L","object":"chat.completion.chunk","created":1770094715,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":" {\\"}}]},"finish_reason":null}],"usage":null,"obfuscation":"cvK3wmQAp"} -data: {"id":"chatcmpl-Cqnxk0p34ZkYNestA1fcahFGuLiRR","object":"chat.completion.chunk","created":1766701148,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"/result"}}]},"finish_reason":null}],"usage":null,"obfuscation":"wdawSE"} +data: {"id":"chatcmpl-D52mhi3yQh0ZVyJeuHwBBdtr5PZ2L","object":"chat.completion.chunk","created":1770094715,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"n"}}]},"finish_reason":null}],"usage":null,"obfuscation":"9U4NG1zW1hpA"} -data: {"id":"chatcmpl-Cqnxk0p34ZkYNestA1fcahFGuLiRR","object":"chat.completion.chunk","created":1766701148,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":".txt"}}]},"finish_reason":null}],"usage":null,"obfuscation":"oz5CFKhsF"} +data: {"id":"chatcmpl-D52mhi3yQh0ZVyJeuHwBBdtr5PZ2L","object":"chat.completion.chunk","created":1770094715,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":" "}}]},"finish_reason":null}],"usage":null,"obfuscation":"TMZWFdPIGt"} -data: {"id":"chatcmpl-Cqnxk0p34ZkYNestA1fcahFGuLiRR","object":"chat.completion.chunk","created":1766701148,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"\\\","}}]},"finish_reason":null}],"usage":null,"obfuscation":"FLJEYU3Z"} +data: {"id":"chatcmpl-D52mhi3yQh0ZVyJeuHwBBdtr5PZ2L","object":"chat.completion.chunk","created":1770094715,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":" code"}}]},"finish_reason":null}],"usage":null,"obfuscation":"J6lbPQxv"} -data: {"id":"chatcmpl-Cqnxk0p34ZkYNestA1fcahFGuLiRR","object":"chat.completion.chunk","created":1766701148,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":" file"}}]},"finish_reason":null}],"usage":null,"obfuscation":"jV9qDKjG"} +data: {"id":"chatcmpl-D52mhi3yQh0ZVyJeuHwBBdtr5PZ2L","object":"chat.completion.chunk","created":1770094715,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":" ="}}]},"finish_reason":null}],"usage":null,"obfuscation":"qRU6bhPit7h"} -data: {"id":"chatcmpl-Cqnxk0p34ZkYNestA1fcahFGuLiRR","object":"chat.completion.chunk","created":1766701148,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"_text"}}]},"finish_reason":null}],"usage":null,"obfuscation":"UtOfNMdx"} +data: {"id":"chatcmpl-D52mhi3yQh0ZVyJeuHwBBdtr5PZ2L","object":"chat.completion.chunk","created":1770094715,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":" code"}}]},"finish_reason":null}],"usage":null,"obfuscation":"IouQzhkX"} -data: {"id":"chatcmpl-Cqnxk0p34ZkYNestA1fcahFGuLiRR","object":"chat.completion.chunk","created":1766701148,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":":"}}]},"finish_reason":null}],"usage":null,"obfuscation":"aQLvI4PhcN71"} +data: {"id":"chatcmpl-D52mhi3yQh0ZVyJeuHwBBdtr5PZ2L","object":"chat.completion.chunk","created":1770094715,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"Result"}}]},"finish_reason":null}],"usage":null,"obfuscation":"cyJEbKZ"} -data: {"id":"chatcmpl-Cqnxk0p34ZkYNestA1fcahFGuLiRR","object":"chat.completion.chunk","created":1766701148,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":" code"}}]},"finish_reason":null}],"usage":null,"obfuscation":"cRS5SnPZ"} +data: {"id":"chatcmpl-D52mhi3yQh0ZVyJeuHwBBdtr5PZ2L","object":"chat.completion.chunk","created":1770094715,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":";\\"}}]},"finish_reason":null}],"usage":null,"obfuscation":"d0mgOWJ4BI"} -data: {"id":"chatcmpl-Cqnxk0p34ZkYNestA1fcahFGuLiRR","object":"chat.completion.chunk","created":1766701148,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"Content"}}]},"finish_reason":null}],"usage":null,"obfuscation":"ymts0B"} +data: {"id":"chatcmpl-D52mhi3yQh0ZVyJeuHwBBdtr5PZ2L","object":"chat.completion.chunk","created":1770094715,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"n"}}]},"finish_reason":null}],"usage":null,"obfuscation":"DT5fUSwF4rag"} -data: {"id":"chatcmpl-Cqnxk0p34ZkYNestA1fcahFGuLiRR","object":"chat.completion.chunk","created":1766701148,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":" });"}}]},"finish_reason":null}],"usage":null,"obfuscation":"HIKXwLPsU"} +data: {"id":"chatcmpl-D52mhi3yQh0ZVyJeuHwBBdtr5PZ2L","object":"chat.completion.chunk","created":1770094715,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":" "}}]},"finish_reason":null}],"usage":null,"obfuscation":"qxuu5io6tf3v"} -data: {"id":"chatcmpl-Cqnxk0p34ZkYNestA1fcahFGuLiRR","object":"chat.completion.chunk","created":1766701148,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"\\"}}]},"finish_reason":null}],"usage":null,"obfuscation":"IyYG9VM0ay9"} +data: {"id":"chatcmpl-D52mhi3yQh0ZVyJeuHwBBdtr5PZ2L","object":"chat.completion.chunk","created":1770094715,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":" }"}}]},"finish_reason":null}],"usage":null,"obfuscation":"uivHQEB1MHf"} -data: {"id":"chatcmpl-Cqnxk0p34ZkYNestA1fcahFGuLiRR","object":"chat.completion.chunk","created":1766701148,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"n"}}]},"finish_reason":null}],"usage":null,"obfuscation":"FcZzRbewbWzs"} +data: {"id":"chatcmpl-D52mhi3yQh0ZVyJeuHwBBdtr5PZ2L","object":"chat.completion.chunk","created":1770094715,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":" else"}}]},"finish_reason":null}],"usage":null,"obfuscation":"mXjbTfS9"} -data: {"id":"chatcmpl-Cqnxk0p34ZkYNestA1fcahFGuLiRR","object":"chat.completion.chunk","created":1766701148,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"record_result"}}]},"finish_reason":null}],"usage":null,"obfuscation":"yJ0heSJY"} +data: {"id":"chatcmpl-D52mhi3yQh0ZVyJeuHwBBdtr5PZ2L","object":"chat.completion.chunk","created":1770094715,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":" if"}}]},"finish_reason":null}],"usage":null,"obfuscation":"X6y8tpzr6O"} -data: {"id":"chatcmpl-Cqnxk0p34ZkYNestA1fcahFGuLiRR","object":"chat.completion.chunk","created":1766701148,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"(writeRes)"}}]},"finish_reason":null}],"usage":null,"obfuscation":"VCJyV87lb5"} +data: {"id":"chatcmpl-D52mhi3yQh0ZVyJeuHwBBdtr5PZ2L","object":"chat.completion.chunk","created":1770094715,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":" ("}}]},"finish_reason":null}],"usage":null,"obfuscation":"Y1nBNR2nfBu"} -data: {"id":"chatcmpl-Cqnxk0p34ZkYNestA1fcahFGuLiRR","object":"chat.completion.chunk","created":1766701148,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"\\n"}}]},"finish_reason":null}],"usage":null,"obfuscation":"LniNHGfSN9"} +data: {"id":"chatcmpl-D52mhi3yQh0ZVyJeuHwBBdtr5PZ2L","object":"chat.completion.chunk","created":1770094715,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"code"}}]},"finish_reason":null}],"usage":null,"obfuscation":"t6taDGZWE"} -data: {"id":"chatcmpl-Cqnxk0p34ZkYNestA1fcahFGuLiRR","object":"chat.completion.chunk","created":1766701148,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"\",\""}}]},"finish_reason":null}],"usage":null,"obfuscation":"KrXbglgQ"} +data: {"id":"chatcmpl-D52mhi3yQh0ZVyJeuHwBBdtr5PZ2L","object":"chat.completion.chunk","created":1770094715,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"Result"}}]},"finish_reason":null}],"usage":null,"obfuscation":"S4uVyIz"} -data: {"id":"chatcmpl-Cqnxk0p34ZkYNestA1fcahFGuLiRR","object":"chat.completion.chunk","created":1766701148,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"tool"}}]},"finish_reason":null}],"usage":null,"obfuscation":"KoY7VbKmk"} +data: {"id":"chatcmpl-D52mhi3yQh0ZVyJeuHwBBdtr5PZ2L","object":"chat.completion.chunk","created":1770094715,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":" &&"}}]},"finish_reason":null}],"usage":null,"obfuscation":"sf0ZWdiu4N"} -data: {"id":"chatcmpl-Cqnxk0p34ZkYNestA1fcahFGuLiRR","object":"chat.completion.chunk","created":1766701148,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"_graph"}}]},"finish_reason":null}],"usage":null,"obfuscation":"stocohw"} +data: {"id":"chatcmpl-D52mhi3yQh0ZVyJeuHwBBdtr5PZ2L","object":"chat.completion.chunk","created":1770094715,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":" typeof"}}]},"finish_reason":null}],"usage":null,"obfuscation":"TpYZWc"} -data: {"id":"chatcmpl-Cqnxk0p34ZkYNestA1fcahFGuLiRR","object":"chat.completion.chunk","created":1766701148,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"\":["}}]},"finish_reason":null}],"usage":null,"obfuscation":"GVtr3ESEB"} +data: {"id":"chatcmpl-D52mhi3yQh0ZVyJeuHwBBdtr5PZ2L","object":"chat.completion.chunk","created":1770094715,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":" code"}}]},"finish_reason":null}],"usage":null,"obfuscation":"zbilqttA"} -data: {"id":"chatcmpl-Cqnxk0p34ZkYNestA1fcahFGuLiRR","object":"chat.completion.chunk","created":1766701148,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"{\""}}]},"finish_reason":null}],"usage":null,"obfuscation":"Lickb1U7Hl"} +data: {"id":"chatcmpl-D52mhi3yQh0ZVyJeuHwBBdtr5PZ2L","object":"chat.completion.chunk","created":1770094715,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"Result"}}]},"finish_reason":null}],"usage":null,"obfuscation":"zqGeQHW"} -data: {"id":"chatcmpl-Cqnxk0p34ZkYNestA1fcahFGuLiRR","object":"chat.completion.chunk","created":1766701148,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"tool"}}]},"finish_reason":null}],"usage":null,"obfuscation":"okyVlrEIz"} +data: {"id":"chatcmpl-D52mhi3yQh0ZVyJeuHwBBdtr5PZ2L","object":"chat.completion.chunk","created":1770094715,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":" ==="}}]},"finish_reason":null}],"usage":null,"obfuscation":"F8hxhZoBg"} -data: {"id":"chatcmpl-Cqnxk0p34ZkYNestA1fcahFGuLiRR","object":"chat.completion.chunk","created":1766701148,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"\":\""}}]},"finish_reason":null}],"usage":null,"obfuscation":"eOvg0xdJ"} +data: {"id":"chatcmpl-D52mhi3yQh0ZVyJeuHwBBdtr5PZ2L","object":"chat.completion.chunk","created":1770094715,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":" '"}}]},"finish_reason":null}],"usage":null,"obfuscation":"0QWhjOXxfMI"} -data: {"id":"chatcmpl-Cqnxk0p34ZkYNestA1fcahFGuLiRR","object":"chat.completion.chunk","created":1766701148,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"lookup"}}]},"finish_reason":null}],"usage":null,"obfuscation":"ioz46mm"} +data: {"id":"chatcmpl-D52mhi3yQh0ZVyJeuHwBBdtr5PZ2L","object":"chat.completion.chunk","created":1770094715,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"object"}}]},"finish_reason":null}],"usage":null,"obfuscation":"TkPlD4R"} -data: {"id":"chatcmpl-Cqnxk0p34ZkYNestA1fcahFGuLiRR","object":"chat.completion.chunk","created":1766701148,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"/get"}}]},"finish_reason":null}],"usage":null,"obfuscation":"lqkgCSvsu"} +data: {"id":"chatcmpl-D52mhi3yQh0ZVyJeuHwBBdtr5PZ2L","object":"chat.completion.chunk","created":1770094715,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"')"}}]},"finish_reason":null}],"usage":null,"obfuscation":"NR4MUn0RRS4"} -data: {"id":"chatcmpl-Cqnxk0p34ZkYNestA1fcahFGuLiRR","object":"chat.completion.chunk","created":1766701148,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"_code"}}]},"finish_reason":null}],"usage":null,"obfuscation":"JhuyiKVe"} +data: {"id":"chatcmpl-D52mhi3yQh0ZVyJeuHwBBdtr5PZ2L","object":"chat.completion.chunk","created":1770094715,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":" {\\"}}]},"finish_reason":null}],"usage":null,"obfuscation":"saoY11LYc"} -data: {"id":"chatcmpl-Cqnxk0p34ZkYNestA1fcahFGuLiRR","object":"chat.completion.chunk","created":1766701148,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"\",\""}}]},"finish_reason":null}],"usage":null,"obfuscation":"Q3aHiaKq"} +data: {"id":"chatcmpl-D52mhi3yQh0ZVyJeuHwBBdtr5PZ2L","object":"chat.completion.chunk","created":1770094715,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"n"}}]},"finish_reason":null}],"usage":null,"obfuscation":"eh3OiAfwS3Jl"} -data: {"id":"chatcmpl-Cqnxk0p34ZkYNestA1fcahFGuLiRR","object":"chat.completion.chunk","created":1766701148,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"description"}}]},"finish_reason":null}],"usage":null,"obfuscation":"Ck"} +data: {"id":"chatcmpl-D52mhi3yQh0ZVyJeuHwBBdtr5PZ2L","object":"chat.completion.chunk","created":1770094715,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":" "}}]},"finish_reason":null}],"usage":null,"obfuscation":"g5iOHn9zDZ"} -data: {"id":"chatcmpl-Cqnxk0p34ZkYNestA1fcahFGuLiRR","object":"chat.completion.chunk","created":1766701148,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"\":\""}}]},"finish_reason":null}],"usage":null,"obfuscation":"AEyKl8NF"} +data: {"id":"chatcmpl-D52mhi3yQh0ZVyJeuHwBBdtr5PZ2L","object":"chat.completion.chunk","created":1770094715,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":" code"}}]},"finish_reason":null}],"usage":null,"obfuscation":"8W6TSAMM"} -data: {"id":"chatcmpl-Cqnxk0p34ZkYNestA1fcahFGuLiRR","object":"chat.completion.chunk","created":1766701148,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"Get"}}]},"finish_reason":null}],"usage":null,"obfuscation":"lJJbh0p7Dg"} +data: {"id":"chatcmpl-D52mhi3yQh0ZVyJeuHwBBdtr5PZ2L","object":"chat.completion.chunk","created":1770094715,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":" ="}}]},"finish_reason":null}],"usage":null,"obfuscation":"VRzyVssdYN3"} -data: {"id":"chatcmpl-Cqnxk0p34ZkYNestA1fcahFGuLiRR","object":"chat.completion.chunk","created":1766701148,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":" the"}}]},"finish_reason":null}],"usage":null,"obfuscation":"uFXa4PzBq"} +data: {"id":"chatcmpl-D52mhi3yQh0ZVyJeuHwBBdtr5PZ2L","object":"chat.completion.chunk","created":1770094715,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":" code"}}]},"finish_reason":null}],"usage":null,"obfuscation":"Aql9R8g6"} -data: {"id":"chatcmpl-Cqnxk0p34ZkYNestA1fcahFGuLiRR","object":"chat.completion.chunk","created":1766701148,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":" code"}}]},"finish_reason":null}],"usage":null,"obfuscation":"fxpxTVDG"} +data: {"id":"chatcmpl-D52mhi3yQh0ZVyJeuHwBBdtr5PZ2L","object":"chat.completion.chunk","created":1770094715,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"Result"}}]},"finish_reason":null}],"usage":null,"obfuscation":"N1FHNi9"} -data: {"id":"chatcmpl-Cqnxk0p34ZkYNestA1fcahFGuLiRR","object":"chat.completion.chunk","created":1766701148,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"\",\""}}]},"finish_reason":null}],"usage":null,"obfuscation":"ajR2a1Ju"} +data: {"id":"chatcmpl-D52mhi3yQh0ZVyJeuHwBBdtr5PZ2L","object":"chat.completion.chunk","created":1770094715,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":".code"}}]},"finish_reason":null}],"usage":null,"obfuscation":"sYqbc9to"} -data: {"id":"chatcmpl-Cqnxk0p34ZkYNestA1fcahFGuLiRR","object":"chat.completion.chunk","created":1766701148,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"depends"}}]},"finish_reason":null}],"usage":null,"obfuscation":"qNa3u6"} +data: {"id":"chatcmpl-D52mhi3yQh0ZVyJeuHwBBdtr5PZ2L","object":"chat.completion.chunk","created":1770094715,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":" ??"}}]},"finish_reason":null}],"usage":null,"obfuscation":"hGQnicL3wo"} -data: {"id":"chatcmpl-Cqnxk0p34ZkYNestA1fcahFGuLiRR","object":"chat.completion.chunk","created":1766701148,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"_on"}}]},"finish_reason":null}],"usage":null,"obfuscation":"PfZBUzLwEU"} +data: {"id":"chatcmpl-D52mhi3yQh0ZVyJeuHwBBdtr5PZ2L","object":"chat.completion.chunk","created":1770094715,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":" code"}}]},"finish_reason":null}],"usage":null,"obfuscation":"g4KW2tFJ"} -data: {"id":"chatcmpl-Cqnxk0p34ZkYNestA1fcahFGuLiRR","object":"chat.completion.chunk","created":1766701148,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"\":[]"}}]},"finish_reason":null}],"usage":null,"obfuscation":"Kpm5Dl6W"} +data: {"id":"chatcmpl-D52mhi3yQh0ZVyJeuHwBBdtr5PZ2L","object":"chat.completion.chunk","created":1770094715,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"Result"}}]},"finish_reason":null}],"usage":null,"obfuscation":"ifEWkT9"} -data: {"id":"chatcmpl-Cqnxk0p34ZkYNestA1fcahFGuLiRR","object":"chat.completion.chunk","created":1766701148,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"},{\""}}]},"finish_reason":null}],"usage":null,"obfuscation":"L8cOSVuZ"} +data: {"id":"chatcmpl-D52mhi3yQh0ZVyJeuHwBBdtr5PZ2L","object":"chat.completion.chunk","created":1770094715,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":".content"}}]},"finish_reason":null}],"usage":null,"obfuscation":"Qsv00"} -data: {"id":"chatcmpl-Cqnxk0p34ZkYNestA1fcahFGuLiRR","object":"chat.completion.chunk","created":1766701148,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"tool"}}]},"finish_reason":null}],"usage":null,"obfuscation":"KAZ6a6RFX"} +data: {"id":"chatcmpl-D52mhi3yQh0ZVyJeuHwBBdtr5PZ2L","object":"chat.completion.chunk","created":1770094715,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":" ??"}}]},"finish_reason":null}],"usage":null,"obfuscation":"eThY8OKgQM"} -data: {"id":"chatcmpl-Cqnxk0p34ZkYNestA1fcahFGuLiRR","object":"chat.completion.chunk","created":1766701148,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"\":\""}}]},"finish_reason":null}],"usage":null,"obfuscation":"bJFlPCmV"} +data: {"id":"chatcmpl-D52mhi3yQh0ZVyJeuHwBBdtr5PZ2L","object":"chat.completion.chunk","created":1770094715,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":" ''"}}]},"finish_reason":null}],"usage":null,"obfuscation":"0x03TQmZKV"} -data: {"id":"chatcmpl-Cqnxk0p34ZkYNestA1fcahFGuLiRR","object":"chat.completion.chunk","created":1766701148,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"developer"}}]},"finish_reason":null}],"usage":null,"obfuscation":"KE9I"} +data: {"id":"chatcmpl-D52mhi3yQh0ZVyJeuHwBBdtr5PZ2L","object":"chat.completion.chunk","created":1770094715,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":";\\"}}]},"finish_reason":null}],"usage":null,"obfuscation":"vX8rRtILap"} -data: {"id":"chatcmpl-Cqnxk0p34ZkYNestA1fcahFGuLiRR","object":"chat.completion.chunk","created":1766701148,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"/text"}}]},"finish_reason":null}],"usage":null,"obfuscation":"BMnv2YIo"} +data: {"id":"chatcmpl-D52mhi3yQh0ZVyJeuHwBBdtr5PZ2L","object":"chat.completion.chunk","created":1770094715,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"n"}}]},"finish_reason":null}],"usage":null,"obfuscation":"zAqdH8JPBibe"} -data: {"id":"chatcmpl-Cqnxk0p34ZkYNestA1fcahFGuLiRR","object":"chat.completion.chunk","created":1766701148,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"_editor"}}]},"finish_reason":null}],"usage":null,"obfuscation":"HH3wHg"} +data: {"id":"chatcmpl-D52mhi3yQh0ZVyJeuHwBBdtr5PZ2L","object":"chat.completion.chunk","created":1770094715,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":" "}}]},"finish_reason":null}],"usage":null,"obfuscation":"ov9HisKNyUac"} -data: {"id":"chatcmpl-Cqnxk0p34ZkYNestA1fcahFGuLiRR","object":"chat.completion.chunk","created":1766701148,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"\",\""}}]},"finish_reason":null}],"usage":null,"obfuscation":"1BSk9J00"} +data: {"id":"chatcmpl-D52mhi3yQh0ZVyJeuHwBBdtr5PZ2L","object":"chat.completion.chunk","created":1770094715,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":" }\\"}}]},"finish_reason":null}],"usage":null,"obfuscation":"I4APrZWxY"} -data: {"id":"chatcmpl-Cqnxk0p34ZkYNestA1fcahFGuLiRR","object":"chat.completion.chunk","created":1766701148,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"description"}}]},"finish_reason":null}],"usage":null,"obfuscation":"y0"} +data: {"id":"chatcmpl-D52mhi3yQh0ZVyJeuHwBBdtr5PZ2L","object":"chat.completion.chunk","created":1770094715,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"n"}}]},"finish_reason":null}],"usage":null,"obfuscation":"5ImlnX0Dttf5"} -data: {"id":"chatcmpl-Cqnxk0p34ZkYNestA1fcahFGuLiRR","object":"chat.completion.chunk","created":1766701148,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"\":\""}}]},"finish_reason":null}],"usage":null,"obfuscation":"j0kTAnXy"} +data: {"id":"chatcmpl-D52mhi3yQh0ZVyJeuHwBBdtr5PZ2L","object":"chat.completion.chunk","created":1770094715,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":" "}}]},"finish_reason":null}],"usage":null,"obfuscation":"YXKxHGHDxIMx"} -data: {"id":"chatcmpl-Cqnxk0p34ZkYNestA1fcahFGuLiRR","object":"chat.completion.chunk","created":1766701148,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"Write"}}]},"finish_reason":null}],"usage":null,"obfuscation":"9IGJB175"} +data: {"id":"chatcmpl-D52mhi3yQh0ZVyJeuHwBBdtr5PZ2L","object":"chat.completion.chunk","created":1770094715,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":" console"}}]},"finish_reason":null}],"usage":null,"obfuscation":"4czSy"} -data: {"id":"chatcmpl-Cqnxk0p34ZkYNestA1fcahFGuLiRR","object":"chat.completion.chunk","created":1766701148,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":" code"}}]},"finish_reason":null}],"usage":null,"obfuscation":"qc9bKCEs"} +data: {"id":"chatcmpl-D52mhi3yQh0ZVyJeuHwBBdtr5PZ2L","object":"chat.completion.chunk","created":1770094715,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":".log"}}]},"finish_reason":null}],"usage":null,"obfuscation":"BzoIKE2IQ"} -data: {"id":"chatcmpl-Cqnxk0p34ZkYNestA1fcahFGuLiRR","object":"chat.completion.chunk","created":1766701148,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":" to"}}]},"finish_reason":null}],"usage":null,"obfuscation":"a0mpsleQne"} +data: {"id":"chatcmpl-D52mhi3yQh0ZVyJeuHwBBdtr5PZ2L","object":"chat.completion.chunk","created":1770094715,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"(\\\""}}]},"finish_reason":null}],"usage":null,"obfuscation":"RFDi14O6"} -data: {"id":"chatcmpl-Cqnxk0p34ZkYNestA1fcahFGuLiRR","object":"chat.completion.chunk","created":1766701148,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":" /"}}]},"finish_reason":null}],"usage":null,"obfuscation":"qu1SPcDdrND"} +data: {"id":"chatcmpl-D52mhi3yQh0ZVyJeuHwBBdtr5PZ2L","object":"chat.completion.chunk","created":1770094715,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"Code"}}]},"finish_reason":null}],"usage":null,"obfuscation":"kBQ5JuRLo"} -data: {"id":"chatcmpl-Cqnxk0p34ZkYNestA1fcahFGuLiRR","object":"chat.completion.chunk","created":1766701148,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"tmp"}}]},"finish_reason":null}],"usage":null,"obfuscation":"iL5qu5xkSZ"} +data: {"id":"chatcmpl-D52mhi3yQh0ZVyJeuHwBBdtr5PZ2L","object":"chat.completion.chunk","created":1770094715,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":" length"}}]},"finish_reason":null}],"usage":null,"obfuscation":"uLKt9b"} -data: {"id":"chatcmpl-Cqnxk0p34ZkYNestA1fcahFGuLiRR","object":"chat.completion.chunk","created":1766701148,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"/result"}}]},"finish_reason":null}],"usage":null,"obfuscation":"Pw9vab"} +data: {"id":"chatcmpl-D52mhi3yQh0ZVyJeuHwBBdtr5PZ2L","object":"chat.completion.chunk","created":1770094715,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":":\\"}}]},"finish_reason":null}],"usage":null,"obfuscation":"AernamVDYj"} -data: {"id":"chatcmpl-Cqnxk0p34ZkYNestA1fcahFGuLiRR","object":"chat.completion.chunk","created":1766701148,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":".txt"}}]},"finish_reason":null}],"usage":null,"obfuscation":"4s3fq3kik"} +data: {"id":"chatcmpl-D52mhi3yQh0ZVyJeuHwBBdtr5PZ2L","object":"chat.completion.chunk","created":1770094715,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"\","}}]},"finish_reason":null}],"usage":null,"obfuscation":"W2G1ODBPI7"} -data: {"id":"chatcmpl-Cqnxk0p34ZkYNestA1fcahFGuLiRR","object":"chat.completion.chunk","created":1766701148,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"\",\""}}]},"finish_reason":null}],"usage":null,"obfuscation":"WBE2nHWv"} +data: {"id":"chatcmpl-D52mhi3yQh0ZVyJeuHwBBdtr5PZ2L","object":"chat.completion.chunk","created":1770094715,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":" code"}}]},"finish_reason":null}],"usage":null,"obfuscation":"ClK2v6Co"} -data: {"id":"chatcmpl-Cqnxk0p34ZkYNestA1fcahFGuLiRR","object":"chat.completion.chunk","created":1766701148,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"depends"}}]},"finish_reason":null}],"usage":null,"obfuscation":"SndKuC"} +data: {"id":"chatcmpl-D52mhi3yQh0ZVyJeuHwBBdtr5PZ2L","object":"chat.completion.chunk","created":1770094715,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":".length"}}]},"finish_reason":null}],"usage":null,"obfuscation":"5QREcu"} -data: {"id":"chatcmpl-Cqnxk0p34ZkYNestA1fcahFGuLiRR","object":"chat.completion.chunk","created":1766701148,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"_on"}}]},"finish_reason":null}],"usage":null,"obfuscation":"bqH02zHaqe"} +data: {"id":"chatcmpl-D52mhi3yQh0ZVyJeuHwBBdtr5PZ2L","object":"chat.completion.chunk","created":1770094715,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":");\\"}}]},"finish_reason":null}],"usage":null,"obfuscation":"vYkJXePbp"} -data: {"id":"chatcmpl-Cqnxk0p34ZkYNestA1fcahFGuLiRR","object":"chat.completion.chunk","created":1766701148,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"\":["}}]},"finish_reason":null}],"usage":null,"obfuscation":"JQbX8vhhz"} +data: {"id":"chatcmpl-D52mhi3yQh0ZVyJeuHwBBdtr5PZ2L","object":"chat.completion.chunk","created":1770094715,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"n"}}]},"finish_reason":null}],"usage":null,"obfuscation":"eYwcfwGza6SP"} -data: {"id":"chatcmpl-Cqnxk0p34ZkYNestA1fcahFGuLiRR","object":"chat.completion.chunk","created":1766701148,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"0"}}]},"finish_reason":null}],"usage":null,"obfuscation":"dZPvLddnRhi4"} +data: {"id":"chatcmpl-D52mhi3yQh0ZVyJeuHwBBdtr5PZ2L","object":"chat.completion.chunk","created":1770094715,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":" "}}]},"finish_reason":null}],"usage":null,"obfuscation":"WD8XfCubj9Fi"} -data: {"id":"chatcmpl-Cqnxk0p34ZkYNestA1fcahFGuLiRR","object":"chat.completion.chunk","created":1766701148,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"]}"}}]},"finish_reason":null}],"usage":null,"obfuscation":"H6ruWXUkroP"} +data: {"id":"chatcmpl-D52mhi3yQh0ZVyJeuHwBBdtr5PZ2L","object":"chat.completion.chunk","created":1770094715,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":" const"}}]},"finish_reason":null}],"usage":null,"obfuscation":"GRx06ti"} -data: {"id":"chatcmpl-Cqnxk0p34ZkYNestA1fcahFGuLiRR","object":"chat.completion.chunk","created":1766701148,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"]}"}}]},"finish_reason":null}],"usage":null,"obfuscation":"oo1NmN82Wer"} +data: {"id":"chatcmpl-D52mhi3yQh0ZVyJeuHwBBdtr5PZ2L","object":"chat.completion.chunk","created":1770094715,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":" write"}}]},"finish_reason":null}],"usage":null,"obfuscation":"GARHMD7"} -data: {"id":"chatcmpl-Cqnxk0p34ZkYNestA1fcahFGuLiRR","object":"chat.completion.chunk","created":1766701148,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{},"finish_reason":"tool_calls"}],"usage":null,"obfuscation":"KHl52jcbk6U"} +data: {"id":"chatcmpl-D52mhi3yQh0ZVyJeuHwBBdtr5PZ2L","object":"chat.completion.chunk","created":1770094715,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"Input"}}]},"finish_reason":null}],"usage":null,"obfuscation":"0ViQAnum"} -data: {"id":"chatcmpl-Cqnxk0p34ZkYNestA1fcahFGuLiRR","object":"chat.completion.chunk","created":1766701148,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[],"usage":{"prompt_tokens":2823,"completion_tokens":1347,"total_tokens":4170,"prompt_tokens_details":{"cached_tokens":2176,"audio_tokens":0},"completion_tokens_details":{"reasoning_tokens":1216,"audio_tokens":0,"accepted_prediction_tokens":0,"rejected_prediction_tokens":0}},"obfuscation":"iENdGioMW9"} +data: {"id":"chatcmpl-D52mhi3yQh0ZVyJeuHwBBdtr5PZ2L","object":"chat.completion.chunk","created":1770094715,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":" ="}}]},"finish_reason":null}],"usage":null,"obfuscation":"pH7owHzrw2r"} + +data: {"id":"chatcmpl-D52mhi3yQh0ZVyJeuHwBBdtr5PZ2L","object":"chat.completion.chunk","created":1770094715,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":" {"}}]},"finish_reason":null}],"usage":null,"obfuscation":"g1NLPYzOctR"} + +data: {"id":"chatcmpl-D52mhi3yQh0ZVyJeuHwBBdtr5PZ2L","object":"chat.completion.chunk","created":1770094715,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":" path"}}]},"finish_reason":null}],"usage":null,"obfuscation":"D8RncX3Y"} + +data: {"id":"chatcmpl-D52mhi3yQh0ZVyJeuHwBBdtr5PZ2L","object":"chat.completion.chunk","created":1770094715,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":":"}}]},"finish_reason":null}],"usage":null,"obfuscation":"9WvQILV05SIi"} + +data: {"id":"chatcmpl-D52mhi3yQh0ZVyJeuHwBBdtr5PZ2L","object":"chat.completion.chunk","created":1770094715,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":" '/"}}]},"finish_reason":null}],"usage":null,"obfuscation":"HqB41Bt0gL"} + +data: {"id":"chatcmpl-D52mhi3yQh0ZVyJeuHwBBdtr5PZ2L","object":"chat.completion.chunk","created":1770094715,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"tmp"}}]},"finish_reason":null}],"usage":null,"obfuscation":"vDKGLeU1TF"} + +data: {"id":"chatcmpl-D52mhi3yQh0ZVyJeuHwBBdtr5PZ2L","object":"chat.completion.chunk","created":1770094715,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"/result"}}]},"finish_reason":null}],"usage":null,"obfuscation":"3AdXIE"} + +data: {"id":"chatcmpl-D52mhi3yQh0ZVyJeuHwBBdtr5PZ2L","object":"chat.completion.chunk","created":1770094715,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":".txt"}}]},"finish_reason":null}],"usage":null,"obfuscation":"uRa25ZT1p"} + +data: {"id":"chatcmpl-D52mhi3yQh0ZVyJeuHwBBdtr5PZ2L","object":"chat.completion.chunk","created":1770094715,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"',"}}]},"finish_reason":null}],"usage":null,"obfuscation":"vSHWogAiBbD"} + +data: {"id":"chatcmpl-D52mhi3yQh0ZVyJeuHwBBdtr5PZ2L","object":"chat.completion.chunk","created":1770094715,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":" command"}}]},"finish_reason":null}],"usage":null,"obfuscation":"rZzDM"} + +data: {"id":"chatcmpl-D52mhi3yQh0ZVyJeuHwBBdtr5PZ2L","object":"chat.completion.chunk","created":1770094715,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":":"}}]},"finish_reason":null}],"usage":null,"obfuscation":"pSUTKKwDCn8p"} + +data: {"id":"chatcmpl-D52mhi3yQh0ZVyJeuHwBBdtr5PZ2L","object":"chat.completion.chunk","created":1770094715,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":" '"}}]},"finish_reason":null}],"usage":null,"obfuscation":"Qjt96EnsRAm"} + +data: {"id":"chatcmpl-D52mhi3yQh0ZVyJeuHwBBdtr5PZ2L","object":"chat.completion.chunk","created":1770094715,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"write"}}]},"finish_reason":null}],"usage":null,"obfuscation":"09rNMlnR"} + +data: {"id":"chatcmpl-D52mhi3yQh0ZVyJeuHwBBdtr5PZ2L","object":"chat.completion.chunk","created":1770094715,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"',"}}]},"finish_reason":null}],"usage":null,"obfuscation":"itKwh0SX1ga"} + +data: {"id":"chatcmpl-D52mhi3yQh0ZVyJeuHwBBdtr5PZ2L","object":"chat.completion.chunk","created":1770094715,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":" file"}}]},"finish_reason":null}],"usage":null,"obfuscation":"du3kCfTn"} + +data: {"id":"chatcmpl-D52mhi3yQh0ZVyJeuHwBBdtr5PZ2L","object":"chat.completion.chunk","created":1770094715,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"_text"}}]},"finish_reason":null}],"usage":null,"obfuscation":"ngVnMudT"} + +data: {"id":"chatcmpl-D52mhi3yQh0ZVyJeuHwBBdtr5PZ2L","object":"chat.completion.chunk","created":1770094715,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":":"}}]},"finish_reason":null}],"usage":null,"obfuscation":"ybJSbaU82SiV"} + +data: {"id":"chatcmpl-D52mhi3yQh0ZVyJeuHwBBdtr5PZ2L","object":"chat.completion.chunk","created":1770094715,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":" code"}}]},"finish_reason":null}],"usage":null,"obfuscation":"FRFx9RKj"} + +data: {"id":"chatcmpl-D52mhi3yQh0ZVyJeuHwBBdtr5PZ2L","object":"chat.completion.chunk","created":1770094715,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":" }"}}]},"finish_reason":null}],"usage":null,"obfuscation":"LoFsPXu5IT5"} + +data: {"id":"chatcmpl-D52mhi3yQh0ZVyJeuHwBBdtr5PZ2L","object":"chat.completion.chunk","created":1770094715,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":";\\"}}]},"finish_reason":null}],"usage":null,"obfuscation":"K1VJOHAdow"} + +data: {"id":"chatcmpl-D52mhi3yQh0ZVyJeuHwBBdtr5PZ2L","object":"chat.completion.chunk","created":1770094715,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"n"}}]},"finish_reason":null}],"usage":null,"obfuscation":"79UQqyjivA2x"} + +data: {"id":"chatcmpl-D52mhi3yQh0ZVyJeuHwBBdtr5PZ2L","object":"chat.completion.chunk","created":1770094715,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":" "}}]},"finish_reason":null}],"usage":null,"obfuscation":"Wdhzy4D1tN5x"} + +data: {"id":"chatcmpl-D52mhi3yQh0ZVyJeuHwBBdtr5PZ2L","object":"chat.completion.chunk","created":1770094715,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":" const"}}]},"finish_reason":null}],"usage":null,"obfuscation":"MMQBCgU"} + +data: {"id":"chatcmpl-D52mhi3yQh0ZVyJeuHwBBdtr5PZ2L","object":"chat.completion.chunk","created":1770094715,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":" write"}}]},"finish_reason":null}],"usage":null,"obfuscation":"GXQxXyP"} + +data: {"id":"chatcmpl-D52mhi3yQh0ZVyJeuHwBBdtr5PZ2L","object":"chat.completion.chunk","created":1770094715,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"Result"}}]},"finish_reason":null}],"usage":null,"obfuscation":"aHn6RNH"} + +data: {"id":"chatcmpl-D52mhi3yQh0ZVyJeuHwBBdtr5PZ2L","object":"chat.completion.chunk","created":1770094715,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":" ="}}]},"finish_reason":null}],"usage":null,"obfuscation":"JhpeUQraTS4"} + +data: {"id":"chatcmpl-D52mhi3yQh0ZVyJeuHwBBdtr5PZ2L","object":"chat.completion.chunk","created":1770094715,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":" await"}}]},"finish_reason":null}],"usage":null,"obfuscation":"QsGqq3h"} + +data: {"id":"chatcmpl-D52mhi3yQh0ZVyJeuHwBBdtr5PZ2L","object":"chat.completion.chunk","created":1770094715,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":" Developer"}}]},"finish_reason":null}],"usage":null,"obfuscation":"nFR"} + +data: {"id":"chatcmpl-D52mhi3yQh0ZVyJeuHwBBdtr5PZ2L","object":"chat.completion.chunk","created":1770094715,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":".text"}}]},"finish_reason":null}],"usage":null,"obfuscation":"k75EY8l0"} + +data: {"id":"chatcmpl-D52mhi3yQh0ZVyJeuHwBBdtr5PZ2L","object":"chat.completion.chunk","created":1770094715,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"Editor"}}]},"finish_reason":null}],"usage":null,"obfuscation":"yfopeoz"} + +data: {"id":"chatcmpl-D52mhi3yQh0ZVyJeuHwBBdtr5PZ2L","object":"chat.completion.chunk","created":1770094715,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"(write"}}]},"finish_reason":null}],"usage":null,"obfuscation":"NUMmKyB"} + +data: {"id":"chatcmpl-D52mhi3yQh0ZVyJeuHwBBdtr5PZ2L","object":"chat.completion.chunk","created":1770094715,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"Input"}}]},"finish_reason":null}],"usage":null,"obfuscation":"tlqNVNVr"} + +data: {"id":"chatcmpl-D52mhi3yQh0ZVyJeuHwBBdtr5PZ2L","object":"chat.completion.chunk","created":1770094715,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":");\\"}}]},"finish_reason":null}],"usage":null,"obfuscation":"R9nTDEH8s"} + +data: {"id":"chatcmpl-D52mhi3yQh0ZVyJeuHwBBdtr5PZ2L","object":"chat.completion.chunk","created":1770094715,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"n"}}]},"finish_reason":null}],"usage":null,"obfuscation":"NfNK8HdqJSKv"} + +data: {"id":"chatcmpl-D52mhi3yQh0ZVyJeuHwBBdtr5PZ2L","object":"chat.completion.chunk","created":1770094715,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":" "}}]},"finish_reason":null}],"usage":null,"obfuscation":"QVPXEN5xQ1Ze"} + +data: {"id":"chatcmpl-D52mhi3yQh0ZVyJeuHwBBdtr5PZ2L","object":"chat.completion.chunk","created":1770094715,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":" return"}}]},"finish_reason":null}],"usage":null,"obfuscation":"7MTQ6U"} + +data: {"id":"chatcmpl-D52mhi3yQh0ZVyJeuHwBBdtr5PZ2L","object":"chat.completion.chunk","created":1770094715,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":" {"}}]},"finish_reason":null}],"usage":null,"obfuscation":"K2FMAiCIujD"} + +data: {"id":"chatcmpl-D52mhi3yQh0ZVyJeuHwBBdtr5PZ2L","object":"chat.completion.chunk","created":1770094715,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":" code"}}]},"finish_reason":null}],"usage":null,"obfuscation":"EE9Ru0tD"} + +data: {"id":"chatcmpl-D52mhi3yQh0ZVyJeuHwBBdtr5PZ2L","object":"chat.completion.chunk","created":1770094715,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"Length"}}]},"finish_reason":null}],"usage":null,"obfuscation":"0SZhPwa"} + +data: {"id":"chatcmpl-D52mhi3yQh0ZVyJeuHwBBdtr5PZ2L","object":"chat.completion.chunk","created":1770094715,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":":"}}]},"finish_reason":null}],"usage":null,"obfuscation":"IlyrcjFrNtf1"} + +data: {"id":"chatcmpl-D52mhi3yQh0ZVyJeuHwBBdtr5PZ2L","object":"chat.completion.chunk","created":1770094715,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":" code"}}]},"finish_reason":null}],"usage":null,"obfuscation":"nIffRVq6"} + +data: {"id":"chatcmpl-D52mhi3yQh0ZVyJeuHwBBdtr5PZ2L","object":"chat.completion.chunk","created":1770094715,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":".length"}}]},"finish_reason":null}],"usage":null,"obfuscation":"MJrhKV"} + +data: {"id":"chatcmpl-D52mhi3yQh0ZVyJeuHwBBdtr5PZ2L","object":"chat.completion.chunk","created":1770094715,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":","}}]},"finish_reason":null}],"usage":null,"obfuscation":"b0bPSjPStgSB"} + +data: {"id":"chatcmpl-D52mhi3yQh0ZVyJeuHwBBdtr5PZ2L","object":"chat.completion.chunk","created":1770094715,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":" write"}}]},"finish_reason":null}],"usage":null,"obfuscation":"jZ1s48d"} + +data: {"id":"chatcmpl-D52mhi3yQh0ZVyJeuHwBBdtr5PZ2L","object":"chat.completion.chunk","created":1770094715,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"Result"}}]},"finish_reason":null}],"usage":null,"obfuscation":"FnJBVR0"} + +data: {"id":"chatcmpl-D52mhi3yQh0ZVyJeuHwBBdtr5PZ2L","object":"chat.completion.chunk","created":1770094715,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":","}}]},"finish_reason":null}],"usage":null,"obfuscation":"sGoSb5moV3lU"} + +data: {"id":"chatcmpl-D52mhi3yQh0ZVyJeuHwBBdtr5PZ2L","object":"chat.completion.chunk","created":1770094715,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":" path"}}]},"finish_reason":null}],"usage":null,"obfuscation":"lEDGAUW7"} + +data: {"id":"chatcmpl-D52mhi3yQh0ZVyJeuHwBBdtr5PZ2L","object":"chat.completion.chunk","created":1770094715,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":":"}}]},"finish_reason":null}],"usage":null,"obfuscation":"L33XZS2eVjP8"} + +data: {"id":"chatcmpl-D52mhi3yQh0ZVyJeuHwBBdtr5PZ2L","object":"chat.completion.chunk","created":1770094715,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":" '/"}}]},"finish_reason":null}],"usage":null,"obfuscation":"Mc6352ovqh"} + +data: {"id":"chatcmpl-D52mhi3yQh0ZVyJeuHwBBdtr5PZ2L","object":"chat.completion.chunk","created":1770094715,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"tmp"}}]},"finish_reason":null}],"usage":null,"obfuscation":"WVf7tUa4MO"} + +data: {"id":"chatcmpl-D52mhi3yQh0ZVyJeuHwBBdtr5PZ2L","object":"chat.completion.chunk","created":1770094715,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"/result"}}]},"finish_reason":null}],"usage":null,"obfuscation":"dgLoNl"} + +data: {"id":"chatcmpl-D52mhi3yQh0ZVyJeuHwBBdtr5PZ2L","object":"chat.completion.chunk","created":1770094715,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":".txt"}}]},"finish_reason":null}],"usage":null,"obfuscation":"peo3oJpMf"} + +data: {"id":"chatcmpl-D52mhi3yQh0ZVyJeuHwBBdtr5PZ2L","object":"chat.completion.chunk","created":1770094715,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"'"}}]},"finish_reason":null}],"usage":null,"obfuscation":"CUBYBaa76JLc"} + +data: {"id":"chatcmpl-D52mhi3yQh0ZVyJeuHwBBdtr5PZ2L","object":"chat.completion.chunk","created":1770094715,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":" }"}}]},"finish_reason":null}],"usage":null,"obfuscation":"Mn0H2SyFIfj"} + +data: {"id":"chatcmpl-D52mhi3yQh0ZVyJeuHwBBdtr5PZ2L","object":"chat.completion.chunk","created":1770094715,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":";\\"}}]},"finish_reason":null}],"usage":null,"obfuscation":"auORHaAgoa"} + +data: {"id":"chatcmpl-D52mhi3yQh0ZVyJeuHwBBdtr5PZ2L","object":"chat.completion.chunk","created":1770094715,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"n"}}]},"finish_reason":null}],"usage":null,"obfuscation":"OUGiUCfKmJSM"} + +data: {"id":"chatcmpl-D52mhi3yQh0ZVyJeuHwBBdtr5PZ2L","object":"chat.completion.chunk","created":1770094715,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"}\\"}}]},"finish_reason":null}],"usage":null,"obfuscation":"dF6Q4oq7L7"} + +data: {"id":"chatcmpl-D52mhi3yQh0ZVyJeuHwBBdtr5PZ2L","object":"chat.completion.chunk","created":1770094715,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"n"}}]},"finish_reason":null}],"usage":null,"obfuscation":"zkI9TnUUs3ch"} + +data: {"id":"chatcmpl-D52mhi3yQh0ZVyJeuHwBBdtr5PZ2L","object":"chat.completion.chunk","created":1770094715,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"\",\""}}]},"finish_reason":null}],"usage":null,"obfuscation":"2GBDJdx9"} + +data: {"id":"chatcmpl-D52mhi3yQh0ZVyJeuHwBBdtr5PZ2L","object":"chat.completion.chunk","created":1770094715,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"tool"}}]},"finish_reason":null}],"usage":null,"obfuscation":"IR9AsAJLS"} + +data: {"id":"chatcmpl-D52mhi3yQh0ZVyJeuHwBBdtr5PZ2L","object":"chat.completion.chunk","created":1770094715,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"_graph"}}]},"finish_reason":null}],"usage":null,"obfuscation":"LZdBnmQ"} + +data: {"id":"chatcmpl-D52mhi3yQh0ZVyJeuHwBBdtr5PZ2L","object":"chat.completion.chunk","created":1770094715,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"\":["}}]},"finish_reason":null}],"usage":null,"obfuscation":"LrdA4JMPl"} + +data: {"id":"chatcmpl-D52mhi3yQh0ZVyJeuHwBBdtr5PZ2L","object":"chat.completion.chunk","created":1770094715,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"{\""}}]},"finish_reason":null}],"usage":null,"obfuscation":"hoFr6PdSxy"} + +data: {"id":"chatcmpl-D52mhi3yQh0ZVyJeuHwBBdtr5PZ2L","object":"chat.completion.chunk","created":1770094715,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"tool"}}]},"finish_reason":null}],"usage":null,"obfuscation":"09voS71xG"} + +data: {"id":"chatcmpl-D52mhi3yQh0ZVyJeuHwBBdtr5PZ2L","object":"chat.completion.chunk","created":1770094715,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"\":\""}}]},"finish_reason":null}],"usage":null,"obfuscation":"OnQsbjgO"} + +data: {"id":"chatcmpl-D52mhi3yQh0ZVyJeuHwBBdtr5PZ2L","object":"chat.completion.chunk","created":1770094715,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"Lookup"}}]},"finish_reason":null}],"usage":null,"obfuscation":"txA3kTV"} + +data: {"id":"chatcmpl-D52mhi3yQh0ZVyJeuHwBBdtr5PZ2L","object":"chat.completion.chunk","created":1770094715,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":".get"}}]},"finish_reason":null}],"usage":null,"obfuscation":"bBPWLAWjf"} + +data: {"id":"chatcmpl-D52mhi3yQh0ZVyJeuHwBBdtr5PZ2L","object":"chat.completion.chunk","created":1770094715,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"Code"}}]},"finish_reason":null}],"usage":null,"obfuscation":"MN2cF3bAO"} + +data: {"id":"chatcmpl-D52mhi3yQh0ZVyJeuHwBBdtr5PZ2L","object":"chat.completion.chunk","created":1770094715,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"\",\""}}]},"finish_reason":null}],"usage":null,"obfuscation":"4J9xpizI"} + +data: {"id":"chatcmpl-D52mhi3yQh0ZVyJeuHwBBdtr5PZ2L","object":"chat.completion.chunk","created":1770094715,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"description"}}]},"finish_reason":null}],"usage":null,"obfuscation":"zF"} + +data: {"id":"chatcmpl-D52mhi3yQh0ZVyJeuHwBBdtr5PZ2L","object":"chat.completion.chunk","created":1770094715,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"\":\""}}]},"finish_reason":null}],"usage":null,"obfuscation":"cwNVXSPt"} + +data: {"id":"chatcmpl-D52mhi3yQh0ZVyJeuHwBBdtr5PZ2L","object":"chat.completion.chunk","created":1770094715,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"Get"}}]},"finish_reason":null}],"usage":null,"obfuscation":"lVybj8jkPg"} + +data: {"id":"chatcmpl-D52mhi3yQh0ZVyJeuHwBBdtr5PZ2L","object":"chat.completion.chunk","created":1770094715,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":" code"}}]},"finish_reason":null}],"usage":null,"obfuscation":"j9AE0p2w"} + +data: {"id":"chatcmpl-D52mhi3yQh0ZVyJeuHwBBdtr5PZ2L","object":"chat.completion.chunk","created":1770094715,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":" to"}}]},"finish_reason":null}],"usage":null,"obfuscation":"PsKLkrCQru"} + +data: {"id":"chatcmpl-D52mhi3yQh0ZVyJeuHwBBdtr5PZ2L","object":"chat.completion.chunk","created":1770094715,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":" save"}}]},"finish_reason":null}],"usage":null,"obfuscation":"LaBz90vK"} + +data: {"id":"chatcmpl-D52mhi3yQh0ZVyJeuHwBBdtr5PZ2L","object":"chat.completion.chunk","created":1770094715,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"\",\""}}]},"finish_reason":null}],"usage":null,"obfuscation":"ZM1ykOP4"} + +data: {"id":"chatcmpl-D52mhi3yQh0ZVyJeuHwBBdtr5PZ2L","object":"chat.completion.chunk","created":1770094715,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"depends"}}]},"finish_reason":null}],"usage":null,"obfuscation":"1EQhvi"} + +data: {"id":"chatcmpl-D52mhi3yQh0ZVyJeuHwBBdtr5PZ2L","object":"chat.completion.chunk","created":1770094715,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"_on"}}]},"finish_reason":null}],"usage":null,"obfuscation":"dfaEmUGSEN"} + +data: {"id":"chatcmpl-D52mhi3yQh0ZVyJeuHwBBdtr5PZ2L","object":"chat.completion.chunk","created":1770094715,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"\":[]"}}]},"finish_reason":null}],"usage":null,"obfuscation":"z5Aw0q4K"} + +data: {"id":"chatcmpl-D52mhi3yQh0ZVyJeuHwBBdtr5PZ2L","object":"chat.completion.chunk","created":1770094715,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"},{\""}}]},"finish_reason":null}],"usage":null,"obfuscation":"41s45OYD"} + +data: {"id":"chatcmpl-D52mhi3yQh0ZVyJeuHwBBdtr5PZ2L","object":"chat.completion.chunk","created":1770094715,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"tool"}}]},"finish_reason":null}],"usage":null,"obfuscation":"zL7J4Y5rW"} + +data: {"id":"chatcmpl-D52mhi3yQh0ZVyJeuHwBBdtr5PZ2L","object":"chat.completion.chunk","created":1770094715,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"\":\""}}]},"finish_reason":null}],"usage":null,"obfuscation":"96Kod7bM"} + +data: {"id":"chatcmpl-D52mhi3yQh0ZVyJeuHwBBdtr5PZ2L","object":"chat.completion.chunk","created":1770094715,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"Developer"}}]},"finish_reason":null}],"usage":null,"obfuscation":"Qnr0"} + +data: {"id":"chatcmpl-D52mhi3yQh0ZVyJeuHwBBdtr5PZ2L","object":"chat.completion.chunk","created":1770094715,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":".text"}}]},"finish_reason":null}],"usage":null,"obfuscation":"J3Fq0V0e"} + +data: {"id":"chatcmpl-D52mhi3yQh0ZVyJeuHwBBdtr5PZ2L","object":"chat.completion.chunk","created":1770094715,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"Editor"}}]},"finish_reason":null}],"usage":null,"obfuscation":"7OJJNS2"} + +data: {"id":"chatcmpl-D52mhi3yQh0ZVyJeuHwBBdtr5PZ2L","object":"chat.completion.chunk","created":1770094715,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"\",\""}}]},"finish_reason":null}],"usage":null,"obfuscation":"p0Um8MwA"} + +data: {"id":"chatcmpl-D52mhi3yQh0ZVyJeuHwBBdtr5PZ2L","object":"chat.completion.chunk","created":1770094715,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"description"}}]},"finish_reason":null}],"usage":null,"obfuscation":"ZR"} + +data: {"id":"chatcmpl-D52mhi3yQh0ZVyJeuHwBBdtr5PZ2L","object":"chat.completion.chunk","created":1770094715,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"\":\""}}]},"finish_reason":null}],"usage":null,"obfuscation":"wIKGLRH8"} + +data: {"id":"chatcmpl-D52mhi3yQh0ZVyJeuHwBBdtr5PZ2L","object":"chat.completion.chunk","created":1770094715,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"Write"}}]},"finish_reason":null}],"usage":null,"obfuscation":"zbApOiBy"} + +data: {"id":"chatcmpl-D52mhi3yQh0ZVyJeuHwBBdtr5PZ2L","object":"chat.completion.chunk","created":1770094715,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":" code"}}]},"finish_reason":null}],"usage":null,"obfuscation":"M1PXb440"} + +data: {"id":"chatcmpl-D52mhi3yQh0ZVyJeuHwBBdtr5PZ2L","object":"chat.completion.chunk","created":1770094715,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":" to"}}]},"finish_reason":null}],"usage":null,"obfuscation":"En0BC1zcqo"} + +data: {"id":"chatcmpl-D52mhi3yQh0ZVyJeuHwBBdtr5PZ2L","object":"chat.completion.chunk","created":1770094715,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":" /"}}]},"finish_reason":null}],"usage":null,"obfuscation":"5VoEIKXk92K"} + +data: {"id":"chatcmpl-D52mhi3yQh0ZVyJeuHwBBdtr5PZ2L","object":"chat.completion.chunk","created":1770094715,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"tmp"}}]},"finish_reason":null}],"usage":null,"obfuscation":"6WSWQwr75c"} + +data: {"id":"chatcmpl-D52mhi3yQh0ZVyJeuHwBBdtr5PZ2L","object":"chat.completion.chunk","created":1770094715,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"/result"}}]},"finish_reason":null}],"usage":null,"obfuscation":"z0OIp4"} + +data: {"id":"chatcmpl-D52mhi3yQh0ZVyJeuHwBBdtr5PZ2L","object":"chat.completion.chunk","created":1770094715,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":".txt"}}]},"finish_reason":null}],"usage":null,"obfuscation":"yiZKDyLLD"} + +data: {"id":"chatcmpl-D52mhi3yQh0ZVyJeuHwBBdtr5PZ2L","object":"chat.completion.chunk","created":1770094715,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"\",\""}}]},"finish_reason":null}],"usage":null,"obfuscation":"wQnmcE1I"} + +data: {"id":"chatcmpl-D52mhi3yQh0ZVyJeuHwBBdtr5PZ2L","object":"chat.completion.chunk","created":1770094715,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"depends"}}]},"finish_reason":null}],"usage":null,"obfuscation":"Im97QG"} + +data: {"id":"chatcmpl-D52mhi3yQh0ZVyJeuHwBBdtr5PZ2L","object":"chat.completion.chunk","created":1770094715,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"_on"}}]},"finish_reason":null}],"usage":null,"obfuscation":"YX0ERDmjVw"} + +data: {"id":"chatcmpl-D52mhi3yQh0ZVyJeuHwBBdtr5PZ2L","object":"chat.completion.chunk","created":1770094715,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"\":["}}]},"finish_reason":null}],"usage":null,"obfuscation":"bmrLkX68c"} + +data: {"id":"chatcmpl-D52mhi3yQh0ZVyJeuHwBBdtr5PZ2L","object":"chat.completion.chunk","created":1770094715,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"0"}}]},"finish_reason":null}],"usage":null,"obfuscation":"E6kFZ2NkKqDW"} + +data: {"id":"chatcmpl-D52mhi3yQh0ZVyJeuHwBBdtr5PZ2L","object":"chat.completion.chunk","created":1770094715,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"]}"}}]},"finish_reason":null}],"usage":null,"obfuscation":"GpL2fucX06l"} + +data: {"id":"chatcmpl-D52mhi3yQh0ZVyJeuHwBBdtr5PZ2L","object":"chat.completion.chunk","created":1770094715,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"]}"}}]},"finish_reason":null}],"usage":null,"obfuscation":"QcijSKPB34X"} + +data: {"id":"chatcmpl-D52mhi3yQh0ZVyJeuHwBBdtr5PZ2L","object":"chat.completion.chunk","created":1770094715,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{},"finish_reason":"tool_calls"}],"usage":null,"obfuscation":"38W18dvZIF7"} + +data: {"id":"chatcmpl-D52mhi3yQh0ZVyJeuHwBBdtr5PZ2L","object":"chat.completion.chunk","created":1770094715,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[],"usage":{"prompt_tokens":5612,"completion_tokens":1193,"total_tokens":6805,"prompt_tokens_details":{"cached_tokens":0,"audio_tokens":0},"completion_tokens_details":{"reasoning_tokens":960,"audio_tokens":0,"accepted_prediction_tokens":0,"rejected_prediction_tokens":0}},"obfuscation":"Ikcn1RF9DqIck8"} data: [DONE] + + diff --git a/crates/goose-acp/tests/test_data/openai_builtin_final.txt b/crates/goose-acp/tests/test_data/openai_builtin_final.txt index 1551dbee376a..d3f43dff24b6 100644 --- a/crates/goose-acp/tests/test_data/openai_builtin_final.txt +++ b/crates/goose-acp/tests/test_data/openai_builtin_final.txt @@ -1,173 +1,355 @@ -data: {"id":"chatcmpl-CqnxsizuiyMRFitx0QgzLwSExvKmX","object":"chat.completion.chunk","created":1766701156,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"role":"assistant","content":"","refusal":null},"finish_reason":null}],"usage":null,"obfuscation":"O7AAt"} +data: {"id":"chatcmpl-D52mrPdEJMNMRiu3YPcMWgAkrBN3L","object":"chat.completion.chunk","created":1770094725,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"role":"assistant","content":"","refusal":null},"finish_reason":null}],"usage":null,"obfuscation":"DBl2H"} -data: {"id":"chatcmpl-CqnxsizuiyMRFitx0QgzLwSExvKmX","object":"chat.completion.chunk","created":1766701156,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":"I've"},"finish_reason":null}],"usage":null,"obfuscation":"cVL"} +data: {"id":"chatcmpl-D52mrPdEJMNMRiu3YPcMWgAkrBN3L","object":"chat.completion.chunk","created":1770094725,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":"##"},"finish_reason":null}],"usage":null,"obfuscation":"QftPU"} -data: {"id":"chatcmpl-CqnxsizuiyMRFitx0QgzLwSExvKmX","object":"chat.completion.chunk","created":1766701156,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":" retrieved"},"finish_reason":null}],"usage":null,"obfuscation":"F0LyC2nMxaBxl"} +data: {"id":"chatcmpl-D52mrPdEJMNMRiu3YPcMWgAkrBN3L","object":"chat.completion.chunk","created":1770094725,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":" Operation"},"finish_reason":null}],"usage":null,"obfuscation":"J5Sw3zVEkPvfW"} -data: {"id":"chatcmpl-CqnxsizuiyMRFitx0QgzLwSExvKmX","object":"chat.completion.chunk","created":1766701156,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":" the"},"finish_reason":null}],"usage":null,"obfuscation":"D0e"} +data: {"id":"chatcmpl-D52mrPdEJMNMRiu3YPcMWgAkrBN3L","object":"chat.completion.chunk","created":1770094725,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":" completed"},"finish_reason":null}],"usage":null,"obfuscation":"1ueJsqoOUutou"} -data: {"id":"chatcmpl-CqnxsizuiyMRFitx0QgzLwSExvKmX","object":"chat.completion.chunk","created":1766701156,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":" code"},"finish_reason":null}],"usage":null,"obfuscation":"Fa"} +data: {"id":"chatcmpl-D52mrPdEJMNMRiu3YPcMWgAkrBN3L","object":"chat.completion.chunk","created":1770094725,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":"\n\n"},"finish_reason":null}],"usage":null,"obfuscation":"4IS"} -data: {"id":"chatcmpl-CqnxsizuiyMRFitx0QgzLwSExvKmX","object":"chat.completion.chunk","created":1766701156,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":" and"},"finish_reason":null}],"usage":null,"obfuscation":"SVR"} +data: {"id":"chatcmpl-D52mrPdEJMNMRiu3YPcMWgAkrBN3L","object":"chat.completion.chunk","created":1770094725,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":"I"},"finish_reason":null}],"usage":null,"obfuscation":"sZdBrx"} -data: {"id":"chatcmpl-CqnxsizuiyMRFitx0QgzLwSExvKmX","object":"chat.completion.chunk","created":1766701156,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":" saved"},"finish_reason":null}],"usage":null,"obfuscation":"Z"} +data: {"id":"chatcmpl-D52mrPdEJMNMRiu3YPcMWgAkrBN3L","object":"chat.completion.chunk","created":1770094725,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":" followed"},"finish_reason":null}],"usage":null,"obfuscation":"XdPAY5Vz3cjYwj"} -data: {"id":"chatcmpl-CqnxsizuiyMRFitx0QgzLwSExvKmX","object":"chat.completion.chunk","created":1766701156,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":" it"},"finish_reason":null}],"usage":null,"obfuscation":"1wEo"} +data: {"id":"chatcmpl-D52mrPdEJMNMRiu3YPcMWgAkrBN3L","object":"chat.completion.chunk","created":1770094725,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":" your"},"finish_reason":null}],"usage":null,"obfuscation":"PI"} -data: {"id":"chatcmpl-CqnxsizuiyMRFitx0QgzLwSExvKmX","object":"chat.completion.chunk","created":1766701156,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":" to"},"finish_reason":null}],"usage":null,"obfuscation":"DXcu"} +data: {"id":"chatcmpl-D52mrPdEJMNMRiu3YPcMWgAkrBN3L","object":"chat.completion.chunk","created":1770094725,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":" instruction"},"finish_reason":null}],"usage":null,"obfuscation":"UH9S7jMuejM"} -data: {"id":"chatcmpl-CqnxsizuiyMRFitx0QgzLwSExvKmX","object":"chat.completion.chunk","created":1766701156,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":" /"},"finish_reason":null}],"usage":null,"obfuscation":"FaGyP"} +data: {"id":"chatcmpl-D52mrPdEJMNMRiu3YPcMWgAkrBN3L","object":"chat.completion.chunk","created":1770094725,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":" to"},"finish_reason":null}],"usage":null,"obfuscation":"QWA3"} -data: {"id":"chatcmpl-CqnxsizuiyMRFitx0QgzLwSExvKmX","object":"chat.completion.chunk","created":1766701156,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":"tmp"},"finish_reason":null}],"usage":null,"obfuscation":"GZ4i"} +data: {"id":"chatcmpl-D52mrPdEJMNMRiu3YPcMWgAkrBN3L","object":"chat.completion.chunk","created":1770094725,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":" batch"},"finish_reason":null}],"usage":null,"obfuscation":"m"} -data: {"id":"chatcmpl-CqnxsizuiyMRFitx0QgzLwSExvKmX","object":"chat.completion.chunk","created":1766701156,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":"/result"},"finish_reason":null}],"usage":null,"obfuscation":""} +data: {"id":"chatcmpl-D52mrPdEJMNMRiu3YPcMWgAkrBN3L","object":"chat.completion.chunk","created":1770094725,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":" get"},"finish_reason":null}],"usage":null,"obfuscation":"RzC"} -data: {"id":"chatcmpl-CqnxsizuiyMRFitx0QgzLwSExvKmX","object":"chat.completion.chunk","created":1766701156,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":".txt"},"finish_reason":null}],"usage":null,"obfuscation":"ph6"} +data: {"id":"chatcmpl-D52mrPdEJMNMRiu3YPcMWgAkrBN3L","object":"chat.completion.chunk","created":1770094725,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":"Code"},"finish_reason":null}],"usage":null,"obfuscation":"hR9"} -data: {"id":"chatcmpl-CqnxsizuiyMRFitx0QgzLwSExvKmX","object":"chat.completion.chunk","created":1766701156,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":".\n\n"},"finish_reason":null}],"usage":null,"obfuscation":"tu"} +data: {"id":"chatcmpl-D52mrPdEJMNMRiu3YPcMWgAkrBN3L","object":"chat.completion.chunk","created":1770094725,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":" and"},"finish_reason":null}],"usage":null,"obfuscation":"LzV"} -data: {"id":"chatcmpl-CqnxsizuiyMRFitx0QgzLwSExvKmX","object":"chat.completion.chunk","created":1766701156,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":"Details"},"finish_reason":null}],"usage":null,"obfuscation":""} +data: {"id":"chatcmpl-D52mrPdEJMNMRiu3YPcMWgAkrBN3L","object":"chat.completion.chunk","created":1770094725,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":" text"},"finish_reason":null}],"usage":null,"obfuscation":"Rh"} -data: {"id":"chatcmpl-CqnxsizuiyMRFitx0QgzLwSExvKmX","object":"chat.completion.chunk","created":1766701156,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":":\n"},"finish_reason":null}],"usage":null,"obfuscation":"EvwW"} +data: {"id":"chatcmpl-D52mrPdEJMNMRiu3YPcMWgAkrBN3L","object":"chat.completion.chunk","created":1770094725,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":"Editor"},"finish_reason":null}],"usage":null,"obfuscation":"T"} -data: {"id":"chatcmpl-CqnxsizuiyMRFitx0QgzLwSExvKmX","object":"chat.completion.chunk","created":1766701156,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":"-"},"finish_reason":null}],"usage":null,"obfuscation":"4593mu"} +data: {"id":"chatcmpl-D52mrPdEJMNMRiu3YPcMWgAkrBN3L","object":"chat.completion.chunk","created":1770094725,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":" into"},"finish_reason":null}],"usage":null,"obfuscation":"Bw"} -data: {"id":"chatcmpl-CqnxsizuiyMRFitx0QgzLwSExvKmX","object":"chat.completion.chunk","created":1766701156,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":" Retrieved"},"finish_reason":null}],"usage":null,"obfuscation":"VKOlyvL1zhIEw"} +data: {"id":"chatcmpl-D52mrPdEJMNMRiu3YPcMWgAkrBN3L","object":"chat.completion.chunk","created":1770094725,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":" a"},"finish_reason":null}],"usage":null,"obfuscation":"j39H7"} -data: {"id":"chatcmpl-CqnxsizuiyMRFitx0QgzLwSExvKmX","object":"chat.completion.chunk","created":1766701156,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":" code"},"finish_reason":null}],"usage":null,"obfuscation":"rc"} +data: {"id":"chatcmpl-D52mrPdEJMNMRiu3YPcMWgAkrBN3L","object":"chat.completion.chunk","created":1770094725,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":" single"},"finish_reason":null}],"usage":null,"obfuscation":""} -data: {"id":"chatcmpl-CqnxsizuiyMRFitx0QgzLwSExvKmX","object":"chat.completion.chunk","created":1766701156,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":":"},"finish_reason":null}],"usage":null,"obfuscation":"27XGKW"} +data: {"id":"chatcmpl-D52mrPdEJMNMRiu3YPcMWgAkrBN3L","object":"chat.completion.chunk","created":1770094725,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":" execute"},"finish_reason":null}],"usage":null,"obfuscation":"tzHiE8zaYekvXrP"} -data: {"id":"chatcmpl-CqnxsizuiyMRFitx0QgzLwSExvKmX","object":"chat.completion.chunk","created":1766701156,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":" via"},"finish_reason":null}],"usage":null,"obfuscation":"0di"} +data: {"id":"chatcmpl-D52mrPdEJMNMRiu3YPcMWgAkrBN3L","object":"chat.completion.chunk","created":1770094725,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":" call"},"finish_reason":null}],"usage":null,"obfuscation":"vw"} -data: {"id":"chatcmpl-CqnxsizuiyMRFitx0QgzLwSExvKmX","object":"chat.completion.chunk","created":1766701156,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":" lookup"},"finish_reason":null}],"usage":null,"obfuscation":""} +data: {"id":"chatcmpl-D52mrPdEJMNMRiu3YPcMWgAkrBN3L","object":"chat.completion.chunk","created":1770094725,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":" and"},"finish_reason":null}],"usage":null,"obfuscation":"F7m"} -data: {"id":"chatcmpl-CqnxsizuiyMRFitx0QgzLwSExvKmX","object":"chat.completion.chunk","created":1766701156,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":"/get"},"finish_reason":null}],"usage":null,"obfuscation":"olP"} +data: {"id":"chatcmpl-D52mrPdEJMNMRiu3YPcMWgAkrBN3L","object":"chat.completion.chunk","created":1770094725,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":" saved"},"finish_reason":null}],"usage":null,"obfuscation":"H"} -data: {"id":"chatcmpl-CqnxsizuiyMRFitx0QgzLwSExvKmX","object":"chat.completion.chunk","created":1766701156,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":"_code"},"finish_reason":null}],"usage":null,"obfuscation":"Sa"} +data: {"id":"chatcmpl-D52mrPdEJMNMRiu3YPcMWgAkrBN3L","object":"chat.completion.chunk","created":1770094725,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":" the"},"finish_reason":null}],"usage":null,"obfuscation":"KV0"} -data: {"id":"chatcmpl-CqnxsizuiyMRFitx0QgzLwSExvKmX","object":"chat.completion.chunk","created":1766701156,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":"\n"},"finish_reason":null}],"usage":null,"obfuscation":"lsb3w"} +data: {"id":"chatcmpl-D52mrPdEJMNMRiu3YPcMWgAkrBN3L","object":"chat.completion.chunk","created":1770094725,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":" result"},"finish_reason":null}],"usage":null,"obfuscation":""} -data: {"id":"chatcmpl-CqnxsizuiyMRFitx0QgzLwSExvKmX","object":"chat.completion.chunk","created":1766701156,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":"-"},"finish_reason":null}],"usage":null,"obfuscation":"ognYvV"} +data: {"id":"chatcmpl-D52mrPdEJMNMRiu3YPcMWgAkrBN3L","object":"chat.completion.chunk","created":1770094725,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":" to"},"finish_reason":null}],"usage":null,"obfuscation":"ifZo"} -data: {"id":"chatcmpl-CqnxsizuiyMRFitx0QgzLwSExvKmX","object":"chat.completion.chunk","created":1766701156,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":" Saved"},"finish_reason":null}],"usage":null,"obfuscation":"W"} +data: {"id":"chatcmpl-D52mrPdEJMNMRiu3YPcMWgAkrBN3L","object":"chat.completion.chunk","created":1770094725,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":" /"},"finish_reason":null}],"usage":null,"obfuscation":"zvEML"} -data: {"id":"chatcmpl-CqnxsizuiyMRFitx0QgzLwSExvKmX","object":"chat.completion.chunk","created":1766701156,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":" to"},"finish_reason":null}],"usage":null,"obfuscation":"hYDy"} +data: {"id":"chatcmpl-D52mrPdEJMNMRiu3YPcMWgAkrBN3L","object":"chat.completion.chunk","created":1770094725,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":"tmp"},"finish_reason":null}],"usage":null,"obfuscation":"m67x"} -data: {"id":"chatcmpl-CqnxsizuiyMRFitx0QgzLwSExvKmX","object":"chat.completion.chunk","created":1766701156,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":":"},"finish_reason":null}],"usage":null,"obfuscation":"1jWh7T"} +data: {"id":"chatcmpl-D52mrPdEJMNMRiu3YPcMWgAkrBN3L","object":"chat.completion.chunk","created":1770094725,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":"/result"},"finish_reason":null}],"usage":null,"obfuscation":""} -data: {"id":"chatcmpl-CqnxsizuiyMRFitx0QgzLwSExvKmX","object":"chat.completion.chunk","created":1766701156,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":" /"},"finish_reason":null}],"usage":null,"obfuscation":"ZlVNQ"} +data: {"id":"chatcmpl-D52mrPdEJMNMRiu3YPcMWgAkrBN3L","object":"chat.completion.chunk","created":1770094725,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":".txt"},"finish_reason":null}],"usage":null,"obfuscation":"z8K"} -data: {"id":"chatcmpl-CqnxsizuiyMRFitx0QgzLwSExvKmX","object":"chat.completion.chunk","created":1766701156,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":"tmp"},"finish_reason":null}],"usage":null,"obfuscation":"I7Jf"} +data: {"id":"chatcmpl-D52mrPdEJMNMRiu3YPcMWgAkrBN3L","object":"chat.completion.chunk","created":1770094725,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":".\n\n"},"finish_reason":null}],"usage":null,"obfuscation":"EP"} -data: {"id":"chatcmpl-CqnxsizuiyMRFitx0QgzLwSExvKmX","object":"chat.completion.chunk","created":1766701156,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":"/result"},"finish_reason":null}],"usage":null,"obfuscation":""} +data: {"id":"chatcmpl-D52mrPdEJMNMRiu3YPcMWgAkrBN3L","object":"chat.completion.chunk","created":1770094725,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":"-"},"finish_reason":null}],"usage":null,"obfuscation":"dDhAJx"} -data: {"id":"chatcmpl-CqnxsizuiyMRFitx0QgzLwSExvKmX","object":"chat.completion.chunk","created":1766701156,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":".txt"},"finish_reason":null}],"usage":null,"obfuscation":"sy2"} +data: {"id":"chatcmpl-D52mrPdEJMNMRiu3YPcMWgAkrBN3L","object":"chat.completion.chunk","created":1770094725,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":" Path"},"finish_reason":null}],"usage":null,"obfuscation":"ti"} -data: {"id":"chatcmpl-CqnxsizuiyMRFitx0QgzLwSExvKmX","object":"chat.completion.chunk","created":1766701156,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":"\n"},"finish_reason":null}],"usage":null,"obfuscation":"Q5DAw"} +data: {"id":"chatcmpl-D52mrPdEJMNMRiu3YPcMWgAkrBN3L","object":"chat.completion.chunk","created":1770094725,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":" written"},"finish_reason":null}],"usage":null,"obfuscation":"Fmz6IdQRRVrbcG3"} -data: {"id":"chatcmpl-CqnxsizuiyMRFitx0QgzLwSExvKmX","object":"chat.completion.chunk","created":1766701156,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":"-"},"finish_reason":null}],"usage":null,"obfuscation":"UXGt7Q"} +data: {"id":"chatcmpl-D52mrPdEJMNMRiu3YPcMWgAkrBN3L","object":"chat.completion.chunk","created":1770094725,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":":"},"finish_reason":null}],"usage":null,"obfuscation":"uAsSWL"} -data: {"id":"chatcmpl-CqnxsizuiyMRFitx0QgzLwSExvKmX","object":"chat.completion.chunk","created":1766701156,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":" File"},"finish_reason":null}],"usage":null,"obfuscation":"ca"} +data: {"id":"chatcmpl-D52mrPdEJMNMRiu3YPcMWgAkrBN3L","object":"chat.completion.chunk","created":1770094725,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":" /"},"finish_reason":null}],"usage":null,"obfuscation":"l25Gw"} -data: {"id":"chatcmpl-CqnxsizuiyMRFitx0QgzLwSExvKmX","object":"chat.completion.chunk","created":1766701156,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":" content"},"finish_reason":null}],"usage":null,"obfuscation":"HUApvDcMsMAuxrY"} +data: {"id":"chatcmpl-D52mrPdEJMNMRiu3YPcMWgAkrBN3L","object":"chat.completion.chunk","created":1770094725,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":"tmp"},"finish_reason":null}],"usage":null,"obfuscation":"eEjT"} -data: {"id":"chatcmpl-CqnxsizuiyMRFitx0QgzLwSExvKmX","object":"chat.completion.chunk","created":1766701156,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":" ("},"finish_reason":null}],"usage":null,"obfuscation":"PU6QY"} +data: {"id":"chatcmpl-D52mrPdEJMNMRiu3YPcMWgAkrBN3L","object":"chat.completion.chunk","created":1770094725,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":"/result"},"finish_reason":null}],"usage":null,"obfuscation":""} -data: {"id":"chatcmpl-CqnxsizuiyMRFitx0QgzLwSExvKmX","object":"chat.completion.chunk","created":1766701156,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":"excerpt"},"finish_reason":null}],"usage":null,"obfuscation":""} +data: {"id":"chatcmpl-D52mrPdEJMNMRiu3YPcMWgAkrBN3L","object":"chat.completion.chunk","created":1770094725,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":".txt"},"finish_reason":null}],"usage":null,"obfuscation":"LoC"} -data: {"id":"chatcmpl-CqnxsizuiyMRFitx0QgzLwSExvKmX","object":"chat.completion.chunk","created":1766701156,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":"):\n"},"finish_reason":null}],"usage":null,"obfuscation":"YyY"} +data: {"id":"chatcmpl-D52mrPdEJMNMRiu3YPcMWgAkrBN3L","object":"chat.completion.chunk","created":1770094725,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":"\n"},"finish_reason":null}],"usage":null,"obfuscation":"Ao85V"} -data: {"id":"chatcmpl-CqnxsizuiyMRFitx0QgzLwSExvKmX","object":"chat.completion.chunk","created":1766701156,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":" "},"finish_reason":null}],"usage":null,"obfuscation":"9CPGc5"} +data: {"id":"chatcmpl-D52mrPdEJMNMRiu3YPcMWgAkrBN3L","object":"chat.completion.chunk","created":1770094725,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":"-"},"finish_reason":null}],"usage":null,"obfuscation":"YZVZ8Y"} -data: {"id":"chatcmpl-CqnxsizuiyMRFitx0QgzLwSExvKmX","object":"chat.completion.chunk","created":1766701156,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":" ```\n"},"finish_reason":null}],"usage":null,"obfuscation":"N"} +data: {"id":"chatcmpl-D52mrPdEJMNMRiu3YPcMWgAkrBN3L","object":"chat.completion.chunk","created":1770094725,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":" Code"},"finish_reason":null}],"usage":null,"obfuscation":"2M"} -data: {"id":"chatcmpl-CqnxsizuiyMRFitx0QgzLwSExvKmX","object":"chat.completion.chunk","created":1766701156,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":" "},"finish_reason":null}],"usage":null,"obfuscation":"7w1FAS"} +data: {"id":"chatcmpl-D52mrPdEJMNMRiu3YPcMWgAkrBN3L","object":"chat.completion.chunk","created":1770094725,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":" length"},"finish_reason":null}],"usage":null,"obfuscation":""} -data: {"id":"chatcmpl-CqnxsizuiyMRFitx0QgzLwSExvKmX","object":"chat.completion.chunk","created":1766701156,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":" test"},"finish_reason":null}],"usage":null,"obfuscation":"4m"} +data: {"id":"chatcmpl-D52mrPdEJMNMRiu3YPcMWgAkrBN3L","object":"chat.completion.chunk","created":1770094725,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":" fetched"},"finish_reason":null}],"usage":null,"obfuscation":"wLn3x2DncUr9KZN"} -data: {"id":"chatcmpl-CqnxsizuiyMRFitx0QgzLwSExvKmX","object":"chat.completion.chunk","created":1766701156,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":"-"},"finish_reason":null}],"usage":null,"obfuscation":"SRFQJN"} +data: {"id":"chatcmpl-D52mrPdEJMNMRiu3YPcMWgAkrBN3L","object":"chat.completion.chunk","created":1770094725,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":":"},"finish_reason":null}],"usage":null,"obfuscation":"CwhQ2N"} -data: {"id":"chatcmpl-CqnxsizuiyMRFitx0QgzLwSExvKmX","object":"chat.completion.chunk","created":1766701156,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":"uuid"},"finish_reason":null}],"usage":null,"obfuscation":"DhC"} +data: {"id":"chatcmpl-D52mrPdEJMNMRiu3YPcMWgAkrBN3L","object":"chat.completion.chunk","created":1770094725,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":" "},"finish_reason":null}],"usage":null,"obfuscation":"jX7HKQ"} -data: {"id":"chatcmpl-CqnxsizuiyMRFitx0QgzLwSExvKmX","object":"chat.completion.chunk","created":1766701156,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":"-"},"finish_reason":null}],"usage":null,"obfuscation":"dUQSSl"} +data: {"id":"chatcmpl-D52mrPdEJMNMRiu3YPcMWgAkrBN3L","object":"chat.completion.chunk","created":1770094725,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":"21"},"finish_reason":null}],"usage":null,"obfuscation":"v2Q3e"} -data: {"id":"chatcmpl-CqnxsizuiyMRFitx0QgzLwSExvKmX","object":"chat.completion.chunk","created":1766701156,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":"123"},"finish_reason":null}],"usage":null,"obfuscation":"O56B"} +data: {"id":"chatcmpl-D52mrPdEJMNMRiu3YPcMWgAkrBN3L","object":"chat.completion.chunk","created":1770094725,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":" characters"},"finish_reason":null}],"usage":null,"obfuscation":"rzLUIdvybCee"} -data: {"id":"chatcmpl-CqnxsizuiyMRFitx0QgzLwSExvKmX","object":"chat.completion.chunk","created":1766701156,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":"45"},"finish_reason":null}],"usage":null,"obfuscation":"7QbIj"} +data: {"id":"chatcmpl-D52mrPdEJMNMRiu3YPcMWgAkrBN3L","object":"chat.completion.chunk","created":1770094725,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":"\n"},"finish_reason":null}],"usage":null,"obfuscation":"x3pWt"} -data: {"id":"chatcmpl-CqnxsizuiyMRFitx0QgzLwSExvKmX","object":"chat.completion.chunk","created":1766701156,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":"-"},"finish_reason":null}],"usage":null,"obfuscation":"cZFPqS"} +data: {"id":"chatcmpl-D52mrPdEJMNMRiu3YPcMWgAkrBN3L","object":"chat.completion.chunk","created":1770094725,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":"-"},"finish_reason":null}],"usage":null,"obfuscation":"FiaGDY"} -data: {"id":"chatcmpl-CqnxsizuiyMRFitx0QgzLwSExvKmX","object":"chat.completion.chunk","created":1766701156,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":"678"},"finish_reason":null}],"usage":null,"obfuscation":"ANzY"} +data: {"id":"chatcmpl-D52mrPdEJMNMRiu3YPcMWgAkrBN3L","object":"chat.completion.chunk","created":1770094725,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":" Written"},"finish_reason":null}],"usage":null,"obfuscation":"Uv5i4hNfDvCKOKo"} -data: {"id":"chatcmpl-CqnxsizuiyMRFitx0QgzLwSExvKmX","object":"chat.completion.chunk","created":1766701156,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":"90"},"finish_reason":null}],"usage":null,"obfuscation":"d9Bgs"} +data: {"id":"chatcmpl-D52mrPdEJMNMRiu3YPcMWgAkrBN3L","object":"chat.completion.chunk","created":1770094725,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":" content"},"finish_reason":null}],"usage":null,"obfuscation":"IwipJnjOAgQbsM3"} -data: {"id":"chatcmpl-CqnxsizuiyMRFitx0QgzLwSExvKmX","object":"chat.completion.chunk","created":1766701156,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":"\n\n"},"finish_reason":null}],"usage":null,"obfuscation":"no1"} +data: {"id":"chatcmpl-D52mrPdEJMNMRiu3YPcMWgAkrBN3L","object":"chat.completion.chunk","created":1770094725,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":" in"},"finish_reason":null}],"usage":null,"obfuscation":"1xjY"} -data: {"id":"chatcmpl-CqnxsizuiyMRFitx0QgzLwSExvKmX","object":"chat.completion.chunk","created":1766701156,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":" "},"finish_reason":null}],"usage":null,"obfuscation":"PlkSe6"} +data: {"id":"chatcmpl-D52mrPdEJMNMRiu3YPcMWgAkrBN3L","object":"chat.completion.chunk","created":1770094725,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":" the"},"finish_reason":null}],"usage":null,"obfuscation":"EtX"} -data: {"id":"chatcmpl-CqnxsizuiyMRFitx0QgzLwSExvKmX","object":"chat.completion.chunk","created":1766701156,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":" ```\n"},"finish_reason":null}],"usage":null,"obfuscation":"P"} +data: {"id":"chatcmpl-D52mrPdEJMNMRiu3YPcMWgAkrBN3L","object":"chat.completion.chunk","created":1770094725,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":" file"},"finish_reason":null}],"usage":null,"obfuscation":"Ki"} -data: {"id":"chatcmpl-CqnxsizuiyMRFitx0QgzLwSExvKmX","object":"chat.completion.chunk","created":1766701156,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":"If"},"finish_reason":null}],"usage":null,"obfuscation":"qse2x"} +data: {"id":"chatcmpl-D52mrPdEJMNMRiu3YPcMWgAkrBN3L","object":"chat.completion.chunk","created":1770094725,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":":\n"},"finish_reason":null}],"usage":null,"obfuscation":"bsYW"} -data: {"id":"chatcmpl-CqnxsizuiyMRFitx0QgzLwSExvKmX","object":"chat.completion.chunk","created":1766701156,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":" you"},"finish_reason":null}],"usage":null,"obfuscation":"Fx3"} +data: {"id":"chatcmpl-D52mrPdEJMNMRiu3YPcMWgAkrBN3L","object":"chat.completion.chunk","created":1770094725,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":" "},"finish_reason":null}],"usage":null,"obfuscation":"HuTiM1"} -data: {"id":"chatcmpl-CqnxsizuiyMRFitx0QgzLwSExvKmX","object":"chat.completion.chunk","created":1766701156,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":" want"},"finish_reason":null}],"usage":null,"obfuscation":"jp"} +data: {"id":"chatcmpl-D52mrPdEJMNMRiu3YPcMWgAkrBN3L","object":"chat.completion.chunk","created":1770094725,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":" -"},"finish_reason":null}],"usage":null,"obfuscation":"Djq3E"} -data: {"id":"chatcmpl-CqnxsizuiyMRFitx0QgzLwSExvKmX","object":"chat.completion.chunk","created":1766701156,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":" me"},"finish_reason":null}],"usage":null,"obfuscation":"DeeA"} +data: {"id":"chatcmpl-D52mrPdEJMNMRiu3YPcMWgAkrBN3L","object":"chat.completion.chunk","created":1770094725,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":" The"},"finish_reason":null}],"usage":null,"obfuscation":"tKO"} -data: {"id":"chatcmpl-CqnxsizuiyMRFitx0QgzLwSExvKmX","object":"chat.completion.chunk","created":1766701156,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":" to"},"finish_reason":null}],"usage":null,"obfuscation":"oKYZ"} +data: {"id":"chatcmpl-D52mrPdEJMNMRiu3YPcMWgAkrBN3L","object":"chat.completion.chunk","created":1770094725,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":" file"},"finish_reason":null}],"usage":null,"obfuscation":"08"} -data: {"id":"chatcmpl-CqnxsizuiyMRFitx0QgzLwSExvKmX","object":"chat.completion.chunk","created":1766701156,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":" view"},"finish_reason":null}],"usage":null,"obfuscation":"f1"} +data: {"id":"chatcmpl-D52mrPdEJMNMRiu3YPcMWgAkrBN3L","object":"chat.completion.chunk","created":1770094725,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":" contains"},"finish_reason":null}],"usage":null,"obfuscation":"3zNgk3SNozv6QX"} -data: {"id":"chatcmpl-CqnxsizuiyMRFitx0QgzLwSExvKmX","object":"chat.completion.chunk","created":1766701156,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":" the"},"finish_reason":null}],"usage":null,"obfuscation":"Kay"} +data: {"id":"chatcmpl-D52mrPdEJMNMRiu3YPcMWgAkrBN3L","object":"chat.completion.chunk","created":1770094725,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":" a"},"finish_reason":null}],"usage":null,"obfuscation":"eIdHo"} -data: {"id":"chatcmpl-CqnxsizuiyMRFitx0QgzLwSExvKmX","object":"chat.completion.chunk","created":1766701156,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":" saved"},"finish_reason":null}],"usage":null,"obfuscation":"w"} +data: {"id":"chatcmpl-D52mrPdEJMNMRiu3YPcMWgAkrBN3L","object":"chat.completion.chunk","created":1770094725,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":" fenced"},"finish_reason":null}],"usage":null,"obfuscation":""} -data: {"id":"chatcmpl-CqnxsizuiyMRFitx0QgzLwSExvKmX","object":"chat.completion.chunk","created":1766701156,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":" file"},"finish_reason":null}],"usage":null,"obfuscation":"nV"} +data: {"id":"chatcmpl-D52mrPdEJMNMRiu3YPcMWgAkrBN3L","object":"chat.completion.chunk","created":1770094725,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":" code"},"finish_reason":null}],"usage":null,"obfuscation":"Vz"} -data: {"id":"chatcmpl-CqnxsizuiyMRFitx0QgzLwSExvKmX","object":"chat.completion.chunk","created":1766701156,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":","},"finish_reason":null}],"usage":null,"obfuscation":"U6ECJT"} +data: {"id":"chatcmpl-D52mrPdEJMNMRiu3YPcMWgAkrBN3L","object":"chat.completion.chunk","created":1770094725,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":" block"},"finish_reason":null}],"usage":null,"obfuscation":"Z"} -data: {"id":"chatcmpl-CqnxsizuiyMRFitx0QgzLwSExvKmX","object":"chat.completion.chunk","created":1766701156,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":" modify"},"finish_reason":null}],"usage":null,"obfuscation":""} +data: {"id":"chatcmpl-D52mrPdEJMNMRiu3YPcMWgAkrBN3L","object":"chat.completion.chunk","created":1770094725,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":" with"},"finish_reason":null}],"usage":null,"obfuscation":"P9"} -data: {"id":"chatcmpl-CqnxsizuiyMRFitx0QgzLwSExvKmX","object":"chat.completion.chunk","created":1766701156,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":" the"},"finish_reason":null}],"usage":null,"obfuscation":"2lX"} +data: {"id":"chatcmpl-D52mrPdEJMNMRiu3YPcMWgAkrBN3L","object":"chat.completion.chunk","created":1770094725,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":" the"},"finish_reason":null}],"usage":null,"obfuscation":"wV6"} -data: {"id":"chatcmpl-CqnxsizuiyMRFitx0QgzLwSExvKmX","object":"chat.completion.chunk","created":1766701156,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":" content"},"finish_reason":null}],"usage":null,"obfuscation":"EWuNap9Z0N6SUaV"} +data: {"id":"chatcmpl-D52mrPdEJMNMRiu3YPcMWgAkrBN3L","object":"chat.completion.chunk","created":1770094725,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":" string"},"finish_reason":null}],"usage":null,"obfuscation":""} -data: {"id":"chatcmpl-CqnxsizuiyMRFitx0QgzLwSExvKmX","object":"chat.completion.chunk","created":1766701156,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":","},"finish_reason":null}],"usage":null,"obfuscation":"di1ZTP"} +data: {"id":"chatcmpl-D52mrPdEJMNMRiu3YPcMWgAkrBN3L","object":"chat.completion.chunk","created":1770094725,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":":\n"},"finish_reason":null}],"usage":null,"obfuscation":"ZiUL"} -data: {"id":"chatcmpl-CqnxsizuiyMRFitx0QgzLwSExvKmX","object":"chat.completion.chunk","created":1766701156,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":" or"},"finish_reason":null}],"usage":null,"obfuscation":"cHi4"} +data: {"id":"chatcmpl-D52mrPdEJMNMRiu3YPcMWgAkrBN3L","object":"chat.completion.chunk","created":1770094725,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":" \n"},"finish_reason":null}],"usage":null,"obfuscation":"Nas"} -data: {"id":"chatcmpl-CqnxsizuiyMRFitx0QgzLwSExvKmX","object":"chat.completion.chunk","created":1766701156,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":" save"},"finish_reason":null}],"usage":null,"obfuscation":"8Y"} +data: {"id":"chatcmpl-D52mrPdEJMNMRiu3YPcMWgAkrBN3L","object":"chat.completion.chunk","created":1770094725,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":"``"},"finish_reason":null}],"usage":null,"obfuscation":"P8Nhe"} -data: {"id":"chatcmpl-CqnxsizuiyMRFitx0QgzLwSExvKmX","object":"chat.completion.chunk","created":1766701156,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":" to"},"finish_reason":null}],"usage":null,"obfuscation":"ill7"} +data: {"id":"chatcmpl-D52mrPdEJMNMRiu3YPcMWgAkrBN3L","object":"chat.completion.chunk","created":1770094725,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":"`\n"},"finish_reason":null}],"usage":null,"obfuscation":"yMUI"} -data: {"id":"chatcmpl-CqnxsizuiyMRFitx0QgzLwSExvKmX","object":"chat.completion.chunk","created":1766701156,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":" a"},"finish_reason":null}],"usage":null,"obfuscation":"WrWJM"} +data: {"id":"chatcmpl-D52mrPdEJMNMRiu3YPcMWgAkrBN3L","object":"chat.completion.chunk","created":1770094725,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":"test"},"finish_reason":null}],"usage":null,"obfuscation":"Wis"} -data: {"id":"chatcmpl-CqnxsizuiyMRFitx0QgzLwSExvKmX","object":"chat.completion.chunk","created":1766701156,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":" different"},"finish_reason":null}],"usage":null,"obfuscation":"M3jGyb9FytIMe"} +data: {"id":"chatcmpl-D52mrPdEJMNMRiu3YPcMWgAkrBN3L","object":"chat.completion.chunk","created":1770094725,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":"-"},"finish_reason":null}],"usage":null,"obfuscation":"yZQWve"} -data: {"id":"chatcmpl-CqnxsizuiyMRFitx0QgzLwSExvKmX","object":"chat.completion.chunk","created":1766701156,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":" path"},"finish_reason":null}],"usage":null,"obfuscation":"3a"} +data: {"id":"chatcmpl-D52mrPdEJMNMRiu3YPcMWgAkrBN3L","object":"chat.completion.chunk","created":1770094725,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":"uuid"},"finish_reason":null}],"usage":null,"obfuscation":"pTW"} -data: {"id":"chatcmpl-CqnxsizuiyMRFitx0QgzLwSExvKmX","object":"chat.completion.chunk","created":1766701156,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":","},"finish_reason":null}],"usage":null,"obfuscation":"PAdG3e"} +data: {"id":"chatcmpl-D52mrPdEJMNMRiu3YPcMWgAkrBN3L","object":"chat.completion.chunk","created":1770094725,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":"-"},"finish_reason":null}],"usage":null,"obfuscation":"ZjldwU"} -data: {"id":"chatcmpl-CqnxsizuiyMRFitx0QgzLwSExvKmX","object":"chat.completion.chunk","created":1766701156,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":" tell"},"finish_reason":null}],"usage":null,"obfuscation":"Z6"} +data: {"id":"chatcmpl-D52mrPdEJMNMRiu3YPcMWgAkrBN3L","object":"chat.completion.chunk","created":1770094725,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":"123"},"finish_reason":null}],"usage":null,"obfuscation":"lCI7"} -data: {"id":"chatcmpl-CqnxsizuiyMRFitx0QgzLwSExvKmX","object":"chat.completion.chunk","created":1766701156,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":" me"},"finish_reason":null}],"usage":null,"obfuscation":"TWlE"} +data: {"id":"chatcmpl-D52mrPdEJMNMRiu3YPcMWgAkrBN3L","object":"chat.completion.chunk","created":1770094725,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":"45"},"finish_reason":null}],"usage":null,"obfuscation":"mfWAg"} -data: {"id":"chatcmpl-CqnxsizuiyMRFitx0QgzLwSExvKmX","object":"chat.completion.chunk","created":1766701156,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":" what"},"finish_reason":null}],"usage":null,"obfuscation":"IS"} +data: {"id":"chatcmpl-D52mrPdEJMNMRiu3YPcMWgAkrBN3L","object":"chat.completion.chunk","created":1770094725,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":"-"},"finish_reason":null}],"usage":null,"obfuscation":"5vmLQg"} -data: {"id":"chatcmpl-CqnxsizuiyMRFitx0QgzLwSExvKmX","object":"chat.completion.chunk","created":1766701156,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":" you"},"finish_reason":null}],"usage":null,"obfuscation":"xrI"} +data: {"id":"chatcmpl-D52mrPdEJMNMRiu3YPcMWgAkrBN3L","object":"chat.completion.chunk","created":1770094725,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":"678"},"finish_reason":null}],"usage":null,"obfuscation":"g43k"} -data: {"id":"chatcmpl-CqnxsizuiyMRFitx0QgzLwSExvKmX","object":"chat.completion.chunk","created":1766701156,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":"’d"},"finish_reason":null}],"usage":null,"obfuscation":"nYYvw"} +data: {"id":"chatcmpl-D52mrPdEJMNMRiu3YPcMWgAkrBN3L","object":"chat.completion.chunk","created":1770094725,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":"90"},"finish_reason":null}],"usage":null,"obfuscation":"X2qMT"} -data: {"id":"chatcmpl-CqnxsizuiyMRFitx0QgzLwSExvKmX","object":"chat.completion.chunk","created":1766701156,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":" like"},"finish_reason":null}],"usage":null,"obfuscation":"ss"} +data: {"id":"chatcmpl-D52mrPdEJMNMRiu3YPcMWgAkrBN3L","object":"chat.completion.chunk","created":1770094725,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":"\n\n"},"finish_reason":null}],"usage":null,"obfuscation":"kgT"} -data: {"id":"chatcmpl-CqnxsizuiyMRFitx0QgzLwSExvKmX","object":"chat.completion.chunk","created":1766701156,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":" next"},"finish_reason":null}],"usage":null,"obfuscation":"Ko"} +data: {"id":"chatcmpl-D52mrPdEJMNMRiu3YPcMWgAkrBN3L","object":"chat.completion.chunk","created":1770094725,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":"``"},"finish_reason":null}],"usage":null,"obfuscation":"IENwg"} -data: {"id":"chatcmpl-CqnxsizuiyMRFitx0QgzLwSExvKmX","object":"chat.completion.chunk","created":1766701156,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":"."},"finish_reason":null}],"usage":null,"obfuscation":"yM8hiD"} +data: {"id":"chatcmpl-D52mrPdEJMNMRiu3YPcMWgAkrBN3L","object":"chat.completion.chunk","created":1770094725,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":"`\n\n"},"finish_reason":null}],"usage":null,"obfuscation":"4U"} -data: {"id":"chatcmpl-CqnxsizuiyMRFitx0QgzLwSExvKmX","object":"chat.completion.chunk","created":1766701156,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{},"finish_reason":"stop"}],"usage":null,"obfuscation":"x"} +data: {"id":"chatcmpl-D52mrPdEJMNMRiu3YPcMWgAkrBN3L","object":"chat.completion.chunk","created":1770094725,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":"Notes"},"finish_reason":null}],"usage":null,"obfuscation":"mb"} -data: {"id":"chatcmpl-CqnxsizuiyMRFitx0QgzLwSExvKmX","object":"chat.completion.chunk","created":1766701156,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[],"usage":{"prompt_tokens":2997,"completion_tokens":86,"total_tokens":3083,"prompt_tokens_details":{"cached_tokens":2432,"audio_tokens":0},"completion_tokens_details":{"reasoning_tokens":0,"audio_tokens":0,"accepted_prediction_tokens":0,"rejected_prediction_tokens":0}},"obfuscation":"z42f4eInXrYh3SS"} +data: {"id":"chatcmpl-D52mrPdEJMNMRiu3YPcMWgAkrBN3L","object":"chat.completion.chunk","created":1770094725,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":":\n"},"finish_reason":null}],"usage":null,"obfuscation":"eWI4"} + +data: {"id":"chatcmpl-D52mrPdEJMNMRiu3YPcMWgAkrBN3L","object":"chat.completion.chunk","created":1770094725,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":"-"},"finish_reason":null}],"usage":null,"obfuscation":"vNyV5I"} + +data: {"id":"chatcmpl-D52mrPdEJMNMRiu3YPcMWgAkrBN3L","object":"chat.completion.chunk","created":1770094725,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":" The"},"finish_reason":null}],"usage":null,"obfuscation":"nXZ"} + +data: {"id":"chatcmpl-D52mrPdEJMNMRiu3YPcMWgAkrBN3L","object":"chat.completion.chunk","created":1770094725,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":" content"},"finish_reason":null}],"usage":null,"obfuscation":"10M7xKE1b67hafu"} + +data: {"id":"chatcmpl-D52mrPdEJMNMRiu3YPcMWgAkrBN3L","object":"chat.completion.chunk","created":1770094725,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":" written"},"finish_reason":null}],"usage":null,"obfuscation":"cuhhj4CeigD1UgE"} + +data: {"id":"chatcmpl-D52mrPdEJMNMRiu3YPcMWgAkrBN3L","object":"chat.completion.chunk","created":1770094725,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":" to"},"finish_reason":null}],"usage":null,"obfuscation":"0IQ6"} + +data: {"id":"chatcmpl-D52mrPdEJMNMRiu3YPcMWgAkrBN3L","object":"chat.completion.chunk","created":1770094725,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":" the"},"finish_reason":null}],"usage":null,"obfuscation":"ZoQ"} + +data: {"id":"chatcmpl-D52mrPdEJMNMRiu3YPcMWgAkrBN3L","object":"chat.completion.chunk","created":1770094725,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":" file"},"finish_reason":null}],"usage":null,"obfuscation":"bs"} + +data: {"id":"chatcmpl-D52mrPdEJMNMRiu3YPcMWgAkrBN3L","object":"chat.completion.chunk","created":1770094725,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":" was"},"finish_reason":null}],"usage":null,"obfuscation":"wS5"} + +data: {"id":"chatcmpl-D52mrPdEJMNMRiu3YPcMWgAkrBN3L","object":"chat.completion.chunk","created":1770094725,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":" exactly"},"finish_reason":null}],"usage":null,"obfuscation":"sMx2WDna3NDQYwZ"} + +data: {"id":"chatcmpl-D52mrPdEJMNMRiu3YPcMWgAkrBN3L","object":"chat.completion.chunk","created":1770094725,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":" the"},"finish_reason":null}],"usage":null,"obfuscation":"0hb"} + +data: {"id":"chatcmpl-D52mrPdEJMNMRiu3YPcMWgAkrBN3L","object":"chat.completion.chunk","created":1770094725,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":" string"},"finish_reason":null}],"usage":null,"obfuscation":""} + +data: {"id":"chatcmpl-D52mrPdEJMNMRiu3YPcMWgAkrBN3L","object":"chat.completion.chunk","created":1770094725,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":" returned"},"finish_reason":null}],"usage":null,"obfuscation":"BEj8YwjVinkJVB"} + +data: {"id":"chatcmpl-D52mrPdEJMNMRiu3YPcMWgAkrBN3L","object":"chat.completion.chunk","created":1770094725,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":" by"},"finish_reason":null}],"usage":null,"obfuscation":"3Dsy"} + +data: {"id":"chatcmpl-D52mrPdEJMNMRiu3YPcMWgAkrBN3L","object":"chat.completion.chunk","created":1770094725,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":" get"},"finish_reason":null}],"usage":null,"obfuscation":"gtf"} + +data: {"id":"chatcmpl-D52mrPdEJMNMRiu3YPcMWgAkrBN3L","object":"chat.completion.chunk","created":1770094725,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":"Code"},"finish_reason":null}],"usage":null,"obfuscation":"WED"} + +data: {"id":"chatcmpl-D52mrPdEJMNMRiu3YPcMWgAkrBN3L","object":"chat.completion.chunk","created":1770094725,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":" ("},"finish_reason":null}],"usage":null,"obfuscation":"bNdxf"} + +data: {"id":"chatcmpl-D52mrPdEJMNMRiu3YPcMWgAkrBN3L","object":"chat.completion.chunk","created":1770094725,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":"21"},"finish_reason":null}],"usage":null,"obfuscation":"1CR1E"} + +data: {"id":"chatcmpl-D52mrPdEJMNMRiu3YPcMWgAkrBN3L","object":"chat.completion.chunk","created":1770094725,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":" chars"},"finish_reason":null}],"usage":null,"obfuscation":"w"} + +data: {"id":"chatcmpl-D52mrPdEJMNMRiu3YPcMWgAkrBN3L","object":"chat.completion.chunk","created":1770094725,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":"),"},"finish_reason":null}],"usage":null,"obfuscation":"W8r0d"} + +data: {"id":"chatcmpl-D52mrPdEJMNMRiu3YPcMWgAkrBN3L","object":"chat.completion.chunk","created":1770094725,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":" wrapped"},"finish_reason":null}],"usage":null,"obfuscation":"aHhICEmcTUnhmMq"} + +data: {"id":"chatcmpl-D52mrPdEJMNMRiu3YPcMWgAkrBN3L","object":"chat.completion.chunk","created":1770094725,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":" in"},"finish_reason":null}],"usage":null,"obfuscation":"rSUh"} + +data: {"id":"chatcmpl-D52mrPdEJMNMRiu3YPcMWgAkrBN3L","object":"chat.completion.chunk","created":1770094725,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":" a"},"finish_reason":null}],"usage":null,"obfuscation":"OtFXr"} + +data: {"id":"chatcmpl-D52mrPdEJMNMRiu3YPcMWgAkrBN3L","object":"chat.completion.chunk","created":1770094725,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":" markdown"},"finish_reason":null}],"usage":null,"obfuscation":"B7UAyjBDFJr4y2"} + +data: {"id":"chatcmpl-D52mrPdEJMNMRiu3YPcMWgAkrBN3L","object":"chat.completion.chunk","created":1770094725,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":" code"},"finish_reason":null}],"usage":null,"obfuscation":"Av"} + +data: {"id":"chatcmpl-D52mrPdEJMNMRiu3YPcMWgAkrBN3L","object":"chat.completion.chunk","created":1770094725,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":" block"},"finish_reason":null}],"usage":null,"obfuscation":"p"} + +data: {"id":"chatcmpl-D52mrPdEJMNMRiu3YPcMWgAkrBN3L","object":"chat.completion.chunk","created":1770094725,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":" by"},"finish_reason":null}],"usage":null,"obfuscation":"YA3y"} + +data: {"id":"chatcmpl-D52mrPdEJMNMRiu3YPcMWgAkrBN3L","object":"chat.completion.chunk","created":1770094725,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":" the"},"finish_reason":null}],"usage":null,"obfuscation":"zD5"} + +data: {"id":"chatcmpl-D52mrPdEJMNMRiu3YPcMWgAkrBN3L","object":"chat.completion.chunk","created":1770094725,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":" editor"},"finish_reason":null}],"usage":null,"obfuscation":""} + +data: {"id":"chatcmpl-D52mrPdEJMNMRiu3YPcMWgAkrBN3L","object":"chat.completion.chunk","created":1770094725,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":" output"},"finish_reason":null}],"usage":null,"obfuscation":""} + +data: {"id":"chatcmpl-D52mrPdEJMNMRiu3YPcMWgAkrBN3L","object":"chat.completion.chunk","created":1770094725,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":".\n\n"},"finish_reason":null}],"usage":null,"obfuscation":"A1"} + +data: {"id":"chatcmpl-D52mrPdEJMNMRiu3YPcMWgAkrBN3L","object":"chat.completion.chunk","created":1770094725,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":"If"},"finish_reason":null}],"usage":null,"obfuscation":"RAGoS"} + +data: {"id":"chatcmpl-D52mrPdEJMNMRiu3YPcMWgAkrBN3L","object":"chat.completion.chunk","created":1770094725,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":" you"},"finish_reason":null}],"usage":null,"obfuscation":"Raw"} + +data: {"id":"chatcmpl-D52mrPdEJMNMRiu3YPcMWgAkrBN3L","object":"chat.completion.chunk","created":1770094725,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":"’d"},"finish_reason":null}],"usage":null,"obfuscation":"9RwEx"} + +data: {"id":"chatcmpl-D52mrPdEJMNMRiu3YPcMWgAkrBN3L","object":"chat.completion.chunk","created":1770094725,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":" like"},"finish_reason":null}],"usage":null,"obfuscation":"yz"} + +data: {"id":"chatcmpl-D52mrPdEJMNMRiu3YPcMWgAkrBN3L","object":"chat.completion.chunk","created":1770094725,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":","},"finish_reason":null}],"usage":null,"obfuscation":"kDeUAF"} + +data: {"id":"chatcmpl-D52mrPdEJMNMRiu3YPcMWgAkrBN3L","object":"chat.completion.chunk","created":1770094725,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":" I"},"finish_reason":null}],"usage":null,"obfuscation":"BLTGS"} + +data: {"id":"chatcmpl-D52mrPdEJMNMRiu3YPcMWgAkrBN3L","object":"chat.completion.chunk","created":1770094725,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":" can"},"finish_reason":null}],"usage":null,"obfuscation":"tYP"} + +data: {"id":"chatcmpl-D52mrPdEJMNMRiu3YPcMWgAkrBN3L","object":"chat.completion.chunk","created":1770094725,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":":\n"},"finish_reason":null}],"usage":null,"obfuscation":"A5Jv"} + +data: {"id":"chatcmpl-D52mrPdEJMNMRiu3YPcMWgAkrBN3L","object":"chat.completion.chunk","created":1770094725,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":"-"},"finish_reason":null}],"usage":null,"obfuscation":"vxcFhK"} + +data: {"id":"chatcmpl-D52mrPdEJMNMRiu3YPcMWgAkrBN3L","object":"chat.completion.chunk","created":1770094725,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":" Verify"},"finish_reason":null}],"usage":null,"obfuscation":""} + +data: {"id":"chatcmpl-D52mrPdEJMNMRiu3YPcMWgAkrBN3L","object":"chat.completion.chunk","created":1770094725,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":" the"},"finish_reason":null}],"usage":null,"obfuscation":"qQC"} + +data: {"id":"chatcmpl-D52mrPdEJMNMRiu3YPcMWgAkrBN3L","object":"chat.completion.chunk","created":1770094725,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":" file"},"finish_reason":null}],"usage":null,"obfuscation":"Pz"} + +data: {"id":"chatcmpl-D52mrPdEJMNMRiu3YPcMWgAkrBN3L","object":"chat.completion.chunk","created":1770094725,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":" contents"},"finish_reason":null}],"usage":null,"obfuscation":"AggSHo905WFTWo"} + +data: {"id":"chatcmpl-D52mrPdEJMNMRiu3YPcMWgAkrBN3L","object":"chat.completion.chunk","created":1770094725,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":" by"},"finish_reason":null}],"usage":null,"obfuscation":"BpXh"} + +data: {"id":"chatcmpl-D52mrPdEJMNMRiu3YPcMWgAkrBN3L","object":"chat.completion.chunk","created":1770094725,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":" reading"},"finish_reason":null}],"usage":null,"obfuscation":"7BlAGfq2LLaX94N"} + +data: {"id":"chatcmpl-D52mrPdEJMNMRiu3YPcMWgAkrBN3L","object":"chat.completion.chunk","created":1770094725,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":" /"},"finish_reason":null}],"usage":null,"obfuscation":"4LzeE"} + +data: {"id":"chatcmpl-D52mrPdEJMNMRiu3YPcMWgAkrBN3L","object":"chat.completion.chunk","created":1770094725,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":"tmp"},"finish_reason":null}],"usage":null,"obfuscation":"MczH"} + +data: {"id":"chatcmpl-D52mrPdEJMNMRiu3YPcMWgAkrBN3L","object":"chat.completion.chunk","created":1770094725,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":"/result"},"finish_reason":null}],"usage":null,"obfuscation":""} + +data: {"id":"chatcmpl-D52mrPdEJMNMRiu3YPcMWgAkrBN3L","object":"chat.completion.chunk","created":1770094725,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":".txt"},"finish_reason":null}],"usage":null,"obfuscation":"KdZ"} + +data: {"id":"chatcmpl-D52mrPdEJMNMRiu3YPcMWgAkrBN3L","object":"chat.completion.chunk","created":1770094725,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":"\n"},"finish_reason":null}],"usage":null,"obfuscation":"HtPvQ"} + +data: {"id":"chatcmpl-D52mrPdEJMNMRiu3YPcMWgAkrBN3L","object":"chat.completion.chunk","created":1770094725,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":"-"},"finish_reason":null}],"usage":null,"obfuscation":"EbFCqJ"} + +data: {"id":"chatcmpl-D52mrPdEJMNMRiu3YPcMWgAkrBN3L","object":"chat.completion.chunk","created":1770094725,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":" View"},"finish_reason":null}],"usage":null,"obfuscation":"OV"} + +data: {"id":"chatcmpl-D52mrPdEJMNMRiu3YPcMWgAkrBN3L","object":"chat.completion.chunk","created":1770094725,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":" the"},"finish_reason":null}],"usage":null,"obfuscation":"tLL"} + +data: {"id":"chatcmpl-D52mrPdEJMNMRiu3YPcMWgAkrBN3L","object":"chat.completion.chunk","created":1770094725,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":" raw"},"finish_reason":null}],"usage":null,"obfuscation":"ZqV"} + +data: {"id":"chatcmpl-D52mrPdEJMNMRiu3YPcMWgAkrBN3L","object":"chat.completion.chunk","created":1770094725,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":" content"},"finish_reason":null}],"usage":null,"obfuscation":"bh4g1ZuIXjzIVon"} + +data: {"id":"chatcmpl-D52mrPdEJMNMRiu3YPcMWgAkrBN3L","object":"chat.completion.chunk","created":1770094725,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":" without"},"finish_reason":null}],"usage":null,"obfuscation":"KqotEsJnw7202zj"} + +data: {"id":"chatcmpl-D52mrPdEJMNMRiu3YPcMWgAkrBN3L","object":"chat.completion.chunk","created":1770094725,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":" the"},"finish_reason":null}],"usage":null,"obfuscation":"AU4"} + +data: {"id":"chatcmpl-D52mrPdEJMNMRiu3YPcMWgAkrBN3L","object":"chat.completion.chunk","created":1770094725,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":" code"},"finish_reason":null}],"usage":null,"obfuscation":"pw"} + +data: {"id":"chatcmpl-D52mrPdEJMNMRiu3YPcMWgAkrBN3L","object":"chat.completion.chunk","created":1770094725,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":" block"},"finish_reason":null}],"usage":null,"obfuscation":"J"} + +data: {"id":"chatcmpl-D52mrPdEJMNMRiu3YPcMWgAkrBN3L","object":"chat.completion.chunk","created":1770094725,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":" wrapper"},"finish_reason":null}],"usage":null,"obfuscation":"1sIrx9kpy3y1Qmp"} + +data: {"id":"chatcmpl-D52mrPdEJMNMRiu3YPcMWgAkrBN3L","object":"chat.completion.chunk","created":1770094725,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":"\n"},"finish_reason":null}],"usage":null,"obfuscation":"ns5tM"} + +data: {"id":"chatcmpl-D52mrPdEJMNMRiu3YPcMWgAkrBN3L","object":"chat.completion.chunk","created":1770094725,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":"-"},"finish_reason":null}],"usage":null,"obfuscation":"3UgsGR"} + +data: {"id":"chatcmpl-D52mrPdEJMNMRiu3YPcMWgAkrBN3L","object":"chat.completion.chunk","created":1770094725,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":" Save"},"finish_reason":null}],"usage":null,"obfuscation":"h1"} + +data: {"id":"chatcmpl-D52mrPdEJMNMRiu3YPcMWgAkrBN3L","object":"chat.completion.chunk","created":1770094725,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":" a"},"finish_reason":null}],"usage":null,"obfuscation":"SFtKX"} + +data: {"id":"chatcmpl-D52mrPdEJMNMRiu3YPcMWgAkrBN3L","object":"chat.completion.chunk","created":1770094725,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":" different"},"finish_reason":null}],"usage":null,"obfuscation":"cHVjmh5Hx4PLB"} + +data: {"id":"chatcmpl-D52mrPdEJMNMRiu3YPcMWgAkrBN3L","object":"chat.completion.chunk","created":1770094725,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":" piece"},"finish_reason":null}],"usage":null,"obfuscation":"4"} + +data: {"id":"chatcmpl-D52mrPdEJMNMRiu3YPcMWgAkrBN3L","object":"chat.completion.chunk","created":1770094725,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":" of"},"finish_reason":null}],"usage":null,"obfuscation":"rRb5"} + +data: {"id":"chatcmpl-D52mrPdEJMNMRiu3YPcMWgAkrBN3L","object":"chat.completion.chunk","created":1770094725,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":" code"},"finish_reason":null}],"usage":null,"obfuscation":"kG"} + +data: {"id":"chatcmpl-D52mrPdEJMNMRiu3YPcMWgAkrBN3L","object":"chat.completion.chunk","created":1770094725,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":" or"},"finish_reason":null}],"usage":null,"obfuscation":"9Ydy"} + +data: {"id":"chatcmpl-D52mrPdEJMNMRiu3YPcMWgAkrBN3L","object":"chat.completion.chunk","created":1770094725,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":" text"},"finish_reason":null}],"usage":null,"obfuscation":"68"} + +data: {"id":"chatcmpl-D52mrPdEJMNMRiu3YPcMWgAkrBN3L","object":"chat.completion.chunk","created":1770094725,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":" to"},"finish_reason":null}],"usage":null,"obfuscation":"UPpM"} + +data: {"id":"chatcmpl-D52mrPdEJMNMRiu3YPcMWgAkrBN3L","object":"chat.completion.chunk","created":1770094725,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":" another"},"finish_reason":null}],"usage":null,"obfuscation":"9y3pEwWtjcVhmFZ"} + +data: {"id":"chatcmpl-D52mrPdEJMNMRiu3YPcMWgAkrBN3L","object":"chat.completion.chunk","created":1770094725,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":" path"},"finish_reason":null}],"usage":null,"obfuscation":"xZ"} + +data: {"id":"chatcmpl-D52mrPdEJMNMRiu3YPcMWgAkrBN3L","object":"chat.completion.chunk","created":1770094725,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":"\n\n"},"finish_reason":null}],"usage":null,"obfuscation":"Flg"} + +data: {"id":"chatcmpl-D52mrPdEJMNMRiu3YPcMWgAkrBN3L","object":"chat.completion.chunk","created":1770094725,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":"Would"},"finish_reason":null}],"usage":null,"obfuscation":"ZK"} + +data: {"id":"chatcmpl-D52mrPdEJMNMRiu3YPcMWgAkrBN3L","object":"chat.completion.chunk","created":1770094725,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":" you"},"finish_reason":null}],"usage":null,"obfuscation":"Nlc"} + +data: {"id":"chatcmpl-D52mrPdEJMNMRiu3YPcMWgAkrBN3L","object":"chat.completion.chunk","created":1770094725,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":" like"},"finish_reason":null}],"usage":null,"obfuscation":"xZ"} + +data: {"id":"chatcmpl-D52mrPdEJMNMRiu3YPcMWgAkrBN3L","object":"chat.completion.chunk","created":1770094725,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":" me"},"finish_reason":null}],"usage":null,"obfuscation":"38pk"} + +data: {"id":"chatcmpl-D52mrPdEJMNMRiu3YPcMWgAkrBN3L","object":"chat.completion.chunk","created":1770094725,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":" to"},"finish_reason":null}],"usage":null,"obfuscation":"V0Lb"} + +data: {"id":"chatcmpl-D52mrPdEJMNMRiu3YPcMWgAkrBN3L","object":"chat.completion.chunk","created":1770094725,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":" read"},"finish_reason":null}],"usage":null,"obfuscation":"Hq"} + +data: {"id":"chatcmpl-D52mrPdEJMNMRiu3YPcMWgAkrBN3L","object":"chat.completion.chunk","created":1770094725,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":" back"},"finish_reason":null}],"usage":null,"obfuscation":"JP"} + +data: {"id":"chatcmpl-D52mrPdEJMNMRiu3YPcMWgAkrBN3L","object":"chat.completion.chunk","created":1770094725,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":" the"},"finish_reason":null}],"usage":null,"obfuscation":"748"} + +data: {"id":"chatcmpl-D52mrPdEJMNMRiu3YPcMWgAkrBN3L","object":"chat.completion.chunk","created":1770094725,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":" file"},"finish_reason":null}],"usage":null,"obfuscation":"9G"} + +data: {"id":"chatcmpl-D52mrPdEJMNMRiu3YPcMWgAkrBN3L","object":"chat.completion.chunk","created":1770094725,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":" or"},"finish_reason":null}],"usage":null,"obfuscation":"Hdsm"} + +data: {"id":"chatcmpl-D52mrPdEJMNMRiu3YPcMWgAkrBN3L","object":"chat.completion.chunk","created":1770094725,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":" make"},"finish_reason":null}],"usage":null,"obfuscation":"Y2"} + +data: {"id":"chatcmpl-D52mrPdEJMNMRiu3YPcMWgAkrBN3L","object":"chat.completion.chunk","created":1770094725,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":" any"},"finish_reason":null}],"usage":null,"obfuscation":"6s2"} + +data: {"id":"chatcmpl-D52mrPdEJMNMRiu3YPcMWgAkrBN3L","object":"chat.completion.chunk","created":1770094725,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":" adjustments"},"finish_reason":null}],"usage":null,"obfuscation":"pnlQHSO9oRP"} + +data: {"id":"chatcmpl-D52mrPdEJMNMRiu3YPcMWgAkrBN3L","object":"chat.completion.chunk","created":1770094725,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"content":"?"},"finish_reason":null}],"usage":null,"obfuscation":"up8aas"} + +data: {"id":"chatcmpl-D52mrPdEJMNMRiu3YPcMWgAkrBN3L","object":"chat.completion.chunk","created":1770094725,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{},"finish_reason":"stop"}],"usage":null,"obfuscation":"F"} + +data: {"id":"chatcmpl-D52mrPdEJMNMRiu3YPcMWgAkrBN3L","object":"chat.completion.chunk","created":1770094725,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[],"usage":{"prompt_tokens":5944,"completion_tokens":1591,"total_tokens":7535,"prompt_tokens_details":{"cached_tokens":4736,"audio_tokens":0},"completion_tokens_details":{"reasoning_tokens":1408,"audio_tokens":0,"accepted_prediction_tokens":0,"rejected_prediction_tokens":0}},"obfuscation":"R5KQcpHZ74"} data: [DONE] + + diff --git a/crates/goose-acp/tests/test_data/openai_builtin_read_modules.txt b/crates/goose-acp/tests/test_data/openai_builtin_read_modules.txt deleted file mode 100644 index 114f762cff72..000000000000 --- a/crates/goose-acp/tests/test_data/openai_builtin_read_modules.txt +++ /dev/null @@ -1,43 +0,0 @@ -data: {"id":"chatcmpl-CqnxaQj6rMqu4L24cNKWvWdMJRtaW","object":"chat.completion.chunk","created":1766701138,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"usage":null,"choices":[{"index":0,"delta":{"role":"assistant","content":null},"finish_reason":null}],"obfuscation":"v7"} - -data: {"id":"chatcmpl-CqnxaQj6rMqu4L24cNKWvWdMJRtaW","object":"chat.completion.chunk","created":1766701138,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"usage":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"id":"call_rS0QksngU4yYIDHrnDJy2EZM","type":"function","function":{"name":"code_execution__read_module","arguments":""}}]},"finish_reason":null}],"obfuscation":"T"} - -data: {"id":"chatcmpl-CqnxaQj6rMqu4L24cNKWvWdMJRtaW","object":"chat.completion.chunk","created":1766701138,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"usage":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"{\"mo"}}]},"finish_reason":null}],"obfuscation":"nXIpECrF"} - -data: {"id":"chatcmpl-CqnxaQj6rMqu4L24cNKWvWdMJRtaW","object":"chat.completion.chunk","created":1766701138,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"usage":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"dule_"}}]},"finish_reason":null}],"obfuscation":"B9XWBe6c"} - -data: {"id":"chatcmpl-CqnxaQj6rMqu4L24cNKWvWdMJRtaW","object":"chat.completion.chunk","created":1766701138,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"usage":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"path\":"}}]},"finish_reason":null}],"obfuscation":"tOSmhh"} - -data: {"id":"chatcmpl-CqnxaQj6rMqu4L24cNKWvWdMJRtaW","object":"chat.completion.chunk","created":1766701138,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"usage":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":" \"lo"}}]},"finish_reason":null}],"obfuscation":"Zz3wgAww"} - -data: {"id":"chatcmpl-CqnxaQj6rMqu4L24cNKWvWdMJRtaW","object":"chat.completion.chunk","created":1766701138,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"usage":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"okup/"}}]},"finish_reason":null}],"obfuscation":"pOpLxr8X"} - -data: {"id":"chatcmpl-CqnxaQj6rMqu4L24cNKWvWdMJRtaW","object":"chat.completion.chunk","created":1766701138,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"usage":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"get_co"}}]},"finish_reason":null}],"obfuscation":"gCCacjW"} - -data: {"id":"chatcmpl-CqnxaQj6rMqu4L24cNKWvWdMJRtaW","object":"chat.completion.chunk","created":1766701138,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"usage":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"de\"}"}}]},"finish_reason":null}],"obfuscation":"KY6NDanu"} - -data: {"id":"chatcmpl-CqnxaQj6rMqu4L24cNKWvWdMJRtaW","object":"chat.completion.chunk","created":1766701138,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"usage":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":1,"id":"call_U0ieDPzZODuxxEWjHgi6s37G","type":"function","function":{"name":"code_execution__read_module","arguments":""}}]},"finish_reason":null}],"obfuscation":"l"} - -data: {"id":"chatcmpl-CqnxaQj6rMqu4L24cNKWvWdMJRtaW","object":"chat.completion.chunk","created":1766701138,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"usage":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":1,"function":{"arguments":"{\"mo"}}]},"finish_reason":null}],"obfuscation":"cKKL6hIz"} - -data: {"id":"chatcmpl-CqnxaQj6rMqu4L24cNKWvWdMJRtaW","object":"chat.completion.chunk","created":1766701138,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"usage":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":1,"function":{"arguments":"dule_"}}]},"finish_reason":null}],"obfuscation":"zXnRkr9q"} - -data: {"id":"chatcmpl-CqnxaQj6rMqu4L24cNKWvWdMJRtaW","object":"chat.completion.chunk","created":1766701138,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"usage":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":1,"function":{"arguments":"path\":"}}]},"finish_reason":null}],"obfuscation":"O17aod"} - -data: {"id":"chatcmpl-CqnxaQj6rMqu4L24cNKWvWdMJRtaW","object":"chat.completion.chunk","created":1766701138,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"usage":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":1,"function":{"arguments":" \"de"}}]},"finish_reason":null}],"obfuscation":"Hdkjwpwp"} - -data: {"id":"chatcmpl-CqnxaQj6rMqu4L24cNKWvWdMJRtaW","object":"chat.completion.chunk","created":1766701138,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"usage":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":1,"function":{"arguments":"velop"}}]},"finish_reason":null}],"obfuscation":"31elhAol"} - -data: {"id":"chatcmpl-CqnxaQj6rMqu4L24cNKWvWdMJRtaW","object":"chat.completion.chunk","created":1766701138,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"usage":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":1,"function":{"arguments":"er/tex"}}]},"finish_reason":null}],"obfuscation":"JsV3mVA"} - -data: {"id":"chatcmpl-CqnxaQj6rMqu4L24cNKWvWdMJRtaW","object":"chat.completion.chunk","created":1766701138,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"usage":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":1,"function":{"arguments":"t_ed"}}]},"finish_reason":null}],"obfuscation":"8ZyjkFliU"} - -data: {"id":"chatcmpl-CqnxaQj6rMqu4L24cNKWvWdMJRtaW","object":"chat.completion.chunk","created":1766701138,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"usage":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":1,"function":{"arguments":"itor\""}}]},"finish_reason":null}],"obfuscation":"waD7mnr"} - -data: {"id":"chatcmpl-CqnxaQj6rMqu4L24cNKWvWdMJRtaW","object":"chat.completion.chunk","created":1766701138,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"usage":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":1,"function":{"arguments":"}"}}]},"finish_reason":null}],"obfuscation":"ohhnGgMcoCKQ"} - -data: {"id":"chatcmpl-CqnxaQj6rMqu4L24cNKWvWdMJRtaW","object":"chat.completion.chunk","created":1766701138,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{},"finish_reason":"tool_calls"}],"usage":null,"obfuscation":"d6Rww4PaZYY"} - -data: {"id":"chatcmpl-CqnxaQj6rMqu4L24cNKWvWdMJRtaW","object":"chat.completion.chunk","created":1766701138,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[],"usage":{"prompt_tokens":2586,"completion_tokens":1665,"total_tokens":4251,"prompt_tokens_details":{"cached_tokens":0,"audio_tokens":0},"completion_tokens_details":{"reasoning_tokens":1600,"audio_tokens":0,"accepted_prediction_tokens":0,"rejected_prediction_tokens":0}},"obfuscation":"0ofYwl6eisGBK"} - -data: [DONE] diff --git a/crates/goose-acp/tests/test_data/openai_builtin_search.txt b/crates/goose-acp/tests/test_data/openai_builtin_search.txt index a9139959a08f..07130f8e41e6 100644 --- a/crates/goose-acp/tests/test_data/openai_builtin_search.txt +++ b/crates/goose-acp/tests/test_data/openai_builtin_search.txt @@ -1,27 +1,39 @@ -data: {"id":"chatcmpl-CqnxO9QA2SYzqUg3j2vOBDv47NlNx","object":"chat.completion.chunk","created":1766701126,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"role":"assistant","content":null,"tool_calls":[{"index":0,"id":"call_dINW7AmExfpt2yitCRgIgnDk","type":"function","function":{"name":"code_execution__search_modules","arguments":""}}],"refusal":null},"finish_reason":null}],"usage":null,"obfuscation":"xjFTVJsrOLFKC"} +data: {"id":"chatcmpl-D52mYBQiVJoVI837twEG5vpPRxo3F","object":"chat.completion.chunk","created":1770094706,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"usage":null,"choices":[{"index":0,"delta":{"role":"assistant","content":null},"finish_reason":null}],"obfuscation":"Yd"} -data: {"id":"chatcmpl-CqnxO9QA2SYzqUg3j2vOBDv47NlNx","object":"chat.completion.chunk","created":1766701126,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"{\""}}]},"finish_reason":null}],"usage":null,"obfuscation":"OXXTjGoceY"} +data: {"id":"chatcmpl-D52mYBQiVJoVI837twEG5vpPRxo3F","object":"chat.completion.chunk","created":1770094706,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"usage":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"id":"call_zzoNiRL9fhMwZmopcrhgnzit","type":"function","function":{"name":"code_execution__list_functions","arguments":""}}]},"finish_reason":null}],"obfuscation":"RajKpGwjZtWueM"} -data: {"id":"chatcmpl-CqnxO9QA2SYzqUg3j2vOBDv47NlNx","object":"chat.completion.chunk","created":1766701126,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"terms"}}]},"finish_reason":null}],"usage":null,"obfuscation":"MhlBIuai"} +data: {"id":"chatcmpl-D52mYBQiVJoVI837twEG5vpPRxo3F","object":"chat.completion.chunk","created":1770094706,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"usage":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"{}"}}]},"finish_reason":null}],"obfuscation":"6NOrpOsiDjm"} -data: {"id":"chatcmpl-CqnxO9QA2SYzqUg3j2vOBDv47NlNx","object":"chat.completion.chunk","created":1766701126,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"\":[\""}}]},"finish_reason":null}],"usage":null,"obfuscation":"Q7ZAiod"} +data: {"id":"chatcmpl-D52mYBQiVJoVI837twEG5vpPRxo3F","object":"chat.completion.chunk","created":1770094706,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"usage":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":1,"id":"call_oOGp9vL5SW3ATazwQsqMGVUF","type":"function","function":{"name":"code_execution__get_function_details","arguments":""}}]},"finish_reason":null}],"obfuscation":"XzNL5prg"} -data: {"id":"chatcmpl-CqnxO9QA2SYzqUg3j2vOBDv47NlNx","object":"chat.completion.chunk","created":1766701126,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"get"}}]},"finish_reason":null}],"usage":null,"obfuscation":"QRDc1u5Ps1"} +data: {"id":"chatcmpl-D52mYBQiVJoVI837twEG5vpPRxo3F","object":"chat.completion.chunk","created":1770094706,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"usage":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":1,"function":{"arguments":"{\"fu"}}]},"finish_reason":null}],"obfuscation":"pXtaOUk0"} -data: {"id":"chatcmpl-CqnxO9QA2SYzqUg3j2vOBDv47NlNx","object":"chat.completion.chunk","created":1766701126,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"_code"}}]},"finish_reason":null}],"usage":null,"obfuscation":"1A5TssiT"} +data: {"id":"chatcmpl-D52mYBQiVJoVI837twEG5vpPRxo3F","object":"chat.completion.chunk","created":1770094706,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"usage":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":1,"function":{"arguments":"nctio"}}]},"finish_reason":null}],"obfuscation":"3vnwaaJz"} -data: {"id":"chatcmpl-CqnxO9QA2SYzqUg3j2vOBDv47NlNx","object":"chat.completion.chunk","created":1766701126,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"\",\""}}]},"finish_reason":null}],"usage":null,"obfuscation":"IdoT3Umt"} +data: {"id":"chatcmpl-D52mYBQiVJoVI837twEG5vpPRxo3F","object":"chat.completion.chunk","created":1770094706,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"usage":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":1,"function":{"arguments":"ns\": ["}}]},"finish_reason":null}],"obfuscation":"DOwx5E"} -data: {"id":"chatcmpl-CqnxO9QA2SYzqUg3j2vOBDv47NlNx","object":"chat.completion.chunk","created":1766701126,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"text"}}]},"finish_reason":null}],"usage":null,"obfuscation":"B2kd2ESuG"} +data: {"id":"chatcmpl-D52mYBQiVJoVI837twEG5vpPRxo3F","object":"chat.completion.chunk","created":1770094706,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"usage":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":1,"function":{"arguments":"\"Loo"}}]},"finish_reason":null}],"obfuscation":"R0vj7yxw"} -data: {"id":"chatcmpl-CqnxO9QA2SYzqUg3j2vOBDv47NlNx","object":"chat.completion.chunk","created":1766701126,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"_editor"}}]},"finish_reason":null}],"usage":null,"obfuscation":"rq0SWi"} +data: {"id":"chatcmpl-D52mYBQiVJoVI837twEG5vpPRxo3F","object":"chat.completion.chunk","created":1770094706,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"usage":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":1,"function":{"arguments":"kup.g"}}]},"finish_reason":null}],"obfuscation":"ONm67mnw"} -data: {"id":"chatcmpl-CqnxO9QA2SYzqUg3j2vOBDv47NlNx","object":"chat.completion.chunk","created":1766701126,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"\"]"}}]},"finish_reason":null}],"usage":null,"obfuscation":"y2zYEl2xLX"} +data: {"id":"chatcmpl-D52mYBQiVJoVI837twEG5vpPRxo3F","object":"chat.completion.chunk","created":1770094706,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"usage":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":1,"function":{"arguments":"etCode"}}]},"finish_reason":null}],"obfuscation":"WKRbEGk"} -data: {"id":"chatcmpl-CqnxO9QA2SYzqUg3j2vOBDv47NlNx","object":"chat.completion.chunk","created":1766701126,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":0,"function":{"arguments":"}"}}]},"finish_reason":null}],"usage":null,"obfuscation":"uSVgtytSzxV7"} +data: {"id":"chatcmpl-D52mYBQiVJoVI837twEG5vpPRxo3F","object":"chat.completion.chunk","created":1770094706,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"usage":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":1,"function":{"arguments":"\", \""}}]},"finish_reason":null}],"obfuscation":"PUSV6OA"} -data: {"id":"chatcmpl-CqnxO9QA2SYzqUg3j2vOBDv47NlNx","object":"chat.completion.chunk","created":1766701126,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{},"finish_reason":"tool_calls"}],"usage":null,"obfuscation":"dKRdDeNi7Ag"} +data: {"id":"chatcmpl-D52mYBQiVJoVI837twEG5vpPRxo3F","object":"chat.completion.chunk","created":1770094706,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"usage":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":1,"function":{"arguments":"Devel"}}]},"finish_reason":null}],"obfuscation":"iE40CeHf"} -data: {"id":"chatcmpl-CqnxO9QA2SYzqUg3j2vOBDv47NlNx","object":"chat.completion.chunk","created":1766701126,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[],"usage":{"prompt_tokens":2476,"completion_tokens":1887,"total_tokens":4363,"prompt_tokens_details":{"cached_tokens":2176,"audio_tokens":0},"completion_tokens_details":{"reasoning_tokens":1856,"audio_tokens":0,"accepted_prediction_tokens":0,"rejected_prediction_tokens":0}},"obfuscation":"ZHkygmUrjh"} +data: {"id":"chatcmpl-D52mYBQiVJoVI837twEG5vpPRxo3F","object":"chat.completion.chunk","created":1770094706,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"usage":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":1,"function":{"arguments":"oper.t"}}]},"finish_reason":null}],"obfuscation":"H6OirmC"} + +data: {"id":"chatcmpl-D52mYBQiVJoVI837twEG5vpPRxo3F","object":"chat.completion.chunk","created":1770094706,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"usage":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":1,"function":{"arguments":"extE"}}]},"finish_reason":null}],"obfuscation":"kDbaE6CEl"} + +data: {"id":"chatcmpl-D52mYBQiVJoVI837twEG5vpPRxo3F","object":"chat.completion.chunk","created":1770094706,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"usage":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":1,"function":{"arguments":"ditor"}}]},"finish_reason":null}],"obfuscation":"y0gYF9yy"} + +data: {"id":"chatcmpl-D52mYBQiVJoVI837twEG5vpPRxo3F","object":"chat.completion.chunk","created":1770094706,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"usage":null,"choices":[{"index":0,"delta":{"tool_calls":[{"index":1,"function":{"arguments":"\"]}"}}]},"finish_reason":null}],"obfuscation":"YrrS1cRX8"} + +data: {"id":"chatcmpl-D52mYBQiVJoVI837twEG5vpPRxo3F","object":"chat.completion.chunk","created":1770094706,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[{"index":0,"delta":{},"finish_reason":"tool_calls"}],"usage":null,"obfuscation":"HVEjNhyKZ9f"} + +data: {"id":"chatcmpl-D52mYBQiVJoVI837twEG5vpPRxo3F","object":"chat.completion.chunk","created":1770094706,"model":"gpt-5-nano-2025-08-07","service_tier":"default","system_fingerprint":null,"choices":[],"usage":{"prompt_tokens":2911,"completion_tokens":1088,"total_tokens":3999,"prompt_tokens_details":{"cached_tokens":0,"audio_tokens":0},"completion_tokens_details":{"reasoning_tokens":1024,"audio_tokens":0,"accepted_prediction_tokens":0,"rejected_prediction_tokens":0}},"obfuscation":"7gsIC3BJ8WITa"} data: [DONE] + + diff --git a/crates/goose/Cargo.toml b/crates/goose/Cargo.toml index ec421473a2cd..6feafe5bb0af 100644 --- a/crates/goose/Cargo.toml +++ b/crates/goose/Cargo.toml @@ -42,6 +42,7 @@ reqwest = { workspace = true, features = [ "http2", "stream", "blocking", + "multipart" ], default-features = false } tokio = { workspace = true } serde = { version = "1.0", features = ["derive"] }