@ferricstore/ferricstore 0.11.11 → 0.12.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +19 -1
- package/dist/durability-DlDCsdlo.d.cts +16 -0
- package/dist/durability-DplL0SbW.d.ts +16 -0
- package/dist/index.cjs +1 -1
- package/dist/index.cjs.map +1 -1
- package/dist/index.d.cts +5 -162
- package/dist/index.d.ts +5 -162
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/internal-lEEDZpPH.d.cts +4 -0
- package/dist/internal-lEEDZpPH.d.ts +4 -0
- package/dist/langgraph.cjs +1548 -0
- package/dist/langgraph.cjs.map +1 -0
- package/dist/langgraph.d.cts +158 -0
- package/dist/langgraph.d.ts +158 -0
- package/dist/langgraph.js +1522 -0
- package/dist/langgraph.js.map +1 -0
- package/dist/openai-agents.cjs +717 -0
- package/dist/openai-agents.cjs.map +1 -0
- package/dist/openai-agents.d.cts +50 -0
- package/dist/openai-agents.d.ts +50 -0
- package/dist/openai-agents.js +692 -0
- package/dist/openai-agents.js.map +1 -0
- package/dist/outcomes-BbFDp3AH.d.ts +160 -0
- package/dist/outcomes-DmBwnq0Y.d.cts +160 -0
- package/docs/agent-api/assets/hierarchy.js +1 -0
- package/docs/agent-api/assets/highlight.css +92 -0
- package/docs/agent-api/assets/icons.js +18 -0
- package/docs/agent-api/assets/icons.svg +1 -0
- package/docs/agent-api/assets/main.js +60 -0
- package/docs/agent-api/assets/navigation.js +1 -0
- package/docs/agent-api/assets/search.js +1 -0
- package/docs/agent-api/assets/style.css +1648 -0
- package/docs/agent-api/classes/langgraph.FerricStoreSaver.html +297 -0
- package/docs/agent-api/classes/langgraph.FerricStoreStore.html +298 -0
- package/docs/agent-api/classes/langgraph.LangGraphFlow.html +190 -0
- package/docs/agent-api/classes/langgraph.LangGraphFlowContext.html +158 -0
- package/docs/agent-api/classes/langgraph.LangGraphFlowRun.html +133 -0
- package/docs/agent-api/classes/openai-agents.FerricStoreSession.html +241 -0
- package/docs/agent-api/hierarchy.html +44 -0
- package/docs/agent-api/index.html +142 -0
- package/docs/agent-api/interfaces/langgraph.FerricFlowHandlerContext.html +94 -0
- package/docs/agent-api/interfaces/langgraph.FerricStoreCommandClient.html +77 -0
- package/docs/agent-api/interfaces/langgraph.FerricStoreLockOptions.html +81 -0
- package/docs/agent-api/interfaces/langgraph.FerricStoreSaverOptions.html +106 -0
- package/docs/agent-api/interfaces/langgraph.FerricStoreStoreOptions.html +98 -0
- package/docs/agent-api/interfaces/langgraph.InvokableLangGraph.html +83 -0
- package/docs/agent-api/interfaces/langgraph.LangGraphFlowOptions.html +116 -0
- package/docs/agent-api/interfaces/openai-agents.FerricStoreSessionOptions.html +114 -0
- package/docs/agent-api/interfaces/openai-agents.Session.html +208 -0
- package/docs/agent-api/interfaces/openai-agents.SessionHistoryRewriteAwareSession.html +230 -0
- package/docs/agent-api/interfaces/openai-agents.SessionHistoryTransactionAwareSession.html +237 -0
- package/docs/agent-api/modules/langgraph.html +44 -0
- package/docs/agent-api/modules/openai-agents.html +44 -0
- package/docs/agent-api/modules.html +35 -0
- package/docs/agent-api/types/langgraph.LangGraphChannelVersions.html +33 -0
- package/docs/agent-api/types/langgraph.LangGraphInvocationConfig.html +33 -0
- package/docs/agent-api/types/langgraph.LangGraphOutcomeMapper.html +50 -0
- package/docs/agent-api/types/langgraph.LangGraphPendingWrite.html +33 -0
- package/docs/agent-api/types/openai-agents.AgentInputItem.html +35 -0
- package/docs/agent-frameworks.md +176 -0
- package/docs/api/assets/highlight.css +12 -12
- package/docs/api/classes/ClaimHydrationError.html +2 -2
- package/docs/api/classes/ConnectionClosedError.html +2 -2
- package/docs/api/classes/FerricStoreError.html +2 -2
- package/docs/api/classes/FlowAlreadyExistsError.html +2 -2
- package/docs/api/classes/FlowBatchError.html +2 -2
- package/docs/api/classes/FlowNotFoundError.html +2 -2
- package/docs/api/classes/FlowQueryError.html +2 -2
- package/docs/api/classes/FlowWrongStateError.html +2 -2
- package/docs/api/classes/HTTPTransportError.html +2 -2
- package/docs/api/classes/InvalidCommandError.html +2 -2
- package/docs/api/classes/LeaseRenewalError.html +2 -2
- package/docs/api/classes/LockHeldError.html +2 -2
- package/docs/api/classes/LockNotOwnedError.html +2 -2
- package/docs/api/classes/OverloadedError.html +2 -2
- package/docs/api/classes/QueueCompletionError.html +2 -2
- package/docs/api/classes/RequestTimeoutError.html +2 -2
- package/docs/api/classes/RerouteError.html +2 -2
- package/docs/api/classes/StaleLeaseError.html +2 -2
- package/docs/api/classes/StalePolicyGenerationError.html +2 -2
- package/docs/api/index.html +37 -24
- package/docs/api/media/agent-frameworks.md +176 -0
- package/docs/api/media/langgraph.ts +23 -0
- package/docs/api/media/openai-agents-session.ts +13 -0
- package/docs/api/variables/FERRICSTORE_SDK_VERSION.html +1 -1
- package/package.json +43 -4
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
<!DOCTYPE html><html class="default" lang="en" data-base="../"><head><meta charset="utf-8"/><meta http-equiv="x-ua-compatible" content="IE=edge"/><title>LangGraphChannelVersions | @ferricstore/ferricstore</title><meta name="description" content="Documentation for @ferricstore/ferricstore"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="../assets/style.css"/><link rel="stylesheet" href="../assets/highlight.css"/><script defer src="../assets/main.js"></script><script async src="../assets/icons.js" id="tsd-icons-script"></script><script async src="../assets/search.js" id="tsd-search-script"></script><script async src="../assets/navigation.js" id="tsd-nav-script"></script><script async src="../assets/hierarchy.js" id="tsd-hierarchy-script"></script></head><body><script>document.documentElement.dataset.theme = localStorage.getItem("tsd-theme") || "os";document.body.style.display="none";setTimeout(() => window.app?app.showPage():document.body.style.removeProperty("display"),500)</script><header class="tsd-page-toolbar">
|
|
2
|
+
<div class="tsd-toolbar-contents container"><a href="../index.html" class="title">@ferricstore/ferricstore</a>
|
|
3
|
+
<div id="tsd-toolbar-links"></div><button id="tsd-search-trigger" class="tsd-widget" aria-label="Search"><svg width="16" height="16" viewBox="0 0 16 16" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-search"></use></svg></button><dialog id="tsd-search" aria-label="Search"><input role="combobox" id="tsd-search-input" aria-controls="tsd-search-results" aria-autocomplete="list" aria-expanded="true" autocapitalize="off" autocomplete="off" placeholder="Search the docs" maxLength="100"/>
|
|
4
|
+
<ul role="listbox" id="tsd-search-results"></ul>
|
|
5
|
+
<div id="tsd-search-status" aria-live="polite" aria-atomic="true">
|
|
6
|
+
<div>Preparing search index...</div></div></dialog><a href="#" class="tsd-widget menu" id="tsd-toolbar-menu-trigger" data-toggle="menu" aria-label="Menu"><svg width="16" height="16" viewBox="0 0 16 16" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-menu"></use></svg></a></div></header>
|
|
7
|
+
<div class="container container-main">
|
|
8
|
+
<div class="col-content">
|
|
9
|
+
<div class="tsd-page-title">
|
|
10
|
+
<ul class="tsd-breadcrumb" aria-label="Breadcrumb">
|
|
11
|
+
<li><a href="../modules/langgraph.html">langgraph</a></li>
|
|
12
|
+
<li><a href="" aria-current="page">LangGraphChannelVersions</a></li></ul>
|
|
13
|
+
<h1>Type Alias LangGraphChannelVersions</h1></div>
|
|
14
|
+
<div class="tsd-signature"><span class="tsd-kind-type-alias">LangGraphChannelVersions</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">Record</span><span class="tsd-signature-symbol"><</span><span class="tsd-signature-type">string</span><span class="tsd-signature-symbol">,</span> <span class="tsd-signature-type">string</span> <span class="tsd-signature-symbol">|</span> <span class="tsd-signature-type">number</span><span class="tsd-signature-symbol">></span></div><aside class="tsd-sources">
|
|
15
|
+
<ul>
|
|
16
|
+
<li>Defined in <a href="https://github.com/ferricstore/ferricstore-typescript/blob/main/src/langgraph/checkpoint.ts#L26">langgraph/checkpoint.ts:26</a></li></ul></aside></div>
|
|
17
|
+
<div class="col-sidebar">
|
|
18
|
+
<div class="page-menu">
|
|
19
|
+
<div class="tsd-navigation settings">
|
|
20
|
+
<details class="tsd-accordion"><summary class="tsd-accordion-summary"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-chevronDown"></use></svg>
|
|
21
|
+
<h3>Settings</h3></summary>
|
|
22
|
+
<div class="tsd-accordion-details">
|
|
23
|
+
<div class="tsd-filter-visibility"><span class="settings-label">Member Visibility</span>
|
|
24
|
+
<ul id="tsd-filter-options">
|
|
25
|
+
<li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-protected" name="protected"/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>Protected</span></label></li>
|
|
26
|
+
<li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-inherited" name="inherited" checked/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>Inherited</span></label></li>
|
|
27
|
+
<li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-external" name="external"/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>External</span></label></li></ul></div>
|
|
28
|
+
<div class="tsd-theme-toggle"><label class="settings-label" for="tsd-theme">Theme</label><select id="tsd-theme"><option value="os">OS</option><option value="light">Light</option><option value="dark">Dark</option></select></div></div></details></div></div>
|
|
29
|
+
<div class="site-menu">
|
|
30
|
+
<nav class="tsd-navigation"><a href="../modules.html">@ferricstore/ferricstore</a>
|
|
31
|
+
<ul class="tsd-small-nested-navigation" id="tsd-nav-container">
|
|
32
|
+
<li>Loading...</li></ul></nav></div></div></div><footer></footer>
|
|
33
|
+
<div class="overlay"></div></body></html>
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
<!DOCTYPE html><html class="default" lang="en" data-base="../"><head><meta charset="utf-8"/><meta http-equiv="x-ua-compatible" content="IE=edge"/><title>LangGraphInvocationConfig | @ferricstore/ferricstore</title><meta name="description" content="Documentation for @ferricstore/ferricstore"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="../assets/style.css"/><link rel="stylesheet" href="../assets/highlight.css"/><script defer src="../assets/main.js"></script><script async src="../assets/icons.js" id="tsd-icons-script"></script><script async src="../assets/search.js" id="tsd-search-script"></script><script async src="../assets/navigation.js" id="tsd-nav-script"></script><script async src="../assets/hierarchy.js" id="tsd-hierarchy-script"></script></head><body><script>document.documentElement.dataset.theme = localStorage.getItem("tsd-theme") || "os";document.body.style.display="none";setTimeout(() => window.app?app.showPage():document.body.style.removeProperty("display"),500)</script><header class="tsd-page-toolbar">
|
|
2
|
+
<div class="tsd-toolbar-contents container"><a href="../index.html" class="title">@ferricstore/ferricstore</a>
|
|
3
|
+
<div id="tsd-toolbar-links"></div><button id="tsd-search-trigger" class="tsd-widget" aria-label="Search"><svg width="16" height="16" viewBox="0 0 16 16" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-search"></use></svg></button><dialog id="tsd-search" aria-label="Search"><input role="combobox" id="tsd-search-input" aria-controls="tsd-search-results" aria-autocomplete="list" aria-expanded="true" autocapitalize="off" autocomplete="off" placeholder="Search the docs" maxLength="100"/>
|
|
4
|
+
<ul role="listbox" id="tsd-search-results"></ul>
|
|
5
|
+
<div id="tsd-search-status" aria-live="polite" aria-atomic="true">
|
|
6
|
+
<div>Preparing search index...</div></div></dialog><a href="#" class="tsd-widget menu" id="tsd-toolbar-menu-trigger" data-toggle="menu" aria-label="Menu"><svg width="16" height="16" viewBox="0 0 16 16" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-menu"></use></svg></a></div></header>
|
|
7
|
+
<div class="container container-main">
|
|
8
|
+
<div class="col-content">
|
|
9
|
+
<div class="tsd-page-title">
|
|
10
|
+
<ul class="tsd-breadcrumb" aria-label="Breadcrumb">
|
|
11
|
+
<li><a href="../modules/langgraph.html">langgraph</a></li>
|
|
12
|
+
<li><a href="" aria-current="page">LangGraphInvocationConfig</a></li></ul>
|
|
13
|
+
<h1>Type Alias LangGraphInvocationConfig</h1></div>
|
|
14
|
+
<div class="tsd-signature"><span class="tsd-kind-type-alias">LangGraphInvocationConfig</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">RunnableConfig</span> <span class="tsd-signature-symbol">&</span> <span class="tsd-signature-symbol">{</span> <span class="tsd-kind-property">context</span><span class="tsd-signature-symbol">?:</span> <span class="tsd-signature-type">unknown</span> <span class="tsd-signature-symbol">}</span> <span class="tsd-signature-symbol">&</span> <span class="tsd-signature-type">Record</span><span class="tsd-signature-symbol"><</span><br/> <span class="tsd-signature-type">string</span><span class="tsd-signature-symbol">,</span><br/> <span class="tsd-signature-type">unknown</span><span class="tsd-signature-symbol">,</span><br/><span class="tsd-signature-symbol">></span></div><aside class="tsd-sources">
|
|
15
|
+
<ul>
|
|
16
|
+
<li>Defined in <a href="https://github.com/ferricstore/ferricstore-typescript/blob/main/src/langgraph/flow.ts#L8">langgraph/flow.ts:8</a></li></ul></aside></div>
|
|
17
|
+
<div class="col-sidebar">
|
|
18
|
+
<div class="page-menu">
|
|
19
|
+
<div class="tsd-navigation settings">
|
|
20
|
+
<details class="tsd-accordion"><summary class="tsd-accordion-summary"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-chevronDown"></use></svg>
|
|
21
|
+
<h3>Settings</h3></summary>
|
|
22
|
+
<div class="tsd-accordion-details">
|
|
23
|
+
<div class="tsd-filter-visibility"><span class="settings-label">Member Visibility</span>
|
|
24
|
+
<ul id="tsd-filter-options">
|
|
25
|
+
<li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-protected" name="protected"/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>Protected</span></label></li>
|
|
26
|
+
<li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-inherited" name="inherited" checked/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>Inherited</span></label></li>
|
|
27
|
+
<li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-external" name="external"/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>External</span></label></li></ul></div>
|
|
28
|
+
<div class="tsd-theme-toggle"><label class="settings-label" for="tsd-theme">Theme</label><select id="tsd-theme"><option value="os">OS</option><option value="light">Light</option><option value="dark">Dark</option></select></div></div></details></div></div>
|
|
29
|
+
<div class="site-menu">
|
|
30
|
+
<nav class="tsd-navigation"><a href="../modules.html">@ferricstore/ferricstore</a>
|
|
31
|
+
<ul class="tsd-small-nested-navigation" id="tsd-nav-container">
|
|
32
|
+
<li>Loading...</li></ul></nav></div></div></div><footer></footer>
|
|
33
|
+
<div class="overlay"></div></body></html>
|
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
<!DOCTYPE html><html class="default" lang="en" data-base="../"><head><meta charset="utf-8"/><meta http-equiv="x-ua-compatible" content="IE=edge"/><title>LangGraphOutcomeMapper | @ferricstore/ferricstore</title><meta name="description" content="Documentation for @ferricstore/ferricstore"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="../assets/style.css"/><link rel="stylesheet" href="../assets/highlight.css"/><script defer src="../assets/main.js"></script><script async src="../assets/icons.js" id="tsd-icons-script"></script><script async src="../assets/search.js" id="tsd-search-script"></script><script async src="../assets/navigation.js" id="tsd-nav-script"></script><script async src="../assets/hierarchy.js" id="tsd-hierarchy-script"></script></head><body><script>document.documentElement.dataset.theme = localStorage.getItem("tsd-theme") || "os";document.body.style.display="none";setTimeout(() => window.app?app.showPage():document.body.style.removeProperty("display"),500)</script><header class="tsd-page-toolbar">
|
|
2
|
+
<div class="tsd-toolbar-contents container"><a href="../index.html" class="title">@ferricstore/ferricstore</a>
|
|
3
|
+
<div id="tsd-toolbar-links"></div><button id="tsd-search-trigger" class="tsd-widget" aria-label="Search"><svg width="16" height="16" viewBox="0 0 16 16" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-search"></use></svg></button><dialog id="tsd-search" aria-label="Search"><input role="combobox" id="tsd-search-input" aria-controls="tsd-search-results" aria-autocomplete="list" aria-expanded="true" autocapitalize="off" autocomplete="off" placeholder="Search the docs" maxLength="100"/>
|
|
4
|
+
<ul role="listbox" id="tsd-search-results"></ul>
|
|
5
|
+
<div id="tsd-search-status" aria-live="polite" aria-atomic="true">
|
|
6
|
+
<div>Preparing search index...</div></div></dialog><a href="#" class="tsd-widget menu" id="tsd-toolbar-menu-trigger" data-toggle="menu" aria-label="Menu"><svg width="16" height="16" viewBox="0 0 16 16" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-menu"></use></svg></a></div></header>
|
|
7
|
+
<div class="container container-main">
|
|
8
|
+
<div class="col-content">
|
|
9
|
+
<div class="tsd-page-title">
|
|
10
|
+
<ul class="tsd-breadcrumb" aria-label="Breadcrumb">
|
|
11
|
+
<li><a href="../modules/langgraph.html">langgraph</a></li>
|
|
12
|
+
<li><a href="" aria-current="page">LangGraphOutcomeMapper</a></li></ul>
|
|
13
|
+
<h1>Type Alias LangGraphOutcomeMapper<Output></h1></div>
|
|
14
|
+
<div class="tsd-signature"><span class="tsd-kind-type-alias">LangGraphOutcomeMapper</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-symbol">(</span><br/> <span class="tsd-kind-parameter">run</span><span class="tsd-signature-symbol">:</span> <a href="../classes/langgraph.LangGraphFlowRun.html" class="tsd-signature-type tsd-kind-class">LangGraphFlowRun</a><span class="tsd-signature-symbol"><</span><a class="tsd-signature-type tsd-kind-type-parameter" href="#output">Output</a><span class="tsd-signature-symbol">></span><span class="tsd-signature-symbol">,</span><br/> <span class="tsd-kind-parameter">flow</span><span class="tsd-signature-symbol">:</span> <a href="../interfaces/langgraph.FerricFlowHandlerContext.html" class="tsd-signature-type tsd-kind-interface">FerricFlowHandlerContext</a><span class="tsd-signature-symbol">,</span><br/><span class="tsd-signature-symbol">)</span> <span class="tsd-signature-symbol">=></span> <span class="tsd-signature-type">Outcome</span> <span class="tsd-signature-symbol">|</span> <span class="tsd-signature-type">Promise</span><span class="tsd-signature-symbol"><</span><span class="tsd-signature-type">Outcome</span><span class="tsd-signature-symbol">></span></div>
|
|
15
|
+
<section class="tsd-panel">
|
|
16
|
+
<h4>Type Parameters</h4>
|
|
17
|
+
<ul class="tsd-type-parameter-list">
|
|
18
|
+
<li><span id="output"><span class="tsd-kind-type-parameter">Output</span></span></li></ul></section>
|
|
19
|
+
<div class="tsd-type-declaration">
|
|
20
|
+
<h4>Type Declaration</h4>
|
|
21
|
+
<ul class="tsd-parameters">
|
|
22
|
+
<li class="tsd-parameter-signature">
|
|
23
|
+
<ul class="tsd-signatures">
|
|
24
|
+
<li class="tsd-signature" id="__type"><span class="tsd-signature-symbol">(</span><br/> <span class="tsd-kind-parameter">run</span><span class="tsd-signature-symbol">:</span> <a href="../classes/langgraph.LangGraphFlowRun.html" class="tsd-signature-type tsd-kind-class">LangGraphFlowRun</a><span class="tsd-signature-symbol"><</span><a class="tsd-signature-type tsd-kind-type-parameter" href="#output">Output</a><span class="tsd-signature-symbol">></span><span class="tsd-signature-symbol">,</span><br/> <span class="tsd-kind-parameter">flow</span><span class="tsd-signature-symbol">:</span> <a href="../interfaces/langgraph.FerricFlowHandlerContext.html" class="tsd-signature-type tsd-kind-interface">FerricFlowHandlerContext</a><span class="tsd-signature-symbol">,</span><br/><span class="tsd-signature-symbol">)</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">Outcome</span> <span class="tsd-signature-symbol">|</span> <span class="tsd-signature-type">Promise</span><span class="tsd-signature-symbol"><</span><span class="tsd-signature-type">Outcome</span><span class="tsd-signature-symbol">></span></li>
|
|
25
|
+
<li class="tsd-description">
|
|
26
|
+
<div class="tsd-parameters">
|
|
27
|
+
<h4 class="tsd-parameters-title">Parameters</h4>
|
|
28
|
+
<ul class="tsd-parameter-list">
|
|
29
|
+
<li><span><span class="tsd-kind-parameter">run</span>: <a href="../classes/langgraph.LangGraphFlowRun.html" class="tsd-signature-type tsd-kind-class">LangGraphFlowRun</a><span class="tsd-signature-symbol"><</span><a class="tsd-signature-type tsd-kind-type-parameter" href="#output">Output</a><span class="tsd-signature-symbol">></span></span></li>
|
|
30
|
+
<li><span><span class="tsd-kind-parameter">flow</span>: <a href="../interfaces/langgraph.FerricFlowHandlerContext.html" class="tsd-signature-type tsd-kind-interface">FerricFlowHandlerContext</a></span></li></ul></div>
|
|
31
|
+
<h4 class="tsd-returns-title">Returns <span class="tsd-signature-type">Outcome</span> <span class="tsd-signature-symbol">|</span> <span class="tsd-signature-type">Promise</span><span class="tsd-signature-symbol"><</span><span class="tsd-signature-type">Outcome</span><span class="tsd-signature-symbol">></span></h4></li></ul></li></ul></div><aside class="tsd-sources">
|
|
32
|
+
<ul>
|
|
33
|
+
<li>Defined in <a href="https://github.com/ferricstore/ferricstore-typescript/blob/main/src/langgraph/flow.ts#L68">langgraph/flow.ts:68</a></li></ul></aside></div>
|
|
34
|
+
<div class="col-sidebar">
|
|
35
|
+
<div class="page-menu">
|
|
36
|
+
<div class="tsd-navigation settings">
|
|
37
|
+
<details class="tsd-accordion"><summary class="tsd-accordion-summary"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-chevronDown"></use></svg>
|
|
38
|
+
<h3>Settings</h3></summary>
|
|
39
|
+
<div class="tsd-accordion-details">
|
|
40
|
+
<div class="tsd-filter-visibility"><span class="settings-label">Member Visibility</span>
|
|
41
|
+
<ul id="tsd-filter-options">
|
|
42
|
+
<li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-protected" name="protected"/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>Protected</span></label></li>
|
|
43
|
+
<li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-inherited" name="inherited" checked/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>Inherited</span></label></li>
|
|
44
|
+
<li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-external" name="external"/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>External</span></label></li></ul></div>
|
|
45
|
+
<div class="tsd-theme-toggle"><label class="settings-label" for="tsd-theme">Theme</label><select id="tsd-theme"><option value="os">OS</option><option value="light">Light</option><option value="dark">Dark</option></select></div></div></details></div></div>
|
|
46
|
+
<div class="site-menu">
|
|
47
|
+
<nav class="tsd-navigation"><a href="../modules.html">@ferricstore/ferricstore</a>
|
|
48
|
+
<ul class="tsd-small-nested-navigation" id="tsd-nav-container">
|
|
49
|
+
<li>Loading...</li></ul></nav></div></div></div><footer></footer>
|
|
50
|
+
<div class="overlay"></div></body></html>
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
<!DOCTYPE html><html class="default" lang="en" data-base="../"><head><meta charset="utf-8"/><meta http-equiv="x-ua-compatible" content="IE=edge"/><title>LangGraphPendingWrite | @ferricstore/ferricstore</title><meta name="description" content="Documentation for @ferricstore/ferricstore"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="../assets/style.css"/><link rel="stylesheet" href="../assets/highlight.css"/><script defer src="../assets/main.js"></script><script async src="../assets/icons.js" id="tsd-icons-script"></script><script async src="../assets/search.js" id="tsd-search-script"></script><script async src="../assets/navigation.js" id="tsd-nav-script"></script><script async src="../assets/hierarchy.js" id="tsd-hierarchy-script"></script></head><body><script>document.documentElement.dataset.theme = localStorage.getItem("tsd-theme") || "os";document.body.style.display="none";setTimeout(() => window.app?app.showPage():document.body.style.removeProperty("display"),500)</script><header class="tsd-page-toolbar">
|
|
2
|
+
<div class="tsd-toolbar-contents container"><a href="../index.html" class="title">@ferricstore/ferricstore</a>
|
|
3
|
+
<div id="tsd-toolbar-links"></div><button id="tsd-search-trigger" class="tsd-widget" aria-label="Search"><svg width="16" height="16" viewBox="0 0 16 16" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-search"></use></svg></button><dialog id="tsd-search" aria-label="Search"><input role="combobox" id="tsd-search-input" aria-controls="tsd-search-results" aria-autocomplete="list" aria-expanded="true" autocapitalize="off" autocomplete="off" placeholder="Search the docs" maxLength="100"/>
|
|
4
|
+
<ul role="listbox" id="tsd-search-results"></ul>
|
|
5
|
+
<div id="tsd-search-status" aria-live="polite" aria-atomic="true">
|
|
6
|
+
<div>Preparing search index...</div></div></dialog><a href="#" class="tsd-widget menu" id="tsd-toolbar-menu-trigger" data-toggle="menu" aria-label="Menu"><svg width="16" height="16" viewBox="0 0 16 16" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-menu"></use></svg></a></div></header>
|
|
7
|
+
<div class="container container-main">
|
|
8
|
+
<div class="col-content">
|
|
9
|
+
<div class="tsd-page-title">
|
|
10
|
+
<ul class="tsd-breadcrumb" aria-label="Breadcrumb">
|
|
11
|
+
<li><a href="../modules/langgraph.html">langgraph</a></li>
|
|
12
|
+
<li><a href="" aria-current="page">LangGraphPendingWrite</a></li></ul>
|
|
13
|
+
<h1>Type Alias LangGraphPendingWrite</h1></div>
|
|
14
|
+
<div class="tsd-signature"><span class="tsd-kind-type-alias">LangGraphPendingWrite</span><span class="tsd-signature-symbol">:</span> <span class="tsd-signature-symbol">[</span>channel<span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">string</span><span class="tsd-signature-symbol">,</span> value<span class="tsd-signature-symbol">:</span> <span class="tsd-signature-type">unknown</span><span class="tsd-signature-symbol">]</span></div><aside class="tsd-sources">
|
|
15
|
+
<ul>
|
|
16
|
+
<li>Defined in <a href="https://github.com/ferricstore/ferricstore-typescript/blob/main/src/langgraph/checkpoint.ts#L25">langgraph/checkpoint.ts:25</a></li></ul></aside></div>
|
|
17
|
+
<div class="col-sidebar">
|
|
18
|
+
<div class="page-menu">
|
|
19
|
+
<div class="tsd-navigation settings">
|
|
20
|
+
<details class="tsd-accordion"><summary class="tsd-accordion-summary"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-chevronDown"></use></svg>
|
|
21
|
+
<h3>Settings</h3></summary>
|
|
22
|
+
<div class="tsd-accordion-details">
|
|
23
|
+
<div class="tsd-filter-visibility"><span class="settings-label">Member Visibility</span>
|
|
24
|
+
<ul id="tsd-filter-options">
|
|
25
|
+
<li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-protected" name="protected"/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>Protected</span></label></li>
|
|
26
|
+
<li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-inherited" name="inherited" checked/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>Inherited</span></label></li>
|
|
27
|
+
<li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-external" name="external"/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>External</span></label></li></ul></div>
|
|
28
|
+
<div class="tsd-theme-toggle"><label class="settings-label" for="tsd-theme">Theme</label><select id="tsd-theme"><option value="os">OS</option><option value="light">Light</option><option value="dark">Dark</option></select></div></div></details></div></div>
|
|
29
|
+
<div class="site-menu">
|
|
30
|
+
<nav class="tsd-navigation"><a href="../modules.html">@ferricstore/ferricstore</a>
|
|
31
|
+
<ul class="tsd-small-nested-navigation" id="tsd-nav-container">
|
|
32
|
+
<li>Loading...</li></ul></nav></div></div></div><footer></footer>
|
|
33
|
+
<div class="overlay"></div></body></html>
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
<!DOCTYPE html><html class="default" lang="en" data-base="../"><head><meta charset="utf-8"/><meta http-equiv="x-ua-compatible" content="IE=edge"/><title>AgentInputItem | @ferricstore/ferricstore</title><meta name="description" content="Documentation for @ferricstore/ferricstore"/><meta name="viewport" content="width=device-width, initial-scale=1"/><link rel="stylesheet" href="../assets/style.css"/><link rel="stylesheet" href="../assets/highlight.css"/><script defer src="../assets/main.js"></script><script async src="../assets/icons.js" id="tsd-icons-script"></script><script async src="../assets/search.js" id="tsd-search-script"></script><script async src="../assets/navigation.js" id="tsd-nav-script"></script><script async src="../assets/hierarchy.js" id="tsd-hierarchy-script"></script></head><body><script>document.documentElement.dataset.theme = localStorage.getItem("tsd-theme") || "os";document.body.style.display="none";setTimeout(() => window.app?app.showPage():document.body.style.removeProperty("display"),500)</script><header class="tsd-page-toolbar">
|
|
2
|
+
<div class="tsd-toolbar-contents container"><a href="../index.html" class="title">@ferricstore/ferricstore</a>
|
|
3
|
+
<div id="tsd-toolbar-links"></div><button id="tsd-search-trigger" class="tsd-widget" aria-label="Search"><svg width="16" height="16" viewBox="0 0 16 16" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-search"></use></svg></button><dialog id="tsd-search" aria-label="Search"><input role="combobox" id="tsd-search-input" aria-controls="tsd-search-results" aria-autocomplete="list" aria-expanded="true" autocapitalize="off" autocomplete="off" placeholder="Search the docs" maxLength="100"/>
|
|
4
|
+
<ul role="listbox" id="tsd-search-results"></ul>
|
|
5
|
+
<div id="tsd-search-status" aria-live="polite" aria-atomic="true">
|
|
6
|
+
<div>Preparing search index...</div></div></dialog><a href="#" class="tsd-widget menu" id="tsd-toolbar-menu-trigger" data-toggle="menu" aria-label="Menu"><svg width="16" height="16" viewBox="0 0 16 16" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-menu"></use></svg></a></div></header>
|
|
7
|
+
<div class="container container-main">
|
|
8
|
+
<div class="col-content">
|
|
9
|
+
<div class="tsd-page-title">
|
|
10
|
+
<ul class="tsd-breadcrumb" aria-label="Breadcrumb">
|
|
11
|
+
<li><a href="../modules/openai-agents.html">openai-agents</a></li>
|
|
12
|
+
<li><a href="" aria-current="page">AgentInputItem</a></li></ul>
|
|
13
|
+
<h1>Type Alias AgentInputItem</h1></div>
|
|
14
|
+
<div class="tsd-signature"><span class="tsd-kind-type-alias">AgentInputItem</span><span class="tsd-signature-symbol">:</span><br/> <span class="tsd-signature-symbol">|</span> <span class="tsd-signature-type">UserMessageItem</span><br/> <span class="tsd-signature-symbol">|</span> <span class="tsd-signature-type">AssistantMessageItem</span><br/> <span class="tsd-signature-symbol">|</span> <span class="tsd-signature-type">SystemMessageItem</span><br/> <span class="tsd-signature-symbol">|</span> <span class="tsd-signature-type">ToolSearchCallItem</span><br/> <span class="tsd-signature-symbol">|</span> <span class="tsd-signature-type">ToolSearchOutputItem</span><br/> <span class="tsd-signature-symbol">|</span> <span class="tsd-signature-type">HostedToolCallItem</span><br/> <span class="tsd-signature-symbol">|</span> <span class="tsd-signature-type">ProgramCallItem</span><br/> <span class="tsd-signature-symbol">|</span> <span class="tsd-signature-type">ProgramCallResultItem</span><br/> <span class="tsd-signature-symbol">|</span> <span class="tsd-signature-type">FunctionCallItem</span><br/> <span class="tsd-signature-symbol">|</span> <span class="tsd-signature-type">ComputerUseCallItem</span><br/> <span class="tsd-signature-symbol">|</span> <span class="tsd-signature-type">ShellCallItem</span><br/> <span class="tsd-signature-symbol">|</span> <span class="tsd-signature-type">ApplyPatchCallItem</span><br/> <span class="tsd-signature-symbol">|</span> <span class="tsd-signature-type">FunctionCallResultItem</span><br/> <span class="tsd-signature-symbol">|</span> <span class="tsd-signature-type">ComputerCallResultItem</span><br/> <span class="tsd-signature-symbol">|</span> <span class="tsd-signature-type">ShellCallResultItem</span><br/> <span class="tsd-signature-symbol">|</span> <span class="tsd-signature-type">ApplyPatchCallResultItem</span><br/> <span class="tsd-signature-symbol">|</span> <span class="tsd-signature-type">ReasoningItem</span><br/> <span class="tsd-signature-symbol">|</span> <span class="tsd-signature-type">CompactionItem</span><br/> <span class="tsd-signature-symbol">|</span> <span class="tsd-signature-type">UnknownItem</span></div>
|
|
15
|
+
<div class="tsd-comment tsd-typography"><p>Agent input</p>
|
|
16
|
+
</div><aside class="tsd-sources">
|
|
17
|
+
<ul>
|
|
18
|
+
<li>Defined in <a href="https://github.com/ferricstore/ferricstore-typescript/blob/main/src/../node_modules/@openai/agents-core/dist/types/aliases.d.ts#L17">../node_modules/@openai/agents-core/dist/types/aliases.d.ts:17</a></li></ul></aside></div>
|
|
19
|
+
<div class="col-sidebar">
|
|
20
|
+
<div class="page-menu">
|
|
21
|
+
<div class="tsd-navigation settings">
|
|
22
|
+
<details class="tsd-accordion"><summary class="tsd-accordion-summary"><svg width="20" height="20" viewBox="0 0 24 24" fill="none" aria-hidden="true"><use href="../assets/icons.svg#icon-chevronDown"></use></svg>
|
|
23
|
+
<h3>Settings</h3></summary>
|
|
24
|
+
<div class="tsd-accordion-details">
|
|
25
|
+
<div class="tsd-filter-visibility"><span class="settings-label">Member Visibility</span>
|
|
26
|
+
<ul id="tsd-filter-options">
|
|
27
|
+
<li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-protected" name="protected"/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>Protected</span></label></li>
|
|
28
|
+
<li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-inherited" name="inherited" checked/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>Inherited</span></label></li>
|
|
29
|
+
<li class="tsd-filter-item"><label class="tsd-filter-input"><input type="checkbox" id="tsd-filter-external" name="external"/><svg width="32" height="32" viewBox="0 0 32 32" aria-hidden="true"><rect class="tsd-checkbox-background" width="30" height="30" x="1" y="1" rx="6" fill="none"></rect><path class="tsd-checkbox-checkmark" d="M8.35422 16.8214L13.2143 21.75L24.6458 10.25" stroke="none" stroke-width="3.5" stroke-linejoin="round" fill="none"></path></svg><span>External</span></label></li></ul></div>
|
|
30
|
+
<div class="tsd-theme-toggle"><label class="settings-label" for="tsd-theme">Theme</label><select id="tsd-theme"><option value="os">OS</option><option value="light">Light</option><option value="dark">Dark</option></select></div></div></details></div></div>
|
|
31
|
+
<div class="site-menu">
|
|
32
|
+
<nav class="tsd-navigation"><a href="../modules.html">@ferricstore/ferricstore</a>
|
|
33
|
+
<ul class="tsd-small-nested-navigation" id="tsd-nav-container">
|
|
34
|
+
<li>Loading...</li></ul></nav></div></div></div><footer></footer>
|
|
35
|
+
<div class="overlay"></div></body></html>
|
|
@@ -0,0 +1,176 @@
|
|
|
1
|
+
# Agent framework persistence
|
|
2
|
+
|
|
3
|
+
FerricStore's TypeScript package has optional adapters for LangGraph.js and the
|
|
4
|
+
OpenAI Agents SDK. They live in separate package entry points, so the base SDK
|
|
5
|
+
does not load either framework.
|
|
6
|
+
|
|
7
|
+
## Install
|
|
8
|
+
|
|
9
|
+
For LangGraph.js:
|
|
10
|
+
|
|
11
|
+
```bash
|
|
12
|
+
npm install @ferricstore/ferricstore @langchain/langgraph @langchain/core
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
For the OpenAI Agents SDK:
|
|
16
|
+
|
|
17
|
+
```bash
|
|
18
|
+
npm install @ferricstore/ferricstore @openai/agents
|
|
19
|
+
```
|
|
20
|
+
|
|
21
|
+
Both adapters accept the normal `FerricStoreClient`. Their serialization is
|
|
22
|
+
independent of the client's configured codec.
|
|
23
|
+
|
|
24
|
+
## LangGraph.js checkpoints
|
|
25
|
+
|
|
26
|
+
`FerricStoreSaver` implements LangGraph's `BaseCheckpointSaver` contract:
|
|
27
|
+
|
|
28
|
+
```ts
|
|
29
|
+
import { Annotation, END, START, StateGraph } from "@langchain/langgraph";
|
|
30
|
+
import { FerricStoreClient } from "@ferricstore/ferricstore";
|
|
31
|
+
import { FerricStoreSaver } from "@ferricstore/ferricstore/langgraph";
|
|
32
|
+
|
|
33
|
+
const client = await FerricStoreClient.fromUrl("ferric://127.0.0.1:6388");
|
|
34
|
+
const saver = new FerricStoreSaver(client);
|
|
35
|
+
|
|
36
|
+
const State = Annotation.Root({ count: Annotation<number>() });
|
|
37
|
+
const graph = new StateGraph(State)
|
|
38
|
+
.addNode("increment", ({ count }) => ({ count: count + 1 }))
|
|
39
|
+
.addEdge(START, "increment")
|
|
40
|
+
.addEdge("increment", END)
|
|
41
|
+
.compile({ checkpointer: saver });
|
|
42
|
+
|
|
43
|
+
await graph.invoke(
|
|
44
|
+
{ count: 0 },
|
|
45
|
+
{ configurable: { thread_id: "agent-42" } }
|
|
46
|
+
);
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
The saver supports named checkpoint namespaces, latest and exact reads,
|
|
50
|
+
ordered and filtered listing, parent chains, pending writes, retry-safe write
|
|
51
|
+
indexes, global listing, and complete thread deletion. It uses LangGraph's
|
|
52
|
+
serializer, so framework-specific values round-trip correctly.
|
|
53
|
+
|
|
54
|
+
Checkpoint mutations are serialized per thread with renewable,
|
|
55
|
+
ownership-checked locks. Indexes are published before the final checkpoint
|
|
56
|
+
record; readers validate each record and skip incomplete entries. This makes a
|
|
57
|
+
process failure during publication invisible and a retry safe.
|
|
58
|
+
|
|
59
|
+
## LangGraph.js long-term memory
|
|
60
|
+
|
|
61
|
+
`FerricStoreStore` implements `BaseStore`:
|
|
62
|
+
|
|
63
|
+
```ts
|
|
64
|
+
import { FerricStoreStore } from "@ferricstore/ferricstore/langgraph";
|
|
65
|
+
|
|
66
|
+
const store = new FerricStoreStore(client);
|
|
67
|
+
|
|
68
|
+
await store.put(["users", "u-42"], "preferences", {
|
|
69
|
+
language: "en",
|
|
70
|
+
notifications: true
|
|
71
|
+
});
|
|
72
|
+
|
|
73
|
+
const memories = await store.search(["users", "u-42"], {
|
|
74
|
+
filter: { notifications: true }
|
|
75
|
+
});
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
It supports hierarchical namespaces, atomic per-item mutation ordering,
|
|
79
|
+
batched operations, exact and comparison filters (`$eq`, `$ne`, `$gt`, `$gte`,
|
|
80
|
+
`$lt`, `$lte`, `$in`, `$nin`), ordered pagination, namespace listing, updates,
|
|
81
|
+
and deletion.
|
|
82
|
+
Semantic `query` search currently throws a clear error because no vector index
|
|
83
|
+
is configured; it never silently returns unranked data.
|
|
84
|
+
|
|
85
|
+
## Run LangGraph inside FerricFlow
|
|
86
|
+
|
|
87
|
+
The checkpointer makes graph steps resumable. `LangGraphFlow` adds the durable
|
|
88
|
+
outer lifecycle: leases and fencing, retries, scheduled work, signals,
|
|
89
|
+
approvals, workflow history, and terminal state.
|
|
90
|
+
|
|
91
|
+
```ts
|
|
92
|
+
import { LangGraphFlow } from "@ferricstore/ferricstore/langgraph";
|
|
93
|
+
|
|
94
|
+
const agentFlow = new LangGraphFlow(graph, {
|
|
95
|
+
interruptState: "waiting_for_approval"
|
|
96
|
+
});
|
|
97
|
+
|
|
98
|
+
workflow.state("running", agentFlow.handler.bind(agentFlow));
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
By default, the bridge derives a stable LangGraph `thread_id` from the Flow
|
|
102
|
+
type, partition, and ID. It sends the Flow payload on the first invocation and
|
|
103
|
+
uses `null` input when a checkpoint already exists. LangGraph runtime context
|
|
104
|
+
includes the active `WorkflowContext`. Completed graphs become `complete()`
|
|
105
|
+
outcomes; interrupts can transition to a chosen Flow state or use a custom
|
|
106
|
+
outcome mapper. Call `resume(flowContext, value)` from a handler to send a
|
|
107
|
+
LangGraph `Command({ resume: value })`.
|
|
108
|
+
|
|
109
|
+
Static `invokeOptions` and values returned by the `config` callback are merged,
|
|
110
|
+
including their nested `configurable` and `metadata` objects. Dynamic values
|
|
111
|
+
override static values; the bridge always owns `thread_id`, `checkpoint_ns`, and
|
|
112
|
+
the `ferricflow_*` metadata fields. An explicitly supplied runtime context is
|
|
113
|
+
preserved.
|
|
114
|
+
|
|
115
|
+
The graph checkpointer and FerricFlow solve different layers and are intended
|
|
116
|
+
to be used together:
|
|
117
|
+
|
|
118
|
+
```text
|
|
119
|
+
FerricFlow durable run lifecycle
|
|
120
|
+
↓
|
|
121
|
+
LangGraphFlow invocation bridge
|
|
122
|
+
↓
|
|
123
|
+
LangGraph graph + FerricStoreSaver
|
|
124
|
+
↓
|
|
125
|
+
FerricStore
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
## OpenAI Agents SDK Session
|
|
129
|
+
|
|
130
|
+
`FerricStoreSession` implements the base `Session` contract plus the optional
|
|
131
|
+
history rewrite and atomic transaction capabilities used by the current
|
|
132
|
+
OpenAI Agents SDK:
|
|
133
|
+
|
|
134
|
+
```ts
|
|
135
|
+
import { Agent, run } from "@openai/agents";
|
|
136
|
+
import { FerricStoreSession } from "@ferricstore/ferricstore/openai-agents";
|
|
137
|
+
|
|
138
|
+
const session = new FerricStoreSession(client, {
|
|
139
|
+
sessionId: "customer-42"
|
|
140
|
+
});
|
|
141
|
+
const agent = new Agent({ name: "Support", instructions: "Be helpful." });
|
|
142
|
+
|
|
143
|
+
await run(agent, "Where is my order?", { session });
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
The adapter provides chronological reads with tail limits, append, pop,
|
|
147
|
+
clear, compaction replacement, function-call history rewrites, and atomic
|
|
148
|
+
`append_items` / `replace_suffix` transactions. A transaction stores its
|
|
149
|
+
operation ID and history mutation in one atomic record. Repeating the same
|
|
150
|
+
operation is a no-op; reusing its ID for different content or replacing a
|
|
151
|
+
non-matching suffix fails without changing history. Versioned transaction
|
|
152
|
+
digests are deterministic across worker locales, while receipts created by the
|
|
153
|
+
original locale-ordered format remain valid during migration. When an existing
|
|
154
|
+
deployment also changes locale, pass its previous locale tags through
|
|
155
|
+
`legacyReceiptLocales` until its receipts have been replayed and upgraded.
|
|
156
|
+
|
|
157
|
+
All session mutations use a renewable FerricStore lock for contention control
|
|
158
|
+
and a native compare-and-swap commit for correctness. Reads see either the old
|
|
159
|
+
or new complete session record, never a partial history, and a writer whose
|
|
160
|
+
lock expires cannot overwrite a newer state. `clearSession()` also clears
|
|
161
|
+
transaction receipts. Session persistence stores conversation history; put the
|
|
162
|
+
overall agent run in FerricFlow when it also needs durable leases, retries,
|
|
163
|
+
timers, signals, or multi-step business state.
|
|
164
|
+
|
|
165
|
+
## Operational options
|
|
166
|
+
|
|
167
|
+
All three adapters accept `keyPrefix`, `lockTtlMs`, `lockWaitMs`, and
|
|
168
|
+
`lockRetryMs`. The saver and store also accept `scanCount`; the saver accepts a
|
|
169
|
+
custom LangGraph serializer. Defaults are suitable for ordinary use. Give
|
|
170
|
+
different applications or environments different prefixes when they share a
|
|
171
|
+
FerricStore deployment. `lockRetryMs` must be lower than `lockTtlMs`. Before
|
|
172
|
+
publishing authoritative state, the adapters use FerricStore CAS. LangGraph
|
|
173
|
+
checkpoint deletion advances a thread epoch, and BaseStore deletion writes a
|
|
174
|
+
CAS tombstone; their discovery indexes are append-only and validated on reads.
|
|
175
|
+
These rules make late commands from expired writers harmless even across
|
|
176
|
+
processes.
|
|
@@ -5,18 +5,18 @@
|
|
|
5
5
|
--dark-hl-1: #D4D4D4;
|
|
6
6
|
--light-hl-2: #A31515;
|
|
7
7
|
--dark-hl-2: #CE9178;
|
|
8
|
-
--light-hl-3: #
|
|
9
|
-
--dark-hl-3: #
|
|
10
|
-
--light-hl-4: #
|
|
11
|
-
--dark-hl-4: #
|
|
12
|
-
--light-hl-5: #
|
|
13
|
-
--dark-hl-5: #
|
|
14
|
-
--light-hl-6: #
|
|
15
|
-
--dark-hl-6: #
|
|
16
|
-
--light-hl-7: #
|
|
17
|
-
--dark-hl-7: #
|
|
18
|
-
--light-hl-8: #
|
|
19
|
-
--dark-hl-8: #
|
|
8
|
+
--light-hl-3: #008000;
|
|
9
|
+
--dark-hl-3: #6A9955;
|
|
10
|
+
--light-hl-4: #AF00DB;
|
|
11
|
+
--dark-hl-4: #C586C0;
|
|
12
|
+
--light-hl-5: #001080;
|
|
13
|
+
--dark-hl-5: #9CDCFE;
|
|
14
|
+
--light-hl-6: #0000FF;
|
|
15
|
+
--dark-hl-6: #569CD6;
|
|
16
|
+
--light-hl-7: #0070C1;
|
|
17
|
+
--dark-hl-7: #4FC1FF;
|
|
18
|
+
--light-hl-8: #EE0000;
|
|
19
|
+
--dark-hl-8: #D7BA7D;
|
|
20
20
|
--light-hl-9: #098658;
|
|
21
21
|
--dark-hl-9: #B5CEA8;
|
|
22
22
|
--light-hl-10: #267F99;
|
|
@@ -166,7 +166,7 @@ not capture any frames.</p>
|
|
|
166
166
|
<div class="tsd-comment tsd-typography"><p>Creates a <code>.stack</code> property on <code>targetObject</code>, which when accessed returns
|
|
167
167
|
a string representing the location in the code at which
|
|
168
168
|
<code>Error.captureStackTrace()</code> was called.</p>
|
|
169
|
-
<pre><code class="js"><span class="hl-
|
|
169
|
+
<pre><code class="js"><span class="hl-6">const</span><span class="hl-1"> </span><span class="hl-7">myObject</span><span class="hl-1"> = {};</span><br/><span class="hl-5">Error</span><span class="hl-1">.</span><span class="hl-0">captureStackTrace</span><span class="hl-1">(</span><span class="hl-5">myObject</span><span class="hl-1">);</span><br/><span class="hl-5">myObject</span><span class="hl-1">.</span><span class="hl-5">stack</span><span class="hl-1">; </span><span class="hl-3">// Similar to `new Error().stack`</span>
|
|
170
170
|
</code><button type="button">Copy</button></pre>
|
|
171
171
|
|
|
172
172
|
<p>The first line of the trace will be prefixed with
|
|
@@ -176,7 +176,7 @@ above <code>constructorOpt</code>, including <code>constructorOpt</code>, will b
|
|
|
176
176
|
generated stack trace.</p>
|
|
177
177
|
<p>The <code>constructorOpt</code> argument is useful for hiding implementation
|
|
178
178
|
details of error generation from the user. For instance:</p>
|
|
179
|
-
<pre><code class="js"><span class="hl-
|
|
179
|
+
<pre><code class="js"><span class="hl-6">function</span><span class="hl-1"> </span><span class="hl-0">a</span><span class="hl-1">() {</span><br/><span class="hl-1"> </span><span class="hl-0">b</span><span class="hl-1">();</span><br/><span class="hl-1">}</span><br/><br/><span class="hl-6">function</span><span class="hl-1"> </span><span class="hl-0">b</span><span class="hl-1">() {</span><br/><span class="hl-1"> </span><span class="hl-0">c</span><span class="hl-1">();</span><br/><span class="hl-1">}</span><br/><br/><span class="hl-6">function</span><span class="hl-1"> </span><span class="hl-0">c</span><span class="hl-1">() {</span><br/><span class="hl-1"> </span><span class="hl-3">// Create an error without stack trace to avoid calculating the stack trace twice.</span><br/><span class="hl-1"> </span><span class="hl-6">const</span><span class="hl-1"> { </span><span class="hl-7">stackTraceLimit</span><span class="hl-1"> } = </span><span class="hl-5">Error</span><span class="hl-1">;</span><br/><span class="hl-1"> </span><span class="hl-5">Error</span><span class="hl-1">.</span><span class="hl-5">stackTraceLimit</span><span class="hl-1"> = </span><span class="hl-9">0</span><span class="hl-1">;</span><br/><span class="hl-1"> </span><span class="hl-6">const</span><span class="hl-1"> </span><span class="hl-7">error</span><span class="hl-1"> = </span><span class="hl-6">new</span><span class="hl-1"> </span><span class="hl-0">Error</span><span class="hl-1">();</span><br/><span class="hl-1"> </span><span class="hl-5">Error</span><span class="hl-1">.</span><span class="hl-5">stackTraceLimit</span><span class="hl-1"> = </span><span class="hl-5">stackTraceLimit</span><span class="hl-1">;</span><br/><br/><span class="hl-1"> </span><span class="hl-3">// Capture the stack trace above function b</span><br/><span class="hl-1"> </span><span class="hl-5">Error</span><span class="hl-1">.</span><span class="hl-0">captureStackTrace</span><span class="hl-1">(</span><span class="hl-5">error</span><span class="hl-1">, </span><span class="hl-5">b</span><span class="hl-1">); </span><span class="hl-3">// Neither function c, nor b is included in the stack trace</span><br/><span class="hl-1"> </span><span class="hl-4">throw</span><span class="hl-1"> </span><span class="hl-5">error</span><span class="hl-1">;</span><br/><span class="hl-1">}</span><br/><br/><span class="hl-0">a</span><span class="hl-1">();</span>
|
|
180
180
|
</code><button type="button">Copy</button></pre>
|
|
181
181
|
|
|
182
182
|
</div>
|
|
@@ -155,7 +155,7 @@ not capture any frames.</p>
|
|
|
155
155
|
<div class="tsd-comment tsd-typography"><p>Creates a <code>.stack</code> property on <code>targetObject</code>, which when accessed returns
|
|
156
156
|
a string representing the location in the code at which
|
|
157
157
|
<code>Error.captureStackTrace()</code> was called.</p>
|
|
158
|
-
<pre><code class="js"><span class="hl-
|
|
158
|
+
<pre><code class="js"><span class="hl-6">const</span><span class="hl-1"> </span><span class="hl-7">myObject</span><span class="hl-1"> = {};</span><br/><span class="hl-5">Error</span><span class="hl-1">.</span><span class="hl-0">captureStackTrace</span><span class="hl-1">(</span><span class="hl-5">myObject</span><span class="hl-1">);</span><br/><span class="hl-5">myObject</span><span class="hl-1">.</span><span class="hl-5">stack</span><span class="hl-1">; </span><span class="hl-3">// Similar to `new Error().stack`</span>
|
|
159
159
|
</code><button type="button">Copy</button></pre>
|
|
160
160
|
|
|
161
161
|
<p>The first line of the trace will be prefixed with
|
|
@@ -165,7 +165,7 @@ above <code>constructorOpt</code>, including <code>constructorOpt</code>, will b
|
|
|
165
165
|
generated stack trace.</p>
|
|
166
166
|
<p>The <code>constructorOpt</code> argument is useful for hiding implementation
|
|
167
167
|
details of error generation from the user. For instance:</p>
|
|
168
|
-
<pre><code class="js"><span class="hl-
|
|
168
|
+
<pre><code class="js"><span class="hl-6">function</span><span class="hl-1"> </span><span class="hl-0">a</span><span class="hl-1">() {</span><br/><span class="hl-1"> </span><span class="hl-0">b</span><span class="hl-1">();</span><br/><span class="hl-1">}</span><br/><br/><span class="hl-6">function</span><span class="hl-1"> </span><span class="hl-0">b</span><span class="hl-1">() {</span><br/><span class="hl-1"> </span><span class="hl-0">c</span><span class="hl-1">();</span><br/><span class="hl-1">}</span><br/><br/><span class="hl-6">function</span><span class="hl-1"> </span><span class="hl-0">c</span><span class="hl-1">() {</span><br/><span class="hl-1"> </span><span class="hl-3">// Create an error without stack trace to avoid calculating the stack trace twice.</span><br/><span class="hl-1"> </span><span class="hl-6">const</span><span class="hl-1"> { </span><span class="hl-7">stackTraceLimit</span><span class="hl-1"> } = </span><span class="hl-5">Error</span><span class="hl-1">;</span><br/><span class="hl-1"> </span><span class="hl-5">Error</span><span class="hl-1">.</span><span class="hl-5">stackTraceLimit</span><span class="hl-1"> = </span><span class="hl-9">0</span><span class="hl-1">;</span><br/><span class="hl-1"> </span><span class="hl-6">const</span><span class="hl-1"> </span><span class="hl-7">error</span><span class="hl-1"> = </span><span class="hl-6">new</span><span class="hl-1"> </span><span class="hl-0">Error</span><span class="hl-1">();</span><br/><span class="hl-1"> </span><span class="hl-5">Error</span><span class="hl-1">.</span><span class="hl-5">stackTraceLimit</span><span class="hl-1"> = </span><span class="hl-5">stackTraceLimit</span><span class="hl-1">;</span><br/><br/><span class="hl-1"> </span><span class="hl-3">// Capture the stack trace above function b</span><br/><span class="hl-1"> </span><span class="hl-5">Error</span><span class="hl-1">.</span><span class="hl-0">captureStackTrace</span><span class="hl-1">(</span><span class="hl-5">error</span><span class="hl-1">, </span><span class="hl-5">b</span><span class="hl-1">); </span><span class="hl-3">// Neither function c, nor b is included in the stack trace</span><br/><span class="hl-1"> </span><span class="hl-4">throw</span><span class="hl-1"> </span><span class="hl-5">error</span><span class="hl-1">;</span><br/><span class="hl-1">}</span><br/><br/><span class="hl-0">a</span><span class="hl-1">();</span>
|
|
169
169
|
</code><button type="button">Copy</button></pre>
|
|
170
170
|
|
|
171
171
|
</div>
|
|
@@ -158,7 +158,7 @@ not capture any frames.</p>
|
|
|
158
158
|
<div class="tsd-comment tsd-typography"><p>Creates a <code>.stack</code> property on <code>targetObject</code>, which when accessed returns
|
|
159
159
|
a string representing the location in the code at which
|
|
160
160
|
<code>Error.captureStackTrace()</code> was called.</p>
|
|
161
|
-
<pre><code class="js"><span class="hl-
|
|
161
|
+
<pre><code class="js"><span class="hl-6">const</span><span class="hl-1"> </span><span class="hl-7">myObject</span><span class="hl-1"> = {};</span><br/><span class="hl-5">Error</span><span class="hl-1">.</span><span class="hl-0">captureStackTrace</span><span class="hl-1">(</span><span class="hl-5">myObject</span><span class="hl-1">);</span><br/><span class="hl-5">myObject</span><span class="hl-1">.</span><span class="hl-5">stack</span><span class="hl-1">; </span><span class="hl-3">// Similar to `new Error().stack`</span>
|
|
162
162
|
</code><button type="button">Copy</button></pre>
|
|
163
163
|
|
|
164
164
|
<p>The first line of the trace will be prefixed with
|
|
@@ -168,7 +168,7 @@ above <code>constructorOpt</code>, including <code>constructorOpt</code>, will b
|
|
|
168
168
|
generated stack trace.</p>
|
|
169
169
|
<p>The <code>constructorOpt</code> argument is useful for hiding implementation
|
|
170
170
|
details of error generation from the user. For instance:</p>
|
|
171
|
-
<pre><code class="js"><span class="hl-
|
|
171
|
+
<pre><code class="js"><span class="hl-6">function</span><span class="hl-1"> </span><span class="hl-0">a</span><span class="hl-1">() {</span><br/><span class="hl-1"> </span><span class="hl-0">b</span><span class="hl-1">();</span><br/><span class="hl-1">}</span><br/><br/><span class="hl-6">function</span><span class="hl-1"> </span><span class="hl-0">b</span><span class="hl-1">() {</span><br/><span class="hl-1"> </span><span class="hl-0">c</span><span class="hl-1">();</span><br/><span class="hl-1">}</span><br/><br/><span class="hl-6">function</span><span class="hl-1"> </span><span class="hl-0">c</span><span class="hl-1">() {</span><br/><span class="hl-1"> </span><span class="hl-3">// Create an error without stack trace to avoid calculating the stack trace twice.</span><br/><span class="hl-1"> </span><span class="hl-6">const</span><span class="hl-1"> { </span><span class="hl-7">stackTraceLimit</span><span class="hl-1"> } = </span><span class="hl-5">Error</span><span class="hl-1">;</span><br/><span class="hl-1"> </span><span class="hl-5">Error</span><span class="hl-1">.</span><span class="hl-5">stackTraceLimit</span><span class="hl-1"> = </span><span class="hl-9">0</span><span class="hl-1">;</span><br/><span class="hl-1"> </span><span class="hl-6">const</span><span class="hl-1"> </span><span class="hl-7">error</span><span class="hl-1"> = </span><span class="hl-6">new</span><span class="hl-1"> </span><span class="hl-0">Error</span><span class="hl-1">();</span><br/><span class="hl-1"> </span><span class="hl-5">Error</span><span class="hl-1">.</span><span class="hl-5">stackTraceLimit</span><span class="hl-1"> = </span><span class="hl-5">stackTraceLimit</span><span class="hl-1">;</span><br/><br/><span class="hl-1"> </span><span class="hl-3">// Capture the stack trace above function b</span><br/><span class="hl-1"> </span><span class="hl-5">Error</span><span class="hl-1">.</span><span class="hl-0">captureStackTrace</span><span class="hl-1">(</span><span class="hl-5">error</span><span class="hl-1">, </span><span class="hl-5">b</span><span class="hl-1">); </span><span class="hl-3">// Neither function c, nor b is included in the stack trace</span><br/><span class="hl-1"> </span><span class="hl-4">throw</span><span class="hl-1"> </span><span class="hl-5">error</span><span class="hl-1">;</span><br/><span class="hl-1">}</span><br/><br/><span class="hl-0">a</span><span class="hl-1">();</span>
|
|
172
172
|
</code><button type="button">Copy</button></pre>
|
|
173
173
|
|
|
174
174
|
</div>
|