@langchain/langgraph-api 0.0.27 → 0.0.29

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.
@@ -0,0 +1,15 @@
1
+ export declare function checkSemver(packages: {
2
+ name: string;
3
+ version: string;
4
+ }[]): Promise<{
5
+ name: string;
6
+ version: string;
7
+ required: string;
8
+ satisfies: boolean;
9
+ }[]>;
10
+ export declare function checkLangGraphSemver(): Promise<{
11
+ name: string;
12
+ version: string;
13
+ required: string;
14
+ satisfies: boolean;
15
+ }[]>;
@@ -0,0 +1,35 @@
1
+ import * as url from "node:url";
2
+ import * as fs from "node:fs/promises";
3
+ import * as semver from "semver";
4
+ const packageJsonPath = url.fileURLToPath(new URL("../../package.json", import.meta.url));
5
+ export async function checkSemver(packages) {
6
+ const packageJson = JSON.parse(await fs.readFile(packageJsonPath, "utf-8"));
7
+ const peerDependencies = packageJson.peerDependencies ?? {};
8
+ return packages.flatMap((pkg) => {
9
+ const required = peerDependencies[pkg.name];
10
+ if (!required)
11
+ return [];
12
+ const satisfies = semver.satisfies(pkg.version, required);
13
+ return { ...pkg, required, satisfies };
14
+ });
15
+ }
16
+ export async function checkLangGraphSemver() {
17
+ const resolveVersion = async (name) => {
18
+ let version = "0.0.0";
19
+ try {
20
+ const pkgJson = await import(`${name}/package.json`);
21
+ version = pkgJson.version || version;
22
+ }
23
+ catch {
24
+ // pass
25
+ }
26
+ return { name, version };
27
+ };
28
+ const validate = [
29
+ "@langchain/core",
30
+ "@langchain/langgraph",
31
+ "@langchain/langgraph-checkpoint",
32
+ ];
33
+ const resolved = await Promise.all(validate.map((name) => resolveVersion(name)));
34
+ return checkSemver(resolved);
35
+ }
package/dist/server.mjs CHANGED
@@ -18,6 +18,7 @@ import { registerAuth } from "./auth/index.mjs";
18
18
  import { registerHttp } from "./http/custom.mjs";
19
19
  import { cors, ensureContentType } from "./http/middleware.mjs";
20
20
  import { bindLoopbackFetch } from "./loopback.mjs";
21
+ import { checkLangGraphSemver } from "./semver/index.mjs";
21
22
  export const StartServerSchema = z.object({
22
23
  port: z.number(),
23
24
  nWorkers: z.number(),
@@ -55,6 +56,14 @@ export const StartServerSchema = z.object({
55
56
  .optional(),
56
57
  });
57
58
  export async function startServer(options) {
59
+ const semver = await checkLangGraphSemver();
60
+ const invalidPackages = semver.filter((s) => !s.satisfies);
61
+ if (invalidPackages.length > 0) {
62
+ logger.warn(`Some LangGraph.js dependencies are not up to date. Please make sure to update them to the required version.`, Object.fromEntries(invalidPackages.map(({ name, version, required }) => [
63
+ name,
64
+ { version, required },
65
+ ])));
66
+ }
58
67
  logger.info(`Initializing storage...`);
59
68
  const callbacks = await Promise.all([
60
69
  opsConn.initialize(options.cwd),
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@langchain/langgraph-api",
3
- "version": "0.0.27",
3
+ "version": "0.0.29",
4
4
  "type": "module",
5
5
  "engines": {
6
6
  "node": "^18.19.0 || >=20.16.0"
@@ -18,7 +18,12 @@
18
18
  "./auth": {
19
19
  "types": "./dist/auth/index.d.ts",
20
20
  "default": "./dist/auth/index.mjs"
21
- }
21
+ },
22
+ "./semver": {
23
+ "types": "./dist/semver/index.d.ts",
24
+ "default": "./dist/semver/index.mjs"
25
+ },
26
+ "./package.json": "./package.json"
22
27
  },
23
28
  "repository": {
24
29
  "type": "git",
@@ -36,6 +41,7 @@
36
41
  "hono": "^4.5.4",
37
42
  "langsmith": "^0.2.15",
38
43
  "open": "^10.1.0",
44
+ "semver": "^7.7.1",
39
45
  "stacktrace-parser": "^0.1.10",
40
46
  "superjson": "^2.2.2",
41
47
  "tsx": "^4.19.3",
@@ -43,12 +49,12 @@
43
49
  "winston": "^3.17.0",
44
50
  "winston-console-format": "^1.0.8",
45
51
  "zod": "^3.23.8",
46
- "@langchain/langgraph-ui": "0.0.27"
52
+ "@langchain/langgraph-ui": "0.0.29"
47
53
  },
48
54
  "peerDependencies": {
49
55
  "@langchain/core": "^0.3.42",
50
56
  "@langchain/langgraph": "^0.2.57",
51
- "@langchain/langgraph-checkpoint": "^0.0.16",
57
+ "@langchain/langgraph-checkpoint": "~0.0.16",
52
58
  "@langchain/langgraph-sdk": "^0.0.70",
53
59
  "typescript": "^5.5.4"
54
60
  },
@@ -58,13 +64,15 @@
58
64
  }
59
65
  },
60
66
  "devDependencies": {
67
+ "typescript": "^5.5.4",
61
68
  "@langchain/langgraph-sdk": "^0.0.70",
62
69
  "@types/babel__code-frame": "^7.0.6",
70
+ "@types/node": "^22.2.0",
63
71
  "@types/react": "^19.0.8",
64
72
  "@types/react-dom": "^19.0.3",
65
- "@types/node": "^22.2.0",
66
- "jose": "^6.0.10",
73
+ "@types/semver": "^7.7.0",
67
74
  "@types/uuid": "^10.0.0",
75
+ "jose": "^6.0.10",
68
76
  "postgres": "^3.4.5",
69
77
  "prettier": "^3.3.3",
70
78
  "vitest": "^3.0.5"