wispy-ai 1.6.0 → 1.7.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.
Files changed (103) hide show
  1. package/.env.example +19 -1
  2. package/CHANGELOG.md +19 -0
  3. package/README.md +32 -13
  4. package/dist/agents/tool-executor.d.ts +5 -0
  5. package/dist/agents/tool-executor.d.ts.map +1 -1
  6. package/dist/agents/tool-executor.js +97 -0
  7. package/dist/agents/tool-executor.js.map +1 -1
  8. package/dist/ai/claude.d.ts +28 -0
  9. package/dist/ai/claude.d.ts.map +1 -0
  10. package/dist/ai/claude.js +328 -0
  11. package/dist/ai/claude.js.map +1 -0
  12. package/dist/ai/engine.d.ts +52 -0
  13. package/dist/ai/engine.d.ts.map +1 -0
  14. package/dist/ai/engine.js +85 -0
  15. package/dist/ai/engine.js.map +1 -0
  16. package/dist/ai/prompts.d.ts +5 -0
  17. package/dist/ai/prompts.d.ts.map +1 -1
  18. package/dist/ai/prompts.js +28 -0
  19. package/dist/ai/prompts.js.map +1 -1
  20. package/dist/ai/router.d.ts.map +1 -1
  21. package/dist/ai/router.js +34 -0
  22. package/dist/ai/router.js.map +1 -1
  23. package/dist/ai/tools.d.ts.map +1 -1
  24. package/dist/ai/tools.js +55 -0
  25. package/dist/ai/tools.js.map +1 -1
  26. package/dist/channels/email/adapter.d.ts +17 -0
  27. package/dist/channels/email/adapter.d.ts.map +1 -0
  28. package/dist/channels/email/adapter.js +133 -0
  29. package/dist/channels/email/adapter.js.map +1 -0
  30. package/dist/channels/phone/adapter.d.ts +36 -0
  31. package/dist/channels/phone/adapter.d.ts.map +1 -0
  32. package/dist/channels/phone/adapter.js +406 -0
  33. package/dist/channels/phone/adapter.js.map +1 -0
  34. package/dist/channels/telegram/adapter.d.ts.map +1 -1
  35. package/dist/channels/telegram/adapter.js +35 -3
  36. package/dist/channels/telegram/adapter.js.map +1 -1
  37. package/dist/channels/whatsapp/adapter.d.ts +5 -0
  38. package/dist/channels/whatsapp/adapter.d.ts.map +1 -1
  39. package/dist/channels/whatsapp/adapter.js +167 -11
  40. package/dist/channels/whatsapp/adapter.js.map +1 -1
  41. package/dist/cli/integration-wizard.d.ts.map +1 -1
  42. package/dist/cli/integration-wizard.js +56 -0
  43. package/dist/cli/integration-wizard.js.map +1 -1
  44. package/dist/cli/program.js +24 -6
  45. package/dist/cli/program.js.map +1 -1
  46. package/dist/cli/repl.d.ts.map +1 -1
  47. package/dist/cli/repl.js +20 -0
  48. package/dist/cli/repl.js.map +1 -1
  49. package/dist/cli/setup/wizard.d.ts +9 -16
  50. package/dist/cli/setup/wizard.d.ts.map +1 -1
  51. package/dist/cli/setup/wizard.js +918 -653
  52. package/dist/cli/setup/wizard.js.map +1 -1
  53. package/dist/cli/ui/banner.d.ts +1 -1
  54. package/dist/cli/ui/banner.js +1 -1
  55. package/dist/cli/voice/tts.d.ts +10 -1
  56. package/dist/cli/voice/tts.d.ts.map +1 -1
  57. package/dist/cli/voice/tts.js +91 -1
  58. package/dist/cli/voice/tts.js.map +1 -1
  59. package/dist/config/config.d.ts.map +1 -1
  60. package/dist/config/config.js +17 -0
  61. package/dist/config/config.js.map +1 -1
  62. package/dist/config/schema.d.ts +20 -1
  63. package/dist/config/schema.d.ts.map +1 -1
  64. package/dist/config/schema.js +41 -0
  65. package/dist/config/schema.js.map +1 -1
  66. package/dist/core/agent.d.ts.map +1 -1
  67. package/dist/core/agent.js +10 -2
  68. package/dist/core/agent.js.map +1 -1
  69. package/dist/core/heartbeat.d.ts.map +1 -1
  70. package/dist/core/heartbeat.js +12 -2
  71. package/dist/core/heartbeat.js.map +1 -1
  72. package/dist/gateway/server.d.ts.map +1 -1
  73. package/dist/gateway/server.js +24 -0
  74. package/dist/gateway/server.js.map +1 -1
  75. package/dist/index.d.ts +2 -1
  76. package/dist/index.d.ts.map +1 -1
  77. package/dist/index.js +2 -1
  78. package/dist/index.js.map +1 -1
  79. package/dist/integrations/ai-models/elevenlabs.d.ts +25 -0
  80. package/dist/integrations/ai-models/elevenlabs.d.ts.map +1 -0
  81. package/dist/integrations/ai-models/elevenlabs.js +262 -0
  82. package/dist/integrations/ai-models/elevenlabs.js.map +1 -0
  83. package/dist/integrations/loader.d.ts.map +1 -1
  84. package/dist/integrations/loader.js +33 -0
  85. package/dist/integrations/loader.js.map +1 -1
  86. package/dist/integrations/social/agentmail.d.ts +27 -0
  87. package/dist/integrations/social/agentmail.d.ts.map +1 -0
  88. package/dist/integrations/social/agentmail.js +230 -0
  89. package/dist/integrations/social/agentmail.js.map +1 -0
  90. package/dist/integrations/social/telnyx.d.ts +27 -0
  91. package/dist/integrations/social/telnyx.d.ts.map +1 -0
  92. package/dist/integrations/social/telnyx.js +268 -0
  93. package/dist/integrations/social/telnyx.js.map +1 -0
  94. package/dist/memory/memory-bank.d.ts +70 -0
  95. package/dist/memory/memory-bank.d.ts.map +1 -0
  96. package/dist/memory/memory-bank.js +246 -0
  97. package/dist/memory/memory-bank.js.map +1 -0
  98. package/dist/memory/vector-store.d.ts +47 -0
  99. package/dist/memory/vector-store.d.ts.map +1 -1
  100. package/dist/memory/vector-store.js +122 -0
  101. package/dist/memory/vector-store.js.map +1 -1
  102. package/package.json +6 -2
  103. package/wispy/skills/memory-bank/SKILL.md +104 -0
package/.env.example CHANGED
@@ -1,6 +1,13 @@
1
- # Gemini API Key (required)
1
+ # Engine selection: "gemini" (default) or "claude"
2
+ ENGINE=gemini
3
+
4
+ # Gemini API Key (required for Gemini engine, and always needed for embeddings)
2
5
  GEMINI_API_KEY=your_gemini_api_key_here
3
6
 
7
+ # Claude / Anthropic (required when ENGINE=claude)
8
+ # ANTHROPIC_API_KEY=sk-ant-...
9
+ # CLAUDE_MODEL=claude-sonnet-4-20250514
10
+
4
11
  # Telegram Bot Token (optional)
5
12
  TELEGRAM_BOT_TOKEN=
6
13
 
@@ -42,6 +49,17 @@ TWITTER_API_SECRET=
42
49
  TWITTER_ACCESS_TOKEN=
43
50
  TWITTER_ACCESS_SECRET=
44
51
 
52
+ # ElevenLabs (optional, premium voice AI for natural TTS)
53
+ # ELEVENLABS_API_KEY=
54
+
55
+ # Agentmail (optional, AI-native email for agents)
56
+ # AGENTMAIL_API_KEY=
57
+
58
+ # Telnyx (optional, telephony -- voice calls & SMS)
59
+ # TELNYX_API_KEY=
60
+ # TELNYX_CONNECTION_ID=
61
+ # TELNYX_FROM_NUMBER=
62
+
45
63
  # Dashboard
46
64
  DASHBOARD_PORT=3000
47
65
  GATEWAY_PORT=4000
package/CHANGELOG.md CHANGED
@@ -1,5 +1,24 @@
1
1
  # Changelog
2
2
 
3
+ ## [1.7.0] - 2026-02-23
4
+
5
+ ### Added
6
+ - **Claude Engine** as switchable alternative to Gemini via `@anthropic-ai/sdk`
7
+ - **Engine Abstraction Layer** (`src/ai/engine.ts`) for seamless switching between Gemini and Claude
8
+ - **Memory Bank** skill with 4 typed categories: episodic, semantic, procedural, preference
9
+ - Memory lifecycle management: decay (time-based), reinforcement (access-based), reflection (AI consolidation)
10
+ - 5 new Memory Bank tools: `memory_store_typed`, `memory_reflect`, `memory_forget`, `memory_list_categories`, `memory_get_context`
11
+ - Context-aware memory injection into system prompts
12
+ - Claude extended thinking support with budget token mapping
13
+ - Claude tool_use format conversion from Gemini function declarations
14
+
15
+ ### Changed
16
+ - Project structure cleaned up: tests moved to `tests/integration/`, scripts to `scripts/`, docs to `docs/submissions/`
17
+ - Removed unused stubs (`database/`, `backend/`)
18
+ - Heartbeat now runs Memory Bank decay cycle
19
+ - Router supports Claude model selection (Sonnet for reasoning, Haiku for fast)
20
+ - Engine configurable via `ENGINE=gemini|claude` env var
21
+
3
22
  ## [1.6.0] - 2026-02-20
4
23
 
5
24
  ### Added
package/README.md CHANGED
@@ -6,7 +6,7 @@
6
6
 
7
7
  <p align="center">
8
8
  <strong>Autonomous AI Agent Platform</strong><br />
9
- <em>120+ tools, 42+ integrations, multi-model, sessions, skills.sh, x402 commerce</em>
9
+ <em>125+ tools, 42+ integrations, dual-engine (Gemini + Claude), Memory Bank, sessions, skills.sh, x402 commerce</em>
10
10
  </p>
11
11
 
12
12
  <p align="center">
@@ -27,7 +27,7 @@
27
27
 
28
28
  ## What is Wispy?
29
29
 
30
- Wispy is an autonomous AI agent that lives in your terminal, messaging apps, and APIs. Powered by Google Gemini 2.5 Pro with multi-model delegation to Claude, GPT-4o, Llama, and 200+ models via OpenRouter.
30
+ Wispy is an autonomous AI agent that lives in your terminal, messaging apps, and APIs. Dual-engine architecture powered by Google Gemini 2.5 Pro and Anthropic Claude, with cross-model delegation to GPT-4o, Llama, and 200+ models via OpenRouter. Features a structured Memory Bank with typed categories, lifecycle management, and AI-powered reflection.
31
31
 
32
32
  ```bash
33
33
  npm install -g wispy-ai
@@ -41,17 +41,21 @@ wispy chat
41
41
 
42
42
  ### Core
43
43
 
44
- - **120+ Built-in Tools** across file system, web, browser automation, code execution, memory, media, blockchain, and identity
44
+ - **125+ Built-in Tools** across file system, web, browser automation, code execution, memory, media, blockchain, and identity
45
+ - **Dual Engine** -- switch between Gemini and Claude with a single env var (`ENGINE=gemini|claude`)
46
+ - **Memory Bank** with 4 typed categories (episodic, semantic, procedural, preference), time-based decay, reinforcement, and AI-powered reflection
45
47
  - **Marathon Mode** for multi-step, long-running autonomous tasks with checkpointing and auto-recovery
46
- - **Thinking Levels** (low/medium/high/ultra) with up to 24K thinking tokens
48
+ - **Thinking Levels** (low/medium/high/ultra) with up to 24K thinking tokens (Gemini) or 32K budget tokens (Claude)
47
49
  - **Named Sessions** with isolated context, daily auto-reset, and instant switching
48
50
  - **Process Manager** to spawn, monitor, and manage background processes
49
51
  - **Skills.sh Registry** with 67,000+ community skills you can install with a single command
50
52
 
51
- ### Multi-Model
53
+ ### Multi-Model / Dual Engine
52
54
 
53
- - **Gemini 2.5 Pro** (core reasoning engine)
54
- - **Cross-model delegation** to Claude Opus/Sonnet, GPT-4o, Groq, Kimi, Llama via Ollama, and 200+ models via OpenRouter
55
+ - **Gemini 2.5 Pro** -- primary reasoning engine with native function calling and extended thinking
56
+ - **Claude (Opus/Sonnet/Haiku)** -- switchable alternative engine via `@anthropic-ai/sdk` with tool_use and extended thinking
57
+ - **Engine abstraction layer** -- seamless switching, embeddings always via Gemini
58
+ - **Cross-model delegation** to GPT-4o, Groq, Kimi, Llama via Ollama, and 200+ models via OpenRouter
55
59
  - **Model comparison** to send the same prompt to multiple models and compare responses
56
60
  - **Setup wizard** configures all providers in one flow
57
61
 
@@ -145,11 +149,18 @@ Wispy uses `~/.wispy/config.yaml` for configuration and `.env` for secrets:
145
149
 
146
150
  ```yaml
147
151
  # config.yaml
152
+ engine: gemini # or "claude"
153
+
148
154
  gemini:
149
155
  models:
150
156
  pro: gemini-2.5-pro-preview-05-06
151
157
  flash: gemini-2.5-flash-preview-05-20
152
158
 
159
+ claude:
160
+ models:
161
+ reasoning: claude-sonnet-4-20250514
162
+ fast: claude-haiku-4-5-20251001
163
+
153
164
  channels:
154
165
  telegram: { enabled: true }
155
166
  discord: { enabled: false }
@@ -172,10 +183,12 @@ theme: day
172
183
 
173
184
  ```bash
174
185
  # .env
186
+ ENGINE=gemini # Switch engine: gemini or claude
175
187
  GEMINI_API_KEY=AIza...
188
+ ANTHROPIC_API_KEY=sk-ant-...
189
+ CLAUDE_MODEL=claude-sonnet-4-20250514 # Optional override
176
190
  TELEGRAM_BOT_TOKEN=123456:ABC...
177
191
  AGENT_PRIVATE_KEY=0x...
178
- ANTHROPIC_API_KEY=sk-ant-...
179
192
  OPENAI_API_KEY=sk-...
180
193
  ```
181
194
 
@@ -184,15 +197,21 @@ OPENAI_API_KEY=sk-...
184
197
  ## Architecture
185
198
 
186
199
  ```
187
- ┌─────────────────────────┐
188
- Gemini 2.5 Pro (Core)
189
- + Cross-Model Bridge
190
- └─────────┬───────────────┘
200
+ ┌──────────────────┐ ┌──────────────────┐
201
+ Gemini 2.5 Pro ◄─► │ Claude (Anthropic
202
+ (default) │ (switchable) │
203
+ └────────┬─────────┘ └────────┬─────────┘
204
+ └──────────┬─────────────┘
205
+ ┌──────────▼──────────┐
206
+ │ Engine Abstraction │
207
+ │ + Memory Bank │
208
+ │ + Cross-Model Bridge│
209
+ └──────────┬──────────┘
191
210
 
192
211
  ┌───────────────────┼───────────────────┐
193
212
  │ │ │
194
213
  ┌────────▼──────┐ ┌───────▼───────┐ ┌─────────▼────────┐
195
- 120+ Tools │ │ 42+ Integs │ │ x402 Commerce │
214
+ 125+ Tools │ │ 42+ Integs │ │ x402 Commerce │
196
215
  │ Sessions │ │ Skills.sh │ │ Payment Bridge │
197
216
  │ Processes │ │ Browser (39) │ │ Budget Policy │
198
217
  └────────┬──────┘ └───────┬───────┘ └─────────┬────────┘
@@ -63,6 +63,11 @@ export declare class ToolExecutor {
63
63
  private executeFileSearch;
64
64
  private executeMemorySearch;
65
65
  private executeMemorySave;
66
+ private executeMemoryStoreTyped;
67
+ private executeMemoryReflect;
68
+ private executeMemoryForget;
69
+ private executeMemoryListCategories;
70
+ private executeMemoryGetContext;
66
71
  private executeWebFetch;
67
72
  private executeWebSearch;
68
73
  private executeImageGenerate;
@@ -1 +1 @@
1
- {"version":3,"file":"tool-executor.d.ts","sourceRoot":"","sources":["../../src/agents/tool-executor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"tool-executor.d.ts","sourceRoot":"","sources":["../../src/agents/tool-executor.ts"],"names":[],"mappings":"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"}
@@ -137,6 +137,16 @@ export class ToolExecutor {
137
137
  return this.executeMemorySearch(tool.args);
138
138
  case "memory_save":
139
139
  return this.executeMemorySave(tool.args);
140
+ case "memory_store_typed":
141
+ return this.executeMemoryStoreTyped(tool.args);
142
+ case "memory_reflect":
143
+ return this.executeMemoryReflect();
144
+ case "memory_forget":
145
+ return this.executeMemoryForget(tool.args);
146
+ case "memory_list_categories":
147
+ return this.executeMemoryListCategories();
148
+ case "memory_get_context":
149
+ return this.executeMemoryGetContext(tool.args);
140
150
  case "web_fetch":
141
151
  return this.executeWebFetch(tool.args);
142
152
  case "web_search":
@@ -608,6 +618,93 @@ export class ToolExecutor {
608
618
  appendDailyNote(this.soulDir, `Saved memory: ${fact.slice(0, 80)}`);
609
619
  return { success: true, output: `Saved to memory [${category}]: ${fact}` };
610
620
  }
621
+ // ── Memory Bank Handlers ──────────────────────────────────────────────
622
+ async executeMemoryStoreTyped(args) {
623
+ const text = String(args.text || "");
624
+ const memoryType = String(args.memory_type || "semantic");
625
+ const source = String(args.source || "agent");
626
+ const importance = args.importance ? Number(args.importance) : 5;
627
+ const tags = args.tags ? String(args.tags).split(",").map(t => t.trim()) : [];
628
+ if (!text)
629
+ return { success: false, output: "", error: "No text provided" };
630
+ const validTypes = ["episodic", "semantic", "procedural", "preference"];
631
+ if (!validTypes.includes(memoryType)) {
632
+ return { success: false, output: "", error: `Invalid type: ${memoryType}. Use: ${validTypes.join(", ")}` };
633
+ }
634
+ try {
635
+ const { MemoryBank } = await import("../memory/memory-bank.js");
636
+ const bank = new MemoryBank(this.runtimeDir, this.config);
637
+ await bank.storeMemory(text, memoryType, source, { importance, tags });
638
+ return { success: true, output: `Stored ${memoryType} memory (importance=${importance}): ${text.slice(0, 100)}` };
639
+ }
640
+ catch (err) {
641
+ return { success: false, output: "", error: `Failed to store memory: ${err.message}` };
642
+ }
643
+ }
644
+ async executeMemoryReflect() {
645
+ try {
646
+ const { MemoryBank } = await import("../memory/memory-bank.js");
647
+ const bank = new MemoryBank(this.runtimeDir, this.config);
648
+ const { merged, patterns } = await bank.reflect();
649
+ if (merged === 0) {
650
+ return { success: true, output: "Reflection complete. No similar memories found to merge." };
651
+ }
652
+ const output = `Reflection complete. Merged ${merged} memory pair(s).\n\nPatterns:\n${patterns.join("\n")}`;
653
+ return { success: true, output };
654
+ }
655
+ catch (err) {
656
+ return { success: false, output: "", error: `Reflection failed: ${err.message}` };
657
+ }
658
+ }
659
+ async executeMemoryForget(args) {
660
+ const query = String(args.query || "");
661
+ if (!query)
662
+ return { success: false, output: "", error: "No query provided" };
663
+ try {
664
+ const { MemoryBank } = await import("../memory/memory-bank.js");
665
+ const bank = new MemoryBank(this.runtimeDir, this.config);
666
+ const deleted = await bank.forget(query);
667
+ return { success: true, output: `Forgot ${deleted} memory/memories matching: "${query}"` };
668
+ }
669
+ catch (err) {
670
+ return { success: false, output: "", error: `Forget failed: ${err.message}` };
671
+ }
672
+ }
673
+ async executeMemoryListCategories() {
674
+ try {
675
+ const { MemoryBank } = await import("../memory/memory-bank.js");
676
+ const bank = new MemoryBank(this.runtimeDir, this.config);
677
+ const counts = bank.listCategories();
678
+ const total = Object.values(counts).reduce((s, n) => s + n, 0);
679
+ const lines = [
680
+ `Memory Bank: ${total} total memories`,
681
+ "",
682
+ ` Episodic (events): ${counts.episodic}`,
683
+ ` Semantic (facts): ${counts.semantic}`,
684
+ ` Procedural (how-to): ${counts.procedural}`,
685
+ ` Preference (likes): ${counts.preference}`,
686
+ ];
687
+ return { success: true, output: lines.join("\n") };
688
+ }
689
+ catch (err) {
690
+ return { success: false, output: "", error: `List categories failed: ${err.message}` };
691
+ }
692
+ }
693
+ async executeMemoryGetContext(args) {
694
+ const query = String(args.query || "");
695
+ const limit = args.limit ? Number(args.limit) : 5;
696
+ if (!query)
697
+ return { success: false, output: "", error: "No query provided" };
698
+ try {
699
+ const { MemoryBank } = await import("../memory/memory-bank.js");
700
+ const bank = new MemoryBank(this.runtimeDir, this.config);
701
+ const context = await bank.getContextMemories(query, limit);
702
+ return { success: true, output: context || "No relevant memories found." };
703
+ }
704
+ catch (err) {
705
+ return { success: false, output: "", error: `Get context failed: ${err.message}` };
706
+ }
707
+ }
611
708
  async executeWebFetch(args) {
612
709
  const url = String(args.url || "");
613
710
  if (!url)