@langgraph-js/pure-graph 1.0.2 → 1.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.prettierrc +11 -0
- package/README.md +104 -10
- package/bun.lock +209 -0
- package/dist/adapter/hono/assistants.js +3 -9
- package/dist/adapter/hono/endpoint.js +1 -2
- package/dist/adapter/hono/runs.js +6 -39
- package/dist/adapter/hono/threads.js +5 -46
- package/dist/adapter/nextjs/endpoint.d.ts +1 -0
- package/dist/adapter/nextjs/endpoint.js +2 -0
- package/dist/adapter/nextjs/index.d.ts +1 -0
- package/dist/adapter/nextjs/index.js +2 -0
- package/dist/adapter/nextjs/router.d.ts +5 -0
- package/dist/adapter/nextjs/router.js +168 -0
- package/dist/adapter/{hono → nextjs}/zod.d.ts +5 -5
- package/dist/adapter/{hono → nextjs}/zod.js +22 -5
- package/dist/adapter/zod.d.ts +577 -0
- package/dist/adapter/zod.js +119 -0
- package/dist/createEndpoint.d.ts +1 -2
- package/dist/createEndpoint.js +4 -3
- package/dist/global.d.ts +6 -4
- package/dist/global.js +10 -5
- package/dist/graph/stream.d.ts +1 -1
- package/dist/graph/stream.js +18 -10
- package/dist/index.d.ts +1 -0
- package/dist/index.js +1 -0
- package/dist/queue/stream_queue.d.ts +5 -3
- package/dist/queue/stream_queue.js +4 -2
- package/dist/storage/index.d.ts +9 -4
- package/dist/storage/index.js +38 -3
- package/dist/storage/redis/queue.d.ts +39 -0
- package/dist/storage/redis/queue.js +130 -0
- package/dist/storage/sqlite/DB.d.ts +3 -0
- package/dist/storage/sqlite/DB.js +14 -0
- package/dist/storage/sqlite/checkpoint.d.ts +18 -0
- package/dist/storage/sqlite/checkpoint.js +374 -0
- package/dist/storage/sqlite/threads.d.ts +43 -0
- package/dist/storage/sqlite/threads.js +266 -0
- package/dist/storage/sqlite/type.d.ts +15 -0
- package/dist/storage/sqlite/type.js +1 -0
- package/dist/utils/createEntrypointGraph.d.ts +14 -0
- package/dist/utils/createEntrypointGraph.js +11 -0
- package/dist/utils/getGraph.js +3 -3
- package/examples/nextjs/README.md +36 -0
- package/examples/nextjs/app/api/langgraph/[...path]/route.ts +10 -0
- package/examples/nextjs/app/favicon.ico +0 -0
- package/examples/nextjs/app/globals.css +26 -0
- package/examples/nextjs/app/layout.tsx +34 -0
- package/examples/nextjs/app/page.tsx +211 -0
- package/examples/nextjs/next.config.ts +26 -0
- package/examples/nextjs/package.json +24 -0
- package/examples/nextjs/postcss.config.mjs +5 -0
- package/examples/nextjs/tsconfig.json +27 -0
- package/package.json +9 -4
- package/packages/agent-graph/demo.json +35 -0
- package/packages/agent-graph/package.json +18 -0
- package/packages/agent-graph/src/index.ts +47 -0
- package/packages/agent-graph/src/tools/tavily.ts +9 -0
- package/packages/agent-graph/src/tools.ts +38 -0
- package/packages/agent-graph/src/types.ts +42 -0
- package/pnpm-workspace.yaml +4 -0
- package/src/adapter/hono/assistants.ts +16 -33
- package/src/adapter/hono/endpoint.ts +1 -2
- package/src/adapter/hono/runs.ts +15 -51
- package/src/adapter/hono/threads.ts +15 -70
- package/src/adapter/nextjs/endpoint.ts +2 -0
- package/src/adapter/nextjs/index.ts +2 -0
- package/src/adapter/nextjs/router.ts +193 -0
- package/src/adapter/{hono → nextjs}/zod.ts +22 -5
- package/src/adapter/zod.ts +135 -0
- package/src/createEndpoint.ts +12 -5
- package/src/e.d.ts +3 -0
- package/src/global.ts +11 -6
- package/src/graph/stream.ts +20 -10
- package/src/index.ts +1 -0
- package/src/queue/stream_queue.ts +6 -5
- package/src/storage/index.ts +42 -4
- package/src/storage/redis/queue.ts +148 -0
- package/src/storage/sqlite/DB.ts +16 -0
- package/src/storage/sqlite/checkpoint.ts +503 -0
- package/src/storage/sqlite/threads.ts +366 -0
- package/src/storage/sqlite/type.ts +12 -0
- package/src/utils/createEntrypointGraph.ts +20 -0
- package/src/utils/getGraph.ts +3 -3
- package/test/graph/entrypoint.ts +21 -0
- package/test/graph/index.ts +45 -6
- package/test/hono.ts +5 -0
- package/test/test.ts +0 -10
package/.prettierrc
ADDED
package/README.md
CHANGED
|
@@ -1,16 +1,110 @@
|
|
|
1
1
|
# Pure Graph
|
|
2
2
|
|
|
3
|
-
Pure Graph is a
|
|
3
|
+
Pure Graph is a library that provides a standard LangGraph endpoint for integrating into various frameworks like NextJS and Hono.js. This document will guide you on how to use Pure Graph in your projects.
|
|
4
4
|
|
|
5
|
-
|
|
6
|
-
import { registerGraph } from '../src/createEndpoint';
|
|
7
|
-
import { graph } from './graph/index';
|
|
8
|
-
import { Hono } from 'hono';
|
|
9
|
-
import LangGraphApp from '../src/adapter/hono/index';
|
|
10
|
-
registerGraph('test', graph);
|
|
5
|
+
## Installation
|
|
11
6
|
|
|
12
|
-
|
|
13
|
-
app.route('/', LangGraphApp);
|
|
7
|
+
First, you need to install the Pure Graph package. You can do this using npm or yarn.
|
|
14
8
|
|
|
15
|
-
|
|
9
|
+
```sh
|
|
10
|
+
npm install @langgraph-js/pure-graph
|
|
16
11
|
```
|
|
12
|
+
|
|
13
|
+
or
|
|
14
|
+
|
|
15
|
+
```sh
|
|
16
|
+
yarn add @langgraph-js/pure-graph
|
|
17
|
+
```
|
|
18
|
+
|
|
19
|
+
## Usage
|
|
20
|
+
|
|
21
|
+
### Next.js Example
|
|
22
|
+
|
|
23
|
+
To integrate Pure Graph into a Next.js project, follow these steps:
|
|
24
|
+
|
|
25
|
+
1. **Create a Route Handler**
|
|
26
|
+
|
|
27
|
+
Create a new file `route.ts` inside the `app/api/langgraph/[...path]` directory.
|
|
28
|
+
|
|
29
|
+
```js
|
|
30
|
+
// app/api/langgraph/[...path]/route.ts
|
|
31
|
+
import { GET, POST, DELETE } from '@langgraph-js/pure-graph/dist/adapter/nextjs/router.js';
|
|
32
|
+
import { registerGraph } from '@langgraph-js/pure-graph';
|
|
33
|
+
import { graph } from './path/to/your/graph'; // Replace with your graph implementation
|
|
34
|
+
|
|
35
|
+
registerGraph('test', graph);
|
|
36
|
+
|
|
37
|
+
export { GET, POST, DELETE };
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
2. **Configure Environment Variables**
|
|
41
|
+
|
|
42
|
+
Add the necessary environment variables to your `.env` file.
|
|
43
|
+
|
|
44
|
+
```sh
|
|
45
|
+
SQLITE_DATABASE_URI=./.langgraph_api/chat.db
|
|
46
|
+
CHECKPOINT_TYPE=postgres # or redis, shallow/redis
|
|
47
|
+
REDIS_URL="" # Required if using Redis
|
|
48
|
+
```
|
|
49
|
+
|
|
50
|
+
### Hono.js Example
|
|
51
|
+
|
|
52
|
+
To integrate Pure Graph into a Hono.js project, follow these steps:
|
|
53
|
+
|
|
54
|
+
1. **Create a Hono Application**
|
|
55
|
+
|
|
56
|
+
Create a new file `app.js` in your project root.
|
|
57
|
+
|
|
58
|
+
```js
|
|
59
|
+
// app.js
|
|
60
|
+
import { registerGraph } from '@langgraph-js/pure-graph';
|
|
61
|
+
import { graph } from './path/to/your/graph'; // Replace with your graph implementation
|
|
62
|
+
import { Hono } from 'hono';
|
|
63
|
+
import LangGraphApp from '@langgraph-js/pure-graph/dist/adapter/hono/index';
|
|
64
|
+
|
|
65
|
+
registerGraph('test', graph);
|
|
66
|
+
|
|
67
|
+
const app = new Hono();
|
|
68
|
+
app.route('/', LangGraphApp);
|
|
69
|
+
|
|
70
|
+
export default app;
|
|
71
|
+
```
|
|
72
|
+
|
|
73
|
+
2. **Configure Environment Variables**
|
|
74
|
+
|
|
75
|
+
Add the necessary environment variables to your `.env` file.
|
|
76
|
+
|
|
77
|
+
```sh
|
|
78
|
+
SQLITE_DATABASE_URI=./.langgraph_api/chat.db
|
|
79
|
+
CHECKPOINT_TYPE=postgres # or redis, shallow/redis
|
|
80
|
+
REDIS_URL="" # Required if using Redis
|
|
81
|
+
```
|
|
82
|
+
|
|
83
|
+
## Environment Configuration
|
|
84
|
+
|
|
85
|
+
Here are the environment variables you need to configure:
|
|
86
|
+
|
|
87
|
+
- `SQLITE_DATABASE_URI`: Path to your SQLite database.
|
|
88
|
+
- `CHECKPOINT_TYPE`: Type of checkpoint storage (e.g., `postgres`, `redis`, `shallow/redis`).
|
|
89
|
+
- `REDIS_URL`: URL for Redis (required if using Redis).
|
|
90
|
+
|
|
91
|
+
## API Endpoints
|
|
92
|
+
|
|
93
|
+
### Assistants
|
|
94
|
+
|
|
95
|
+
- **GET /assistants**: Search for assistants.
|
|
96
|
+
- **GET /assistants/{assistantId}**: Retrieve a specific assistant graph.
|
|
97
|
+
|
|
98
|
+
### Threads
|
|
99
|
+
|
|
100
|
+
- **POST /threads**: Create a new thread.
|
|
101
|
+
- **GET /threads**: Search for threads.
|
|
102
|
+
- **GET /threads/{threadId}**: Retrieve a specific thread.
|
|
103
|
+
- **DELETE /threads/{threadId}**: Delete a specific thread.
|
|
104
|
+
|
|
105
|
+
### Runs
|
|
106
|
+
|
|
107
|
+
- **GET /threads/{threadId}/runs**: List runs in a thread.
|
|
108
|
+
- **POST /threads/{threadId}/runs**: Create a new run.
|
|
109
|
+
- **DELETE /threads/{threadId}/runs/{runId}**: Cancel a specific run.
|
|
110
|
+
- **GET /threads/{threadId}/runs/{runId}/stream**: Stream run data.
|
package/bun.lock
ADDED
|
@@ -0,0 +1,209 @@
|
|
|
1
|
+
{
|
|
2
|
+
"lockfileVersion": 1,
|
|
3
|
+
"workspaces": {
|
|
4
|
+
"": {
|
|
5
|
+
"name": "@langgraph-js/pure-graph",
|
|
6
|
+
"dependencies": {
|
|
7
|
+
"@langchain/core": "^0.3.77",
|
|
8
|
+
"@langchain/langgraph": "^0.4.9",
|
|
9
|
+
"@langchain/langgraph-checkpoint": "^0.1.1",
|
|
10
|
+
"@langchain/langgraph-checkpoint-sqlite": "^0.2.1",
|
|
11
|
+
"@langgraph-js/pro": "^1.8.1",
|
|
12
|
+
"better-sqlite3": "^12.4.1",
|
|
13
|
+
"eventemitter3": "^5.0.1",
|
|
14
|
+
"zod": "^3",
|
|
15
|
+
},
|
|
16
|
+
"devDependencies": {
|
|
17
|
+
"@langchain/langgraph-sdk": "^0.1.7",
|
|
18
|
+
"@langgraph-js/sdk": "^2.0.1",
|
|
19
|
+
"@types/node": "^22.13.5",
|
|
20
|
+
"typescript": "^5.9.2",
|
|
21
|
+
},
|
|
22
|
+
"optionalDependencies": {
|
|
23
|
+
"@hono/zod-validator": "^0.7.3",
|
|
24
|
+
"hono": "^4.9.9",
|
|
25
|
+
},
|
|
26
|
+
},
|
|
27
|
+
},
|
|
28
|
+
"packages": {
|
|
29
|
+
"@cfworker/json-schema": ["@cfworker/json-schema@4.1.1", "https://registry.npmmirror.com/@cfworker/json-schema/-/json-schema-4.1.1.tgz", {}, "sha512-gAmrUZSGtKc3AiBL71iNWxDsyUC5uMaKKGdvzYsBoTW/xi42JQHl7eKV2OYzCUqvc+D2RCcf7EXY2iCyFIk6og=="],
|
|
30
|
+
|
|
31
|
+
"@hono/zod-validator": ["@hono/zod-validator@0.7.3", "https://registry.npmmirror.com/@hono/zod-validator/-/zod-validator-0.7.3.tgz", { "peerDependencies": { "hono": "4.9.9", "zod": "3.25.76" } }, "sha512-uYGdgVib3RlGD698WR5dVM0zB3UuPY5vHKXffGUbUh7r4xY+mFIhF3/v4AcQVLrU5CQdBso8BJr4wuVoCrjTuQ=="],
|
|
32
|
+
|
|
33
|
+
"@langchain/core": ["@langchain/core@0.3.77", "https://registry.npmmirror.com/@langchain/core/-/core-0.3.77.tgz", { "dependencies": { "@cfworker/json-schema": "4.1.1", "ansi-styles": "5.2.0", "camelcase": "6.3.0", "decamelize": "1.2.0", "js-tiktoken": "1.0.21", "langsmith": "0.3.69", "mustache": "4.2.0", "p-queue": "6.6.2", "p-retry": "4.6.2", "uuid": "10.0.0", "zod": "3.25.76", "zod-to-json-schema": "3.24.6" } }, "sha512-aqXHea9xfpVn6VoCq9pjujwFqrh3vw3Fgm9KFUZJ1cF7Bx5HI62DvQPw8LlRB3NB4dhwBBA1ldAVkkkd1du8nA=="],
|
|
34
|
+
|
|
35
|
+
"@langchain/langgraph": ["@langchain/langgraph@0.4.9", "https://registry.npmmirror.com/@langchain/langgraph/-/langgraph-0.4.9.tgz", { "dependencies": { "@langchain/langgraph-checkpoint": "0.1.1", "@langchain/langgraph-sdk": "0.1.7", "uuid": "10.0.0", "zod": "3.25.76" }, "optionalDependencies": { "zod-to-json-schema": "3.24.6" }, "peerDependencies": { "@langchain/core": "0.3.77" } }, "sha512-+rcdTGi4Ium4X/VtIX3Zw4RhxEkYWpwUyz806V6rffjHOAMamg6/WZDxpJbrP33RV/wJG1GH12Z29oX3Pqq3Aw=="],
|
|
36
|
+
|
|
37
|
+
"@langchain/langgraph-checkpoint": ["@langchain/langgraph-checkpoint@0.1.1", "https://registry.npmmirror.com/@langchain/langgraph-checkpoint/-/langgraph-checkpoint-0.1.1.tgz", { "dependencies": { "uuid": "10.0.0" }, "peerDependencies": { "@langchain/core": "0.3.77" } }, "sha512-h2bP0RUikQZu0Um1ZUPErQLXyhzroJqKRbRcxYRTAh49oNlsfeq4A3K4YEDRbGGuyPZI/Jiqwhks1wZwY73AZw=="],
|
|
38
|
+
|
|
39
|
+
"@langchain/langgraph-checkpoint-sqlite": ["@langchain/langgraph-checkpoint-sqlite@0.2.1", "https://registry.npmmirror.com/@langchain/langgraph-checkpoint-sqlite/-/langgraph-checkpoint-sqlite-0.2.1.tgz", { "dependencies": { "better-sqlite3": "^11.7.0" }, "peerDependencies": { "@langchain/core": ">=0.2.31 <0.4.0 || ^1.0.0-alpha", "@langchain/langgraph-checkpoint": "^0.1.0" } }, "sha512-zDY1Jv5QA5rQVm0jPBan6XnhkB4oFdhPQH1Huu81B3YPOJaJqjJZVR4/YewzX93gWaSSji5L8YPZ7198tXjNeQ=="],
|
|
40
|
+
|
|
41
|
+
"@langchain/langgraph-sdk": ["@langchain/langgraph-sdk@0.1.7", "https://registry.npmmirror.com/@langchain/langgraph-sdk/-/langgraph-sdk-0.1.7.tgz", { "dependencies": { "@types/json-schema": "7.0.15", "p-queue": "6.6.2", "p-retry": "4.6.2", "uuid": "9.0.1" }, "optionalDependencies": { "@langchain/core": "0.3.77" } }, "sha512-VVQpJQPrzlCLjDqz38dD9qBvG+5bbojoGgP5YMCJKY0RPolw+JE7I/o8cIjAxgvf0NH6U1cfbNJIF2L/0Cfq5Q=="],
|
|
42
|
+
|
|
43
|
+
"@langchain/langgraph-swarm": ["@langchain/langgraph-swarm@0.0.5", "https://registry.npmmirror.com/@langchain/langgraph-swarm/-/langgraph-swarm-0.0.5.tgz", { "dependencies": { "zod": "3.25.76" }, "peerDependencies": { "@langchain/core": "0.3.77", "@langchain/langgraph": "0.4.9" } }, "sha512-/4fSH1l21WHtdIqEYlwkV4gfRn+8+8BtBU0Y7hiMR0yAdXqLVapK0jeMOM2cAVMO57BRkZhDWft+IObOJ/H6JQ=="],
|
|
44
|
+
|
|
45
|
+
"@langchain/openai": ["@langchain/openai@0.5.18", "https://registry.npmmirror.com/@langchain/openai/-/openai-0.5.18.tgz", { "dependencies": { "js-tiktoken": "1.0.21", "openai": "5.23.1", "zod": "3.25.76" }, "peerDependencies": { "@langchain/core": "0.3.77" } }, "sha512-CX1kOTbT5xVFNdtLjnM0GIYNf+P7oMSu+dGCFxxWRa3dZwWiuyuBXCm+dToUGxDLnsHuV1bKBtIzrY1mLq/A1Q=="],
|
|
46
|
+
|
|
47
|
+
"@langgraph-js/pro": ["@langgraph-js/pro@1.8.1", "https://registry.npmmirror.com/@langgraph-js/pro/-/pro-1.8.1.tgz", { "dependencies": { "@langchain/core": "0.3.77", "@langchain/langgraph": "0.4.9", "@langchain/langgraph-swarm": "0.0.5", "@langchain/openai": "0.5.18", "zod": "3.25.76" } }, "sha512-+Cgu2J/0IrkLwAn2fIRhbRbs+KaoM+4zsJCkk9OZIEIFW4Qsz7+sYFKNCBPrviXUOrNuj61z5G66uptNS37PkQ=="],
|
|
48
|
+
|
|
49
|
+
"@langgraph-js/sdk": ["@langgraph-js/sdk@2.0.1", "https://registry.npmmirror.com/@langgraph-js/sdk/-/sdk-2.0.1.tgz", { "dependencies": { "@langchain/langgraph-sdk": "0.0.77", "eventemitter3": "5.0.1", "jsonrepair": "3.13.1", "nanostores": "1.0.1", "ts-debounce": "4.0.0", "zod": "3.25.76", "zod-to-json-schema": "3.24.6" } }, "sha512-MgX1KkgC1/chMpeXtrd2vzreEOMUWyaE4wr2NbLu4BsQJpW1flTRQ5pGha3i43nbP2WJytx00JtT97G5eYWthw=="],
|
|
50
|
+
|
|
51
|
+
"@types/json-schema": ["@types/json-schema@7.0.15", "https://registry.npmmirror.com/@types/json-schema/-/json-schema-7.0.15.tgz", {}, "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA=="],
|
|
52
|
+
|
|
53
|
+
"@types/node": ["@types/node@22.18.6", "https://registry.npmmirror.com/@types/node/-/node-22.18.6.tgz", { "dependencies": { "undici-types": "6.21.0" } }, "sha512-r8uszLPpeIWbNKtvWRt/DbVi5zbqZyj1PTmhRMqBMvDnaz1QpmSKujUtJLrqGZeoM8v72MfYggDceY4K1itzWQ=="],
|
|
54
|
+
|
|
55
|
+
"@types/retry": ["@types/retry@0.12.0", "https://registry.npmmirror.com/@types/retry/-/retry-0.12.0.tgz", {}, "sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA=="],
|
|
56
|
+
|
|
57
|
+
"@types/uuid": ["@types/uuid@10.0.0", "https://registry.npmmirror.com/@types/uuid/-/uuid-10.0.0.tgz", {}, "sha512-7gqG38EyHgyP1S+7+xomFtL+ZNHcKv6DwNaCZmJmo1vgMugyF3TCnXVg4t1uk89mLNwnLtnY3TpOpCOyp1/xHQ=="],
|
|
58
|
+
|
|
59
|
+
"ansi-styles": ["ansi-styles@5.2.0", "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-5.2.0.tgz", {}, "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA=="],
|
|
60
|
+
|
|
61
|
+
"base64-js": ["base64-js@1.5.1", "https://registry.npmmirror.com/base64-js/-/base64-js-1.5.1.tgz", {}, "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA=="],
|
|
62
|
+
|
|
63
|
+
"better-sqlite3": ["better-sqlite3@12.4.1", "https://registry.npmmirror.com/better-sqlite3/-/better-sqlite3-12.4.1.tgz", { "dependencies": { "bindings": "^1.5.0", "prebuild-install": "^7.1.1" } }, "sha512-3yVdyZhklTiNrtg+4WqHpJpFDd+WHTg2oM7UcR80GqL05AOV0xEJzc6qNvFYoEtE+hRp1n9MpN6/+4yhlGkDXQ=="],
|
|
64
|
+
|
|
65
|
+
"bindings": ["bindings@1.5.0", "https://registry.npmmirror.com/bindings/-/bindings-1.5.0.tgz", { "dependencies": { "file-uri-to-path": "1.0.0" } }, "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ=="],
|
|
66
|
+
|
|
67
|
+
"bl": ["bl@4.1.0", "https://registry.npmmirror.com/bl/-/bl-4.1.0.tgz", { "dependencies": { "buffer": "^5.5.0", "inherits": "^2.0.4", "readable-stream": "^3.4.0" } }, "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w=="],
|
|
68
|
+
|
|
69
|
+
"buffer": ["buffer@5.7.1", "https://registry.npmmirror.com/buffer/-/buffer-5.7.1.tgz", { "dependencies": { "base64-js": "^1.3.1", "ieee754": "^1.1.13" } }, "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ=="],
|
|
70
|
+
|
|
71
|
+
"camelcase": ["camelcase@6.3.0", "https://registry.npmmirror.com/camelcase/-/camelcase-6.3.0.tgz", {}, "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA=="],
|
|
72
|
+
|
|
73
|
+
"chalk": ["chalk@4.1.2", "https://registry.npmmirror.com/chalk/-/chalk-4.1.2.tgz", { "dependencies": { "ansi-styles": "4.3.0", "supports-color": "7.2.0" } }, "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA=="],
|
|
74
|
+
|
|
75
|
+
"chownr": ["chownr@1.1.4", "https://registry.npmmirror.com/chownr/-/chownr-1.1.4.tgz", {}, "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg=="],
|
|
76
|
+
|
|
77
|
+
"color-convert": ["color-convert@2.0.1", "https://registry.npmmirror.com/color-convert/-/color-convert-2.0.1.tgz", { "dependencies": { "color-name": "1.1.4" } }, "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ=="],
|
|
78
|
+
|
|
79
|
+
"color-name": ["color-name@1.1.4", "https://registry.npmmirror.com/color-name/-/color-name-1.1.4.tgz", {}, "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA=="],
|
|
80
|
+
|
|
81
|
+
"console-table-printer": ["console-table-printer@2.14.6", "https://registry.npmmirror.com/console-table-printer/-/console-table-printer-2.14.6.tgz", { "dependencies": { "simple-wcswidth": "1.1.2" } }, "sha512-MCBl5HNVaFuuHW6FGbL/4fB7N/ormCy+tQ+sxTrF6QtSbSNETvPuOVbkJBhzDgYhvjWGrTma4eYJa37ZuoQsPw=="],
|
|
82
|
+
|
|
83
|
+
"decamelize": ["decamelize@1.2.0", "https://registry.npmmirror.com/decamelize/-/decamelize-1.2.0.tgz", {}, "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA=="],
|
|
84
|
+
|
|
85
|
+
"decompress-response": ["decompress-response@6.0.0", "https://registry.npmmirror.com/decompress-response/-/decompress-response-6.0.0.tgz", { "dependencies": { "mimic-response": "^3.1.0" } }, "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ=="],
|
|
86
|
+
|
|
87
|
+
"deep-extend": ["deep-extend@0.6.0", "https://registry.npmmirror.com/deep-extend/-/deep-extend-0.6.0.tgz", {}, "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA=="],
|
|
88
|
+
|
|
89
|
+
"detect-libc": ["detect-libc@2.1.1", "https://registry.npmmirror.com/detect-libc/-/detect-libc-2.1.1.tgz", {}, "sha512-ecqj/sy1jcK1uWrwpR67UhYrIFQ+5WlGxth34WquCbamhFA6hkkwiu37o6J5xCHdo1oixJRfVRw+ywV+Hq/0Aw=="],
|
|
90
|
+
|
|
91
|
+
"end-of-stream": ["end-of-stream@1.4.5", "https://registry.npmmirror.com/end-of-stream/-/end-of-stream-1.4.5.tgz", { "dependencies": { "once": "^1.4.0" } }, "sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg=="],
|
|
92
|
+
|
|
93
|
+
"eventemitter3": ["eventemitter3@5.0.1", "https://registry.npmmirror.com/eventemitter3/-/eventemitter3-5.0.1.tgz", {}, "sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA=="],
|
|
94
|
+
|
|
95
|
+
"expand-template": ["expand-template@2.0.3", "https://registry.npmmirror.com/expand-template/-/expand-template-2.0.3.tgz", {}, "sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg=="],
|
|
96
|
+
|
|
97
|
+
"file-uri-to-path": ["file-uri-to-path@1.0.0", "https://registry.npmmirror.com/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", {}, "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw=="],
|
|
98
|
+
|
|
99
|
+
"fs-constants": ["fs-constants@1.0.0", "https://registry.npmmirror.com/fs-constants/-/fs-constants-1.0.0.tgz", {}, "sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow=="],
|
|
100
|
+
|
|
101
|
+
"github-from-package": ["github-from-package@0.0.0", "https://registry.npmmirror.com/github-from-package/-/github-from-package-0.0.0.tgz", {}, "sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw=="],
|
|
102
|
+
|
|
103
|
+
"has-flag": ["has-flag@4.0.0", "https://registry.npmmirror.com/has-flag/-/has-flag-4.0.0.tgz", {}, "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ=="],
|
|
104
|
+
|
|
105
|
+
"hono": ["hono@4.9.9", "https://registry.npmmirror.com/hono/-/hono-4.9.9.tgz", {}, "sha512-Hxw4wT6zjJGZJdkJzAx9PyBdf7ZpxaTSA0NfxqjLghwMrLBX8p33hJBzoETRakF3UJu6OdNQBZAlNSkGqKFukw=="],
|
|
106
|
+
|
|
107
|
+
"ieee754": ["ieee754@1.2.1", "https://registry.npmmirror.com/ieee754/-/ieee754-1.2.1.tgz", {}, "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA=="],
|
|
108
|
+
|
|
109
|
+
"inherits": ["inherits@2.0.4", "https://registry.npmmirror.com/inherits/-/inherits-2.0.4.tgz", {}, "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="],
|
|
110
|
+
|
|
111
|
+
"ini": ["ini@1.3.8", "https://registry.npmmirror.com/ini/-/ini-1.3.8.tgz", {}, "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew=="],
|
|
112
|
+
|
|
113
|
+
"js-tiktoken": ["js-tiktoken@1.0.21", "https://registry.npmmirror.com/js-tiktoken/-/js-tiktoken-1.0.21.tgz", { "dependencies": { "base64-js": "1.5.1" } }, "sha512-biOj/6M5qdgx5TKjDnFT1ymSpM5tbd3ylwDtrQvFQSu0Z7bBYko2dF+W/aUkXUPuk6IVpRxk/3Q2sHOzGlS36g=="],
|
|
114
|
+
|
|
115
|
+
"jsonrepair": ["jsonrepair@3.13.1", "https://registry.npmmirror.com/jsonrepair/-/jsonrepair-3.13.1.tgz", { "bin": { "jsonrepair": "bin/cli.js" } }, "sha512-WJeiE0jGfxYmtLwBTEk8+y/mYcaleyLXWaqp5bJu0/ZTSeG0KQq/wWQ8pmnkKenEdN6pdnn6QtcoSUkbqDHWNw=="],
|
|
116
|
+
|
|
117
|
+
"langsmith": ["langsmith@0.3.69", "https://registry.npmmirror.com/langsmith/-/langsmith-0.3.69.tgz", { "dependencies": { "@types/uuid": "10.0.0", "chalk": "4.1.2", "console-table-printer": "2.14.6", "p-queue": "6.6.2", "p-retry": "4.6.2", "semver": "7.7.2", "uuid": "10.0.0" }, "optionalDependencies": { "openai": "5.23.1" } }, "sha512-YKzu92YAP2o+d+1VmR38xqFX0RIRLKYj1IqdflVEY83X0FoiVlrWO3xDLXgnu7vhZ2N2M6jx8VO9fVF8yy9gHA=="],
|
|
118
|
+
|
|
119
|
+
"mimic-response": ["mimic-response@3.1.0", "https://registry.npmmirror.com/mimic-response/-/mimic-response-3.1.0.tgz", {}, "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ=="],
|
|
120
|
+
|
|
121
|
+
"minimist": ["minimist@1.2.8", "https://registry.npmmirror.com/minimist/-/minimist-1.2.8.tgz", {}, "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA=="],
|
|
122
|
+
|
|
123
|
+
"mkdirp-classic": ["mkdirp-classic@0.5.3", "https://registry.npmmirror.com/mkdirp-classic/-/mkdirp-classic-0.5.3.tgz", {}, "sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A=="],
|
|
124
|
+
|
|
125
|
+
"mustache": ["mustache@4.2.0", "https://registry.npmmirror.com/mustache/-/mustache-4.2.0.tgz", { "bin": { "mustache": "bin/mustache" } }, "sha512-71ippSywq5Yb7/tVYyGbkBggbU8H3u5Rz56fH60jGFgr8uHwxs+aSKeqmluIVzM0m0kB7xQjKS6qPfd0b2ZoqQ=="],
|
|
126
|
+
|
|
127
|
+
"nanostores": ["nanostores@1.0.1", "https://registry.npmmirror.com/nanostores/-/nanostores-1.0.1.tgz", {}, "sha512-kNZ9xnoJYKg/AfxjrVL4SS0fKX++4awQReGqWnwTRHxeHGZ1FJFVgTqr/eMrNQdp0Tz7M7tG/TDaX8QfHDwVCw=="],
|
|
128
|
+
|
|
129
|
+
"napi-build-utils": ["napi-build-utils@2.0.0", "https://registry.npmmirror.com/napi-build-utils/-/napi-build-utils-2.0.0.tgz", {}, "sha512-GEbrYkbfF7MoNaoh2iGG84Mnf/WZfB0GdGEsM8wz7Expx/LlWf5U8t9nvJKXSp3qr5IsEbK04cBGhol/KwOsWA=="],
|
|
130
|
+
|
|
131
|
+
"node-abi": ["node-abi@3.77.0", "https://registry.npmmirror.com/node-abi/-/node-abi-3.77.0.tgz", { "dependencies": { "semver": "^7.3.5" } }, "sha512-DSmt0OEcLoK4i3NuscSbGjOf3bqiDEutejqENSplMSFA/gmB8mkED9G4pKWnPl7MDU4rSHebKPHeitpDfyH0cQ=="],
|
|
132
|
+
|
|
133
|
+
"once": ["once@1.4.0", "https://registry.npmmirror.com/once/-/once-1.4.0.tgz", { "dependencies": { "wrappy": "1.0.2" } }, "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w=="],
|
|
134
|
+
|
|
135
|
+
"openai": ["openai@5.23.1", "https://registry.npmmirror.com/openai/-/openai-5.23.1.tgz", { "optionalDependencies": { "zod": "3.25.76" }, "bin": { "openai": "bin/cli" } }, "sha512-APxMtm5mln4jhKhAr0d5zP9lNsClx4QwJtg8RUvYSSyxYCTHLNJnLEcSHbJ6t0ori8Pbr9HZGfcPJ7LEy73rvQ=="],
|
|
136
|
+
|
|
137
|
+
"p-finally": ["p-finally@1.0.0", "https://registry.npmmirror.com/p-finally/-/p-finally-1.0.0.tgz", {}, "sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow=="],
|
|
138
|
+
|
|
139
|
+
"p-queue": ["p-queue@6.6.2", "https://registry.npmmirror.com/p-queue/-/p-queue-6.6.2.tgz", { "dependencies": { "eventemitter3": "4.0.7", "p-timeout": "3.2.0" } }, "sha512-RwFpb72c/BhQLEXIZ5K2e+AhgNVmIejGlTgiB9MzZ0e93GRvqZ7uSi0dvRF7/XIXDeNkra2fNHBxTyPDGySpjQ=="],
|
|
140
|
+
|
|
141
|
+
"p-retry": ["p-retry@4.6.2", "https://registry.npmmirror.com/p-retry/-/p-retry-4.6.2.tgz", { "dependencies": { "@types/retry": "0.12.0", "retry": "0.13.1" } }, "sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ=="],
|
|
142
|
+
|
|
143
|
+
"p-timeout": ["p-timeout@3.2.0", "https://registry.npmmirror.com/p-timeout/-/p-timeout-3.2.0.tgz", { "dependencies": { "p-finally": "1.0.0" } }, "sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg=="],
|
|
144
|
+
|
|
145
|
+
"prebuild-install": ["prebuild-install@7.1.3", "https://registry.npmmirror.com/prebuild-install/-/prebuild-install-7.1.3.tgz", { "dependencies": { "detect-libc": "^2.0.0", "expand-template": "^2.0.3", "github-from-package": "0.0.0", "minimist": "^1.2.3", "mkdirp-classic": "^0.5.3", "napi-build-utils": "^2.0.0", "node-abi": "^3.3.0", "pump": "^3.0.0", "rc": "^1.2.7", "simple-get": "^4.0.0", "tar-fs": "^2.0.0", "tunnel-agent": "^0.6.0" }, "bin": { "prebuild-install": "bin.js" } }, "sha512-8Mf2cbV7x1cXPUILADGI3wuhfqWvtiLA1iclTDbFRZkgRQS0NqsPZphna9V+HyTEadheuPmjaJMsbzKQFOzLug=="],
|
|
146
|
+
|
|
147
|
+
"pump": ["pump@3.0.3", "https://registry.npmmirror.com/pump/-/pump-3.0.3.tgz", { "dependencies": { "end-of-stream": "^1.1.0", "once": "^1.3.1" } }, "sha512-todwxLMY7/heScKmntwQG8CXVkWUOdYxIvY2s0VWAAMh/nd8SoYiRaKjlr7+iCs984f2P8zvrfWcDDYVb73NfA=="],
|
|
148
|
+
|
|
149
|
+
"rc": ["rc@1.2.8", "https://registry.npmmirror.com/rc/-/rc-1.2.8.tgz", { "dependencies": { "deep-extend": "^0.6.0", "ini": "~1.3.0", "minimist": "^1.2.0", "strip-json-comments": "~2.0.1" }, "bin": { "rc": "./cli.js" } }, "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw=="],
|
|
150
|
+
|
|
151
|
+
"readable-stream": ["readable-stream@3.6.2", "https://registry.npmmirror.com/readable-stream/-/readable-stream-3.6.2.tgz", { "dependencies": { "inherits": "^2.0.3", "string_decoder": "^1.1.1", "util-deprecate": "^1.0.1" } }, "sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA=="],
|
|
152
|
+
|
|
153
|
+
"retry": ["retry@0.13.1", "https://registry.npmmirror.com/retry/-/retry-0.13.1.tgz", {}, "sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg=="],
|
|
154
|
+
|
|
155
|
+
"safe-buffer": ["safe-buffer@5.2.1", "https://registry.npmmirror.com/safe-buffer/-/safe-buffer-5.2.1.tgz", {}, "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ=="],
|
|
156
|
+
|
|
157
|
+
"semver": ["semver@7.7.2", "https://registry.npmmirror.com/semver/-/semver-7.7.2.tgz", { "bin": { "semver": "bin/semver.js" } }, "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA=="],
|
|
158
|
+
|
|
159
|
+
"simple-concat": ["simple-concat@1.0.1", "https://registry.npmmirror.com/simple-concat/-/simple-concat-1.0.1.tgz", {}, "sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q=="],
|
|
160
|
+
|
|
161
|
+
"simple-get": ["simple-get@4.0.1", "https://registry.npmmirror.com/simple-get/-/simple-get-4.0.1.tgz", { "dependencies": { "decompress-response": "^6.0.0", "once": "^1.3.1", "simple-concat": "^1.0.0" } }, "sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA=="],
|
|
162
|
+
|
|
163
|
+
"simple-wcswidth": ["simple-wcswidth@1.1.2", "https://registry.npmmirror.com/simple-wcswidth/-/simple-wcswidth-1.1.2.tgz", {}, "sha512-j7piyCjAeTDSjzTSQ7DokZtMNwNlEAyxqSZeCS+CXH7fJ4jx3FuJ/mTW3mE+6JLs4VJBbcll0Kjn+KXI5t21Iw=="],
|
|
164
|
+
|
|
165
|
+
"string_decoder": ["string_decoder@1.3.0", "https://registry.npmmirror.com/string_decoder/-/string_decoder-1.3.0.tgz", { "dependencies": { "safe-buffer": "~5.2.0" } }, "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA=="],
|
|
166
|
+
|
|
167
|
+
"strip-json-comments": ["strip-json-comments@2.0.1", "https://registry.npmmirror.com/strip-json-comments/-/strip-json-comments-2.0.1.tgz", {}, "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ=="],
|
|
168
|
+
|
|
169
|
+
"supports-color": ["supports-color@7.2.0", "https://registry.npmmirror.com/supports-color/-/supports-color-7.2.0.tgz", { "dependencies": { "has-flag": "4.0.0" } }, "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw=="],
|
|
170
|
+
|
|
171
|
+
"tar-fs": ["tar-fs@2.1.4", "https://registry.npmmirror.com/tar-fs/-/tar-fs-2.1.4.tgz", { "dependencies": { "chownr": "^1.1.1", "mkdirp-classic": "^0.5.2", "pump": "^3.0.0", "tar-stream": "^2.1.4" } }, "sha512-mDAjwmZdh7LTT6pNleZ05Yt65HC3E+NiQzl672vQG38jIrehtJk/J3mNwIg+vShQPcLF/LV7CMnDW6vjj6sfYQ=="],
|
|
172
|
+
|
|
173
|
+
"tar-stream": ["tar-stream@2.2.0", "https://registry.npmmirror.com/tar-stream/-/tar-stream-2.2.0.tgz", { "dependencies": { "bl": "^4.0.3", "end-of-stream": "^1.4.1", "fs-constants": "^1.0.0", "inherits": "^2.0.3", "readable-stream": "^3.1.1" } }, "sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ=="],
|
|
174
|
+
|
|
175
|
+
"ts-debounce": ["ts-debounce@4.0.0", "https://registry.npmmirror.com/ts-debounce/-/ts-debounce-4.0.0.tgz", {}, "sha512-+1iDGY6NmOGidq7i7xZGA4cm8DAa6fqdYcvO5Z6yBevH++Bdo9Qt/mN0TzHUgcCcKv1gmh9+W5dHqz8pMWbCbg=="],
|
|
176
|
+
|
|
177
|
+
"tunnel-agent": ["tunnel-agent@0.6.0", "https://registry.npmmirror.com/tunnel-agent/-/tunnel-agent-0.6.0.tgz", { "dependencies": { "safe-buffer": "^5.0.1" } }, "sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w=="],
|
|
178
|
+
|
|
179
|
+
"typescript": ["typescript@5.9.2", "https://registry.npmmirror.com/typescript/-/typescript-5.9.2.tgz", { "bin": { "tsc": "bin/tsc", "tsserver": "bin/tsserver" } }, "sha512-CWBzXQrc/qOkhidw1OzBTQuYRbfyxDXJMVJ1XNwUHGROVmuaeiEm3OslpZ1RV96d7SKKjZKrSJu3+t/xlw3R9A=="],
|
|
180
|
+
|
|
181
|
+
"undici-types": ["undici-types@6.21.0", "https://registry.npmmirror.com/undici-types/-/undici-types-6.21.0.tgz", {}, "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ=="],
|
|
182
|
+
|
|
183
|
+
"util-deprecate": ["util-deprecate@1.0.2", "https://registry.npmmirror.com/util-deprecate/-/util-deprecate-1.0.2.tgz", {}, "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw=="],
|
|
184
|
+
|
|
185
|
+
"uuid": ["uuid@9.0.1", "https://registry.npmmirror.com/uuid/-/uuid-9.0.1.tgz", { "bin": { "uuid": "dist/bin/uuid" } }, "sha512-b+1eJOlsR9K8HJpow9Ok3fiWOWSIcIzXodvv0rQjVoOVNpWMpxf1wZNpt4y9h10odCNrqnYp1OBzRktckBe3sA=="],
|
|
186
|
+
|
|
187
|
+
"wrappy": ["wrappy@1.0.2", "https://registry.npmmirror.com/wrappy/-/wrappy-1.0.2.tgz", {}, "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ=="],
|
|
188
|
+
|
|
189
|
+
"zod": ["zod@3.25.76", "https://registry.npmmirror.com/zod/-/zod-3.25.76.tgz", {}, "sha512-gzUt/qt81nXsFGKIFcC3YnfEAx5NkunCfnDlvuBSSFS02bcXu4Lmea0AFIUwbLWxWPx3d9p8S5QoaujKcNQxcQ=="],
|
|
190
|
+
|
|
191
|
+
"zod-to-json-schema": ["zod-to-json-schema@3.24.6", "https://registry.npmmirror.com/zod-to-json-schema/-/zod-to-json-schema-3.24.6.tgz", { "peerDependencies": { "zod": "3.25.76" } }, "sha512-h/z3PKvcTcTetyjl1fkj79MHNEjm+HpD6NXheWjzOekY7kV+lwDYnHw+ivHkijnCSMz1yJaWBD9vu/Fcmk+vEg=="],
|
|
192
|
+
|
|
193
|
+
"@langchain/core/uuid": ["uuid@10.0.0", "https://registry.npmmirror.com/uuid/-/uuid-10.0.0.tgz", { "bin": { "uuid": "dist/bin/uuid" } }, "sha512-8XkAphELsDnEGrDxUOHB3RGvXz6TeuYSGEZBOjtTtPm2lwhGBjLgOzLHB63IUWfBpNucQjND6d3AOudO+H3RWQ=="],
|
|
194
|
+
|
|
195
|
+
"@langchain/langgraph/uuid": ["uuid@10.0.0", "https://registry.npmmirror.com/uuid/-/uuid-10.0.0.tgz", { "bin": { "uuid": "dist/bin/uuid" } }, "sha512-8XkAphELsDnEGrDxUOHB3RGvXz6TeuYSGEZBOjtTtPm2lwhGBjLgOzLHB63IUWfBpNucQjND6d3AOudO+H3RWQ=="],
|
|
196
|
+
|
|
197
|
+
"@langchain/langgraph-checkpoint/uuid": ["uuid@10.0.0", "https://registry.npmmirror.com/uuid/-/uuid-10.0.0.tgz", { "bin": { "uuid": "dist/bin/uuid" } }, "sha512-8XkAphELsDnEGrDxUOHB3RGvXz6TeuYSGEZBOjtTtPm2lwhGBjLgOzLHB63IUWfBpNucQjND6d3AOudO+H3RWQ=="],
|
|
198
|
+
|
|
199
|
+
"@langchain/langgraph-checkpoint-sqlite/better-sqlite3": ["better-sqlite3@11.10.0", "https://registry.npmmirror.com/better-sqlite3/-/better-sqlite3-11.10.0.tgz", { "dependencies": { "bindings": "^1.5.0", "prebuild-install": "^7.1.1" } }, "sha512-EwhOpyXiOEL/lKzHz9AW1msWFNzGc/z+LzeB3/jnFJpxu+th2yqvzsSWas1v9jgs9+xiXJcD5A8CJxAG2TaghQ=="],
|
|
200
|
+
|
|
201
|
+
"@langgraph-js/sdk/@langchain/langgraph-sdk": ["@langchain/langgraph-sdk@0.0.77", "https://registry.npmmirror.com/@langchain/langgraph-sdk/-/langgraph-sdk-0.0.77.tgz", { "dependencies": { "@types/json-schema": "7.0.15", "p-queue": "6.6.2", "p-retry": "4.6.2", "uuid": "9.0.1" }, "optionalDependencies": { "@langchain/core": "0.3.77" } }, "sha512-DMCONENhhaMS+Buw8s2UkKjAa9I6cT1aVJEDOmTO2lpon4Dqz/jiYUVJK7pTlNVSNvSx0E8aOmtT7NgGBcWflg=="],
|
|
202
|
+
|
|
203
|
+
"chalk/ansi-styles": ["ansi-styles@4.3.0", "https://registry.npmmirror.com/ansi-styles/-/ansi-styles-4.3.0.tgz", { "dependencies": { "color-convert": "2.0.1" } }, "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg=="],
|
|
204
|
+
|
|
205
|
+
"langsmith/uuid": ["uuid@10.0.0", "https://registry.npmmirror.com/uuid/-/uuid-10.0.0.tgz", { "bin": { "uuid": "dist/bin/uuid" } }, "sha512-8XkAphELsDnEGrDxUOHB3RGvXz6TeuYSGEZBOjtTtPm2lwhGBjLgOzLHB63IUWfBpNucQjND6d3AOudO+H3RWQ=="],
|
|
206
|
+
|
|
207
|
+
"p-queue/eventemitter3": ["eventemitter3@4.0.7", "https://registry.npmmirror.com/eventemitter3/-/eventemitter3-4.0.7.tgz", {}, "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw=="],
|
|
208
|
+
}
|
|
209
|
+
}
|
|
@@ -1,15 +1,9 @@
|
|
|
1
1
|
import { zValidator } from '@hono/zod-validator';
|
|
2
2
|
import { Hono } from 'hono';
|
|
3
|
-
import { z } from 'zod';
|
|
4
3
|
import { client } from './endpoint';
|
|
5
|
-
import {
|
|
4
|
+
import { AssistantsSearchSchema, AssistantGraphQuerySchema } from '../zod';
|
|
6
5
|
const api = new Hono();
|
|
7
|
-
api.post('/assistants/search', zValidator('json',
|
|
8
|
-
graph_id: z.string().optional(),
|
|
9
|
-
metadata: MetadataSchema.optional(),
|
|
10
|
-
limit: z.number().int().optional(),
|
|
11
|
-
offset: z.number().int().optional(),
|
|
12
|
-
})), async (c) => {
|
|
6
|
+
api.post('/assistants/search', zValidator('json', AssistantsSearchSchema), async (c) => {
|
|
13
7
|
// Search Assistants
|
|
14
8
|
const payload = c.req.valid('json');
|
|
15
9
|
let total = 0;
|
|
@@ -17,7 +11,7 @@ api.post('/assistants/search', zValidator('json', z.object({
|
|
|
17
11
|
c.res.headers.set('X-Pagination-Total', total.toString());
|
|
18
12
|
return c.json(data);
|
|
19
13
|
});
|
|
20
|
-
api.get('/assistants/:assistant_id/graph', zValidator('query',
|
|
14
|
+
api.get('/assistants/:assistant_id/graph', zValidator('query', AssistantGraphQuerySchema), async (c) => {
|
|
21
15
|
const xray = c.req.valid('query').xray;
|
|
22
16
|
const data = await client.assistants.getGraph(c.req.param('assistant_id'), {
|
|
23
17
|
xray: xray !== undefined ? xray === 'true' : undefined,
|
|
@@ -1,38 +1,12 @@
|
|
|
1
1
|
import { zValidator } from '@hono/zod-validator';
|
|
2
2
|
import { Hono } from 'hono';
|
|
3
3
|
import { streamSSE } from 'hono/streaming';
|
|
4
|
-
import { z } from 'zod';
|
|
5
4
|
import { client } from './endpoint';
|
|
6
|
-
import {
|
|
5
|
+
import { ThreadIdParamSchema, RunIdParamSchema, RunStreamPayloadSchema, RunListQuerySchema, RunCancelQuerySchema, } from '../zod';
|
|
7
6
|
import { serialiseAsDict } from '../../graph/stream';
|
|
8
7
|
const api = new Hono();
|
|
9
8
|
// 最常用的对话接口
|
|
10
|
-
api.post('/threads/:thread_id/runs/stream', zValidator('param',
|
|
11
|
-
.object({
|
|
12
|
-
assistant_id: z.union([z.string().uuid(), z.string()]),
|
|
13
|
-
checkpoint_id: z.string().optional(),
|
|
14
|
-
// checkpoint: CheckpointSchema.optional(),
|
|
15
|
-
input: z.any().optional(),
|
|
16
|
-
command: CommandSchema.optional(),
|
|
17
|
-
metadata: MetadataSchema.optional(),
|
|
18
|
-
config: AssistantConfig.optional(),
|
|
19
|
-
webhook: z.string().optional(),
|
|
20
|
-
interrupt_before: z.union([z.literal('*'), z.array(z.string())]).optional(),
|
|
21
|
-
interrupt_after: z.union([z.literal('*'), z.array(z.string())]).optional(),
|
|
22
|
-
on_disconnect: z.enum(['cancel', 'continue']).optional().default('continue'),
|
|
23
|
-
multitask_strategy: z.enum(['reject', 'rollback', 'interrupt', 'enqueue']).optional(),
|
|
24
|
-
stream_mode: z
|
|
25
|
-
.array(z.enum(['values', 'messages', 'messages-tuple', 'updates', 'events', 'debug', 'custom']))
|
|
26
|
-
.optional(),
|
|
27
|
-
stream_subgraphs: z.boolean().optional(),
|
|
28
|
-
stream_resumable: z.boolean().optional(),
|
|
29
|
-
after_seconds: z.number().optional(),
|
|
30
|
-
if_not_exists: z.enum(['create', 'reject']).optional(),
|
|
31
|
-
on_completion: z.enum(['complete', 'continue']).optional(),
|
|
32
|
-
feedback_keys: z.array(z.string()).optional(),
|
|
33
|
-
langsmith_tracer: z.unknown().optional(),
|
|
34
|
-
})
|
|
35
|
-
.describe('Payload for creating a stateful run.')), async (c) => {
|
|
9
|
+
api.post('/threads/:thread_id/runs/stream', zValidator('param', ThreadIdParamSchema), zValidator('json', RunStreamPayloadSchema), async (c) => {
|
|
36
10
|
// Stream Run
|
|
37
11
|
const { thread_id } = c.req.valid('param');
|
|
38
12
|
const payload = c.req.valid('json');
|
|
@@ -40,24 +14,17 @@ api.post('/threads/:thread_id/runs/stream', zValidator('param', z.object({ threa
|
|
|
40
14
|
return streamSSE(c, async (stream) => {
|
|
41
15
|
/** @ts-ignore zod v3 的问题,与 ts 类型不一致 */
|
|
42
16
|
for await (const { event, data } of client.runs.stream(thread_id, payload.assistant_id, payload)) {
|
|
43
|
-
await stream.writeSSE({ data: serialiseAsDict(data), event });
|
|
17
|
+
await stream.writeSSE({ data: serialiseAsDict(data) ?? '', event });
|
|
44
18
|
}
|
|
45
19
|
});
|
|
46
20
|
});
|
|
47
|
-
api.get('/threads/:thread_id/runs', zValidator('param',
|
|
48
|
-
limit: z.string().optional(),
|
|
49
|
-
offset: z.string().optional(),
|
|
50
|
-
status: z.enum(['pending', 'running', 'error', 'success', 'timeout', 'interrupted']).optional(),
|
|
51
|
-
})), async (c) => {
|
|
21
|
+
api.get('/threads/:thread_id/runs', zValidator('param', ThreadIdParamSchema), zValidator('query', RunListQuerySchema), async (c) => {
|
|
52
22
|
const { thread_id } = c.req.valid('param');
|
|
53
23
|
const { limit, offset, status } = c.req.valid('query');
|
|
54
|
-
const runs = await client.runs.list(thread_id, { limit
|
|
24
|
+
const runs = await client.runs.list(thread_id, { limit, offset, status });
|
|
55
25
|
return c.json(runs);
|
|
56
26
|
});
|
|
57
|
-
api.post('/threads/:thread_id/runs/:run_id/cancel', zValidator('param',
|
|
58
|
-
wait: z.coerce.boolean().optional().default(false),
|
|
59
|
-
action: z.enum(['interrupt', 'rollback']).optional().default('interrupt'),
|
|
60
|
-
})), async (c) => {
|
|
27
|
+
api.post('/threads/:thread_id/runs/:run_id/cancel', zValidator('param', RunIdParamSchema), zValidator('query', RunCancelQuerySchema), async (c) => {
|
|
61
28
|
// Cancel Run Http
|
|
62
29
|
const { thread_id, run_id } = c.req.valid('param');
|
|
63
30
|
const { wait, action } = c.req.valid('query');
|
|
@@ -1,68 +1,27 @@
|
|
|
1
1
|
import { zValidator } from '@hono/zod-validator';
|
|
2
2
|
import { Hono } from 'hono';
|
|
3
|
-
import { z } from 'zod';
|
|
4
3
|
import { client } from './endpoint';
|
|
5
|
-
import {
|
|
4
|
+
import { ThreadIdParamSchema, ThreadCreatePayloadSchema, ThreadSearchPayloadSchema } from '../zod';
|
|
6
5
|
const api = new Hono();
|
|
7
6
|
// Threads Routes
|
|
8
|
-
api.post('/threads', zValidator('json',
|
|
9
|
-
.object({
|
|
10
|
-
// supersteps: z
|
|
11
|
-
// .array(
|
|
12
|
-
// z.object({
|
|
13
|
-
// updates: z.array(
|
|
14
|
-
// z.object({
|
|
15
|
-
// values: z.unknown(),
|
|
16
|
-
// command: CommandSchema.optional(),
|
|
17
|
-
// as_node: z.string(),
|
|
18
|
-
// }),
|
|
19
|
-
// ),
|
|
20
|
-
// }),
|
|
21
|
-
// )
|
|
22
|
-
// .describe('The supersteps to apply to the thread.')
|
|
23
|
-
// .optional(),
|
|
24
|
-
thread_id: z
|
|
25
|
-
.string()
|
|
26
|
-
.uuid()
|
|
27
|
-
.describe('The ID of the thread. If not provided, an ID is generated.')
|
|
28
|
-
.optional(),
|
|
29
|
-
metadata: MetadataSchema.optional(),
|
|
30
|
-
if_exists: z.union([z.literal('raise'), z.literal('do_nothing')]).optional(),
|
|
31
|
-
})
|
|
32
|
-
.describe('Payload for creating a thread.')), async (c) => {
|
|
7
|
+
api.post('/threads', zValidator('json', ThreadCreatePayloadSchema), async (c) => {
|
|
33
8
|
const payload = c.req.valid('json');
|
|
34
9
|
const thread = await client.threads.create(payload);
|
|
35
10
|
return c.json(thread);
|
|
36
11
|
});
|
|
37
|
-
api.post('/threads/search', zValidator('json',
|
|
38
|
-
.object({
|
|
39
|
-
metadata: z.record(z.unknown()).describe('Metadata to search for.').optional(),
|
|
40
|
-
status: z
|
|
41
|
-
.enum(['idle', 'busy', 'interrupted', 'error'])
|
|
42
|
-
.describe('Filter by thread status.')
|
|
43
|
-
.optional(),
|
|
44
|
-
values: z.record(z.unknown()).describe('Filter by thread values.').optional(),
|
|
45
|
-
limit: z.number().int().gte(1).lte(1000).describe('Maximum number to return.').optional(),
|
|
46
|
-
offset: z.number().int().gte(0).describe('Offset to start from.').optional(),
|
|
47
|
-
sort_by: z
|
|
48
|
-
.enum(['thread_id', 'status', 'created_at', 'updated_at'])
|
|
49
|
-
.describe('Sort by field.')
|
|
50
|
-
.optional(),
|
|
51
|
-
sort_order: z.enum(['asc', 'desc']).describe('Sort order.').optional(),
|
|
52
|
-
})
|
|
53
|
-
.describe('Payload for listing threads.')), async (c) => {
|
|
12
|
+
api.post('/threads/search', zValidator('json', ThreadSearchPayloadSchema), async (c) => {
|
|
54
13
|
// Search Threads
|
|
55
14
|
const payload = c.req.valid('json');
|
|
56
15
|
const result = await client.threads.search(payload);
|
|
57
16
|
c.res.headers.set('X-Pagination-Total', result.length.toString());
|
|
58
17
|
return c.json(result);
|
|
59
18
|
});
|
|
60
|
-
api.get('/threads/:thread_id', zValidator('param',
|
|
19
|
+
api.get('/threads/:thread_id', zValidator('param', ThreadIdParamSchema), async (c) => {
|
|
61
20
|
// Get Thread
|
|
62
21
|
const { thread_id } = c.req.valid('param');
|
|
63
22
|
return c.json(await client.threads.get(thread_id));
|
|
64
23
|
});
|
|
65
|
-
api.delete('/threads/:thread_id', zValidator('param',
|
|
24
|
+
api.delete('/threads/:thread_id', zValidator('param', ThreadIdParamSchema), async (c) => {
|
|
66
25
|
// Delete Thread
|
|
67
26
|
const { thread_id } = c.req.valid('param');
|
|
68
27
|
await client.threads.delete(thread_id);
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export declare const client: import("../../types.js").ILangGraphClient<unknown>;
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { GET, POST, DELETE } from "./router";
|