diff --git a/.husky/pre-commit b/.husky/pre-commit
deleted file mode 100755
index 58993aaeefd1e2be0b83d453941fadbd7b74266d..0000000000000000000000000000000000000000
--- a/.husky/pre-commit
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/usr/bin/env sh
-. "$(dirname -- "$0")/_/husky.sh"
-
-pnpm lint
diff --git a/.husky/pre-push b/.husky/pre-push
deleted file mode 100755
index af0cff7ed76ca87b56598342144e51ff6de92c55..0000000000000000000000000000000000000000
--- a/.husky/pre-push
+++ /dev/null
@@ -1,4 +0,0 @@
-#!/usr/bin/env sh
-. "$(dirname -- "$0")/_/husky.sh"
-
-pnpm test
diff --git a/packages/core/src/OutputParser.ts b/packages/core/src/OutputParser.ts
index 11bd7f0232175de8ef1e1aeed7f1c3c4700fa342..1498f3f00d9cf38f706e2ce86f4c9c0f516ee508 100644
--- a/packages/core/src/OutputParser.ts
+++ b/packages/core/src/OutputParser.ts
@@ -56,54 +56,14 @@ class OutputParserError extends Error {
 function parseJsonMarkdown(text: string) {
   text = text.trim();
 
-  const beginDelimiter = "```json";
-  const endDelimiter = "```";
-
-  const beginIndex = text.indexOf(beginDelimiter);
-  const endIndex = text.indexOf(
-    endDelimiter,
-    beginIndex + beginDelimiter.length,
-  );
-  //Scenario 1: LLM follows instruction format. However, it doesn't always do this.
-  if (!(beginIndex === -1 || endIndex === -1)) {
-    const jsonText = text.substring(
-      beginIndex + beginDelimiter.length,
-      endIndex,
-    );
-    return JSON.parse(jsonText);
-  }
-
-  //Scenario 2: LLM follows instruction format roughly, but doesn't do this exactly.
-  // For example: [```json] part was not returned, or there are irregular \n spaces.
+  //This code is more general than the previous version, and should be faster.
+  const beginIndex = text.indexOf("[");
+  const endIndex = text.lastIndexOf("]");
+  const jsonText = text.substring(beginIndex, endIndex + 1);
   try {
-    //This isn't a JSON markdown, but we should try again with something else.
-    //Try to get data_str to be a list of JSON objects
-    const new_data_str: string[] = text
-      .replace("[", " ")
-      .replace("]", " ")
-      .replace("\n", " ")
-      .trim()
-      //Warning: This regex might be slow.
-      .split(/(?=},)/g);
-    const arr_length = new_data_str.length;
-
-    //String formatting
-    //First to penultimate element
-    for (let i = 0; i < arr_length - 1; i++) {
-      new_data_str[i] += "}";
-    }
-    //Second to final element
-    for (let i = 1; i < arr_length; i++) {
-      new_data_str[i] = new_data_str[i].replace("},", " ");
-    }
-    const output: object[] = new_data_str.map((item) => JSON.parse(item));
-    return output;
+    return JSON.parse(jsonText);
   } catch (e) {
-    //In the worst case scenario and our options are exhausted, throw error.
-    throw new OutputParserError("Not a valid json", {
-      cause: e as Error,
-      output: text,
-    });
+    throw new OutputParserError("Not a json markdown", { output: text });
   }
 }