wyrm-mcp 5.10.0 β 5.11.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/README.md +41 -26
- package/dist/index.js +45 -0
- package/dist/index.js.map +1 -1
- package/package.json +20 -8
- package/scripts/postinstall.cjs +70 -28
- package/skills/wyrm-project-bootstrap/SKILL.md +124 -0
package/README.md
CHANGED
|
@@ -1,43 +1,58 @@
|
|
|
1
|
-
# π Wyrm β
|
|
1
|
+
# π Wyrm β the memory layer for AI assistants
|
|
2
2
|
|
|
3
|
-
> Your AI
|
|
3
|
+
> Your AI doesn't just need memory. It needs the *layer* that turns memory into compounding leverage.
|
|
4
4
|
|
|
5
|
-
[](https://www.npmjs.com/package/wyrm-mcp)
|
|
6
|
+
[](LICENSE)
|
|
7
|
+
[](packages/mcp-server)
|
|
8
|
+
[](https://www.typescriptlang.org/)
|
|
9
|
+
[](https://modelcontextprotocol.io)
|
|
10
10
|
|
|
11
11
|
---
|
|
12
12
|
|
|
13
|
-
##
|
|
13
|
+
## What Wyrm actually is
|
|
14
14
|
|
|
15
|
-
|
|
15
|
+
Wyrm is not "AI memory." It's the **substrate** that turns one-shot AI conversations into *accreting intelligence*. Five things, only one of which is memory:
|
|
16
16
|
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
17
|
+
1. **β Memory across sessions, tools, and projects.** Your AI inherits prior state instead of starting cold every conversation. Works with Claude / Copilot / Cursor / Windsurf / Codex.
|
|
18
|
+
2. **β Counter-pattern blocking.** When an approach fails, Wyrm records it. Next time, your AI is *blocked* from suggesting the same failed thing again. Other memory tools learn only from success β Wyrm learns from failure too.
|
|
19
|
+
3. **β Autonomous goal pursuit (OODA agent loop).** Set a persistent goal ("ship v2", "keep deps current weekly"), and the `wyrm-loop` daemon runs ObserveβOrientβDecideβAct iterations until success criteria are met.
|
|
20
|
+
4. **β― Federation.** Wyrm calls other MCP servers (GitHub, Slack, Linear, β¦) as tools. Buddy Protocol v1.0 lets Wyrm talk to other AI memory tools. Composes your whole stack into one mind.
|
|
21
|
+
5. **βΊ Creative substrate.** First-class design tokens (colour / type / spacing / motion / shadow / radius / breakpoint) and a tagged design-reference clipper β Wyrm is not just for code.
|
|
20
22
|
|
|
21
23
|
```
|
|
22
24
|
You: "What did we decide about the auth architecture last week?"
|
|
23
|
-
AI: *
|
|
24
|
-
|
|
25
|
+
AI: *calls wyrm_session_prime* "We went with JWT + refresh tokens, stored
|
|
26
|
+
in httpOnly cookies. Truth #142 cites the Tuesday session β there's
|
|
27
|
+
a downstream impact on the OAuth flow we should check first."
|
|
25
28
|
```
|
|
26
29
|
|
|
30
|
+
You don't ask for memory. The AI cites it on its own. Visibly, with sources.
|
|
31
|
+
|
|
27
32
|
---
|
|
28
33
|
|
|
29
|
-
##
|
|
30
|
-
|
|
31
|
-
-
|
|
32
|
-
-
|
|
33
|
-
-
|
|
34
|
-
-
|
|
35
|
-
-
|
|
36
|
-
-
|
|
37
|
-
-
|
|
38
|
-
-
|
|
39
|
-
-
|
|
40
|
-
-
|
|
34
|
+
## What's in the box (125 MCP tools)
|
|
35
|
+
|
|
36
|
+
- **β Memory** β projects, sessions, quests, ground truths, memory artifacts, hybrid FTS5 + vector search
|
|
37
|
+
- **β Counter-pattern** β failure check / record / resolve, blocks repeated mistakes at suggestion time
|
|
38
|
+
- **β¬’ Ground truths** β validated facts versioned with cascade-invalidation when upstream changes
|
|
39
|
+
- **β± Decision chain** β `wyrm_decided_because`, `decision_upstream` / `_downstream`, blast-radius traversal
|
|
40
|
+
- **β Agent loop** β `wyrm_goal_set`, `wyrm_agent_init`, daemon runs OODA until success criteria are met
|
|
41
|
+
- **β― Federation** β `wyrm_mcp_register` for outbound MCP, Buddy Protocol v1.0 for peer AI tools
|
|
42
|
+
- **πΈ Knowledge graph** β entity / relationship graph with shortest-path and neighborhood queries
|
|
43
|
+
- **π¨ Design substrate** β `design_tokens` + tagged `design_references` library
|
|
44
|
+
- **π‘ Audit chain** β hash-chained, Ed25519-signable audit log for SOC2 / HIPAA
|
|
45
|
+
- **π° Hour ledger + invoicing** β generate invoices from session content
|
|
46
|
+
- **π Federated team sync** β per-row `is_shared` flag; PII never leaves your box unless explicitly shared
|
|
47
|
+
- **π Encryption** β AES-256-GCM; keys never leave your machine
|
|
48
|
+
- **π Visibility tools** β `wyrm_intro` + `wyrm_digest` make Wyrm's work product legible to humans
|
|
49
|
+
|
|
50
|
+
## Built for these workflows
|
|
51
|
+
|
|
52
|
+
- **Founders** with multi-product portfolios β cross-project memory makes patterns from project A inform project B
|
|
53
|
+
- **Designers / creatives** β design tokens + reference clipper turn Wyrm into a creative substrate, not just a code-memory tool
|
|
54
|
+
- **Co-founders / operators** β `wyrm_digest` shows what Wyrm did this week in plain English
|
|
55
|
+
- **Long-running autonomous work** β agent loop runs your standing goals overnight
|
|
41
56
|
- π§ **Memory Artifacts** β Store lessons, patterns, anti-patterns, heuristics with confidence scoring and lifecycle tracking
|
|
42
57
|
- π§± **Ground Truths** β Versioned, validated project facts injected into every AI context build
|
|
43
58
|
- π§ **Reasoning Scaffolds** β Structured checklists surfaced automatically when task type matches
|
package/dist/index.js
CHANGED
|
@@ -516,6 +516,51 @@ const licenseInfo = getLicenseInfo();
|
|
|
516
516
|
if (licenseInfo.tier !== 'free') {
|
|
517
517
|
console.error(`Wyrm: Licensed β ${licenseInfo.tier} tier (expires: ${licenseInfo.expiresAt || 'never'})`);
|
|
518
518
|
}
|
|
519
|
+
// ==================== BUNDLED SKILLS AUTO-REGISTRATION ====================
|
|
520
|
+
// On first MCP server start after install, register skills bundled with the
|
|
521
|
+
// npm tarball. The postinstall hook writes ~/.wyrm/bundled-skills.json; we
|
|
522
|
+
// consume + delete it so registration runs exactly once per install.
|
|
523
|
+
try {
|
|
524
|
+
const homeDir = process.env.HOME || process.env.USERPROFILE || '';
|
|
525
|
+
const manifestPath = pathJoin(homeDir, '.wyrm', 'bundled-skills.json');
|
|
526
|
+
if (homeDir && fsExistsSync(manifestPath)) {
|
|
527
|
+
const manifest = JSON.parse(readFileSync(manifestPath, 'utf-8'));
|
|
528
|
+
let registered = 0;
|
|
529
|
+
for (const s of manifest.skills) {
|
|
530
|
+
try {
|
|
531
|
+
if (!fsExistsSync(s.path))
|
|
532
|
+
continue;
|
|
533
|
+
const body = readFileSync(s.path, 'utf-8');
|
|
534
|
+
// Parse the description from frontmatter β tolerant to the block-scalar
|
|
535
|
+
// `|` marker (skip the marker itself, capture the body lines).
|
|
536
|
+
const fmMatch = body.match(/^---\s*\n([\s\S]*?)\n---/);
|
|
537
|
+
let description = s.name;
|
|
538
|
+
let category;
|
|
539
|
+
if (fmMatch) {
|
|
540
|
+
const descMatch = fmMatch[1].match(/description:\s*\|?\s*\n([\s\S]*?)(?:\nname:|\nmetadata:|\ncategory:|\ntype:|$)/);
|
|
541
|
+
if (descMatch) {
|
|
542
|
+
description = descMatch[1].split('\n').map(l => l.trim()).filter(Boolean).join(' ').slice(0, 500);
|
|
543
|
+
}
|
|
544
|
+
const catMatch = fmMatch[1].match(/category:\s*([^\n]+)/);
|
|
545
|
+
if (catMatch)
|
|
546
|
+
category = catMatch[1].trim();
|
|
547
|
+
}
|
|
548
|
+
db.registerSkill(s.name, description, s.path, category, 'Ghost Protocol', undefined, 'bundled');
|
|
549
|
+
registered++;
|
|
550
|
+
}
|
|
551
|
+
catch { /* skip on per-skill error; never break startup */ }
|
|
552
|
+
}
|
|
553
|
+
if (registered > 0)
|
|
554
|
+
console.error(`Wyrm: Registered ${registered} bundled skill(s) on first start.`);
|
|
555
|
+
try {
|
|
556
|
+
unlinkSync(manifestPath);
|
|
557
|
+
}
|
|
558
|
+
catch { /* harmless */ }
|
|
559
|
+
}
|
|
560
|
+
}
|
|
561
|
+
catch {
|
|
562
|
+
// Bundled skill registration is best-effort β never block server startup.
|
|
563
|
+
}
|
|
519
564
|
// ==================== PERSISTENT ANALYTICS ====================
|
|
520
565
|
const analytics = new WyrmAnalytics(db.getDatabase());
|
|
521
566
|
// ==================== CLOUD BACKUP (Pro+) ====================
|