[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-langchain-deep-agents-memory":3,"mdc-rlrlur-key":34,"related-org-langchain-deep-agents-memory":3175,"related-repo-langchain-deep-agents-memory":3352},{"slug":4,"name":4,"fn":5,"description":6,"org":7,"tags":12,"stars":24,"repoUrl":25,"updatedAt":26,"license":27,"forks":28,"topics":29,"repo":30,"sourceUrl":32,"mdContent":33},"deep-agents-memory","implement memory and persistence for Deep Agents","INVOKE THIS SKILL when your Deep Agent needs memory, persistence, or filesystem access. Covers StateBackend (ephemeral), StoreBackend (persistent), FilesystemMiddleware, and CompositeBackend for routing.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},"langchain","LangChain","https:\u002F\u002Fpexgzepcugksgbtrxkhf.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Forg-logos\u002Flangchain.png","langchain-ai",[13,15,18,21],{"name":9,"slug":8,"type":14},"tag",{"name":16,"slug":17,"type":14},"Memory","memory",{"name":19,"slug":20,"type":14},"Agents","agents",{"name":22,"slug":23,"type":14},"Storage","storage",877,"https:\u002F\u002Fgithub.com\u002Flangchain-ai\u002Flangchain-skills","2026-04-06T18:26:26.065654",null,77,[],{"repoUrl":25,"stars":24,"forks":28,"topics":31,"description":27},[],"https:\u002F\u002Fgithub.com\u002Flangchain-ai\u002Flangchain-skills\u002Ftree\u002FHEAD\u002Fconfig\u002Fskills\u002Fdeep-agents-memory","---\nname: deep-agents-memory\ndescription: \"INVOKE THIS SKILL when your Deep Agent needs memory, persistence, or filesystem access. Covers StateBackend (ephemeral), StoreBackend (persistent), FilesystemMiddleware, and CompositeBackend for routing.\"\n---\n\n\u003Coverview>\nDeep Agents use pluggable backends for file operations and memory:\n\n**Short-term (StateBackend)**: Persists within a single thread, lost when thread ends\n**Long-term (StoreBackend)**: Persists across threads and sessions\n**Hybrid (CompositeBackend)**: Route different paths to different backends\n\nFilesystemMiddleware provides tools: `ls`, `read_file`, `write_file`, `edit_file`, `glob`, `grep`\n\u003C\u002Foverview>\n\n\u003Cbackend-selection>\n\n| Use Case | Backend | Why |\n|----------|---------|-----|\n| Temporary working files | StateBackend | Default, no setup |\n| Local development CLI | FilesystemBackend | Direct disk access |\n| Cross-session memory | StoreBackend | Persists across threads |\n| Hybrid storage | CompositeBackend | Mix ephemeral + persistent |\n\n\u003C\u002Fbackend-selection>\n\n\u003Cex-default-state-backend>\n\u003Cpython>\nDefault StateBackend stores files ephemerally within a thread.\n\n```python\nfrom deepagents import create_deep_agent\n\nagent = create_deep_agent()  # Default: StateBackend\nresult = agent.invoke({\n    \"messages\": [{\"role\": \"user\", \"content\": \"Write notes to \u002Fdraft.txt\"}]\n}, config={\"configurable\": {\"thread_id\": \"thread-1\"}})\n# \u002Fdraft.txt is lost when thread ends\n```\n\u003C\u002Fpython>\n\u003Ctypescript>\nDefault StateBackend stores files ephemerally within a thread.\n\n```typescript\nimport { createDeepAgent } from \"deepagents\";\n\nconst agent = await createDeepAgent();  \u002F\u002F Default: StateBackend\nconst result = await agent.invoke({\n  messages: [{ role: \"user\", content: \"Write notes to \u002Fdraft.txt\" }]\n}, { configurable: { thread_id: \"thread-1\" } });\n\u002F\u002F \u002Fdraft.txt is lost when thread ends\n```\n\u003C\u002Ftypescript>\n\u003C\u002Fex-default-state-backend>\n\n\u003Cex-composite-backend-for-hybrid>\n\u003Cpython>\nConfigure CompositeBackend to route paths to different storage backends.\n\n```python\nfrom deepagents import create_deep_agent\nfrom deepagents.backends import CompositeBackend, StateBackend, StoreBackend\nfrom langgraph.store.memory import InMemoryStore\n\nstore = InMemoryStore()\n\ncomposite_backend = lambda rt: CompositeBackend(\n    default=StateBackend(rt),\n    routes={\"\u002Fmemories\u002F\": StoreBackend(rt)}\n)\n\nagent = create_deep_agent(backend=composite_backend, store=store)\n\n# \u002Fdraft.txt -> ephemeral (StateBackend)\n# \u002Fmemories\u002Fuser-prefs.txt -> persistent (StoreBackend)\n```\n\u003C\u002Fpython>\n\u003Ctypescript>\nConfigure CompositeBackend to route paths to different storage backends.\n\n```typescript\nimport { createDeepAgent, CompositeBackend, StateBackend, StoreBackend } from \"deepagents\";\nimport { InMemoryStore } from \"@langchain\u002Flanggraph\";\n\nconst store = new InMemoryStore();\n\nconst agent = await createDeepAgent({\n  backend: (config) => new CompositeBackend(\n    new StateBackend(config),\n    { \"\u002Fmemories\u002F\": new StoreBackend(config) }\n  ),\n  store\n});\n\n\u002F\u002F \u002Fdraft.txt -> ephemeral (StateBackend)\n\u002F\u002F \u002Fmemories\u002Fuser-prefs.txt -> persistent (StoreBackend)\n```\n\u003C\u002Ftypescript>\n\u003C\u002Fex-composite-backend-for-hybrid>\n\n\u003Cex-cross-session-memory>\n\u003Cpython>\nFiles in \u002Fmemories\u002F persist across threads via StoreBackend routing.\n\n```python\n# Using CompositeBackend from previous example\nconfig1 = {\"configurable\": {\"thread_id\": \"thread-1\"}}\nagent.invoke({\"messages\": [{\"role\": \"user\", \"content\": \"Save to \u002Fmemories\u002Fstyle.txt\"}]}, config=config1)\n\nconfig2 = {\"configurable\": {\"thread_id\": \"thread-2\"}}\nagent.invoke({\"messages\": [{\"role\": \"user\", \"content\": \"Read \u002Fmemories\u002Fstyle.txt\"}]}, config=config2)\n# Thread 2 can read file saved by Thread 1\n```\n\u003C\u002Fpython>\n\u003Ctypescript>\nFiles in \u002Fmemories\u002F persist across threads via StoreBackend routing.\n\n```typescript\n\u002F\u002F Using CompositeBackend from previous example\nconst config1 = { configurable: { thread_id: \"thread-1\" } };\nawait agent.invoke({ messages: [{ role: \"user\", content: \"Save to \u002Fmemories\u002Fstyle.txt\" }] }, config1);\n\nconst config2 = { configurable: { thread_id: \"thread-2\" } };\nawait agent.invoke({ messages: [{ role: \"user\", content: \"Read \u002Fmemories\u002Fstyle.txt\" }] }, config2);\n\u002F\u002F Thread 2 can read file saved by Thread 1\n```\n\u003C\u002Ftypescript>\n\u003C\u002Fex-cross-session-memory>\n\n\u003Cex-filesystem-backend-local-dev>\n\u003Cpython>\nUse FilesystemBackend for local development with real disk access and human-in-the-loop.\n\n```python\nfrom deepagents import create_deep_agent\nfrom deepagents.backends import FilesystemBackend\nfrom langgraph.checkpoint.memory import MemorySaver\n\nagent = create_deep_agent(\n    backend=FilesystemBackend(root_dir=\".\", virtual_mode=True),  # Restrict access\n    interrupt_on={\"write_file\": True, \"edit_file\": True},\n    checkpointer=MemorySaver()\n)\n\n# Agent can read\u002Fwrite actual files on disk\n```\n\u003C\u002Fpython>\n\u003Ctypescript>\nUse FilesystemBackend for local development with real disk access and human-in-the-loop.\n\n```typescript\nimport { createDeepAgent, FilesystemBackend } from \"deepagents\";\nimport { MemorySaver } from \"@langchain\u002Flanggraph\";\n\nconst agent = await createDeepAgent({\n  backend: new FilesystemBackend({ rootDir: \".\", virtualMode: true }),\n  interruptOn: { write_file: true, edit_file: true },\n  checkpointer: new MemorySaver()\n});\n```\n\u003C\u002Ftypescript>\n\n**Security: Never use FilesystemBackend in web servers - use StateBackend or sandbox instead.**\n\u003C\u002Fex-filesystem-backend-local-dev>\n\n\u003Cex-store-in-custom-tools>\n\u003Cpython>\nAccess the store directly in custom tools for long-term memory operations.\n\n```python\nfrom langchain.tools import tool, ToolRuntime\nfrom langchain.agents import create_agent\nfrom langgraph.store.memory import InMemoryStore\n\n@tool\ndef get_user_preference(key: str, runtime: ToolRuntime) -> str:\n    \"\"\"Get a user preference from long-term storage.\"\"\"\n    store = runtime.store\n    result = store.get((\"user_prefs\",), key)\n    return str(result.value) if result else \"Not found\"\n\n@tool\ndef save_user_preference(key: str, value: str, runtime: ToolRuntime) -> str:\n    \"\"\"Save a user preference to long-term storage.\"\"\"\n    store = runtime.store\n    store.put((\"user_prefs\",), key, {\"value\": value})\n    return f\"Saved {key}={value}\"\n\nstore = InMemoryStore()\n\nagent = create_agent(\n    model=\"gpt-4.1\",\n    tools=[get_user_preference, save_user_preference],\n    store=store\n)\n```\n\u003C\u002Fpython>\n\u003C\u002Fex-store-in-custom-tools>\n\n\u003Cboundaries>\n### What Agents CAN Configure\n\n- Backend type and configuration\n- Routing rules for CompositeBackend\n- Root directory for FilesystemBackend\n- Human-in-the-loop for file operations\n\n### What Agents CANNOT Configure\n\n- Tool names (ls, read_file, write_file, edit_file, glob, grep)\n- Access files outside virtual_mode restrictions\n- Cross-thread file access without proper backend setup\n\u003C\u002Fboundaries>\n\n\u003Cfix-storebackend-requires-store>\n\u003Cpython>\nStoreBackend requires a store instance.\n\n```python\n# WRONG\nagent = create_deep_agent(backend=lambda rt: StoreBackend(rt))\n\n# CORRECT\nagent = create_deep_agent(backend=lambda rt: StoreBackend(rt), store=InMemoryStore())\n```\n\u003C\u002Fpython>\n\u003Ctypescript>\nStoreBackend requires a store instance.\n\n```typescript\n\u002F\u002F WRONG\nconst agent = await createDeepAgent({ backend: (c) => new StoreBackend(c) });\n\n\u002F\u002F CORRECT\nconst agent = await createDeepAgent({ backend: (c) => new StoreBackend(c), store: new InMemoryStore() });\n```\n\u003C\u002Ftypescript>\n\u003C\u002Ffix-storebackend-requires-store>\n\n\u003Cfix-statebackend-files-dont-persist>\n\u003Cpython>\nStateBackend files are thread-scoped - use same thread_id or StoreBackend for cross-thread access.\n\n```python\n# WRONG: thread-2 can't read file from thread-1\nagent.invoke({\"messages\": [...]}, config={\"configurable\": {\"thread_id\": \"thread-1\"}})  # Write\nagent.invoke({\"messages\": [...]}, config={\"configurable\": {\"thread_id\": \"thread-2\"}})  # File not found!\n```\n\u003C\u002Fpython>\n\u003Ctypescript>\nStateBackend files are thread-scoped - use same thread_id or StoreBackend for cross-thread access.\n\n```typescript\n\u002F\u002F WRONG: thread-2 can't read file from thread-1\nawait agent.invoke({ messages: [...] }, { configurable: { thread_id: \"thread-1\" } });  \u002F\u002F Write\nawait agent.invoke({ messages: [...] }, { configurable: { thread_id: \"thread-2\" } });  \u002F\u002F File not found!\n```\n\u003C\u002Ftypescript>\n\u003C\u002Ffix-statebackend-files-dont-persist>\n\n\u003Cfix-path-prefix-for-persistence>\n\u003Cpython>\nPath must match CompositeBackend route prefix for persistence.\n\n```python\n# With routes={\"\u002Fmemories\u002F\": StoreBackend(rt)}:\nagent.invoke(...)  # \u002Fprefs.txt -> ephemeral (no match)\nagent.invoke(...)  # \u002Fmemories\u002Fprefs.txt -> persistent (matches route)\n```\n\u003C\u002Fpython>\n\u003Ctypescript>\nPath must match CompositeBackend route prefix for persistence.\n\n```typescript\n\u002F\u002F With routes: { \"\u002Fmemories\u002F\": StoreBackend }:\nawait agent.invoke(...);  \u002F\u002F \u002Fprefs.txt -> ephemeral (no match)\nawait agent.invoke(...);  \u002F\u002F \u002Fmemories\u002Fprefs.txt -> persistent (matches route)\n```\n\u003C\u002Ftypescript>\n\u003C\u002Ffix-path-prefix-for-persistence>\n\n\u003Cfix-production-store>\n\u003Cpython>\nUse PostgresStore for production (InMemoryStore lost on restart).\n\n```python\n# WRONG                              # CORRECT\nstore = InMemoryStore()              store = PostgresStore(connection_string=\"postgresql:\u002F\u002F...\")\n```\n\u003C\u002Fpython>\n\u003Ctypescript>\nUse PostgresStore for production (InMemoryStore lost on restart).\n\n```typescript\n\u002F\u002F WRONG                                    \u002F\u002F CORRECT\nconst store = new InMemoryStore();          const store = new PostgresStore({ connectionString: \"...\" });\n```\n\u003C\u002Ftypescript>\n\u003C\u002Ffix-production-store>\n\n\u003Cfix-filesystem-backend-needs-virtual-mode>\n\u003Cpython>\nEnable virtual_mode=True to restrict path access (prevents ..\u002F and ~\u002F escapes).\n\n```python\nbackend = FilesystemBackend(root_dir=\"\u002Fproject\", virtual_mode=True)  # Secure\n```\n\u003C\u002Fpython>\n\u003C\u002Ffix-filesystem-backend-needs-virtual-mode>\n\n\u003Cfix-longest-prefix-match>\n\u003Cpython>\nCompositeBackend matches longest prefix first.\n\n```python\nroutes = {\"\u002Fmem\u002F\": StoreBackend(rt), \"\u002Fmem\u002Ftemp\u002F\": StateBackend(rt)}\n# \u002Fmem\u002Ffile.txt -> StoreBackend, \u002Fmem\u002Ftemp\u002Ffile.txt -> StateBackend (longer match)\n```\n\u003C\u002Fpython>\n\u003C\u002Ffix-longest-prefix-match>\n",{"data":35,"body":36},{"name":4,"description":6},{"type":37,"children":38},"root",[39,3169],{"type":40,"tag":41,"props":42,"children":43},"element","overview",{},[44,47,73,121,230,632,1136,1584],{"type":45,"value":46},"text","\nDeep Agents use pluggable backends for file operations and memory:\n",{"type":40,"tag":48,"props":49,"children":50},"p",{},[51,57,59,64,66,71],{"type":40,"tag":52,"props":53,"children":54},"strong",{},[55],{"type":45,"value":56},"Short-term (StateBackend)",{"type":45,"value":58},": Persists within a single thread, lost when thread ends\n",{"type":40,"tag":52,"props":60,"children":61},{},[62],{"type":45,"value":63},"Long-term (StoreBackend)",{"type":45,"value":65},": Persists across threads and sessions\n",{"type":40,"tag":52,"props":67,"children":68},{},[69],{"type":45,"value":70},"Hybrid (CompositeBackend)",{"type":45,"value":72},": Route different paths to different backends",{"type":40,"tag":48,"props":74,"children":75},{},[76,78,85,87,93,94,100,101,107,108,114,115],{"type":45,"value":77},"FilesystemMiddleware provides tools: ",{"type":40,"tag":79,"props":80,"children":82},"code",{"className":81},[],[83],{"type":45,"value":84},"ls",{"type":45,"value":86},", ",{"type":40,"tag":79,"props":88,"children":90},{"className":89},[],[91],{"type":45,"value":92},"read_file",{"type":45,"value":86},{"type":40,"tag":79,"props":95,"children":97},{"className":96},[],[98],{"type":45,"value":99},"write_file",{"type":45,"value":86},{"type":40,"tag":79,"props":102,"children":104},{"className":103},[],[105],{"type":45,"value":106},"edit_file",{"type":45,"value":86},{"type":40,"tag":79,"props":109,"children":111},{"className":110},[],[112],{"type":45,"value":113},"glob",{"type":45,"value":86},{"type":40,"tag":79,"props":116,"children":118},{"className":117},[],[119],{"type":45,"value":120},"grep",{"type":40,"tag":122,"props":123,"children":124},"backend-selection",{},[125],{"type":40,"tag":126,"props":127,"children":128},"table",{},[129,153],{"type":40,"tag":130,"props":131,"children":132},"thead",{},[133],{"type":40,"tag":134,"props":135,"children":136},"tr",{},[137,143,148],{"type":40,"tag":138,"props":139,"children":140},"th",{},[141],{"type":45,"value":142},"Use Case",{"type":40,"tag":138,"props":144,"children":145},{},[146],{"type":45,"value":147},"Backend",{"type":40,"tag":138,"props":149,"children":150},{},[151],{"type":45,"value":152},"Why",{"type":40,"tag":154,"props":155,"children":156},"tbody",{},[157,176,194,212],{"type":40,"tag":134,"props":158,"children":159},{},[160,166,171],{"type":40,"tag":161,"props":162,"children":163},"td",{},[164],{"type":45,"value":165},"Temporary working files",{"type":40,"tag":161,"props":167,"children":168},{},[169],{"type":45,"value":170},"StateBackend",{"type":40,"tag":161,"props":172,"children":173},{},[174],{"type":45,"value":175},"Default, no setup",{"type":40,"tag":134,"props":177,"children":178},{},[179,184,189],{"type":40,"tag":161,"props":180,"children":181},{},[182],{"type":45,"value":183},"Local development CLI",{"type":40,"tag":161,"props":185,"children":186},{},[187],{"type":45,"value":188},"FilesystemBackend",{"type":40,"tag":161,"props":190,"children":191},{},[192],{"type":45,"value":193},"Direct disk access",{"type":40,"tag":134,"props":195,"children":196},{},[197,202,207],{"type":40,"tag":161,"props":198,"children":199},{},[200],{"type":45,"value":201},"Cross-session memory",{"type":40,"tag":161,"props":203,"children":204},{},[205],{"type":45,"value":206},"StoreBackend",{"type":40,"tag":161,"props":208,"children":209},{},[210],{"type":45,"value":211},"Persists across threads",{"type":40,"tag":134,"props":213,"children":214},{},[215,220,225],{"type":40,"tag":161,"props":216,"children":217},{},[218],{"type":45,"value":219},"Hybrid storage",{"type":40,"tag":161,"props":221,"children":222},{},[223],{"type":45,"value":224},"CompositeBackend",{"type":40,"tag":161,"props":226,"children":227},{},[228],{"type":45,"value":229},"Mix ephemeral + persistent",{"type":40,"tag":231,"props":232,"children":233},"ex-default-state-backend",{},[234,316],{"type":40,"tag":235,"props":236,"children":237},"python",{},[238,240],{"type":45,"value":239},"\nDefault StateBackend stores files ephemerally within a thread.\n",{"type":40,"tag":241,"props":242,"children":246},"pre",{"className":243,"code":244,"language":235,"meta":245,"style":245},"language-python shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","from deepagents import create_deep_agent\n\nagent = create_deep_agent()  # Default: StateBackend\nresult = agent.invoke({\n    \"messages\": [{\"role\": \"user\", \"content\": \"Write notes to \u002Fdraft.txt\"}]\n}, config={\"configurable\": {\"thread_id\": \"thread-1\"}})\n# \u002Fdraft.txt is lost when thread ends\n","",[247],{"type":40,"tag":79,"props":248,"children":249},{"__ignoreMap":245},[250,261,271,280,289,298,307],{"type":40,"tag":251,"props":252,"children":255},"span",{"class":253,"line":254},"line",1,[256],{"type":40,"tag":251,"props":257,"children":258},{},[259],{"type":45,"value":260},"from deepagents import create_deep_agent\n",{"type":40,"tag":251,"props":262,"children":264},{"class":253,"line":263},2,[265],{"type":40,"tag":251,"props":266,"children":268},{"emptyLinePlaceholder":267},true,[269],{"type":45,"value":270},"\n",{"type":40,"tag":251,"props":272,"children":274},{"class":253,"line":273},3,[275],{"type":40,"tag":251,"props":276,"children":277},{},[278],{"type":45,"value":279},"agent = create_deep_agent()  # Default: StateBackend\n",{"type":40,"tag":251,"props":281,"children":283},{"class":253,"line":282},4,[284],{"type":40,"tag":251,"props":285,"children":286},{},[287],{"type":45,"value":288},"result = agent.invoke({\n",{"type":40,"tag":251,"props":290,"children":292},{"class":253,"line":291},5,[293],{"type":40,"tag":251,"props":294,"children":295},{},[296],{"type":45,"value":297},"    \"messages\": [{\"role\": \"user\", \"content\": \"Write notes to \u002Fdraft.txt\"}]\n",{"type":40,"tag":251,"props":299,"children":301},{"class":253,"line":300},6,[302],{"type":40,"tag":251,"props":303,"children":304},{},[305],{"type":45,"value":306},"}, config={\"configurable\": {\"thread_id\": \"thread-1\"}})\n",{"type":40,"tag":251,"props":308,"children":310},{"class":253,"line":309},7,[311],{"type":40,"tag":251,"props":312,"children":313},{},[314],{"type":45,"value":315},"# \u002Fdraft.txt is lost when thread ends\n",{"type":40,"tag":317,"props":318,"children":319},"typescript",{},[320,321],{"type":45,"value":239},{"type":40,"tag":241,"props":322,"children":325},{"className":323,"code":324,"language":317,"meta":245,"style":245},"language-typescript shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","import { createDeepAgent } from \"deepagents\";\n\nconst agent = await createDeepAgent();  \u002F\u002F Default: StateBackend\nconst result = await agent.invoke({\n  messages: [{ role: \"user\", content: \"Write notes to \u002Fdraft.txt\" }]\n}, { configurable: { thread_id: \"thread-1\" } });\n\u002F\u002F \u002Fdraft.txt is lost when thread ends\n",[326],{"type":40,"tag":79,"props":327,"children":328},{"__ignoreMap":245},[329,381,388,433,478,560,624],{"type":40,"tag":251,"props":330,"children":331},{"class":253,"line":254},[332,338,344,350,355,360,365,371,376],{"type":40,"tag":251,"props":333,"children":335},{"style":334},"--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic",[336],{"type":45,"value":337},"import",{"type":40,"tag":251,"props":339,"children":341},{"style":340},"--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF",[342],{"type":45,"value":343}," {",{"type":40,"tag":251,"props":345,"children":347},{"style":346},"--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8",[348],{"type":45,"value":349}," createDeepAgent",{"type":40,"tag":251,"props":351,"children":352},{"style":340},[353],{"type":45,"value":354}," }",{"type":40,"tag":251,"props":356,"children":357},{"style":334},[358],{"type":45,"value":359}," from",{"type":40,"tag":251,"props":361,"children":362},{"style":340},[363],{"type":45,"value":364}," \"",{"type":40,"tag":251,"props":366,"children":368},{"style":367},"--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D",[369],{"type":45,"value":370},"deepagents",{"type":40,"tag":251,"props":372,"children":373},{"style":340},[374],{"type":45,"value":375},"\"",{"type":40,"tag":251,"props":377,"children":378},{"style":340},[379],{"type":45,"value":380},";\n",{"type":40,"tag":251,"props":382,"children":383},{"class":253,"line":263},[384],{"type":40,"tag":251,"props":385,"children":386},{"emptyLinePlaceholder":267},[387],{"type":45,"value":270},{"type":40,"tag":251,"props":389,"children":390},{"class":253,"line":273},[391,397,402,407,412,417,422,427],{"type":40,"tag":251,"props":392,"children":394},{"style":393},"--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA",[395],{"type":45,"value":396},"const",{"type":40,"tag":251,"props":398,"children":399},{"style":346},[400],{"type":45,"value":401}," agent ",{"type":40,"tag":251,"props":403,"children":404},{"style":340},[405],{"type":45,"value":406},"=",{"type":40,"tag":251,"props":408,"children":409},{"style":334},[410],{"type":45,"value":411}," await",{"type":40,"tag":251,"props":413,"children":415},{"style":414},"--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF",[416],{"type":45,"value":349},{"type":40,"tag":251,"props":418,"children":419},{"style":346},[420],{"type":45,"value":421},"()",{"type":40,"tag":251,"props":423,"children":424},{"style":340},[425],{"type":45,"value":426},";",{"type":40,"tag":251,"props":428,"children":430},{"style":429},"--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic",[431],{"type":45,"value":432},"  \u002F\u002F Default: StateBackend\n",{"type":40,"tag":251,"props":434,"children":435},{"class":253,"line":282},[436,440,445,449,453,458,463,468,473],{"type":40,"tag":251,"props":437,"children":438},{"style":393},[439],{"type":45,"value":396},{"type":40,"tag":251,"props":441,"children":442},{"style":346},[443],{"type":45,"value":444}," result ",{"type":40,"tag":251,"props":446,"children":447},{"style":340},[448],{"type":45,"value":406},{"type":40,"tag":251,"props":450,"children":451},{"style":334},[452],{"type":45,"value":411},{"type":40,"tag":251,"props":454,"children":455},{"style":346},[456],{"type":45,"value":457}," agent",{"type":40,"tag":251,"props":459,"children":460},{"style":340},[461],{"type":45,"value":462},".",{"type":40,"tag":251,"props":464,"children":465},{"style":414},[466],{"type":45,"value":467},"invoke",{"type":40,"tag":251,"props":469,"children":470},{"style":346},[471],{"type":45,"value":472},"(",{"type":40,"tag":251,"props":474,"children":475},{"style":340},[476],{"type":45,"value":477},"{\n",{"type":40,"tag":251,"props":479,"children":480},{"class":253,"line":291},[481,487,492,497,502,507,511,515,520,524,529,534,538,542,547,551,555],{"type":40,"tag":251,"props":482,"children":484},{"style":483},"--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178",[485],{"type":45,"value":486},"  messages",{"type":40,"tag":251,"props":488,"children":489},{"style":340},[490],{"type":45,"value":491},":",{"type":40,"tag":251,"props":493,"children":494},{"style":346},[495],{"type":45,"value":496}," [",{"type":40,"tag":251,"props":498,"children":499},{"style":340},[500],{"type":45,"value":501},"{",{"type":40,"tag":251,"props":503,"children":504},{"style":483},[505],{"type":45,"value":506}," role",{"type":40,"tag":251,"props":508,"children":509},{"style":340},[510],{"type":45,"value":491},{"type":40,"tag":251,"props":512,"children":513},{"style":340},[514],{"type":45,"value":364},{"type":40,"tag":251,"props":516,"children":517},{"style":367},[518],{"type":45,"value":519},"user",{"type":40,"tag":251,"props":521,"children":522},{"style":340},[523],{"type":45,"value":375},{"type":40,"tag":251,"props":525,"children":526},{"style":340},[527],{"type":45,"value":528},",",{"type":40,"tag":251,"props":530,"children":531},{"style":483},[532],{"type":45,"value":533}," content",{"type":40,"tag":251,"props":535,"children":536},{"style":340},[537],{"type":45,"value":491},{"type":40,"tag":251,"props":539,"children":540},{"style":340},[541],{"type":45,"value":364},{"type":40,"tag":251,"props":543,"children":544},{"style":367},[545],{"type":45,"value":546},"Write notes to \u002Fdraft.txt",{"type":40,"tag":251,"props":548,"children":549},{"style":340},[550],{"type":45,"value":375},{"type":40,"tag":251,"props":552,"children":553},{"style":340},[554],{"type":45,"value":354},{"type":40,"tag":251,"props":556,"children":557},{"style":346},[558],{"type":45,"value":559},"]\n",{"type":40,"tag":251,"props":561,"children":562},{"class":253,"line":300},[563,568,572,577,581,585,590,594,598,603,607,611,615,620],{"type":40,"tag":251,"props":564,"children":565},{"style":340},[566],{"type":45,"value":567},"},",{"type":40,"tag":251,"props":569,"children":570},{"style":340},[571],{"type":45,"value":343},{"type":40,"tag":251,"props":573,"children":574},{"style":483},[575],{"type":45,"value":576}," configurable",{"type":40,"tag":251,"props":578,"children":579},{"style":340},[580],{"type":45,"value":491},{"type":40,"tag":251,"props":582,"children":583},{"style":340},[584],{"type":45,"value":343},{"type":40,"tag":251,"props":586,"children":587},{"style":483},[588],{"type":45,"value":589}," thread_id",{"type":40,"tag":251,"props":591,"children":592},{"style":340},[593],{"type":45,"value":491},{"type":40,"tag":251,"props":595,"children":596},{"style":340},[597],{"type":45,"value":364},{"type":40,"tag":251,"props":599,"children":600},{"style":367},[601],{"type":45,"value":602},"thread-1",{"type":40,"tag":251,"props":604,"children":605},{"style":340},[606],{"type":45,"value":375},{"type":40,"tag":251,"props":608,"children":609},{"style":340},[610],{"type":45,"value":354},{"type":40,"tag":251,"props":612,"children":613},{"style":340},[614],{"type":45,"value":354},{"type":40,"tag":251,"props":616,"children":617},{"style":346},[618],{"type":45,"value":619},")",{"type":40,"tag":251,"props":621,"children":622},{"style":340},[623],{"type":45,"value":380},{"type":40,"tag":251,"props":625,"children":626},{"class":253,"line":309},[627],{"type":40,"tag":251,"props":628,"children":629},{"style":429},[630],{"type":45,"value":631},"\u002F\u002F \u002Fdraft.txt is lost when thread ends\n",{"type":40,"tag":633,"props":634,"children":635},"ex-composite-backend-for-hybrid",{},[636,771],{"type":40,"tag":235,"props":637,"children":638},{},[639,641],{"type":45,"value":640},"\nConfigure CompositeBackend to route paths to different storage backends.\n",{"type":40,"tag":241,"props":642,"children":644},{"className":243,"code":643,"language":235,"meta":245,"style":245},"from deepagents import create_deep_agent\nfrom deepagents.backends import CompositeBackend, StateBackend, StoreBackend\nfrom langgraph.store.memory import InMemoryStore\n\nstore = InMemoryStore()\n\ncomposite_backend = lambda rt: CompositeBackend(\n    default=StateBackend(rt),\n    routes={\"\u002Fmemories\u002F\": StoreBackend(rt)}\n)\n\nagent = create_deep_agent(backend=composite_backend, store=store)\n\n# \u002Fdraft.txt -> ephemeral (StateBackend)\n# \u002Fmemories\u002Fuser-prefs.txt -> persistent (StoreBackend)\n",[645],{"type":40,"tag":79,"props":646,"children":647},{"__ignoreMap":245},[648,655,663,671,678,686,693,701,710,719,728,736,745,753,762],{"type":40,"tag":251,"props":649,"children":650},{"class":253,"line":254},[651],{"type":40,"tag":251,"props":652,"children":653},{},[654],{"type":45,"value":260},{"type":40,"tag":251,"props":656,"children":657},{"class":253,"line":263},[658],{"type":40,"tag":251,"props":659,"children":660},{},[661],{"type":45,"value":662},"from deepagents.backends import CompositeBackend, StateBackend, StoreBackend\n",{"type":40,"tag":251,"props":664,"children":665},{"class":253,"line":273},[666],{"type":40,"tag":251,"props":667,"children":668},{},[669],{"type":45,"value":670},"from langgraph.store.memory import InMemoryStore\n",{"type":40,"tag":251,"props":672,"children":673},{"class":253,"line":282},[674],{"type":40,"tag":251,"props":675,"children":676},{"emptyLinePlaceholder":267},[677],{"type":45,"value":270},{"type":40,"tag":251,"props":679,"children":680},{"class":253,"line":291},[681],{"type":40,"tag":251,"props":682,"children":683},{},[684],{"type":45,"value":685},"store = InMemoryStore()\n",{"type":40,"tag":251,"props":687,"children":688},{"class":253,"line":300},[689],{"type":40,"tag":251,"props":690,"children":691},{"emptyLinePlaceholder":267},[692],{"type":45,"value":270},{"type":40,"tag":251,"props":694,"children":695},{"class":253,"line":309},[696],{"type":40,"tag":251,"props":697,"children":698},{},[699],{"type":45,"value":700},"composite_backend = lambda rt: CompositeBackend(\n",{"type":40,"tag":251,"props":702,"children":704},{"class":253,"line":703},8,[705],{"type":40,"tag":251,"props":706,"children":707},{},[708],{"type":45,"value":709},"    default=StateBackend(rt),\n",{"type":40,"tag":251,"props":711,"children":713},{"class":253,"line":712},9,[714],{"type":40,"tag":251,"props":715,"children":716},{},[717],{"type":45,"value":718},"    routes={\"\u002Fmemories\u002F\": StoreBackend(rt)}\n",{"type":40,"tag":251,"props":720,"children":722},{"class":253,"line":721},10,[723],{"type":40,"tag":251,"props":724,"children":725},{},[726],{"type":45,"value":727},")\n",{"type":40,"tag":251,"props":729,"children":731},{"class":253,"line":730},11,[732],{"type":40,"tag":251,"props":733,"children":734},{"emptyLinePlaceholder":267},[735],{"type":45,"value":270},{"type":40,"tag":251,"props":737,"children":739},{"class":253,"line":738},12,[740],{"type":40,"tag":251,"props":741,"children":742},{},[743],{"type":45,"value":744},"agent = create_deep_agent(backend=composite_backend, store=store)\n",{"type":40,"tag":251,"props":746,"children":748},{"class":253,"line":747},13,[749],{"type":40,"tag":251,"props":750,"children":751},{"emptyLinePlaceholder":267},[752],{"type":45,"value":270},{"type":40,"tag":251,"props":754,"children":756},{"class":253,"line":755},14,[757],{"type":40,"tag":251,"props":758,"children":759},{},[760],{"type":45,"value":761},"# \u002Fdraft.txt -> ephemeral (StateBackend)\n",{"type":40,"tag":251,"props":763,"children":765},{"class":253,"line":764},15,[766],{"type":40,"tag":251,"props":767,"children":768},{},[769],{"type":45,"value":770},"# \u002Fmemories\u002Fuser-prefs.txt -> persistent (StoreBackend)\n",{"type":40,"tag":317,"props":772,"children":773},{},[774,775],{"type":45,"value":640},{"type":40,"tag":241,"props":776,"children":778},{"className":323,"code":777,"language":317,"meta":245,"style":245},"import { createDeepAgent, CompositeBackend, StateBackend, StoreBackend } from \"deepagents\";\nimport { InMemoryStore } from \"@langchain\u002Flanggraph\";\n\nconst store = new InMemoryStore();\n\nconst agent = await createDeepAgent({\n  backend: (config) => new CompositeBackend(\n    new StateBackend(config),\n    { \"\u002Fmemories\u002F\": new StoreBackend(config) }\n  ),\n  store\n});\n\n\u002F\u002F \u002Fdraft.txt -> ephemeral (StateBackend)\n\u002F\u002F \u002Fmemories\u002Fuser-prefs.txt -> persistent (StoreBackend)\n",[779],{"type":40,"tag":79,"props":780,"children":781},{"__ignoreMap":245},[782,848,889,896,929,936,967,1012,1034,1077,1089,1097,1113,1120,1128],{"type":40,"tag":251,"props":783,"children":784},{"class":253,"line":254},[785,789,793,797,801,806,810,815,819,824,828,832,836,840,844],{"type":40,"tag":251,"props":786,"children":787},{"style":334},[788],{"type":45,"value":337},{"type":40,"tag":251,"props":790,"children":791},{"style":340},[792],{"type":45,"value":343},{"type":40,"tag":251,"props":794,"children":795},{"style":346},[796],{"type":45,"value":349},{"type":40,"tag":251,"props":798,"children":799},{"style":340},[800],{"type":45,"value":528},{"type":40,"tag":251,"props":802,"children":803},{"style":346},[804],{"type":45,"value":805}," CompositeBackend",{"type":40,"tag":251,"props":807,"children":808},{"style":340},[809],{"type":45,"value":528},{"type":40,"tag":251,"props":811,"children":812},{"style":346},[813],{"type":45,"value":814}," StateBackend",{"type":40,"tag":251,"props":816,"children":817},{"style":340},[818],{"type":45,"value":528},{"type":40,"tag":251,"props":820,"children":821},{"style":346},[822],{"type":45,"value":823}," StoreBackend",{"type":40,"tag":251,"props":825,"children":826},{"style":340},[827],{"type":45,"value":354},{"type":40,"tag":251,"props":829,"children":830},{"style":334},[831],{"type":45,"value":359},{"type":40,"tag":251,"props":833,"children":834},{"style":340},[835],{"type":45,"value":364},{"type":40,"tag":251,"props":837,"children":838},{"style":367},[839],{"type":45,"value":370},{"type":40,"tag":251,"props":841,"children":842},{"style":340},[843],{"type":45,"value":375},{"type":40,"tag":251,"props":845,"children":846},{"style":340},[847],{"type":45,"value":380},{"type":40,"tag":251,"props":849,"children":850},{"class":253,"line":263},[851,855,859,864,868,872,876,881,885],{"type":40,"tag":251,"props":852,"children":853},{"style":334},[854],{"type":45,"value":337},{"type":40,"tag":251,"props":856,"children":857},{"style":340},[858],{"type":45,"value":343},{"type":40,"tag":251,"props":860,"children":861},{"style":346},[862],{"type":45,"value":863}," InMemoryStore",{"type":40,"tag":251,"props":865,"children":866},{"style":340},[867],{"type":45,"value":354},{"type":40,"tag":251,"props":869,"children":870},{"style":334},[871],{"type":45,"value":359},{"type":40,"tag":251,"props":873,"children":874},{"style":340},[875],{"type":45,"value":364},{"type":40,"tag":251,"props":877,"children":878},{"style":367},[879],{"type":45,"value":880},"@langchain\u002Flanggraph",{"type":40,"tag":251,"props":882,"children":883},{"style":340},[884],{"type":45,"value":375},{"type":40,"tag":251,"props":886,"children":887},{"style":340},[888],{"type":45,"value":380},{"type":40,"tag":251,"props":890,"children":891},{"class":253,"line":273},[892],{"type":40,"tag":251,"props":893,"children":894},{"emptyLinePlaceholder":267},[895],{"type":45,"value":270},{"type":40,"tag":251,"props":897,"children":898},{"class":253,"line":282},[899,903,908,912,917,921,925],{"type":40,"tag":251,"props":900,"children":901},{"style":393},[902],{"type":45,"value":396},{"type":40,"tag":251,"props":904,"children":905},{"style":346},[906],{"type":45,"value":907}," store ",{"type":40,"tag":251,"props":909,"children":910},{"style":340},[911],{"type":45,"value":406},{"type":40,"tag":251,"props":913,"children":914},{"style":340},[915],{"type":45,"value":916}," new",{"type":40,"tag":251,"props":918,"children":919},{"style":414},[920],{"type":45,"value":863},{"type":40,"tag":251,"props":922,"children":923},{"style":346},[924],{"type":45,"value":421},{"type":40,"tag":251,"props":926,"children":927},{"style":340},[928],{"type":45,"value":380},{"type":40,"tag":251,"props":930,"children":931},{"class":253,"line":291},[932],{"type":40,"tag":251,"props":933,"children":934},{"emptyLinePlaceholder":267},[935],{"type":45,"value":270},{"type":40,"tag":251,"props":937,"children":938},{"class":253,"line":300},[939,943,947,951,955,959,963],{"type":40,"tag":251,"props":940,"children":941},{"style":393},[942],{"type":45,"value":396},{"type":40,"tag":251,"props":944,"children":945},{"style":346},[946],{"type":45,"value":401},{"type":40,"tag":251,"props":948,"children":949},{"style":340},[950],{"type":45,"value":406},{"type":40,"tag":251,"props":952,"children":953},{"style":334},[954],{"type":45,"value":411},{"type":40,"tag":251,"props":956,"children":957},{"style":414},[958],{"type":45,"value":349},{"type":40,"tag":251,"props":960,"children":961},{"style":346},[962],{"type":45,"value":472},{"type":40,"tag":251,"props":964,"children":965},{"style":340},[966],{"type":45,"value":477},{"type":40,"tag":251,"props":968,"children":969},{"class":253,"line":309},[970,975,979,984,990,994,999,1003,1007],{"type":40,"tag":251,"props":971,"children":972},{"style":414},[973],{"type":45,"value":974},"  backend",{"type":40,"tag":251,"props":976,"children":977},{"style":340},[978],{"type":45,"value":491},{"type":40,"tag":251,"props":980,"children":981},{"style":340},[982],{"type":45,"value":983}," (",{"type":40,"tag":251,"props":985,"children":987},{"style":986},"--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#EEFFFF;--shiki-default-font-style:italic;--shiki-dark:#BABED8;--shiki-dark-font-style:italic",[988],{"type":45,"value":989},"config",{"type":40,"tag":251,"props":991,"children":992},{"style":340},[993],{"type":45,"value":619},{"type":40,"tag":251,"props":995,"children":996},{"style":393},[997],{"type":45,"value":998}," =>",{"type":40,"tag":251,"props":1000,"children":1001},{"style":340},[1002],{"type":45,"value":916},{"type":40,"tag":251,"props":1004,"children":1005},{"style":414},[1006],{"type":45,"value":805},{"type":40,"tag":251,"props":1008,"children":1009},{"style":346},[1010],{"type":45,"value":1011},"(\n",{"type":40,"tag":251,"props":1013,"children":1014},{"class":253,"line":703},[1015,1020,1024,1029],{"type":40,"tag":251,"props":1016,"children":1017},{"style":340},[1018],{"type":45,"value":1019},"    new",{"type":40,"tag":251,"props":1021,"children":1022},{"style":414},[1023],{"type":45,"value":814},{"type":40,"tag":251,"props":1025,"children":1026},{"style":346},[1027],{"type":45,"value":1028},"(config)",{"type":40,"tag":251,"props":1030,"children":1031},{"style":340},[1032],{"type":45,"value":1033},",\n",{"type":40,"tag":251,"props":1035,"children":1036},{"class":253,"line":712},[1037,1042,1046,1051,1055,1059,1063,1067,1072],{"type":40,"tag":251,"props":1038,"children":1039},{"style":340},[1040],{"type":45,"value":1041},"    {",{"type":40,"tag":251,"props":1043,"children":1044},{"style":340},[1045],{"type":45,"value":364},{"type":40,"tag":251,"props":1047,"children":1048},{"style":483},[1049],{"type":45,"value":1050},"\u002Fmemories\u002F",{"type":40,"tag":251,"props":1052,"children":1053},{"style":340},[1054],{"type":45,"value":375},{"type":40,"tag":251,"props":1056,"children":1057},{"style":340},[1058],{"type":45,"value":491},{"type":40,"tag":251,"props":1060,"children":1061},{"style":340},[1062],{"type":45,"value":916},{"type":40,"tag":251,"props":1064,"children":1065},{"style":414},[1066],{"type":45,"value":823},{"type":40,"tag":251,"props":1068,"children":1069},{"style":346},[1070],{"type":45,"value":1071},"(config) ",{"type":40,"tag":251,"props":1073,"children":1074},{"style":340},[1075],{"type":45,"value":1076},"}\n",{"type":40,"tag":251,"props":1078,"children":1079},{"class":253,"line":721},[1080,1085],{"type":40,"tag":251,"props":1081,"children":1082},{"style":346},[1083],{"type":45,"value":1084},"  )",{"type":40,"tag":251,"props":1086,"children":1087},{"style":340},[1088],{"type":45,"value":1033},{"type":40,"tag":251,"props":1090,"children":1091},{"class":253,"line":730},[1092],{"type":40,"tag":251,"props":1093,"children":1094},{"style":346},[1095],{"type":45,"value":1096},"  store\n",{"type":40,"tag":251,"props":1098,"children":1099},{"class":253,"line":738},[1100,1105,1109],{"type":40,"tag":251,"props":1101,"children":1102},{"style":340},[1103],{"type":45,"value":1104},"}",{"type":40,"tag":251,"props":1106,"children":1107},{"style":346},[1108],{"type":45,"value":619},{"type":40,"tag":251,"props":1110,"children":1111},{"style":340},[1112],{"type":45,"value":380},{"type":40,"tag":251,"props":1114,"children":1115},{"class":253,"line":747},[1116],{"type":40,"tag":251,"props":1117,"children":1118},{"emptyLinePlaceholder":267},[1119],{"type":45,"value":270},{"type":40,"tag":251,"props":1121,"children":1122},{"class":253,"line":755},[1123],{"type":40,"tag":251,"props":1124,"children":1125},{"style":429},[1126],{"type":45,"value":1127},"\u002F\u002F \u002Fdraft.txt -> ephemeral (StateBackend)\n",{"type":40,"tag":251,"props":1129,"children":1130},{"class":253,"line":764},[1131],{"type":40,"tag":251,"props":1132,"children":1133},{"style":429},[1134],{"type":45,"value":1135},"\u002F\u002F \u002Fmemories\u002Fuser-prefs.txt -> persistent (StoreBackend)\n",{"type":40,"tag":1137,"props":1138,"children":1139},"ex-cross-session-memory",{},[1140,1207],{"type":40,"tag":235,"props":1141,"children":1142},{},[1143,1145],{"type":45,"value":1144},"\nFiles in \u002Fmemories\u002F persist across threads via StoreBackend routing.\n",{"type":40,"tag":241,"props":1146,"children":1148},{"className":243,"code":1147,"language":235,"meta":245,"style":245},"# Using CompositeBackend from previous example\nconfig1 = {\"configurable\": {\"thread_id\": \"thread-1\"}}\nagent.invoke({\"messages\": [{\"role\": \"user\", \"content\": \"Save to \u002Fmemories\u002Fstyle.txt\"}]}, config=config1)\n\nconfig2 = {\"configurable\": {\"thread_id\": \"thread-2\"}}\nagent.invoke({\"messages\": [{\"role\": \"user\", \"content\": \"Read \u002Fmemories\u002Fstyle.txt\"}]}, config=config2)\n# Thread 2 can read file saved by Thread 1\n",[1149],{"type":40,"tag":79,"props":1150,"children":1151},{"__ignoreMap":245},[1152,1160,1168,1176,1183,1191,1199],{"type":40,"tag":251,"props":1153,"children":1154},{"class":253,"line":254},[1155],{"type":40,"tag":251,"props":1156,"children":1157},{},[1158],{"type":45,"value":1159},"# Using CompositeBackend from previous example\n",{"type":40,"tag":251,"props":1161,"children":1162},{"class":253,"line":263},[1163],{"type":40,"tag":251,"props":1164,"children":1165},{},[1166],{"type":45,"value":1167},"config1 = {\"configurable\": {\"thread_id\": \"thread-1\"}}\n",{"type":40,"tag":251,"props":1169,"children":1170},{"class":253,"line":273},[1171],{"type":40,"tag":251,"props":1172,"children":1173},{},[1174],{"type":45,"value":1175},"agent.invoke({\"messages\": [{\"role\": \"user\", \"content\": \"Save to \u002Fmemories\u002Fstyle.txt\"}]}, config=config1)\n",{"type":40,"tag":251,"props":1177,"children":1178},{"class":253,"line":282},[1179],{"type":40,"tag":251,"props":1180,"children":1181},{"emptyLinePlaceholder":267},[1182],{"type":45,"value":270},{"type":40,"tag":251,"props":1184,"children":1185},{"class":253,"line":291},[1186],{"type":40,"tag":251,"props":1187,"children":1188},{},[1189],{"type":45,"value":1190},"config2 = {\"configurable\": {\"thread_id\": \"thread-2\"}}\n",{"type":40,"tag":251,"props":1192,"children":1193},{"class":253,"line":300},[1194],{"type":40,"tag":251,"props":1195,"children":1196},{},[1197],{"type":45,"value":1198},"agent.invoke({\"messages\": [{\"role\": \"user\", \"content\": \"Read \u002Fmemories\u002Fstyle.txt\"}]}, config=config2)\n",{"type":40,"tag":251,"props":1200,"children":1201},{"class":253,"line":309},[1202],{"type":40,"tag":251,"props":1203,"children":1204},{},[1205],{"type":45,"value":1206},"# Thread 2 can read file saved by Thread 1\n",{"type":40,"tag":317,"props":1208,"children":1209},{},[1210,1211],{"type":45,"value":1144},{"type":40,"tag":241,"props":1212,"children":1214},{"className":323,"code":1213,"language":317,"meta":245,"style":245},"\u002F\u002F Using CompositeBackend from previous example\nconst config1 = { configurable: { thread_id: \"thread-1\" } };\nawait agent.invoke({ messages: [{ role: \"user\", content: \"Save to \u002Fmemories\u002Fstyle.txt\" }] }, config1);\n\nconst config2 = { configurable: { thread_id: \"thread-2\" } };\nawait agent.invoke({ messages: [{ role: \"user\", content: \"Read \u002Fmemories\u002Fstyle.txt\" }] }, config2);\n\u002F\u002F Thread 2 can read file saved by Thread 1\n",[1215],{"type":40,"tag":79,"props":1216,"children":1217},{"__ignoreMap":245},[1218,1226,1287,1399,1406,1467,1576],{"type":40,"tag":251,"props":1219,"children":1220},{"class":253,"line":254},[1221],{"type":40,"tag":251,"props":1222,"children":1223},{"style":429},[1224],{"type":45,"value":1225},"\u002F\u002F Using CompositeBackend from previous example\n",{"type":40,"tag":251,"props":1227,"children":1228},{"class":253,"line":263},[1229,1233,1238,1242,1246,1250,1254,1258,1262,1266,1270,1274,1278,1282],{"type":40,"tag":251,"props":1230,"children":1231},{"style":393},[1232],{"type":45,"value":396},{"type":40,"tag":251,"props":1234,"children":1235},{"style":346},[1236],{"type":45,"value":1237}," config1 ",{"type":40,"tag":251,"props":1239,"children":1240},{"style":340},[1241],{"type":45,"value":406},{"type":40,"tag":251,"props":1243,"children":1244},{"style":340},[1245],{"type":45,"value":343},{"type":40,"tag":251,"props":1247,"children":1248},{"style":483},[1249],{"type":45,"value":576},{"type":40,"tag":251,"props":1251,"children":1252},{"style":340},[1253],{"type":45,"value":491},{"type":40,"tag":251,"props":1255,"children":1256},{"style":340},[1257],{"type":45,"value":343},{"type":40,"tag":251,"props":1259,"children":1260},{"style":483},[1261],{"type":45,"value":589},{"type":40,"tag":251,"props":1263,"children":1264},{"style":340},[1265],{"type":45,"value":491},{"type":40,"tag":251,"props":1267,"children":1268},{"style":340},[1269],{"type":45,"value":364},{"type":40,"tag":251,"props":1271,"children":1272},{"style":367},[1273],{"type":45,"value":602},{"type":40,"tag":251,"props":1275,"children":1276},{"style":340},[1277],{"type":45,"value":375},{"type":40,"tag":251,"props":1279,"children":1280},{"style":340},[1281],{"type":45,"value":354},{"type":40,"tag":251,"props":1283,"children":1284},{"style":340},[1285],{"type":45,"value":1286}," };\n",{"type":40,"tag":251,"props":1288,"children":1289},{"class":253,"line":273},[1290,1295,1299,1303,1307,1311,1315,1320,1324,1328,1332,1336,1340,1344,1348,1352,1356,1360,1364,1368,1373,1377,1381,1386,1390,1395],{"type":40,"tag":251,"props":1291,"children":1292},{"style":334},[1293],{"type":45,"value":1294},"await",{"type":40,"tag":251,"props":1296,"children":1297},{"style":346},[1298],{"type":45,"value":457},{"type":40,"tag":251,"props":1300,"children":1301},{"style":340},[1302],{"type":45,"value":462},{"type":40,"tag":251,"props":1304,"children":1305},{"style":414},[1306],{"type":45,"value":467},{"type":40,"tag":251,"props":1308,"children":1309},{"style":346},[1310],{"type":45,"value":472},{"type":40,"tag":251,"props":1312,"children":1313},{"style":340},[1314],{"type":45,"value":501},{"type":40,"tag":251,"props":1316,"children":1317},{"style":483},[1318],{"type":45,"value":1319}," messages",{"type":40,"tag":251,"props":1321,"children":1322},{"style":340},[1323],{"type":45,"value":491},{"type":40,"tag":251,"props":1325,"children":1326},{"style":346},[1327],{"type":45,"value":496},{"type":40,"tag":251,"props":1329,"children":1330},{"style":340},[1331],{"type":45,"value":501},{"type":40,"tag":251,"props":1333,"children":1334},{"style":483},[1335],{"type":45,"value":506},{"type":40,"tag":251,"props":1337,"children":1338},{"style":340},[1339],{"type":45,"value":491},{"type":40,"tag":251,"props":1341,"children":1342},{"style":340},[1343],{"type":45,"value":364},{"type":40,"tag":251,"props":1345,"children":1346},{"style":367},[1347],{"type":45,"value":519},{"type":40,"tag":251,"props":1349,"children":1350},{"style":340},[1351],{"type":45,"value":375},{"type":40,"tag":251,"props":1353,"children":1354},{"style":340},[1355],{"type":45,"value":528},{"type":40,"tag":251,"props":1357,"children":1358},{"style":483},[1359],{"type":45,"value":533},{"type":40,"tag":251,"props":1361,"children":1362},{"style":340},[1363],{"type":45,"value":491},{"type":40,"tag":251,"props":1365,"children":1366},{"style":340},[1367],{"type":45,"value":364},{"type":40,"tag":251,"props":1369,"children":1370},{"style":367},[1371],{"type":45,"value":1372},"Save to \u002Fmemories\u002Fstyle.txt",{"type":40,"tag":251,"props":1374,"children":1375},{"style":340},[1376],{"type":45,"value":375},{"type":40,"tag":251,"props":1378,"children":1379},{"style":340},[1380],{"type":45,"value":354},{"type":40,"tag":251,"props":1382,"children":1383},{"style":346},[1384],{"type":45,"value":1385},"] ",{"type":40,"tag":251,"props":1387,"children":1388},{"style":340},[1389],{"type":45,"value":567},{"type":40,"tag":251,"props":1391,"children":1392},{"style":346},[1393],{"type":45,"value":1394}," config1)",{"type":40,"tag":251,"props":1396,"children":1397},{"style":340},[1398],{"type":45,"value":380},{"type":40,"tag":251,"props":1400,"children":1401},{"class":253,"line":282},[1402],{"type":40,"tag":251,"props":1403,"children":1404},{"emptyLinePlaceholder":267},[1405],{"type":45,"value":270},{"type":40,"tag":251,"props":1407,"children":1408},{"class":253,"line":291},[1409,1413,1418,1422,1426,1430,1434,1438,1442,1446,1450,1455,1459,1463],{"type":40,"tag":251,"props":1410,"children":1411},{"style":393},[1412],{"type":45,"value":396},{"type":40,"tag":251,"props":1414,"children":1415},{"style":346},[1416],{"type":45,"value":1417}," config2 ",{"type":40,"tag":251,"props":1419,"children":1420},{"style":340},[1421],{"type":45,"value":406},{"type":40,"tag":251,"props":1423,"children":1424},{"style":340},[1425],{"type":45,"value":343},{"type":40,"tag":251,"props":1427,"children":1428},{"style":483},[1429],{"type":45,"value":576},{"type":40,"tag":251,"props":1431,"children":1432},{"style":340},[1433],{"type":45,"value":491},{"type":40,"tag":251,"props":1435,"children":1436},{"style":340},[1437],{"type":45,"value":343},{"type":40,"tag":251,"props":1439,"children":1440},{"style":483},[1441],{"type":45,"value":589},{"type":40,"tag":251,"props":1443,"children":1444},{"style":340},[1445],{"type":45,"value":491},{"type":40,"tag":251,"props":1447,"children":1448},{"style":340},[1449],{"type":45,"value":364},{"type":40,"tag":251,"props":1451,"children":1452},{"style":367},[1453],{"type":45,"value":1454},"thread-2",{"type":40,"tag":251,"props":1456,"children":1457},{"style":340},[1458],{"type":45,"value":375},{"type":40,"tag":251,"props":1460,"children":1461},{"style":340},[1462],{"type":45,"value":354},{"type":40,"tag":251,"props":1464,"children":1465},{"style":340},[1466],{"type":45,"value":1286},{"type":40,"tag":251,"props":1468,"children":1469},{"class":253,"line":300},[1470,1474,1478,1482,1486,1490,1494,1498,1502,1506,1510,1514,1518,1522,1526,1530,1534,1538,1542,1546,1551,1555,1559,1563,1567,1572],{"type":40,"tag":251,"props":1471,"children":1472},{"style":334},[1473],{"type":45,"value":1294},{"type":40,"tag":251,"props":1475,"children":1476},{"style":346},[1477],{"type":45,"value":457},{"type":40,"tag":251,"props":1479,"children":1480},{"style":340},[1481],{"type":45,"value":462},{"type":40,"tag":251,"props":1483,"children":1484},{"style":414},[1485],{"type":45,"value":467},{"type":40,"tag":251,"props":1487,"children":1488},{"style":346},[1489],{"type":45,"value":472},{"type":40,"tag":251,"props":1491,"children":1492},{"style":340},[1493],{"type":45,"value":501},{"type":40,"tag":251,"props":1495,"children":1496},{"style":483},[1497],{"type":45,"value":1319},{"type":40,"tag":251,"props":1499,"children":1500},{"style":340},[1501],{"type":45,"value":491},{"type":40,"tag":251,"props":1503,"children":1504},{"style":346},[1505],{"type":45,"value":496},{"type":40,"tag":251,"props":1507,"children":1508},{"style":340},[1509],{"type":45,"value":501},{"type":40,"tag":251,"props":1511,"children":1512},{"style":483},[1513],{"type":45,"value":506},{"type":40,"tag":251,"props":1515,"children":1516},{"style":340},[1517],{"type":45,"value":491},{"type":40,"tag":251,"props":1519,"children":1520},{"style":340},[1521],{"type":45,"value":364},{"type":40,"tag":251,"props":1523,"children":1524},{"style":367},[1525],{"type":45,"value":519},{"type":40,"tag":251,"props":1527,"children":1528},{"style":340},[1529],{"type":45,"value":375},{"type":40,"tag":251,"props":1531,"children":1532},{"style":340},[1533],{"type":45,"value":528},{"type":40,"tag":251,"props":1535,"children":1536},{"style":483},[1537],{"type":45,"value":533},{"type":40,"tag":251,"props":1539,"children":1540},{"style":340},[1541],{"type":45,"value":491},{"type":40,"tag":251,"props":1543,"children":1544},{"style":340},[1545],{"type":45,"value":364},{"type":40,"tag":251,"props":1547,"children":1548},{"style":367},[1549],{"type":45,"value":1550},"Read \u002Fmemories\u002Fstyle.txt",{"type":40,"tag":251,"props":1552,"children":1553},{"style":340},[1554],{"type":45,"value":375},{"type":40,"tag":251,"props":1556,"children":1557},{"style":340},[1558],{"type":45,"value":354},{"type":40,"tag":251,"props":1560,"children":1561},{"style":346},[1562],{"type":45,"value":1385},{"type":40,"tag":251,"props":1564,"children":1565},{"style":340},[1566],{"type":45,"value":567},{"type":40,"tag":251,"props":1568,"children":1569},{"style":346},[1570],{"type":45,"value":1571}," config2)",{"type":40,"tag":251,"props":1573,"children":1574},{"style":340},[1575],{"type":45,"value":380},{"type":40,"tag":251,"props":1577,"children":1578},{"class":253,"line":309},[1579],{"type":40,"tag":251,"props":1580,"children":1581},{"style":429},[1582],{"type":45,"value":1583},"\u002F\u002F Thread 2 can read file saved by Thread 1\n",{"type":40,"tag":1585,"props":1586,"children":1587},"ex-filesystem-backend-local-dev",{},[1588,1684,1991,1999,2216],{"type":40,"tag":235,"props":1589,"children":1590},{},[1591,1593],{"type":45,"value":1592},"\nUse FilesystemBackend for local development with real disk access and human-in-the-loop.\n",{"type":40,"tag":241,"props":1594,"children":1596},{"className":243,"code":1595,"language":235,"meta":245,"style":245},"from deepagents import create_deep_agent\nfrom deepagents.backends import FilesystemBackend\nfrom langgraph.checkpoint.memory import MemorySaver\n\nagent = create_deep_agent(\n    backend=FilesystemBackend(root_dir=\".\", virtual_mode=True),  # Restrict access\n    interrupt_on={\"write_file\": True, \"edit_file\": True},\n    checkpointer=MemorySaver()\n)\n\n# Agent can read\u002Fwrite actual files on disk\n",[1597],{"type":40,"tag":79,"props":1598,"children":1599},{"__ignoreMap":245},[1600,1607,1615,1623,1630,1638,1646,1654,1662,1669,1676],{"type":40,"tag":251,"props":1601,"children":1602},{"class":253,"line":254},[1603],{"type":40,"tag":251,"props":1604,"children":1605},{},[1606],{"type":45,"value":260},{"type":40,"tag":251,"props":1608,"children":1609},{"class":253,"line":263},[1610],{"type":40,"tag":251,"props":1611,"children":1612},{},[1613],{"type":45,"value":1614},"from deepagents.backends import FilesystemBackend\n",{"type":40,"tag":251,"props":1616,"children":1617},{"class":253,"line":273},[1618],{"type":40,"tag":251,"props":1619,"children":1620},{},[1621],{"type":45,"value":1622},"from langgraph.checkpoint.memory import MemorySaver\n",{"type":40,"tag":251,"props":1624,"children":1625},{"class":253,"line":282},[1626],{"type":40,"tag":251,"props":1627,"children":1628},{"emptyLinePlaceholder":267},[1629],{"type":45,"value":270},{"type":40,"tag":251,"props":1631,"children":1632},{"class":253,"line":291},[1633],{"type":40,"tag":251,"props":1634,"children":1635},{},[1636],{"type":45,"value":1637},"agent = create_deep_agent(\n",{"type":40,"tag":251,"props":1639,"children":1640},{"class":253,"line":300},[1641],{"type":40,"tag":251,"props":1642,"children":1643},{},[1644],{"type":45,"value":1645},"    backend=FilesystemBackend(root_dir=\".\", virtual_mode=True),  # Restrict access\n",{"type":40,"tag":251,"props":1647,"children":1648},{"class":253,"line":309},[1649],{"type":40,"tag":251,"props":1650,"children":1651},{},[1652],{"type":45,"value":1653},"    interrupt_on={\"write_file\": True, \"edit_file\": True},\n",{"type":40,"tag":251,"props":1655,"children":1656},{"class":253,"line":703},[1657],{"type":40,"tag":251,"props":1658,"children":1659},{},[1660],{"type":45,"value":1661},"    checkpointer=MemorySaver()\n",{"type":40,"tag":251,"props":1663,"children":1664},{"class":253,"line":712},[1665],{"type":40,"tag":251,"props":1666,"children":1667},{},[1668],{"type":45,"value":727},{"type":40,"tag":251,"props":1670,"children":1671},{"class":253,"line":721},[1672],{"type":40,"tag":251,"props":1673,"children":1674},{"emptyLinePlaceholder":267},[1675],{"type":45,"value":270},{"type":40,"tag":251,"props":1677,"children":1678},{"class":253,"line":730},[1679],{"type":40,"tag":251,"props":1680,"children":1681},{},[1682],{"type":45,"value":1683},"# Agent can read\u002Fwrite actual files on disk\n",{"type":40,"tag":317,"props":1685,"children":1686},{},[1687,1688],{"type":45,"value":1592},{"type":40,"tag":241,"props":1689,"children":1691},{"className":323,"code":1690,"language":317,"meta":245,"style":245},"import { createDeepAgent, FilesystemBackend } from \"deepagents\";\nimport { MemorySaver } from \"@langchain\u002Flanggraph\";\n\nconst agent = await createDeepAgent({\n  backend: new FilesystemBackend({ rootDir: \".\", virtualMode: true }),\n  interruptOn: { write_file: true, edit_file: true },\n  checkpointer: new MemorySaver()\n});\n",[1692],{"type":40,"tag":79,"props":1693,"children":1694},{"__ignoreMap":245},[1695,1743,1783,1790,1821,1900,1951,1976],{"type":40,"tag":251,"props":1696,"children":1697},{"class":253,"line":254},[1698,1702,1706,1710,1714,1719,1723,1727,1731,1735,1739],{"type":40,"tag":251,"props":1699,"children":1700},{"style":334},[1701],{"type":45,"value":337},{"type":40,"tag":251,"props":1703,"children":1704},{"style":340},[1705],{"type":45,"value":343},{"type":40,"tag":251,"props":1707,"children":1708},{"style":346},[1709],{"type":45,"value":349},{"type":40,"tag":251,"props":1711,"children":1712},{"style":340},[1713],{"type":45,"value":528},{"type":40,"tag":251,"props":1715,"children":1716},{"style":346},[1717],{"type":45,"value":1718}," FilesystemBackend",{"type":40,"tag":251,"props":1720,"children":1721},{"style":340},[1722],{"type":45,"value":354},{"type":40,"tag":251,"props":1724,"children":1725},{"style":334},[1726],{"type":45,"value":359},{"type":40,"tag":251,"props":1728,"children":1729},{"style":340},[1730],{"type":45,"value":364},{"type":40,"tag":251,"props":1732,"children":1733},{"style":367},[1734],{"type":45,"value":370},{"type":40,"tag":251,"props":1736,"children":1737},{"style":340},[1738],{"type":45,"value":375},{"type":40,"tag":251,"props":1740,"children":1741},{"style":340},[1742],{"type":45,"value":380},{"type":40,"tag":251,"props":1744,"children":1745},{"class":253,"line":263},[1746,1750,1754,1759,1763,1767,1771,1775,1779],{"type":40,"tag":251,"props":1747,"children":1748},{"style":334},[1749],{"type":45,"value":337},{"type":40,"tag":251,"props":1751,"children":1752},{"style":340},[1753],{"type":45,"value":343},{"type":40,"tag":251,"props":1755,"children":1756},{"style":346},[1757],{"type":45,"value":1758}," MemorySaver",{"type":40,"tag":251,"props":1760,"children":1761},{"style":340},[1762],{"type":45,"value":354},{"type":40,"tag":251,"props":1764,"children":1765},{"style":334},[1766],{"type":45,"value":359},{"type":40,"tag":251,"props":1768,"children":1769},{"style":340},[1770],{"type":45,"value":364},{"type":40,"tag":251,"props":1772,"children":1773},{"style":367},[1774],{"type":45,"value":880},{"type":40,"tag":251,"props":1776,"children":1777},{"style":340},[1778],{"type":45,"value":375},{"type":40,"tag":251,"props":1780,"children":1781},{"style":340},[1782],{"type":45,"value":380},{"type":40,"tag":251,"props":1784,"children":1785},{"class":253,"line":273},[1786],{"type":40,"tag":251,"props":1787,"children":1788},{"emptyLinePlaceholder":267},[1789],{"type":45,"value":270},{"type":40,"tag":251,"props":1791,"children":1792},{"class":253,"line":282},[1793,1797,1801,1805,1809,1813,1817],{"type":40,"tag":251,"props":1794,"children":1795},{"style":393},[1796],{"type":45,"value":396},{"type":40,"tag":251,"props":1798,"children":1799},{"style":346},[1800],{"type":45,"value":401},{"type":40,"tag":251,"props":1802,"children":1803},{"style":340},[1804],{"type":45,"value":406},{"type":40,"tag":251,"props":1806,"children":1807},{"style":334},[1808],{"type":45,"value":411},{"type":40,"tag":251,"props":1810,"children":1811},{"style":414},[1812],{"type":45,"value":349},{"type":40,"tag":251,"props":1814,"children":1815},{"style":346},[1816],{"type":45,"value":472},{"type":40,"tag":251,"props":1818,"children":1819},{"style":340},[1820],{"type":45,"value":477},{"type":40,"tag":251,"props":1822,"children":1823},{"class":253,"line":291},[1824,1828,1832,1836,1840,1844,1848,1853,1857,1861,1865,1869,1873,1878,1882,1888,1892,1896],{"type":40,"tag":251,"props":1825,"children":1826},{"style":483},[1827],{"type":45,"value":974},{"type":40,"tag":251,"props":1829,"children":1830},{"style":340},[1831],{"type":45,"value":491},{"type":40,"tag":251,"props":1833,"children":1834},{"style":340},[1835],{"type":45,"value":916},{"type":40,"tag":251,"props":1837,"children":1838},{"style":414},[1839],{"type":45,"value":1718},{"type":40,"tag":251,"props":1841,"children":1842},{"style":346},[1843],{"type":45,"value":472},{"type":40,"tag":251,"props":1845,"children":1846},{"style":340},[1847],{"type":45,"value":501},{"type":40,"tag":251,"props":1849,"children":1850},{"style":483},[1851],{"type":45,"value":1852}," rootDir",{"type":40,"tag":251,"props":1854,"children":1855},{"style":340},[1856],{"type":45,"value":491},{"type":40,"tag":251,"props":1858,"children":1859},{"style":340},[1860],{"type":45,"value":364},{"type":40,"tag":251,"props":1862,"children":1863},{"style":367},[1864],{"type":45,"value":462},{"type":40,"tag":251,"props":1866,"children":1867},{"style":340},[1868],{"type":45,"value":375},{"type":40,"tag":251,"props":1870,"children":1871},{"style":340},[1872],{"type":45,"value":528},{"type":40,"tag":251,"props":1874,"children":1875},{"style":483},[1876],{"type":45,"value":1877}," virtualMode",{"type":40,"tag":251,"props":1879,"children":1880},{"style":340},[1881],{"type":45,"value":491},{"type":40,"tag":251,"props":1883,"children":1885},{"style":1884},"--shiki-light:#FF5370;--shiki-default:#FF9CAC;--shiki-dark:#FF9CAC",[1886],{"type":45,"value":1887}," true",{"type":40,"tag":251,"props":1889,"children":1890},{"style":340},[1891],{"type":45,"value":354},{"type":40,"tag":251,"props":1893,"children":1894},{"style":346},[1895],{"type":45,"value":619},{"type":40,"tag":251,"props":1897,"children":1898},{"style":340},[1899],{"type":45,"value":1033},{"type":40,"tag":251,"props":1901,"children":1902},{"class":253,"line":300},[1903,1908,1912,1916,1921,1925,1929,1933,1938,1942,1946],{"type":40,"tag":251,"props":1904,"children":1905},{"style":483},[1906],{"type":45,"value":1907},"  interruptOn",{"type":40,"tag":251,"props":1909,"children":1910},{"style":340},[1911],{"type":45,"value":491},{"type":40,"tag":251,"props":1913,"children":1914},{"style":340},[1915],{"type":45,"value":343},{"type":40,"tag":251,"props":1917,"children":1918},{"style":483},[1919],{"type":45,"value":1920}," write_file",{"type":40,"tag":251,"props":1922,"children":1923},{"style":340},[1924],{"type":45,"value":491},{"type":40,"tag":251,"props":1926,"children":1927},{"style":1884},[1928],{"type":45,"value":1887},{"type":40,"tag":251,"props":1930,"children":1931},{"style":340},[1932],{"type":45,"value":528},{"type":40,"tag":251,"props":1934,"children":1935},{"style":483},[1936],{"type":45,"value":1937}," edit_file",{"type":40,"tag":251,"props":1939,"children":1940},{"style":340},[1941],{"type":45,"value":491},{"type":40,"tag":251,"props":1943,"children":1944},{"style":1884},[1945],{"type":45,"value":1887},{"type":40,"tag":251,"props":1947,"children":1948},{"style":340},[1949],{"type":45,"value":1950}," },\n",{"type":40,"tag":251,"props":1952,"children":1953},{"class":253,"line":309},[1954,1959,1963,1967,1971],{"type":40,"tag":251,"props":1955,"children":1956},{"style":483},[1957],{"type":45,"value":1958},"  checkpointer",{"type":40,"tag":251,"props":1960,"children":1961},{"style":340},[1962],{"type":45,"value":491},{"type":40,"tag":251,"props":1964,"children":1965},{"style":340},[1966],{"type":45,"value":916},{"type":40,"tag":251,"props":1968,"children":1969},{"style":414},[1970],{"type":45,"value":1758},{"type":40,"tag":251,"props":1972,"children":1973},{"style":346},[1974],{"type":45,"value":1975},"()\n",{"type":40,"tag":251,"props":1977,"children":1978},{"class":253,"line":703},[1979,1983,1987],{"type":40,"tag":251,"props":1980,"children":1981},{"style":340},[1982],{"type":45,"value":1104},{"type":40,"tag":251,"props":1984,"children":1985},{"style":346},[1986],{"type":45,"value":619},{"type":40,"tag":251,"props":1988,"children":1989},{"style":340},[1990],{"type":45,"value":380},{"type":40,"tag":48,"props":1992,"children":1993},{},[1994],{"type":40,"tag":52,"props":1995,"children":1996},{},[1997],{"type":45,"value":1998},"Security: Never use FilesystemBackend in web servers - use StateBackend or sandbox instead.",{"type":40,"tag":2000,"props":2001,"children":2002},"ex-store-in-custom-tools",{},[2003],{"type":40,"tag":235,"props":2004,"children":2005},{},[2006,2008],{"type":45,"value":2007},"\nAccess the store directly in custom tools for long-term memory operations.\n",{"type":40,"tag":241,"props":2009,"children":2011},{"className":243,"code":2010,"language":235,"meta":245,"style":245},"from langchain.tools import tool, ToolRuntime\nfrom langchain.agents import create_agent\nfrom langgraph.store.memory import InMemoryStore\n\n@tool\ndef get_user_preference(key: str, runtime: ToolRuntime) -> str:\n    \"\"\"Get a user preference from long-term storage.\"\"\"\n    store = runtime.store\n    result = store.get((\"user_prefs\",), key)\n    return str(result.value) if result else \"Not found\"\n\n@tool\ndef save_user_preference(key: str, value: str, runtime: ToolRuntime) -> str:\n    \"\"\"Save a user preference to long-term storage.\"\"\"\n    store = runtime.store\n    store.put((\"user_prefs\",), key, {\"value\": value})\n    return f\"Saved {key}={value}\"\n\nstore = InMemoryStore()\n\nagent = create_agent(\n    model=\"gpt-4.1\",\n    tools=[get_user_preference, save_user_preference],\n    store=store\n)\n",[2012],{"type":40,"tag":79,"props":2013,"children":2014},{"__ignoreMap":245},[2015,2023,2031,2038,2045,2053,2061,2069,2077,2085,2093,2100,2107,2115,2123,2130,2139,2148,2156,2164,2172,2181,2190,2199,2208],{"type":40,"tag":251,"props":2016,"children":2017},{"class":253,"line":254},[2018],{"type":40,"tag":251,"props":2019,"children":2020},{},[2021],{"type":45,"value":2022},"from langchain.tools import tool, ToolRuntime\n",{"type":40,"tag":251,"props":2024,"children":2025},{"class":253,"line":263},[2026],{"type":40,"tag":251,"props":2027,"children":2028},{},[2029],{"type":45,"value":2030},"from langchain.agents import create_agent\n",{"type":40,"tag":251,"props":2032,"children":2033},{"class":253,"line":273},[2034],{"type":40,"tag":251,"props":2035,"children":2036},{},[2037],{"type":45,"value":670},{"type":40,"tag":251,"props":2039,"children":2040},{"class":253,"line":282},[2041],{"type":40,"tag":251,"props":2042,"children":2043},{"emptyLinePlaceholder":267},[2044],{"type":45,"value":270},{"type":40,"tag":251,"props":2046,"children":2047},{"class":253,"line":291},[2048],{"type":40,"tag":251,"props":2049,"children":2050},{},[2051],{"type":45,"value":2052},"@tool\n",{"type":40,"tag":251,"props":2054,"children":2055},{"class":253,"line":300},[2056],{"type":40,"tag":251,"props":2057,"children":2058},{},[2059],{"type":45,"value":2060},"def get_user_preference(key: str, runtime: ToolRuntime) -> str:\n",{"type":40,"tag":251,"props":2062,"children":2063},{"class":253,"line":309},[2064],{"type":40,"tag":251,"props":2065,"children":2066},{},[2067],{"type":45,"value":2068},"    \"\"\"Get a user preference from long-term storage.\"\"\"\n",{"type":40,"tag":251,"props":2070,"children":2071},{"class":253,"line":703},[2072],{"type":40,"tag":251,"props":2073,"children":2074},{},[2075],{"type":45,"value":2076},"    store = runtime.store\n",{"type":40,"tag":251,"props":2078,"children":2079},{"class":253,"line":712},[2080],{"type":40,"tag":251,"props":2081,"children":2082},{},[2083],{"type":45,"value":2084},"    result = store.get((\"user_prefs\",), key)\n",{"type":40,"tag":251,"props":2086,"children":2087},{"class":253,"line":721},[2088],{"type":40,"tag":251,"props":2089,"children":2090},{},[2091],{"type":45,"value":2092},"    return str(result.value) if result else \"Not found\"\n",{"type":40,"tag":251,"props":2094,"children":2095},{"class":253,"line":730},[2096],{"type":40,"tag":251,"props":2097,"children":2098},{"emptyLinePlaceholder":267},[2099],{"type":45,"value":270},{"type":40,"tag":251,"props":2101,"children":2102},{"class":253,"line":738},[2103],{"type":40,"tag":251,"props":2104,"children":2105},{},[2106],{"type":45,"value":2052},{"type":40,"tag":251,"props":2108,"children":2109},{"class":253,"line":747},[2110],{"type":40,"tag":251,"props":2111,"children":2112},{},[2113],{"type":45,"value":2114},"def save_user_preference(key: str, value: str, runtime: ToolRuntime) -> str:\n",{"type":40,"tag":251,"props":2116,"children":2117},{"class":253,"line":755},[2118],{"type":40,"tag":251,"props":2119,"children":2120},{},[2121],{"type":45,"value":2122},"    \"\"\"Save a user preference to long-term storage.\"\"\"\n",{"type":40,"tag":251,"props":2124,"children":2125},{"class":253,"line":764},[2126],{"type":40,"tag":251,"props":2127,"children":2128},{},[2129],{"type":45,"value":2076},{"type":40,"tag":251,"props":2131,"children":2133},{"class":253,"line":2132},16,[2134],{"type":40,"tag":251,"props":2135,"children":2136},{},[2137],{"type":45,"value":2138},"    store.put((\"user_prefs\",), key, {\"value\": value})\n",{"type":40,"tag":251,"props":2140,"children":2142},{"class":253,"line":2141},17,[2143],{"type":40,"tag":251,"props":2144,"children":2145},{},[2146],{"type":45,"value":2147},"    return f\"Saved {key}={value}\"\n",{"type":40,"tag":251,"props":2149,"children":2151},{"class":253,"line":2150},18,[2152],{"type":40,"tag":251,"props":2153,"children":2154},{"emptyLinePlaceholder":267},[2155],{"type":45,"value":270},{"type":40,"tag":251,"props":2157,"children":2159},{"class":253,"line":2158},19,[2160],{"type":40,"tag":251,"props":2161,"children":2162},{},[2163],{"type":45,"value":685},{"type":40,"tag":251,"props":2165,"children":2167},{"class":253,"line":2166},20,[2168],{"type":40,"tag":251,"props":2169,"children":2170},{"emptyLinePlaceholder":267},[2171],{"type":45,"value":270},{"type":40,"tag":251,"props":2173,"children":2175},{"class":253,"line":2174},21,[2176],{"type":40,"tag":251,"props":2177,"children":2178},{},[2179],{"type":45,"value":2180},"agent = create_agent(\n",{"type":40,"tag":251,"props":2182,"children":2184},{"class":253,"line":2183},22,[2185],{"type":40,"tag":251,"props":2186,"children":2187},{},[2188],{"type":45,"value":2189},"    model=\"gpt-4.1\",\n",{"type":40,"tag":251,"props":2191,"children":2193},{"class":253,"line":2192},23,[2194],{"type":40,"tag":251,"props":2195,"children":2196},{},[2197],{"type":45,"value":2198},"    tools=[get_user_preference, save_user_preference],\n",{"type":40,"tag":251,"props":2200,"children":2202},{"class":253,"line":2201},24,[2203],{"type":40,"tag":251,"props":2204,"children":2205},{},[2206],{"type":45,"value":2207},"    store=store\n",{"type":40,"tag":251,"props":2209,"children":2211},{"class":253,"line":2210},25,[2212],{"type":40,"tag":251,"props":2213,"children":2214},{},[2215],{"type":45,"value":727},{"type":40,"tag":2217,"props":2218,"children":2219},"boundaries",{},[2220,2222,2247,2254,2272,2549,2825,2964,3114,3137],{"type":45,"value":2221},"\n### What Agents CAN Configure\n",{"type":40,"tag":2223,"props":2224,"children":2225},"ul",{},[2226,2232,2237,2242],{"type":40,"tag":2227,"props":2228,"children":2229},"li",{},[2230],{"type":45,"value":2231},"Backend type and configuration",{"type":40,"tag":2227,"props":2233,"children":2234},{},[2235],{"type":45,"value":2236},"Routing rules for CompositeBackend",{"type":40,"tag":2227,"props":2238,"children":2239},{},[2240],{"type":45,"value":2241},"Root directory for FilesystemBackend",{"type":40,"tag":2227,"props":2243,"children":2244},{},[2245],{"type":45,"value":2246},"Human-in-the-loop for file operations",{"type":40,"tag":2248,"props":2249,"children":2251},"h3",{"id":2250},"what-agents-cannot-configure",[2252],{"type":45,"value":2253},"What Agents CANNOT Configure",{"type":40,"tag":2223,"props":2255,"children":2256},{},[2257,2262,2267],{"type":40,"tag":2227,"props":2258,"children":2259},{},[2260],{"type":45,"value":2261},"Tool names (ls, read_file, write_file, edit_file, glob, grep)",{"type":40,"tag":2227,"props":2263,"children":2264},{},[2265],{"type":45,"value":2266},"Access files outside virtual_mode restrictions",{"type":40,"tag":2227,"props":2268,"children":2269},{},[2270],{"type":45,"value":2271},"Cross-thread file access without proper backend setup\n\n",{"type":40,"tag":2273,"props":2274,"children":2275},"fix-storebackend-requires-store",{},[2276,2327],{"type":40,"tag":235,"props":2277,"children":2278},{},[2279,2281],{"type":45,"value":2280},"\nStoreBackend requires a store instance.\n",{"type":40,"tag":241,"props":2282,"children":2284},{"className":243,"code":2283,"language":235,"meta":245,"style":245},"# WRONG\nagent = create_deep_agent(backend=lambda rt: StoreBackend(rt))\n\n# CORRECT\nagent = create_deep_agent(backend=lambda rt: StoreBackend(rt), store=InMemoryStore())\n",[2285],{"type":40,"tag":79,"props":2286,"children":2287},{"__ignoreMap":245},[2288,2296,2304,2311,2319],{"type":40,"tag":251,"props":2289,"children":2290},{"class":253,"line":254},[2291],{"type":40,"tag":251,"props":2292,"children":2293},{},[2294],{"type":45,"value":2295},"# WRONG\n",{"type":40,"tag":251,"props":2297,"children":2298},{"class":253,"line":263},[2299],{"type":40,"tag":251,"props":2300,"children":2301},{},[2302],{"type":45,"value":2303},"agent = create_deep_agent(backend=lambda rt: StoreBackend(rt))\n",{"type":40,"tag":251,"props":2305,"children":2306},{"class":253,"line":273},[2307],{"type":40,"tag":251,"props":2308,"children":2309},{"emptyLinePlaceholder":267},[2310],{"type":45,"value":270},{"type":40,"tag":251,"props":2312,"children":2313},{"class":253,"line":282},[2314],{"type":40,"tag":251,"props":2315,"children":2316},{},[2317],{"type":45,"value":2318},"# CORRECT\n",{"type":40,"tag":251,"props":2320,"children":2321},{"class":253,"line":291},[2322],{"type":40,"tag":251,"props":2323,"children":2324},{},[2325],{"type":45,"value":2326},"agent = create_deep_agent(backend=lambda rt: StoreBackend(rt), store=InMemoryStore())\n",{"type":40,"tag":317,"props":2328,"children":2329},{},[2330,2331],{"type":45,"value":2280},{"type":40,"tag":241,"props":2332,"children":2334},{"className":323,"code":2333,"language":317,"meta":245,"style":245},"\u002F\u002F WRONG\nconst agent = await createDeepAgent({ backend: (c) => new StoreBackend(c) });\n\n\u002F\u002F CORRECT\nconst agent = await createDeepAgent({ backend: (c) => new StoreBackend(c), store: new InMemoryStore() });\n",[2335],{"type":40,"tag":79,"props":2336,"children":2337},{"__ignoreMap":245},[2338,2346,2428,2435,2443],{"type":40,"tag":251,"props":2339,"children":2340},{"class":253,"line":254},[2341],{"type":40,"tag":251,"props":2342,"children":2343},{"style":429},[2344],{"type":45,"value":2345},"\u002F\u002F WRONG\n",{"type":40,"tag":251,"props":2347,"children":2348},{"class":253,"line":263},[2349,2353,2357,2361,2365,2369,2373,2377,2382,2386,2390,2395,2399,2403,2407,2411,2416,2420,2424],{"type":40,"tag":251,"props":2350,"children":2351},{"style":393},[2352],{"type":45,"value":396},{"type":40,"tag":251,"props":2354,"children":2355},{"style":346},[2356],{"type":45,"value":401},{"type":40,"tag":251,"props":2358,"children":2359},{"style":340},[2360],{"type":45,"value":406},{"type":40,"tag":251,"props":2362,"children":2363},{"style":334},[2364],{"type":45,"value":411},{"type":40,"tag":251,"props":2366,"children":2367},{"style":414},[2368],{"type":45,"value":349},{"type":40,"tag":251,"props":2370,"children":2371},{"style":346},[2372],{"type":45,"value":472},{"type":40,"tag":251,"props":2374,"children":2375},{"style":340},[2376],{"type":45,"value":501},{"type":40,"tag":251,"props":2378,"children":2379},{"style":414},[2380],{"type":45,"value":2381}," backend",{"type":40,"tag":251,"props":2383,"children":2384},{"style":340},[2385],{"type":45,"value":491},{"type":40,"tag":251,"props":2387,"children":2388},{"style":340},[2389],{"type":45,"value":983},{"type":40,"tag":251,"props":2391,"children":2392},{"style":986},[2393],{"type":45,"value":2394},"c",{"type":40,"tag":251,"props":2396,"children":2397},{"style":340},[2398],{"type":45,"value":619},{"type":40,"tag":251,"props":2400,"children":2401},{"style":393},[2402],{"type":45,"value":998},{"type":40,"tag":251,"props":2404,"children":2405},{"style":340},[2406],{"type":45,"value":916},{"type":40,"tag":251,"props":2408,"children":2409},{"style":414},[2410],{"type":45,"value":823},{"type":40,"tag":251,"props":2412,"children":2413},{"style":346},[2414],{"type":45,"value":2415},"(c) ",{"type":40,"tag":251,"props":2417,"children":2418},{"style":340},[2419],{"type":45,"value":1104},{"type":40,"tag":251,"props":2421,"children":2422},{"style":346},[2423],{"type":45,"value":619},{"type":40,"tag":251,"props":2425,"children":2426},{"style":340},[2427],{"type":45,"value":380},{"type":40,"tag":251,"props":2429,"children":2430},{"class":253,"line":273},[2431],{"type":40,"tag":251,"props":2432,"children":2433},{"emptyLinePlaceholder":267},[2434],{"type":45,"value":270},{"type":40,"tag":251,"props":2436,"children":2437},{"class":253,"line":282},[2438],{"type":40,"tag":251,"props":2439,"children":2440},{"style":429},[2441],{"type":45,"value":2442},"\u002F\u002F CORRECT\n",{"type":40,"tag":251,"props":2444,"children":2445},{"class":253,"line":291},[2446,2450,2454,2458,2462,2466,2470,2474,2478,2482,2486,2490,2494,2498,2502,2506,2511,2515,2520,2524,2528,2532,2537,2541,2545],{"type":40,"tag":251,"props":2447,"children":2448},{"style":393},[2449],{"type":45,"value":396},{"type":40,"tag":251,"props":2451,"children":2452},{"style":346},[2453],{"type":45,"value":401},{"type":40,"tag":251,"props":2455,"children":2456},{"style":340},[2457],{"type":45,"value":406},{"type":40,"tag":251,"props":2459,"children":2460},{"style":334},[2461],{"type":45,"value":411},{"type":40,"tag":251,"props":2463,"children":2464},{"style":414},[2465],{"type":45,"value":349},{"type":40,"tag":251,"props":2467,"children":2468},{"style":346},[2469],{"type":45,"value":472},{"type":40,"tag":251,"props":2471,"children":2472},{"style":340},[2473],{"type":45,"value":501},{"type":40,"tag":251,"props":2475,"children":2476},{"style":414},[2477],{"type":45,"value":2381},{"type":40,"tag":251,"props":2479,"children":2480},{"style":340},[2481],{"type":45,"value":491},{"type":40,"tag":251,"props":2483,"children":2484},{"style":340},[2485],{"type":45,"value":983},{"type":40,"tag":251,"props":2487,"children":2488},{"style":986},[2489],{"type":45,"value":2394},{"type":40,"tag":251,"props":2491,"children":2492},{"style":340},[2493],{"type":45,"value":619},{"type":40,"tag":251,"props":2495,"children":2496},{"style":393},[2497],{"type":45,"value":998},{"type":40,"tag":251,"props":2499,"children":2500},{"style":340},[2501],{"type":45,"value":916},{"type":40,"tag":251,"props":2503,"children":2504},{"style":414},[2505],{"type":45,"value":823},{"type":40,"tag":251,"props":2507,"children":2508},{"style":346},[2509],{"type":45,"value":2510},"(c)",{"type":40,"tag":251,"props":2512,"children":2513},{"style":340},[2514],{"type":45,"value":528},{"type":40,"tag":251,"props":2516,"children":2517},{"style":483},[2518],{"type":45,"value":2519}," store",{"type":40,"tag":251,"props":2521,"children":2522},{"style":340},[2523],{"type":45,"value":491},{"type":40,"tag":251,"props":2525,"children":2526},{"style":340},[2527],{"type":45,"value":916},{"type":40,"tag":251,"props":2529,"children":2530},{"style":414},[2531],{"type":45,"value":863},{"type":40,"tag":251,"props":2533,"children":2534},{"style":346},[2535],{"type":45,"value":2536},"() ",{"type":40,"tag":251,"props":2538,"children":2539},{"style":340},[2540],{"type":45,"value":1104},{"type":40,"tag":251,"props":2542,"children":2543},{"style":346},[2544],{"type":45,"value":619},{"type":40,"tag":251,"props":2546,"children":2547},{"style":340},[2548],{"type":45,"value":380},{"type":40,"tag":2550,"props":2551,"children":2552},"fix-statebackend-files-dont-persist",{},[2553,2589],{"type":40,"tag":235,"props":2554,"children":2555},{},[2556,2558],{"type":45,"value":2557},"\nStateBackend files are thread-scoped - use same thread_id or StoreBackend for cross-thread access.\n",{"type":40,"tag":241,"props":2559,"children":2561},{"className":243,"code":2560,"language":235,"meta":245,"style":245},"# WRONG: thread-2 can't read file from thread-1\nagent.invoke({\"messages\": [...]}, config={\"configurable\": {\"thread_id\": \"thread-1\"}})  # Write\nagent.invoke({\"messages\": [...]}, config={\"configurable\": {\"thread_id\": \"thread-2\"}})  # File not found!\n",[2562],{"type":40,"tag":79,"props":2563,"children":2564},{"__ignoreMap":245},[2565,2573,2581],{"type":40,"tag":251,"props":2566,"children":2567},{"class":253,"line":254},[2568],{"type":40,"tag":251,"props":2569,"children":2570},{},[2571],{"type":45,"value":2572},"# WRONG: thread-2 can't read file from thread-1\n",{"type":40,"tag":251,"props":2574,"children":2575},{"class":253,"line":263},[2576],{"type":40,"tag":251,"props":2577,"children":2578},{},[2579],{"type":45,"value":2580},"agent.invoke({\"messages\": [...]}, config={\"configurable\": {\"thread_id\": \"thread-1\"}})  # Write\n",{"type":40,"tag":251,"props":2582,"children":2583},{"class":253,"line":273},[2584],{"type":40,"tag":251,"props":2585,"children":2586},{},[2587],{"type":45,"value":2588},"agent.invoke({\"messages\": [...]}, config={\"configurable\": {\"thread_id\": \"thread-2\"}})  # File not found!\n",{"type":40,"tag":317,"props":2590,"children":2591},{},[2592,2593],{"type":45,"value":2557},{"type":40,"tag":241,"props":2594,"children":2596},{"className":323,"code":2595,"language":317,"meta":245,"style":245},"\u002F\u002F WRONG: thread-2 can't read file from thread-1\nawait agent.invoke({ messages: [...] }, { configurable: { thread_id: \"thread-1\" } });  \u002F\u002F Write\nawait agent.invoke({ messages: [...] }, { configurable: { thread_id: \"thread-2\" } });  \u002F\u002F File not found!\n",[2597],{"type":40,"tag":79,"props":2598,"children":2599},{"__ignoreMap":245},[2600,2608,2717],{"type":40,"tag":251,"props":2601,"children":2602},{"class":253,"line":254},[2603],{"type":40,"tag":251,"props":2604,"children":2605},{"style":429},[2606],{"type":45,"value":2607},"\u002F\u002F WRONG: thread-2 can't read file from thread-1\n",{"type":40,"tag":251,"props":2609,"children":2610},{"class":253,"line":263},[2611,2615,2619,2623,2627,2631,2635,2639,2643,2647,2652,2656,2660,2664,2668,2672,2676,2680,2684,2688,2692,2696,2700,2704,2708,2712],{"type":40,"tag":251,"props":2612,"children":2613},{"style":334},[2614],{"type":45,"value":1294},{"type":40,"tag":251,"props":2616,"children":2617},{"style":346},[2618],{"type":45,"value":457},{"type":40,"tag":251,"props":2620,"children":2621},{"style":340},[2622],{"type":45,"value":462},{"type":40,"tag":251,"props":2624,"children":2625},{"style":414},[2626],{"type":45,"value":467},{"type":40,"tag":251,"props":2628,"children":2629},{"style":346},[2630],{"type":45,"value":472},{"type":40,"tag":251,"props":2632,"children":2633},{"style":340},[2634],{"type":45,"value":501},{"type":40,"tag":251,"props":2636,"children":2637},{"style":483},[2638],{"type":45,"value":1319},{"type":40,"tag":251,"props":2640,"children":2641},{"style":340},[2642],{"type":45,"value":491},{"type":40,"tag":251,"props":2644,"children":2645},{"style":346},[2646],{"type":45,"value":496},{"type":40,"tag":251,"props":2648,"children":2649},{"style":340},[2650],{"type":45,"value":2651},"...",{"type":40,"tag":251,"props":2653,"children":2654},{"style":346},[2655],{"type":45,"value":1385},{"type":40,"tag":251,"props":2657,"children":2658},{"style":340},[2659],{"type":45,"value":567},{"type":40,"tag":251,"props":2661,"children":2662},{"style":340},[2663],{"type":45,"value":343},{"type":40,"tag":251,"props":2665,"children":2666},{"style":483},[2667],{"type":45,"value":576},{"type":40,"tag":251,"props":2669,"children":2670},{"style":340},[2671],{"type":45,"value":491},{"type":40,"tag":251,"props":2673,"children":2674},{"style":340},[2675],{"type":45,"value":343},{"type":40,"tag":251,"props":2677,"children":2678},{"style":483},[2679],{"type":45,"value":589},{"type":40,"tag":251,"props":2681,"children":2682},{"style":340},[2683],{"type":45,"value":491},{"type":40,"tag":251,"props":2685,"children":2686},{"style":340},[2687],{"type":45,"value":364},{"type":40,"tag":251,"props":2689,"children":2690},{"style":367},[2691],{"type":45,"value":602},{"type":40,"tag":251,"props":2693,"children":2694},{"style":340},[2695],{"type":45,"value":375},{"type":40,"tag":251,"props":2697,"children":2698},{"style":340},[2699],{"type":45,"value":354},{"type":40,"tag":251,"props":2701,"children":2702},{"style":340},[2703],{"type":45,"value":354},{"type":40,"tag":251,"props":2705,"children":2706},{"style":346},[2707],{"type":45,"value":619},{"type":40,"tag":251,"props":2709,"children":2710},{"style":340},[2711],{"type":45,"value":426},{"type":40,"tag":251,"props":2713,"children":2714},{"style":429},[2715],{"type":45,"value":2716},"  \u002F\u002F Write\n",{"type":40,"tag":251,"props":2718,"children":2719},{"class":253,"line":273},[2720,2724,2728,2732,2736,2740,2744,2748,2752,2756,2760,2764,2768,2772,2776,2780,2784,2788,2792,2796,2800,2804,2808,2812,2816,2820],{"type":40,"tag":251,"props":2721,"children":2722},{"style":334},[2723],{"type":45,"value":1294},{"type":40,"tag":251,"props":2725,"children":2726},{"style":346},[2727],{"type":45,"value":457},{"type":40,"tag":251,"props":2729,"children":2730},{"style":340},[2731],{"type":45,"value":462},{"type":40,"tag":251,"props":2733,"children":2734},{"style":414},[2735],{"type":45,"value":467},{"type":40,"tag":251,"props":2737,"children":2738},{"style":346},[2739],{"type":45,"value":472},{"type":40,"tag":251,"props":2741,"children":2742},{"style":340},[2743],{"type":45,"value":501},{"type":40,"tag":251,"props":2745,"children":2746},{"style":483},[2747],{"type":45,"value":1319},{"type":40,"tag":251,"props":2749,"children":2750},{"style":340},[2751],{"type":45,"value":491},{"type":40,"tag":251,"props":2753,"children":2754},{"style":346},[2755],{"type":45,"value":496},{"type":40,"tag":251,"props":2757,"children":2758},{"style":340},[2759],{"type":45,"value":2651},{"type":40,"tag":251,"props":2761,"children":2762},{"style":346},[2763],{"type":45,"value":1385},{"type":40,"tag":251,"props":2765,"children":2766},{"style":340},[2767],{"type":45,"value":567},{"type":40,"tag":251,"props":2769,"children":2770},{"style":340},[2771],{"type":45,"value":343},{"type":40,"tag":251,"props":2773,"children":2774},{"style":483},[2775],{"type":45,"value":576},{"type":40,"tag":251,"props":2777,"children":2778},{"style":340},[2779],{"type":45,"value":491},{"type":40,"tag":251,"props":2781,"children":2782},{"style":340},[2783],{"type":45,"value":343},{"type":40,"tag":251,"props":2785,"children":2786},{"style":483},[2787],{"type":45,"value":589},{"type":40,"tag":251,"props":2789,"children":2790},{"style":340},[2791],{"type":45,"value":491},{"type":40,"tag":251,"props":2793,"children":2794},{"style":340},[2795],{"type":45,"value":364},{"type":40,"tag":251,"props":2797,"children":2798},{"style":367},[2799],{"type":45,"value":1454},{"type":40,"tag":251,"props":2801,"children":2802},{"style":340},[2803],{"type":45,"value":375},{"type":40,"tag":251,"props":2805,"children":2806},{"style":340},[2807],{"type":45,"value":354},{"type":40,"tag":251,"props":2809,"children":2810},{"style":340},[2811],{"type":45,"value":354},{"type":40,"tag":251,"props":2813,"children":2814},{"style":346},[2815],{"type":45,"value":619},{"type":40,"tag":251,"props":2817,"children":2818},{"style":340},[2819],{"type":45,"value":426},{"type":40,"tag":251,"props":2821,"children":2822},{"style":429},[2823],{"type":45,"value":2824},"  \u002F\u002F File not found!\n",{"type":40,"tag":2826,"props":2827,"children":2828},"fix-path-prefix-for-persistence",{},[2829,2865],{"type":40,"tag":235,"props":2830,"children":2831},{},[2832,2834],{"type":45,"value":2833},"\nPath must match CompositeBackend route prefix for persistence.\n",{"type":40,"tag":241,"props":2835,"children":2837},{"className":243,"code":2836,"language":235,"meta":245,"style":245},"# With routes={\"\u002Fmemories\u002F\": StoreBackend(rt)}:\nagent.invoke(...)  # \u002Fprefs.txt -> ephemeral (no match)\nagent.invoke(...)  # \u002Fmemories\u002Fprefs.txt -> persistent (matches route)\n",[2838],{"type":40,"tag":79,"props":2839,"children":2840},{"__ignoreMap":245},[2841,2849,2857],{"type":40,"tag":251,"props":2842,"children":2843},{"class":253,"line":254},[2844],{"type":40,"tag":251,"props":2845,"children":2846},{},[2847],{"type":45,"value":2848},"# With routes={\"\u002Fmemories\u002F\": StoreBackend(rt)}:\n",{"type":40,"tag":251,"props":2850,"children":2851},{"class":253,"line":263},[2852],{"type":40,"tag":251,"props":2853,"children":2854},{},[2855],{"type":45,"value":2856},"agent.invoke(...)  # \u002Fprefs.txt -> ephemeral (no match)\n",{"type":40,"tag":251,"props":2858,"children":2859},{"class":253,"line":273},[2860],{"type":40,"tag":251,"props":2861,"children":2862},{},[2863],{"type":45,"value":2864},"agent.invoke(...)  # \u002Fmemories\u002Fprefs.txt -> persistent (matches route)\n",{"type":40,"tag":317,"props":2866,"children":2867},{},[2868,2869],{"type":45,"value":2833},{"type":40,"tag":241,"props":2870,"children":2872},{"className":323,"code":2871,"language":317,"meta":245,"style":245},"\u002F\u002F With routes: { \"\u002Fmemories\u002F\": StoreBackend }:\nawait agent.invoke(...);  \u002F\u002F \u002Fprefs.txt -> ephemeral (no match)\nawait agent.invoke(...);  \u002F\u002F \u002Fmemories\u002Fprefs.txt -> persistent (matches route)\n",[2873],{"type":40,"tag":79,"props":2874,"children":2875},{"__ignoreMap":245},[2876,2884,2924],{"type":40,"tag":251,"props":2877,"children":2878},{"class":253,"line":254},[2879],{"type":40,"tag":251,"props":2880,"children":2881},{"style":429},[2882],{"type":45,"value":2883},"\u002F\u002F With routes: { \"\u002Fmemories\u002F\": StoreBackend }:\n",{"type":40,"tag":251,"props":2885,"children":2886},{"class":253,"line":263},[2887,2891,2895,2899,2903,2907,2911,2915,2919],{"type":40,"tag":251,"props":2888,"children":2889},{"style":334},[2890],{"type":45,"value":1294},{"type":40,"tag":251,"props":2892,"children":2893},{"style":346},[2894],{"type":45,"value":457},{"type":40,"tag":251,"props":2896,"children":2897},{"style":340},[2898],{"type":45,"value":462},{"type":40,"tag":251,"props":2900,"children":2901},{"style":414},[2902],{"type":45,"value":467},{"type":40,"tag":251,"props":2904,"children":2905},{"style":346},[2906],{"type":45,"value":472},{"type":40,"tag":251,"props":2908,"children":2909},{"style":340},[2910],{"type":45,"value":2651},{"type":40,"tag":251,"props":2912,"children":2913},{"style":346},[2914],{"type":45,"value":619},{"type":40,"tag":251,"props":2916,"children":2917},{"style":340},[2918],{"type":45,"value":426},{"type":40,"tag":251,"props":2920,"children":2921},{"style":429},[2922],{"type":45,"value":2923},"  \u002F\u002F \u002Fprefs.txt -> ephemeral (no match)\n",{"type":40,"tag":251,"props":2925,"children":2926},{"class":253,"line":273},[2927,2931,2935,2939,2943,2947,2951,2955,2959],{"type":40,"tag":251,"props":2928,"children":2929},{"style":334},[2930],{"type":45,"value":1294},{"type":40,"tag":251,"props":2932,"children":2933},{"style":346},[2934],{"type":45,"value":457},{"type":40,"tag":251,"props":2936,"children":2937},{"style":340},[2938],{"type":45,"value":462},{"type":40,"tag":251,"props":2940,"children":2941},{"style":414},[2942],{"type":45,"value":467},{"type":40,"tag":251,"props":2944,"children":2945},{"style":346},[2946],{"type":45,"value":472},{"type":40,"tag":251,"props":2948,"children":2949},{"style":340},[2950],{"type":45,"value":2651},{"type":40,"tag":251,"props":2952,"children":2953},{"style":346},[2954],{"type":45,"value":619},{"type":40,"tag":251,"props":2956,"children":2957},{"style":340},[2958],{"type":45,"value":426},{"type":40,"tag":251,"props":2960,"children":2961},{"style":429},[2962],{"type":45,"value":2963},"  \u002F\u002F \u002Fmemories\u002Fprefs.txt -> persistent (matches route)\n",{"type":40,"tag":2965,"props":2966,"children":2967},"fix-production-store",{},[2968,2996],{"type":40,"tag":235,"props":2969,"children":2970},{},[2971,2973],{"type":45,"value":2972},"\nUse PostgresStore for production (InMemoryStore lost on restart).\n",{"type":40,"tag":241,"props":2974,"children":2976},{"className":243,"code":2975,"language":235,"meta":245,"style":245},"# WRONG                              # CORRECT\nstore = InMemoryStore()              store = PostgresStore(connection_string=\"postgresql:\u002F\u002F...\")\n",[2977],{"type":40,"tag":79,"props":2978,"children":2979},{"__ignoreMap":245},[2980,2988],{"type":40,"tag":251,"props":2981,"children":2982},{"class":253,"line":254},[2983],{"type":40,"tag":251,"props":2984,"children":2985},{},[2986],{"type":45,"value":2987},"# WRONG                              # CORRECT\n",{"type":40,"tag":251,"props":2989,"children":2990},{"class":253,"line":263},[2991],{"type":40,"tag":251,"props":2992,"children":2993},{},[2994],{"type":45,"value":2995},"store = InMemoryStore()              store = PostgresStore(connection_string=\"postgresql:\u002F\u002F...\")\n",{"type":40,"tag":317,"props":2997,"children":2998},{},[2999,3000],{"type":45,"value":2972},{"type":40,"tag":241,"props":3001,"children":3003},{"className":323,"code":3002,"language":317,"meta":245,"style":245},"\u002F\u002F WRONG                                    \u002F\u002F CORRECT\nconst store = new InMemoryStore();          const store = new PostgresStore({ connectionString: \"...\" });\n",[3004],{"type":40,"tag":79,"props":3005,"children":3006},{"__ignoreMap":245},[3007,3020],{"type":40,"tag":251,"props":3008,"children":3009},{"class":253,"line":254},[3010,3015],{"type":40,"tag":251,"props":3011,"children":3012},{"style":429},[3013],{"type":45,"value":3014},"\u002F\u002F WRONG",{"type":40,"tag":251,"props":3016,"children":3017},{"style":429},[3018],{"type":45,"value":3019},"                                    \u002F\u002F CORRECT\n",{"type":40,"tag":251,"props":3021,"children":3022},{"class":253,"line":263},[3023,3027,3031,3035,3039,3043,3047,3051,3056,3060,3064,3068,3073,3077,3081,3086,3090,3094,3098,3102,3106,3110],{"type":40,"tag":251,"props":3024,"children":3025},{"style":393},[3026],{"type":45,"value":396},{"type":40,"tag":251,"props":3028,"children":3029},{"style":346},[3030],{"type":45,"value":907},{"type":40,"tag":251,"props":3032,"children":3033},{"style":340},[3034],{"type":45,"value":406},{"type":40,"tag":251,"props":3036,"children":3037},{"style":340},[3038],{"type":45,"value":916},{"type":40,"tag":251,"props":3040,"children":3041},{"style":414},[3042],{"type":45,"value":863},{"type":40,"tag":251,"props":3044,"children":3045},{"style":346},[3046],{"type":45,"value":421},{"type":40,"tag":251,"props":3048,"children":3049},{"style":340},[3050],{"type":45,"value":426},{"type":40,"tag":251,"props":3052,"children":3053},{"style":393},[3054],{"type":45,"value":3055},"          const",{"type":40,"tag":251,"props":3057,"children":3058},{"style":346},[3059],{"type":45,"value":907},{"type":40,"tag":251,"props":3061,"children":3062},{"style":340},[3063],{"type":45,"value":406},{"type":40,"tag":251,"props":3065,"children":3066},{"style":340},[3067],{"type":45,"value":916},{"type":40,"tag":251,"props":3069,"children":3070},{"style":414},[3071],{"type":45,"value":3072}," PostgresStore",{"type":40,"tag":251,"props":3074,"children":3075},{"style":346},[3076],{"type":45,"value":472},{"type":40,"tag":251,"props":3078,"children":3079},{"style":340},[3080],{"type":45,"value":501},{"type":40,"tag":251,"props":3082,"children":3083},{"style":483},[3084],{"type":45,"value":3085}," connectionString",{"type":40,"tag":251,"props":3087,"children":3088},{"style":340},[3089],{"type":45,"value":491},{"type":40,"tag":251,"props":3091,"children":3092},{"style":340},[3093],{"type":45,"value":364},{"type":40,"tag":251,"props":3095,"children":3096},{"style":367},[3097],{"type":45,"value":2651},{"type":40,"tag":251,"props":3099,"children":3100},{"style":340},[3101],{"type":45,"value":375},{"type":40,"tag":251,"props":3103,"children":3104},{"style":340},[3105],{"type":45,"value":354},{"type":40,"tag":251,"props":3107,"children":3108},{"style":346},[3109],{"type":45,"value":619},{"type":40,"tag":251,"props":3111,"children":3112},{"style":340},[3113],{"type":45,"value":380},{"type":40,"tag":3115,"props":3116,"children":3117},"fix-filesystem-backend-needs-virtual-mode",{},[3118],{"type":40,"tag":235,"props":3119,"children":3120},{},[3121,3123],{"type":45,"value":3122},"\nEnable virtual_mode=True to restrict path access (prevents ..\u002F and ~\u002F escapes).\n",{"type":40,"tag":241,"props":3124,"children":3126},{"className":243,"code":3125,"language":235,"meta":245,"style":245},"backend = FilesystemBackend(root_dir=\"\u002Fproject\", virtual_mode=True)  # Secure\n",[3127],{"type":40,"tag":79,"props":3128,"children":3129},{"__ignoreMap":245},[3130],{"type":40,"tag":251,"props":3131,"children":3132},{"class":253,"line":254},[3133],{"type":40,"tag":251,"props":3134,"children":3135},{},[3136],{"type":45,"value":3125},{"type":40,"tag":3138,"props":3139,"children":3140},"fix-longest-prefix-match",{},[3141],{"type":40,"tag":235,"props":3142,"children":3143},{},[3144,3146],{"type":45,"value":3145},"\nCompositeBackend matches longest prefix first.\n",{"type":40,"tag":241,"props":3147,"children":3149},{"className":243,"code":3148,"language":235,"meta":245,"style":245},"routes = {\"\u002Fmem\u002F\": StoreBackend(rt), \"\u002Fmem\u002Ftemp\u002F\": StateBackend(rt)}\n# \u002Fmem\u002Ffile.txt -> StoreBackend, \u002Fmem\u002Ftemp\u002Ffile.txt -> StateBackend (longer match)\n",[3150],{"type":40,"tag":79,"props":3151,"children":3152},{"__ignoreMap":245},[3153,3161],{"type":40,"tag":251,"props":3154,"children":3155},{"class":253,"line":254},[3156],{"type":40,"tag":251,"props":3157,"children":3158},{},[3159],{"type":45,"value":3160},"routes = {\"\u002Fmem\u002F\": StoreBackend(rt), \"\u002Fmem\u002Ftemp\u002F\": StateBackend(rt)}\n",{"type":40,"tag":251,"props":3162,"children":3163},{"class":253,"line":263},[3164],{"type":40,"tag":251,"props":3165,"children":3166},{},[3167],{"type":45,"value":3168},"# \u002Fmem\u002Ffile.txt -> StoreBackend, \u002Fmem\u002Ftemp\u002Ffile.txt -> StateBackend (longer match)\n",{"type":40,"tag":3170,"props":3171,"children":3172},"style",{},[3173],{"type":45,"value":3174},"html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"items":3176,"total":3351},[3177,3198,3209,3226,3239,3254,3271,3284,3298,3308,3319,3338],{"slug":3178,"name":3178,"fn":3179,"description":3180,"org":3181,"tags":3182,"stars":3195,"repoUrl":3196,"updatedAt":3197},"analyze-market","perform market analysis and size estimation","Perform a market analysis for a product category or segment. Trigger on: market analysis, market size, TAM SAM SOM, market opportunity, industry analysis.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[3183,3186,3189,3192],{"name":3184,"slug":3185,"type":14},"Marketing","marketing",{"name":3187,"slug":3188,"type":14},"Research","research",{"name":3190,"slug":3191,"type":14},"Sales","sales",{"name":3193,"slug":3194,"type":14},"Strategy","strategy",26592,"https:\u002F\u002Fgithub.com\u002Flangchain-ai\u002Fdeepagents","2026-04-18T04:46:54.557115",{"slug":3199,"name":3199,"fn":3200,"description":3201,"org":3202,"tags":3203,"stars":3195,"repoUrl":3196,"updatedAt":3208},"arxiv-search","search arXiv for academic research papers","Searches arXiv for preprints and academic papers, retrieves abstracts, and filters by topic. Use when the user asks to find research papers, search arXiv, look up preprints, find academic articles in physics, math, CS, biology, statistics, or related fields.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[3204,3205],{"name":3187,"slug":3188,"type":14},{"name":3206,"slug":3207,"type":14},"Search","search","2026-05-13T06:11:01.203061",{"slug":3210,"name":3210,"fn":3211,"description":3212,"org":3213,"tags":3214,"stars":3195,"repoUrl":3196,"updatedAt":3225},"blog-post","write SEO-optimized blog posts","Write long-form blog posts with SEO optimization and clear structure.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[3215,3218,3219,3222],{"name":3216,"slug":3217,"type":14},"Content Creation","content-creation",{"name":3184,"slug":3185,"type":14},{"name":3220,"slug":3221,"type":14},"SEO","seo",{"name":3223,"slug":3224,"type":14},"Writing","writing","2026-04-15T05:00:54.149813",{"slug":3227,"name":3227,"fn":3228,"description":3229,"org":3230,"tags":3231,"stars":3195,"repoUrl":3196,"updatedAt":3238},"competitor-analysis","analyze competitors and market positioning","Analyze competitors in a given market segment. Trigger on: competitive landscape, competitor analysis, market comparison, competitive positioning.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[3232,3235,3236,3237],{"name":3233,"slug":3234,"type":14},"Competitive Intelligence","competitive-intelligence",{"name":3184,"slug":3185,"type":14},{"name":3187,"slug":3188,"type":14},{"name":3193,"slug":3194,"type":14},"2026-04-18T04:46:55.79306",{"slug":3240,"name":3240,"fn":3241,"description":3242,"org":3243,"tags":3244,"stars":3195,"repoUrl":3196,"updatedAt":3253},"deepagents-thread-inspector","inspect local Deep Agents conversation threads","Inspect and explain conversations in the local Deep Agents Code SQLite session store. Use as a fallback when LangSmith trace tooling is unavailable, for offline or untraced sessions, or when asked to identify or summarize a local dcode thread, inspect checkpoint metadata, list recent local threads, or parse ~\u002F.deepagents\u002F.state\u002Fsessions.db and a thread UUID or prefix.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[3245,3246,3249,3250],{"name":19,"slug":20,"type":14},{"name":3247,"slug":3248,"type":14},"Debugging","debugging",{"name":9,"slug":8,"type":14},{"name":3251,"slug":3252,"type":14},"SQLite","sqlite","2026-07-24T06:08:57.102689",{"slug":3255,"name":3255,"fn":3256,"description":3257,"org":3258,"tags":3259,"stars":3195,"repoUrl":3196,"updatedAt":3270},"langgraph-docs","build stateful agents with LangGraph","Fetches and references LangGraph Python documentation to build stateful agents, create multi-agent workflows, and implement human-in-the-loop patterns. Use when the user asks about LangGraph, graph agents, state machines, agent orchestration, LangGraph API, or needs LangGraph implementation guidance.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[3260,3261,3264,3267],{"name":19,"slug":20,"type":14},{"name":3262,"slug":3263,"type":14},"Documentation","documentation",{"name":3265,"slug":3266,"type":14},"LangGraph","langgraph",{"name":3268,"slug":3269,"type":14},"Multi-Agent","multi-agent","2026-05-13T06:11:03.650877",{"slug":3272,"name":3272,"fn":3273,"description":3274,"org":3275,"tags":3276,"stars":3195,"repoUrl":3196,"updatedAt":3283},"remember","capture knowledge into persistent memory","Review the current conversation and capture valuable knowledge — best practices, coding conventions, architecture decisions, workflows, and user feedback — into persistent memory (AGENTS.md) or reusable skills. Use when the user says: (1) remember this, (2) save what we learned, (3) update memory, (4) capture learnings.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[3277,3278,3279,3282],{"name":19,"slug":20,"type":14},{"name":3262,"slug":3263,"type":14},{"name":3280,"slug":3281,"type":14},"Knowledge Management","knowledge-management",{"name":16,"slug":17,"type":14},"2026-05-13T06:10:58.510037",{"slug":3285,"name":3285,"fn":3286,"description":3287,"org":3288,"tags":3289,"stars":3195,"repoUrl":3196,"updatedAt":3297},"skill-creator","create agent skills and tool integrations","Guide for creating effective skills that extend agent capabilities with specialized knowledge, workflows, or tool integrations. Use this skill when the user asks to: (1) create a new skill, (2) make a skill, (3) build a skill, (4) set up a skill, (5) initialize a skill, (6) scaffold a skill, (7) update or modify an existing skill, (8) validate a skill, (9) learn about skill structure, (10) understand how skills work, or (11) get guidance on skill design patterns. Trigger on phrases like \"create a skill\", \"new skill\", \"make a skill\", \"skill for X\", \"how do I create a skill\", or \"help me build a skill\".",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[3290,3291,3294],{"name":19,"slug":20,"type":14},{"name":3292,"slug":3293,"type":14},"Engineering","engineering",{"name":3295,"slug":3296,"type":14},"Plugin Development","plugin-development","2026-05-13T06:10:59.88449",{"slug":3299,"name":3299,"fn":3300,"description":3301,"org":3302,"tags":3303,"stars":3195,"repoUrl":3196,"updatedAt":3307},"social-media","create optimized social media posts","Create social media posts optimized for engagement across platforms.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[3304,3305,3306],{"name":3216,"slug":3217,"type":14},{"name":3184,"slug":3185,"type":14},{"name":3223,"slug":3224,"type":14},"2026-04-15T05:00:55.37452",{"slug":3309,"name":3309,"fn":3310,"description":3311,"org":3312,"tags":3313,"stars":3195,"repoUrl":3196,"updatedAt":3318},"web-research","conduct and synthesize web research","Searches multiple web sources, synthesizes findings, and produces cited research reports using delegated subagents. Use when the user asks to research a topic online, search the web, look something up, find current information, compare options, or produce a research report.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[3314,3315,3316,3317],{"name":19,"slug":20,"type":14},{"name":3268,"slug":3269,"type":14},{"name":3187,"slug":3188,"type":14},{"name":3206,"slug":3207,"type":14},"2026-05-13T06:11:04.930044",{"slug":3320,"name":3320,"fn":3321,"description":3322,"org":3323,"tags":3324,"stars":3335,"repoUrl":3336,"updatedAt":3337},"mermaid-diagrams","embed Mermaid diagrams in documentation","Embed Mermaid diagrams in generated wiki pages. Use whenever documenting a runtime or request flow, a call sequence, a state machine or lifecycle, a data model or entity relationships, or non-trivial control flow, since these are clearer as a diagram than as prose. Also use when an update run touches a page that already contains a mermaid fence, or a page that contains a text fence a previous run degraded.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[3325,3328,3329,3332],{"name":3326,"slug":3327,"type":14},"Diagrams","diagrams",{"name":3262,"slug":3263,"type":14},{"name":3330,"slug":3331,"type":14},"Markdown","markdown",{"name":3333,"slug":3334,"type":14},"Technical Writing","technical-writing",12181,"https:\u002F\u002Fgithub.com\u002Flangchain-ai\u002Fopenwiki","2026-07-24T06:09:01.089597",{"slug":3339,"name":3339,"fn":3340,"description":3341,"org":3342,"tags":3343,"stars":3335,"repoUrl":3336,"updatedAt":3350},"write-connector","implement OpenWiki source connectors","Add a new built-in OpenWiki source connector. Use when a user asks to create or implement an OpenWiki connector.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[3344,3347],{"name":3345,"slug":3346,"type":14},"API Development","api-development",{"name":3348,"slug":3349,"type":14},"Integrations","integrations","2026-07-18T05:48:23.961804",41,{"items":3353,"total":2183},[3354,3369,3376,3392,3403,3414,3428],{"slug":3355,"name":3355,"fn":3356,"description":3357,"org":3358,"tags":3359,"stars":24,"repoUrl":25,"updatedAt":3368},"deep-agents-core","build applications with LangChain Deep Agents","INVOKE THIS SKILL when building ANY Deep Agents application. Covers create_deep_agent(), harness architecture, SKILL.md format, and configuration options.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[3360,3361,3364,3365],{"name":19,"slug":20,"type":14},{"name":3362,"slug":3363,"type":14},"Architecture","architecture",{"name":9,"slug":8,"type":14},{"name":3366,"slug":3367,"type":14},"LLM","llm","2026-04-06T18:26:24.822592",{"slug":4,"name":4,"fn":5,"description":6,"org":3370,"tags":3371,"stars":24,"repoUrl":25,"updatedAt":26},{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[3372,3373,3374,3375],{"name":19,"slug":20,"type":14},{"name":9,"slug":8,"type":14},{"name":16,"slug":17,"type":14},{"name":22,"slug":23,"type":14},{"slug":3377,"name":3377,"fn":3378,"description":3379,"org":3380,"tags":3381,"stars":24,"repoUrl":25,"updatedAt":3391},"deep-agents-orchestration","orchestrate subagents and tasks in Deep Agents","INVOKE THIS SKILL when using subagents, task planning, or human approval in Deep Agents. Covers SubAgentMiddleware, TodoList for planning, and HITL interrupts.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[3382,3383,3386,3387,3388],{"name":19,"slug":20,"type":14},{"name":3384,"slug":3385,"type":14},"Approvals","approvals",{"name":9,"slug":8,"type":14},{"name":3268,"slug":3269,"type":14},{"name":3389,"slug":3390,"type":14},"Workflow Automation","workflow-automation","2026-04-06T18:26:32.280463",{"slug":3393,"name":3393,"fn":3394,"description":3395,"org":3396,"tags":3397,"stars":24,"repoUrl":25,"updatedAt":3402},"deepagents-python-quickstart","scaffold local Deep Agents","Scaffold a minimal local Deep Agent in Python by following the official quickstart, using provider-native web search instead of Tavily. Use when the user wants to quickly build or try a Deep Agent locally.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[3398,3399,3400],{"name":19,"slug":20,"type":14},{"name":9,"slug":8,"type":14},{"name":3401,"slug":235,"type":14},"Python","2026-07-24T06:09:00.291108",{"slug":3404,"name":3404,"fn":3405,"description":3406,"org":3407,"tags":3408,"stars":24,"repoUrl":25,"updatedAt":3413},"deepagents-typescript-quickstart","build Deep Agents in TypeScript","Scaffold a minimal local Deep Agent in TypeScript by following the official quickstart, using provider-native web search instead of Tavily. Use when the user wants to quickly build or try a Deep Agent locally.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[3409,3410,3411],{"name":19,"slug":20,"type":14},{"name":9,"slug":8,"type":14},{"name":3412,"slug":317,"type":14},"TypeScript","2026-07-24T06:09:00.673714",{"slug":3415,"name":3415,"fn":3416,"description":3417,"org":3418,"tags":3419,"stars":24,"repoUrl":25,"updatedAt":3427},"ecosystem-primer","select frameworks for LangChain and LangGraph agents","INVOKE FIRST for any LangChain \u002F LangGraph \u002F Deep Agents agent building project before consulting other skills or writing any agent code. Required starting point for up to date info on framework selection (LangChain vs LangGraph vs Deep Agents vs hybrid composition), agent patterns, install, environment setup, and which skill to load next.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[3420,3421,3424,3425,3426],{"name":19,"slug":20,"type":14},{"name":3422,"slug":3423,"type":14},"AI Infrastructure","ai-infrastructure",{"name":3362,"slug":3363,"type":14},{"name":9,"slug":8,"type":14},{"name":3265,"slug":3266,"type":14},"2026-07-24T05:42:48.348966",{"slug":3429,"name":3429,"fn":3430,"description":3431,"org":3432,"tags":3433,"stars":24,"repoUrl":25,"updatedAt":3445},"eval-engineering","create and audit Harbor agent evals","Iteratively inspect an agent repository and optional user-provided traces, interview the user, and create, run, and audit Harbor evals one at a time. Use for agent evals, Harbor tasks, benchmark cases, verifier design, or controlled agent environments.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[3434,3435,3438,3441,3442],{"name":19,"slug":20,"type":14},{"name":3436,"slug":3437,"type":14},"Code Analysis","code-analysis",{"name":3439,"slug":3440,"type":14},"Evals","evals",{"name":9,"slug":8,"type":14},{"name":3443,"slug":3444,"type":14},"Testing","testing","2026-07-31T05:53:29.552458"]