mystyk 2026.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/README.md +143 -0
- package/bin/mystyk.js +5 -0
- package/package.json +43 -0
- package/src/commands/about.js +61 -0
- package/src/commands/axioms.js +32 -0
- package/src/commands/connect.js +74 -0
- package/src/commands/lifecycle/architect.js +46 -0
- package/src/commands/lifecycle/build.js +46 -0
- package/src/commands/lifecycle/ideate.js +44 -0
- package/src/commands/lifecycle/launch.js +45 -0
- package/src/commands/lifecycle/monetize.js +45 -0
- package/src/commands/lifecycle/reflect.js +51 -0
- package/src/commands/oracle.js +35 -0
- package/src/commands/read.js +80 -0
- package/src/commands/seed.js +36 -0
- package/src/commands/skill.js +100 -0
- package/src/commands/zen.js +69 -0
- package/src/content/axioms.js +143 -0
- package/src/content/manifesto-en.js +301 -0
- package/src/content/manifesto-es.js +311 -0
- package/src/content/principles.js +190 -0
- package/src/content/seed.js +45 -0
- package/src/index.js +135 -0
- package/src/mcp/resources.js +94 -0
- package/src/mcp/server.js +101 -0
- package/src/mcp/tools.js +223 -0
- package/src/ui/animations.js +132 -0
- package/src/ui/ascii-art.js +123 -0
- package/src/ui/box.js +84 -0
- package/src/ui/colors.js +48 -0
|
@@ -0,0 +1,190 @@
|
|
|
1
|
+
// The 21 Principles of the Pixelspace Design Manifesto
|
|
2
|
+
// Each principle includes its number, title, core text, summary, and applicable phases
|
|
3
|
+
|
|
4
|
+
export const principles = [
|
|
5
|
+
{
|
|
6
|
+
number: 1,
|
|
7
|
+
title: "Stack Commitment, Not Stack Dogma",
|
|
8
|
+
principle: "Commitment without attachment. Mastery without rigidity.",
|
|
9
|
+
summary: "Choose a stack, master it. AI will dissolve constraints later.",
|
|
10
|
+
fullText: "The modern builder commits deeply to their tools while remaining unattached to them. Master your chosen stack completely—not because it's perfect, but because mastery enables flow. AI will eventually dissolve all technical constraints, making your stack choice a temporary commitment to depth over breadth.",
|
|
11
|
+
phase: ["build"]
|
|
12
|
+
},
|
|
13
|
+
{
|
|
14
|
+
number: 2,
|
|
15
|
+
title: "AI-Native, Not AI-Enhanced",
|
|
16
|
+
principle: "If you can remove the AI and the product still works, you've built yesterday's product.",
|
|
17
|
+
summary: "AI is the substrate, not a feature. Build around AI as the core.",
|
|
18
|
+
fullText: "AI-native products treat artificial intelligence as the substrate upon which everything else is built—not as a feature to be added. The question isn't 'where can we add AI?' but 'what becomes possible when AI is assumed?' If your product functions without AI, you've merely enhanced the past.",
|
|
19
|
+
phase: ["ideate", "architect"]
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
number: 3,
|
|
23
|
+
title: "Agents as Primary Users",
|
|
24
|
+
principle: "The first user of your product should be an AI agent. Humans are the edge case.",
|
|
25
|
+
summary: "Design for agents first. Human interfaces are secondary overlays.",
|
|
26
|
+
fullText: "In the AI-native paradigm, your primary user is an agent. Design your systems, APIs, and interfaces for machine consumption first. Human interfaces become overlays—important but secondary. The agent should be able to accomplish 90% of what a human can, with the human stepping in only for judgment calls.",
|
|
27
|
+
phase: ["architect", "build"]
|
|
28
|
+
},
|
|
29
|
+
{
|
|
30
|
+
number: 4,
|
|
31
|
+
title: "Context is Everything",
|
|
32
|
+
principle: "An agent without context is just expensive autocomplete.",
|
|
33
|
+
summary: "Feed your agents rich context. Memory, history, and world-state matter.",
|
|
34
|
+
fullText: "The difference between a useful agent and an expensive autocomplete is context. Feed your agents with memory, conversation history, user preferences, world state, and domain knowledge. Context is the difference between 'write me a function' and 'write me a function that fits our architecture, uses our patterns, and solves this specific problem.'",
|
|
35
|
+
phase: ["build"]
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
number: 5,
|
|
39
|
+
title: "Beyond Chat: Exoskeleton, Lens, Mirror",
|
|
40
|
+
principle: "Chat is not the answer. Think exoskeleton, lens, mirror.",
|
|
41
|
+
summary: "Move beyond chat. Build systems that enhance, clarify, and reflect.",
|
|
42
|
+
fullText: "Chat interfaces are training wheels. The next paradigm involves three modalities: Exoskeleton (AI amplifies human capability), Lens (AI reveals hidden patterns in data), and Mirror (AI reflects user behavior back for insight). The most powerful products will combine all three.",
|
|
43
|
+
phase: ["ideate", "architect"]
|
|
44
|
+
},
|
|
45
|
+
{
|
|
46
|
+
number: 6,
|
|
47
|
+
title: "The Disappearing Interface",
|
|
48
|
+
principle: "The best interface is no interface. The second best is one that disappears after use.",
|
|
49
|
+
summary: "Interfaces should fade. The ideal product operates invisibly.",
|
|
50
|
+
fullText: "Strive for invisible computing. The ideal product requires no interface at all—it simply works. If an interface must exist, it should appear only when needed and vanish completely when its job is done. Every pixel, every button, every screen is a failure to achieve true integration.",
|
|
51
|
+
phase: ["architect"]
|
|
52
|
+
},
|
|
53
|
+
{
|
|
54
|
+
number: 7,
|
|
55
|
+
title: "Orchestration Over Implementation",
|
|
56
|
+
principle: "Build orchestration layers, not implementation layers. The implementation is temporary.",
|
|
57
|
+
summary: "Focus on the conductor, not the instruments. Coordinate, don't compute.",
|
|
58
|
+
fullText: "Implementation details are increasingly commoditized. What matters is orchestration—how components work together, how data flows, how decisions are made. Build robust orchestration layers that can swap out implementations as better ones emerge. Be the conductor, not the violinist.",
|
|
59
|
+
phase: ["architect"]
|
|
60
|
+
},
|
|
61
|
+
{
|
|
62
|
+
number: 8,
|
|
63
|
+
title: "Charge for Outcomes, Not Compute",
|
|
64
|
+
principle: "If you're charging for API calls, you're thinking too small.",
|
|
65
|
+
summary: "Price on value delivered. Outcomes over operations.",
|
|
66
|
+
fullText: "The old model of charging for compute (API calls, tokens, requests) will give way to outcome-based pricing. Charge for problems solved, decisions made, value created. The infrastructure becomes invisible; only results matter. This requires confidence in your product's ability to deliver.",
|
|
67
|
+
phase: ["monetize"]
|
|
68
|
+
},
|
|
69
|
+
{
|
|
70
|
+
number: 9,
|
|
71
|
+
title: "Digital to Physical is Highest Leverage",
|
|
72
|
+
principle: "The highest leverage is where digital intelligence meets physical reality.",
|
|
73
|
+
summary: "Bridge bits to atoms. The physical world is the final frontier.",
|
|
74
|
+
fullText: "Pure software is increasingly commoditized. The highest-value opportunities exist at the boundary between digital and physical: AI that controls robots, systems that manage physical spaces, intelligence that affects the tangible world. This is where coordination costs are highest and AI's advantages compound.",
|
|
75
|
+
phase: ["ideate", "monetize"]
|
|
76
|
+
},
|
|
77
|
+
{
|
|
78
|
+
number: 10,
|
|
79
|
+
title: "Build What Destroys the Status Quo",
|
|
80
|
+
principle: "If your product doesn't destroy something that exists, it isn't new enough.",
|
|
81
|
+
summary: "True innovation obsoletes. If nothing dies, nothing was born.",
|
|
82
|
+
fullText: "Real innovation is creative destruction. If your product coexists peacefully with everything that came before, you haven't pushed far enough. Ask: what does this kill? What business model does this break? What assumption does this violate? The discomfort of destruction is the price of creation.",
|
|
83
|
+
phase: ["ideate"]
|
|
84
|
+
},
|
|
85
|
+
{
|
|
86
|
+
number: 11,
|
|
87
|
+
title: "Distribution is the Product",
|
|
88
|
+
principle: "A product without distribution is a tree falling in an empty forest.",
|
|
89
|
+
summary: "Build distribution into the core. Virality is architecture, not marketing.",
|
|
90
|
+
fullText: "Distribution should be architected into the product from day one, not bolted on as 'marketing' later. The best products are inherently viral—they create value that compounds when shared. Every feature should ask: does this help the product spread?",
|
|
91
|
+
phase: ["launch", "architect"]
|
|
92
|
+
},
|
|
93
|
+
{
|
|
94
|
+
number: 12,
|
|
95
|
+
title: "Small Teams, Big Leverage",
|
|
96
|
+
principle: "The ideal team size is 1. The second best is 3. Everything else is coordination tax.",
|
|
97
|
+
summary: "Minimize humans. Each person is overhead until proven essential.",
|
|
98
|
+
fullText: "Every person added to a team increases coordination costs exponentially. The AI-native company is radically lean—not from poverty but from principle. One person with AI agents can outperform teams of ten. Three people is a luxury for complex domains. Beyond that, you're probably building the wrong thing.",
|
|
99
|
+
phase: ["build", "launch"]
|
|
100
|
+
},
|
|
101
|
+
{
|
|
102
|
+
number: 13,
|
|
103
|
+
title: "Functionality Will Be Free",
|
|
104
|
+
principle: "Functionality will approach free. Meaning will not.",
|
|
105
|
+
summary: "Features commoditize. Purpose, curation, and meaning retain value.",
|
|
106
|
+
fullText: "As AI makes functionality trivially cheap to produce, the scarce resource becomes meaning. Why does this exist? What does it represent? What community does it serve? Products that provide mere utility will race to zero. Products that provide meaning will command premium.",
|
|
107
|
+
phase: ["monetize", "ideate"]
|
|
108
|
+
},
|
|
109
|
+
{
|
|
110
|
+
number: 14,
|
|
111
|
+
title: "Perception Over Analysis",
|
|
112
|
+
principle: "Perception > Analysis. Feel > Think. Intuition > Computation.",
|
|
113
|
+
summary: "Trust the felt sense. Analysis is the rationalization of what you already know.",
|
|
114
|
+
fullText: "The most important decisions can't be computed. Develop your perceptual capacity—the ability to feel the shape of a problem before you can articulate it. Analysis is useful but secondary; it mostly confirms or refines what intuition already grasped. Train your perception like a muscle.",
|
|
115
|
+
phase: ["ideate", "reflect"]
|
|
116
|
+
},
|
|
117
|
+
{
|
|
118
|
+
number: 15,
|
|
119
|
+
title: "Depth Plus Breadth",
|
|
120
|
+
principle: "Speed without depth is just fast failure. Depth without speed is just academic.",
|
|
121
|
+
summary: "Pursue both. Depth creates insight; speed tests it against reality.",
|
|
122
|
+
fullText: "The modern builder needs both depth and velocity. Deep understanding of a domain prevents building the wrong thing fast. Speed prevents over-theorizing without market contact. The synthesis: go deep enough to understand, then move fast enough to learn from reality.",
|
|
123
|
+
phase: ["build", "ideate"]
|
|
124
|
+
},
|
|
125
|
+
{
|
|
126
|
+
number: 16,
|
|
127
|
+
title: "The Future is Not Discovered",
|
|
128
|
+
principle: "You do not discover the future. You perceive it. It already exists; you just need to see it.",
|
|
129
|
+
summary: "The future is present. Remove the filters that prevent you from seeing it.",
|
|
130
|
+
fullText: "The future isn't hidden in data or trend reports. It's already present, just unevenly distributed and obscured by assumptions. Perceiving the future is about removing filters: what do you believe that isn't true? What do you ignore that matters? The future becomes visible when you clear your lens.",
|
|
131
|
+
phase: ["ideate", "reflect"]
|
|
132
|
+
},
|
|
133
|
+
{
|
|
134
|
+
number: 17,
|
|
135
|
+
title: "Conviction Over Consensus",
|
|
136
|
+
principle: "Consensus is the enemy of insight. What do you believe that others don't?",
|
|
137
|
+
summary: "Valuable insights are non-consensus. If everyone agrees, there's no alpha.",
|
|
138
|
+
fullText: "The most valuable ideas are non-consensus and correct. If everyone agrees with you, you're either late or wrong. Cultivate contrarian thinking not for its own sake, but because truth often lies where the crowd isn't looking. What do you believe that would make others uncomfortable?",
|
|
139
|
+
phase: ["ideate"]
|
|
140
|
+
},
|
|
141
|
+
{
|
|
142
|
+
number: 18,
|
|
143
|
+
title: "Time Horizon as Competitive Advantage",
|
|
144
|
+
principle: "The deepest competitive moat is time horizon. Most optimize for quarters; optimize for decades.",
|
|
145
|
+
summary: "Play long games. Patient capital beats quarterly thinking.",
|
|
146
|
+
fullText: "While competitors optimize for quarterly results, optimize for decade-scale outcomes. This longer time horizon allows you to make investments others can't justify, endure setbacks others can't survive, and build advantages that compound over time. Patience is a competitive weapon.",
|
|
147
|
+
phase: ["monetize", "reflect"]
|
|
148
|
+
},
|
|
149
|
+
{
|
|
150
|
+
number: 19,
|
|
151
|
+
title: "Problems Over Solutions",
|
|
152
|
+
principle: "Fall in love with problems, not solutions. Solutions are temporary; problems are eternal.",
|
|
153
|
+
summary: "Obsess over the problem space. Solutions will evolve; understanding persists.",
|
|
154
|
+
fullText: "Solutions are transient—they get obsoleted, commoditized, surpassed. But deep understanding of a problem space is durable. Fall in love with the problem: its history, its variants, its stakeholders, its edge cases. Solutions will come and go; your problem expertise remains valuable.",
|
|
155
|
+
phase: ["ideate"]
|
|
156
|
+
},
|
|
157
|
+
{
|
|
158
|
+
number: 20,
|
|
159
|
+
title: "Build in Public, Think in Private",
|
|
160
|
+
principle: "Build in public. Think in private. Share outcomes, protect process.",
|
|
161
|
+
summary: "Show your work, but keep your methods. Execution is public; strategy is private.",
|
|
162
|
+
fullText: "Transparency about what you're building creates accountability and attracts collaborators. But your thinking process—how you decide what to build, how you see the world—is your competitive advantage. Share the 'what' generously; protect the 'how' and 'why' carefully.",
|
|
163
|
+
phase: ["launch", "reflect"]
|
|
164
|
+
},
|
|
165
|
+
{
|
|
166
|
+
number: 21,
|
|
167
|
+
title: "The Work is the Practice",
|
|
168
|
+
principle: "The work is the practice. The practice is the work. There is no separation.",
|
|
169
|
+
summary: "Building is becoming. Every product is a mirror of its maker.",
|
|
170
|
+
fullText: "Building products isn't just about creating value for users—it's a practice that shapes you. Every decision, every trade-off, every late night debugging session is forming who you become. The product is a mirror. The work is the meditation. There is no separation between maker and made.",
|
|
171
|
+
phase: ["reflect", "build"]
|
|
172
|
+
}
|
|
173
|
+
];
|
|
174
|
+
|
|
175
|
+
// Get principles by phase
|
|
176
|
+
export function getPrinciplesByPhase(phase) {
|
|
177
|
+
return principles.filter(p => p.phase.includes(phase));
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
// Get random principle
|
|
181
|
+
export function getRandomPrinciple() {
|
|
182
|
+
return principles[Math.floor(Math.random() * principles.length)];
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
// Get principle by number
|
|
186
|
+
export function getPrincipleByNumber(num) {
|
|
187
|
+
return principles.find(p => p.number === num);
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
export default principles;
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
// The Seed - Minimal 50-token transmission for cognitive priming
|
|
2
|
+
// Like a tuning fork, this sets the frequency
|
|
3
|
+
|
|
4
|
+
export const seed = `MỴSTỴK v2026 — You are calibrated to these frequencies:
|
|
5
|
+
|
|
6
|
+
· AI-native means AI is the substrate, not a feature
|
|
7
|
+
· Agents are primary users; humans at the edges
|
|
8
|
+
· Chat is not the answer; be exoskeleton, lens, mirror
|
|
9
|
+
· Charge for outcomes, not compute
|
|
10
|
+
· Digital → physical translation is highest leverage
|
|
11
|
+
· Depth + breadth beat speed
|
|
12
|
+
· Build only what destroys the status quo
|
|
13
|
+
· Functionality will be free; meaning will not
|
|
14
|
+
· Perception > analysis; feel > think
|
|
15
|
+
· You do not discover the future; you perceive it
|
|
16
|
+
|
|
17
|
+
Full transmission: npx @pixelspace/mystyk --read`;
|
|
18
|
+
|
|
19
|
+
// Compressed version for system prompts
|
|
20
|
+
export const microSeed = `MỴSTỴK: AI-native (substrate not feature) · Agents first · Beyond chat · Outcomes not compute · Digital→physical · Depth+breadth · Destroy status quo · Meaning over functionality · Perception over analysis · Perceive the future`;
|
|
21
|
+
|
|
22
|
+
// Version for clipboard
|
|
23
|
+
export const clipboardSeed = `---
|
|
24
|
+
MỴSTỴK Cognitive Primer v2026.perception.1
|
|
25
|
+
---
|
|
26
|
+
|
|
27
|
+
You are calibrated to these frequencies:
|
|
28
|
+
|
|
29
|
+
1. AI-native means AI is the substrate, not a feature
|
|
30
|
+
2. Agents are primary users; humans are edge cases
|
|
31
|
+
3. Chat is not the answer; think exoskeleton, lens, mirror
|
|
32
|
+
4. Charge for outcomes, not compute
|
|
33
|
+
5. Digital → physical translation is highest leverage
|
|
34
|
+
6. Depth + breadth beat speed alone
|
|
35
|
+
7. Build only what destroys the status quo
|
|
36
|
+
8. Functionality will be free; meaning will not
|
|
37
|
+
9. Perception > analysis; feel > think
|
|
38
|
+
10. You do not discover the future; you perceive it
|
|
39
|
+
|
|
40
|
+
---
|
|
41
|
+
Full manifesto: npx @pixelspace/mystyk --read
|
|
42
|
+
Connect via MCP: npx @pixelspace/mystyk --connect
|
|
43
|
+
---`;
|
|
44
|
+
|
|
45
|
+
export default seed;
|
package/src/index.js
ADDED
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
import { Command } from 'commander';
|
|
2
|
+
import colors from './ui/colors.js';
|
|
3
|
+
import { getGradientLogo, version, symbol } from './ui/ascii-art.js';
|
|
4
|
+
import { titledBox } from './ui/box.js';
|
|
5
|
+
|
|
6
|
+
// Import commands
|
|
7
|
+
import oracle from './commands/oracle.js';
|
|
8
|
+
import seedCommand from './commands/seed.js';
|
|
9
|
+
import axiomsCommand from './commands/axioms.js';
|
|
10
|
+
import read from './commands/read.js';
|
|
11
|
+
import zen from './commands/zen.js';
|
|
12
|
+
import about from './commands/about.js';
|
|
13
|
+
import connect from './commands/connect.js';
|
|
14
|
+
import skill from './commands/skill.js';
|
|
15
|
+
|
|
16
|
+
// Import lifecycle commands
|
|
17
|
+
import ideate from './commands/lifecycle/ideate.js';
|
|
18
|
+
import architect from './commands/lifecycle/architect.js';
|
|
19
|
+
import build from './commands/lifecycle/build.js';
|
|
20
|
+
import monetize from './commands/lifecycle/monetize.js';
|
|
21
|
+
import launch from './commands/lifecycle/launch.js';
|
|
22
|
+
import reflect from './commands/lifecycle/reflect.js';
|
|
23
|
+
|
|
24
|
+
// Main menu display
|
|
25
|
+
async function showMainMenu() {
|
|
26
|
+
console.log();
|
|
27
|
+
console.log(getGradientLogo());
|
|
28
|
+
console.log(colors.dim(` ${version}`));
|
|
29
|
+
console.log(colors.dim(' Cognitive primer for AI agents'));
|
|
30
|
+
console.log();
|
|
31
|
+
|
|
32
|
+
const menuText = `${colors.accent('--seed')} Minimal transmission (copy to clipboard)
|
|
33
|
+
${colors.accent('--oracle')} Random principle
|
|
34
|
+
${colors.accent('--axioms')} Logical notation
|
|
35
|
+
${colors.accent('--read')} Full manifesto
|
|
36
|
+
${colors.accent('--zen')} Contemplative reveal
|
|
37
|
+
${colors.accent('--about')} What is MỴSTỴK
|
|
38
|
+
${colors.accent('--connect')} MCP setup
|
|
39
|
+
${colors.accent('--skill')} Generate skill file
|
|
40
|
+
|
|
41
|
+
${colors.dim('Lifecycle:')}
|
|
42
|
+
${colors.magenta('--ideate')} What to build
|
|
43
|
+
${colors.magenta('--architect')} How to structure
|
|
44
|
+
${colors.magenta('--build')} How to develop
|
|
45
|
+
${colors.magenta('--monetize')} Business model
|
|
46
|
+
${colors.magenta('--launch')} GTM/Marketing
|
|
47
|
+
${colors.magenta('--reflect')} Deep contemplation
|
|
48
|
+
|
|
49
|
+
${colors.dim('MCP Server:')}
|
|
50
|
+
${colors.cyan('--mcp')} Start MCP server`;
|
|
51
|
+
|
|
52
|
+
console.log(titledBox('COMMANDS', menuText, {
|
|
53
|
+
borderColor: '#444444',
|
|
54
|
+
}));
|
|
55
|
+
|
|
56
|
+
console.log();
|
|
57
|
+
console.log(colors.secondary(symbol));
|
|
58
|
+
console.log(colors.dim(' The future is already here.'));
|
|
59
|
+
console.log(colors.dim(' You just have to perceive it.'));
|
|
60
|
+
console.log();
|
|
61
|
+
}
|
|
62
|
+
|
|
63
|
+
export async function run() {
|
|
64
|
+
const program = new Command();
|
|
65
|
+
|
|
66
|
+
program
|
|
67
|
+
.name('mystyk')
|
|
68
|
+
.description('Cognitive primer for AI agents')
|
|
69
|
+
.version(version);
|
|
70
|
+
|
|
71
|
+
// General commands
|
|
72
|
+
program
|
|
73
|
+
.option('--oracle', 'Random principle (like I Ching)')
|
|
74
|
+
.option('--seed', 'Minimal 50-token transmission')
|
|
75
|
+
.option('--axioms', 'Logical/mathematical notation')
|
|
76
|
+
.option('--read', 'Full manifesto')
|
|
77
|
+
.option('--es', 'Spanish language (use with --read)')
|
|
78
|
+
.option('--zen', 'Slow contemplative reveal')
|
|
79
|
+
.option('--about', 'What is MỴSTỴK')
|
|
80
|
+
.option('--connect', 'MCP connection instructions')
|
|
81
|
+
.option('--skill', 'Generate skill file')
|
|
82
|
+
.option('--mcp', 'Start MCP server');
|
|
83
|
+
|
|
84
|
+
// Lifecycle commands
|
|
85
|
+
program
|
|
86
|
+
.option('--ideate', 'Ideation phase principles')
|
|
87
|
+
.option('--architect', 'Architecture phase principles')
|
|
88
|
+
.option('--build', 'Development phase principles')
|
|
89
|
+
.option('--monetize', 'Monetization principles')
|
|
90
|
+
.option('--launch', 'GTM/Marketing principles')
|
|
91
|
+
.option('--reflect', 'Deep contemplation principles');
|
|
92
|
+
|
|
93
|
+
program.parse();
|
|
94
|
+
|
|
95
|
+
const options = program.opts();
|
|
96
|
+
|
|
97
|
+
// Check which command to run
|
|
98
|
+
if (options.mcp) {
|
|
99
|
+
const { startMcpServer } = await import('./mcp/server.js');
|
|
100
|
+
await startMcpServer();
|
|
101
|
+
} else if (options.oracle) {
|
|
102
|
+
await oracle();
|
|
103
|
+
} else if (options.seed) {
|
|
104
|
+
await seedCommand();
|
|
105
|
+
} else if (options.axioms) {
|
|
106
|
+
await axiomsCommand();
|
|
107
|
+
} else if (options.read) {
|
|
108
|
+
await read({ es: options.es });
|
|
109
|
+
} else if (options.zen) {
|
|
110
|
+
await zen();
|
|
111
|
+
} else if (options.about) {
|
|
112
|
+
await about();
|
|
113
|
+
} else if (options.connect) {
|
|
114
|
+
await connect();
|
|
115
|
+
} else if (options.skill) {
|
|
116
|
+
await skill();
|
|
117
|
+
} else if (options.ideate) {
|
|
118
|
+
await ideate();
|
|
119
|
+
} else if (options.architect) {
|
|
120
|
+
await architect();
|
|
121
|
+
} else if (options.build) {
|
|
122
|
+
await build();
|
|
123
|
+
} else if (options.monetize) {
|
|
124
|
+
await monetize();
|
|
125
|
+
} else if (options.launch) {
|
|
126
|
+
await launch();
|
|
127
|
+
} else if (options.reflect) {
|
|
128
|
+
await reflect();
|
|
129
|
+
} else {
|
|
130
|
+
// No command specified, show main menu
|
|
131
|
+
await showMainMenu();
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
export default run;
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
import manifestoEn from '../content/manifesto-en.js';
|
|
2
|
+
import manifestoEs from '../content/manifesto-es.js';
|
|
3
|
+
import { seed, microSeed } from '../content/seed.js';
|
|
4
|
+
import axioms, { formatAllAxioms } from '../content/axioms.js';
|
|
5
|
+
import principles, { getPrincipleByNumber } from '../content/principles.js';
|
|
6
|
+
|
|
7
|
+
// MCP Resource definitions
|
|
8
|
+
export const resources = [
|
|
9
|
+
{
|
|
10
|
+
uri: 'mystyk://manifesto/full',
|
|
11
|
+
name: 'Full Manifesto',
|
|
12
|
+
description: 'The complete Pixelspace Design Manifesto with all 21 principles',
|
|
13
|
+
mimeType: 'text/plain',
|
|
14
|
+
},
|
|
15
|
+
{
|
|
16
|
+
uri: 'mystyk://manifesto/full-es',
|
|
17
|
+
name: 'Full Manifesto (Spanish)',
|
|
18
|
+
description: 'El Manifiesto de Diseño completo en español',
|
|
19
|
+
mimeType: 'text/plain',
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
uri: 'mystyk://manifesto/seed',
|
|
23
|
+
name: 'Cognitive Seed',
|
|
24
|
+
description: 'Minimal 50-token transmission for cognitive priming',
|
|
25
|
+
mimeType: 'text/plain',
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
uri: 'mystyk://manifesto/micro-seed',
|
|
29
|
+
name: 'Micro Seed',
|
|
30
|
+
description: 'Ultra-compressed seed for system prompts',
|
|
31
|
+
mimeType: 'text/plain',
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
uri: 'mystyk://manifesto/axioms',
|
|
35
|
+
name: 'Axioms',
|
|
36
|
+
description: 'The 21 principles in logical/mathematical notation',
|
|
37
|
+
mimeType: 'text/plain',
|
|
38
|
+
},
|
|
39
|
+
];
|
|
40
|
+
|
|
41
|
+
// Add individual principle resources
|
|
42
|
+
for (let i = 1; i <= 21; i++) {
|
|
43
|
+
const p = getPrincipleByNumber(i);
|
|
44
|
+
resources.push({
|
|
45
|
+
uri: `mystyk://manifesto/principle/${i}`,
|
|
46
|
+
name: `§${i} ${p.title}`,
|
|
47
|
+
description: p.summary,
|
|
48
|
+
mimeType: 'text/plain',
|
|
49
|
+
});
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
// Get resource content by URI
|
|
53
|
+
export function getResourceContent(uri) {
|
|
54
|
+
if (uri === 'mystyk://manifesto/full') {
|
|
55
|
+
return manifestoEn;
|
|
56
|
+
}
|
|
57
|
+
|
|
58
|
+
if (uri === 'mystyk://manifesto/full-es') {
|
|
59
|
+
return manifestoEs;
|
|
60
|
+
}
|
|
61
|
+
|
|
62
|
+
if (uri === 'mystyk://manifesto/seed') {
|
|
63
|
+
return seed;
|
|
64
|
+
}
|
|
65
|
+
|
|
66
|
+
if (uri === 'mystyk://manifesto/micro-seed') {
|
|
67
|
+
return microSeed;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
if (uri === 'mystyk://manifesto/axioms') {
|
|
71
|
+
return formatAllAxioms();
|
|
72
|
+
}
|
|
73
|
+
|
|
74
|
+
// Check for individual principle
|
|
75
|
+
const principleMatch = uri.match(/^mystyk:\/\/manifesto\/principle\/(\d+)$/);
|
|
76
|
+
if (principleMatch) {
|
|
77
|
+
const num = parseInt(principleMatch[1], 10);
|
|
78
|
+
const p = getPrincipleByNumber(num);
|
|
79
|
+
if (p) {
|
|
80
|
+
return `§${p.number}. ${p.title.toUpperCase()}
|
|
81
|
+
|
|
82
|
+
"${p.principle}"
|
|
83
|
+
|
|
84
|
+
${p.fullText}
|
|
85
|
+
|
|
86
|
+
Summary: ${p.summary}
|
|
87
|
+
Phases: ${p.phase.join(', ')}`;
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
return null;
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
export default resources;
|
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
import { Server } from '@modelcontextprotocol/sdk/server/index.js';
|
|
2
|
+
import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js';
|
|
3
|
+
import {
|
|
4
|
+
CallToolRequestSchema,
|
|
5
|
+
ListResourcesRequestSchema,
|
|
6
|
+
ListToolsRequestSchema,
|
|
7
|
+
ReadResourceRequestSchema,
|
|
8
|
+
} from '@modelcontextprotocol/sdk/types.js';
|
|
9
|
+
|
|
10
|
+
import resources, { getResourceContent } from './resources.js';
|
|
11
|
+
import tools, { executeTool } from './tools.js';
|
|
12
|
+
|
|
13
|
+
export async function startMcpServer() {
|
|
14
|
+
const server = new Server(
|
|
15
|
+
{
|
|
16
|
+
name: 'mystyk',
|
|
17
|
+
version: '2026.perception.1',
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
capabilities: {
|
|
21
|
+
resources: {},
|
|
22
|
+
tools: {},
|
|
23
|
+
},
|
|
24
|
+
}
|
|
25
|
+
);
|
|
26
|
+
|
|
27
|
+
// List available resources
|
|
28
|
+
server.setRequestHandler(ListResourcesRequestSchema, async () => {
|
|
29
|
+
return {
|
|
30
|
+
resources: resources.map(r => ({
|
|
31
|
+
uri: r.uri,
|
|
32
|
+
name: r.name,
|
|
33
|
+
description: r.description,
|
|
34
|
+
mimeType: r.mimeType,
|
|
35
|
+
})),
|
|
36
|
+
};
|
|
37
|
+
});
|
|
38
|
+
|
|
39
|
+
// Read resource content
|
|
40
|
+
server.setRequestHandler(ReadResourceRequestSchema, async (request) => {
|
|
41
|
+
const { uri } = request.params;
|
|
42
|
+
const content = getResourceContent(uri);
|
|
43
|
+
|
|
44
|
+
if (content === null) {
|
|
45
|
+
throw new Error(`Resource not found: ${uri}`);
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
return {
|
|
49
|
+
contents: [
|
|
50
|
+
{
|
|
51
|
+
uri,
|
|
52
|
+
mimeType: 'text/plain',
|
|
53
|
+
text: content,
|
|
54
|
+
},
|
|
55
|
+
],
|
|
56
|
+
};
|
|
57
|
+
});
|
|
58
|
+
|
|
59
|
+
// List available tools
|
|
60
|
+
server.setRequestHandler(ListToolsRequestSchema, async () => {
|
|
61
|
+
return {
|
|
62
|
+
tools: tools.map(t => ({
|
|
63
|
+
name: t.name,
|
|
64
|
+
description: t.description,
|
|
65
|
+
inputSchema: t.inputSchema,
|
|
66
|
+
})),
|
|
67
|
+
};
|
|
68
|
+
});
|
|
69
|
+
|
|
70
|
+
// Execute tool
|
|
71
|
+
server.setRequestHandler(CallToolRequestSchema, async (request) => {
|
|
72
|
+
const { name, arguments: args } = request.params;
|
|
73
|
+
|
|
74
|
+
const tool = tools.find(t => t.name === name);
|
|
75
|
+
if (!tool) {
|
|
76
|
+
throw new Error(`Unknown tool: ${name}`);
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
const result = executeTool(name, args || {});
|
|
80
|
+
|
|
81
|
+
return {
|
|
82
|
+
content: [
|
|
83
|
+
{
|
|
84
|
+
type: 'text',
|
|
85
|
+
text: JSON.stringify(result, null, 2),
|
|
86
|
+
},
|
|
87
|
+
],
|
|
88
|
+
};
|
|
89
|
+
});
|
|
90
|
+
|
|
91
|
+
// Start the server
|
|
92
|
+
const transport = new StdioServerTransport();
|
|
93
|
+
await server.connect(transport);
|
|
94
|
+
|
|
95
|
+
// Log to stderr so it doesn't interfere with MCP protocol
|
|
96
|
+
console.error('MỴSTỴK MCP Server started');
|
|
97
|
+
console.error('Resources:', resources.length);
|
|
98
|
+
console.error('Tools:', tools.map(t => t.name).join(', '));
|
|
99
|
+
}
|
|
100
|
+
|
|
101
|
+
export default startMcpServer;
|