LangChain 1.0 cut langchain down to the agent building blocks and published the rest as @langchain/classic. Imports of chains, legacy agents, retrievers, memory, document loaders, output parsers or stores from a langchain/... subpath stop resolving on upgrade. The code behind them did not change; the package name in front of the subpath did.

What changed

Before and after

A v0 program built from parts that moved:

import { createRetrievalChain } from 'langchain/chains/retrieval';
import { EnsembleRetriever } from 'langchain/retrievers/ensemble';
import { RecursiveCharacterTextSplitter } from 'langchain/text_splitter';
import { StructuredOutputParser } from 'langchain/output_parsers';

After npx emendant fix, only the package in front of each subpath changes:

import { createRetrievalChain } from '@langchain/classic/chains/retrieval';
import { EnsembleRetriever } from '@langchain/classic/retrievers/ensemble';
import { RecursiveCharacterTextSplitter } from '@langchain/classic/text_splitter';
import { StructuredOutputParser } from '@langchain/classic/output_parsers';

There is no after for RemoteRunnable.

Migration guidance and its limits

Apply the patch, then install @langchain/classic. The patch rewrites specifiers and does not touch your manifest, so until the package is installed the verification run reports it as failing. Add the dependency and run the fix again.

A langchain/... subpath the map does not name went somewhere other than @langchain/classic, or was never public, and Emendant reports nothing for it rather than guessing. langchain/runnables/remote is report only. The new agent API in langchain 1.0 is outside this page: a clean scan says your imports still resolve, not that your agents behave as before.

What Emendant detects, fixes and verifies

2 changes in langchain 1.0.1. 1 patched by a transform, 0 patched only with a model provider you name, 1 report only. Every patch is proved in a copy of your repository before it is offered, and its header names the checks that passed. This table is generated from the feed entry, so it cannot claim more than the entry does.

ChangeSeverityDetectsFixVerified by
The legacy langchain modules moved to @langchain/classic
langchain-npm-1.0.1-legacy-modules-moved-to-classic
Breaking
  • any import of langchain/agents
  • any import of langchain/agents/format_scratchpad
  • any import of langchain/agents/format_scratchpad/log
  • any import of langchain/agents/format_scratchpad/log_to_message
  • any import of langchain/agents/format_scratchpad/openai_tools
  • any import of langchain/agents/format_scratchpad/xml
  • any import of langchain/agents/load
  • any import of langchain/agents/openai/output_parser
  • any import of langchain/agents/react/output_parser
  • any import of langchain/agents/toolkits
  • any import of langchain/agents/toolkits/sql
  • any import of langchain/agents/xml/output_parser
  • any import of langchain/cache/file_system
  • any import of langchain/callbacks
  • any import of langchain/chains
  • any import of langchain/chains/combine_documents
  • any import of langchain/chains/combine_documents/reduce
  • any import of langchain/chains/graph_qa/cypher
  • any import of langchain/chains/history_aware_retriever
  • any import of langchain/chains/load
  • any import of langchain/chains/openai_functions
  • any import of langchain/chains/query_constructor
  • any import of langchain/chains/query_constructor/ir
  • any import of langchain/chains/retrieval
  • any import of langchain/chains/sql_db
  • any import of langchain/document
  • any import of langchain/document_loaders/base
  • any import of langchain/document_loaders/fs/buffer
  • any import of langchain/document_loaders/fs/directory
  • any import of langchain/document_loaders/fs/json
  • any import of langchain/document_loaders/fs/multi_file
  • any import of langchain/document_loaders/fs/text
  • any import of langchain/document_transformers/openai_functions
  • any import of langchain/embeddings/cache_backed
  • any import of langchain/embeddings/fake
  • any import of langchain/evaluation
  • any import of langchain/experimental/autogpt
  • any import of langchain/experimental/babyagi
  • any import of langchain/experimental/chains/violation_of_expectations
  • any import of langchain/experimental/generative_agents
  • any import of langchain/experimental/masking
  • any import of langchain/experimental/openai_assistant
  • any import of langchain/experimental/openai_files
  • any import of langchain/experimental/plan_and_execute
  • any import of langchain/experimental/prompts/custom_format
  • any import of langchain/experimental/prompts/handlebars
  • any import of langchain/indexes
  • any import of langchain/memory
  • any import of langchain/memory/chat_memory
  • any import of langchain/output_parsers
  • any import of langchain/output_parsers/expression
  • any import of langchain/retrievers/contextual_compression
  • any import of langchain/retrievers/document_compressors
  • any import of langchain/retrievers/document_compressors/chain_extract
  • any import of langchain/retrievers/document_compressors/embeddings_filter
  • any import of langchain/retrievers/ensemble
  • any import of langchain/retrievers/hyde
  • any import of langchain/retrievers/matryoshka_retriever
  • any import of langchain/retrievers/multi_query
  • any import of langchain/retrievers/multi_vector
  • any import of langchain/retrievers/parent_document
  • any import of langchain/retrievers/score_threshold
  • any import of langchain/retrievers/self_query
  • any import of langchain/retrievers/self_query/functional
  • any import of langchain/retrievers/time_weighted
  • any import of langchain/schema/prompt_template
  • any import of langchain/schema/query_constructor
  • any import of langchain/smith
  • any import of langchain/sql_db
  • any import of langchain/stores/doc/base
  • any import of langchain/stores/doc/in_memory
  • any import of langchain/stores/file/in_memory
  • any import of langchain/stores/file/node
  • any import of langchain/stores/message/in_memory
  • any import of langchain/text_splitter
  • any import of langchain/tools
  • any import of langchain/tools/chain
  • any import of langchain/tools/render
  • any import of langchain/tools/retriever
  • any import of langchain/tools/sql
  • any import of langchain/tools/webbrowser
  • any import of langchain/util/document
  • any import of langchain/util/math
  • any import of langchain/util/time
  • any import of langchain/vectorstores/memory
Patch, written by the replace-module-path transformYour typecheck and tests
RemoteRunnable was removed
langchain-npm-1.0.1-remoterunnable-removed
Breaking
  • any import of langchain/runnables/remote
Report onlyNot applicable

emendant explain <change-id> prints any row's entry, guidance and sources at the terminal.

Coverage

Snapshot
2026-08-28.1, sequence 11, signed 28 August 2026
Minimum CLI
emendant@0.1.0
Feed entry
feed/npm/langchain/1.0.1.json

emendant feed status shows the snapshot your machine holds, and emendant feed update fetches the latest.

Primary sources

Every claim above was checked against these, each pinned to the release rather than to a default branch.

Scan your repository

Runs locally, reads your lockfile and source, sends nothing anywhere.

npx emendant scan

Then npx emendant fix writes the patches the table says exist. The getting started guide covers the flags and the patch grades.