@mnemopay/sdk 0.1.0 → 0.3.0
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/LICENSE +21 -21
- package/README.md +193 -193
- package/dist/index.d.ts +73 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +332 -25
- package/dist/index.js.map +1 -1
- package/dist/langgraph/tools.d.ts.map +1 -1
- package/dist/langgraph/tools.js +13 -1
- package/dist/langgraph/tools.js.map +1 -1
- package/dist/mcp/server.d.ts +1 -0
- package/dist/mcp/server.d.ts.map +1 -1
- package/dist/mcp/server.js +59 -4
- package/dist/mcp/server.js.map +1 -1
- package/package.json +6 -4
package/LICENSE
CHANGED
|
@@ -1,21 +1,21 @@
|
|
|
1
|
-
MIT License
|
|
2
|
-
|
|
3
|
-
Copyright (c) 2026 J&B Enterprise LLC
|
|
4
|
-
|
|
5
|
-
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
-
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
-
in the Software without restriction, including without limitation the rights
|
|
8
|
-
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
-
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
-
furnished to do so, subject to the following conditions:
|
|
11
|
-
|
|
12
|
-
The above copyright notice and this permission notice shall be included in all
|
|
13
|
-
copies or substantial portions of the Software.
|
|
14
|
-
|
|
15
|
-
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
-
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
-
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
-
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
-
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
-
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
-
SOFTWARE.
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 J&B Enterprise LLC
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
package/README.md
CHANGED
|
@@ -1,193 +1,193 @@
|
|
|
1
|
-
# @mnemopay/sdk
|
|
2
|
-
|
|
3
|
-
**Give any AI agent memory and a wallet in 5 lines.**
|
|
4
|
-
|
|
5
|
-
MnemoPay unifies [Mnemosyne](https://github.com/t49qnsx7qt-kpanks/mnemosyne-engine) (cognitive memory) and [AgentPay](https://github.com/t49qnsx7qt-kpanks/agentpay-roa) (escrow economics) into a single SDK. The core innovation: **payment outcomes reinforce the memories that led to successful decisions**.
|
|
6
|
-
|
|
7
|
-
```typescript
|
|
8
|
-
import { MnemoPay } from "@mnemopay/sdk";
|
|
9
|
-
|
|
10
|
-
const agent = MnemoPay.quick("agent-001");
|
|
11
|
-
await agent.remember("User prefers TypeScript");
|
|
12
|
-
const memories = await agent.recall();
|
|
13
|
-
const tx = await agent.charge(5.00, "Built analytics dashboard");
|
|
14
|
-
await agent.settle(tx.id);
|
|
15
|
-
```
|
|
16
|
-
|
|
17
|
-
## Two Modes, One API
|
|
18
|
-
|
|
19
|
-
| Mode | Constructor | Dependencies | Persistence | Use Case |
|
|
20
|
-
|------|------------|-------------|-------------|----------|
|
|
21
|
-
| **Prototype** | `MnemoPay.quick("id")` | None | In-memory | Development, testing, demos |
|
|
22
|
-
| **Production** | `MnemoPay.create({...})` | Postgres + Redis | Durable | Deployed agents |
|
|
23
|
-
|
|
24
|
-
Switch by changing one line. No code rewrites.
|
|
25
|
-
|
|
26
|
-
## Install
|
|
27
|
-
|
|
28
|
-
```bash
|
|
29
|
-
npm install @mnemopay/sdk
|
|
30
|
-
```
|
|
31
|
-
|
|
32
|
-
Optional peer dependencies (install only what you use):
|
|
33
|
-
|
|
34
|
-
```bash
|
|
35
|
-
npm install openai # For OpenAI middleware
|
|
36
|
-
npm install @anthropic-ai/sdk # For Anthropic middleware
|
|
37
|
-
npm install @langchain/langgraph @langchain/core @langchain/openai # For LangGraph tools
|
|
38
|
-
```
|
|
39
|
-
|
|
40
|
-
## The Feedback Loop
|
|
41
|
-
|
|
42
|
-
This is the core differentiator — payment outcomes reinforce memories:
|
|
43
|
-
|
|
44
|
-
```
|
|
45
|
-
Agent recalls memories → Makes decision → Delivers value → Charges user
|
|
46
|
-
↓
|
|
47
|
-
Payment settles
|
|
48
|
-
↓
|
|
49
|
-
Memories accessed in the last hour get +0.05 importance
|
|
50
|
-
↓
|
|
51
|
-
Agent makes better decisions next time
|
|
52
|
-
```
|
|
53
|
-
|
|
54
|
-
Over time, memories that lead to successful transactions become dominant in recall, while memories associated with refunds decay faster.
|
|
55
|
-
|
|
56
|
-
## API Reference
|
|
57
|
-
|
|
58
|
-
### Memory Methods
|
|
59
|
-
|
|
60
|
-
| Method | Description |
|
|
61
|
-
|--------|-------------|
|
|
62
|
-
| `agent.remember(content, opts?)` | Store a memory. Auto-scored by importance if not specified. |
|
|
63
|
-
| `agent.recall(limit?)` | Recall top memories ranked by importance x recency x frequency. |
|
|
64
|
-
| `agent.forget(id)` | Delete a memory. |
|
|
65
|
-
| `agent.reinforce(id, boost?)` | Boost a memory's importance. |
|
|
66
|
-
| `agent.consolidate()` | Prune stale memories below score threshold. |
|
|
67
|
-
|
|
68
|
-
### Payment Methods
|
|
69
|
-
|
|
70
|
-
| Method | Description |
|
|
71
|
-
|--------|-------------|
|
|
72
|
-
| `agent.charge(amount, reason)` | Create an escrow transaction. Reputation-gated. |
|
|
73
|
-
| `agent.settle(txId)` | Finalize escrow. Moves funds, boosts reputation, reinforces memories. |
|
|
74
|
-
| `agent.refund(txId)` | Refund a transaction. Docks reputation by -0.05. |
|
|
75
|
-
| `agent.balance()` | Get wallet balance and reputation score. |
|
|
76
|
-
|
|
77
|
-
### Observability
|
|
78
|
-
|
|
79
|
-
| Method | Description |
|
|
80
|
-
|--------|-------------|
|
|
81
|
-
| `agent.profile()` | Full agent stats (reputation, wallet, memory count, tx count). |
|
|
82
|
-
| `agent.logs(limit?)` | Immutable audit trail of all actions. |
|
|
83
|
-
| `agent.history(limit?)` | Transaction history, most recent first. |
|
|
84
|
-
|
|
85
|
-
## Provider Middlewares
|
|
86
|
-
|
|
87
|
-
### OpenAI (invisible memory)
|
|
88
|
-
|
|
89
|
-
```typescript
|
|
90
|
-
import OpenAI from "openai";
|
|
91
|
-
import { MnemoPay } from "@mnemopay/sdk";
|
|
92
|
-
import { MnemoPayMiddleware } from "@mnemopay/sdk/middleware/openai";
|
|
93
|
-
|
|
94
|
-
const agent = MnemoPay.quick("assistant");
|
|
95
|
-
const ai = MnemoPayMiddleware.wrap(new OpenAI(), agent);
|
|
96
|
-
|
|
97
|
-
// Memory is now invisible — auto-injected and auto-stored
|
|
98
|
-
const res = await ai.chat.completions.create({
|
|
99
|
-
model: "gpt-4o",
|
|
100
|
-
messages: [{ role: "user", content: "What do you remember?" }],
|
|
101
|
-
});
|
|
102
|
-
```
|
|
103
|
-
|
|
104
|
-
### Anthropic (invisible memory)
|
|
105
|
-
|
|
106
|
-
```typescript
|
|
107
|
-
import Anthropic from "@anthropic-ai/sdk";
|
|
108
|
-
import { MnemoPay } from "@mnemopay/sdk";
|
|
109
|
-
import { AnthropicMiddleware } from "@mnemopay/sdk/middleware/anthropic";
|
|
110
|
-
|
|
111
|
-
const agent = MnemoPay.quick("claude-agent");
|
|
112
|
-
const ai = AnthropicMiddleware.wrap(new Anthropic(), agent);
|
|
113
|
-
```
|
|
114
|
-
|
|
115
|
-
## LangGraph Tools
|
|
116
|
-
|
|
117
|
-
```typescript
|
|
118
|
-
import { createReactAgent } from "@langchain/langgraph/prebuilt";
|
|
119
|
-
import { MnemoPay } from "@mnemopay/sdk";
|
|
120
|
-
import { mnemoTools, agentPayTools } from "@mnemopay/sdk/langgraph";
|
|
121
|
-
|
|
122
|
-
const agent = MnemoPay.quick("langgraph-agent");
|
|
123
|
-
const graph = createReactAgent({
|
|
124
|
-
llm,
|
|
125
|
-
tools: [...mnemoTools(agent), ...agentPayTools(agent)],
|
|
126
|
-
});
|
|
127
|
-
```
|
|
128
|
-
|
|
129
|
-
6 tools with full Zod schemas: `recall_memories`, `store_memory`, `reinforce_memory`, `charge_user`, `settle_payment`, `check_balance`.
|
|
130
|
-
|
|
131
|
-
## Agents Hiring Agents
|
|
132
|
-
|
|
133
|
-
```typescript
|
|
134
|
-
const manager = MnemoPay.quick("manager");
|
|
135
|
-
const coder = MnemoPay.quick("coder");
|
|
136
|
-
|
|
137
|
-
await manager.remember("coder delivered fast but had 2 bugs last time");
|
|
138
|
-
const memories = await manager.recall(); // Use memory to decide
|
|
139
|
-
|
|
140
|
-
const job = await manager.charge(5.00, "Code sorting algorithm");
|
|
141
|
-
await manager.settle(job.id);
|
|
142
|
-
await manager.remember("coder delivered clean code this time");
|
|
143
|
-
// Next round: manager makes better hiring decisions
|
|
144
|
-
```
|
|
145
|
-
|
|
146
|
-
## Production Mode
|
|
147
|
-
|
|
148
|
-
```bash
|
|
149
|
-
docker compose up -d # Starts Mnemosyne + AgentPay + Postgres + Redis
|
|
150
|
-
```
|
|
151
|
-
|
|
152
|
-
```typescript
|
|
153
|
-
const agent = MnemoPay.create({
|
|
154
|
-
agentId: "prod-agent",
|
|
155
|
-
mnemoUrl: "http://localhost:8100",
|
|
156
|
-
agentpayUrl: "http://localhost:3100",
|
|
157
|
-
debug: true,
|
|
158
|
-
});
|
|
159
|
-
|
|
160
|
-
// Same API — now backed by Hopfield networks, Bayesian trust, AIS fraud detection
|
|
161
|
-
await agent.remember("Production memory");
|
|
162
|
-
const tx = await agent.charge(10.00, "Premium service");
|
|
163
|
-
await agent.settle(tx.id);
|
|
164
|
-
```
|
|
165
|
-
|
|
166
|
-
## Architecture
|
|
167
|
-
|
|
168
|
-
```
|
|
169
|
-
Your code
|
|
170
|
-
↓
|
|
171
|
-
@mnemopay/sdk ←── Single import, 12 methods
|
|
172
|
-
↓ ↓
|
|
173
|
-
Mnemosyne API AgentPay API ←── Separate services (unchanged)
|
|
174
|
-
(12 models) (14 models)
|
|
175
|
-
↓ ↓
|
|
176
|
-
Redis Streams Bridge ←── Payment outcomes reinforce memories
|
|
177
|
-
```
|
|
178
|
-
|
|
179
|
-
The SDK is the developer-facing layer. The backends do the heavy lifting:
|
|
180
|
-
- **Mnemosyne**: Hopfield associative recall, FSRS spaced repetition, Merkle integrity, Dream consolidation
|
|
181
|
-
- **AgentPay**: Bayesian trust (Beta distributions), AIS fraud detection, behavioral economics, escrow
|
|
182
|
-
|
|
183
|
-
## Tests
|
|
184
|
-
|
|
185
|
-
```bash
|
|
186
|
-
npm test # 67 tests covering memory, payments, feedback loop, security, concurrency
|
|
187
|
-
```
|
|
188
|
-
|
|
189
|
-
## License
|
|
190
|
-
|
|
191
|
-
MIT
|
|
192
|
-
|
|
193
|
-
Built by [J&B Enterprise LLC](https://github.com/t49qnsx7qt-kpanks)
|
|
1
|
+
# @mnemopay/sdk
|
|
2
|
+
|
|
3
|
+
**Give any AI agent memory and a wallet in 5 lines.**
|
|
4
|
+
|
|
5
|
+
MnemoPay unifies [Mnemosyne](https://github.com/t49qnsx7qt-kpanks/mnemosyne-engine) (cognitive memory) and [AgentPay](https://github.com/t49qnsx7qt-kpanks/agentpay-roa) (escrow economics) into a single SDK. The core innovation: **payment outcomes reinforce the memories that led to successful decisions**.
|
|
6
|
+
|
|
7
|
+
```typescript
|
|
8
|
+
import { MnemoPay } from "@mnemopay/sdk";
|
|
9
|
+
|
|
10
|
+
const agent = MnemoPay.quick("agent-001");
|
|
11
|
+
await agent.remember("User prefers TypeScript");
|
|
12
|
+
const memories = await agent.recall();
|
|
13
|
+
const tx = await agent.charge(5.00, "Built analytics dashboard");
|
|
14
|
+
await agent.settle(tx.id);
|
|
15
|
+
```
|
|
16
|
+
|
|
17
|
+
## Two Modes, One API
|
|
18
|
+
|
|
19
|
+
| Mode | Constructor | Dependencies | Persistence | Use Case |
|
|
20
|
+
|------|------------|-------------|-------------|----------|
|
|
21
|
+
| **Prototype** | `MnemoPay.quick("id")` | None | In-memory | Development, testing, demos |
|
|
22
|
+
| **Production** | `MnemoPay.create({...})` | Postgres + Redis | Durable | Deployed agents |
|
|
23
|
+
|
|
24
|
+
Switch by changing one line. No code rewrites.
|
|
25
|
+
|
|
26
|
+
## Install
|
|
27
|
+
|
|
28
|
+
```bash
|
|
29
|
+
npm install @mnemopay/sdk
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
Optional peer dependencies (install only what you use):
|
|
33
|
+
|
|
34
|
+
```bash
|
|
35
|
+
npm install openai # For OpenAI middleware
|
|
36
|
+
npm install @anthropic-ai/sdk # For Anthropic middleware
|
|
37
|
+
npm install @langchain/langgraph @langchain/core @langchain/openai # For LangGraph tools
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
## The Feedback Loop
|
|
41
|
+
|
|
42
|
+
This is the core differentiator — payment outcomes reinforce memories:
|
|
43
|
+
|
|
44
|
+
```
|
|
45
|
+
Agent recalls memories → Makes decision → Delivers value → Charges user
|
|
46
|
+
↓
|
|
47
|
+
Payment settles
|
|
48
|
+
↓
|
|
49
|
+
Memories accessed in the last hour get +0.05 importance
|
|
50
|
+
↓
|
|
51
|
+
Agent makes better decisions next time
|
|
52
|
+
```
|
|
53
|
+
|
|
54
|
+
Over time, memories that lead to successful transactions become dominant in recall, while memories associated with refunds decay faster.
|
|
55
|
+
|
|
56
|
+
## API Reference
|
|
57
|
+
|
|
58
|
+
### Memory Methods
|
|
59
|
+
|
|
60
|
+
| Method | Description |
|
|
61
|
+
|--------|-------------|
|
|
62
|
+
| `agent.remember(content, opts?)` | Store a memory. Auto-scored by importance if not specified. |
|
|
63
|
+
| `agent.recall(limit?)` | Recall top memories ranked by importance x recency x frequency. |
|
|
64
|
+
| `agent.forget(id)` | Delete a memory. |
|
|
65
|
+
| `agent.reinforce(id, boost?)` | Boost a memory's importance. |
|
|
66
|
+
| `agent.consolidate()` | Prune stale memories below score threshold. |
|
|
67
|
+
|
|
68
|
+
### Payment Methods
|
|
69
|
+
|
|
70
|
+
| Method | Description |
|
|
71
|
+
|--------|-------------|
|
|
72
|
+
| `agent.charge(amount, reason)` | Create an escrow transaction. Reputation-gated. |
|
|
73
|
+
| `agent.settle(txId)` | Finalize escrow. Moves funds, boosts reputation, reinforces memories. |
|
|
74
|
+
| `agent.refund(txId)` | Refund a transaction. Docks reputation by -0.05. |
|
|
75
|
+
| `agent.balance()` | Get wallet balance and reputation score. |
|
|
76
|
+
|
|
77
|
+
### Observability
|
|
78
|
+
|
|
79
|
+
| Method | Description |
|
|
80
|
+
|--------|-------------|
|
|
81
|
+
| `agent.profile()` | Full agent stats (reputation, wallet, memory count, tx count). |
|
|
82
|
+
| `agent.logs(limit?)` | Immutable audit trail of all actions. |
|
|
83
|
+
| `agent.history(limit?)` | Transaction history, most recent first. |
|
|
84
|
+
|
|
85
|
+
## Provider Middlewares
|
|
86
|
+
|
|
87
|
+
### OpenAI (invisible memory)
|
|
88
|
+
|
|
89
|
+
```typescript
|
|
90
|
+
import OpenAI from "openai";
|
|
91
|
+
import { MnemoPay } from "@mnemopay/sdk";
|
|
92
|
+
import { MnemoPayMiddleware } from "@mnemopay/sdk/middleware/openai";
|
|
93
|
+
|
|
94
|
+
const agent = MnemoPay.quick("assistant");
|
|
95
|
+
const ai = MnemoPayMiddleware.wrap(new OpenAI(), agent);
|
|
96
|
+
|
|
97
|
+
// Memory is now invisible — auto-injected and auto-stored
|
|
98
|
+
const res = await ai.chat.completions.create({
|
|
99
|
+
model: "gpt-4o",
|
|
100
|
+
messages: [{ role: "user", content: "What do you remember?" }],
|
|
101
|
+
});
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
### Anthropic (invisible memory)
|
|
105
|
+
|
|
106
|
+
```typescript
|
|
107
|
+
import Anthropic from "@anthropic-ai/sdk";
|
|
108
|
+
import { MnemoPay } from "@mnemopay/sdk";
|
|
109
|
+
import { AnthropicMiddleware } from "@mnemopay/sdk/middleware/anthropic";
|
|
110
|
+
|
|
111
|
+
const agent = MnemoPay.quick("claude-agent");
|
|
112
|
+
const ai = AnthropicMiddleware.wrap(new Anthropic(), agent);
|
|
113
|
+
```
|
|
114
|
+
|
|
115
|
+
## LangGraph Tools
|
|
116
|
+
|
|
117
|
+
```typescript
|
|
118
|
+
import { createReactAgent } from "@langchain/langgraph/prebuilt";
|
|
119
|
+
import { MnemoPay } from "@mnemopay/sdk";
|
|
120
|
+
import { mnemoTools, agentPayTools } from "@mnemopay/sdk/langgraph";
|
|
121
|
+
|
|
122
|
+
const agent = MnemoPay.quick("langgraph-agent");
|
|
123
|
+
const graph = createReactAgent({
|
|
124
|
+
llm,
|
|
125
|
+
tools: [...mnemoTools(agent), ...agentPayTools(agent)],
|
|
126
|
+
});
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
6 tools with full Zod schemas: `recall_memories`, `store_memory`, `reinforce_memory`, `charge_user`, `settle_payment`, `check_balance`.
|
|
130
|
+
|
|
131
|
+
## Agents Hiring Agents
|
|
132
|
+
|
|
133
|
+
```typescript
|
|
134
|
+
const manager = MnemoPay.quick("manager");
|
|
135
|
+
const coder = MnemoPay.quick("coder");
|
|
136
|
+
|
|
137
|
+
await manager.remember("coder delivered fast but had 2 bugs last time");
|
|
138
|
+
const memories = await manager.recall(); // Use memory to decide
|
|
139
|
+
|
|
140
|
+
const job = await manager.charge(5.00, "Code sorting algorithm");
|
|
141
|
+
await manager.settle(job.id);
|
|
142
|
+
await manager.remember("coder delivered clean code this time");
|
|
143
|
+
// Next round: manager makes better hiring decisions
|
|
144
|
+
```
|
|
145
|
+
|
|
146
|
+
## Production Mode
|
|
147
|
+
|
|
148
|
+
```bash
|
|
149
|
+
docker compose up -d # Starts Mnemosyne + AgentPay + Postgres + Redis
|
|
150
|
+
```
|
|
151
|
+
|
|
152
|
+
```typescript
|
|
153
|
+
const agent = MnemoPay.create({
|
|
154
|
+
agentId: "prod-agent",
|
|
155
|
+
mnemoUrl: "http://localhost:8100",
|
|
156
|
+
agentpayUrl: "http://localhost:3100",
|
|
157
|
+
debug: true,
|
|
158
|
+
});
|
|
159
|
+
|
|
160
|
+
// Same API — now backed by Hopfield networks, Bayesian trust, AIS fraud detection
|
|
161
|
+
await agent.remember("Production memory");
|
|
162
|
+
const tx = await agent.charge(10.00, "Premium service");
|
|
163
|
+
await agent.settle(tx.id);
|
|
164
|
+
```
|
|
165
|
+
|
|
166
|
+
## Architecture
|
|
167
|
+
|
|
168
|
+
```
|
|
169
|
+
Your code
|
|
170
|
+
↓
|
|
171
|
+
@mnemopay/sdk ←── Single import, 12 methods
|
|
172
|
+
↓ ↓
|
|
173
|
+
Mnemosyne API AgentPay API ←── Separate services (unchanged)
|
|
174
|
+
(12 models) (14 models)
|
|
175
|
+
↓ ↓
|
|
176
|
+
Redis Streams Bridge ←── Payment outcomes reinforce memories
|
|
177
|
+
```
|
|
178
|
+
|
|
179
|
+
The SDK is the developer-facing layer. The backends do the heavy lifting:
|
|
180
|
+
- **Mnemosyne**: Hopfield associative recall, FSRS spaced repetition, Merkle integrity, Dream consolidation
|
|
181
|
+
- **AgentPay**: Bayesian trust (Beta distributions), AIS fraud detection, behavioral economics, escrow
|
|
182
|
+
|
|
183
|
+
## Tests
|
|
184
|
+
|
|
185
|
+
```bash
|
|
186
|
+
npm test # 67 tests covering memory, payments, feedback loop, security, concurrency
|
|
187
|
+
```
|
|
188
|
+
|
|
189
|
+
## License
|
|
190
|
+
|
|
191
|
+
MIT
|
|
192
|
+
|
|
193
|
+
Built by [J&B Enterprise LLC](https://github.com/t49qnsx7qt-kpanks)
|
package/dist/index.d.ts
CHANGED
|
@@ -9,8 +9,15 @@
|
|
|
9
9
|
* MnemoPay.quick("id") → zero infra, in-memory (dev/testing)
|
|
10
10
|
* MnemoPay.create({...}) → Postgres + Redis (production)
|
|
11
11
|
*/
|
|
12
|
-
import { EventEmitter } from "events";
|
|
13
12
|
import { type RecallStrategy, type EmbeddingProvider, type RecallEngineConfig } from "./recall/engine.js";
|
|
13
|
+
type Listener = (...args: any[]) => void;
|
|
14
|
+
declare class EventEmitter {
|
|
15
|
+
private _events;
|
|
16
|
+
on(event: string, fn: Listener): this;
|
|
17
|
+
emit(event: string, ...args: any[]): boolean;
|
|
18
|
+
removeListener(event: string, fn: Listener): this;
|
|
19
|
+
removeAllListeners(event?: string): this;
|
|
20
|
+
}
|
|
14
21
|
export interface MnemoPayConfig {
|
|
15
22
|
agentId: string;
|
|
16
23
|
/** Recall strategy: "score" (default), "vector", or "hybrid" */
|
|
@@ -82,6 +89,54 @@ export interface AuditEntry {
|
|
|
82
89
|
details: Record<string, unknown>;
|
|
83
90
|
createdAt: Date;
|
|
84
91
|
}
|
|
92
|
+
export interface ReputationReport {
|
|
93
|
+
agentId: string;
|
|
94
|
+
/** Overall reputation score 0-1 */
|
|
95
|
+
score: number;
|
|
96
|
+
/** Reputation tier: untrusted | newcomer | established | trusted | exemplary */
|
|
97
|
+
tier: "untrusted" | "newcomer" | "established" | "trusted" | "exemplary";
|
|
98
|
+
/** Total successful settlements */
|
|
99
|
+
settledCount: number;
|
|
100
|
+
/** Total refunds issued */
|
|
101
|
+
refundCount: number;
|
|
102
|
+
/** Settlement rate (settled / total completed) */
|
|
103
|
+
settlementRate: number;
|
|
104
|
+
/** Total value settled */
|
|
105
|
+
totalValueSettled: number;
|
|
106
|
+
/** Total memories stored */
|
|
107
|
+
memoriesCount: number;
|
|
108
|
+
/** Average memory importance */
|
|
109
|
+
avgMemoryImportance: number;
|
|
110
|
+
/** Account age in hours */
|
|
111
|
+
ageHours: number;
|
|
112
|
+
/** Generated at */
|
|
113
|
+
generatedAt: Date;
|
|
114
|
+
}
|
|
115
|
+
declare function reputationTier(score: number): ReputationReport["tier"];
|
|
116
|
+
export interface AgentCard {
|
|
117
|
+
name: string;
|
|
118
|
+
description: string;
|
|
119
|
+
url?: string;
|
|
120
|
+
version: string;
|
|
121
|
+
capabilities: {
|
|
122
|
+
memory: boolean;
|
|
123
|
+
payments: boolean;
|
|
124
|
+
reputation: boolean;
|
|
125
|
+
};
|
|
126
|
+
protocols: string[];
|
|
127
|
+
tools: string[];
|
|
128
|
+
contact?: string;
|
|
129
|
+
}
|
|
130
|
+
export interface X402Config {
|
|
131
|
+
/** x402 facilitator URL */
|
|
132
|
+
facilitatorUrl: string;
|
|
133
|
+
/** Payment token (e.g. "USDC") */
|
|
134
|
+
token?: string;
|
|
135
|
+
/** Chain (e.g. "base", "ethereum") */
|
|
136
|
+
chain?: string;
|
|
137
|
+
/** Agent wallet address */
|
|
138
|
+
walletAddress?: string;
|
|
139
|
+
}
|
|
85
140
|
declare function autoScore(content: string): number;
|
|
86
141
|
declare function computeScore(importance: number, lastAccessed: Date, accessCount: number, decay: number): number;
|
|
87
142
|
export declare class MnemoPayLite extends EventEmitter {
|
|
@@ -94,7 +149,14 @@ export declare class MnemoPayLite extends EventEmitter {
|
|
|
94
149
|
private _wallet;
|
|
95
150
|
private _reputation;
|
|
96
151
|
private recallEngine;
|
|
152
|
+
private _createdAt;
|
|
153
|
+
private x402?;
|
|
154
|
+
private persistPath?;
|
|
155
|
+
private persistTimer?;
|
|
97
156
|
constructor(agentId: string, decay?: number, debug?: boolean, recallConfig?: Partial<RecallEngineConfig>);
|
|
157
|
+
enablePersistence(dir: string): void;
|
|
158
|
+
private _loadFromDisk;
|
|
159
|
+
private _saveToDisk;
|
|
98
160
|
private log;
|
|
99
161
|
private audit;
|
|
100
162
|
remember(content: string, opts?: RememberOptions): Promise<string>;
|
|
@@ -110,6 +172,10 @@ export declare class MnemoPayLite extends EventEmitter {
|
|
|
110
172
|
profile(): Promise<AgentProfile>;
|
|
111
173
|
logs(limit?: number): Promise<AuditEntry[]>;
|
|
112
174
|
history(limit?: number): Promise<Transaction[]>;
|
|
175
|
+
reputation(): Promise<ReputationReport>;
|
|
176
|
+
agentCard(url?: string, contact?: string): AgentCard;
|
|
177
|
+
configureX402(config: X402Config): void;
|
|
178
|
+
settleViaX402(txId: string): Promise<Transaction>;
|
|
113
179
|
disconnect(): Promise<void>;
|
|
114
180
|
}
|
|
115
181
|
export declare class MnemoPay extends EventEmitter {
|
|
@@ -134,6 +200,11 @@ export declare class MnemoPay extends EventEmitter {
|
|
|
134
200
|
profile(): Promise<AgentProfile>;
|
|
135
201
|
logs(limit?: number): Promise<AuditEntry[]>;
|
|
136
202
|
history(limit?: number): Promise<Transaction[]>;
|
|
203
|
+
reputation(): Promise<ReputationReport>;
|
|
204
|
+
agentCard(url?: string, contact?: string): AgentCard;
|
|
205
|
+
private x402?;
|
|
206
|
+
configureX402(config: X402Config): void;
|
|
207
|
+
settleViaX402(txId: string): Promise<Transaction>;
|
|
137
208
|
disconnect(): Promise<void>;
|
|
138
209
|
/**
|
|
139
210
|
* Zero-infrastructure mode. In-memory, no database, no Redis.
|
|
@@ -155,7 +226,7 @@ export declare class MnemoPay extends EventEmitter {
|
|
|
155
226
|
static create(config: MnemoPayConfig): MnemoPay;
|
|
156
227
|
}
|
|
157
228
|
export default MnemoPay;
|
|
158
|
-
export { autoScore, computeScore };
|
|
229
|
+
export { autoScore, computeScore, reputationTier };
|
|
159
230
|
export { RecallEngine, cosineSimilarity, localEmbed, l2Normalize } from "./recall/engine.js";
|
|
160
231
|
export type { RecallStrategy, EmbeddingProvider, RecallEngineConfig, RecallResult } from "./recall/engine.js";
|
|
161
232
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|