effectfence
Advanced tools
+2
-2
| { | ||
| "name": "effectfence", | ||
| "version": "0.1.6", | ||
| "description": "MCP server that stops agents double-firing side effects. 1,000 racing duplicates, exactly one execution. No Rust toolchain required.", | ||
| "version": "0.1.7", | ||
| "description": "MCP server that stops agents double-firing side effects within one process. 1,000 racing duplicates, exactly one execution. In-memory and single-process by design \u2014 see Scope. No Rust toolchain required.", | ||
| "keywords": [ | ||
@@ -6,0 +6,0 @@ "mcp", |
+26
-0
@@ -40,2 +40,28 @@ # effectfence | ||
| ## Scope — read this before you rely on it | ||
| **This is an in-memory, single-process fence. Its state lives in this server | ||
| process and is lost when the process restarts.** | ||
| That is enough to close races and duplicates between concurrent threads, tasks | ||
| and agents that share **one** running server. It is not enough for: | ||
| - **Two instances of this server.** Each has its own state, so the same intent | ||
| can execute once per instance. A horizontally scaled or load-balanced | ||
| deployment does not get exactly-once from this package. | ||
| - **A restart mid-flight.** State is not persisted. An intent admitted before a | ||
| restart is unknown to the process that comes back. | ||
| - **An agent that bypasses the fence.** It protects effects routed *through* it; | ||
| it cannot stop a caller that holds the credential and calls the provider | ||
| directly. Deploy it at the one choke point your agents actually share. | ||
| If you need the guarantee to survive a restart or span processes, you need a | ||
| shared store behind it — see [`once-kernel`](https://www.npmjs.com/package/once-kernel) | ||
| (Python, Postgres-backed, heartbeat leases and fence tokens) or | ||
| [`seal`](https://github.com/aurumflux20/seal), which does cross-process | ||
| admission and confirms the result against the payment provider's own records. | ||
| We state this here rather than only in the source repo because the limit is the | ||
| part you need *before* you deploy, not after. | ||
| ## Platforms | ||
@@ -42,0 +68,0 @@ |
-21
| MIT License | ||
| Copyright (c) 2026 aurumflux20 | ||
| Permission is hereby granted, free of charge, to any person obtaining a copy | ||
| of this software and associated documentation files (the "Software"), to deal | ||
| in the Software without restriction, including without limitation the rights | ||
| to use, copy, modify, merge, publish, distribute, sublicense, and/or sell | ||
| copies of the Software, and to permit persons to whom the Software is | ||
| furnished to do so, subject to the following conditions: | ||
| The above copyright notice and this permission notice shall be included in all | ||
| copies or substantial portions of the Software. | ||
| THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR | ||
| IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, | ||
| FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE | ||
| AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER | ||
| LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, | ||
| OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE | ||
| SOFTWARE. |
Sorry, the diff of this file is not supported yet
26625587
0112
30.23%7
-12.5%