swift-patterns-mcp 1.0.7 → 1.0.9

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 (66) hide show
  1. package/README.md +153 -84
  2. package/build/config/sources.d.ts +19 -0
  3. package/build/config/sources.d.ts.map +1 -1
  4. package/build/config/sources.js +24 -13
  5. package/build/config/sources.js.map +1 -1
  6. package/build/index.js +1 -1
  7. package/build/index.js.map +1 -1
  8. package/build/integration/response-quality.test.js +20 -26
  9. package/build/integration/response-quality.test.js.map +1 -1
  10. package/build/sources/free/vanderlee.d.ts.map +1 -1
  11. package/build/sources/free/vanderlee.js +28 -19
  12. package/build/sources/free/vanderlee.js.map +1 -1
  13. package/build/sources/premium/patreon-dl.d.ts.map +1 -1
  14. package/build/sources/premium/patreon-dl.js +4 -2
  15. package/build/sources/premium/patreon-dl.js.map +1 -1
  16. package/build/sources/premium/patreon-fetch.js +3 -1
  17. package/build/sources/premium/patreon-fetch.js.map +1 -1
  18. package/build/tools/handlers/getSwiftPattern.d.ts.map +1 -1
  19. package/build/tools/handlers/getSwiftPattern.js +30 -7
  20. package/build/tools/handlers/getSwiftPattern.js.map +1 -1
  21. package/build/tools/handlers/handlers.test.js +15 -5
  22. package/build/tools/handlers/handlers.test.js.map +1 -1
  23. package/build/tools/handlers/searchSwiftContent.d.ts.map +1 -1
  24. package/build/tools/handlers/searchSwiftContent.js +82 -54
  25. package/build/tools/handlers/searchSwiftContent.js.map +1 -1
  26. package/build/utils/cache.d.ts +2 -0
  27. package/build/utils/cache.d.ts.map +1 -1
  28. package/build/utils/cache.js +33 -2
  29. package/build/utils/cache.js.map +1 -1
  30. package/build/utils/intent-cache.d.ts.map +1 -1
  31. package/build/utils/intent-cache.js +3 -46
  32. package/build/utils/intent-cache.js.map +1 -1
  33. package/build/utils/intent-cache.test.js +2 -25
  34. package/build/utils/intent-cache.test.js.map +1 -1
  35. package/build/utils/logger.js +1 -1
  36. package/build/utils/logger.js.map +1 -1
  37. package/build/utils/memvid-memory.d.ts +73 -0
  38. package/build/utils/memvid-memory.d.ts.map +1 -0
  39. package/build/utils/memvid-memory.js +238 -0
  40. package/build/utils/memvid-memory.js.map +1 -0
  41. package/build/utils/memvid-memory.test.d.ts +2 -0
  42. package/build/utils/memvid-memory.test.d.ts.map +1 -0
  43. package/build/utils/memvid-memory.test.js +117 -0
  44. package/build/utils/memvid-memory.test.js.map +1 -0
  45. package/build/utils/pattern-formatter.d.ts +8 -0
  46. package/build/utils/pattern-formatter.d.ts.map +1 -1
  47. package/build/utils/pattern-formatter.js +16 -0
  48. package/build/utils/pattern-formatter.js.map +1 -1
  49. package/build/utils/search-terms.d.ts +17 -0
  50. package/build/utils/search-terms.d.ts.map +1 -0
  51. package/build/utils/search-terms.js +71 -0
  52. package/build/utils/search-terms.js.map +1 -0
  53. package/build/utils/search-terms.test.d.ts +2 -0
  54. package/build/utils/search-terms.test.d.ts.map +1 -0
  55. package/build/utils/search-terms.test.js +107 -0
  56. package/build/utils/search-terms.test.js.map +1 -0
  57. package/build/utils/search.d.ts.map +1 -1
  58. package/build/utils/search.js +3 -51
  59. package/build/utils/search.js.map +1 -1
  60. package/build/utils/source-registry.d.ts +6 -0
  61. package/build/utils/source-registry.d.ts.map +1 -1
  62. package/build/utils/source-registry.js +14 -0
  63. package/build/utils/source-registry.js.map +1 -1
  64. package/build/utils/source-registry.test.js +24 -1
  65. package/build/utils/source-registry.test.js.map +1 -1
  66. package/package.json +5 -3
package/README.md CHANGED
@@ -1,45 +1,73 @@
1
1
  # swift-patterns-mcp
2
2
 
3
- ### 🎯 Curated Swift/SwiftUI Patterns from Top iOS Developers
3
+ An MCP server providing curated Swift and SwiftUI best practices from leading iOS developers — with intelligent search, persistent memory, and optional premium integrations.
4
4
 
5
- **An MCP server providing curated Swift and SwiftUI best practices from leading iOS developers, including patterns and real-world code examples from Swift by Sundell, SwiftLee, and other trusted sources.**
5
+ ## Want an Agent Skill?
6
6
 
7
- [Quick Start](#-quick-start) [Features](#-features) [Usage](#-usage-examples) [Contributing](#-contributing)
7
+ If you want a **lightweight, portable Swift/SwiftUI best-practices package** without runtime tooling, check out:
8
8
 
9
- ---
9
+ **[swift-patterns-skill](https://github.com/efremidze/swift-patterns-skill)**: Designed as a portable Agent Skill focused on Swift/SwiftUI patterns, architecture guidance, and decision-making frameworks.
10
10
 
11
- ## Why swift-patterns-mcp?
11
+ **Key difference:**
12
+ - **swift-patterns-skill** = Static guidance (portable, no runtime)
13
+ - **swift-patterns-mcp** = Dynamic tooling (search, retrieval, premium features)
12
14
 
13
- - **Curated Content**: Only high-quality patterns from trusted iOS developers
14
- - ✅ **Always Up-to-Date**: Automatically fetches the latest articles and patterns
15
- - ✅ **MCP Native**: Works seamlessly with Claude, Cursor, Windsurf, and other MCP-compatible tools
16
- - ✅ **Privacy First**: Free sources require no authentication
17
- - ✅ **Extensible**: Optional Patreon integration for premium content
15
+ **Note:** This repo is an MCP server only. It does **not** ship an Agent Skill (`SKILL.md`) or skill references.
18
16
 
19
- ## 🌟 Features
17
+ ## What does this MCP provide?
18
+
19
+ **swift-patterns-mcp** delivers runtime tools for accessing Swift/SwiftUI best practices:
20
+
21
+ - 🔎 **Search & retrieval** across curated sources
22
+ - 🧠 **Persistent memory** with cross-session recall
23
+ - 🔄 **Auto-refreshing content** from RSS feeds and GitHub
24
+ - 🎯 **Intelligent filtering** by quality and relevance
25
+ - 🔐 **Premium integrations** (optional Patreon support)
26
+
27
+ ### Ideal for:
20
28
 
21
- ### Core Features
29
+ - **Active Development**: "How do I implement pull-to-refresh in SwiftUI?" answered instantly without leaving your IDE
30
+ - **Architecture Decisions**: Compare MVVM vs. TCA patterns with concrete examples from trusted sources
31
+ - **Staying Current**: Access the latest patterns and best practices as they're published by leading iOS developers
32
+ - **Team Standards**: Build a searchable reference of approved patterns for your organization
33
+ - **AI-Powered Workflows**: Enable agents to query "Show me Sundell's approach to dependency injection" with consistent, quality responses
22
34
 
23
- - 🎓 **Expert Knowledge Base**: Provides patterns from Swift by Sundell, Antoine van der Lee, Nil Coalescing, and more
24
- - 🔍 **Intelligent Search**: Query by topic, pattern, or specific iOS concepts
25
- - 🎯 **Quality Filtering**: Configurable quality thresholds ensure only the best content
26
- - 📚 **Multiple Sources**: Aggregates knowledge from various trusted educators
27
- - 🔄 **Auto-Updates**: Content automatically refreshes from RSS feeds
35
+ ## 🌟 Features
36
+
37
+ - 🎓 **Expert Knowledge Base**: Patterns from Swift by Sundell, Antoine van der Lee, Nil Coalescing, and more
38
+ - 🔍 **Intelligent Search**: Query by topic, pattern, or specific iOS concept
39
+ - 💾 **Persistent Memory**: Cross-session recall with Memvid storage
40
+ - 🧠 **Semantic Search**: Optional AI-powered fallback for better conceptual matches
41
+ - 📚 **Multiple Sources**: Aggregates knowledge from trusted educators
42
+ - 🔄 **Auto-Updates**: Content refreshes automatically from RSS feeds
28
43
  - ⚡ **Fast Performance**: Efficient caching and indexed search
29
44
 
30
- ### Built-in Sources (Free)
31
- - ✅ **Swift by Sundell** - Articles, patterns, and best practices
32
- - **Antoine van der Lee** - Tutorials, tips, and deep dives
33
- - ✅ **Nil Coalescing** - SwiftUI patterns and practical Swift tips
34
- - **Point-Free** - Open source libraries and patterns
45
+ ## Content Sources
46
+
47
+ ### Free Sources
48
+
49
+ These sources are publicly available but benefit from MCP's fetching, caching, and search capabilities:
50
+
51
+ | Source | Content Type | Updates |
52
+ |--------|--------------|---------|
53
+ | **Swift by Sundell** | Articles, patterns, best practices | Weekly |
54
+ | **SwiftLee** | Tutorials, tips, deep dives | Weekly |
55
+ | **Nil Coalescing** | SwiftUI patterns, Swift tips | Weekly |
56
+ | **Point-Free** | Open-source libraries, patterns | On release |
57
+
58
+ ### Premium Sources
59
+
60
+ Premium content requires OAuth authentication and active subscriptions:
61
+
62
+ | Source | What You Get | Authentication |
63
+ |--------|--------------|-------|
64
+ | **Patreon** | Premium content from supported creators | OAuth 2.0 |
35
65
 
36
- ### Premium Sources (Optional)
37
- - 🔐 **Patreon Integration** - Access premium content from creators you support
38
66
 
39
67
  ## 📋 Prerequisites
40
68
 
41
- - **Node.js**: Version 18.0.0 or higher
42
- - **MCP-Compatible AI Assistant**: Claude Desktop, Cursor, Windsurf, or VS Code with Copilot
69
+ - **Node.js** 18.0.0 or higher
70
+ - **MCP-Compatible AI Assistant**: Claude Desktop, Cursor, Windsurf, VS Code with Copilot, or Claude Code
43
71
 
44
72
  ## 🚀 Quick Start
45
73
 
@@ -69,19 +97,18 @@ Or manually add to **Cursor Settings** → **Tools** → **MCP Servers**:
69
97
  }
70
98
  ```
71
99
 
72
- Alternatively, add the following to your `~/.cursor/mcp.json` file. To learn more, see the Cursor documentation.
100
+ Alternatively, add to `~/.cursor/mcp.json`. See [Cursor documentation](https://docs.cursor.com) for details.
73
101
 
74
102
  #### Claude Code
75
103
 
76
- Run this command in your terminal:
104
+ Run in your terminal:
77
105
 
78
106
  ```bash
79
107
  claude mcp add swift-patterns -- npx -y swift-patterns-mcp@latest
80
108
  ```
81
109
 
82
- Or manually add to your project's `.mcp.json` file:
110
+ Or manually add to `.mcp.json`:
83
111
 
84
- `.mcp.json`
85
112
  ```json
86
113
  {
87
114
  "mcpServers": {
@@ -93,15 +120,12 @@ Or manually add to your project's `.mcp.json` file:
93
120
  }
94
121
  ```
95
122
 
96
- After adding the configuration, restart Claude Code and run /mcp to see the swift-patterns MCP server in the list. If you see Connected, you're ready to use it.
97
-
98
- See the Claude Code MCP documentation for more details.
123
+ Restart Claude Code and run `/mcp` to verify. See [Claude Code MCP documentation](https://docs.claude.ai/claude-code) for details.
99
124
 
100
125
  #### Windsurf
101
126
 
102
- Add the swift-patterns server to your project's `.windsurf/mcp.json` configuration file:
127
+ Add to `.windsurf/mcp.json`:
103
128
 
104
- `.windsurf/mcp.json`
105
129
  ```json
106
130
  {
107
131
  "mcpServers": {
@@ -113,15 +137,12 @@ Add the swift-patterns server to your project's `.windsurf/mcp.json` configurati
113
137
  }
114
138
  ```
115
139
 
116
- After adding the configuration, restart Windsurf to activate the MCP server.
117
-
118
- See the Windsurf MCP documentation for more details.
140
+ Restart Windsurf to activate. See [Windsurf MCP documentation](https://docs.windsurf.com) for details.
119
141
 
120
142
  #### VS Code
121
143
 
122
- To configure MCP in VS Code with GitHub Copilot, add the swift-patterns-mcp server to your project's `.vscode/mcp.json` configuration file:
144
+ Add to `.vscode/mcp.json`:
123
145
 
124
- `.vscode/mcp.json`
125
146
  ```json
126
147
  {
127
148
  "mcp": {
@@ -135,9 +156,7 @@ To configure MCP in VS Code with GitHub Copilot, add the swift-patterns-mcp serv
135
156
  }
136
157
  ```
137
158
 
138
- After adding the configuration, open `.vscode/mcp.json` and click Start next to the swift-patterns server.
139
-
140
- See the VS Code MCP documentation for more details.
159
+ Open `.vscode/mcp.json` and click **Start** next to the swift-patterns server. See [VS Code MCP documentation](https://code.visualstudio.com/docs/copilot/mcp) for details.
141
160
 
142
161
  ### Test It Out
143
162
 
@@ -151,22 +170,95 @@ Try these queries:
151
170
 
152
171
  ## 🔧 Configuration
153
172
 
154
- The configuration file is automatically created at `~/.swift-patterns-mcp/config.json`:
173
+ Configuration is automatically created at `~/.swift-patterns-mcp/config.json`:
155
174
 
156
175
  ```json
157
176
  {
158
177
  "sources": {
159
- "sundell": { "enabled": true, "quality": 60 },
160
- "vanderlee": { "enabled": true, "quality": 60 },
161
- "pointfree": { "enabled": false, "quality": 60 },
162
- "patreon": { "enabled": false }
178
+ "sundell": { "enabled": true, "configured": true },
179
+ "vanderlee": { "enabled": true, "configured": true },
180
+ "nilcoalescing": { "enabled": true, "configured": true },
181
+ "pointfree": { "enabled": true, "configured": true },
182
+ "patreon": { "enabled": false, "configured": false }
183
+ },
184
+ "prefetchSources": true,
185
+ "semanticRecall": {
186
+ "enabled": false,
187
+ "minLexicalScore": 0.35,
188
+ "minRelevanceScore": 70
163
189
  },
164
- "cache": {
165
- "ttl": 86400
190
+ "memvid": {
191
+ "enabled": true,
192
+ "autoStore": true,
193
+ "useEmbeddings": false,
194
+ "embeddingModel": "bge-small"
195
+ }
196
+ }
197
+ ```
198
+
199
+ ### Persistent Memory with Memvid
200
+
201
+ Memvid provides persistent semantic memory that improves recall across sessions. Unlike in-memory caching, Memvid stores patterns in a single-file database that persists between server restarts.
202
+
203
+ **Features:**
204
+ - 💾 **Persistent Storage**: Patterns stored in `~/.swift-patterns-mcp/swift-patterns-memory.mv2`
205
+ - 🔁 **Cross-Session Recall**: Find patterns from previous searches after server restart
206
+ - 🧠 **Semantic Search**: Optional embedding-based similarity search
207
+ - 🚀 **Automatic Storage**: Patterns stored during searches
208
+ - ⚡ **Fast Retrieval**: Built-in BM25 + optional vector search
209
+
210
+ **Configuration:**
211
+
212
+ ```json
213
+ {
214
+ "memvid": {
215
+ "enabled": true, // Enable Memvid persistent memory
216
+ "autoStore": true, // Automatically store patterns during searches
217
+ "useEmbeddings": false, // Use semantic embeddings (requires model download)
218
+ "embeddingModel": "bge-small" // Options: "bge-small", "openai-small"
219
+ }
220
+ }
221
+ ```
222
+
223
+ **When to enable:**
224
+ - You want patterns to persist across server restarts
225
+ - You frequently search for similar topics
226
+ - You need cross-session semantic memory
227
+
228
+ **Note:** Memvid complements MiniSearch (fast in-session search) and semantic recall (in-session fallback). All three work together:
229
+ 1. **MiniSearch**: Fast lexical search within current session
230
+ 2. **Semantic recall**: Activates for poor lexical results (in-session)
231
+ 3. **Memvid**: Cross-session persistent memory and recall
232
+
233
+ ### Semantic Recall (Optional AI Enhancement)
234
+
235
+ Semantic recall provides AI-powered semantic search as a fallback when keyword search returns poor results. It uses transformer embeddings to understand query intent and find conceptually similar patterns.
236
+
237
+ **Features:**
238
+ - 🧠 Automatically activates when keyword search scores are low
239
+ - 🎯 Uses sentence transformers to understand meaning beyond keywords
240
+ - 📊 Quality filtering to index only high-relevance patterns
241
+ - ⚡ Efficient embedding caching
242
+
243
+ **Configuration:**
244
+
245
+ ```json
246
+ {
247
+ "semanticRecall": {
248
+ "enabled": false, // Enable semantic recall
249
+ "minLexicalScore": 0.35, // Activate when keyword search < 0.35
250
+ "minRelevanceScore": 70 // Only index patterns with score >= 70
166
251
  }
167
252
  }
168
253
  ```
169
254
 
255
+ **When to enable:**
256
+ - Your queries use conceptual terms that don't match exact keywords
257
+ - You want more intelligent, context-aware search results
258
+ - You're okay with slightly slower first-time searches (embeddings need to compute)
259
+
260
+ **Note:** Requires downloading a ~50MB transformer model on first use. Embeddings are cached for performance.
261
+
170
262
  ### Environment Variables (Optional)
171
263
 
172
264
  For premium features, add to your MCP client config:
@@ -191,47 +283,27 @@ For premium features, add to your MCP client config:
191
283
  ### Basic Queries
192
284
 
193
285
  ```
194
- "Show me best practices for SwiftUI animations"
195
- "What does Sundell say about testing?"
196
- "Explain navigation patterns in SwiftUI"
286
+ "How can I use lazy var in @Observable classes?"
287
+ "Show me modern SwiftUI animation best practices using symbolEffect (with button + state examples)"
288
+ "Explain common SwiftUI navigation patterns (NavigationStack, NavigationPath, enum routing) and when to use each"
197
289
  ```
198
290
 
199
291
  ### Advanced Queries
200
292
 
201
293
  ```
202
- "Show me performance tips from van der Lee"
203
- "Find iOS architecture patterns for MVVM + coordinator"
204
- "Give me examples for SwiftUI infinite scrolling"
294
+ "Build a coordinator-style architecture for SwiftUI: MVVM + dependency injection + type-safe routing"
295
+ "Give me a clean infinite scrolling implementation: pagination, dedupe, cancellation, and loading states"
296
+ "Explain how @Observable improves SwiftUI performance vs ObservableObject, then refactor my view model to @Observable"
205
297
  ```
206
298
 
207
299
  ### With Patreon Integration
208
300
 
209
301
  ```
210
- "Show me advanced SwiftUI patterns"
211
- "How do I build a photo editor app?"
302
+ "Build a SwiftUI parallax + sticky header screen like a profile page (include reusable component version)"
303
+ "Show me how to build a photo editor flow: PhotosPicker -> crop -> filters -> export/share"
304
+ "Give me 5 advanced SwiftUI micro-interactions (toasts, sheets, draggable cards, haptics) with production-ready code"
212
305
  ```
213
306
 
214
- ## 📚 Content Sources
215
-
216
- ### Free Sources
217
-
218
- Currently supported, no authentication needed:
219
-
220
- | Source | Creator | Content Type | Update Frequency |
221
- |--------|---------|--------------|------------------|
222
- | **Swift by Sundell** | John Sundell | Articles, patterns, best practices | Weekly |
223
- | **Antoine van der Lee** | Antoine van der Lee | Tutorials, tips, deep dives | Weekly |
224
- | **Nil Coalescing** | Nil Coalescing | SwiftUI patterns, Swift tips | Weekly |
225
- | **Point-Free** | Point-Free | Open source libraries, patterns | On release |
226
-
227
- ### Premium Sources
228
-
229
- Requires authentication and active subscriptions:
230
-
231
- | Source | What You Get | Setup Method | Status |
232
- |--------|--------------|--------------|--------|
233
- | **Patreon** | Premium content from iOS creators | OAuth 2.0 | ✅ Available |
234
-
235
307
  ## 🔐 Premium Integration (Optional)
236
308
 
237
309
  ### Patreon Setup
@@ -284,7 +356,7 @@ swift-patterns-mcp auth patreon
284
356
  swift-patterns-mcp auth status
285
357
  ```
286
358
 
287
- ## 🏗️ How It Works
359
+ ## 🗃️ How It Works
288
360
 
289
361
  ```mermaid
290
362
  graph LR
@@ -320,7 +392,7 @@ ls ~/.swift-patterns-mcp/config.json
320
392
  swift-patterns-mcp setup
321
393
  ```
322
394
 
323
- #### Patreon Integration Issues
395
+ ### Patreon Integration Issues
324
396
 
325
397
  **OAuth redirect not working**
326
398
  - Ensure redirect URI is exactly: `http://localhost:3000/patreon/callback`
@@ -346,7 +418,6 @@ swift-patterns-mcp setup
346
418
  ### Future (v2.x)
347
419
  - [ ] Additional premium sources
348
420
  - [ ] More free sources
349
- - [ ] Advanced search (with vector embeddings)
350
421
  - [ ] Code validation
351
422
 
352
423
  ## 🤝 Contributing
@@ -369,8 +440,6 @@ MIT License - Copyright (c) 2026 Lasha Efremidze
369
440
 
370
441
  **Built with** [Model Context Protocol](https://modelcontextprotocol.io)
371
442
 
372
- ---
373
-
374
443
  **Made with ❤️ for the Swift community**
375
444
 
376
445
  [⭐ Star this repo](https://github.com/efremidze/swift-patterns-mcp) • [🐛 Report Bug](./issues) • [✨ Request Feature](./issues)
@@ -24,6 +24,12 @@ export interface SourceConfig {
24
24
  minLexicalScore: number;
25
25
  minRelevanceScore: number;
26
26
  };
27
+ memvid?: {
28
+ enabled: boolean;
29
+ autoStore: boolean;
30
+ useEmbeddings: boolean;
31
+ embeddingModel?: string;
32
+ };
27
33
  }
28
34
  export declare class SourceManager {
29
35
  private config;
@@ -86,6 +92,19 @@ export declare class SourceManager {
86
92
  * Check if semantic recall is enabled
87
93
  */
88
94
  isSemanticRecallEnabled(): boolean;
95
+ /**
96
+ * Get memvid configuration
97
+ */
98
+ getMemvidConfig(): {
99
+ enabled: boolean;
100
+ autoStore: boolean;
101
+ useEmbeddings: boolean;
102
+ embeddingModel?: string;
103
+ };
104
+ /**
105
+ * Check if memvid is enabled
106
+ */
107
+ isMemvidEnabled(): boolean;
89
108
  }
90
109
  export default SourceManager;
91
110
  //# sourceMappingURL=sources.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"sources.d.ts","sourceRoot":"","sources":["../../src/config/sources.ts"],"names":[],"mappings":"AAOA,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,SAAS,CAAC;AAC5C,MAAM,MAAM,YAAY,GAAG,SAAS,GAAG,UAAU,GAAG,gBAAgB,CAAC;AAErE,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,UAAU,CAAC;IACjB,OAAO,EAAE,OAAO,CAAC;IACjB,YAAY,EAAE,OAAO,CAAC;IACtB,MAAM,EAAE,YAAY,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;CACvB;AAED,eAAO,MAAM,iBAAiB,EAAE,aAAa,EAyE5C,CAAC;AAEF,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE;QACtB,OAAO,EAAE,OAAO,CAAC;QACjB,UAAU,EAAE,OAAO,CAAC;QACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,CAAC,CAAC;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,cAAc,CAAC,EAAE;QACf,OAAO,EAAE,OAAO,CAAC;QACjB,eAAe,EAAE,MAAM,CAAC;QACxB,iBAAiB,EAAE,MAAM,CAAC;KAC3B,CAAC;CACH;AAiCD,qBAAa,aAAa;IACxB,OAAO,CAAC,MAAM,CAAe;IAC7B,OAAO,CAAC,UAAU,CAAS;gBAEf,UAAU,CAAC,EAAE,MAAM;IAK/B,OAAO,CAAC,UAAU;IAclB,OAAO,CAAC,UAAU;IAalB;;OAEG;IACH,iBAAiB,IAAI,aAAa,EAAE;IAOpC;;OAEG;IACH,SAAS,CAAC,EAAE,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS;IAIhD;;OAEG;IACH,YAAY,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO;IAqBjC;;OAEG;IACH,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO;IAQlC;;OAEG;IACH,kBAAkB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO;IAYvC;;OAEG;IACH,oBAAoB,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAUtC;;OAEG;IACH,aAAa,IAAI,KAAK,CAAC,aAAa,GAAG;QACrC,SAAS,EAAE,OAAO,CAAC;QACnB,YAAY,EAAE,OAAO,CAAC;KACvB,CAAC;IAQF;;OAEG;IACH,gBAAgB,CAAC,IAAI,EAAE,UAAU,GAAG,aAAa,EAAE;IAInD;;OAEG;IACH,iBAAiB,IAAI,OAAO;IAI5B;;OAEG;IACH,kBAAkB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;IAK1C;;OAEG;IACH,uBAAuB;iBAhMZ,OAAO;yBACC,MAAM;2BACJ,MAAM;;IAkM3B;;OAEG;IACH,uBAAuB,IAAI,OAAO;CAGnC;AAED,eAAe,aAAa,CAAC"}
1
+ {"version":3,"file":"sources.d.ts","sourceRoot":"","sources":["../../src/config/sources.ts"],"names":[],"mappings":"AAOA,MAAM,MAAM,UAAU,GAAG,MAAM,GAAG,SAAS,CAAC;AAC5C,MAAM,MAAM,YAAY,GAAG,SAAS,GAAG,UAAU,GAAG,gBAAgB,CAAC;AAErE,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,UAAU,CAAC;IACjB,OAAO,EAAE,OAAO,CAAC;IACjB,YAAY,EAAE,OAAO,CAAC;IACtB,MAAM,EAAE,YAAY,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;CACvB;AAED,eAAO,MAAM,iBAAiB,EAAE,aAAa,EA4D5C,CAAC;AAEF,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE;QACtB,OAAO,EAAE,OAAO,CAAC;QACjB,UAAU,EAAE,OAAO,CAAC;QACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,CAAC,CAAC;IACH,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,cAAc,CAAC,EAAE;QACf,OAAO,EAAE,OAAO,CAAC;QACjB,eAAe,EAAE,MAAM,CAAC;QACxB,iBAAiB,EAAE,MAAM,CAAC;KAC3B,CAAC;IACF,MAAM,CAAC,EAAE;QACP,OAAO,EAAE,OAAO,CAAC;QACjB,SAAS,EAAE,OAAO,CAAC;QACnB,aAAa,EAAE,OAAO,CAAC;QACvB,cAAc,CAAC,EAAE,MAAM,CAAC;KACzB,CAAC;CACH;AA4CD,qBAAa,aAAa;IACxB,OAAO,CAAC,MAAM,CAAe;IAC7B,OAAO,CAAC,UAAU,CAAS;gBAEf,UAAU,CAAC,EAAE,MAAM;IAK/B,OAAO,CAAC,UAAU;IAclB,OAAO,CAAC,UAAU;IAalB;;OAEG;IACH,iBAAiB,IAAI,aAAa,EAAE;IAOpC;;OAEG;IACH,SAAS,CAAC,EAAE,EAAE,MAAM,GAAG,aAAa,GAAG,SAAS;IAIhD;;OAEG;IACH,YAAY,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO;IAqBjC;;OAEG;IACH,aAAa,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO;IAQlC;;OAEG;IACH,kBAAkB,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO;IAYvC;;OAEG;IACH,oBAAoB,CAAC,EAAE,EAAE,MAAM,GAAG,IAAI;IAUtC;;OAEG;IACH,aAAa,IAAI,KAAK,CAAC,aAAa,GAAG;QACrC,SAAS,EAAE,OAAO,CAAC;QACnB,YAAY,EAAE,OAAO,CAAC;KACvB,CAAC;IAQF;;OAEG;IACH,gBAAgB,CAAC,IAAI,EAAE,UAAU,GAAG,aAAa,EAAE;IAInD;;OAEG;IACH,iBAAiB,IAAI,OAAO;IAI5B;;OAEG;IACH,kBAAkB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI;IAK1C;;OAEG;IACH,uBAAuB;iBAjNZ,OAAO;yBACC,MAAM;2BACJ,MAAM;;IAmN3B;;OAEG;IACH,uBAAuB,IAAI,OAAO;IAIlC;;OAEG;IACH,eAAe;iBA1NJ,OAAO;mBACL,OAAO;uBACH,OAAO;yBACL,MAAM;;IA2NzB;;OAEG;IACH,eAAe,IAAI,OAAO;CAG3B;AAED,eAAe,aAAa,CAAC"}
@@ -57,18 +57,6 @@ export const AVAILABLE_SOURCES = [
57
57
  setupFunction: 'setupPatreon',
58
58
  configKeys: ['PATREON_CLIENT_ID', 'PATREON_CLIENT_SECRET'],
59
59
  },
60
- // Future premium sources
61
- {
62
- id: 'github-sponsors',
63
- name: 'GitHub Sponsors',
64
- description: 'Access content from developers you sponsor on GitHub (Coming soon)',
65
- type: 'premium',
66
- enabled: false,
67
- requiresAuth: true,
68
- status: 'not-configured',
69
- setupFunction: 'setupGitHubSponsors',
70
- configKeys: ['GITHUB_TOKEN'],
71
- },
72
60
  ];
73
61
  const sourceConfigSchema = z.object({
74
62
  sources: z.record(z.string(), z.object({
@@ -82,6 +70,12 @@ const sourceConfigSchema = z.object({
82
70
  minLexicalScore: z.number(),
83
71
  minRelevanceScore: z.number(),
84
72
  }).optional(),
73
+ memvid: z.object({
74
+ enabled: z.boolean(),
75
+ autoStore: z.boolean(),
76
+ useEmbeddings: z.boolean(),
77
+ embeddingModel: z.string().optional(),
78
+ }).optional(),
85
79
  });
86
80
  const DEFAULT_CONFIG = {
87
81
  sources: {
@@ -90,7 +84,6 @@ const DEFAULT_CONFIG = {
90
84
  nilcoalescing: { enabled: true, configured: true },
91
85
  pointfree: { enabled: true, configured: true },
92
86
  patreon: { enabled: false, configured: false },
93
- 'github-sponsors': { enabled: false, configured: false },
94
87
  },
95
88
  prefetchSources: true,
96
89
  semanticRecall: {
@@ -98,6 +91,12 @@ const DEFAULT_CONFIG = {
98
91
  minLexicalScore: 0.35,
99
92
  minRelevanceScore: 70,
100
93
  },
94
+ memvid: {
95
+ enabled: true,
96
+ autoStore: true,
97
+ useEmbeddings: false,
98
+ embeddingModel: 'bge-small',
99
+ },
101
100
  };
102
101
  export class SourceManager {
103
102
  config;
@@ -239,6 +238,18 @@ export class SourceManager {
239
238
  isSemanticRecallEnabled() {
240
239
  return this.config.semanticRecall?.enabled ?? false;
241
240
  }
241
+ /**
242
+ * Get memvid configuration
243
+ */
244
+ getMemvidConfig() {
245
+ return this.config.memvid || DEFAULT_CONFIG.memvid;
246
+ }
247
+ /**
248
+ * Check if memvid is enabled
249
+ */
250
+ isMemvidEnabled() {
251
+ return this.config.memvid?.enabled ?? true;
252
+ }
242
253
  }
243
254
  export default SourceManager;
244
255
  //# sourceMappingURL=sources.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"sources.js","sourceRoot":"","sources":["../../src/config/sources.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sources.js","sourceRoot":"","sources":["../../src/config/sources.ts"],"names":[],"mappings":"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"}
package/build/index.js CHANGED
@@ -81,7 +81,7 @@ const CORE_TOOLS = [
81
81
  properties: {
82
82
  source: {
83
83
  type: "string",
84
- description: "Source ID (e.g., 'patreon', 'github-sponsors')",
84
+ description: "Source ID (e.g., 'patreon')",
85
85
  },
86
86
  },
87
87
  required: ["source"],
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -6,37 +6,36 @@ import { MCPTestClient, isCI } from './test-client.js';
6
6
  const describeIntegration = isCI ? describe.skip : describe;
7
7
  describeIntegration('Response Quality Validation', () => {
8
8
  let client;
9
+ let listSourcesResponse;
9
10
  beforeAll(async () => {
10
11
  client = new MCPTestClient();
11
12
  await client.start();
13
+ // Cache expensive list_content_sources call
14
+ listSourcesResponse = await client.callToolText('list_content_sources');
12
15
  }, 10000);
13
16
  afterAll(async () => {
14
17
  await client.stop();
15
18
  });
16
19
  describe('list_content_sources response format', () => {
17
- it('should have clear markdown structure', async () => {
18
- const response = await client.callToolText('list_content_sources');
19
- expect(response).toMatch(/^# /m);
20
- expect(response).toMatch(/## /m);
21
- expect(response).toContain('Free Sources');
22
- expect(response).toContain('Premium Sources');
20
+ it('should have clear markdown structure', () => {
21
+ expect(listSourcesResponse).toMatch(/^# /m);
22
+ expect(listSourcesResponse).toMatch(/## /m);
23
+ expect(listSourcesResponse).toContain('Free Sources');
24
+ expect(listSourcesResponse).toContain('Premium Sources');
23
25
  });
24
- it('should list all expected free sources', async () => {
25
- const response = await client.callToolText('list_content_sources');
26
+ it('should list all expected free sources', () => {
26
27
  // Verify all free sources are listed
27
- expect(response).toContain('Swift by Sundell');
28
- expect(response).toContain('Antoine van der Lee');
29
- expect(response).toContain('Nil Coalescing');
30
- expect(response).toContain('Point-Free');
28
+ expect(listSourcesResponse).toContain('Swift by Sundell');
29
+ expect(listSourcesResponse).toContain('Antoine van der Lee');
30
+ expect(listSourcesResponse).toContain('Nil Coalescing');
31
+ expect(listSourcesResponse).toContain('Point-Free');
31
32
  });
32
- it('should show status indicators for each source', async () => {
33
- const response = await client.callToolText('list_content_sources');
33
+ it('should show status indicators for each source', () => {
34
34
  // Each source should have a status indicator
35
- expect(response).toMatch(/✅|⚙️|⬜/);
35
+ expect(listSourcesResponse).toMatch(/✅|⚙️|⬜/);
36
36
  });
37
- it('should include actionable setup instructions', async () => {
38
- const response = await client.callToolText('list_content_sources');
39
- expect(response).toContain('swift-patterns-mcp setup');
37
+ it('should include actionable setup instructions', () => {
38
+ expect(listSourcesResponse).toContain('swift-patterns-mcp setup');
40
39
  });
41
40
  });
42
41
  describe('get_swift_pattern response validation', () => {
@@ -120,7 +119,7 @@ describeIntegration('Response Quality Validation', () => {
120
119
  }, 30000);
121
120
  });
122
121
  describe('search_swift_content response validation', () => {
123
- it('should return results containing search terms', async () => {
122
+ it('should return relevant results with excerpts and proper formatting', async () => {
124
123
  const response = await client.callToolText('search_swift_content', {
125
124
  query: 'async await',
126
125
  });
@@ -131,6 +130,8 @@ describeIntegration('Response Quality Validation', () => {
131
130
  lowerResponse.includes('await') ||
132
131
  lowerResponse.includes('concurrency');
133
132
  expect(hasRelevantContent).toBe(true);
133
+ // Results should have some content beyond just titles (excerpts)
134
+ expect(response.length).toBeGreaterThan(200);
134
135
  }, 60000);
135
136
  it('should filter by requireCode when specified', async () => {
136
137
  const withCodeResponse = await client.callToolText('search_swift_content', {
@@ -141,13 +142,6 @@ describeIntegration('Response Quality Validation', () => {
141
142
  // This is hard to verify without parsing, but at minimum we should get results
142
143
  expect(withCodeResponse.length).toBeGreaterThan(50);
143
144
  }, 60000);
144
- it('should include excerpts in search results', async () => {
145
- const response = await client.callToolText('search_swift_content', {
146
- query: 'concurrency',
147
- });
148
- // Results should have some content beyond just titles
149
- expect(response.length).toBeGreaterThan(200);
150
- }, 60000);
151
145
  });
152
146
  describe('enable_source response validation', () => {
153
147
  it('should confirm enabling a valid free source', async () => {