helloadhavan/github_issues huggingface dataset:
Repository: denoland/deno
Pull request: fix(ext/node): return `Buffer` from crypto cipher APIs

Fixes https://github.com/denoland/deno/issues/28633

Changed files:
filename: ext/node/polyfills/internal/crypto/cipher.ts
patch: @@ -438,7 +438,7 @@ export function privateEncrypt(
   const padding = privateKey.padding || 1;
 
   buffer = getArrayBufferOrView(buffer, "buffer");
-  return op_node_private_encrypt(data, buffer, padding);
+  return Buffer.from(op_node_private_encrypt(data, buffer, padding));
 }
 
 export function privateDecrypt(
@@ -449,7 +449,7 @@ export function privateDecrypt(
   const padding = privateKey.padding || 1;
 
   buffer = getArrayBufferOrView(buffer, "buffer");
-  return op_node_private_decrypt(data, buffer, padding);
+  return Buffer.from(op_node_private_decrypt(data, buffer, padding));
 }
 
 export function publicEncrypt(
@@ -460,7 +460,7 @@ export function publicEncrypt(
   const padding = publicKey.padding || 1;
 
   buffer = getArrayBufferOrView(buffer, "buffer");
-  return op_node_public_encrypt(data, buffer, padding);
+  return Buffer.from(op_node_public_encrypt(data, buffer, padding));
 }
 
 export function prepareKey(key) {

filename: tests/unit_node/crypto/crypto_cipher_test.ts
patch: @@ -3,7 +3,7 @@ import crypto from "node:crypto";
 import { Buffer } from "node:buffer";
 import { Readable } from "node:stream";
 import { buffer, text } from "node:stream/consumers";
-import { assertEquals, assertThrows } from "@std/assert";
+import { assert, assertEquals, assertThrows } from "@std/assert";
 
 const rsaPrivateKey = Deno.readTextFileSync(
   new URL("../testdata/rsa_private.pem", import.meta.url),
@@ -12,7 +12,7 @@ const rsaPublicKey = Deno.readTextFileSync(
   new URL("../testdata/rsa_public.pem", import.meta.url),
 );
 
-const input = new TextEncoder().encode("hello world");
+const input = Buffer.from("hello world", "utf-8");
 
 function zeros(length: number): Uint8Array {
   return new Uint8Array(length);
@@ -26,6 +26,8 @@ Deno.test({
       Buffer.from(rsaPrivateKey),
       Buffer.from(encrypted),
     );
+    assert(Buffer.isBuffer(encrypted));
+    assert(Buffer.isBuffer(decrypted));
     assertEquals(decrypted, input);
   },
 });
@@ -49,10 +51,12 @@ Deno.test({
   name: "rsa private encrypt and private decrypt",
   fn() {
     const encrypted = crypto.privateEncrypt(rsaPrivateKey, input);
+    assert(Buffer.isBuffer(encrypted));
     const decrypted = crypto.privateDecrypt(
       rsaPrivateKey,
       Buffer.from(encrypted),
     );
+    assert(Buffer.isBuffer(decrypted));
     assertEquals(decrypted, input);
   },
 });
@@ -61,6 +65,7 @@ Deno.test({
   name: "rsa public decrypt fail",
   fn() {
     const encrypted = crypto.publicEncrypt(rsaPublicKey, input);
+    assert(Buffer.isBuffer(encrypted));
     assertThrows(() =>
       crypto.publicDecrypt(rsaPublicKey, Buffer.from(encrypted))
     );
Repository: nodejs/node
Pull request: tools: ignore test directory in CodeQL scans

Scanning the test directory results in many false positives about hard-coded credentials. We want the code scan for
user-exectuable code and possibly our tools, but not generally for tests. Ignore the test directory in CodeQL scans. A long list of false positives makes it harder to interpret the result of CodeQL runs.

<!--
Before submitting a pull request, please read:

- the CONTRIBUTING guide at https://github.com/nodejs/node/blob/HEAD/CONTRIBUTING.md
- the commit message formatting guidelines at
  https://github.com/nodejs/node/blob/HEAD/doc/contributing/pull-requests.md#commit-message-guidelines

For code changes:
1. Include tests for any bug fixes or new features.
2. Update documentation if relevant.
3. Ensure that `make -j4 test` (UNIX), or `vcbuild test` (Windows) passes.

If you believe this PR should be highlighted in the Node.js CHANGELOG
please add the `notable-change` label.

Developer's Certificate of Origin 1.1

By making a contribution to this project, I certify that:

(a) The contribution was created in whole or in part by me and I
    have the right to submit it under the open source license
    indicated in the file; or

(b) The contribution is based upon previous work that, to the best
    of my knowledge, is covered under an appropriate open source
    license and I have the right under that license to submit that
    work with modifications, whether created in whole or in part
    by me, under the same open source license (unless I am
    permitted to submit under a different license), as indicated
    in the file; or

(c) The contribution was provided directly to me by some other
    person who certified (a), (b) or (c) and I have not modified
    it.

(d) I understand and agree that this project and the contribution
    are public and that a record of the contribution (including all
    personal information I submit with it, including my sign-off) is
    maintained indefinitely and may be redistributed consistent with
    this project or the open source license(s) involved.
-->


Changed files:
filename: .github/workflows/codeql.yml
patch: @@ -7,6 +7,9 @@ on:
 permissions:
   contents: read
 
+paths-to-ignore:
+  - test
+
 jobs:
   analyze:
     name: Analyze
Repository: ggml-org/llama.cpp
Pull request: tests: Generate unique input values for count_equal

This avoids backend-dependent behavior for argmax that leads to intermittent failures.

Fixes #15484

Changed files:
filename: tests/test-backend-ops.cpp
patch: @@ -2209,6 +2209,26 @@ struct test_count_equal : public test_case {
     double max_nmse_err() override {
         return 0.0;
     }
+
+    void initialize_tensors(ggml_context * ctx) override {
+        std::random_device rd;
+        std::default_random_engine rng(rd());
+        for (ggml_tensor * t = ggml_get_first_tensor(ctx); t != NULL; t = ggml_get_next_tensor(ctx, t)) {
+            if (t->type == GGML_TYPE_F32) {
+                // initialize with unique values to avoid ties
+                for (int64_t r = 0; r < ggml_nrows(t); r++) {
+                    std::vector<float> data(t->ne[0]);
+                    for (int i = 0; i < t->ne[0]; i++) {
+                        data[i] = i;
+                    }
+                    std::shuffle(data.begin(), data.end(), rng);
+                    ggml_backend_tensor_set(t, data.data(), r * t->nb[1], t->ne[0] * sizeof(float));
+                }
+            } else {
+                init_tensor_uniform(t);
+            }
+        }
+    }
 };
 
 // GGML_OP_REPEAT
Repository: denoland/deno
Pull request: fix(node compat): shake-128, shake-256 aliases for shake128 and shake256 hash algorithms

- Fixes #28442
- Node.js seems to manage these aliases here: [deps/openssl/openssl/providers/implementations/include/prov/names.h](https://github.com/nodejs/node/blob/96457b433fb1b9cdcc7d957914ae815aa40a5c78/deps/openssl/openssl/providers/implementations/include/prov/names.h#L222-L223)
- Tested against `crypto_hash_test.ts` locally against a debug build. The debug build passes, the current stable release fails.


Changed files:
filename: ext/node/ops/crypto/digest.rs
patch: @@ -200,8 +200,12 @@ impl Hash {
     output_length: Option<usize>,
   ) -> Result<Self, HashError> {
     match algorithm_name {
-      "shake128" => return Ok(Shake128(Default::default(), output_length)),
-      "shake256" => return Ok(Shake256(Default::default(), output_length)),
+      "shake128" | "shake-128" => {
+        return Ok(Shake128(Default::default(), output_length))
+      }
+      "shake256" | "shake-256" => {
+        return Ok(Shake256(Default::default(), output_length))
+      }
       "sha256" => {
         let digest = ring_sha2::RingSha256::new();
         if let Some(length) = output_length {

filename: tests/unit_node/crypto/crypto_hash_test.ts
patch: @@ -132,3 +132,13 @@ Deno.test("[node/crypto.hash] oneshot hash API", () => {
   const d = hash("sha1", "Node.js");
   assertEquals(d, "10b3493287f831e81a438811a1ffba01f8cec4b7");
 });
+
+Deno.test("[node/crypto.hash] shake-128 alias", () => {
+  const d = hash("shake-128", "Node.js", "base64url");
+  assertEquals(d, "Nkx9-EgHpFkeXY5OPsL0rg");
+});
+
+Deno.test("[node/crypto.hash] shake-256 alias", () => {
+  const d = hash("shake-256", "Node.js", "base64url");
+  assertEquals(d, "JdelDxiwp92tkk9jYjEFPMlHD0gC8bMbYtHRCIM6TTQ");
+});
Repository: ggml-org/llama.cpp
Pull request: metal: fix regression when no metal devices are present

Otherwise, metal initialization segfaults.

This situation was fixed before in
acd38efee316f3a5ed2e6afcbc5814807c347053. Regression was introduced in
bf9087f59aab940cf312b85a67067ce33d9e365a.

*Make sure to read the [contributing guidelines](https://github.com/ggml-org/llama.cpp/blob/master/CONTRIBUTING.md) before submitting a PR*


Changed files:
filename: ggml/src/ggml-metal/ggml-metal.m
patch: @@ -93,35 +93,37 @@
     if (ctx->mtl_device == nil) {
         ctx->mtl_device = MTLCreateSystemDefaultDevice();
 
-        ctx->has_simdgroup_reduction  = [ctx->mtl_device supportsFamily:MTLGPUFamilyApple7];
-        ctx->has_simdgroup_reduction |= [ctx->mtl_device supportsFamily:MTLGPUFamilyMetal3_GGML];
+        if (ctx->mtl_device) {
+            ctx->has_simdgroup_reduction  = [ctx->mtl_device supportsFamily:MTLGPUFamilyApple7];
+            ctx->has_simdgroup_reduction |= [ctx->mtl_device supportsFamily:MTLGPUFamilyMetal3_GGML];
 
-        ctx->has_simdgroup_mm = [ctx->mtl_device supportsFamily:MTLGPUFamilyApple7];
+            ctx->has_simdgroup_mm = [ctx->mtl_device supportsFamily:MTLGPUFamilyApple7];
 
 #if defined(GGML_METAL_HAS_RESIDENCY_SETS)
-        ctx->has_residency_sets = getenv("GGML_METAL_NO_RESIDENCY") == nil;
+            ctx->has_residency_sets = getenv("GGML_METAL_NO_RESIDENCY") == nil;
 #endif
 
-        ctx->has_bfloat  = [ctx->mtl_device supportsFamily:MTLGPUFamilyMetal3_GGML];
-        ctx->has_bfloat |= [ctx->mtl_device supportsFamily:MTLGPUFamilyApple6];
+            ctx->has_bfloat  = [ctx->mtl_device supportsFamily:MTLGPUFamilyMetal3_GGML];
+            ctx->has_bfloat |= [ctx->mtl_device supportsFamily:MTLGPUFamilyApple6];
 
 #if defined(GGML_METAL_USE_BF16)
-        ctx->use_bfloat = ctx->has_bfloat;
+            ctx->use_bfloat = ctx->has_bfloat;
 #else
-        ctx->use_bfloat = false;
+            ctx->use_bfloat = false;
 #endif
-        ctx->use_fusion = getenv("GGML_METAL_FUSION_DISABLE") == nil;
+            ctx->use_fusion = getenv("GGML_METAL_FUSION_DISABLE") == nil;
 
-        {
-            const char * val = getenv("GGML_METAL_FUSION_DEBUG");
-            ctx->debug_fusion = val ? atoi(val) : 0;
-        }
+            {
+                const char * val = getenv("GGML_METAL_FUSION_DEBUG");
+                ctx->debug_fusion = val ? atoi(val) : 0;
+            }
 
-        memset(ctx->fuse_cnt, 0, sizeof(ctx->fuse_cnt));
+            memset(ctx->fuse_cnt, 0, sizeof(ctx->fuse_cnt));
 
-        ctx->max_size = ctx->mtl_device.maxBufferLength;
+            ctx->max_size = ctx->mtl_device.maxBufferLength;
 
-        strncpy(ctx->name, [[ctx->mtl_device name] UTF8String], sizeof(ctx->name) - 1);
+            strncpy(ctx->name, [[ctx->mtl_device name] UTF8String], sizeof(ctx->name) - 1);
+        }
     }
 
     ctx->mtl_device_ref_count++;
Repository: facebook/react
Pull request: Add initial canary changelog


Changed files:
filename: CHANGELOG-canary.md
patch: @@ -0,0 +1,13 @@
+## October 5, 2023 (18.3.0-canary-546178f91-20231005)
+
+### React
+
+- Added support for async functions to be passed to `startTransition`. 
+- `useTransition` now triggers the nearest error boundary instead of a global error.
+- Added `useOptimistic`, a new Hook for handling optimistic UI updates. It optimistically updates the UI before receiving confirmation from a server or external source.
+
+### React DOM
+
+- Added support for passing async functions to the `action` prop on `<form>`. When the function passed to `action` is marked with [`'use server'`](https://react.dev/reference/react/use-server), the form is [progressively enhanced](https://developer.mozilla.org/en-US/docs/Glossary/Progressive_Enhancement).
+- Added `useFormStatus`, a new Hook for checking the submission state of a form.
+- Added `useFormState`, a new Hook for updating state upon form submission. When the function passed to `useFormState` is marked with [`'use server'`](https://react.dev/reference/react/use-server), the update is [progressively enhanced](https://developer.mozilla.org/en-US/docs/Glossary/Progressive_Enhancement).
Repository: electron/electron
Pull request: fix: RenderFrameHost nullptr dereference

#### Description of Change

Fixes #45142. This PR uses the solution suggested there by @alexi in that issue and also applies it to a couple of other potentially risky places.

#### Checklist

- [x] PR description included and stakeholders cc'd
- [x] `npm test` passes
- [x] [PR release notes](https://github.com/electron/clerk/blob/main/README.md) describe the change in a way relevant to app developers, and are [capitalized, punctuated, and past tense](https://github.com/electron/clerk/blob/main/README.md#examples).

#### Release Notes

Notes: Fixed crash when accessing WebFrameMain frames and name attributes on destroyed frames.

Changed files:
filename: shell/browser/api/electron_api_web_frame_main.cc
patch: @@ -183,7 +183,7 @@ void WebFrameMain::UpdateRenderFrameHost(content::RenderFrameHost* rfh) {
 }
 
 bool WebFrameMain::CheckRenderFrame() const {
-  if (render_frame_disposed_) {
+  if (!HasRenderFrame()) {
     v8::Isolate* isolate = JavascriptEnvironment::GetIsolate();
     v8::HandleScope scope(isolate);
     gin_helper::ErrorThrower(isolate).ThrowError(
@@ -435,7 +435,7 @@ v8::Local<v8::Promise> WebFrameMain::CollectDocumentJSCallStack(
   gin_helper::Promise<base::Value> promise(args->isolate());
   v8::Local<v8::Promise> handle = promise.GetHandle();
 
-  if (render_frame_disposed_) {
+  if (!HasRenderFrame()) {
     promise.RejectWithErrorMessage(
         "Render frame was disposed before WebFrameMain could be accessed");
     return handle;
@@ -463,7 +463,7 @@ void WebFrameMain::CollectedJavaScriptCallStack(
     gin_helper::Promise<base::Value> promise,
     const std::string& untrusted_javascript_call_stack,
     const std::optional<blink::LocalFrameToken>& remote_frame_token) {
-  if (render_frame_disposed_) {
+  if (!HasRenderFrame()) {
     promise.RejectWithErrorMessage(
         "Render frame was disposed before call stack was received");
     return;

filename: shell/browser/api/electron_api_web_frame_main.h
patch: @@ -101,8 +101,14 @@ class WebFrameMain final : public gin::Wrappable<WebFrameMain>,
   void TeardownMojoConnection();
   void OnRendererConnectionError();
 
-  // WebFrameMain can outlive its RenderFrameHost pointer so we need to check
-  // whether its been disposed of prior to accessing it.
+  [[nodiscard]] constexpr bool HasRenderFrame() const {
+    return !render_frame_disposed_ && render_frame_ != nullptr;
+  }
+
+  // Throws a JS error if HasRenderFrame() is false.
+  // WebFrameMain can outlive its RenderFrameHost pointer,
+  // so we need to check whether its been disposed of
+  // prior to accessing it.
   bool CheckRenderFrame() const;
 
   v8::Local<v8::Promise> ExecuteJavaScript(gin::Arguments* args,
Repository: denoland/deno
Pull request: fix(unstable): lint `.parent` property not traversing over groups

In our JS lint plugin API each node has a `.parent` property to access its parent. But I forgot to skip group nodes, which lead to an invalid node being returned.

Fixes: https://github.com/denoland/deno/issues/28799

Changed files:
filename: cli/js/40_lint.js
patch: @@ -729,7 +729,12 @@ function readValue(ctx, idx, search, parseNode) {
   } else if (search === AST_PROP_RANGE) {
     return readSpan(ctx, idx);
   } else if (search === AST_PROP_PARENT) {
-    const parent = readParent(buf, idx);
+    let parent = readParent(buf, idx);
+
+    const parentType = readType(buf, parent);
+    if (parentType === AST_GROUP_TYPE) {
+      parent = readParent(buf, parent);
+    }
     return getNode(ctx, parent);
   }
 

filename: tests/unit/lint_plugin_test.ts
patch: @@ -444,6 +444,22 @@ Deno.test("Plugin - visitor :not", () => {
   assertEquals(result[0].node.name, "bar");
 });
 
+Deno.test("Plugin - parent", () => {
+  let parent: Deno.lint.Node | undefined;
+
+  testPlugin("const foo = 1;", {
+    create() {
+      return {
+        VariableDeclaration(node) {
+          parent = node.parent;
+        },
+      };
+    },
+  });
+
+  assertEquals(parent?.type, "Program");
+});
+
 Deno.test("Plugin - Program", async (t) => {
   await testSnapshot(t, "", "Program");
 });
Repository: nodejs/node
Pull request: src: use ranges library (C++20) to simplify code

This PR uses C++20 ranges to slightly simplify a piece of code. To be honest, the real motivation of this PR is to introduce ranges and test whether the platforms play nice with ranges. If so, then this could be generalized in the code base.

Changed files:
filename: src/node_options-inl.h
patch: @@ -3,7 +3,9 @@
 
 #if defined(NODE_WANT_INTERNALS) && NODE_WANT_INTERNALS
 
+#include <algorithm>
 #include <cstdlib>
+#include <ranges>
 #include "node_options.h"
 #include "util.h"
 
@@ -393,15 +395,16 @@ void OptionsParser<Options>::Parse(
         // Implications for negated options are defined with "--no-".
         implied_name.insert(2, "no-");
       }
-      auto implications = implications_.equal_range(implied_name);
-      for (auto imp = implications.first; imp != implications.second; ++imp) {
-        if (imp->second.type == kV8Option) {
-          v8_args->push_back(imp->second.name);
-        } else {
-          *imp->second.target_field->template Lookup<bool>(options) =
-              imp->second.target_value;
-        }
-      }
+      auto [f, l] = implications_.equal_range(implied_name);
+      std::ranges::for_each(std::ranges::subrange(f, l) | std::views::values,
+                            [&](const auto& value) {
+                              if (value.type == kV8Option) {
+                                v8_args->push_back(value.name);
+                              } else {
+                                *value.target_field->template Lookup<bool>(
+                                    options) = value.target_value;
+                              }
+                            });
     }
 
     if (it == options_.end()) {
Repository: electron/electron
Pull request: fix: RenderFrameHost nullptr dereference

Backport of #45487

See that PR for details.


Notes: Fixed crash when accessing WebFrameMain frames and name attributes on destroyed frames.

Changed files:
filename: shell/browser/api/electron_api_web_frame_main.cc
patch: @@ -183,7 +183,7 @@ void WebFrameMain::UpdateRenderFrameHost(content::RenderFrameHost* rfh) {
 }
 
 bool WebFrameMain::CheckRenderFrame() const {
-  if (render_frame_disposed_) {
+  if (!HasRenderFrame()) {
     v8::Isolate* isolate = JavascriptEnvironment::GetIsolate();
     v8::HandleScope scope(isolate);
     gin_helper::ErrorThrower(isolate).ThrowError(
@@ -435,7 +435,7 @@ v8::Local<v8::Promise> WebFrameMain::CollectDocumentJSCallStack(
   gin_helper::Promise<base::Value> promise(args->isolate());
   v8::Local<v8::Promise> handle = promise.GetHandle();
 
-  if (render_frame_disposed_) {
+  if (!HasRenderFrame()) {
     promise.RejectWithErrorMessage(
         "Render frame was disposed before WebFrameMain could be accessed");
     return handle;
@@ -463,7 +463,7 @@ void WebFrameMain::CollectedJavaScriptCallStack(
     gin_helper::Promise<base::Value> promise,
     const std::string& untrusted_javascript_call_stack,
     const std::optional<blink::LocalFrameToken>& remote_frame_token) {
-  if (render_frame_disposed_) {
+  if (!HasRenderFrame()) {
     promise.RejectWithErrorMessage(
         "Render frame was disposed before call stack was received");
     return;

filename: shell/browser/api/electron_api_web_frame_main.h
patch: @@ -101,8 +101,14 @@ class WebFrameMain final : public gin::Wrappable<WebFrameMain>,
   void TeardownMojoConnection();
   void OnRendererConnectionError();
 
-  // WebFrameMain can outlive its RenderFrameHost pointer so we need to check
-  // whether its been disposed of prior to accessing it.
+  [[nodiscard]] constexpr bool HasRenderFrame() const {
+    return !render_frame_disposed_ && render_frame_ != nullptr;
+  }
+
+  // Throws a JS error if HasRenderFrame() is false.
+  // WebFrameMain can outlive its RenderFrameHost pointer,
+  // so we need to check whether its been disposed of
+  // prior to accessing it.
   bool CheckRenderFrame() const;
 
   v8::Local<v8::Promise> ExecuteJavaScript(gin::Arguments* args,
Repository: electron/electron
Pull request: fix: RenderFrameHost nullptr dereference

Backport of #45487

See that PR for details.


Notes: Fixed crash when accessing WebFrameMain frames and name attributes on destroyed frames.

Changed files:
filename: shell/browser/api/electron_api_web_frame_main.cc
patch: @@ -184,7 +184,7 @@ void WebFrameMain::UpdateRenderFrameHost(content::RenderFrameHost* rfh) {
 }
 
 bool WebFrameMain::CheckRenderFrame() const {
-  if (render_frame_disposed_) {
+  if (!HasRenderFrame()) {
     v8::Isolate* isolate = JavascriptEnvironment::GetIsolate();
     v8::HandleScope scope(isolate);
     gin_helper::ErrorThrower(isolate).ThrowError(
@@ -436,7 +436,7 @@ v8::Local<v8::Promise> WebFrameMain::CollectDocumentJSCallStack(
   gin_helper::Promise<base::Value> promise(args->isolate());
   v8::Local<v8::Promise> handle = promise.GetHandle();
 
-  if (render_frame_disposed_) {
+  if (!HasRenderFrame()) {
     promise.RejectWithErrorMessage(
         "Render frame was disposed before WebFrameMain could be accessed");
     return handle;
@@ -464,7 +464,7 @@ void WebFrameMain::CollectedJavaScriptCallStack(
     gin_helper::Promise<base::Value> promise,
     const std::string& untrusted_javascript_call_stack,
     const std::optional<blink::LocalFrameToken>& remote_frame_token) {
-  if (render_frame_disposed_) {
+  if (!HasRenderFrame()) {
     promise.RejectWithErrorMessage(
         "Render frame was disposed before call stack was received");
     return;

filename: shell/browser/api/electron_api_web_frame_main.h
patch: @@ -101,8 +101,14 @@ class WebFrameMain final : public gin::Wrappable<WebFrameMain>,
   void TeardownMojoConnection();
   void OnRendererConnectionError();
 
-  // WebFrameMain can outlive its RenderFrameHost pointer so we need to check
-  // whether its been disposed of prior to accessing it.
+  [[nodiscard]] constexpr bool HasRenderFrame() const {
+    return !render_frame_disposed_ && render_frame_ != nullptr;
+  }
+
+  // Throws a JS error if HasRenderFrame() is false.
+  // WebFrameMain can outlive its RenderFrameHost pointer,
+  // so we need to check whether its been disposed of
+  // prior to accessing it.
   bool CheckRenderFrame() const;
 
   v8::Local<v8::Promise> ExecuteJavaScript(gin::Arguments* args,
Repository: huggingface/transformers
Pull request: Update tiny-agents example

Fix docs example after https://github.com/huggingface/huggingface_hub/pull/3166 / https://github.com/huggingface/huggingface.js/pull/1556. Since release [0.33.2](https://github.com/huggingface/huggingface_hub/releases/tag/v0.33.2) `tiny-agents` config follow VSCode format. We made the change without a proper deprecation warning as it's still experimental and we wanted to harmonize with VSCode as quickly as possible (to avoid future conflicts).  

Related PRs:
- https://github.com/huggingface/hub-docs/pull/1816
- https://github.com/huggingface/transformers/pull/39245
- https://github.com/huggingface/huggingface_hub/pull/3205
- https://github.com/huggingface/huggingface.js/pull/1599

Changed files:
filename: docs/source/en/serving.md
patch: @@ -197,9 +197,7 @@ The first step to use MCP tools is to let the model know which tools are availab
     "servers": [
         {
             "type": "sse",
-            "config": {
-                "url": "https://evalstate-flux1-schnell.hf.space/gradio_api/mcp/sse"
-            }
+            "url": "https://evalstate-flux1-schnell.hf.space/gradio_api/mcp/sse"
         }
     ]
 }