Compare commits

...

5 Commits

Author SHA1 Message Date
Marcus Schiesser 95a578d184 chore: remove cloud package 2025-07-31 12:34:16 +08:00
github-actions[bot] 12892f6dd9 Release 0.11.25 (#2144)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
2025-07-31 12:21:22 +08:00
Marcus Schiesser d138d87663 chore: deprecate cloud packages (#2143) 2025-07-31 12:21:22 +08:00
github-actions[bot] e524b7b08f Release 0.11.24 (#2141)
Co-authored-by: github-actions[bot] <41898282+github-actions[bot]@users.noreply.github.com>
Co-authored-by: marcusschiesser <17126+marcusschiesser@users.noreply.github.com>
2025-07-31 12:20:28 +08:00
Clelia (Astra) Bertelli bbecff27f9 chore: deprecate @llamaindex/cloud in favor of llama-cloud-services 2025-07-30 12:26:57 +02:00
154 changed files with 790 additions and 39312 deletions
-5
View File
@@ -1,5 +0,0 @@
---
"@llamaindex/cloud": patch
---
Adding support for citations to beta agent data schema
-5
View File
@@ -1,5 +0,0 @@
---
"@llamaindex/core": patch
---
Use logger interface instead of directly hardcoding console.log
+23
View File
@@ -1,5 +1,28 @@
# @llamaindex/doc
## 0.2.48
### Patch Changes
- Updated dependencies [049471b]
- Updated dependencies [049471b]
- @llamaindex/cloud@4.1.0
- llamaindex@0.11.25
## 0.2.47
### Patch Changes
- Updated dependencies [c3bf3c7]
- Updated dependencies [f9f1de9]
- @llamaindex/cloud@4.0.28
- @llamaindex/core@0.6.19
- llamaindex@0.11.24
- @llamaindex/node-parser@2.0.19
- @llamaindex/openai@0.4.14
- @llamaindex/readers@3.1.18
- @llamaindex/workflow@1.1.20
## 0.2.46
### Patch Changes
+1 -2
View File
@@ -1,6 +1,6 @@
{
"name": "@llamaindex/doc",
"version": "0.2.46",
"version": "0.2.48",
"private": true,
"scripts": {
"postinstall": "fumadocs-mdx",
@@ -16,7 +16,6 @@
"@huggingface/transformers": "^3.5.0",
"@icons-pack/react-simple-icons": "^10.1.0",
"@llamaindex/chat-ui-docs": "^0.0.5",
"@llamaindex/cloud": "workspace:*",
"@llamaindex/core": "workspace:*",
"@llamaindex/node-parser": "workspace:*",
"@llamaindex/openai": "workspace:*",
@@ -1,5 +1,18 @@
# @llamaindex/cloudflare-worker-agent-test
## 0.0.186
### Patch Changes
- Updated dependencies [049471b]
- llamaindex@0.11.25
## 0.0.185
### Patch Changes
- llamaindex@0.11.24
## 0.0.184
### Patch Changes
@@ -1,6 +1,6 @@
{
"name": "@llamaindex/cloudflare-worker-agent-test",
"version": "0.0.184",
"version": "0.0.186",
"type": "module",
"private": true,
"scripts": {
@@ -1,5 +1,19 @@
# @llamaindex/llama-parse-browser-test
## 0.0.84
### Patch Changes
- Updated dependencies [049471b]
- @llamaindex/cloud@4.1.0
## 0.0.83
### Patch Changes
- Updated dependencies [c3bf3c7]
- @llamaindex/cloud@4.0.28
## 0.0.82
### Patch Changes
@@ -1,7 +1,7 @@
{
"name": "@llamaindex/llama-parse-browser-test",
"private": true,
"version": "0.0.82",
"version": "0.0.84",
"type": "module",
"scripts": {
"dev": "vite",
@@ -14,6 +14,6 @@
"vite-plugin-wasm": "^3.4.1"
},
"dependencies": {
"@llamaindex/cloud": "workspace:*"
"llama-cloud-services": "^0.1.0"
}
}
+13
View File
@@ -1,5 +1,18 @@
# @llamaindex/next-agent-test
## 0.1.186
### Patch Changes
- Updated dependencies [049471b]
- llamaindex@0.11.25
## 0.1.185
### Patch Changes
- llamaindex@0.11.24
## 0.1.184
### Patch Changes
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@llamaindex/next-agent-test",
"version": "0.1.184",
"version": "0.1.186",
"private": true,
"scripts": {
"dev": "next dev",
@@ -1,5 +1,18 @@
# test-edge-runtime
## 0.1.185
### Patch Changes
- Updated dependencies [049471b]
- llamaindex@0.11.25
## 0.1.184
### Patch Changes
- llamaindex@0.11.24
## 0.1.183
### Patch Changes
@@ -1,6 +1,6 @@
{
"name": "@llamaindex/nextjs-edge-runtime-test",
"version": "0.1.183",
"version": "0.1.185",
"private": true,
"scripts": {
"dev": "next dev",
@@ -1,5 +1,20 @@
# @llamaindex/next-node-runtime
## 0.1.55
### Patch Changes
- Updated dependencies [049471b]
- llamaindex@0.11.25
## 0.1.54
### Patch Changes
- llamaindex@0.11.24
- @llamaindex/huggingface@0.1.24
- @llamaindex/readers@3.1.18
## 0.1.53
### Patch Changes
@@ -1,6 +1,6 @@
{
"name": "@llamaindex/next-node-runtime-test",
"version": "0.1.53",
"version": "0.1.55",
"private": true,
"scripts": {
"dev": "next dev",
@@ -1,5 +1,18 @@
# vite-import-llamaindex
## 0.0.52
### Patch Changes
- Updated dependencies [049471b]
- llamaindex@0.11.25
## 0.0.51
### Patch Changes
- llamaindex@0.11.24
## 0.0.50
### Patch Changes
@@ -1,7 +1,7 @@
{
"name": "vite-import-llamaindex",
"private": true,
"version": "0.0.50",
"version": "0.0.52",
"type": "module",
"scripts": {
"build": "vite build",
@@ -1,5 +1,18 @@
# @llamaindex/waku-query-engine-test
## 0.0.186
### Patch Changes
- Updated dependencies [049471b]
- llamaindex@0.11.25
## 0.0.185
### Patch Changes
- llamaindex@0.11.24
## 0.0.184
### Patch Changes
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@llamaindex/waku-query-engine-test",
"version": "0.0.184",
"version": "0.0.186",
"type": "module",
"private": true,
"scripts": {
+53
View File
@@ -1,5 +1,58 @@
# examples
## 0.3.35
### Patch Changes
- Updated dependencies [c3bf3c7]
- Updated dependencies [f9f1de9]
- @llamaindex/cloud@4.0.28
- @llamaindex/core@0.6.19
- llamaindex@0.11.24
- @llamaindex/node-parser@2.0.19
- @llamaindex/anthropic@0.3.21
- @llamaindex/assemblyai@0.1.18
- @llamaindex/clip@0.0.70
- @llamaindex/cohere@0.0.33
- @llamaindex/deepinfra@0.0.70
- @llamaindex/discord@0.1.18
- @llamaindex/google@0.3.18
- @llamaindex/huggingface@0.1.24
- @llamaindex/jinaai@0.0.30
- @llamaindex/mistral@0.1.19
- @llamaindex/mixedbread@0.0.33
- @llamaindex/notion@0.1.18
- @llamaindex/ollama@0.1.19
- @llamaindex/openai@0.4.14
- @llamaindex/perplexity@0.0.27
- @llamaindex/portkey-ai@0.0.61
- @llamaindex/replicate@0.0.61
- @llamaindex/bm25-retriever@0.0.8
- @llamaindex/astra@0.0.33
- @llamaindex/azure@0.1.31
- @llamaindex/chroma@0.0.33
- @llamaindex/elastic-search@0.1.19
- @llamaindex/firestore@1.0.26
- @llamaindex/milvus@0.1.28
- @llamaindex/mongodb@0.0.34
- @llamaindex/pinecone@0.1.19
- @llamaindex/postgres@0.0.62
- @llamaindex/qdrant@0.1.29
- @llamaindex/supabase@0.1.20
- @llamaindex/upstash@0.0.33
- @llamaindex/weaviate@0.0.34
- @llamaindex/vercel@0.1.19
- @llamaindex/voyage-ai@1.0.25
- @llamaindex/readers@3.1.18
- @llamaindex/tools@0.1.9
- @llamaindex/workflow@1.1.20
- @llamaindex/deepseek@0.0.31
- @llamaindex/fireworks@0.0.30
- @llamaindex/groq@0.0.86
- @llamaindex/together@0.0.30
- @llamaindex/vllm@0.0.56
- @llamaindex/xai@0.0.17
## 0.3.34
### Patch Changes
+47 -47
View File
@@ -1,6 +1,6 @@
{
"name": "@llamaindex/examples",
"version": "0.3.34",
"version": "0.3.35",
"private": true,
"scripts": {
"lint": "eslint .",
@@ -11,52 +11,52 @@
"@azure/cosmos": "^4.1.1",
"@azure/identity": "^4.4.1",
"@azure/search-documents": "^12.1.0",
"@llamaindex/anthropic": "^0.3.20",
"@llamaindex/assemblyai": "^0.1.17",
"@llamaindex/astra": "^0.0.32",
"@llamaindex/azure": "^0.1.30",
"@llamaindex/bm25-retriever": "^0.0.7",
"@llamaindex/chroma": "^0.0.32",
"@llamaindex/clip": "^0.0.69",
"@llamaindex/cloud": "^4.0.27",
"@llamaindex/cohere": "^0.0.32",
"@llamaindex/core": "^0.6.18",
"@llamaindex/deepinfra": "^0.0.69",
"@llamaindex/deepseek": "^0.0.30",
"@llamaindex/discord": "^0.1.17",
"@llamaindex/elastic-search": "^0.1.18",
"@llamaindex/anthropic": "^0.3.21",
"@llamaindex/assemblyai": "^0.1.18",
"@llamaindex/astra": "^0.0.33",
"@llamaindex/azure": "^0.1.31",
"@llamaindex/bm25-retriever": "^0.0.8",
"@llamaindex/chroma": "^0.0.33",
"@llamaindex/clip": "^0.0.70",
"llama-cloud-services": "^0.1.0",
"@llamaindex/cohere": "^0.0.33",
"@llamaindex/core": "^0.6.19",
"@llamaindex/deepinfra": "^0.0.70",
"@llamaindex/deepseek": "^0.0.31",
"@llamaindex/discord": "^0.1.18",
"@llamaindex/elastic-search": "^0.1.19",
"@llamaindex/env": "^0.1.30",
"@llamaindex/firestore": "^1.0.25",
"@llamaindex/fireworks": "^0.0.29",
"@llamaindex/google": "^0.3.17",
"@llamaindex/groq": "^0.0.85",
"@llamaindex/huggingface": "^0.1.23",
"@llamaindex/jinaai": "^0.0.29",
"@llamaindex/milvus": "^0.1.27",
"@llamaindex/mistral": "^0.1.18",
"@llamaindex/mixedbread": "^0.0.32",
"@llamaindex/mongodb": "^0.0.33",
"@llamaindex/node-parser": "^2.0.18",
"@llamaindex/notion": "^0.1.17",
"@llamaindex/ollama": "^0.1.18",
"@llamaindex/openai": "^0.4.13",
"@llamaindex/perplexity": "^0.0.26",
"@llamaindex/pinecone": "^0.1.18",
"@llamaindex/portkey-ai": "^0.0.60",
"@llamaindex/postgres": "^0.0.61",
"@llamaindex/qdrant": "^0.1.28",
"@llamaindex/readers": "^3.1.17",
"@llamaindex/replicate": "^0.0.60",
"@llamaindex/supabase": "^0.1.19",
"@llamaindex/together": "^0.0.29",
"@llamaindex/tools": "^0.1.8",
"@llamaindex/upstash": "^0.0.32",
"@llamaindex/vercel": "^0.1.18",
"@llamaindex/vllm": "^0.0.55",
"@llamaindex/voyage-ai": "^1.0.24",
"@llamaindex/weaviate": "^0.0.33",
"@llamaindex/workflow": "^1.1.19",
"@llamaindex/xai": "^0.0.16",
"@llamaindex/firestore": "^1.0.26",
"@llamaindex/fireworks": "^0.0.30",
"@llamaindex/google": "^0.3.18",
"@llamaindex/groq": "^0.0.86",
"@llamaindex/huggingface": "^0.1.24",
"@llamaindex/jinaai": "^0.0.30",
"@llamaindex/milvus": "^0.1.28",
"@llamaindex/mistral": "^0.1.19",
"@llamaindex/mixedbread": "^0.0.33",
"@llamaindex/mongodb": "^0.0.34",
"@llamaindex/node-parser": "^2.0.19",
"@llamaindex/notion": "^0.1.18",
"@llamaindex/ollama": "^0.1.19",
"@llamaindex/openai": "^0.4.14",
"@llamaindex/perplexity": "^0.0.27",
"@llamaindex/pinecone": "^0.1.19",
"@llamaindex/portkey-ai": "^0.0.61",
"@llamaindex/postgres": "^0.0.62",
"@llamaindex/qdrant": "^0.1.29",
"@llamaindex/readers": "^3.1.18",
"@llamaindex/replicate": "^0.0.61",
"@llamaindex/supabase": "^0.1.20",
"@llamaindex/together": "^0.0.30",
"@llamaindex/tools": "^0.1.9",
"@llamaindex/upstash": "^0.0.33",
"@llamaindex/vercel": "^0.1.19",
"@llamaindex/vllm": "^0.0.56",
"@llamaindex/voyage-ai": "^1.0.25",
"@llamaindex/weaviate": "^0.0.34",
"@llamaindex/workflow": "^1.1.20",
"@llamaindex/xai": "^0.0.17",
"@notionhq/client": "^4.0.0",
"@pinecone-database/pinecone": "^4.0.0",
"@vercel/postgres": "^0.10.0",
@@ -65,7 +65,7 @@
"commander": "^12.1.0",
"dotenv": "^17.2.0",
"js-tiktoken": "^1.0.14",
"llamaindex": "^0.11.23",
"llamaindex": "^0.11.24",
"mongodb": "6.7.0",
"postgres": "^3.4.4",
"wikipedia": "^2.1.2",
+1 -4
View File
@@ -9,10 +9,7 @@
"start:html": "node --import tsx ./src/html.ts",
"start:markdown": "node --import tsx ./src/markdown.ts",
"start:pdf": "node --import tsx ./src/pdf.ts",
"start:llamaparse": "node --import tsx ./src/llamaparse.ts",
"start:notion": "node --import tsx ./src/notion.ts",
"start:llamaparse-dir": "node --import tsx ./src/simple-directory-reader-with-llamaparse.ts",
"start:llamaparse-json": "node --import tsx ./src/llamaparse-json.ts",
"start:discord": "node --import tsx ./src/discord.ts",
"start:json": "node --import tsx ./src/json.ts",
"start:obsidian": "node --import tsx ./src/obsidian.ts",
@@ -20,7 +17,7 @@
"start:excel": "node --import tsx ./src/excel.ts"
},
"dependencies": {
"@llamaindex/cloud": "workspace:* || ^2.0.24",
"llama-cloud-services": "^0.1.0",
"@llamaindex/excel": "workspace:*",
"@llamaindex/readers": "workspace:* || ^1.0.25",
"@notionhq/client": "^4.0.0",
+13
View File
@@ -1,5 +1,18 @@
# @llamaindex/autotool
## 8.0.25
### Patch Changes
- Updated dependencies [049471b]
- llamaindex@0.11.25
## 8.0.24
### Patch Changes
- llamaindex@0.11.24
## 8.0.23
### Patch Changes
@@ -1,5 +1,20 @@
# @llamaindex/autotool-01-node-example
## 0.0.133
### Patch Changes
- Updated dependencies [049471b]
- llamaindex@0.11.25
- @llamaindex/autotool@8.0.25
## 0.0.132
### Patch Changes
- llamaindex@0.11.24
- @llamaindex/autotool@8.0.24
## 0.0.131
### Patch Changes
@@ -13,5 +13,5 @@
"scripts": {
"start": "node --import tsx --import @llamaindex/autotool/node ./src/index.ts"
},
"version": "0.0.131"
"version": "0.0.133"
}
+1 -1
View File
@@ -6,7 +6,7 @@
"url": "git+https://github.com/run-llama/LlamaIndexTS.git",
"directory": "packages/autotool"
},
"version": "8.0.23",
"version": "8.0.25",
"description": "auto transpile your JS function to LLM Agent compatible",
"files": [
"dist",
-689
View File
@@ -1,689 +0,0 @@
# @llamaindex/cloud
## 4.0.27
### Patch Changes
- Updated dependencies [f29799e]
- Updated dependencies [7224c06]
- @llamaindex/core@0.6.18
## 4.0.26
### Patch Changes
- Updated dependencies [38da40b]
- @llamaindex/core@0.6.17
## 4.0.25
### Patch Changes
- 2967d57: Default to \_public agent url id
- Updated dependencies [a8ec08c]
- @llamaindex/core@0.6.16
## 4.0.24
### Patch Changes
- Updated dependencies [7ad3411]
- Updated dependencies [5da5b3c]
- @llamaindex/core@0.6.15
## 4.0.23
### Patch Changes
- a1b1598: fix: add generic types into agent data responses
## 4.0.22
### Patch Changes
- d2be868: Bug fixes for new beta agent-data cloud API
## 4.0.21
### Patch Changes
- 579ca0c: chore: bump sdk version
## 4.0.20
### Patch Changes
- 48b0d88: fix: exports in `api` submodule
- f185772: fix(cloud): missing file
## 4.0.19
### Patch Changes
- 5a0ed1f: feat: init agent api on cloud sdk
- 5a0ed1f: feat: init agent api on cloud sdk
- Updated dependencies [8eeac33]
- @llamaindex/core@0.6.14
## 4.0.18
### Patch Changes
- 47a7555: chore: bump sdk version
## 4.0.17
### Patch Changes
- Updated dependencies [d578889]
- Updated dependencies [0fcc92f]
- Updated dependencies [515a8b9]
- @llamaindex/core@0.6.13
## 4.0.16
### Patch Changes
- Updated dependencies [7039e1a]
- Updated dependencies [7039e1a]
- @llamaindex/core@0.6.12
## 4.0.15
### Patch Changes
- Updated dependencies [a89e187]
- Updated dependencies [62699b7]
- Updated dependencies [c5b2691]
- Updated dependencies [d8ac8d3]
- @llamaindex/core@0.6.11
## 4.0.14
### Patch Changes
- Updated dependencies [1b5af14]
- @llamaindex/core@0.6.10
## 4.0.13
### Patch Changes
- Updated dependencies [71598f8]
- @llamaindex/core@0.6.9
## 4.0.12
### Patch Changes
- Updated dependencies [c927457]
- @llamaindex/core@0.6.8
## 4.0.11
### Patch Changes
- 76ff23d: Fix pRetry not working with CommonJS
## 4.0.10
### Patch Changes
- Updated dependencies [59601dd]
- @llamaindex/core@0.6.7
## 4.0.9
### Patch Changes
- 3703f90: feat(parse): add upload API
## 4.0.8
### Patch Changes
- Updated dependencies [680b529]
- Updated dependencies [361a685]
- @llamaindex/core@0.6.6
## 4.0.7
### Patch Changes
- 40f5f41: Improve the loadJson function in LlamaParseReader to align with loadData by allowing URL inputs. Ensures s3://, http://, and https:// paths are not treated as local file paths.
- Updated dependencies [d671ed6]
- @llamaindex/core@0.6.5
## 4.0.6
### Patch Changes
- Updated dependencies [9b2e25a]
- @llamaindex/core@0.6.4
- @llamaindex/env@0.1.30
## 4.0.5
### Patch Changes
- 2225ffd: feat: bump llama cloud sdk
## 4.0.4
### Patch Changes
- Updated dependencies [3ee8c83]
- @llamaindex/core@0.6.3
## 4.0.3
### Patch Changes
- 41191d0: fix(parse): file input
## 4.0.2
### Patch Changes
- Updated dependencies [9c63f3f]
- @llamaindex/core@0.6.2
## 4.0.1
### Patch Changes
- Updated dependencies [1b6f368]
- Updated dependencies [eaf326e]
- @llamaindex/core@0.6.1
## 4.0.0
### Patch Changes
- bf56fc0: chore: bump sdk openapi.json
- 5189b44: fix: add retry handling logic to parser reader and fix lint issues
- Updated dependencies [21bebfc]
- Updated dependencies [93bc0ff]
- Updated dependencies [91a18e7]
- Updated dependencies [5189b44]
- @llamaindex/core@0.6.0
## 3.0.9
### Patch Changes
- Updated dependencies [40ee761]
- @llamaindex/core@0.5.8
## 3.0.8
### Patch Changes
- Updated dependencies [4bac71d]
- @llamaindex/core@0.5.7
## 3.0.7
### Patch Changes
- Updated dependencies [beb922b]
- @llamaindex/env@0.1.29
- @llamaindex/core@0.5.6
## 3.0.6
### Patch Changes
- Updated dependencies [5668970]
- @llamaindex/core@0.5.5
## 3.0.5
### Patch Changes
- Updated dependencies [ad3c7f1]
- @llamaindex/core@0.5.4
## 3.0.4
### Patch Changes
- Updated dependencies [cb021e7]
- @llamaindex/core@0.5.3
## 3.0.3
### Patch Changes
- Updated dependencies [d952e68]
- @llamaindex/core@0.5.2
## 3.0.2
### Patch Changes
- c902fcb: chore: bump llamacloud openapi
## 3.0.1
### Patch Changes
- Updated dependencies [cc50c9c]
- @llamaindex/env@0.1.28
- @llamaindex/core@0.5.1
## 3.0.0
### Patch Changes
- Updated dependencies [6a4a737]
- Updated dependencies [d924c63]
- @llamaindex/core@0.5.0
## 2.0.24
### Patch Changes
- 1c908fd: Revert previous release (not working with CJS)
- Updated dependencies [1c908fd]
- @llamaindex/core@0.4.23
- @llamaindex/env@0.1.27
## 2.0.23
### Patch Changes
- cb608b5: fix: bundle output incorrect
- Updated dependencies [cb608b5]
- @llamaindex/core@0.4.22
- @llamaindex/env@0.1.26
## 2.0.22
### Patch Changes
- d6c270e: feat: support pass project and org id to llama parse reader
- Updated dependencies [9456616]
- Updated dependencies [1931bbc]
- @llamaindex/core@0.4.21
## 2.0.21
### Patch Changes
- 5dec9f9: chore: bump sdk deps version
- fd9c829: chore: bump llamacloud openapi
- Updated dependencies [d211b7a]
- @llamaindex/core@0.4.20
## 2.0.20
### Patch Changes
- 012495b: chore: bump llamacloud sdk
## 2.0.19
### Patch Changes
- Updated dependencies [a9b5b99]
- @llamaindex/core@0.4.19
## 2.0.18
### Patch Changes
- Updated dependencies [b504303]
- Updated dependencies [e0f6cc3]
- @llamaindex/env@0.1.25
- @llamaindex/core@0.4.18
## 2.0.17
### Patch Changes
- Updated dependencies [3d1808b]
- @llamaindex/core@0.4.17
## 2.0.16
### Patch Changes
- 8be4589: chore: bump version
- Updated dependencies [8be4589]
- @llamaindex/core@0.4.16
- @llamaindex/env@0.1.24
## 2.0.15
### Patch Changes
- Updated dependencies [d2b2722]
- @llamaindex/env@0.1.23
- @llamaindex/core@0.4.15
## 2.0.14
### Patch Changes
- Updated dependencies [969365c]
- @llamaindex/env@0.1.22
- @llamaindex/core@0.4.14
## 2.0.13
### Patch Changes
- 90d265c: chore: bump version
- Updated dependencies [90d265c]
- @llamaindex/core@0.4.13
- @llamaindex/env@0.1.21
## 2.0.12
### Patch Changes
- Updated dependencies [ef4f63d]
- @llamaindex/core@0.4.12
## 2.0.11
### Patch Changes
- Updated dependencies [6d22fa2]
- @llamaindex/core@0.4.11
## 2.0.10
### Patch Changes
- Updated dependencies [a7b0ac3]
- Updated dependencies [c69605f]
- @llamaindex/core@0.4.10
## 2.0.9
### Patch Changes
- Updated dependencies [7ae6eaa]
- @llamaindex/core@0.4.9
## 2.0.8
### Patch Changes
- Updated dependencies [f865c98]
- @llamaindex/core@0.4.8
## 2.0.7
### Patch Changes
- Updated dependencies [d89ebe0]
- Updated dependencies [fd8c882]
- @llamaindex/core@0.4.7
## 2.0.6
### Patch Changes
- Updated dependencies [4fc001c]
- @llamaindex/env@0.1.20
- @llamaindex/core@0.4.6
## 2.0.5
### Patch Changes
- Updated dependencies [ad85bd0]
- @llamaindex/core@0.4.5
- @llamaindex/env@0.1.19
## 2.0.4
### Patch Changes
- Updated dependencies [a8d3fa6]
- @llamaindex/env@0.1.18
- @llamaindex/core@0.4.4
## 2.0.3
### Patch Changes
- Updated dependencies [95a5cc6]
- @llamaindex/core@0.4.3
## 2.0.2
### Patch Changes
- Updated dependencies [14cc9eb]
- @llamaindex/env@0.1.17
- @llamaindex/core@0.4.2
## 2.0.1
### Patch Changes
- Updated dependencies [9c73f0a]
- @llamaindex/core@0.4.1
## 2.0.0
### Patch Changes
- Updated dependencies [359fd33]
- Updated dependencies [efb7e1b]
- Updated dependencies [98ba1e7]
- Updated dependencies [620c63c]
- @llamaindex/core@0.4.0
## 1.0.8
### Patch Changes
- Updated dependencies [60b185f]
- @llamaindex/core@0.3.7
## 1.0.7
### Patch Changes
- Updated dependencies [691c5bc]
- @llamaindex/core@0.3.6
## 1.0.6
### Patch Changes
- Updated dependencies [fa60fc6]
- @llamaindex/env@0.1.16
- @llamaindex/core@0.3.5
## 1.0.5
### Patch Changes
- Updated dependencies [e2a0876]
- @llamaindex/core@0.3.4
## 1.0.4
### Patch Changes
- 06f632b: fix(cloud): allow filename in llama parse
## 1.0.3
### Patch Changes
- Updated dependencies [0493f67]
- @llamaindex/core@0.3.3
## 1.0.2
### Patch Changes
- Updated dependencies [4ba2cfe]
- @llamaindex/env@0.1.15
- @llamaindex/core@0.3.2
## 1.0.1
### Patch Changes
- 4c38c1b: fix(cloud): do not detect file type in llama parse
- 24d065f: Log Parse Job Errors when verbose is enabled
- a75af83: refactor: move some llm and embedding to single package
- Updated dependencies [ae49ff4]
- Updated dependencies [a75af83]
- @llamaindex/env@0.1.14
- @llamaindex/core@0.3.1
## 1.0.0
### Patch Changes
- Updated dependencies [1364e8e]
- Updated dependencies [96fc69c]
- @llamaindex/core@0.3.0
## 0.2.14
### Patch Changes
- Updated dependencies [5f67820]
- @llamaindex/core@0.2.12
## 0.2.13
### Patch Changes
- Updated dependencies [ee697fb]
- @llamaindex/core@0.2.11
## 0.2.12
### Patch Changes
- Updated dependencies [3489e7d]
- Updated dependencies [468bda5]
- @llamaindex/core@0.2.10
## 0.2.11
### Patch Changes
- 0b20ff9: fix: package.json format
## 0.2.10
### Patch Changes
- 981811e: fix(cloud): llama parse reader save image incorrectly
## 0.2.9
### Patch Changes
- df441e2: fix: consoleLogger is missing from `@llamaindex/env`
- Updated dependencies [df441e2]
- @llamaindex/core@0.2.8
- @llamaindex/env@0.1.13
## 0.2.8
### Patch Changes
- ac41ed3: feat: bump cloud sdk version
## 0.2.7
### Patch Changes
- fb36eff: fix: backport for node.js 18
There could have one missing API in the node.js 18, so we need to backport it to make it work.
- d24d3d1: fix: print warning when llama parse reader has error
- Updated dependencies [2cd1383]
- @llamaindex/core@0.2.3
## 0.2.6
### Patch Changes
- b42adeb: fix: get job result in llama parse reader
- Updated dependencies [749b43a]
- @llamaindex/core@0.2.2
## 0.2.5
### Patch Changes
- 85c2e19: feat: `@llamaindex/cloud` package update
- Bump to latest openapi schema
- Move LlamaParse class from llamaindex, this will allow you use llamaparse in more non-node.js environment
- Updated dependencies [ac07e3c]
- Updated dependencies [70ccb4a]
- Updated dependencies [1a6137b]
- Updated dependencies [ac07e3c]
- @llamaindex/core@0.2.1
- @llamaindex/env@0.1.11
## 0.2.4
### Patch Changes
- 4810364: fix: bump version
## 0.2.3
### Patch Changes
- 0bf8d80: fix: bump version
## 0.2.2
### Patch Changes
- 58abc57: fix: align version
## 0.2.1
### Patch Changes
- 1f680d7: chore: bump llamacloud api
## 0.2.0
### Minor Changes
- 3ed6acc: feat: cloud api change
## 0.1.4
### Patch Changes
- 36ddec4: fix: typo in custom page separator parameter for LlamaParse
## 0.1.3
### Patch Changes
- 1c444d5: feat(cloud): update openapi.json
## 0.1.2
### Patch Changes
- f326ab8: chore: bump version
## 0.1.1
### Patch Changes
- 321c39d: fix: generate api as class
-9
View File
@@ -1,9 +0,0 @@
# @llamaindex/cloud
> LlamaCloud is a new generation of managed parsing, ingestion, and retrieval services, designed to bring production-grade context-augmentation to your LLM and RAG applications.
For more information, see the [API documentation](https://docs.cloud.llamaindex.ai/).
## License
MIT
-8
View File
@@ -1,8 +0,0 @@
{
"type": "module",
"main": "./dist/index.cjs",
"module": "./dist/index.js",
"types": "./dist/index.d.ts",
"exports": "./dist/index.js",
"private": true
}
-8
View File
@@ -1,8 +0,0 @@
{
"type": "module",
"main": "./dist/index.cjs",
"module": "./dist/index.js",
"types": "./dist/index.d.ts",
"exports": "./dist/index.js",
"private": true
}
-24
View File
@@ -1,24 +0,0 @@
import { defaultPlugins, defineConfig } from "@hey-api/openapi-ts";
export default defineConfig({
// you can download this file to get the latest version of the OpenAPI document
// @link https://api.cloud.llamaindex.ai/api/openapi.json
input: "./openapi.json",
output: {
path: "./src/client",
format: "prettier",
lint: "eslint",
},
plugins: [
...defaultPlugins,
"@hey-api/client-fetch",
"zod",
"@hey-api/schemas",
"@hey-api/sdk",
{
enums: "javascript",
identifierCase: "PascalCase",
name: "@hey-api/typescript",
},
],
});
File diff suppressed because it is too large Load Diff
-97
View File
@@ -1,97 +0,0 @@
{
"name": "@llamaindex/cloud",
"version": "4.0.27",
"type": "module",
"license": "MIT",
"scripts": {
"generate": "./node_modules/.bin/openapi-ts",
"build": "pnpm run generate && bunchee",
"dev": "bunchee --watch"
},
"files": [
"openapi.json",
"./api",
"./reader",
"./parse",
"./beta/agent"
],
"exports": {
"./openapi.json": "./openapi.json",
"./beta/agent": {
"require": {
"types": "./beta/agent/dist/index.d.cts",
"default": "./beta/agent/dist/index.cjs"
},
"import": {
"types": "./beta/agent/dist/index.d.ts",
"default": "./beta/agent/dist/index.js"
},
"default": "./beta/agent/dist/index.js"
},
"./api": {
"require": {
"types": "./api/dist/index.d.cts",
"default": "./api/dist/index.cjs"
},
"import": {
"types": "./api/dist/index.d.ts",
"default": "./api/dist/index.js"
},
"default": "./api/dist/index.js"
},
"./reader": {
"require": {
"types": "./reader/dist/index.d.cts",
"default": "./reader/dist/index.cjs"
},
"import": {
"types": "./reader/dist/index.d.ts",
"default": "./reader/dist/index.js"
},
"default": "./reader/dist/index.js"
},
"./parse": {
"require": {
"types": "./parse/dist/index.d.cts",
"default": "./parse/dist/index.cjs"
},
"import": {
"types": "./parse/dist/index.d.ts",
"default": "./parse/dist/index.js"
},
"default": "./parse/dist/index.js"
},
".": {
"require": {
"types": "./reader/dist/index.d.cts",
"default": "./reader/dist/index.cjs"
},
"import": {
"types": "./reader/dist/index.d.ts",
"default": "./reader/dist/index.js"
},
"default": "./reader/dist/index.js"
}
},
"repository": {
"type": "git",
"url": "git+https://github.com/run-llama/LlamaIndexTS.git",
"directory": "packages/cloud"
},
"devDependencies": {
"@hey-api/client-fetch": "^0.10.1",
"@hey-api/openapi-ts": "^0.67.5",
"@llama-flow/core": "^0.4.1",
"@llamaindex/core": "workspace:*",
"@llamaindex/env": "workspace:*"
},
"peerDependencies": {
"@llama-flow/core": "^0.4.1",
"@llamaindex/core": "workspace:*",
"@llamaindex/env": "workspace:*"
},
"dependencies": {
"p-retry": "^6.2.1",
"zod": "^3.25.76"
}
}
-8
View File
@@ -1,8 +0,0 @@
{
"type": "module",
"main": "./dist/index.cjs",
"module": "./dist/index.js",
"types": "./dist/index.d.ts",
"exports": "./dist/index.js",
"private": true
}
-8
View File
@@ -1,8 +0,0 @@
{
"type": "module",
"main": "./dist/index.cjs",
"module": "./dist/index.js",
"types": "./dist/index.d.ts",
"exports": "./dist/index.js",
"private": true
}
-11
View File
@@ -1,11 +0,0 @@
import { client } from "./client/client.gen";
client.setConfig({
baseUrl: "https://api.cloud.llamaindex.ai/",
headers: {
"X-SDK-Name": "llamaindex-ts",
},
});
export * from "./client";
export { client };
-329
View File
@@ -1,329 +0,0 @@
import { createClient, createConfig } from "@hey-api/client-fetch";
import { getEnv } from "@llamaindex/env";
import {
aggregateAgentDataApiV1BetaAgentDataAggregatePost,
createAgentDataApiV1BetaAgentDataPost,
deleteAgentDataApiV1BetaAgentDataItemIdDelete,
getAgentDataApiV1BetaAgentDataItemIdGet,
searchAgentDataApiV1BetaAgentDataSearchPost,
updateAgentDataApiV1BetaAgentDataItemIdPut,
type AgentData,
type AggregateGroup,
} from "../../client";
import type {
AggregateAgentDataOptions,
SearchAgentDataOptions,
TypedAgentData,
TypedAgentDataItems,
TypedAggregateGroup,
TypedAggregateGroupItems,
} from "./types";
/**
* Async client for agent data operations
*/
export class AgentClient<T = unknown> {
private client: ReturnType<typeof createClient>;
private baseUrl: string;
private headers: Record<string, string>;
private collection: string;
private agentUrlId: string;
constructor({
apiKey = getEnv("LLAMA_CLOUD_API_KEY"),
baseUrl = "https://api.cloud.llamaindex.ai/",
collection = "default",
agentUrlId = "_public",
}: {
apiKey?: string;
baseUrl?: string;
collection?: string;
agentUrlId?: string;
}) {
this.baseUrl = baseUrl;
this.headers = {
"X-SDK-Name": "llamaindex-ts",
...(apiKey && { Authorization: `Bearer ${apiKey}` }),
};
this.client = createClient(
createConfig({
baseUrl: this.baseUrl,
headers: this.headers,
}),
);
this.collection = collection;
this.agentUrlId = agentUrlId;
}
/**
* Create new agent data
*/
async createItem(data: T): Promise<TypedAgentData<T>> {
const response = await createAgentDataApiV1BetaAgentDataPost({
throwOnError: true,
body: {
agent_slug: this.agentUrlId,
collection: this.collection,
data: data as Record<string, unknown>,
},
client: this.client,
});
return this.transformResponse(response.data);
}
/**
* Get agent data by ID
*/
async getItem(id: string): Promise<TypedAgentData<T> | null> {
try {
const response = await getAgentDataApiV1BetaAgentDataItemIdGet({
throwOnError: true,
path: { item_id: id },
client: this.client,
});
return this.transformResponse(response.data);
} catch (error) {
if (
error instanceof Error &&
"response" in error &&
(error as { response?: { status?: number } }).response?.status === 404
) {
return null;
}
throw error;
}
}
/**
* Update agent data
*/
async updateItem(id: string, data: T): Promise<TypedAgentData<T>> {
const response = await updateAgentDataApiV1BetaAgentDataItemIdPut({
throwOnError: true,
path: { item_id: id },
body: {
data: data as Record<string, unknown>,
},
client: this.client,
});
return this.transformResponse(response.data);
}
/**
* Delete agent data
*/
async deleteItem(id: string): Promise<void> {
await deleteAgentDataApiV1BetaAgentDataItemIdDelete({
throwOnError: true,
path: { item_id: id },
client: this.client,
});
}
/**
* Search agent data
*/
async search(
options: SearchAgentDataOptions,
): Promise<TypedAgentDataItems<T>> {
const response = await searchAgentDataApiV1BetaAgentDataSearchPost({
throwOnError: true,
body: {
agent_slug: this.agentUrlId,
...(this.collection !== undefined && {
collection: this.collection,
}),
...(options.filter !== undefined && { filter: options.filter }),
...(options.orderBy !== undefined && { order_by: options.orderBy }),
...(options.pageSize !== undefined && { page_size: options.pageSize }),
...(options.offset !== undefined && { offset: options.offset }),
...(options.includeTotal !== undefined && {
include_total: options.includeTotal,
}),
},
client: this.client,
});
const result: TypedAgentDataItems<T> = {
items: response.data.items.map((item: AgentData) =>
this.transformResponse(item),
),
};
if (
response.data.total_size !== null &&
response.data.total_size !== undefined
) {
result.totalSize = response.data.total_size;
}
if (
response.data.next_page_token !== null &&
response.data.next_page_token !== undefined
) {
result.nextPageToken = response.data.next_page_token;
}
return result;
}
/**
* Aggregate agent data into groups
*/
async aggregate(
options: AggregateAgentDataOptions,
): Promise<TypedAggregateGroupItems<T>> {
const response = await aggregateAgentDataApiV1BetaAgentDataAggregatePost({
throwOnError: true,
body: {
agent_slug: this.agentUrlId,
...(this.collection !== undefined && {
collection: this.collection,
}),
...(options.filter !== undefined && { filter: options.filter }),
...(options.groupBy !== undefined && { group_by: options.groupBy }),
...(options.count !== undefined && { count: options.count }),
...(options.first !== undefined && { first: options.first }),
...(options.orderBy !== undefined && { order_by: options.orderBy }),
...(options.offset !== undefined && { offset: options.offset }),
...(options.pageSize !== undefined && { page_size: options.pageSize }),
},
client: this.client,
});
const result: TypedAggregateGroupItems<T> = {
items: response.data.items.map((item) =>
this.transformAggregateResponse(item),
),
};
if (
response.data.total_size !== null &&
response.data.total_size !== undefined
) {
result.totalSize = response.data.total_size;
}
if (
response.data.next_page_token !== null &&
response.data.next_page_token !== undefined
) {
result.nextPageToken = response.data.next_page_token;
}
return result;
}
/**
* Transform API response to typed data
*/
private transformResponse(data: AgentData): TypedAgentData<T> {
const result: TypedAgentData<T> = {
id: data.id!,
agentUrlId: data.agent_slug,
data: data.data as T,
createdAt: new Date(data.created_at!),
updatedAt: new Date(data.updated_at!),
};
if (data.collection !== undefined) {
result.collection = data.collection;
}
return result;
}
/**
* Transform API aggregate response to typed data
*/
private transformAggregateResponse(
data: AggregateGroup,
): TypedAggregateGroup<T> {
const result: TypedAggregateGroup<T> = {
groupKey: data.group_key,
};
if (data.count !== null && data.count !== undefined) {
result.count = data.count;
}
if (data.first_item !== null && data.first_item !== undefined) {
result.firstItem = data.first_item as T;
}
return result;
}
}
export interface AgentDataClientOptions<T = unknown> {
/** API key for the client */
apiKey?: string;
/** Base URL for the client */
/** Base URL of the llama cloud api */
baseUrl?: string;
/** If running in an agent runtime, optionally provide the window url to infer the agent url id */
windowUrl?: string;
/** Agent URL ID for the client, if not provided, it will be inferred from the window url, or fall back to "default" */
agentUrlId?: string;
/** Collection name for the client, defaults to "default" */
collection?: string;
}
/**
* Create a new AsyncAgentDataClient instance. Does it's best to infer an agent url id from environment.
* Pass in the window url and/or env to infer the agent url id from them.
* @param options - The options for the client
* @returns A new AgentClient instance
*/
export function createAgentDataClient<T = unknown>({
apiKey,
baseUrl,
windowUrl,
env,
agentUrlId,
collection = "default",
}: {
apiKey?: string;
baseUrl?: string;
windowUrl?: string;
env?: Record<string, string>;
agentUrlId?: string;
collection?: string;
} = {}): AgentClient<T> {
if (env && !agentUrlId) {
agentUrlId =
env.LLAMA_DEPLOY_DEPLOYMENT_NAME ||
env.NEXT_PUBLIC_LLAMA_DEPLOY_DEPLOYMENT_NAME ||
env.VITE_LLAMA_DEPLOY_DEPLOYMENT_NAME;
}
if (windowUrl && !agentUrlId) {
try {
const url = new URL(windowUrl);
const path = url.pathname;
const isLocalhost = // local agents should default to _public, otherwise a full deployment is required
url.hostname.includes("localhost") ||
url.hostname.includes("127.0.0.1");
if (path.startsWith("/deployments/") && !isLocalhost) {
// /deployments/<agent-url-id>/ui/ -> ["", "deployments", "<agent-url-id>", "ui"]
agentUrlId = path.split("/")[2];
}
} catch (error) {
console.warn(
"Failed to infer agent url id from window url, falling back to default",
error,
);
}
}
return new AgentClient({
...(apiKey && { apiKey }),
...(baseUrl && { baseUrl }),
...(agentUrlId && { agentUrlId }),
collection,
});
}
-16
View File
@@ -1,16 +0,0 @@
export { AgentClient, createAgentDataClient } from "./client";
export type {
AggregateAgentDataOptions,
ComparisonOperator,
ExtractedData,
FilterOperation,
SearchAgentDataOptions,
StatusType,
TypedAgentData,
TypedAgentDataItems,
TypedAggregateGroup,
TypedAggregateGroupItems,
} from "./types";
export { StatusType as StatusTypeEnum } from "./types";
-163
View File
@@ -1,163 +0,0 @@
import type { FilterOperation as RawFilterOperation } from "../../client/types.gen";
/**
* Status types for agent data processing
*/
export const StatusType = {
ERROR: "error",
ACCEPTED: "accepted",
REJECTED: "rejected",
PENDING_REVIEW: "pending_review",
} as const;
export type StatusType = (typeof StatusType)[keyof typeof StatusType];
export const ComparisonOperator = {
GT: "gt",
GTE: "gte",
LT: "lt",
LTE: "lte",
EQ: "eq",
INCLUDES: "includes",
} as const;
export type ComparisonOperator =
(typeof ComparisonOperator)[keyof typeof ComparisonOperator];
/**
* Filter operation for searching/filtering agent data
*/
export type FilterOperation = RawFilterOperation;
/**
* Metadata for an extracted field, including confidence and citation information
*/
export interface ExtractedFieldMetadata {
/** The confidence score for the field, combined with parsing confidence if applicable */
confidence?: number;
/** The confidence score for the field based on the extracted text only */
extracted_confidence?: number;
/** The page number that the field occurred on */
page_number?: number;
/** The original text this field's value was derived from */
matching_text?: string;
}
/**
* Dictionary mapping field names to their metadata
* Values can be ExtractedFieldMetadata objects, nested dictionaries, or arrays
*/
export type ExtractedFieldMetadataDict = Record<
string,
ExtractedFieldMetadata | Record<string, unknown> | unknown[]
>;
/**
* Base extracted data interface
*/
export interface ExtractedData<T = unknown> {
/** The original data that was extracted from the document. For tracking changes. Should not be updated. */
original_data: T;
/** The latest state of the data. Will differ if data has been updated. */
data: T;
/** The status of the extracted data. Prefer to use the StatusType values, but any string is allowed. */
status: StatusType | string;
/** The overall confidence score for the extracted data. */
overall_confidence?: number;
/** Page links, and perhaps eventually bounding boxes, for individual fields in the extracted data. */
field_metadata?: ExtractedFieldMetadataDict;
/** The ID of the file that was used to extract the data. */
file_id?: string;
/** The name of the file that was used to extract the data. */
file_name?: string;
/** The hash of the file that was used to extract the data. */
file_hash?: string;
/** Additional metadata about the extracted data, such as errors, tokens, etc. */
metadata?: Record<string, unknown>;
}
/**
* TypedAgentData interface for typed agent data
*/
export interface TypedAgentData<T = unknown> {
/** The unique ID of the agent data record. */
id: string;
/** The ID of the agent that created the data. */
agentUrlId: string;
/** The collection of the agent data. */
collection?: string;
/** The data of the agent data. Usually an ExtractedData&lt;SomeOtherType&gt; */
data: T;
/** The date and time the data was created. */
createdAt: Date;
/** The date and time the data was last updated. */
updatedAt: Date;
}
/**
* Paginated response of typed agent data items
*/
export interface TypedAgentDataItems<T = unknown> {
items: TypedAgentData<T>[];
totalSize?: number;
nextPageToken?: string;
}
/**
* Options for listing agent data
*/
export interface SearchAgentDataOptions {
/** Filter options for the list. */
filter?: Record<string, FilterOperation>;
/** Order by options for the list. */
orderBy?: string;
/** Page size for the list. */
pageSize?: number;
/** Offset for the list. */
offset?: number;
/**
* Whether to include the total number of items in the response.
* Should use only for first request to build total pagination, and not subsequent requests.
*/
includeTotal?: boolean;
}
/**
* Options for aggregating agent data
*/
export interface AggregateAgentDataOptions {
/** Filter options for the aggregation. */
filter?: Record<string, FilterOperation>;
/** Fields to group by. */
groupBy?: string[];
/** Whether to count the number of items in each group. */
count?: boolean;
/** Whether to return the first item in each group. */
first?: boolean;
/** Order by options for the aggregation. */
orderBy?: string;
/** Offset for the aggregation. */
offset?: number;
/** Page size for the aggregation. */
pageSize?: number;
}
/**
* Single aggregation group result
*/
export interface TypedAggregateGroup<T = unknown> {
/** The group key values */
groupKey: Record<string, unknown>;
/** Count of items in the group */
count?: number;
/** First item in the group */
firstItem?: T;
}
/**
* Paginated response of aggregated agent data
*/
export interface TypedAggregateGroupItems<T = unknown> {
items: TypedAggregateGroup<T>[];
totalSize?: number;
nextPageToken?: string;
}
-55
View File
@@ -1,55 +0,0 @@
import { workflowEvent } from "@llama-flow/core";
import { zodEvent } from "@llama-flow/core/util/zod";
import { z } from "zod";
import { parseFormSchema } from "./schema";
export const uploadEvent = zodEvent(
parseFormSchema.merge(
z.object({
file: z
.string()
.or(z.instanceof(File))
.or(z.instanceof(Blob))
.or(z.instanceof(Uint8Array))
.optional()
.describe("input"),
}),
),
{
debugLabel: "upload",
uniqueId: "52099967-34a8-419b-8950-c859eab60145",
},
);
export const checkStatusEvent = workflowEvent<string>({
debugLabel: "check-status",
uniqueId: "462157fc-1ded-4ba7-9bc4-3e870395bd20",
});
export const checkStatusSuccessEvent = workflowEvent<string>({
debugLabel: "check-status-success",
uniqueId: "360b7641-30f7-456e-851d-104bb5e3f8d2",
});
export const requestMarkdownEvent = workflowEvent<string>({
debugLabel: "markdown-request",
uniqueId: "aa4c2e3c-0f09-4035-aab6-c72719c877cc",
});
export const requestTextEvent = workflowEvent<string>({
debugLabel: "text-request",
uniqueId: "6976536e-5399-4285-9455-0b70f1dfc92b",
});
export const requestJsonEvent = workflowEvent<string>({
debugLabel: "json-request",
uniqueId: "9fc4a330-52ad-4aac-8092-a650998b7f6f",
});
export const markdownResultEvent = workflowEvent<string>({
debugLabel: "markdown-result",
uniqueId: "2dfb57c8-73d1-4394-bea8-f05246d934d4",
});
export const textResultEvent = workflowEvent<string>({
debugLabel: "text-result",
uniqueId: "a27deec6-b24f-4eda-a5ac-ba2fb2bf37c8",
});
export const jsonResultEvent = workflowEvent<unknown>({
debugLabel: "json-result",
uniqueId: "e086e6bd-a612-4f25-ab41-9b31dcb8af86",
});
-225
View File
@@ -1,225 +0,0 @@
import { createClient, createConfig } from "@hey-api/client-fetch";
import { createWorkflow, type InferWorkflowEventData } from "@llama-flow/core";
import { createStatefulMiddleware } from "@llama-flow/core/middleware/state";
import { withTraceEvents } from "@llama-flow/core/middleware/trace-events";
import { pRetryHandler } from "@llama-flow/core/util/p-retry";
import { fs, getEnv, path } from "@llamaindex/env";
import {
type BodyUploadFileApiV1ParsingUploadPost,
getJobApiV1ParsingJobJobIdGet,
getJobJsonResultApiV1ParsingJobJobIdResultJsonGet,
getJobResultApiV1ParsingJobJobIdResultMarkdownGet,
getJobTextResultApiV1ParsingJobJobIdResultTextGet,
type StatusEnum,
uploadFileApiV1ParsingUploadPost,
} from "./client";
import {
checkStatusEvent,
checkStatusSuccessEvent,
jsonResultEvent,
markdownResultEvent,
requestJsonEvent,
requestMarkdownEvent,
requestTextEvent,
textResultEvent,
uploadEvent,
} from "./events";
export type LlamaParseWorkflowParams = {
region?: "us" | "eu" | "us-staging";
apiKey?: string;
};
const URLS = {
us: "https://api.cloud.llamaindex.ai",
eu: "https://api.cloud.eu.llamaindex.ai",
"us-staging": "https://api.staging.llamaindex.ai",
} as const;
const { withState, getContext } = createStatefulMiddleware(
(params: LlamaParseWorkflowParams) => {
const apiKey = params.apiKey ?? getEnv("LLAMA_CLOUD_API_KEY");
const region = params.region ?? "us";
if (!apiKey) {
throw new Error("LLAMA_CLOUD_API_KEY is not set");
}
return {
cache: {} as Record<string, StatusEnum>,
client: createClient(
createConfig({
baseUrl: URLS[region],
headers: {
Authorization: `Bearer ${apiKey}`,
},
}),
),
};
},
);
const llamaParseWorkflow = withState(withTraceEvents(createWorkflow()));
llamaParseWorkflow.handle([uploadEvent], async ({ data: form }) => {
const { state } = getContext();
const finalForm = { ...form };
if ("file" in form) {
// support loads from the file system
const file = form?.file;
const isFilePath = typeof file === "string";
const data = isFilePath ? await fs.readFile(file) : file;
const filename: string | undefined = isFilePath
? path.basename(file)
: undefined;
finalForm.file = data
? globalThis.File && filename
? new File([data], filename)
: new Blob([data])
: undefined;
}
const {
data: { id, status },
} = await uploadFileApiV1ParsingUploadPost({
throwOnError: true,
body: {
...finalForm,
} as BodyUploadFileApiV1ParsingUploadPost,
client: state.client,
});
state.cache[id] = status;
return checkStatusEvent.with(id);
});
llamaParseWorkflow.handle(
[checkStatusEvent],
pRetryHandler(
async ({ data: uuid }) => {
const { state } = getContext();
if (state.cache[uuid] === "SUCCESS") {
return checkStatusSuccessEvent.with(uuid);
}
const {
data: { status },
} = await getJobApiV1ParsingJobJobIdGet({
throwOnError: true,
path: {
job_id: uuid,
},
client: state.client,
});
state.cache[uuid] = status;
if (status === "SUCCESS") {
return checkStatusSuccessEvent.with(uuid);
}
throw new Error(`LLamaParse status: ${status}`);
},
{
retries: 100,
},
),
);
//#region sub workflow
llamaParseWorkflow.handle([requestMarkdownEvent], async ({ data: job_id }) => {
const { state } = getContext();
const { data } = await getJobResultApiV1ParsingJobJobIdResultMarkdownGet({
throwOnError: true,
path: {
job_id,
},
client: state.client,
});
return markdownResultEvent.with(data.markdown);
});
llamaParseWorkflow.handle([requestTextEvent], async ({ data: job_id }) => {
const { state } = getContext();
const { data } = await getJobTextResultApiV1ParsingJobJobIdResultTextGet({
throwOnError: true,
path: {
job_id,
},
client: state.client,
});
return textResultEvent.with(data.text);
});
llamaParseWorkflow.handle([requestJsonEvent], async ({ data: job_id }) => {
const { state } = getContext();
const { data } = await getJobJsonResultApiV1ParsingJobJobIdResultJsonGet({
throwOnError: true,
path: {
job_id,
},
client: state.client,
});
return jsonResultEvent.with(data.pages);
});
//#endregion
export type ParseJob = {
get jobId(): string;
get signal(): AbortSignal;
get context(): ReturnType<typeof llamaParseWorkflow.createContext>;
get form(): InferWorkflowEventData<typeof uploadEvent>;
markdown(): Promise<string>;
text(): Promise<string>;
//eslint-disable-next-line @typescript-eslint/no-explicit-any
json(): Promise<any[]>;
};
export const upload = async (
params: InferWorkflowEventData<typeof uploadEvent> & LlamaParseWorkflowParams,
): Promise<ParseJob> => {
//#region upload event
const context = llamaParseWorkflow.createContext(params);
const { stream, sendEvent } = context;
const ev = uploadEvent.with(params);
sendEvent(ev);
const uploadThread = await llamaParseWorkflow
.substream(ev, stream)
.until((ev) => checkStatusSuccessEvent.include(ev))
.toArray();
//#region
const jobId: string = uploadThread.at(-1)!.data;
return {
get signal() {
// lazy load
return context.signal;
},
get jobId() {
return jobId;
},
get form() {
return ev.data;
},
get context() {
return context;
},
async markdown(): Promise<string> {
const requestEv = requestMarkdownEvent.with(jobId);
const { sendEvent, stream } = llamaParseWorkflow.createContext(params);
sendEvent(requestEv);
const markdownThread = await stream.until(markdownResultEvent).toArray();
return markdownThread.at(-1)!.data;
},
async text(): Promise<string> {
const requestEv = requestTextEvent.with(jobId);
const { sendEvent, stream } = llamaParseWorkflow.createContext(params);
sendEvent(requestEv);
const textThread = await stream.until(textResultEvent).toArray();
return textThread.at(-1)!.data;
},
//eslint-disable-next-line @typescript-eslint/no-explicit-any
async json(): Promise<any[]> {
const requestEv = requestJsonEvent.with(jobId);
const { sendEvent, stream } = llamaParseWorkflow.createContext(params);
sendEvent(requestEv);
const jsonThread = await stream
.until((ev) => jsonResultEvent.include(ev))
.toArray();
return jsonThread.at(-1)!.data;
},
};
};
-781
View File
@@ -1,781 +0,0 @@
/* eslint-disable @typescript-eslint/no-explicit-any */
import { type Client, createClient, createConfig } from "@hey-api/client-fetch";
import { Document, FileReader } from "@llamaindex/core/schema";
import { fs, getEnv, path } from "@llamaindex/env";
import {
type BodyUploadFileApiParsingUploadPost,
type FailPageMode,
type ParserLanguages,
type ParsingMode,
getJobApiV1ParsingJobJobIdGet,
getJobImageResultApiV1ParsingJobJobIdResultImageNameGet,
getJobJsonResultApiV1ParsingJobJobIdResultJsonGet,
getJobResultApiV1ParsingJobJobIdResultMarkdownGet,
getJobTextResultApiV1ParsingJobJobIdResultTextGet,
uploadFileApiV1ParsingUploadPost,
} from "./api";
import { sleep } from "./utils";
export type Language = ParserLanguages;
export type ResultType = "text" | "markdown" | "json";
// Export the backoff pattern type.
export type BackoffPattern = "constant" | "linear" | "exponential";
// TODO: should move into @llamaindex/env
type WriteStream = {
write: (text: string) => void;
};
// Do not modify this variable or cause type errors
// eslint-disable-next-line no-var
var process: any;
/**
* Represents a reader for parsing files using the LlamaParse API.
* See https://github.com/run-llama/llama_parse
*/
export class LlamaParseReader extends FileReader {
project_id?: string | undefined;
organization_id?: string | undefined;
// The API key for the LlamaParse API. Can be set as an environment variable: LLAMA_CLOUD_API_KEY
apiKey: string;
// The base URL of the Llama Cloud Platform.
baseUrl: string = "https://api.cloud.llamaindex.ai";
// The result type for the parser.
resultType: ResultType = "text";
// The interval in seconds to check if the parsing is done.
checkInterval: number = 1;
// The maximum timeout in seconds to wait for the parsing to finish.
maxTimeout = 2000;
// Whether to print the progress of the parsing.
verbose = true;
// The language to parse the file in.
language: ParserLanguages[] = ["en"];
// New polling options:
// Controls the backoff mode: "constant", "linear", or "exponential".
backoffPattern: BackoffPattern = "linear";
// Maximum interval in seconds between polls.
maxCheckInterval: number = 5;
// Maximum number of retryable errors before giving up.
maxErrorCount: number = 4;
// The parsing instruction for the parser. Backend default is an empty string.
parsingInstruction?: string | undefined;
// Whether to ignore diagonal text (when the text rotation in degrees is not 0, 90, 180, or 270). Backend default is false.
skipDiagonalText?: boolean | undefined;
// Whether to ignore the cache and re-process the document. Documents are cached for 48 hours after job completion. Backend default is false.
invalidateCache?: boolean | undefined;
// Whether the document should not be cached. Backend default is false.
doNotCache?: boolean | undefined;
// Whether to use a faster mode to extract text (skipping OCR and table/heading reconstruction). Not compatible with gpt4oMode. Backend default is false.
fastMode?: boolean | undefined;
// Whether to keep columns in the text according to document layout. May reduce reconstruction accuracy and LLM/embedings performance.
doNotUnrollColumns?: boolean | undefined;
// A templated page separator for splitting text. If not set, default is "\n---\n".
pageSeparator?: string | undefined;
// A templated prefix to add at the beginning of each page.
pagePrefix?: string | undefined;
// A templated suffix to add at the end of each page.
pageSuffix?: string | undefined;
// Deprecated. Use vendorMultimodal params. Whether to use gpt-4o to extract text.
gpt4oMode: boolean = false;
// Deprecated. Use vendorMultimodal params. The API key for GPT-4o. Can be set via LLAMA_CLOUD_GPT4O_API_KEY.
gpt4oApiKey?: string | undefined;
// The bounding box margins as a string.
boundingBox?: string | undefined;
// The target pages (comma separated list, starting at 0).
targetPages?: string | undefined;
// Whether to ignore errors during parsing.
ignoreErrors: boolean = true;
// Whether to split by page using the pageSeparator (or "\n---\n" as default).
splitByPage: boolean = true;
// Whether to use the vendor multimodal API.
useVendorMultimodalModel: boolean = false;
// The model name for the vendor multimodal API.
vendorMultimodalModelName?: string | undefined;
// The API key for the multimodal API. Can be set via LLAMA_CLOUD_VENDOR_MULTIMODAL_API_KEY.
vendorMultimodalApiKey?: string | undefined;
webhookUrl?: string | undefined;
premiumMode?: boolean | undefined;
takeScreenshot?: boolean | undefined;
disableOcr?: boolean | undefined;
disableReconstruction?: boolean | undefined;
inputS3Path?: string | undefined;
outputS3PathPrefix?: string | undefined;
continuousMode?: boolean | undefined;
isFormattingInstruction?: boolean | undefined;
annotateLinks?: boolean | undefined;
azureOpenaiDeploymentName?: string | undefined;
azureOpenaiEndpoint?: string | undefined;
azureOpenaiApiVersion?: string | undefined;
azureOpenaiKey?: string | undefined;
auto_mode?: boolean | undefined;
auto_mode_trigger_on_image_in_page?: boolean | undefined;
auto_mode_trigger_on_table_in_page?: boolean | undefined;
auto_mode_trigger_on_text_in_page?: string | undefined;
auto_mode_trigger_on_regexp_in_page?: string | undefined;
bbox_bottom?: number | undefined;
bbox_left?: number | undefined;
bbox_right?: number | undefined;
bbox_top?: number | undefined;
disable_image_extraction?: boolean | undefined;
extract_charts?: boolean | undefined;
guess_xlsx_sheet_name?: boolean | undefined;
html_make_all_elements_visible?: boolean | undefined;
html_remove_fixed_elements?: boolean | undefined;
html_remove_navigation_elements?: boolean | undefined;
http_proxy?: string | undefined;
input_url?: string | undefined;
max_pages?: number | undefined;
output_pdf_of_document?: boolean | undefined;
structured_output?: boolean | undefined;
structured_output_json_schema?: string | undefined;
structured_output_json_schema_name?: string | undefined;
extract_layout?: boolean | undefined;
// numWorkers is implemented in SimpleDirectoryReader
stdout?: WriteStream | undefined;
readonly #client: Client;
output_tables_as_HTML: boolean = false;
input_s3_region?: string | undefined;
output_s3_region?: string | undefined;
preserve_layout_alignment_across_pages?: boolean | undefined;
spreadsheet_extract_sub_tables?: boolean | undefined;
formatting_instruction?: string | undefined;
parse_mode?: ParsingMode | undefined;
system_prompt?: string | undefined;
system_prompt_append?: string | undefined;
user_prompt?: string | undefined;
job_timeout_in_seconds?: number | undefined;
job_timeout_extra_time_per_page_in_seconds?: number | undefined;
strict_mode_image_extraction?: boolean | undefined;
strict_mode_image_ocr?: boolean | undefined;
strict_mode_reconstruction?: boolean | undefined;
strict_mode_buggy_font?: boolean | undefined;
ignore_document_elements_for_layout_detection?: boolean | undefined;
complemental_formatting_instruction?: string | undefined;
content_guideline_instruction?: string | undefined;
adaptive_long_table?: boolean | undefined;
model?: string | undefined;
auto_mode_configuration_json?: string | undefined;
compact_markdown_table?: boolean | undefined;
markdown_table_multiline_header_separator?: string | undefined;
page_error_tolerance?: number | undefined;
replace_failed_page_mode?: FailPageMode | undefined;
replace_failed_page_with_error_message_prefix?: string | undefined;
replace_failed_page_with_error_message_suffix?: string | undefined;
save_images?: boolean | undefined;
preset?: string | undefined;
high_res_ocr?: boolean | undefined;
outlined_table_extraction?: boolean | undefined;
hide_headers?: boolean | undefined;
hide_footers?: boolean | undefined;
page_header_prefix?: string | undefined;
page_header_suffix?: string | undefined;
page_footer_prefix?: string | undefined;
page_footer_suffix?: string | undefined;
merge_tables_across_pages_in_markdown?: boolean | undefined;
constructor(
params: Partial<Omit<LlamaParseReader, "language" | "apiKey">> & {
language?: ParserLanguages | ParserLanguages[] | undefined;
apiKey?: string | undefined;
} = {},
) {
super();
Object.assign(this, params);
this.language = Array.isArray(this.language)
? this.language
: [this.language];
this.stdout =
(params.stdout ?? typeof process !== "undefined")
? process!.stdout
: undefined;
const apiKey = params.apiKey ?? getEnv("LLAMA_CLOUD_API_KEY");
if (!apiKey) {
throw new Error(
"API Key is required for LlamaParseReader. Please pass the apiKey parameter or set the LLAMA_CLOUD_API_KEY environment variable.",
);
}
this.apiKey = apiKey;
if (this.baseUrl.endsWith("/")) {
this.baseUrl = this.baseUrl.slice(0, -1);
}
if (this.baseUrl.endsWith("/api/parsing")) {
this.baseUrl = this.baseUrl.slice(0, -"/api/parsing".length);
}
if (params.gpt4oMode) {
params.gpt4oApiKey =
params.gpt4oApiKey ?? getEnv("LLAMA_CLOUD_GPT4O_API_KEY");
this.gpt4oApiKey = params.gpt4oApiKey;
}
if (params.useVendorMultimodalModel) {
params.vendorMultimodalApiKey =
params.vendorMultimodalApiKey ??
getEnv("LLAMA_CLOUD_VENDOR_MULTIMODAL_API_KEY");
this.vendorMultimodalApiKey = params.vendorMultimodalApiKey;
}
this.#client = createClient(
createConfig({
headers: {
Authorization: `Bearer ${this.apiKey}`,
},
baseUrl: this.baseUrl,
}),
);
}
/**
* Creates a job for the LlamaParse API.
*
* @param data - The file data as a Uint8Array.
* @param filename - Optional filename for the file.
* @returns A Promise resolving to the job ID as a string.
*/
async #createJob(
data: Uint8Array | string,
filename?: string,
): Promise<string> {
if (this.verbose) {
console.log("Started uploading the file");
}
let file: File | Blob | null = null;
let input_s3_path: string | undefined = this.inputS3Path;
let input_url: string | undefined = this.input_url;
if (typeof data !== "string") {
// TODO: remove Blob usage when we drop Node.js 18 support
file =
globalThis.File && filename
? new File([data], filename)
: new Blob([data]);
} else if (data.startsWith("s3://")) {
input_s3_path = data;
} else if (data.startsWith("http://") || data.startsWith("https://")) {
input_url = data;
}
const body = {
file,
input_s3_path,
input_url,
language: this.language,
parsing_instruction: this.parsingInstruction,
skip_diagonal_text: this.skipDiagonalText,
invalidate_cache: this.invalidateCache,
do_not_cache: this.doNotCache,
fast_mode: this.fastMode,
do_not_unroll_columns: this.doNotUnrollColumns,
page_separator: this.pageSeparator,
page_prefix: this.pagePrefix,
page_suffix: this.pageSuffix,
gpt4o_mode: this.gpt4oMode,
gpt4o_api_key: this.gpt4oApiKey,
bounding_box: this.boundingBox,
target_pages: this.targetPages,
use_vendor_multimodal_model: this.useVendorMultimodalModel,
vendor_multimodal_model_name: this.vendorMultimodalModelName,
vendor_multimodal_api_key: this.vendorMultimodalApiKey,
premium_mode: this.premiumMode,
webhook_url: this.webhookUrl,
take_screenshot: this.takeScreenshot,
disable_ocr: this.disableOcr,
disable_reconstruction: this.disableReconstruction,
output_s3_path_prefix: this.outputS3PathPrefix,
continuous_mode: this.continuousMode,
is_formatting_instruction: this.isFormattingInstruction,
annotate_links: this.annotateLinks,
azure_openai_deployment_name: this.azureOpenaiDeploymentName,
azure_openai_endpoint: this.azureOpenaiEndpoint,
azure_openai_api_version: this.azureOpenaiApiVersion,
azure_openai_key: this.azureOpenaiKey,
auto_mode: this.auto_mode,
auto_mode_trigger_on_image_in_page:
this.auto_mode_trigger_on_image_in_page,
auto_mode_trigger_on_table_in_page:
this.auto_mode_trigger_on_table_in_page,
auto_mode_trigger_on_text_in_page: this.auto_mode_trigger_on_text_in_page,
auto_mode_trigger_on_regexp_in_page:
this.auto_mode_trigger_on_regexp_in_page,
bbox_bottom: this.bbox_bottom,
bbox_left: this.bbox_left,
bbox_right: this.bbox_right,
bbox_top: this.bbox_top,
disable_image_extraction: this.disable_image_extraction,
extract_charts: this.extract_charts,
guess_xlsx_sheet_name: this.guess_xlsx_sheet_name,
html_make_all_elements_visible: this.html_make_all_elements_visible,
html_remove_fixed_elements: this.html_remove_fixed_elements,
html_remove_navigation_elements: this.html_remove_navigation_elements,
http_proxy: this.http_proxy,
max_pages: this.max_pages,
output_pdf_of_document: this.output_pdf_of_document,
structured_output: this.structured_output,
structured_output_json_schema: this.structured_output_json_schema,
structured_output_json_schema_name:
this.structured_output_json_schema_name,
extract_layout: this.extract_layout,
output_tables_as_HTML: this.output_tables_as_HTML,
input_s3_region: this.input_s3_region,
output_s3_region: this.output_s3_region,
preserve_layout_alignment_across_pages:
this.preserve_layout_alignment_across_pages,
spreadsheet_extract_sub_tables: this.spreadsheet_extract_sub_tables,
formatting_instruction: this.formatting_instruction,
parse_mode: this.parse_mode,
system_prompt: this.system_prompt,
system_prompt_append: this.system_prompt_append,
user_prompt: this.user_prompt,
job_timeout_in_seconds: this.job_timeout_in_seconds,
job_timeout_extra_time_per_page_in_seconds:
this.job_timeout_extra_time_per_page_in_seconds,
strict_mode_image_extraction: this.strict_mode_image_extraction,
strict_mode_image_ocr: this.strict_mode_image_ocr,
strict_mode_reconstruction: this.strict_mode_reconstruction,
strict_mode_buggy_font: this.strict_mode_buggy_font,
ignore_document_elements_for_layout_detection:
this.ignore_document_elements_for_layout_detection,
complemental_formatting_instruction:
this.complemental_formatting_instruction,
content_guideline_instruction: this.content_guideline_instruction,
adaptive_long_table: this.adaptive_long_table,
model: this.model,
auto_mode_configuration_json: this.auto_mode_configuration_json,
compact_markdown_table: this.compact_markdown_table,
markdown_table_multiline_header_separator:
this.markdown_table_multiline_header_separator,
page_error_tolerance: this.page_error_tolerance,
replace_failed_page_mode: this.replace_failed_page_mode,
replace_failed_page_with_error_message_prefix:
this.replace_failed_page_with_error_message_prefix,
replace_failed_page_with_error_message_suffix:
this.replace_failed_page_with_error_message_suffix,
save_images: this.save_images,
preset: this.preset,
high_res_ocr: this.high_res_ocr,
outlined_table_extraction: this.outlined_table_extraction,
hide_headers: this.hide_headers,
hide_footers: this.hide_footers,
page_header_prefix: this.page_header_prefix,
page_header_suffix: this.page_header_suffix,
page_footer_prefix: this.page_footer_prefix,
page_footer_suffix: this.page_footer_suffix,
merge_tables_across_pages_in_markdown:
this.merge_tables_across_pages_in_markdown,
} satisfies {
[Key in keyof BodyUploadFileApiParsingUploadPost]-?:
| BodyUploadFileApiParsingUploadPost[Key]
| undefined;
} as unknown as BodyUploadFileApiParsingUploadPost;
const response = await uploadFileApiV1ParsingUploadPost({
client: this.#client,
throwOnError: true,
query: {
project_id: this.project_id ?? null,
organization_id: this.organization_id ?? null,
},
signal: AbortSignal.timeout(this.maxTimeout * 1000),
body,
});
return response.data.id;
}
/**
* Retrieves the result of a parsing job.
*
* Uses a polling loop with retry logic. Each API call is retried
* up to maxErrorCount times if it fails with a 5XX or socket error.
* The delay between polls increases according to the specified backoffPattern ("constant", "linear", or "exponential"),
* capped by maxCheckInterval.
*
* @param jobId - The job ID.
* @param resultType - The type of result to fetch ("text", "json", or "markdown").
* @returns A Promise resolving to the job result.
*/
private async getJobResult(
jobId: string,
resultType: "text" | "json" | "markdown",
): Promise<any> {
let tries = 0;
let currentInterval = this.checkInterval;
const { default: pRetry } = await import("p-retry");
while (true) {
await sleep(currentInterval * 1000);
// Wraps the API call in a retry
let result;
try {
result = await pRetry(
() =>
getJobApiV1ParsingJobJobIdGet({
client: this.#client,
throwOnError: true,
path: { job_id: jobId },
signal: AbortSignal.timeout(this.maxTimeout * 1000),
}),
{
retries: this.maxErrorCount,
onFailedAttempt: (error) => {
// Retry only on 5XX or socket errors.
const status = (error.cause as any)?.response?.status;
if (
!(
(status && status >= 500 && status < 600) ||
((error.cause as any)?.code &&
((error.cause as any).code === "ECONNRESET" ||
(error.cause as any).code === "ETIMEDOUT" ||
(error.cause as any).code === "ECONNREFUSED"))
)
) {
throw error;
}
if (this.verbose) {
console.warn(
`Attempting to get job ${jobId} result (attempt ${error.attemptNumber}) failed. Retrying...`,
);
}
},
},
);
} catch (e: any) {
throw new Error(
`Max error count reached for job ${jobId}: ${e.message}`,
);
}
const { data } = result;
const status = (data as Record<string, unknown>)["status"];
if (status === "SUCCESS") {
let resultData;
switch (resultType) {
case "json": {
resultData =
await getJobJsonResultApiV1ParsingJobJobIdResultJsonGet({
client: this.#client,
throwOnError: true,
path: { job_id: jobId },
query: {
organization_id: this.organization_id ?? null,
},
signal: AbortSignal.timeout(this.maxTimeout * 1000),
});
break;
}
case "markdown": {
resultData =
await getJobResultApiV1ParsingJobJobIdResultMarkdownGet({
client: this.#client,
throwOnError: true,
path: { job_id: jobId },
query: {
organization_id: this.organization_id ?? null,
},
signal: AbortSignal.timeout(this.maxTimeout * 1000),
});
break;
}
case "text": {
resultData =
await getJobTextResultApiV1ParsingJobJobIdResultTextGet({
client: this.#client,
throwOnError: true,
path: { job_id: jobId },
query: {
organization_id: this.organization_id ?? null,
},
signal: AbortSignal.timeout(this.maxTimeout * 1000),
});
break;
}
}
return resultData.data;
} else if (status === "PENDING") {
if (this.verbose && tries % 10 === 0) {
this.stdout?.write(".");
}
tries++;
} else {
if (this.verbose) {
console.error(
`Received error response ${status} for job ${jobId}. Got Error Code: ${data.error_code} and Error Message: ${data.error_message}`,
);
}
throw new Error(
`Failed to parse the file: ${jobId}, status: ${status}`,
);
}
// Adjust the polling interval based on the backoff pattern.
if (this.backoffPattern === "exponential") {
currentInterval = Math.min(currentInterval * 2, this.maxCheckInterval);
} else if (this.backoffPattern === "linear") {
currentInterval = Math.min(
currentInterval + this.checkInterval,
this.maxCheckInterval,
);
} else if (this.backoffPattern === "constant") {
currentInterval = this.checkInterval;
}
}
}
override async loadData(filePath?: string): Promise<Document[]> {
if (!filePath) {
if (this.input_url) {
return this.loadDataAsContent(this.input_url, this.input_url);
} else if (this.inputS3Path) {
return this.loadDataAsContent(this.inputS3Path, this.inputS3Path);
} else {
throw new TypeError("File path is required");
}
} else {
const data =
filePath.startsWith("s3://") ||
filePath.startsWith("http://") ||
filePath.startsWith("https://")
? filePath
: await fs.readFile(filePath);
return this.loadDataAsContent(data, filePath);
}
}
/**
* Loads data from a file and returns an array of Document objects.
* To be used with resultType "text" or "markdown".
*
* @param fileContent - The content of the file as a Uint8Array.
* @param filename - Optional filename for the file.
* @returns A Promise that resolves to an array of Document objects.
*/
async loadDataAsContent(
fileContent: Uint8Array | string,
filename?: string,
): Promise<Document[]> {
return this.#createJob(fileContent, filename)
.then(async (jobId) => {
if (this.verbose) {
console.log(`Started parsing the file under job id ${jobId}`);
}
// Return results as Document objects.
const jobResults = await this.getJobResult(jobId, this.resultType);
const resultText = jobResults[this.resultType];
// Split the text by separator if splitByPage is true.
if (this.splitByPage) {
return this.splitTextBySeparator(resultText);
}
return [new Document({ text: resultText })];
})
.catch((error) => {
console.warn(
`Error while parsing the file with: ${error.message ?? error.detail}`,
);
if (this.ignoreErrors) {
return [];
} else {
throw error;
}
});
}
/**
* Loads data from a file and returns an array of JSON objects.
* To be used with resultType "json".
*
* @param filePathOrContent - The file path or the file content as a Uint8Array.
* @returns A Promise that resolves to an array of JSON objects.
*/
async loadJson(
filePathOrContent: string | Uint8Array,
): Promise<Record<string, any>[]> {
let jobId;
const isFilePath =
typeof filePathOrContent === "string" &&
!(
filePathOrContent.startsWith("s3://") ||
filePathOrContent.startsWith("http://") ||
filePathOrContent.startsWith("https://")
);
try {
const data = isFilePath
? await fs.readFile(filePathOrContent)
: filePathOrContent;
// Create a job for the file.
jobId = await this.#createJob(
data,
isFilePath ? path.basename(filePathOrContent) : undefined,
);
if (this.verbose) {
console.log(`Started parsing the file under job id ${jobId}`);
}
// Return results as an array of JSON objects.
const resultJson = await this.getJobResult(jobId, "json");
resultJson.job_id = jobId;
resultJson.file_path = isFilePath ? filePathOrContent : undefined;
return [resultJson];
} catch (e) {
console.error(`Error while parsing the file under job id ${jobId}`, e);
if (this.ignoreErrors) {
return [];
} else {
throw e;
}
}
}
/**
* Downloads and saves images from a given JSON result to a specified download path.
* Currently only supports resultType "json".
*
* @param jsonResult - The JSON result containing image information.
* @param downloadPath - The path where the downloaded images will be saved.
* @returns A Promise that resolves to an array of image objects.
*/
async getImages(
jsonResult: Record<string, any>[],
downloadPath: string,
): Promise<Record<string, any>[]> {
try {
// Create download directory if it doesn't exist (checks for write access).
try {
await fs.access(downloadPath);
} catch {
await fs.mkdir(downloadPath, { recursive: true });
}
const images: Record<string, any>[] = [];
for (const result of jsonResult) {
const jobId = result.job_id;
for (const page of result.pages) {
if (this.verbose) {
console.log(`> Image for page ${page.page}: ${page.images}`);
}
for (const image of page.images) {
const imageName = image.name;
const imagePath = await this.getImagePath(
downloadPath,
jobId,
imageName,
);
await this.fetchAndSaveImage(imageName, imagePath, jobId);
// Assign metadata to the image.
image.path = imagePath;
image.job_id = jobId;
image.original_pdf_path = result.file_path;
image.page_number = page.page;
images.push(image);
}
}
}
return images;
} catch (e) {
console.error(`Error while downloading images from the parsed result`, e);
if (this.ignoreErrors) {
return [];
} else {
throw e;
}
}
}
/**
* Constructs the file path for an image.
*
* @param downloadPath - The base download directory.
* @param jobId - The job ID.
* @param imageName - The image name.
* @returns A Promise that resolves to the full image path.
*/
private async getImagePath(
downloadPath: string,
jobId: string,
imageName: string,
): Promise<string> {
return path.join(downloadPath, `${jobId}-${imageName}`);
}
/**
* Fetches an image from the API and saves it to the specified path.
*
* @param imageName - The name of the image.
* @param imagePath - The local path to save the image.
* @param jobId - The associated job ID.
*/
private async fetchAndSaveImage(
imageName: string,
imagePath: string,
jobId: string,
): Promise<void> {
const response =
await getJobImageResultApiV1ParsingJobJobIdResultImageNameGet({
client: this.#client,
path: {
job_id: jobId,
name: imageName,
},
});
if (response.error) {
throw new Error(`Failed to download image: ${response.error.detail}`);
}
const blob = (await response.data) as Blob;
// Write the image buffer to the specified imagePath.
await fs.writeFile(imagePath, new Uint8Array(await blob.arrayBuffer()));
}
/**
* Filters out invalid values (null, undefined, empty string) for specific parameters.
*
* @param params - The parameters object.
* @param keysToCheck - The keys to check for valid values.
* @returns A new object with filtered parameters.
*/
private filterSpecificParams(
params: Record<string, any>,
keysToCheck: string[],
): Record<string, any> {
const filteredParams: Record<string, any> = {};
for (const [key, value] of Object.entries(params)) {
if (keysToCheck.includes(key)) {
if (value !== null && value !== undefined && value !== "") {
filteredParams[key] = value;
}
} else {
filteredParams[key] = value;
}
}
return filteredParams;
}
/**
* Splits text into Document objects using the page separator.
*
* @param text - The text to be split.
* @returns An array of Document objects.
*/
private splitTextBySeparator(text: string): Document[] {
const separator = this.pageSeparator ?? "\n---\n";
const textChunks = text.split(separator);
return textChunks.map(
(docChunk: string) =>
new Document({
text: docChunk,
}),
);
}
}
-131
View File
@@ -1,131 +0,0 @@
import { FailPageMode, ParserLanguages, ParsingMode } from "./client";
import { z } from "zod";
type Language = ParserLanguages;
const VALUES: [Language, ...Language[]] = [
ParserLanguages.EN,
...Object.values(ParserLanguages),
];
const languageSchema = z.enum(VALUES);
const PARSE_PRESETS = [
"fast",
"balanced",
"premium",
"structured",
"auto",
"scientific",
"invoice",
"slides",
"_carlyle",
] as const;
export const parsePresetSchema = z.enum(PARSE_PRESETS);
export const parseFormSchema = z.object({
adaptive_long_table: z.boolean().optional(),
annotate_links: z.boolean().optional(),
auto_mode: z.boolean().optional(),
auto_mode_trigger_on_image_in_page: z.boolean().optional(),
auto_mode_trigger_on_table_in_page: z.boolean().optional(),
auto_mode_trigger_on_text_in_page: z.string().optional(),
auto_mode_trigger_on_regexp_in_page: z.string().optional(),
auto_mode_configuration_json: z.string().optional(),
azure_openai_api_version: z.string().optional(),
azure_openai_deployment_name: z.string().optional(),
azure_openai_endpoint: z.string().optional(),
azure_openai_key: z.string().optional(),
bbox_bottom: z.number().min(0).max(1).optional(),
bbox_left: z.number().min(0).max(1).optional(),
bbox_right: z.number().min(0).max(1).optional(),
bbox_top: z.number().min(0).max(1).optional(),
disable_ocr: z.boolean().optional(),
disable_reconstruction: z.boolean().optional(),
disable_image_extraction: z.boolean().optional(),
do_not_cache: z.coerce.boolean().optional(),
do_not_unroll_columns: z.coerce.boolean().optional(),
extract_charts: z.boolean().optional(),
guess_xlsx_sheet_name: z.boolean().optional(),
html_make_all_elements_visible: z.boolean().optional(),
html_remove_fixed_elements: z.boolean().optional(),
html_remove_navigation_elements: z.boolean().optional(),
http_proxy: z
.string()
.url(
'Set a valid URL for the HTTP proxy, e.g., "http://proxy.example.com:8080"',
)
.refine(
(url) => {
try {
const parsedUrl = new URL(url);
return (
parsedUrl.protocol === "http:" || parsedUrl.protocol === "https:"
);
} catch {
return false;
}
},
{
message: "Invalid HTTP proxy URL",
},
)
.optional(),
input_s3_path: z.string().optional(),
input_s3_region: z.string().optional(),
input_url: z.string().optional(),
invalidate_cache: z.boolean().optional(),
language: z.array(languageSchema).optional(),
extract_layout: z.boolean().optional(),
max_pages: z.number().nullable().optional(),
output_pdf_of_document: z.boolean().optional(),
output_s3_path_prefix: z.string().optional(),
output_s3_region: z.string().optional(),
page_prefix: z.string().optional(),
page_separator: z.string().optional(),
page_suffix: z.string().optional(),
preserve_layout_alignment_across_pages: z.boolean().optional(),
skip_diagonal_text: z.boolean().optional(),
spreadsheet_extract_sub_tables: z.boolean().optional(),
structured_output: z.boolean().optional(),
structured_output_json_schema: z.string().optional(),
structured_output_json_schema_name: z.string().optional(),
take_screenshot: z.boolean().optional(),
target_pages: z.string().optional(),
vendor_multimodal_api_key: z.string().optional(),
vendor_multimodal_model_name: z.string().optional(),
model: z.string().optional(),
webhook_url: z.string().url().optional(),
parse_mode: z.nativeEnum(ParsingMode).nullable().optional(),
system_prompt: z.string().optional(),
system_prompt_append: z.string().optional(),
user_prompt: z.string().optional(),
job_timeout_in_seconds: z.number().optional(),
job_timeout_extra_time_per_page_in_seconds: z.number().optional(),
strict_mode_image_extraction: z.boolean().optional(),
strict_mode_image_ocr: z.boolean().optional(),
strict_mode_reconstruction: z.boolean().optional(),
strict_mode_buggy_font: z.boolean().optional(),
save_images: z.boolean().optional(),
ignore_document_elements_for_layout_detection: z.boolean().optional(),
output_tables_as_HTML: z.boolean().optional(),
use_vendor_multimodal_model: z.boolean().optional(),
bounding_box: z.string().optional(),
gpt4o_mode: z.boolean().optional(),
gpt4o_api_key: z.string().optional(),
complemental_formatting_instruction: z.string().optional(),
content_guideline_instruction: z.string().optional(),
premium_mode: z.boolean().optional(),
is_formatting_instruction: z.boolean().optional(),
continuous_mode: z.boolean().optional(),
parsing_instruction: z.string().optional(),
fast_mode: z.boolean().optional(),
formatting_instruction: z.string().optional(),
preset: parsePresetSchema.optional(),
compact_markdown_table: z.boolean().optional(),
markdown_table_multiline_header_separator: z.string().optional(),
page_error_tolerance: z.number().min(0).max(1).optional(),
replace_failed_page_mode: z.nativeEnum(FailPageMode).nullable().optional(),
replace_failed_page_with_error_message_prefix: z.string().optional(),
replace_failed_page_with_error_message_suffix: z.string().optional(),
});
-3
View File
@@ -1,3 +0,0 @@
export async function sleep(ms: number): Promise<void> {
return new Promise((resolve) => setTimeout(resolve, ms));
}
-23
View File
@@ -1,23 +0,0 @@
{
"extends": "../../tsconfig.json",
"compilerOptions": {
"rootDir": "./src",
"outDir": "./dist/type",
"tsBuildInfoFile": "./dist/.tsbuildinfo",
"emitDeclarationOnly": true,
"moduleResolution": "Bundler",
"skipLibCheck": true,
"strict": true,
"types": []
},
"include": ["./src"],
"exclude": ["node_modules"],
"references": [
{
"path": "../core/tsconfig.json"
},
{
"path": "../env/tsconfig.json"
}
]
}
-9
View File
@@ -1,9 +0,0 @@
{
"$schema": "https://turbo.build/schema.json",
"extends": ["//"],
"tasks": {
"build": {
"outputs": ["**/dist/**", "src/client/**"]
}
}
}
+7
View File
@@ -1,5 +1,12 @@
# @llamaindex/community
## 0.0.101
### Patch Changes
- Updated dependencies [f9f1de9]
- @llamaindex/core@0.6.19
## 0.0.100
### Patch Changes
+1 -1
View File
@@ -1,7 +1,7 @@
{
"name": "@llamaindex/community",
"description": "Community package for LlamaIndexTS",
"version": "0.0.100",
"version": "0.0.101",
"type": "module",
"types": "dist/type/index.d.ts",
"main": "dist/cjs/index.js",
+6
View File
@@ -1,5 +1,11 @@
# @llamaindex/core
## 0.6.19
### Patch Changes
- f9f1de9: Use logger interface instead of directly hardcoding console.log
## 0.6.18
### Patch Changes
+1 -1
View File
@@ -1,7 +1,7 @@
{
"name": "@llamaindex/core",
"type": "module",
"version": "0.6.18",
"version": "0.6.19",
"description": "LlamaIndex Core Module",
"exports": {
"./agent": {
+13
View File
@@ -1,5 +1,18 @@
# @llamaindex/experimental
## 0.0.202
### Patch Changes
- Updated dependencies [049471b]
- llamaindex@0.11.25
## 0.0.201
### Patch Changes
- llamaindex@0.11.24
## 0.0.200
### Patch Changes
+1 -1
View File
@@ -1,7 +1,7 @@
{
"name": "@llamaindex/experimental",
"description": "Experimental package for LlamaIndexTS",
"version": "0.0.200",
"version": "0.0.202",
"type": "module",
"types": "dist/type/index.d.ts",
"main": "dist/cjs/index.js",
+19
View File
@@ -1,5 +1,24 @@
# llamaindex
## 0.11.25
### Patch Changes
- 049471b: Moved LlamaCloudFileService, LlamaCloudIndex and LlamaCloudRetriever to llama-cloud-services
- Updated dependencies [049471b]
- @llamaindex/cloud@4.1.0
## 0.11.24
### Patch Changes
- Updated dependencies [c3bf3c7]
- Updated dependencies [f9f1de9]
- @llamaindex/cloud@4.0.28
- @llamaindex/core@0.6.19
- @llamaindex/node-parser@2.0.19
- @llamaindex/workflow@1.1.20
## 0.11.23
### Patch Changes
+2 -2
View File
@@ -1,6 +1,6 @@
{
"name": "llamaindex",
"version": "0.11.23",
"version": "0.11.25",
"license": "MIT",
"type": "module",
"keywords": [
@@ -20,13 +20,13 @@
"llamaindex"
],
"dependencies": {
"@llamaindex/cloud": "workspace:*",
"@llamaindex/core": "workspace:*",
"@llamaindex/env": "workspace:*",
"@llamaindex/node-parser": "workspace:*",
"@llamaindex/workflow": "workspace:*",
"@types/lodash": "^4.17.7",
"@types/node": "^24.0.13",
"llama-cloud-services": "^0.1.0",
"lodash": "^4.17.21",
"magic-bytes.js": "^1.10.0"
},
@@ -1,120 +0,0 @@
import {
addFilesToPipelineApiApiV1PipelinesPipelineIdFilesPut,
getPipelineFileStatusApiV1PipelinesPipelineIdFilesFileIdStatusGet,
listPipelineFilesApiV1PipelinesPipelineIdFilesGet,
listProjectsApiV1ProjectsGet,
readFileContentApiV1FilesIdContentGet,
searchPipelinesApiV1PipelinesGet,
uploadFileApiV1FilesPost,
} from "@llamaindex/cloud/api";
import { initService } from "./utils.js";
export class LLamaCloudFileService {
/**
* Get list of projects, each project contains a list of pipelines
*/
public static async getAllProjectsWithPipelines() {
initService();
try {
const { data: projects } = await listProjectsApiV1ProjectsGet({
throwOnError: true,
});
const { data: pipelines } = await searchPipelinesApiV1PipelinesGet({
throwOnError: true,
});
return projects.map((project) => ({
...project,
pipelines: pipelines.filter((p) => p.project_id === project.id),
}));
} catch (error) {
console.error("Error listing projects and pipelines:", error);
return [];
}
}
/**
* Upload a file to a pipeline in LlamaCloud
*/
public static async addFileToPipeline(
projectId: string,
pipelineId: string,
uploadFile: File | Blob,
// eslint-disable-next-line @typescript-eslint/no-explicit-any
customMetadata: Record<string, any> = {},
) {
initService();
const { data: file } = await uploadFileApiV1FilesPost({
query: { project_id: projectId },
body: {
upload_file: uploadFile,
},
throwOnError: true,
});
const files = [
{
file_id: file.id,
custom_metadata: { file_id: file.id, ...customMetadata },
},
];
await addFilesToPipelineApiApiV1PipelinesPipelineIdFilesPut({
path: {
pipeline_id: pipelineId,
},
body: files,
});
// Wait 2s for the file to be processed
const maxAttempts = 20;
let attempt = 0;
while (attempt < maxAttempts) {
const { data: result } =
await getPipelineFileStatusApiV1PipelinesPipelineIdFilesFileIdStatusGet(
{
path: {
pipeline_id: pipelineId,
file_id: file.id,
},
throwOnError: true,
},
);
if (result.status === "ERROR") {
throw new Error(`File processing failed: ${JSON.stringify(result)}`);
}
if (result.status === "SUCCESS") {
// File is ingested - return the file id
return file.id;
}
attempt += 1;
await new Promise((resolve) => setTimeout(resolve, 100)); // Sleep for 100ms
}
throw new Error(
`File processing did not complete after ${maxAttempts} attempts. Check your LlamaCloud index at https://cloud.llamaindex.ai/project/${projectId}/deploy/${pipelineId} for more details.`,
);
}
/**
* Get download URL for a file in LlamaCloud
*/
public static async getFileUrl(pipelineId: string, filename: string) {
initService();
const { data: allPipelineFiles } =
await listPipelineFilesApiV1PipelinesPipelineIdFilesGet({
path: {
pipeline_id: pipelineId,
},
throwOnError: true,
});
const file = allPipelineFiles.find((file) => file.name === filename);
if (!file?.file_id) return null;
const { data: fileContent } = await readFileContentApiV1FilesIdContentGet({
path: {
id: file.file_id,
},
query: {
project_id: file.project_id,
},
throwOnError: true,
});
return fileContent.url;
}
}
@@ -1,414 +0,0 @@
import type { BaseNodePostprocessor } from "@llamaindex/core/postprocessor";
import type { BaseQueryEngine } from "@llamaindex/core/query-engine";
import type { BaseSynthesizer } from "@llamaindex/core/response-synthesizers";
import type { Document } from "@llamaindex/core/schema";
import { RetrieverQueryEngine } from "../engines/query/RetrieverQueryEngine.js";
import type { CloudRetrieveParams } from "./LlamaCloudRetriever.js";
import { LlamaCloudRetriever } from "./LlamaCloudRetriever.js";
import type { CloudConstructorParams } from "./type.js";
import {
getAppBaseUrl,
getPipelineId,
getProjectId,
initService,
} from "./utils.js";
import {
createBatchPipelineDocumentsApiV1PipelinesPipelineIdDocumentsPost,
deletePipelineDocumentApiV1PipelinesPipelineIdDocumentsDocumentIdDelete,
getPipelineDocumentStatusApiV1PipelinesPipelineIdDocumentsDocumentIdStatusGet,
getPipelineStatusApiV1PipelinesPipelineIdStatusGet,
type PipelineCreateReadable,
searchPipelinesApiV1PipelinesGet,
upsertBatchPipelineDocumentsApiV1PipelinesPipelineIdDocumentsPut,
upsertPipelineApiV1PipelinesPut,
} from "@llamaindex/cloud/api";
import type { BaseRetriever } from "@llamaindex/core/retriever";
import { getEnv } from "@llamaindex/env";
import type { QueryToolParams } from "../indices/BaseIndex.js";
import { Settings } from "../Settings.js";
import { QueryEngineTool } from "../tools/QueryEngineTool.js";
export class LlamaCloudIndex {
params: CloudConstructorParams;
constructor(params: CloudConstructorParams) {
this.params = params;
initService(this.params);
}
private async waitForPipelineIngestion(
verbose = Settings.debug,
raiseOnError = false,
): Promise<void> {
const pipelineId = await this.getPipelineId();
if (verbose) {
console.log("Waiting for pipeline ingestion: ");
}
while (true) {
const { data: pipelineStatus } =
await getPipelineStatusApiV1PipelinesPipelineIdStatusGet({
path: {
pipeline_id: pipelineId,
},
throwOnError: true,
});
if (pipelineStatus.status === "SUCCESS") {
if (verbose) {
console.log("Pipeline ingestion completed successfully");
}
break;
}
if (pipelineStatus.status === "ERROR") {
if (verbose) {
console.error("Pipeline ingestion failed");
}
if (raiseOnError) {
throw new Error("Pipeline ingestion failed");
}
}
if (verbose) {
process.stdout.write(".");
}
await new Promise((resolve) => setTimeout(resolve, 1000));
}
}
private async waitForDocumentIngestion(
docIds: string[],
verbose = Settings.debug,
raiseOnError = false,
): Promise<void> {
const pipelineId = await this.getPipelineId();
if (verbose) {
console.log("Loading data: ");
}
const pendingDocs = new Set(docIds);
while (pendingDocs.size) {
const docsToRemove = new Set<string>();
for (const doc of pendingDocs) {
const {
data: { status },
} =
await getPipelineDocumentStatusApiV1PipelinesPipelineIdDocumentsDocumentIdStatusGet(
{
path: { pipeline_id: pipelineId, document_id: doc },
throwOnError: true,
},
);
if (status === "NOT_STARTED" || status === "IN_PROGRESS") {
continue;
}
if (status === "ERROR") {
if (verbose) {
console.error(`Document ingestion failed for ${doc}`);
}
if (raiseOnError) {
throw new Error(`Document ingestion failed for ${doc}`);
}
}
docsToRemove.add(doc);
}
for (const doc of docsToRemove) {
pendingDocs.delete(doc);
}
if (pendingDocs.size) {
if (verbose) {
process.stdout.write(".");
}
await new Promise((resolve) => setTimeout(resolve, 500));
}
}
if (verbose) {
console.log("Done!");
}
await this.waitForPipelineIngestion(verbose, raiseOnError);
}
public async getPipelineId(
name?: string,
projectName?: string,
organizationId?: string,
): Promise<string> {
return await getPipelineId(
name ?? this.params.name,
projectName ?? this.params.projectName,
organizationId ?? this.params.organizationId,
);
}
public async getProjectId(
projectName?: string,
organizationId?: string,
): Promise<string> {
return await getProjectId(
projectName ?? this.params.projectName,
organizationId ?? this.params.organizationId,
);
}
/**
* Adds documents to the given index parameters. If the index does not exist, it will be created.
*
* @param params - An object containing the following properties:
* - documents: An array of Document objects to be added to the index.
* - verbose: Optional boolean to enable verbose logging.
* - Additional properties from CloudConstructorParams.
* @returns A Promise that resolves to a new LlamaCloudIndex instance.
*/
static async fromDocuments(
params: {
documents: Document[];
verbose?: boolean;
} & CloudConstructorParams,
config?: {
embedding: PipelineCreateReadable["embedding_config"];
transform: PipelineCreateReadable["transform_config"];
},
): Promise<LlamaCloudIndex> {
const index = new LlamaCloudIndex({ ...params });
await index.ensureIndex({ ...config, verbose: params.verbose ?? false });
await index.addDocuments(params.documents, params.verbose);
return index;
}
async addDocuments(documents: Document[], verbose?: boolean): Promise<void> {
const apiUrl = getAppBaseUrl();
const projectId = await this.getProjectId();
const pipelineId = await this.getPipelineId();
await upsertBatchPipelineDocumentsApiV1PipelinesPipelineIdDocumentsPut({
path: {
pipeline_id: pipelineId,
},
body: documents.map((doc) => ({
metadata: doc.metadata,
text: doc.text,
excluded_embed_metadata_keys: doc.excludedEmbedMetadataKeys,
excluded_llm_metadata_keys: doc.excludedEmbedMetadataKeys,
id: doc.id_,
})),
});
while (true) {
const { data: pipelineStatus } =
await getPipelineStatusApiV1PipelinesPipelineIdStatusGet({
path: { pipeline_id: pipelineId },
throwOnError: true,
});
if (pipelineStatus.status === "SUCCESS") {
console.info(
"Documents ingested successfully, pipeline is ready to use",
);
break;
}
if (pipelineStatus.status === "ERROR") {
console.error(
`Some documents failed to ingest, check your pipeline logs at ${apiUrl}/project/${projectId}/deploy/${pipelineId}`,
);
throw new Error("Some documents failed to ingest");
}
if (pipelineStatus.status === "PARTIAL_SUCCESS") {
console.info(
`Documents ingestion partially succeeded, to check a more complete status check your pipeline at ${apiUrl}/project/${projectId}/deploy/${pipelineId}`,
);
break;
}
if (verbose) {
process.stdout.write(".");
}
await new Promise((resolve) => setTimeout(resolve, 1000));
}
if (verbose) {
console.info(
`Ingestion completed, find your index at ${apiUrl}/project/${projectId}/deploy/${pipelineId}`,
);
}
}
asRetriever(params: CloudRetrieveParams = {}): BaseRetriever {
return new LlamaCloudRetriever({ ...this.params, ...params });
}
asQueryEngine(
params?: {
responseSynthesizer?: BaseSynthesizer;
preFilters?: unknown;
nodePostprocessors?: BaseNodePostprocessor[];
} & CloudRetrieveParams,
): BaseQueryEngine {
const retriever = new LlamaCloudRetriever({
...this.params,
...params,
});
return new RetrieverQueryEngine(
retriever,
params?.responseSynthesizer,
params?.nodePostprocessors,
);
}
asQueryTool(params: QueryToolParams): QueryEngineTool {
if (params.options) {
params.retriever = this.asRetriever(params.options);
}
return new QueryEngineTool({
queryEngine: this.asQueryEngine(params),
metadata: params?.metadata,
includeSourceNodes: params?.includeSourceNodes ?? false,
});
}
queryTool(params: QueryToolParams): QueryEngineTool {
return this.asQueryTool(params);
}
async insert(document: Document) {
const pipelineId = await this.getPipelineId();
await createBatchPipelineDocumentsApiV1PipelinesPipelineIdDocumentsPost({
path: {
pipeline_id: pipelineId,
},
body: [
{
metadata: document.metadata,
text: document.text,
excluded_embed_metadata_keys: document.excludedLlmMetadataKeys,
excluded_llm_metadata_keys: document.excludedEmbedMetadataKeys,
id: document.id_,
},
],
});
await this.waitForDocumentIngestion([document.id_]);
}
async delete(document: Document) {
const pipelineId = await this.getPipelineId();
await deletePipelineDocumentApiV1PipelinesPipelineIdDocumentsDocumentIdDelete(
{
path: {
pipeline_id: pipelineId,
document_id: document.id_,
},
},
);
await this.waitForPipelineIngestion();
}
async refreshDoc(document: Document) {
const pipelineId = await this.getPipelineId();
await upsertBatchPipelineDocumentsApiV1PipelinesPipelineIdDocumentsPut({
path: {
pipeline_id: pipelineId,
},
body: [
{
metadata: document.metadata,
text: document.text,
excluded_embed_metadata_keys: document.excludedLlmMetadataKeys,
excluded_llm_metadata_keys: document.excludedEmbedMetadataKeys,
id: document.id_,
},
],
});
await this.waitForDocumentIngestion([document.id_]);
}
public async ensureIndex(config?: {
embedding?: PipelineCreateReadable["embedding_config"];
transform?: PipelineCreateReadable["transform_config"];
verbose?: boolean;
}): Promise<void> {
const projectId = await this.getProjectId();
const { data: pipelines } = await searchPipelinesApiV1PipelinesGet({
query: {
project_id: projectId,
pipeline_name: this.params.name,
},
throwOnError: true,
});
if (pipelines.length === 0) {
// no pipeline found, create a new one
let embeddingConfig = config?.embedding;
if (!embeddingConfig) {
// no embedding config provided, use OpenAI as default
const openAIApiKey = getEnv("OPENAI_API_KEY");
const embeddingModel = getEnv("EMBEDDING_MODEL");
if (!openAIApiKey || !embeddingModel) {
throw new Error(
"No embedding configuration provided. Fallback to OpenAI embedding model. OPENAI_API_KEY and EMBEDDING_MODEL environment variables must be set.",
);
}
embeddingConfig = {
type: "OPENAI_EMBEDDING",
component: {
api_key: openAIApiKey,
model_name: embeddingModel,
},
};
}
let transformConfig = config?.transform;
if (!transformConfig) {
transformConfig = {
mode: "auto",
chunk_size: 1024,
chunk_overlap: 200,
};
}
const { data: pipeline } = await upsertPipelineApiV1PipelinesPut({
query: {
project_id: projectId,
},
body: {
name: this.params.name,
embedding_config: embeddingConfig,
transform_config: transformConfig,
},
throwOnError: true,
});
if (config?.verbose) {
console.log(
`Created pipeline ${pipeline.id} with name ${pipeline.name}`,
);
}
}
}
}
@@ -1,103 +0,0 @@
import {
type MetadataFilter,
type MetadataFilters,
type RetrievalParams,
runSearchApiV1PipelinesPipelineIdRetrievePost,
type TextNodeWithScore,
} from "@llamaindex/cloud/api";
import { DEFAULT_PROJECT_NAME } from "@llamaindex/core/global";
import type { QueryBundle } from "@llamaindex/core/query-engine";
import { BaseRetriever } from "@llamaindex/core/retriever";
import type { NodeWithScore } from "@llamaindex/core/schema";
import { jsonToNode, ObjectType } from "@llamaindex/core/schema";
import { extractText } from "@llamaindex/core/utils";
import type { ClientParams, CloudConstructorParams } from "./type.js";
import { getPipelineId, initService } from "./utils.js";
export type CloudRetrieveParams = Omit<
RetrievalParams,
"query" | "search_filters" | "dense_similarity_top_k"
> & { similarityTopK?: number; filters?: MetadataFilters };
export class LlamaCloudRetriever extends BaseRetriever {
clientParams: ClientParams;
retrieveParams: CloudRetrieveParams;
organizationId?: string;
projectName: string = DEFAULT_PROJECT_NAME;
pipelineName: string;
private resultNodesToNodeWithScore(
nodes: TextNodeWithScore[],
): NodeWithScore[] {
return nodes.map((node: TextNodeWithScore) => {
const textNode = jsonToNode(node.node, ObjectType.TEXT);
textNode.metadata = {
...textNode.metadata,
...node.node.extra_info, // append LlamaCloud extra_info to node metadata (file_name, pipeline_id, etc.)
};
return {
// Currently LlamaCloud only supports text nodes
node: textNode,
score: node.score ?? undefined,
};
});
}
// LlamaCloud expects null values for filters, but LlamaIndexTS uses undefined for empty values
// This function converts the undefined values to null
private convertFilter(filters?: MetadataFilters): MetadataFilters | null {
if (!filters) return null;
const processFilter = (
filter: MetadataFilter | MetadataFilters,
): MetadataFilter | MetadataFilters => {
if ("filters" in filter) {
// type MetadataFilters
return { ...filter, filters: filter.filters.map(processFilter) };
}
return { ...filter, value: filter.value ?? null };
};
return { ...filters, filters: filters.filters.map(processFilter) };
}
constructor(params: CloudConstructorParams & CloudRetrieveParams) {
super();
this.clientParams = { apiKey: params.apiKey, baseUrl: params.baseUrl };
initService(this.clientParams);
this.retrieveParams = params;
this.pipelineName = params.name;
if (params.projectName) {
this.projectName = params.projectName;
}
if (params.organizationId) {
this.organizationId = params.organizationId;
}
}
async _retrieve(query: QueryBundle): Promise<NodeWithScore[]> {
const pipelineId = await getPipelineId(
this.pipelineName,
this.projectName,
this.organizationId,
);
const filters = this.convertFilter(this.retrieveParams.filters);
const { data: results } =
await runSearchApiV1PipelinesPipelineIdRetrievePost({
throwOnError: true,
path: {
pipeline_id: pipelineId,
},
body: {
...this.retrieveParams,
query: extractText(query),
search_filters: filters,
dense_similarity_top_k: this.retrieveParams.similarityTopK!,
},
});
return this.resultNodesToNodeWithScore(results.retrieval_nodes);
}
}
+7 -7
View File
@@ -1,7 +1,7 @@
export { LLamaCloudFileService } from "./LLamaCloudFileService.js";
export { LlamaCloudIndex } from "./LlamaCloudIndex.js";
export {
LlamaCloudRetriever,
type CloudRetrieveParams,
} from "./LlamaCloudRetriever.js";
export type { CloudConstructorParams } from "./type.js";
console.warn(`
The classes LlamaCloudFileService, LlamaCloudIndex and LlamaCloudRetriever have been moved to the package llama-cloud-services.
* Please migrate your imports to llama-cloud-services, e.g. import { LlamaCloudIndex } from "llama-cloud-services";
* See the documentation: https://docs.cloud.llamaindex.ai
`);
export * from "llama-cloud-services";
-10
View File
@@ -1,10 +0,0 @@
export type ClientParams = {
apiKey?: string | undefined;
baseUrl?: string | undefined;
};
export type CloudConstructorParams = {
name: string;
projectName: string;
organizationId?: string | undefined;
} & ClientParams;
-97
View File
@@ -1,97 +0,0 @@
import {
client,
listProjectsApiV1ProjectsGet,
searchPipelinesApiV1PipelinesGet,
} from "@llamaindex/cloud/api";
import { DEFAULT_BASE_URL } from "@llamaindex/core/global";
import { getEnv } from "@llamaindex/env";
import type { ClientParams } from "./type.js";
function getBaseUrl(baseUrl?: string): string {
return baseUrl ?? getEnv("LLAMA_CLOUD_BASE_URL") ?? DEFAULT_BASE_URL;
}
export function getAppBaseUrl(): string {
return client.getConfig().baseUrl?.replace(/api\./, "") ?? "";
}
// fixme: refactor this to init at the top level or module level
let initOnce = false;
export function initService({ apiKey, baseUrl }: ClientParams = {}) {
if (initOnce) {
return;
}
initOnce = true;
client.setConfig({
baseUrl: getBaseUrl(baseUrl),
throwOnError: true,
});
const token = apiKey ?? getEnv("LLAMA_CLOUD_API_KEY");
client.interceptors.request.use((request) => {
request.headers.set("Authorization", `Bearer ${token}`);
return request;
});
client.interceptors.error.use((error) => {
throw new Error(
`LlamaCloud API request failed. Error details: ${JSON.stringify(error)}`,
);
});
if (!token) {
throw new Error(
"API Key is required for LlamaCloudIndex. Please pass the apiKey parameter",
);
}
}
export async function getProjectId(
projectName: string,
organizationId?: string,
): Promise<string> {
const { data: projects } = await listProjectsApiV1ProjectsGet({
query: {
project_name: projectName,
organization_id: organizationId ?? null,
},
throwOnError: true,
});
if (projects.length === 0) {
throw new Error(
`Unknown project name ${projectName}. Please confirm a managed project with this name exists.`,
);
} else if (projects.length > 1) {
throw new Error(
`Multiple projects found with name ${projectName}. Please specify organization_id.`,
);
}
const project = projects[0]!;
if (!project.id) {
throw new Error(`No project found with name ${projectName}`);
}
return project.id;
}
export async function getPipelineId(
name: string,
projectName: string,
organizationId?: string,
): Promise<string> {
const { data: pipelines } = await searchPipelinesApiV1PipelinesGet({
query: {
project_id: await getProjectId(projectName, organizationId),
pipeline_name: name,
},
throwOnError: true,
});
if (pipelines.length === 0 || !pipelines[0]!.id) {
throw new Error(
`No pipeline found with name ${name} in project ${projectName}`,
);
}
return pipelines[0]!.id;
}
+6
View File
@@ -1,5 +1,11 @@
# @llamaindex/core-test
## 0.1.15
### Patch Changes
- @llamaindex/openai@0.4.14
## 0.1.14
### Patch Changes
+1 -1
View File
@@ -1,7 +1,7 @@
{
"name": "@llamaindex/llamaindex-test",
"private": true,
"version": "0.1.14",
"version": "0.1.15",
"type": "module",
"scripts": {
"test": "vitest run"
+7
View File
@@ -1,5 +1,12 @@
# @llamaindex/node-parser
## 2.0.19
### Patch Changes
- Updated dependencies [f9f1de9]
- @llamaindex/core@0.6.19
## 2.0.18
### Patch Changes
+1 -1
View File
@@ -1,6 +1,6 @@
{
"name": "@llamaindex/node-parser",
"version": "2.0.18",
"version": "2.0.19",
"description": "Node parser for LlamaIndex",
"type": "module",
"exports": {
@@ -1,5 +1,12 @@
# @llamaindex/anthropic
## 0.3.21
### Patch Changes
- Updated dependencies [f9f1de9]
- @llamaindex/core@0.6.19
## 0.3.20
### Patch Changes
+1 -1
View File
@@ -1,7 +1,7 @@
{
"name": "@llamaindex/anthropic",
"description": "Anthropic Adapter for LlamaIndex",
"version": "0.3.20",
"version": "0.3.21",
"type": "module",
"main": "./dist/index.cjs",
"module": "./dist/index.js",
@@ -1,5 +1,12 @@
# @llamaindex/assemblyai
## 0.1.18
### Patch Changes
- Updated dependencies [f9f1de9]
- @llamaindex/core@0.6.19
## 0.1.17
### Patch Changes
+1 -1
View File
@@ -1,7 +1,7 @@
{
"name": "@llamaindex/assemblyai",
"description": "AssemblyAI Reader for LlamaIndex",
"version": "0.1.17",
"version": "0.1.18",
"type": "module",
"types": "dist/index.d.ts",
"main": "dist/index.cjs",
+7
View File
@@ -1,5 +1,12 @@
# @llamaindex/community
## 0.0.115
### Patch Changes
- Updated dependencies [f9f1de9]
- @llamaindex/core@0.6.19
## 0.0.114
### Patch Changes
+1 -1
View File
@@ -1,7 +1,7 @@
{
"name": "@llamaindex/aws",
"description": "AWS package for LlamaIndexTS",
"version": "0.0.114",
"version": "0.0.115",
"type": "module",
"types": "dist/type/index.d.ts",
"main": "dist/cjs/index.js",
+8
View File
@@ -1,5 +1,13 @@
# @llamaindex/clip
## 0.0.70
### Patch Changes
- Updated dependencies [f9f1de9]
- @llamaindex/core@0.6.19
- @llamaindex/openai@0.4.14
## 0.0.69
### Patch Changes
+1 -1
View File
@@ -1,7 +1,7 @@
{
"name": "@llamaindex/clip",
"description": "Clip Embedding Adapter for LlamaIndex",
"version": "0.0.69",
"version": "0.0.70",
"type": "module",
"types": "dist/index.d.ts",
"main": "dist/index.cjs",
+7
View File
@@ -1,5 +1,12 @@
# @llamaindex/cohere
## 0.0.33
### Patch Changes
- Updated dependencies [f9f1de9]
- @llamaindex/core@0.6.19
## 0.0.32
### Patch Changes
+1 -1
View File
@@ -1,7 +1,7 @@
{
"name": "@llamaindex/cohere",
"description": "Cohere Adapter for LlamaIndex",
"version": "0.0.32",
"version": "0.0.33",
"type": "module",
"main": "./dist/index.cjs",
"module": "./dist/index.js",
@@ -1,5 +1,13 @@
# @llamaindex/deepinfra
## 0.0.70
### Patch Changes
- Updated dependencies [f9f1de9]
- @llamaindex/core@0.6.19
- @llamaindex/openai@0.4.14
## 0.0.69
### Patch Changes
+1 -1
View File
@@ -1,7 +1,7 @@
{
"name": "@llamaindex/deepinfra",
"description": "Deepinfra Adapter for LlamaIndex",
"version": "0.0.69",
"version": "0.0.70",
"type": "module",
"main": "./dist/index.cjs",
"module": "./dist/index.js",
+6
View File
@@ -1,5 +1,11 @@
# @llamaindex/deepseek
## 0.0.31
### Patch Changes
- @llamaindex/openai@0.4.14
## 0.0.30
### Patch Changes
+1 -1
View File
@@ -1,7 +1,7 @@
{
"name": "@llamaindex/deepseek",
"description": "DeepSeek Adapter for LlamaIndex",
"version": "0.0.30",
"version": "0.0.31",
"type": "module",
"main": "./dist/index.cjs",
"module": "./dist/index.js",
+7
View File
@@ -1,5 +1,12 @@
# @llamaindex/discord
## 0.1.18
### Patch Changes
- Updated dependencies [f9f1de9]
- @llamaindex/core@0.6.19
## 0.1.17
### Patch Changes
+1 -1
View File
@@ -1,7 +1,7 @@
{
"name": "@llamaindex/discord",
"description": "Discord Reader for LlamaIndex",
"version": "0.1.17",
"version": "0.1.18",
"type": "module",
"types": "dist/index.d.ts",
"main": "dist/index.cjs",
+7
View File
@@ -1,5 +1,12 @@
# @llamaindex/excel
## 0.1.19
### Patch Changes
- Updated dependencies [f9f1de9]
- @llamaindex/core@0.6.19
## 0.1.18
### Patch Changes
+1 -1
View File
@@ -1,7 +1,7 @@
{
"name": "@llamaindex/excel",
"description": "Excel Reader for LlamaIndex",
"version": "0.1.18",
"version": "0.1.19",
"type": "module",
"types": "dist/index.d.ts",
"main": "dist/index.cjs",
@@ -1,5 +1,11 @@
# @llamaindex/fireworks
## 0.0.30
### Patch Changes
- @llamaindex/openai@0.4.14
## 0.0.29
### Patch Changes
+1 -1
View File
@@ -1,7 +1,7 @@
{
"name": "@llamaindex/fireworks",
"description": "Fireworks Adapter for LlamaIndex",
"version": "0.0.29",
"version": "0.0.30",
"type": "module",
"main": "./dist/index.cjs",
"module": "./dist/index.js",
+7
View File
@@ -1,5 +1,12 @@
# @llamaindex/google
## 0.3.18
### Patch Changes
- Updated dependencies [f9f1de9]
- @llamaindex/core@0.6.19
## 0.3.17
### Patch Changes
+1 -1
View File
@@ -1,7 +1,7 @@
{
"name": "@llamaindex/google",
"description": "Google Adapter for LlamaIndex",
"version": "0.3.17",
"version": "0.3.18",
"type": "module",
"main": "./dist/index.cjs",
"module": "./dist/index.js",
+6
View File
@@ -1,5 +1,11 @@
# @llamaindex/groq
## 0.0.86
### Patch Changes
- @llamaindex/openai@0.4.14
## 0.0.85
### Patch Changes
+1 -1
View File
@@ -1,7 +1,7 @@
{
"name": "@llamaindex/groq",
"description": "Groq Adapter for LlamaIndex",
"version": "0.0.85",
"version": "0.0.86",
"type": "module",
"main": "./dist/index.cjs",
"module": "./dist/index.js",
@@ -1,5 +1,13 @@
# @llamaindex/huggingface
## 0.1.24
### Patch Changes
- Updated dependencies [f9f1de9]
- @llamaindex/core@0.6.19
- @llamaindex/openai@0.4.14
## 0.1.23
### Patch Changes
+1 -1
View File
@@ -1,7 +1,7 @@
{
"name": "@llamaindex/huggingface",
"description": "Huggingface Adapter for LlamaIndex",
"version": "0.1.23",
"version": "0.1.24",
"type": "module",
"types": "dist/index.d.ts",
"main": "dist/index.cjs",
+8
View File
@@ -1,5 +1,13 @@
# @llamaindex/jinaai
## 0.0.30
### Patch Changes
- Updated dependencies [f9f1de9]
- @llamaindex/core@0.6.19
- @llamaindex/openai@0.4.14
## 0.0.29
### Patch Changes
+1 -1
View File
@@ -1,7 +1,7 @@
{
"name": "@llamaindex/jinaai",
"description": "JinaAI Adapter for LlamaIndex",
"version": "0.0.29",
"version": "0.0.30",
"type": "module",
"main": "./dist/index.cjs",
"module": "./dist/index.js",
+7
View File
@@ -1,5 +1,12 @@
# @llamaindex/mistral
## 0.1.19
### Patch Changes
- Updated dependencies [f9f1de9]
- @llamaindex/core@0.6.19
## 0.1.18
### Patch Changes
+1 -1
View File
@@ -1,7 +1,7 @@
{
"name": "@llamaindex/mistral",
"description": "Mistral Adapter for LlamaIndex",
"version": "0.1.18",
"version": "0.1.19",
"type": "module",
"main": "./dist/index.cjs",
"module": "./dist/index.js",
@@ -1,5 +1,12 @@
# @llamaindex/mixedbread
## 0.0.33
### Patch Changes
- Updated dependencies [f9f1de9]
- @llamaindex/core@0.6.19
## 0.0.32
### Patch Changes
+1 -1
View File
@@ -1,7 +1,7 @@
{
"name": "@llamaindex/mixedbread",
"description": "Mixedbread Adapter for LlamaIndex",
"version": "0.0.32",
"version": "0.0.33",
"type": "module",
"main": "./dist/index.cjs",
"module": "./dist/index.js",
+7
View File
@@ -1,5 +1,12 @@
# @llamaindex/notion
## 0.1.18
### Patch Changes
- Updated dependencies [f9f1de9]
- @llamaindex/core@0.6.19
## 0.1.17
### Patch Changes
+1 -1
View File
@@ -1,7 +1,7 @@
{
"name": "@llamaindex/notion",
"description": "Notion Reader for LlamaIndex",
"version": "0.1.17",
"version": "0.1.18",
"type": "module",
"types": "dist/index.d.ts",
"main": "dist/index.cjs",
+7
View File
@@ -1,5 +1,12 @@
# @llamaindex/ollama
## 0.1.19
### Patch Changes
- Updated dependencies [f9f1de9]
- @llamaindex/core@0.6.19
## 0.1.18
### Patch Changes
+1 -1
View File
@@ -1,7 +1,7 @@
{
"name": "@llamaindex/ollama",
"description": "Ollama Adapter for LlamaIndex",
"version": "0.1.18",
"version": "0.1.19",
"type": "module",
"main": "./dist/index.cjs",
"module": "./dist/index.js",
+7
View File
@@ -1,5 +1,12 @@
# @llamaindex/openai
## 0.4.14
### Patch Changes
- Updated dependencies [f9f1de9]
- @llamaindex/core@0.6.19
## 0.4.13
### Patch Changes

Some files were not shown because too many files have changed in this diff Show More