codeant-ai-for-open-source[bot] commented on code in PR #45550:
URL: https://github.com/apache/superset/pull/45550#discussion_r4342837297


##########
docs/static/resources/openapi.json:
##########
@@ -26581,6 +26581,870 @@
         ]
       }
     },
+    "/api/v1/extensions/": {
+      "get": {
+        "responses": {
+          "200": {
+            "content": {
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "count": {
+                      "type": "integer"
+                    },
+                    "message": {
+                      "type": "string"
+                    },
+                    "result": {
+                      "items": {
+                        "properties": {
+                          "remoteEntry": {
+                            "type": "string"
+                          }
+                        },
+                        "type": "object"
+                      },
+                      "type": "array"
+                    },
+                    "status": {
+                      "enum": [
+                        "loaded",
+                        "not_loaded"
+                      ],
+                      "type": "string"
+                    }
+                  },
+                  "type": "object"
+                }
+              }
+            },
+            "description": "List of all enabled extensions"
+          },
+          "400": {
+            "$ref": "#/components/responses/400"
+          },
+          "401": {
+            "$ref": "#/components/responses/401"
+          },
+          "422": {
+            "$ref": "#/components/responses/422"
+          },
+          "500": {
+            "$ref": "#/components/responses/500"
+          }
+        },
+        "security": [
+          {
+            "jwt": []
+          },
+          {
+            "api_key": []
+          }
+        ],
+        "summary": "List all enabled extensions.",
+        "tags": [
+          "ExtensionsRestApi"
+        ]
+      }
+    },
+    "/api/v1/extensions/_info": {
+      "get": {
+        "responses": {
+          "200": {
+            "content": {
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "message": {
+                      "type": "string"
+                    },
+                    "permissions": {
+                      "items": {
+                        "type": "string"
+                      },
+                      "type": "array"
+                    },
+                    "status": {
+                      "description": "`not_loaded` when extensions are enabled 
for this request but were not loaded at server startup",
+                      "enum": [
+                        "loaded",
+                        "not_loaded"
+                      ],
+                      "type": "string"
+                    }
+                  },
+                  "type": "object"
+                }
+              }
+            },
+            "description": "API info"
+          }
+        },
+        "security": [
+          {
+            "jwt": []
+          },
+          {
+            "api_key": []
+          }
+        ],
+        "summary": "Get API info",
+        "tags": [
+          "ExtensionsRestApi"
+        ]
+      }
+    },
+    "/api/v1/extensions/{publisher}/{name}": {
+      "get": {
+        "parameters": [
+          {
+            "in": "path",
+            "name": "publisher",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          },
+          {
+            "in": "path",
+            "name": "name",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "content": {
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "result": {
+                      "items": {
+                        "properties": {
+                          "remoteEntry": {
+                            "type": "string"
+                          }
+                        },
+                        "type": "object"
+                      },
+                      "type": "array"
+                    }

Review Comment:
   **Suggestion:** The endpoint returns `result` as one extension object, but 
this schema declares an array; generated clients will deserialize the response 
incorrectly.
   
   **Assessment:** ๐ŸŸ  `Major` ยท ๐Ÿ” `Occurrence: Sometimes` ยท ๐Ÿท๏ธ `Api mismatch`
   
   [![Use CodeAnt 
Skill](https://new-codeant-butcket.s3.us-west-1.amazonaws.com/badges/use-codeant-skill-flat-v2.svg)](https://docs.codeant.ai/cli/resolve-pr-comments-skill)
 [![Fix in 
Cursor](https://new-codeant-butcket.s3.us-west-1.amazonaws.com/badges/fix-in-cursor-flat.svg)](https://app.codeant.ai/fix-in-ide?tool=cursor&prompt_id=a55694d59fb7469e8880e6d04a8874ef&service=github&base_url=https%3A%2F%2Fgithub.com&org=apache&repo=apache%2Fsuperset)
 [![Fix in VSCode 
Claude](https://new-codeant-butcket.s3.us-west-1.amazonaws.com/badges/fix-in-vscode-claude-flat.svg)](https://app.codeant.ai/fix-in-ide?tool=vscode-claude&prompt_id=a55694d59fb7469e8880e6d04a8874ef&service=github&base_url=https%3A%2F%2Fgithub.com&org=apache&repo=apache%2Fsuperset)
   <details>
   <summary><b>Prompt for AI Agent ๐Ÿค– </b></summary>
   
   ```mdx
   This is a comment left during a code review.
   
   **Path:** docs/static/resources/openapi.json
   **Line:** 26723:26733
   **Comment:**
        *Api Mismatch: The endpoint returns `result` as one extension object, 
but this schema declares an array; generated clients will deserialize the 
response incorrectly.
   
   Validate the correctness of the flagged issue. If correct, How can I resolve 
this? If you propose a fix, implement it and please make it concise.
   Once fix is implemented, also check other comments on the same PR, and ask 
user if the user wants to fix the rest of the comments as well. if said yes, 
then fetch all the comments validate the correctness and implement a minimal fix
   ```
   </details>
   <a 
href='https://app.codeant.ai/feedback?pr_url=https%3A%2F%2Fgithub.com%2Fapache%2Fsuperset%2Fpull%2F45550&comment_hash=0b94d74276295dd9558aa3ace78d505d42b6f2984abd0447e7ac9a8ad59a46e4&reaction=like'>๐Ÿ‘</a>
 | <a 
href='https://app.codeant.ai/feedback?pr_url=https%3A%2F%2Fgithub.com%2Fapache%2Fsuperset%2Fpull%2F45550&comment_hash=0b94d74276295dd9558aa3ace78d505d42b6f2984abd0447e7ac9a8ad59a46e4&reaction=dislike'>๐Ÿ‘Ž</a>



##########
docs/static/resources/openapi.json:
##########
@@ -26581,6 +26581,870 @@
         ]
       }
     },
+    "/api/v1/extensions/": {
+      "get": {
+        "responses": {
+          "200": {
+            "content": {
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "count": {
+                      "type": "integer"
+                    },
+                    "message": {
+                      "type": "string"
+                    },
+                    "result": {
+                      "items": {
+                        "properties": {
+                          "remoteEntry": {
+                            "type": "string"
+                          }
+                        },
+                        "type": "object"
+                      },
+                      "type": "array"
+                    },
+                    "status": {
+                      "enum": [
+                        "loaded",
+                        "not_loaded"
+                      ],
+                      "type": "string"
+                    }
+                  },
+                  "type": "object"
+                }
+              }
+            },
+            "description": "List of all enabled extensions"
+          },
+          "400": {
+            "$ref": "#/components/responses/400"
+          },
+          "401": {
+            "$ref": "#/components/responses/401"
+          },
+          "422": {
+            "$ref": "#/components/responses/422"
+          },
+          "500": {
+            "$ref": "#/components/responses/500"
+          }
+        },
+        "security": [
+          {
+            "jwt": []
+          },
+          {
+            "api_key": []
+          }
+        ],
+        "summary": "List all enabled extensions.",
+        "tags": [
+          "ExtensionsRestApi"
+        ]
+      }
+    },
+    "/api/v1/extensions/_info": {
+      "get": {
+        "responses": {
+          "200": {
+            "content": {
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "message": {
+                      "type": "string"
+                    },
+                    "permissions": {
+                      "items": {
+                        "type": "string"
+                      },
+                      "type": "array"
+                    },
+                    "status": {
+                      "description": "`not_loaded` when extensions are enabled 
for this request but were not loaded at server startup",
+                      "enum": [
+                        "loaded",
+                        "not_loaded"
+                      ],
+                      "type": "string"
+                    }
+                  },
+                  "type": "object"
+                }
+              }
+            },
+            "description": "API info"
+          }
+        },
+        "security": [
+          {
+            "jwt": []
+          },
+          {
+            "api_key": []
+          }
+        ],
+        "summary": "Get API info",
+        "tags": [
+          "ExtensionsRestApi"
+        ]
+      }
+    },
+    "/api/v1/extensions/{publisher}/{name}": {
+      "get": {
+        "parameters": [
+          {
+            "in": "path",
+            "name": "publisher",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          },
+          {
+            "in": "path",
+            "name": "name",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "content": {
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "result": {
+                      "items": {
+                        "properties": {
+                          "remoteEntry": {
+                            "type": "string"
+                          }
+                        },
+                        "type": "object"
+                      },
+                      "type": "array"
+                    }
+                  },
+                  "type": "object"
+                }
+              }
+            },
+            "description": "Extension details"
+          },
+          "400": {
+            "$ref": "#/components/responses/400"
+          },
+          "401": {
+            "$ref": "#/components/responses/401"
+          },
+          "422": {
+            "$ref": "#/components/responses/422"
+          },
+          "500": {
+            "$ref": "#/components/responses/500"
+          }
+        },
+        "security": [
+          {
+            "jwt": []
+          },
+          {
+            "api_key": []
+          }
+        ],
+        "summary": "Get an extension by its publisher and name.",
+        "tags": [
+          "ExtensionsRestApi"
+        ]
+      }
+    },
+    "/api/v1/extensions/{publisher}/{name}/storage/ephemeral/{key}": {
+      "delete": {
+        "parameters": [
+          {
+            "description": "Extension publisher",
+            "in": "path",
+            "name": "publisher",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          },
+          {
+            "description": "Extension name",
+            "in": "path",
+            "name": "name",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          },
+          {
+            "description": "Storage key",
+            "in": "path",
+            "name": "key",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          },
+          {
+            "description": "If true, delete from shared state",
+            "in": "query",
+            "name": "shared",
+            "required": false,
+            "schema": {
+              "type": "boolean"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "Value deleted successfully"
+          },
+          "404": {
+            "description": "Extension not found"
+          }
+        },
+        "security": [
+          {
+            "jwt": []
+          },
+          {
+            "api_key": []
+          }
+        ],
+        "summary": "Delete a value from ephemeral state",
+        "tags": [
+          "ExtensionStorageRestApi"
+        ]
+      },
+      "get": {
+        "parameters": [
+          {
+            "description": "Extension publisher",
+            "in": "path",
+            "name": "publisher",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          },
+          {
+            "description": "Extension name",
+            "in": "path",
+            "name": "name",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          },
+          {
+            "description": "Storage key",
+            "in": "path",
+            "name": "key",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          },
+          {
+            "description": "If true, read from shared state visible to all 
users",
+            "in": "query",
+            "name": "shared",
+            "required": false,
+            "schema": {
+              "type": "boolean"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "content": {
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "codec": {
+                      "description": "Name of the codec 'result' was encoded 
with, e.g. `json` (default) or `binary`",
+                      "type": "string"
+                    },
+                    "isBinary": {
+                      "description": "Whether the stored value is binary data",
+                      "type": "boolean"
+                    },
+                    "result": {
+                      "description": "The stored value. When 'isBinary' is 
true, this is a base64 string that must be decoded to get the actual value."
+                    }
+                  },
+                  "type": "object"
+                }
+              }
+            },
+            "description": "Value retrieved successfully"
+          },
+          "400": {
+            "description": "Value was stored with a codec unavailable over the 
API"
+          },
+          "404": {
+            "description": "Extension not found"
+          }
+        },
+        "security": [
+          {
+            "jwt": []
+          },
+          {
+            "api_key": []
+          }
+        ],
+        "summary": "Get a value from ephemeral state",
+        "tags": [
+          "ExtensionStorageRestApi"
+        ]
+      },
+      "put": {
+        "parameters": [
+          {
+            "description": "Extension publisher",
+            "in": "path",
+            "name": "publisher",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          },
+          {
+            "description": "Extension name",
+            "in": "path",
+            "name": "name",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          },
+          {
+            "description": "Storage key",
+            "in": "path",
+            "name": "key",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          },
+          {
+            "description": "If true, store as shared state visible to all 
users",
+            "in": "query",
+            "name": "shared",
+            "required": false,
+            "schema": {
+              "type": "boolean"
+            }
+          }
+        ],
+        "requestBody": {
+          "content": {
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "codec": {
+                    "description": "Name of the codec used to encode 'value', 
e.g. `json` (default). Must be one of the codecs allowed over the REST API.",
+                    "type": "string"
+                  },
+                  "isBinary": {
+                    "description": "Whether 'value' is binary data",
+                    "type": "boolean"
+                  },
+                  "ttl": {
+                    "description": "Time-to-live in seconds (must be a 
positive integer not exceeding MAX_TTL)",
+                    "type": "integer"
+                  },
+                  "value": {
+                    "description": "The value to store (must not exceed 
MAX_VALUE_SIZE bytes once encoded with 'codec'). When 'isBinary' is true, this 
must be a base64 string, decoded before being handed to 'codec'."
+                  }
+                },
+                "required": [
+                  "value",
+                  "ttl"
+                ],
+                "type": "object"
+              }
+            }
+          },
+          "required": true
+        },
+        "responses": {
+          "200": {
+            "description": "Value stored successfully"
+          },
+          "400": {
+            "description": "Invalid request body, or codec not allowed over 
the API"
+          },
+          "404": {
+            "description": "Extension not found"
+          }
+        },
+        "security": [
+          {
+            "jwt": []
+          },
+          {
+            "api_key": []
+          }
+        ],
+        "summary": "Set a value in ephemeral state",
+        "tags": [
+          "ExtensionStorageRestApi"
+        ]
+      }
+    },
+    "/api/v1/extensions/{publisher}/{name}/storage/persistent": {
+      "get": {
+        "parameters": [
+          {
+            "description": "Extension publisher",
+            "in": "path",
+            "name": "publisher",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          },
+          {
+            "description": "Extension name",
+            "in": "path",
+            "name": "name",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          },
+          {
+            "description": "If true, list shared state visible to all users",
+            "in": "query",
+            "name": "shared",
+            "required": false,
+            "schema": {
+              "type": "boolean"
+            }
+          },
+          {
+            "description": "Filter by resource type",
+            "in": "query",
+            "name": "resource_type",
+            "required": false,
+            "schema": {
+              "type": "string"
+            }
+          },
+          {
+            "description": "Filter by resource UUID (requires resource_type)",
+            "in": "query",
+            "name": "resource_uuid",
+            "required": false,
+            "schema": {
+              "type": "string"
+            }
+          },
+          {
+            "description": "Zero-indexed page number. Defaults to 0.",
+            "in": "query",
+            "name": "page",
+            "required": false,
+            "schema": {
+              "type": "integer"
+            }
+          },
+          {
+            "description": "Number of entries per page. Defaults to 10. There 
is no fixed ceiling, but a page whose combined value size exceeds 
MAX_LIST_PAYLOAD_SIZE is rejected \u2014 reduce page_size and retry if that 
happens.",
+            "in": "query",
+            "name": "page_size",
+            "required": false,
+            "schema": {
+              "type": "integer"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "content": {
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "count": {
+                      "description": "Total number of entries matching the 
given scope/filters, across all pages",
+                      "type": "integer"
+                    },
+                    "result": {
+                      "items": {
+                        "properties": {
+                          "codec": {
+                            "type": "string"
+                          },
+                          "isBinary": {
+                            "description": "Whether the stored value is binary 
data",
+                            "type": "boolean"
+                          },
+                          "key": {
+                            "type": "string"
+                          },
+                          "value": {
+                            "description": "The stored value, or null if its 
codec cannot be read over the REST API. When 'isBinary' is true, this is a 
base64 string that must be decoded to get the actual value."
+                          }
+                        },
+                        "type": "object"
+                      },
+                      "type": "array"
+                    }
+                  },
+                  "type": "object"
+                }
+              }
+            },
+            "description": "Entries retrieved successfully"
+          },
+          "400": {
+            "description": "The requested page's combined value size exceeds 
MAX_LIST_PAYLOAD_SIZE"
+          },
+          "404": {
+            "description": "Extension not found"
+          }
+        },
+        "security": [
+          {
+            "jwt": []
+          },
+          {
+            "api_key": []
+          }
+        ],
+        "summary": "List entries in persistent state",
+        "tags": [
+          "ExtensionStorageRestApi"
+        ]
+      }
+    },
+    "/api/v1/extensions/{publisher}/{name}/storage/persistent/{key}": {
+      "delete": {
+        "parameters": [
+          {
+            "description": "Extension publisher",
+            "in": "path",
+            "name": "publisher",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          },
+          {
+            "description": "Extension name",
+            "in": "path",
+            "name": "name",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          },
+          {
+            "description": "Storage key",
+            "in": "path",
+            "name": "key",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          },
+          {
+            "description": "If true, delete from shared state",
+            "in": "query",
+            "name": "shared",
+            "required": false,
+            "schema": {
+              "type": "boolean"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "description": "Value deleted successfully"
+          },
+          "404": {
+            "description": "Extension not found"
+          }
+        },
+        "security": [
+          {
+            "jwt": []
+          },
+          {
+            "api_key": []
+          }
+        ],
+        "summary": "Delete a value from persistent state",
+        "tags": [
+          "ExtensionStorageRestApi"
+        ]
+      },
+      "get": {
+        "parameters": [
+          {
+            "description": "Extension publisher",
+            "in": "path",
+            "name": "publisher",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          },
+          {
+            "description": "Extension name",
+            "in": "path",
+            "name": "name",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          },
+          {
+            "description": "Storage key",
+            "in": "path",
+            "name": "key",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          },
+          {
+            "description": "If true, read from shared state visible to all 
users",
+            "in": "query",
+            "name": "shared",
+            "required": false,
+            "schema": {
+              "type": "boolean"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "content": {
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "codec": {
+                      "description": "Name of the codec 'result' was encoded 
with, e.g. `json` (default) or `binary`",
+                      "type": "string"
+                    },
+                    "isBinary": {
+                      "description": "Whether the stored value is binary data",
+                      "type": "boolean"
+                    },
+                    "result": {
+                      "description": "The stored value. When 'isBinary' is 
true, this is a base64 string that must be decoded to get the actual value."
+                    }
+                  },
+                  "type": "object"
+                }
+              }
+            },
+            "description": "Value retrieved successfully"
+          },
+          "400": {
+            "description": "Value was stored with a codec unavailable over the 
API"
+          },
+          "404": {
+            "description": "Extension not found"
+          }
+        },
+        "security": [
+          {
+            "jwt": []
+          },
+          {
+            "api_key": []
+          }
+        ],
+        "summary": "Get a value from persistent state",
+        "tags": [
+          "ExtensionStorageRestApi"
+        ]
+      },
+      "put": {
+        "parameters": [
+          {
+            "description": "Extension publisher",
+            "in": "path",
+            "name": "publisher",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          },
+          {
+            "description": "Extension name",
+            "in": "path",
+            "name": "name",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          },
+          {
+            "description": "Storage key",
+            "in": "path",
+            "name": "key",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          },
+          {
+            "description": "If true, store as shared state visible to all 
users",
+            "in": "query",
+            "name": "shared",
+            "required": false,
+            "schema": {
+              "type": "boolean"
+            }
+          }
+        ],
+        "requestBody": {
+          "content": {
+            "application/json": {
+              "schema": {
+                "properties": {
+                  "codec": {
+                    "description": "Name of the codec used to encode 'value', 
e.g. `json` (default). Must be one of the codecs allowed over the REST API.",
+                    "type": "string"
+                  },
+                  "encrypt": {
+                    "description": "If true, the value is encrypted at rest",
+                    "type": "boolean"
+                  },
+                  "isBinary": {
+                    "description": "Whether 'value' is binary data",
+                    "type": "boolean"
+                  },
+                  "value": {
+                    "description": "The value to store. When 'isBinary' is 
true, this must be a base64 string, decoded before being handed to 'codec'."
+                  }
+                },
+                "required": [
+                  "value"
+                ],
+                "type": "object"
+              }
+            }
+          },
+          "required": true
+        },
+        "responses": {
+          "200": {
+            "description": "Value stored successfully"
+          },
+          "400": {
+            "description": "Invalid request body, codec not allowed over the 
API, or value exceeds MAX_VALUE_SIZE"
+          },
+          "404": {
+            "description": "Extension not found"
+          },
+          "413": {
+            "description": "Extension persistent storage quota exceeded"
+          }
+        },
+        "security": [
+          {
+            "jwt": []
+          },
+          {
+            "api_key": []
+          }
+        ],
+        "summary": "Set a value in persistent state",
+        "tags": [
+          "ExtensionStorageRestApi"
+        ]
+      }
+    },
+    "/api/v1/extensions/{publisher}/{name}/{file}": {
+      "get": {
+        "parameters": [
+          {
+            "description": "publisher of the extension",
+            "in": "path",
+            "name": "publisher",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          },
+          {
+            "description": "technical name of the extension",
+            "in": "path",
+            "name": "name",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          },
+          {
+            "description": "name of the requested chunk",
+            "in": "path",
+            "name": "file",
+            "required": true,
+            "schema": {
+              "type": "string"
+            }
+          }
+        ],
+        "responses": {
+          "200": {
+            "content": {
+              "application/json": {
+                "schema": {
+                  "properties": {
+                    "message": {
+                      "type": "string"
+                    }
+                  },
+                  "type": "object"
+                }
+              }

Review Comment:
   **Suggestion:** The chunk endpoint serves file bytes with a guessed MIME 
type, not a JSON message object, so generated clients will parse the bundle 
incorrectly.
   
   **Assessment:** ๐ŸŸ  `Major` ยท ๐Ÿ” `Occurrence: Rarely` ยท ๐Ÿท๏ธ `Api mismatch`
   
   [![Use CodeAnt 
Skill](https://new-codeant-butcket.s3.us-west-1.amazonaws.com/badges/use-codeant-skill-flat-v2.svg)](https://docs.codeant.ai/cli/resolve-pr-comments-skill)
 [![Fix in 
Cursor](https://new-codeant-butcket.s3.us-west-1.amazonaws.com/badges/fix-in-cursor-flat.svg)](https://app.codeant.ai/fix-in-ide?tool=cursor&prompt_id=77c38b1acafa4ccb9535be48d72826f7&service=github&base_url=https%3A%2F%2Fgithub.com&org=apache&repo=apache%2Fsuperset)
 [![Fix in VSCode 
Claude](https://new-codeant-butcket.s3.us-west-1.amazonaws.com/badges/fix-in-vscode-claude-flat.svg)](https://app.codeant.ai/fix-in-ide?tool=vscode-claude&prompt_id=77c38b1acafa4ccb9535be48d72826f7&service=github&base_url=https%3A%2F%2Fgithub.com&org=apache&repo=apache%2Fsuperset)
   <details>
   <summary><b>Prompt for AI Agent ๐Ÿค– </b></summary>
   
   ```mdx
   This is a comment left during a code review.
   
   **Path:** docs/static/resources/openapi.json
   **Line:** 27408:27417
   **Comment:**
        *Api Mismatch: The chunk endpoint serves file bytes with a guessed MIME 
type, not a JSON message object, so generated clients will parse the bundle 
incorrectly.
   
   Validate the correctness of the flagged issue. If correct, How can I resolve 
this? If you propose a fix, implement it and please make it concise.
   Once fix is implemented, also check other comments on the same PR, and ask 
user if the user wants to fix the rest of the comments as well. if said yes, 
then fetch all the comments validate the correctness and implement a minimal fix
   ```
   </details>
   <a 
href='https://app.codeant.ai/feedback?pr_url=https%3A%2F%2Fgithub.com%2Fapache%2Fsuperset%2Fpull%2F45550&comment_hash=59fba4fa9beeaec9a2ea295d4b732fb7f68fe6cab80a09c6ce5f099dbe3898fa&reaction=like'>๐Ÿ‘</a>
 | <a 
href='https://app.codeant.ai/feedback?pr_url=https%3A%2F%2Fgithub.com%2Fapache%2Fsuperset%2Fpull%2F45550&comment_hash=59fba4fa9beeaec9a2ea295d4b732fb7f68fe6cab80a09c6ce5f099dbe3898fa&reaction=dislike'>๐Ÿ‘Ž</a>



##########
superset-frontend/src/extensions/ExtensionsList.tsx:
##########
@@ -40,15 +61,56 @@ const ExtensionsList: 
FunctionComponent<ExtensionsListProps> = ({
   addDangerToast,
   addSuccessToast,
 }) => {
-  const {
-    state: { loading, resourceCount, resourceCollection },
-    fetchData,
-    refreshData,
-  } = useListViewResource<Extension>(
-    'extensions',
-    t('Extensions'),
-    addDangerToast,
-  );
+  // The rows and the load status come from the same list response, so the
+  // restart notice always describes the list on screen, even when requests
+  // reach different servers during a rolling restart.
+  const [{ loading, collection, count, notLoaded }, setState] =
+    useState<ExtensionsListState>({
+      loading: true,
+      collection: [],
+      count: 0,
+      notLoaded: false,
+    });
+  const addDangerToastRef = useRef(addDangerToast);
+  addDangerToastRef.current = addDangerToast;
+  const latestRequestIdRef = useRef(0);
+
+  // The endpoint returns every servable extension in one page and ignores
+  // paging and sorting parameters.
+  const fetchData = useCallback(() => {
+    const requestId = latestRequestIdRef.current + 1;
+    latestRequestIdRef.current = requestId;
+    const isLatest = () => latestRequestIdRef.current === requestId;
+    setState(current => ({ ...current, loading: true }));
+    return SupersetClient.get({ endpoint: '/api/v1/extensions/' })

Review Comment:
   **Suggestion:** The Name column is sortable, but this fetch ignores 
`sortBy`; `ListView` uses manual sorting, so clicks refetch the same order 
without reordering rows.
   
   **Assessment:** ๐ŸŸ  `Major` ยท ๐Ÿ” `Occurrence: Sometimes` ยท ๐Ÿท๏ธ `Logic error`
   
   [![Use CodeAnt 
Skill](https://new-codeant-butcket.s3.us-west-1.amazonaws.com/badges/use-codeant-skill-flat-v2.svg)](https://docs.codeant.ai/cli/resolve-pr-comments-skill)
 [![Fix in 
Cursor](https://new-codeant-butcket.s3.us-west-1.amazonaws.com/badges/fix-in-cursor-flat.svg)](https://app.codeant.ai/fix-in-ide?tool=cursor&prompt_id=ac9e74ba2a9b4cef9a94c8ba139c5ef1&service=github&base_url=https%3A%2F%2Fgithub.com&org=apache&repo=apache%2Fsuperset)
 [![Fix in VSCode 
Claude](https://new-codeant-butcket.s3.us-west-1.amazonaws.com/badges/fix-in-vscode-claude-flat.svg)](https://app.codeant.ai/fix-in-ide?tool=vscode-claude&prompt_id=ac9e74ba2a9b4cef9a94c8ba139c5ef1&service=github&base_url=https%3A%2F%2Fgithub.com&org=apache&repo=apache%2Fsuperset)
   <details>
   <summary><b>Prompt for AI Agent ๐Ÿค– </b></summary>
   
   ```mdx
   This is a comment left during a code review.
   
   **Path:** superset-frontend/src/extensions/ExtensionsList.tsx
   **Line:** 85:85
   **Comment:**
        *Logic Error: The Name column is sortable, but this fetch ignores 
`sortBy`; `ListView` uses manual sorting, so clicks refetch the same order 
without reordering rows.
   
   Validate the correctness of the flagged issue. If correct, How can I resolve 
this? If you propose a fix, implement it and please make it concise.
   Once fix is implemented, also check other comments on the same PR, and ask 
user if the user wants to fix the rest of the comments as well. if said yes, 
then fetch all the comments validate the correctness and implement a minimal fix
   ```
   </details>
   <a 
href='https://app.codeant.ai/feedback?pr_url=https%3A%2F%2Fgithub.com%2Fapache%2Fsuperset%2Fpull%2F45550&comment_hash=ca2e1d27cd1fb1994eaed55737eda2536d5df1a72f5d5eeb0b72d317b9b3a65d&reaction=like'>๐Ÿ‘</a>
 | <a 
href='https://app.codeant.ai/feedback?pr_url=https%3A%2F%2Fgithub.com%2Fapache%2Fsuperset%2Fpull%2F45550&comment_hash=ca2e1d27cd1fb1994eaed55737eda2536d5df1a72f5d5eeb0b72d317b9b3a65d&reaction=dislike'>๐Ÿ‘Ž</a>



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to