@langchain/core 1.2.5 → 1.2.7

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.
Files changed (80) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/dist/language_models/base.cjs +1 -1
  3. package/dist/language_models/base.js +1 -1
  4. package/dist/messages/ai.cjs +6 -0
  5. package/dist/messages/ai.cjs.map +1 -1
  6. package/dist/messages/ai.d.cts +3 -1
  7. package/dist/messages/ai.d.cts.map +1 -1
  8. package/dist/messages/ai.d.ts +3 -1
  9. package/dist/messages/ai.d.ts.map +1 -1
  10. package/dist/messages/ai.js +6 -0
  11. package/dist/messages/ai.js.map +1 -1
  12. package/dist/messages/base.cjs +6 -0
  13. package/dist/messages/base.cjs.map +1 -1
  14. package/dist/messages/base.d.cts +3 -1
  15. package/dist/messages/base.d.cts.map +1 -1
  16. package/dist/messages/base.d.ts +3 -1
  17. package/dist/messages/base.d.ts.map +1 -1
  18. package/dist/messages/base.js +6 -0
  19. package/dist/messages/base.js.map +1 -1
  20. package/dist/messages/chat.cjs +6 -0
  21. package/dist/messages/chat.cjs.map +1 -1
  22. package/dist/messages/chat.d.cts +3 -1
  23. package/dist/messages/chat.d.cts.map +1 -1
  24. package/dist/messages/chat.d.ts +3 -1
  25. package/dist/messages/chat.d.ts.map +1 -1
  26. package/dist/messages/chat.js +6 -0
  27. package/dist/messages/chat.js.map +1 -1
  28. package/dist/messages/function.cjs +12 -0
  29. package/dist/messages/function.cjs.map +1 -1
  30. package/dist/messages/function.d.cts +5 -1
  31. package/dist/messages/function.d.cts.map +1 -1
  32. package/dist/messages/function.d.ts +5 -1
  33. package/dist/messages/function.d.ts.map +1 -1
  34. package/dist/messages/function.js +12 -0
  35. package/dist/messages/function.js.map +1 -1
  36. package/dist/messages/human.cjs +6 -0
  37. package/dist/messages/human.cjs.map +1 -1
  38. package/dist/messages/human.d.cts +3 -1
  39. package/dist/messages/human.d.cts.map +1 -1
  40. package/dist/messages/human.d.ts +3 -1
  41. package/dist/messages/human.d.ts.map +1 -1
  42. package/dist/messages/human.js +6 -0
  43. package/dist/messages/human.js.map +1 -1
  44. package/dist/messages/modifier.cjs +3 -0
  45. package/dist/messages/modifier.cjs.map +1 -1
  46. package/dist/messages/modifier.d.cts +1 -0
  47. package/dist/messages/modifier.d.cts.map +1 -1
  48. package/dist/messages/modifier.d.ts +1 -0
  49. package/dist/messages/modifier.d.ts.map +1 -1
  50. package/dist/messages/modifier.js +3 -0
  51. package/dist/messages/modifier.js.map +1 -1
  52. package/dist/messages/system.cjs +6 -0
  53. package/dist/messages/system.cjs.map +1 -1
  54. package/dist/messages/system.d.cts +3 -1
  55. package/dist/messages/system.d.cts.map +1 -1
  56. package/dist/messages/system.d.ts +3 -1
  57. package/dist/messages/system.d.ts.map +1 -1
  58. package/dist/messages/system.js +6 -0
  59. package/dist/messages/system.js.map +1 -1
  60. package/dist/messages/tool.cjs +9 -0
  61. package/dist/messages/tool.cjs.map +1 -1
  62. package/dist/messages/tool.d.cts +4 -1
  63. package/dist/messages/tool.d.cts.map +1 -1
  64. package/dist/messages/tool.d.ts +4 -1
  65. package/dist/messages/tool.d.ts.map +1 -1
  66. package/dist/messages/tool.js +9 -0
  67. package/dist/messages/tool.js.map +1 -1
  68. package/dist/utils/gateway.cjs +5 -1
  69. package/dist/utils/gateway.cjs.map +1 -1
  70. package/dist/utils/gateway.d.cts +2 -1
  71. package/dist/utils/gateway.d.cts.map +1 -1
  72. package/dist/utils/gateway.d.ts +2 -1
  73. package/dist/utils/gateway.d.ts.map +1 -1
  74. package/dist/utils/gateway.js +5 -2
  75. package/dist/utils/gateway.js.map +1 -1
  76. package/dist/utils/namespace.cjs +3 -0
  77. package/dist/utils/namespace.cjs.map +1 -1
  78. package/dist/utils/namespace.js +3 -0
  79. package/dist/utils/namespace.js.map +1 -1
  80. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"gateway.d.cts","names":[],"sources":["../../src/utils/gateway.ts"],"mappings":";UASiB;EACf;EACA;;UAGe;EACf;EACA;;iBAgBc,gCACd,SACA,gBACC,gCAAgC"}
1
+ {"version":3,"file":"gateway.d.cts","names":[],"sources":["../../src/utils/gateway.ts"],"mappings":";cAKa;UAII;EACf;EACA;;UAGe;EACf;EACA;;iBAgBc,gCACd,SACA,gBACC,gCAAgC"}
@@ -1,4 +1,5 @@
1
1
  //#region src/utils/gateway.d.ts
2
+ declare const DEFAULT_LANGSMITH_GATEWAY = "https://gateway.smith.langchain.com";
2
3
  interface LangSmithGatewayConfigOptions {
3
4
  baseURL?: string;
4
5
  providerPath: string;
@@ -9,5 +10,5 @@ interface LangSmithGatewayConfig {
9
10
  }
10
11
  declare function resolveLangSmithGatewayConfig({ baseURL, providerPath }: LangSmithGatewayConfigOptions): LangSmithGatewayConfig;
11
12
  //#endregion
12
- export { LangSmithGatewayConfig, LangSmithGatewayConfigOptions, resolveLangSmithGatewayConfig };
13
+ export { DEFAULT_LANGSMITH_GATEWAY, LangSmithGatewayConfig, LangSmithGatewayConfigOptions, resolveLangSmithGatewayConfig };
13
14
  //# sourceMappingURL=gateway.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"gateway.d.ts","names":[],"sources":["../../src/utils/gateway.ts"],"mappings":";UASiB;EACf;EACA;;UAGe;EACf;EACA;;iBAgBc,gCACd,SACA,gBACC,gCAAgC"}
1
+ {"version":3,"file":"gateway.d.ts","names":[],"sources":["../../src/utils/gateway.ts"],"mappings":";cAKa;UAII;EACf;EACA;;UAGe;EACf;EACA;;iBAgBc,gCACd,SACA,gBACC,gCAAgC"}
@@ -1,7 +1,10 @@
1
1
  import { __exportAll } from "../_virtual/_rolldown/runtime.js";
2
2
  import { getEnvironmentVariable } from "./env.js";
3
3
  //#region src/utils/gateway.ts
4
- var gateway_exports = /* @__PURE__ */ __exportAll({ resolveLangSmithGatewayConfig: () => resolveLangSmithGatewayConfig });
4
+ var gateway_exports = /* @__PURE__ */ __exportAll({
5
+ DEFAULT_LANGSMITH_GATEWAY: () => DEFAULT_LANGSMITH_GATEWAY,
6
+ resolveLangSmithGatewayConfig: () => resolveLangSmithGatewayConfig
7
+ });
5
8
  const LANGSMITH_GATEWAY = "LANGSMITH_GATEWAY";
6
9
  const LANGSMITH_GATEWAY_API_KEY = "LANGSMITH_GATEWAY_API_KEY";
7
10
  const LANGSMITH_API_KEY = "LANGSMITH_API_KEY";
@@ -31,6 +34,6 @@ function resolveLangSmithGatewayConfig({ baseURL, providerPath }) {
31
34
  };
32
35
  }
33
36
  //#endregion
34
- export { gateway_exports, resolveLangSmithGatewayConfig };
37
+ export { DEFAULT_LANGSMITH_GATEWAY, gateway_exports, resolveLangSmithGatewayConfig };
35
38
 
36
39
  //# sourceMappingURL=gateway.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"gateway.js","names":[],"sources":["../../src/utils/gateway.ts"],"sourcesContent":["import { getEnvironmentVariable } from \"./env.js\";\n\nconst LANGSMITH_GATEWAY = \"LANGSMITH_GATEWAY\";\nconst LANGSMITH_GATEWAY_API_KEY = \"LANGSMITH_GATEWAY_API_KEY\";\nconst LANGSMITH_API_KEY = \"LANGSMITH_API_KEY\";\nconst DEFAULT_LANGSMITH_GATEWAY = \"https://gateway.smith.langchain.com\";\nconst TRUE_VALUES = [\"true\", \"1\", \"yes\"];\nconst FALSE_VALUES = [\"false\", \"0\", \"no\"];\n\nexport interface LangSmithGatewayConfigOptions {\n baseURL?: string;\n providerPath: string;\n}\n\nexport interface LangSmithGatewayConfig {\n baseURL?: string;\n apiKey?: string;\n}\n\nfunction resolveLangSmithGatewayBaseURL(\n providerPath: string\n): string | undefined {\n const value = getEnvironmentVariable(LANGSMITH_GATEWAY);\n if (!value || FALSE_VALUES.includes(value.toLowerCase())) {\n return undefined;\n }\n const baseURL = TRUE_VALUES.includes(value.toLowerCase())\n ? DEFAULT_LANGSMITH_GATEWAY\n : value.replace(/\\/+$/, \"\");\n return `${baseURL}/${providerPath}`;\n}\n\nexport function resolveLangSmithGatewayConfig({\n baseURL,\n providerPath,\n}: LangSmithGatewayConfigOptions): LangSmithGatewayConfig {\n if (baseURL !== undefined) {\n return { baseURL };\n }\n\n const gatewayBaseURL = resolveLangSmithGatewayBaseURL(providerPath);\n if (gatewayBaseURL === undefined) {\n return {};\n }\n\n return {\n baseURL: gatewayBaseURL,\n apiKey:\n getEnvironmentVariable(LANGSMITH_GATEWAY_API_KEY) ||\n getEnvironmentVariable(LANGSMITH_API_KEY),\n };\n}\n"],"mappings":";;;;AAEA,MAAM,oBAAoB;AAC1B,MAAM,4BAA4B;AAClC,MAAM,oBAAoB;AAC1B,MAAM,4BAA4B;AAClC,MAAM,cAAc;CAAC;CAAQ;CAAK;AAAK;AACvC,MAAM,eAAe;CAAC;CAAS;CAAK;AAAI;AAYxC,SAAS,+BACP,cACoB;CACpB,MAAM,QAAQ,uBAAuB,iBAAiB;CACtD,IAAI,CAAC,SAAS,aAAa,SAAS,MAAM,YAAY,CAAC,GACrD;CAKF,OAAO,GAHS,YAAY,SAAS,MAAM,YAAY,CAAC,IACpD,4BACA,MAAM,QAAQ,QAAQ,EAAE,EACV,GAAG;AACvB;AAEA,SAAgB,8BAA8B,EAC5C,SACA,gBACwD;CACxD,IAAI,YAAY,KAAA,GACd,OAAO,EAAE,QAAQ;CAGnB,MAAM,iBAAiB,+BAA+B,YAAY;CAClE,IAAI,mBAAmB,KAAA,GACrB,OAAO,CAAC;CAGV,OAAO;EACL,SAAS;EACT,QACE,uBAAuB,yBAAyB,KAChD,uBAAuB,iBAAiB;CAC5C;AACF"}
1
+ {"version":3,"file":"gateway.js","names":[],"sources":["../../src/utils/gateway.ts"],"sourcesContent":["import { getEnvironmentVariable } from \"./env.js\";\n\nconst LANGSMITH_GATEWAY = \"LANGSMITH_GATEWAY\";\nconst LANGSMITH_GATEWAY_API_KEY = \"LANGSMITH_GATEWAY_API_KEY\";\nconst LANGSMITH_API_KEY = \"LANGSMITH_API_KEY\";\nexport const DEFAULT_LANGSMITH_GATEWAY = \"https://gateway.smith.langchain.com\";\nconst TRUE_VALUES = [\"true\", \"1\", \"yes\"];\nconst FALSE_VALUES = [\"false\", \"0\", \"no\"];\n\nexport interface LangSmithGatewayConfigOptions {\n baseURL?: string;\n providerPath: string;\n}\n\nexport interface LangSmithGatewayConfig {\n baseURL?: string;\n apiKey?: string;\n}\n\nfunction resolveLangSmithGatewayBaseURL(\n providerPath: string\n): string | undefined {\n const value = getEnvironmentVariable(LANGSMITH_GATEWAY);\n if (!value || FALSE_VALUES.includes(value.toLowerCase())) {\n return undefined;\n }\n const baseURL = TRUE_VALUES.includes(value.toLowerCase())\n ? DEFAULT_LANGSMITH_GATEWAY\n : value.replace(/\\/+$/, \"\");\n return `${baseURL}/${providerPath}`;\n}\n\nexport function resolveLangSmithGatewayConfig({\n baseURL,\n providerPath,\n}: LangSmithGatewayConfigOptions): LangSmithGatewayConfig {\n if (baseURL !== undefined) {\n return { baseURL };\n }\n\n const gatewayBaseURL = resolveLangSmithGatewayBaseURL(providerPath);\n if (gatewayBaseURL === undefined) {\n return {};\n }\n\n return {\n baseURL: gatewayBaseURL,\n apiKey:\n getEnvironmentVariable(LANGSMITH_GATEWAY_API_KEY) ||\n getEnvironmentVariable(LANGSMITH_API_KEY),\n };\n}\n"],"mappings":";;;;;;;AAEA,MAAM,oBAAoB;AAC1B,MAAM,4BAA4B;AAClC,MAAM,oBAAoB;AAC1B,MAAa,4BAA4B;AACzC,MAAM,cAAc;CAAC;CAAQ;CAAK;AAAK;AACvC,MAAM,eAAe;CAAC;CAAS;CAAK;AAAI;AAYxC,SAAS,+BACP,cACoB;CACpB,MAAM,QAAQ,uBAAuB,iBAAiB;CACtD,IAAI,CAAC,SAAS,aAAa,SAAS,MAAM,YAAY,CAAC,GACrD;CAKF,OAAO,GAHS,YAAY,SAAS,MAAM,YAAY,CAAC,IACpD,4BACA,MAAM,QAAQ,QAAQ,EAAE,EACV,GAAG;AACvB;AAEA,SAAgB,8BAA8B,EAC5C,SACA,gBACwD;CACxD,IAAI,YAAY,KAAA,GACd,OAAO,EAAE,QAAQ;CAGnB,MAAM,iBAAiB,+BAA+B,YAAY;CAClE,IAAI,mBAAmB,KAAA,GACrB,OAAO,CAAC;CAGV,OAAO;EACL,SAAS;EACT,QACE,uBAAuB,yBAAyB,KAChD,uBAAuB,iBAAiB;CAC5C;AACF"}
@@ -42,6 +42,9 @@ function createNamespace(path) {
42
42
  static isInstance(obj) {
43
43
  return typeof obj === "object" && obj !== null && brandSymbol in obj && obj[brandSymbol] === true;
44
44
  }
45
+ static [Symbol.hasInstance](obj) {
46
+ return this.isInstance(obj);
47
+ }
45
48
  }
46
49
  Object.defineProperty(_Branded, "name", { value: Base.name });
47
50
  return _Branded;
@@ -1 +1 @@
1
- {"version":3,"file":"namespace.cjs","names":[],"sources":["../../src/utils/namespace.ts"],"sourcesContent":["/* oxlint-disable @typescript-eslint/no-explicit-any */\n\n/**\n * A constructor type that can be used as a base class for branding.\n */\ntype Constructor = abstract new (...args: any[]) => any;\n\n/**\n * The return type of `Namespace.brand()`: the original base class\n * intersected with a polymorphic `isInstance` type guard.\n */\ntype BrandedClass<TBase extends Constructor> = TBase & {\n isInstance: IsInstanceFn;\n};\n\n/**\n * A static `isInstance` type guard that resolves to the subclass it's\n * called on via the generic `this` parameter.\n *\n * At call sites TypeScript infers `T` from the class, so\n * `StandardError.isInstance(obj)` narrows `obj` to `StandardError`.\n */\ntype IsInstanceFn = <T extends Constructor>(\n this: T,\n obj: unknown\n) => obj is InstanceType<T>;\n\n/**\n * A namespace object for hierarchical symbol-based branding.\n *\n * Namespaces are internal authoring tools. They are not intended to be\n * part of the public API -- only the branded classes are.\n *\n * @example\n * ```typescript\n * const langchain = createNamespace(\"langchain\");\n * const errorNs = langchain.sub(\"error\");\n *\n * export class LangChainError extends errorNs.brand(Error) {\n * readonly name = \"LangChainError\";\n * }\n *\n * export class ModelAbortError extends errorNs.brand(LangChainError, \"model-abort\") {\n * readonly name = \"ModelAbortError\";\n * }\n * ```\n */\nexport interface Namespace {\n /**\n * Brand a base class with this namespace's symbols.\n *\n * Without a marker, creates a namespace-level base class whose\n * `static isInstance` checks for the namespace's own symbol.\n *\n * With a marker, creates a leaf class whose `static isInstance`\n * checks for the marker-specific symbol.\n *\n * @param Base - The base class to extend\n * @param marker - Optional marker for leaf classes\n * @returns A new class extending Base with symbol branding and static isInstance\n */\n brand<TBase extends Constructor>(\n Base: TBase,\n marker?: string\n ): BrandedClass<TBase>;\n\n /**\n * Create a child namespace.\n *\n * @param childPath - The child segment to append to the current path\n * @returns A new Namespace with the extended path\n */\n sub(childPath: string): Namespace;\n\n /**\n * Check if an object is branded under this namespace (at any level).\n *\n * @param obj - The object to check\n * @returns true if the object carries this namespace's symbol\n */\n isInstance(obj: unknown): boolean;\n}\n\n/**\n * Create a symbol-based namespace for hierarchical `isInstance` checking.\n *\n * Each namespace level gets its own `Symbol.for(path)`. When a class is\n * branded via `.brand()`, only the new symbol for that level is stamped\n * on the prototype. Parent symbols are inherited implicitly through the\n * class extension chain -- `symbol in obj` traverses the prototype chain,\n * so a `ConfigError` instance is recognized by `LangChainError.isInstance()`\n * because it extends `GoogleError` which extends `LangChainError`, whose\n * prototype already carries the `langchain.error` symbol.\n *\n * @param path - The dot-separated namespace path (e.g. \"langchain.error\")\n * @returns A Namespace object with `.brand()`, `.sub()`, and `.isInstance()`\n *\n * @example\n * ```typescript\n * const langchain = createNamespace(\"langchain\");\n * const errorNs = langchain.sub(\"error\");\n * const googleNs = errorNs.sub(\"google\");\n *\n * class LangChainError extends errorNs.brand(Error) {}\n * class GoogleError extends googleNs.brand(LangChainError) {}\n * class ConfigError extends googleNs.brand(GoogleError, \"configuration\") {}\n *\n * const err = new ConfigError(\"bad config\");\n * LangChainError.isInstance(err); // true (checks langchain.error symbol)\n * GoogleError.isInstance(err); // true (checks langchain.error.google symbol)\n * ConfigError.isInstance(err); // true (checks langchain.error.google.configuration symbol)\n * ```\n */\nexport function createNamespace(path: string): Namespace {\n const symbol: symbol = Symbol.for(path);\n\n return {\n brand<TBase extends Constructor>(Base: TBase, marker?: string) {\n const brandSymbol: symbol = marker\n ? Symbol.for(`${path}.${marker}`)\n : symbol;\n\n class _Branded extends (Base as any) {\n readonly [brandSymbol] = true as const;\n\n constructor(...args: any[]) {\n super(...args);\n }\n\n static isInstance(obj: unknown): boolean {\n return (\n typeof obj === \"object\" &&\n obj !== null &&\n brandSymbol in obj &&\n (obj as Record<symbol, unknown>)[brandSymbol] === true\n );\n }\n }\n\n // Inherit the base class's name so \"_Branded\" doesn't leak\n // through the static prototype chain.\n Object.defineProperty(_Branded, \"name\", { value: Base.name });\n\n return _Branded as unknown as BrandedClass<TBase>;\n },\n\n sub(childPath: string): Namespace {\n return createNamespace(`${path}.${childPath}`);\n },\n\n isInstance(obj: unknown): boolean {\n return (\n typeof obj === \"object\" &&\n obj !== null &&\n symbol in obj &&\n (obj as Record<symbol, unknown>)[symbol] === true\n );\n },\n };\n}\n\n/** Base namespace used throughout LangChain */\nexport const ns = createNamespace(\"langchain\");\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiHA,SAAgB,gBAAgB,MAAyB;CACvD,MAAM,SAAiB,OAAO,IAAI,IAAI;CAEtC,OAAO;EACL,MAAiC,MAAa,QAAiB;GAC7D,MAAM,cAAsB,SACxB,OAAO,IAAI,GAAG,KAAK,GAAG,QAAQ,IAC9B;GAEJ,MAAM,iBAAkB,KAAa;IACnC,CAAU,eAAe;IAEzB,YAAY,GAAG,MAAa;KAC1B,MAAM,GAAG,IAAI;IACf;IAEA,OAAO,WAAW,KAAuB;KACvC,OACE,OAAO,QAAQ,YACf,QAAQ,QACR,eAAe,OACd,IAAgC,iBAAiB;IAEtD;GACF;GAIA,OAAO,eAAe,UAAU,QAAQ,EAAE,OAAO,KAAK,KAAK,CAAC;GAE5D,OAAO;EACT;EAEA,IAAI,WAA8B;GAChC,OAAO,gBAAgB,GAAG,KAAK,GAAG,WAAW;EAC/C;EAEA,WAAW,KAAuB;GAChC,OACE,OAAO,QAAQ,YACf,QAAQ,QACR,UAAU,OACT,IAAgC,YAAY;EAEjD;CACF;AACF;;AAGA,MAAa,KAAK,gBAAgB,WAAW"}
1
+ {"version":3,"file":"namespace.cjs","names":[],"sources":["../../src/utils/namespace.ts"],"sourcesContent":["/* oxlint-disable @typescript-eslint/no-explicit-any */\n\n/**\n * A constructor type that can be used as a base class for branding.\n */\ntype Constructor = abstract new (...args: any[]) => any;\n\n/**\n * The return type of `Namespace.brand()`: the original base class\n * intersected with a polymorphic `isInstance` type guard.\n */\ntype BrandedClass<TBase extends Constructor> = TBase & {\n isInstance: IsInstanceFn;\n};\n\n/**\n * A static `isInstance` type guard that resolves to the subclass it's\n * called on via the generic `this` parameter.\n *\n * At call sites TypeScript infers `T` from the class, so\n * `StandardError.isInstance(obj)` narrows `obj` to `StandardError`.\n */\ntype IsInstanceFn = <T extends Constructor>(\n this: T,\n obj: unknown\n) => obj is InstanceType<T>;\n\n/**\n * A namespace object for hierarchical symbol-based branding.\n *\n * Namespaces are internal authoring tools. They are not intended to be\n * part of the public API -- only the branded classes are.\n *\n * @example\n * ```typescript\n * const langchain = createNamespace(\"langchain\");\n * const errorNs = langchain.sub(\"error\");\n *\n * export class LangChainError extends errorNs.brand(Error) {\n * readonly name = \"LangChainError\";\n * }\n *\n * export class ModelAbortError extends errorNs.brand(LangChainError, \"model-abort\") {\n * readonly name = \"ModelAbortError\";\n * }\n * ```\n */\nexport interface Namespace {\n /**\n * Brand a base class with this namespace's symbols.\n *\n * Without a marker, creates a namespace-level base class whose\n * `static isInstance` checks for the namespace's own symbol.\n *\n * With a marker, creates a leaf class whose `static isInstance`\n * checks for the marker-specific symbol.\n *\n * @param Base - The base class to extend\n * @param marker - Optional marker for leaf classes\n * @returns A new class extending Base with symbol branding and static isInstance\n */\n brand<TBase extends Constructor>(\n Base: TBase,\n marker?: string\n ): BrandedClass<TBase>;\n\n /**\n * Create a child namespace.\n *\n * @param childPath - The child segment to append to the current path\n * @returns A new Namespace with the extended path\n */\n sub(childPath: string): Namespace;\n\n /**\n * Check if an object is branded under this namespace (at any level).\n *\n * @param obj - The object to check\n * @returns true if the object carries this namespace's symbol\n */\n isInstance(obj: unknown): boolean;\n}\n\n/**\n * Create a symbol-based namespace for hierarchical `isInstance` checking.\n *\n * Each namespace level gets its own `Symbol.for(path)`. When a class is\n * branded via `.brand()`, only the new symbol for that level is stamped\n * on the prototype. Parent symbols are inherited implicitly through the\n * class extension chain -- `symbol in obj` traverses the prototype chain,\n * so a `ConfigError` instance is recognized by `LangChainError.isInstance()`\n * because it extends `GoogleError` which extends `LangChainError`, whose\n * prototype already carries the `langchain.error` symbol.\n *\n * @param path - The dot-separated namespace path (e.g. \"langchain.error\")\n * @returns A Namespace object with `.brand()`, `.sub()`, and `.isInstance()`\n *\n * @example\n * ```typescript\n * const langchain = createNamespace(\"langchain\");\n * const errorNs = langchain.sub(\"error\");\n * const googleNs = errorNs.sub(\"google\");\n *\n * class LangChainError extends errorNs.brand(Error) {}\n * class GoogleError extends googleNs.brand(LangChainError) {}\n * class ConfigError extends googleNs.brand(GoogleError, \"configuration\") {}\n *\n * const err = new ConfigError(\"bad config\");\n * LangChainError.isInstance(err); // true (checks langchain.error symbol)\n * GoogleError.isInstance(err); // true (checks langchain.error.google symbol)\n * ConfigError.isInstance(err); // true (checks langchain.error.google.configuration symbol)\n * ```\n */\nexport function createNamespace(path: string): Namespace {\n const symbol: symbol = Symbol.for(path);\n\n return {\n brand<TBase extends Constructor>(Base: TBase, marker?: string) {\n const brandSymbol: symbol = marker\n ? Symbol.for(`${path}.${marker}`)\n : symbol;\n\n class _Branded extends (Base as any) {\n readonly [brandSymbol] = true as const;\n\n constructor(...args: any[]) {\n super(...args);\n }\n\n static isInstance(obj: unknown): boolean {\n return (\n typeof obj === \"object\" &&\n obj !== null &&\n brandSymbol in obj &&\n (obj as Record<symbol, unknown>)[brandSymbol] === true\n );\n }\n\n static [Symbol.hasInstance](obj: unknown) {\n return this.isInstance(obj);\n }\n }\n\n // Inherit the base class's name so \"_Branded\" doesn't leak\n // through the static prototype chain.\n Object.defineProperty(_Branded, \"name\", { value: Base.name });\n\n return _Branded as unknown as BrandedClass<TBase>;\n },\n\n sub(childPath: string): Namespace {\n return createNamespace(`${path}.${childPath}`);\n },\n\n isInstance(obj: unknown): boolean {\n return (\n typeof obj === \"object\" &&\n obj !== null &&\n symbol in obj &&\n (obj as Record<symbol, unknown>)[symbol] === true\n );\n },\n };\n}\n\n/** Base namespace used throughout LangChain */\nexport const ns = createNamespace(\"langchain\");\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiHA,SAAgB,gBAAgB,MAAyB;CACvD,MAAM,SAAiB,OAAO,IAAI,IAAI;CAEtC,OAAO;EACL,MAAiC,MAAa,QAAiB;GAC7D,MAAM,cAAsB,SACxB,OAAO,IAAI,GAAG,KAAK,GAAG,QAAQ,IAC9B;GAEJ,MAAM,iBAAkB,KAAa;IACnC,CAAU,eAAe;IAEzB,YAAY,GAAG,MAAa;KAC1B,MAAM,GAAG,IAAI;IACf;IAEA,OAAO,WAAW,KAAuB;KACvC,OACE,OAAO,QAAQ,YACf,QAAQ,QACR,eAAe,OACd,IAAgC,iBAAiB;IAEtD;IAEA,QAAQ,OAAO,aAAa,KAAc;KACxC,OAAO,KAAK,WAAW,GAAG;IAC5B;GACF;GAIA,OAAO,eAAe,UAAU,QAAQ,EAAE,OAAO,KAAK,KAAK,CAAC;GAE5D,OAAO;EACT;EAEA,IAAI,WAA8B;GAChC,OAAO,gBAAgB,GAAG,KAAK,GAAG,WAAW;EAC/C;EAEA,WAAW,KAAuB;GAChC,OACE,OAAO,QAAQ,YACf,QAAQ,QACR,UAAU,OACT,IAAgC,YAAY;EAEjD;CACF;AACF;;AAGA,MAAa,KAAK,gBAAgB,WAAW"}
@@ -42,6 +42,9 @@ function createNamespace(path) {
42
42
  static isInstance(obj) {
43
43
  return typeof obj === "object" && obj !== null && brandSymbol in obj && obj[brandSymbol] === true;
44
44
  }
45
+ static [Symbol.hasInstance](obj) {
46
+ return this.isInstance(obj);
47
+ }
45
48
  }
46
49
  Object.defineProperty(_Branded, "name", { value: Base.name });
47
50
  return _Branded;
@@ -1 +1 @@
1
- {"version":3,"file":"namespace.js","names":[],"sources":["../../src/utils/namespace.ts"],"sourcesContent":["/* oxlint-disable @typescript-eslint/no-explicit-any */\n\n/**\n * A constructor type that can be used as a base class for branding.\n */\ntype Constructor = abstract new (...args: any[]) => any;\n\n/**\n * The return type of `Namespace.brand()`: the original base class\n * intersected with a polymorphic `isInstance` type guard.\n */\ntype BrandedClass<TBase extends Constructor> = TBase & {\n isInstance: IsInstanceFn;\n};\n\n/**\n * A static `isInstance` type guard that resolves to the subclass it's\n * called on via the generic `this` parameter.\n *\n * At call sites TypeScript infers `T` from the class, so\n * `StandardError.isInstance(obj)` narrows `obj` to `StandardError`.\n */\ntype IsInstanceFn = <T extends Constructor>(\n this: T,\n obj: unknown\n) => obj is InstanceType<T>;\n\n/**\n * A namespace object for hierarchical symbol-based branding.\n *\n * Namespaces are internal authoring tools. They are not intended to be\n * part of the public API -- only the branded classes are.\n *\n * @example\n * ```typescript\n * const langchain = createNamespace(\"langchain\");\n * const errorNs = langchain.sub(\"error\");\n *\n * export class LangChainError extends errorNs.brand(Error) {\n * readonly name = \"LangChainError\";\n * }\n *\n * export class ModelAbortError extends errorNs.brand(LangChainError, \"model-abort\") {\n * readonly name = \"ModelAbortError\";\n * }\n * ```\n */\nexport interface Namespace {\n /**\n * Brand a base class with this namespace's symbols.\n *\n * Without a marker, creates a namespace-level base class whose\n * `static isInstance` checks for the namespace's own symbol.\n *\n * With a marker, creates a leaf class whose `static isInstance`\n * checks for the marker-specific symbol.\n *\n * @param Base - The base class to extend\n * @param marker - Optional marker for leaf classes\n * @returns A new class extending Base with symbol branding and static isInstance\n */\n brand<TBase extends Constructor>(\n Base: TBase,\n marker?: string\n ): BrandedClass<TBase>;\n\n /**\n * Create a child namespace.\n *\n * @param childPath - The child segment to append to the current path\n * @returns A new Namespace with the extended path\n */\n sub(childPath: string): Namespace;\n\n /**\n * Check if an object is branded under this namespace (at any level).\n *\n * @param obj - The object to check\n * @returns true if the object carries this namespace's symbol\n */\n isInstance(obj: unknown): boolean;\n}\n\n/**\n * Create a symbol-based namespace for hierarchical `isInstance` checking.\n *\n * Each namespace level gets its own `Symbol.for(path)`. When a class is\n * branded via `.brand()`, only the new symbol for that level is stamped\n * on the prototype. Parent symbols are inherited implicitly through the\n * class extension chain -- `symbol in obj` traverses the prototype chain,\n * so a `ConfigError` instance is recognized by `LangChainError.isInstance()`\n * because it extends `GoogleError` which extends `LangChainError`, whose\n * prototype already carries the `langchain.error` symbol.\n *\n * @param path - The dot-separated namespace path (e.g. \"langchain.error\")\n * @returns A Namespace object with `.brand()`, `.sub()`, and `.isInstance()`\n *\n * @example\n * ```typescript\n * const langchain = createNamespace(\"langchain\");\n * const errorNs = langchain.sub(\"error\");\n * const googleNs = errorNs.sub(\"google\");\n *\n * class LangChainError extends errorNs.brand(Error) {}\n * class GoogleError extends googleNs.brand(LangChainError) {}\n * class ConfigError extends googleNs.brand(GoogleError, \"configuration\") {}\n *\n * const err = new ConfigError(\"bad config\");\n * LangChainError.isInstance(err); // true (checks langchain.error symbol)\n * GoogleError.isInstance(err); // true (checks langchain.error.google symbol)\n * ConfigError.isInstance(err); // true (checks langchain.error.google.configuration symbol)\n * ```\n */\nexport function createNamespace(path: string): Namespace {\n const symbol: symbol = Symbol.for(path);\n\n return {\n brand<TBase extends Constructor>(Base: TBase, marker?: string) {\n const brandSymbol: symbol = marker\n ? Symbol.for(`${path}.${marker}`)\n : symbol;\n\n class _Branded extends (Base as any) {\n readonly [brandSymbol] = true as const;\n\n constructor(...args: any[]) {\n super(...args);\n }\n\n static isInstance(obj: unknown): boolean {\n return (\n typeof obj === \"object\" &&\n obj !== null &&\n brandSymbol in obj &&\n (obj as Record<symbol, unknown>)[brandSymbol] === true\n );\n }\n }\n\n // Inherit the base class's name so \"_Branded\" doesn't leak\n // through the static prototype chain.\n Object.defineProperty(_Branded, \"name\", { value: Base.name });\n\n return _Branded as unknown as BrandedClass<TBase>;\n },\n\n sub(childPath: string): Namespace {\n return createNamespace(`${path}.${childPath}`);\n },\n\n isInstance(obj: unknown): boolean {\n return (\n typeof obj === \"object\" &&\n obj !== null &&\n symbol in obj &&\n (obj as Record<symbol, unknown>)[symbol] === true\n );\n },\n };\n}\n\n/** Base namespace used throughout LangChain */\nexport const ns = createNamespace(\"langchain\");\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiHA,SAAgB,gBAAgB,MAAyB;CACvD,MAAM,SAAiB,OAAO,IAAI,IAAI;CAEtC,OAAO;EACL,MAAiC,MAAa,QAAiB;GAC7D,MAAM,cAAsB,SACxB,OAAO,IAAI,GAAG,KAAK,GAAG,QAAQ,IAC9B;GAEJ,MAAM,iBAAkB,KAAa;IACnC,CAAU,eAAe;IAEzB,YAAY,GAAG,MAAa;KAC1B,MAAM,GAAG,IAAI;IACf;IAEA,OAAO,WAAW,KAAuB;KACvC,OACE,OAAO,QAAQ,YACf,QAAQ,QACR,eAAe,OACd,IAAgC,iBAAiB;IAEtD;GACF;GAIA,OAAO,eAAe,UAAU,QAAQ,EAAE,OAAO,KAAK,KAAK,CAAC;GAE5D,OAAO;EACT;EAEA,IAAI,WAA8B;GAChC,OAAO,gBAAgB,GAAG,KAAK,GAAG,WAAW;EAC/C;EAEA,WAAW,KAAuB;GAChC,OACE,OAAO,QAAQ,YACf,QAAQ,QACR,UAAU,OACT,IAAgC,YAAY;EAEjD;CACF;AACF;;AAGA,MAAa,KAAK,gBAAgB,WAAW"}
1
+ {"version":3,"file":"namespace.js","names":[],"sources":["../../src/utils/namespace.ts"],"sourcesContent":["/* oxlint-disable @typescript-eslint/no-explicit-any */\n\n/**\n * A constructor type that can be used as a base class for branding.\n */\ntype Constructor = abstract new (...args: any[]) => any;\n\n/**\n * The return type of `Namespace.brand()`: the original base class\n * intersected with a polymorphic `isInstance` type guard.\n */\ntype BrandedClass<TBase extends Constructor> = TBase & {\n isInstance: IsInstanceFn;\n};\n\n/**\n * A static `isInstance` type guard that resolves to the subclass it's\n * called on via the generic `this` parameter.\n *\n * At call sites TypeScript infers `T` from the class, so\n * `StandardError.isInstance(obj)` narrows `obj` to `StandardError`.\n */\ntype IsInstanceFn = <T extends Constructor>(\n this: T,\n obj: unknown\n) => obj is InstanceType<T>;\n\n/**\n * A namespace object for hierarchical symbol-based branding.\n *\n * Namespaces are internal authoring tools. They are not intended to be\n * part of the public API -- only the branded classes are.\n *\n * @example\n * ```typescript\n * const langchain = createNamespace(\"langchain\");\n * const errorNs = langchain.sub(\"error\");\n *\n * export class LangChainError extends errorNs.brand(Error) {\n * readonly name = \"LangChainError\";\n * }\n *\n * export class ModelAbortError extends errorNs.brand(LangChainError, \"model-abort\") {\n * readonly name = \"ModelAbortError\";\n * }\n * ```\n */\nexport interface Namespace {\n /**\n * Brand a base class with this namespace's symbols.\n *\n * Without a marker, creates a namespace-level base class whose\n * `static isInstance` checks for the namespace's own symbol.\n *\n * With a marker, creates a leaf class whose `static isInstance`\n * checks for the marker-specific symbol.\n *\n * @param Base - The base class to extend\n * @param marker - Optional marker for leaf classes\n * @returns A new class extending Base with symbol branding and static isInstance\n */\n brand<TBase extends Constructor>(\n Base: TBase,\n marker?: string\n ): BrandedClass<TBase>;\n\n /**\n * Create a child namespace.\n *\n * @param childPath - The child segment to append to the current path\n * @returns A new Namespace with the extended path\n */\n sub(childPath: string): Namespace;\n\n /**\n * Check if an object is branded under this namespace (at any level).\n *\n * @param obj - The object to check\n * @returns true if the object carries this namespace's symbol\n */\n isInstance(obj: unknown): boolean;\n}\n\n/**\n * Create a symbol-based namespace for hierarchical `isInstance` checking.\n *\n * Each namespace level gets its own `Symbol.for(path)`. When a class is\n * branded via `.brand()`, only the new symbol for that level is stamped\n * on the prototype. Parent symbols are inherited implicitly through the\n * class extension chain -- `symbol in obj` traverses the prototype chain,\n * so a `ConfigError` instance is recognized by `LangChainError.isInstance()`\n * because it extends `GoogleError` which extends `LangChainError`, whose\n * prototype already carries the `langchain.error` symbol.\n *\n * @param path - The dot-separated namespace path (e.g. \"langchain.error\")\n * @returns A Namespace object with `.brand()`, `.sub()`, and `.isInstance()`\n *\n * @example\n * ```typescript\n * const langchain = createNamespace(\"langchain\");\n * const errorNs = langchain.sub(\"error\");\n * const googleNs = errorNs.sub(\"google\");\n *\n * class LangChainError extends errorNs.brand(Error) {}\n * class GoogleError extends googleNs.brand(LangChainError) {}\n * class ConfigError extends googleNs.brand(GoogleError, \"configuration\") {}\n *\n * const err = new ConfigError(\"bad config\");\n * LangChainError.isInstance(err); // true (checks langchain.error symbol)\n * GoogleError.isInstance(err); // true (checks langchain.error.google symbol)\n * ConfigError.isInstance(err); // true (checks langchain.error.google.configuration symbol)\n * ```\n */\nexport function createNamespace(path: string): Namespace {\n const symbol: symbol = Symbol.for(path);\n\n return {\n brand<TBase extends Constructor>(Base: TBase, marker?: string) {\n const brandSymbol: symbol = marker\n ? Symbol.for(`${path}.${marker}`)\n : symbol;\n\n class _Branded extends (Base as any) {\n readonly [brandSymbol] = true as const;\n\n constructor(...args: any[]) {\n super(...args);\n }\n\n static isInstance(obj: unknown): boolean {\n return (\n typeof obj === \"object\" &&\n obj !== null &&\n brandSymbol in obj &&\n (obj as Record<symbol, unknown>)[brandSymbol] === true\n );\n }\n\n static [Symbol.hasInstance](obj: unknown) {\n return this.isInstance(obj);\n }\n }\n\n // Inherit the base class's name so \"_Branded\" doesn't leak\n // through the static prototype chain.\n Object.defineProperty(_Branded, \"name\", { value: Base.name });\n\n return _Branded as unknown as BrandedClass<TBase>;\n },\n\n sub(childPath: string): Namespace {\n return createNamespace(`${path}.${childPath}`);\n },\n\n isInstance(obj: unknown): boolean {\n return (\n typeof obj === \"object\" &&\n obj !== null &&\n symbol in obj &&\n (obj as Record<symbol, unknown>)[symbol] === true\n );\n },\n };\n}\n\n/** Base namespace used throughout LangChain */\nexport const ns = createNamespace(\"langchain\");\n"],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAiHA,SAAgB,gBAAgB,MAAyB;CACvD,MAAM,SAAiB,OAAO,IAAI,IAAI;CAEtC,OAAO;EACL,MAAiC,MAAa,QAAiB;GAC7D,MAAM,cAAsB,SACxB,OAAO,IAAI,GAAG,KAAK,GAAG,QAAQ,IAC9B;GAEJ,MAAM,iBAAkB,KAAa;IACnC,CAAU,eAAe;IAEzB,YAAY,GAAG,MAAa;KAC1B,MAAM,GAAG,IAAI;IACf;IAEA,OAAO,WAAW,KAAuB;KACvC,OACE,OAAO,QAAQ,YACf,QAAQ,QACR,eAAe,OACd,IAAgC,iBAAiB;IAEtD;IAEA,QAAQ,OAAO,aAAa,KAAc;KACxC,OAAO,KAAK,WAAW,GAAG;IAC5B;GACF;GAIA,OAAO,eAAe,UAAU,QAAQ,EAAE,OAAO,KAAK,KAAK,CAAC;GAE5D,OAAO;EACT;EAEA,IAAI,WAA8B;GAChC,OAAO,gBAAgB,GAAG,KAAK,GAAG,WAAW;EAC/C;EAEA,WAAW,KAAuB;GAChC,OACE,OAAO,QAAQ,YACf,QAAQ,QACR,UAAU,OACT,IAAgC,YAAY;EAEjD;CACF;AACF;;AAGA,MAAa,KAAK,gBAAgB,WAAW"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@langchain/core",
3
- "version": "1.2.5",
3
+ "version": "1.2.7",
4
4
  "description": "Core LangChain.js abstractions and schemas",
5
5
  "type": "module",
6
6
  "engines": {