@mnemopay/sdk 0.1.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 ADDED
@@ -0,0 +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.
package/README.md ADDED
@@ -0,0 +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)
@@ -0,0 +1,161 @@
1
+ /**
2
+ * @mnemopay/sdk — Give any AI agent memory and a wallet in 5 lines.
3
+ *
4
+ * MnemoPay unifies Mnemosyne (cognitive memory) and AgentPay (escrow economics)
5
+ * into a single SDK. The core innovation: payment outcomes reinforce the memories
6
+ * that led to successful decisions.
7
+ *
8
+ * Two modes, identical API:
9
+ * MnemoPay.quick("id") → zero infra, in-memory (dev/testing)
10
+ * MnemoPay.create({...}) → Postgres + Redis (production)
11
+ */
12
+ import { EventEmitter } from "events";
13
+ import { type RecallStrategy, type EmbeddingProvider, type RecallEngineConfig } from "./recall/engine.js";
14
+ export interface MnemoPayConfig {
15
+ agentId: string;
16
+ /** Recall strategy: "score" (default), "vector", or "hybrid" */
17
+ recall?: RecallStrategy;
18
+ /** Embedding provider for vector/hybrid: "openai" or "local" (default) */
19
+ embeddings?: EmbeddingProvider;
20
+ /** OpenAI API key for embeddings (or set OPENAI_API_KEY env var) */
21
+ openaiApiKey?: string;
22
+ /** Weight for score component in hybrid mode (0-1, default: 0.4) */
23
+ scoreWeight?: number;
24
+ /** Weight for vector component in hybrid mode (0-1, default: 0.6) */
25
+ vectorWeight?: number;
26
+ /** Mnemosyne API base URL */
27
+ mnemoUrl?: string;
28
+ /** AgentPay API base URL */
29
+ agentpayUrl?: string;
30
+ /** Redis connection URL (for event bus) */
31
+ redis?: string;
32
+ /** Postgres connection URL (for durable storage) */
33
+ db?: string;
34
+ /** Memory decay rate λ (default 0.05, half-life ~14h) */
35
+ decay?: number;
36
+ /** Log internal operations */
37
+ debug?: boolean;
38
+ /** API key for Mnemosyne */
39
+ mnemoApiKey?: string;
40
+ /** API key for AgentPay */
41
+ agentpayApiKey?: string;
42
+ }
43
+ export interface Memory {
44
+ id: string;
45
+ agentId: string;
46
+ content: string;
47
+ importance: number;
48
+ score: number;
49
+ createdAt: Date;
50
+ lastAccessed: Date;
51
+ accessCount: number;
52
+ tags: string[];
53
+ }
54
+ export interface RememberOptions {
55
+ importance?: number;
56
+ tags?: string[];
57
+ }
58
+ export interface Transaction {
59
+ id: string;
60
+ agentId: string;
61
+ amount: number;
62
+ reason: string;
63
+ status: "pending" | "completed" | "refunded";
64
+ createdAt: Date;
65
+ completedAt?: Date;
66
+ }
67
+ export interface AgentProfile {
68
+ id: string;
69
+ reputation: number;
70
+ wallet: number;
71
+ memoriesCount: number;
72
+ transactionsCount: number;
73
+ }
74
+ export interface BalanceInfo {
75
+ wallet: number;
76
+ reputation: number;
77
+ }
78
+ export interface AuditEntry {
79
+ id: string;
80
+ agentId: string;
81
+ action: string;
82
+ details: Record<string, unknown>;
83
+ createdAt: Date;
84
+ }
85
+ declare function autoScore(content: string): number;
86
+ declare function computeScore(importance: number, lastAccessed: Date, accessCount: number, decay: number): number;
87
+ export declare class MnemoPayLite extends EventEmitter {
88
+ readonly agentId: string;
89
+ private decay;
90
+ private debugMode;
91
+ private memories;
92
+ private transactions;
93
+ private auditLog;
94
+ private _wallet;
95
+ private _reputation;
96
+ private recallEngine;
97
+ constructor(agentId: string, decay?: number, debug?: boolean, recallConfig?: Partial<RecallEngineConfig>);
98
+ private log;
99
+ private audit;
100
+ remember(content: string, opts?: RememberOptions): Promise<string>;
101
+ recall(limit?: number): Promise<Memory[]>;
102
+ recall(query: string, limit?: number): Promise<Memory[]>;
103
+ forget(id: string): Promise<boolean>;
104
+ reinforce(id: string, boost?: number): Promise<void>;
105
+ consolidate(): Promise<number>;
106
+ charge(amount: number, reason: string): Promise<Transaction>;
107
+ settle(txId: string): Promise<Transaction>;
108
+ refund(txId: string): Promise<Transaction>;
109
+ balance(): Promise<BalanceInfo>;
110
+ profile(): Promise<AgentProfile>;
111
+ logs(limit?: number): Promise<AuditEntry[]>;
112
+ history(limit?: number): Promise<Transaction[]>;
113
+ disconnect(): Promise<void>;
114
+ }
115
+ export declare class MnemoPay extends EventEmitter {
116
+ readonly agentId: string;
117
+ private config;
118
+ private headers;
119
+ constructor(config: MnemoPayConfig);
120
+ private init;
121
+ private log;
122
+ private mnemoFetch;
123
+ private agentpayFetch;
124
+ remember(content: string, opts?: RememberOptions): Promise<string>;
125
+ recall(limit?: number): Promise<Memory[]>;
126
+ recall(query: string, limit?: number): Promise<Memory[]>;
127
+ forget(id: string): Promise<boolean>;
128
+ reinforce(id: string, boost?: number): Promise<void>;
129
+ consolidate(): Promise<number>;
130
+ charge(amount: number, reason: string): Promise<Transaction>;
131
+ settle(txId: string): Promise<Transaction>;
132
+ refund(txId: string): Promise<Transaction>;
133
+ balance(): Promise<BalanceInfo>;
134
+ profile(): Promise<AgentProfile>;
135
+ logs(limit?: number): Promise<AuditEntry[]>;
136
+ history(limit?: number): Promise<Transaction[]>;
137
+ disconnect(): Promise<void>;
138
+ /**
139
+ * Zero-infrastructure mode. In-memory, no database, no Redis.
140
+ * Perfect for development, testing, and demos.
141
+ */
142
+ static quick(agentId: string, opts?: {
143
+ decay?: number;
144
+ debug?: boolean;
145
+ recall?: RecallStrategy;
146
+ embeddings?: EmbeddingProvider;
147
+ openaiApiKey?: string;
148
+ scoreWeight?: number;
149
+ vectorWeight?: number;
150
+ }): MnemoPayLite;
151
+ /**
152
+ * Production mode. Connects to Mnemosyne + AgentPay backends.
153
+ * Requires running services (use docker-compose.yml).
154
+ */
155
+ static create(config: MnemoPayConfig): MnemoPay;
156
+ }
157
+ export default MnemoPay;
158
+ export { autoScore, computeScore };
159
+ export { RecallEngine, cosineSimilarity, localEmbed, l2Normalize } from "./recall/engine.js";
160
+ export type { RecallStrategy, EmbeddingProvider, RecallEngineConfig, RecallResult } from "./recall/engine.js";
161
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}