From 98d4cbdf958d9407ccc6e373c457b9733959c40e Mon Sep 17 00:00:00 2001
From: Alex Yang <himself65@outlook.com>
Date: Mon, 18 Mar 2024 21:00:46 -0500
Subject: [PATCH] fix: support import subdirectory (#655)

---
 .changeset/quick-fans-battle.md               |   5 +
 examples/readers/src/assemblyai.ts            |   4 +-
 examples/readers/src/csv.ts                   |   2 +-
 .../src/custom-simple-directory-reader.ts     |   4 +-
 examples/readers/src/docx.ts                  |   4 +-
 examples/readers/src/html.ts                  |   4 +-
 examples/readers/src/llamaparse.ts            |   3 +-
 examples/readers/src/markdown.ts              |   4 +-
 examples/readers/src/notion.ts                |   4 +-
 examples/readers/src/pdf.ts                   |   4 +-
 examples/readers/src/pdf_fw.ts                |   6 +-
 examples/readers/src/pdf_fw_openai.ts         |   6 +-
 .../readers/src/simple-directory-reader.ts    |   2 +-
 packages/core/package.json                    | 180 ++++++++++++++++++
 14 files changed, 211 insertions(+), 21 deletions(-)
 create mode 100644 .changeset/quick-fans-battle.md

diff --git a/.changeset/quick-fans-battle.md b/.changeset/quick-fans-battle.md
new file mode 100644
index 000000000..82b5c9ec2
--- /dev/null
+++ b/.changeset/quick-fans-battle.md
@@ -0,0 +1,5 @@
+---
+"llamaindex": patch
+---
+
+fix: support import subdirectory
diff --git a/examples/readers/src/assemblyai.ts b/examples/readers/src/assemblyai.ts
index 11ae87405..1c0a38bc9 100644
--- a/examples/readers/src/assemblyai.ts
+++ b/examples/readers/src/assemblyai.ts
@@ -1,6 +1,6 @@
 import { program } from "commander";
-import { TranscribeParams, VectorStoreIndex } from "llamaindex";
-import { AudioTranscriptReader } from "llamaindex/readers/AssemblyAIReader";
+import { VectorStoreIndex, type TranscribeParams } from "llamaindex";
+import { AudioTranscriptReader } from "llamaindex/readers";
 import { stdin as input, stdout as output } from "node:process";
 import { createInterface } from "node:readline/promises";
 
diff --git a/examples/readers/src/csv.ts b/examples/readers/src/csv.ts
index 812401295..feac76178 100644
--- a/examples/readers/src/csv.ts
+++ b/examples/readers/src/csv.ts
@@ -5,7 +5,7 @@ import {
   serviceContextFromDefaults,
   VectorStoreIndex,
 } from "llamaindex";
-import { PapaCSVReader } from "llamaindex/readers/CSVReader";
+import { PapaCSVReader } from "llamaindex/readers";
 
 async function main() {
   // Load CSV
diff --git a/examples/readers/src/custom-simple-directory-reader.ts b/examples/readers/src/custom-simple-directory-reader.ts
index ff5bb726a..db723ae20 100644
--- a/examples/readers/src/custom-simple-directory-reader.ts
+++ b/examples/readers/src/custom-simple-directory-reader.ts
@@ -2,8 +2,8 @@ import type { BaseReader, Document, Metadata } from "llamaindex";
 import {
   FILE_EXT_TO_READER,
   SimpleDirectoryReader,
-} from "llamaindex/readers/SimpleDirectoryReader";
-import { TextFileReader } from "llamaindex/readers/TextFileReader";
+  TextFileReader,
+} from "llamaindex/readers";
 
 class ZipReader implements BaseReader {
   loadData(...args: any[]): Promise<Document<Metadata>[]> {
diff --git a/examples/readers/src/docx.ts b/examples/readers/src/docx.ts
index fee35b099..b68bae8ba 100644
--- a/examples/readers/src/docx.ts
+++ b/examples/readers/src/docx.ts
@@ -1,5 +1,5 @@
-import { VectorStoreIndex } from "llamaindex";
-import { DocxReader } from "llamaindex/readers/DocxReader";
+import { VectorStoreIndex } from "llamaindex/indices";
+import { DocxReader } from "llamaindex/readers";
 
 const FILE_PATH = "../data/stars.docx";
 const SAMPLE_QUERY = "Information about Zodiac";
diff --git a/examples/readers/src/html.ts b/examples/readers/src/html.ts
index 5bb555453..581b761c0 100644
--- a/examples/readers/src/html.ts
+++ b/examples/readers/src/html.ts
@@ -1,5 +1,5 @@
-import { VectorStoreIndex } from "llamaindex";
-import { HTMLReader } from "llamaindex/readers/HTMLReader";
+import { VectorStoreIndex } from "llamaindex/indices";
+import { HTMLReader } from "llamaindex/readers";
 
 async function main() {
   // Load page
diff --git a/examples/readers/src/llamaparse.ts b/examples/readers/src/llamaparse.ts
index 3a9e6b287..731c7b876 100644
--- a/examples/readers/src/llamaparse.ts
+++ b/examples/readers/src/llamaparse.ts
@@ -1,4 +1,5 @@
-import { LlamaParseReader, VectorStoreIndex } from "llamaindex";
+import { VectorStoreIndex } from "llamaindex/indices";
+import { LlamaParseReader } from "llamaindex/readers";
 
 async function main() {
   // Load PDF using LlamaParse
diff --git a/examples/readers/src/markdown.ts b/examples/readers/src/markdown.ts
index e9fb52e46..bc75e2617 100644
--- a/examples/readers/src/markdown.ts
+++ b/examples/readers/src/markdown.ts
@@ -1,5 +1,5 @@
-import { VectorStoreIndex } from "llamaindex";
-import { MarkdownReader } from "llamaindex/readers/MarkdownReader";
+import { VectorStoreIndex } from "llamaindex/indices";
+import { MarkdownReader } from "llamaindex/readers";
 
 const FILE_PATH = "../data/planets.md";
 const SAMPLE_QUERY = "List all planets";
diff --git a/examples/readers/src/notion.ts b/examples/readers/src/notion.ts
index d6450af4b..a2b83df2d 100644
--- a/examples/readers/src/notion.ts
+++ b/examples/readers/src/notion.ts
@@ -1,7 +1,7 @@
 import { Client } from "@notionhq/client";
 import { program } from "commander";
-import { VectorStoreIndex } from "llamaindex";
-import { NotionReader } from "llamaindex/readers/NotionReader";
+import { VectorStoreIndex } from "llamaindex/indices";
+import { NotionReader } from "llamaindex/readers";
 import { stdin as input, stdout as output } from "node:process";
 import { createInterface } from "node:readline/promises";
 
diff --git a/examples/readers/src/pdf.ts b/examples/readers/src/pdf.ts
index bf37669cb..c7bc3ed36 100644
--- a/examples/readers/src/pdf.ts
+++ b/examples/readers/src/pdf.ts
@@ -1,5 +1,5 @@
-import { VectorStoreIndex } from "llamaindex";
-import { PDFReader } from "llamaindex/readers/PDFReader";
+import { VectorStoreIndex } from "llamaindex/indices";
+import { PDFReader } from "llamaindex/readers";
 
 async function main() {
   // Load PDF
diff --git a/examples/readers/src/pdf_fw.ts b/examples/readers/src/pdf_fw.ts
index d4a47e724..9ddd6030f 100644
--- a/examples/readers/src/pdf_fw.ts
+++ b/examples/readers/src/pdf_fw.ts
@@ -1,5 +1,7 @@
-import { FireworksEmbedding, FireworksLLM, VectorStoreIndex } from "llamaindex";
-import { PDFReader } from "llamaindex/readers/PDFReader";
+import { FireworksEmbedding } from "llamaindex/embeddings";
+import { VectorStoreIndex } from "llamaindex/indices";
+import { FireworksLLM } from "llamaindex/llm";
+import { PDFReader } from "llamaindex/readers";
 
 import { serviceContextFromDefaults } from "llamaindex";
 
diff --git a/examples/readers/src/pdf_fw_openai.ts b/examples/readers/src/pdf_fw_openai.ts
index 2910deb25..0ab30f60f 100644
--- a/examples/readers/src/pdf_fw_openai.ts
+++ b/examples/readers/src/pdf_fw_openai.ts
@@ -1,5 +1,7 @@
-import { OpenAI, OpenAIEmbedding, VectorStoreIndex } from "llamaindex";
-import { PDFReader } from "llamaindex/readers/PDFReader";
+import { OpenAIEmbedding } from "llamaindex/embeddings";
+import { VectorStoreIndex } from "llamaindex/indices";
+import { OpenAI } from "llamaindex/llm";
+import { PDFReader } from "llamaindex/readers";
 
 import { serviceContextFromDefaults } from "llamaindex";
 
diff --git a/examples/readers/src/simple-directory-reader.ts b/examples/readers/src/simple-directory-reader.ts
index 5d25c4cc8..a9520ffb6 100644
--- a/examples/readers/src/simple-directory-reader.ts
+++ b/examples/readers/src/simple-directory-reader.ts
@@ -1,4 +1,4 @@
-import { SimpleDirectoryReader } from "llamaindex/readers/SimpleDirectoryReader";
+import { SimpleDirectoryReader } from "llamaindex/readers";
 // or
 // import { SimpleDirectoryReader } from 'llamaindex'
 
diff --git a/packages/core/package.json b/packages/core/package.json
index f2253fa1e..a41821927 100644
--- a/packages/core/package.json
+++ b/packages/core/package.json
@@ -67,6 +67,186 @@
         "default": "./dist/cjs/index.js"
       }
     },
+    "./agent": {
+      "import": {
+        "types": "./dist/type/agent/index.d.ts",
+        "default": "./dist/agent/index.js"
+      },
+      "require": {
+        "types": "./dist/type/agent/index.d.ts",
+        "default": "./dist/cjs/agent/index.js"
+      }
+    },
+    "./cloud": {
+      "import": {
+        "types": "./dist/type/cloud/index.d.ts",
+        "default": "./dist/cloud/index.js"
+      },
+      "require": {
+        "types": "./dist/type/cloud/index.d.ts",
+        "default": "./dist/cjs/cloud/index.js"
+      }
+    },
+    "./embeddings": {
+      "import": {
+        "types": "./dist/type/embeddings/index.d.ts",
+        "default": "./dist/embeddings/index.js"
+      },
+      "require": {
+        "types": "./dist/type/embeddings/index.d.ts",
+        "default": "./dist/cjs/embeddings/index.js"
+      }
+    },
+    "./engines": {
+      "import": {
+        "types": "./dist/type/engines/index.d.ts",
+        "default": "./dist/engines/index.js"
+      },
+      "require": {
+        "types": "./dist/type/engines/index.d.ts",
+        "default": "./dist/cjs/engines/index.js"
+      }
+    },
+    "./evaluation": {
+      "import": {
+        "types": "./dist/type/evaluation/index.d.ts",
+        "default": "./dist/evaluation/index.js"
+      },
+      "require": {
+        "types": "./dist/type/evaluation/index.d.ts",
+        "default": "./dist/cjs/evaluation/index.js"
+      }
+    },
+    "./extractors": {
+      "import": {
+        "types": "./dist/type/extractors/index.d.ts",
+        "default": "./dist/extractors/index.js"
+      },
+      "require": {
+        "types": "./dist/type/extractors/index.d.ts",
+        "default": "./dist/cjs/extractors/index.js"
+      }
+    },
+    "./indices": {
+      "import": {
+        "types": "./dist/type/indices/index.d.ts",
+        "default": "./dist/indices/index.js"
+      },
+      "require": {
+        "types": "./dist/type/indices/index.d.ts",
+        "default": "./dist/cjs/indices/index.js"
+      }
+    },
+    "./ingestion": {
+      "import": {
+        "types": "./dist/type/ingestion/index.d.ts",
+        "default": "./dist/ingestion/index.js"
+      },
+      "require": {
+        "types": "./dist/type/ingestion/index.d.ts",
+        "default": "./dist/cjs/ingestion/index.js"
+      }
+    },
+    "./llm": {
+      "import": {
+        "types": "./dist/type/llm/index.d.ts",
+        "default": "./dist/llm/index.js"
+      },
+      "require": {
+        "types": "./dist/type/llm/index.d.ts",
+        "default": "./dist/cjs/llm/index.js"
+      }
+    },
+    "./nodeParsers": {
+      "import": {
+        "types": "./dist/type/nodeParsers/index.d.ts",
+        "default": "./dist/nodeParsers/index.js"
+      },
+      "require": {
+        "types": "./dist/type/nodeParsers/index.d.ts",
+        "default": "./dist/cjs/nodeParsers/index.js"
+      }
+    },
+    "./objects": {
+      "import": {
+        "types": "./dist/type/objects/index.d.ts",
+        "default": "./dist/objects/index.js"
+      },
+      "require": {
+        "types": "./dist/type/objects/index.d.ts",
+        "default": "./dist/cjs/objects/index.js"
+      }
+    },
+    "./postprocessors": {
+      "import": {
+        "types": "./dist/type/postprocessors/index.d.ts",
+        "default": "./dist/postprocessors/index.js"
+      },
+      "require": {
+        "types": "./dist/type/postprocessors/index.d.ts",
+        "default": "./dist/cjs/postprocessors/index.js"
+      }
+    },
+    "./prompts": {
+      "import": {
+        "types": "./dist/type/prompts/index.d.ts",
+        "default": "./dist/prompts/index.js"
+      },
+      "require": {
+        "types": "./dist/type/prompts/index.d.ts",
+        "default": "./dist/cjs/prompts/index.js"
+      }
+    },
+    "./readers": {
+      "import": {
+        "types": "./dist/type/readers/index.d.ts",
+        "default": "./dist/readers/index.js"
+      },
+      "require": {
+        "types": "./dist/type/readers/index.d.ts",
+        "default": "./dist/cjs/readers/index.js"
+      }
+    },
+    "./selectors": {
+      "import": {
+        "types": "./dist/type/selectors/index.d.ts",
+        "default": "./dist/selectors/index.js"
+      },
+      "require": {
+        "types": "./dist/type/selectors/index.d.ts",
+        "default": "./dist/cjs/selectors/index.js"
+      }
+    },
+    "./storage": {
+      "import": {
+        "types": "./dist/type/storage/index.d.ts",
+        "default": "./dist/storage/index.js"
+      },
+      "require": {
+        "types": "./dist/type/storage/index.d.ts",
+        "default": "./dist/cjs/storage/index.js"
+      }
+    },
+    "./synthesizers": {
+      "import": {
+        "types": "./dist/type/synthesizers/index.d.ts",
+        "default": "./dist/synthesizers/index.js"
+      },
+      "require": {
+        "types": "./dist/type/synthesizers/index.d.ts",
+        "default": "./dist/cjs/synthesizers/index.js"
+      }
+    },
+    "./tools": {
+      "import": {
+        "types": "./dist/type/tools/index.d.ts",
+        "default": "./dist/tools/index.js"
+      },
+      "require": {
+        "types": "./dist/type/tools/index.d.ts",
+        "default": "./dist/cjs/tools/index.js"
+      }
+    },
     "./*": {
       "import": {
         "types": "./dist/type/*.d.ts",
-- 
GitLab