@rubytech/create-maxy-code 0.1.169 → 0.1.171
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/dist/__tests__/premium-mcp-discover.test.js +42 -0
- package/dist/lib/premium-mcp-discover.js +9 -2
- package/package.json +1 -1
- package/payload/platform/plugins/.claude-plugin/marketplace.json +0 -15
- package/payload/platform/plugins/docs/references/platform.md +1 -1
- package/payload/premium-plugins/writer-craft/lib/mcp-stderr-tee/dist/index.d.ts +51 -0
- package/payload/premium-plugins/writer-craft/lib/mcp-stderr-tee/dist/index.d.ts.map +1 -0
- package/payload/premium-plugins/writer-craft/lib/mcp-stderr-tee/dist/index.js +196 -0
- package/payload/premium-plugins/writer-craft/lib/mcp-stderr-tee/dist/index.js.map +1 -0
- package/payload/premium-plugins/writer-craft/lib/mcp-stderr-tee/package.json +7 -0
- package/payload/premium-plugins/writer-craft/mcp/dist/index.d.ts +3 -0
- package/payload/premium-plugins/writer-craft/mcp/dist/index.d.ts.map +1 -0
- package/payload/premium-plugins/writer-craft/mcp/dist/index.js +257 -0
- package/payload/premium-plugins/writer-craft/mcp/dist/index.js.map +1 -0
- package/payload/premium-plugins/writer-craft/mcp/dist/lib/neo4j.d.ts +14 -0
- package/payload/premium-plugins/writer-craft/mcp/dist/lib/neo4j.d.ts.map +1 -0
- package/payload/premium-plugins/writer-craft/mcp/dist/lib/neo4j.js +47 -0
- package/payload/premium-plugins/writer-craft/mcp/dist/lib/neo4j.js.map +1 -0
- package/payload/premium-plugins/writer-craft/mcp/dist/lib/voice-corpus.d.ts +42 -0
- package/payload/premium-plugins/writer-craft/mcp/dist/lib/voice-corpus.d.ts.map +1 -0
- package/payload/{platform/plugins/writer-craft/mcp/src/lib/voice-corpus.ts → premium-plugins/writer-craft/mcp/dist/lib/voice-corpus.js} +5 -5
- package/payload/premium-plugins/writer-craft/mcp/dist/lib/voice-corpus.js.map +1 -0
- package/payload/premium-plugins/writer-craft/mcp/dist/tools/voice-distil-profile.d.ts +36 -0
- package/payload/premium-plugins/writer-craft/mcp/dist/tools/voice-distil-profile.d.ts.map +1 -0
- package/payload/premium-plugins/writer-craft/mcp/dist/tools/voice-distil-profile.js +225 -0
- package/payload/premium-plugins/writer-craft/mcp/dist/tools/voice-distil-profile.js.map +1 -0
- package/payload/premium-plugins/writer-craft/mcp/dist/tools/voice-record-feedback.d.ts +26 -0
- package/payload/premium-plugins/writer-craft/mcp/dist/tools/voice-record-feedback.d.ts.map +1 -0
- package/payload/premium-plugins/writer-craft/mcp/dist/tools/voice-record-feedback.js +74 -0
- package/payload/premium-plugins/writer-craft/mcp/dist/tools/voice-record-feedback.js.map +1 -0
- package/payload/premium-plugins/writer-craft/mcp/dist/tools/voice-retrieve-conditioning.d.ts +22 -0
- package/payload/premium-plugins/writer-craft/mcp/dist/tools/voice-retrieve-conditioning.d.ts.map +1 -0
- package/payload/premium-plugins/writer-craft/mcp/dist/tools/voice-retrieve-conditioning.js +102 -0
- package/payload/premium-plugins/writer-craft/mcp/dist/tools/voice-retrieve-conditioning.js.map +1 -0
- package/payload/premium-plugins/writer-craft/mcp/dist/tools/voice-tag-content.d.ts +14 -0
- package/payload/premium-plugins/writer-craft/mcp/dist/tools/voice-tag-content.d.ts.map +1 -0
- package/payload/premium-plugins/writer-craft/mcp/dist/tools/voice-tag-content.js +84 -0
- package/payload/premium-plugins/writer-craft/mcp/dist/tools/voice-tag-content.js.map +1 -0
- package/payload/premium-plugins/writer-craft/mcp/package-lock.json +1327 -0
- package/payload/server/{chunk-3TRIXQSJ.js → chunk-L2YK2VK3.js} +17 -29
- package/payload/server/maxy-edge.js +1 -1
- package/payload/server/server.js +1 -1
- package/payload/platform/plugins/teaching/.claude-plugin/plugin.json +0 -8
- package/payload/platform/plugins/teaching/PLUGIN.md +0 -58
- package/payload/platform/plugins/teaching/skills/interactive-tutor/SKILL.md +0 -59
- package/payload/platform/plugins/teaching/skills/interactive-tutor/references/assessment.md +0 -70
- package/payload/platform/plugins/teaching/skills/interactive-tutor/references/classroom-conduct.md +0 -43
- package/payload/platform/plugins/teaching/skills/interactive-tutor/references/teaching-modes.md +0 -83
- package/payload/platform/plugins/teaching/skills/lesson-planner/SKILL.md +0 -48
- package/payload/platform/plugins/teaching/skills/lesson-planner/references/context-gathering.md +0 -41
- package/payload/platform/plugins/teaching/skills/lesson-planner/references/plan-structure.md +0 -94
- package/payload/platform/plugins/teaching/skills/study-pack-builder/SKILL.md +0 -52
- package/payload/platform/plugins/teaching/skills/study-pack-builder/references/disaggregation.md +0 -49
- package/payload/platform/plugins/teaching/skills/study-pack-builder/references/materials.md +0 -116
- package/payload/platform/plugins/venture-studio/.claude-plugin/plugin.json +0 -8
- package/payload/platform/plugins/venture-studio/PLUGIN.md +0 -119
- package/payload/platform/plugins/venture-studio/bin/scaffold.sh +0 -116
- package/payload/platform/plugins/venture-studio/skills/brand-pack/SKILL.md +0 -256
- package/payload/platform/plugins/venture-studio/skills/brand-pack/references/color-psychology.md +0 -118
- package/payload/platform/plugins/venture-studio/skills/investor-data-room/SKILL.md +0 -376
- package/payload/platform/plugins/venture-studio/skills/investor-data-room/references/business-plan-template.md +0 -64
- package/payload/platform/plugins/venture-studio/skills/investor-data-room/references/compliance-research-checklist.md +0 -53
- package/payload/platform/plugins/venture-studio/skills/investor-data-room/references/data-room-structure.md +0 -88
- package/payload/platform/plugins/venture-studio/skills/investor-data-room/references/deck-blueprint-template.md +0 -39
- package/payload/platform/plugins/venture-studio/skills/investor-data-room/references/design-tokens-application.md +0 -79
- package/payload/platform/plugins/venture-studio/skills/investor-data-room/references/html-pdf-pipeline.md +0 -236
- package/payload/platform/plugins/venture-studio/skills/investor-data-room/references/internal-workings-scrub.md +0 -33
- package/payload/platform/plugins/venture-studio/skills/investor-data-room/references/termsheet-template.md +0 -88
- package/payload/platform/plugins/venture-studio/skills/investor-data-room/templates/prospectus/index.html +0 -1565
- package/payload/platform/plugins/venture-studio/skills/investor-data-room/templates/prospectus/render-pdf.mjs +0 -91
- package/payload/platform/plugins/venture-studio/skills/investor-data-room/templates/prospectus/term_sheet.html +0 -715
- package/payload/platform/plugins/venture-studio/skills/office-hours/SKILL.md +0 -587
- package/payload/platform/plugins/venture-studio/skills/prototype-host/SKILL.md +0 -179
- package/payload/platform/plugins/venture-studio/skills/prototype-host/references/cloudflared-ingress-edit.md +0 -81
- package/payload/platform/plugins/venture-studio/skills/prototype-host/references/scaffold-frameworks.md +0 -60
- package/payload/platform/plugins/venture-studio/skills/prototype-host/references/systemd-user-service.md +0 -104
- package/payload/platform/plugins/venture-studio/skills/zero-to-prototype/SKILL.md +0 -336
- package/payload/platform/plugins/venture-studio/skills/zero-to-prototype/references/aarrr-metrics.md +0 -275
- package/payload/platform/plugins/venture-studio/skills/zero-to-prototype/references/assumption-testing.md +0 -93
- package/payload/platform/plugins/venture-studio/skills/zero-to-prototype/references/boolean-search.md +0 -308
- package/payload/platform/plugins/venture-studio/skills/zero-to-prototype/references/build-measure-learn.md +0 -262
- package/payload/platform/plugins/venture-studio/skills/zero-to-prototype/references/business-model-canvas.md +0 -171
- package/payload/platform/plugins/venture-studio/skills/zero-to-prototype/references/commitment-signals.md +0 -246
- package/payload/platform/plugins/venture-studio/skills/zero-to-prototype/references/design-thinking.md +0 -183
- package/payload/platform/plugins/venture-studio/skills/zero-to-prototype/references/earlyvangelist.md +0 -190
- package/payload/platform/plugins/venture-studio/skills/zero-to-prototype/references/first-principles.md +0 -58
- package/payload/platform/plugins/venture-studio/skills/zero-to-prototype/references/fishbone.md +0 -114
- package/payload/platform/plugins/venture-studio/skills/zero-to-prototype/references/five-whys.md +0 -43
- package/payload/platform/plugins/venture-studio/skills/zero-to-prototype/references/ice-scoring.md +0 -237
- package/payload/platform/plugins/venture-studio/skills/zero-to-prototype/references/innovation-accounting.md +0 -290
- package/payload/platform/plugins/venture-studio/skills/zero-to-prototype/references/jtbd.md +0 -105
- package/payload/platform/plugins/venture-studio/skills/zero-to-prototype/references/landing-page.md +0 -361
- package/payload/platform/plugins/venture-studio/skills/zero-to-prototype/references/market-type.md +0 -167
- package/payload/platform/plugins/venture-studio/skills/zero-to-prototype/references/mom-test.md +0 -193
- package/payload/platform/plugins/venture-studio/skills/zero-to-prototype/references/mvp-types.md +0 -200
- package/payload/platform/plugins/venture-studio/skills/zero-to-prototype/references/og-images.md +0 -239
- package/payload/platform/plugins/venture-studio/skills/zero-to-prototype/references/pareto.md +0 -103
- package/payload/platform/plugins/venture-studio/skills/zero-to-prototype/references/persona-development.md +0 -291
- package/payload/platform/plugins/venture-studio/skills/zero-to-prototype/references/pivot-types.md +0 -225
- package/payload/platform/plugins/venture-studio/skills/zero-to-prototype/references/positioning-statement.md +0 -179
- package/payload/platform/plugins/venture-studio/skills/zero-to-prototype/references/prd.md +0 -363
- package/payload/platform/plugins/venture-studio/skills/zero-to-prototype/references/pre-mortem.md +0 -74
- package/payload/platform/plugins/venture-studio/skills/zero-to-prototype/references/problem-validation.md +0 -253
- package/payload/platform/plugins/venture-studio/skills/zero-to-prototype/references/product-market-fit.md +0 -256
- package/payload/platform/plugins/venture-studio/skills/zero-to-prototype/references/research-synthesis.md +0 -276
- package/payload/platform/plugins/venture-studio/skills/zero-to-prototype/references/three-engines-of-growth.md +0 -248
- package/payload/platform/plugins/venture-studio/skills/zero-to-prototype/references/validation-tests.md +0 -89
- package/payload/platform/plugins/venture-studio/skills/zero-to-prototype/references/value-proposition-canvas.md +0 -121
- package/payload/platform/plugins/venture-studio/skills/zero-to-prototype/references/win-loss-analysis.md +0 -242
- package/payload/platform/plugins/venture-studio/skills/zero-to-prototype/references/workflow-mapping.md +0 -271
- package/payload/platform/plugins/writer-craft/.claude-plugin/plugin.json +0 -17
- package/payload/platform/plugins/writer-craft/PLUGIN.md +0 -130
- package/payload/platform/plugins/writer-craft/agents/writer-craft--manuscript-reviewer.md +0 -96
- package/payload/platform/plugins/writer-craft/mcp/package.json +0 -19
- package/payload/platform/plugins/writer-craft/mcp/scripts/smoke.mjs +0 -152
- package/payload/platform/plugins/writer-craft/mcp/src/index.ts +0 -289
- package/payload/platform/plugins/writer-craft/mcp/src/lib/neo4j.ts +0 -56
- package/payload/platform/plugins/writer-craft/mcp/src/tools/voice-distil-profile.ts +0 -303
- package/payload/platform/plugins/writer-craft/mcp/src/tools/voice-record-feedback.ts +0 -114
- package/payload/platform/plugins/writer-craft/mcp/src/tools/voice-retrieve-conditioning.ts +0 -145
- package/payload/platform/plugins/writer-craft/mcp/src/tools/voice-tag-content.ts +0 -117
- package/payload/platform/plugins/writer-craft/mcp/tsconfig.json +0 -8
- package/payload/platform/plugins/writer-craft/skills/citation-style/SKILL.md +0 -94
- package/payload/platform/plugins/writer-craft/skills/citation-style/references/book-and-chapter-models.md +0 -77
- package/payload/platform/plugins/writer-craft/skills/citation-style/references/citation-rules.md +0 -103
- package/payload/platform/plugins/writer-craft/skills/citation-style/references/journal-article-models.md +0 -74
- package/payload/platform/plugins/writer-craft/skills/citation-style/references/other-source-models.md +0 -146
- package/payload/platform/plugins/writer-craft/skills/citation-style/references/reference-list-rules.md +0 -70
- package/payload/platform/plugins/writer-craft/skills/editorial-practice/SKILL.md +0 -108
- package/payload/platform/plugins/writer-craft/skills/editorial-practice/references/copyediting.md +0 -73
- package/payload/platform/plugins/writer-craft/skills/editorial-practice/references/developmental-editing.md +0 -85
- package/payload/platform/plugins/writer-craft/skills/editorial-practice/references/genre-specific-editing.md +0 -78
- package/payload/platform/plugins/writer-craft/skills/editorial-practice/references/line-editing.md +0 -55
- package/payload/platform/plugins/writer-craft/skills/editorial-practice/references/self-editing.md +0 -89
- package/payload/platform/plugins/writer-craft/skills/persuasive-storytelling/SKILL.md +0 -114
- package/payload/platform/plugins/writer-craft/skills/persuasive-storytelling/references/audience-analysis.md +0 -73
- package/payload/platform/plugins/writer-craft/skills/persuasive-storytelling/references/crafting-persuasive-story.md +0 -76
- package/payload/platform/plugins/writer-craft/skills/persuasive-storytelling/references/persuasion-case-studies.md +0 -67
- package/payload/platform/plugins/writer-craft/skills/persuasive-storytelling/references/transformation-framework.md +0 -86
- package/payload/platform/plugins/writer-craft/skills/point-of-view/SKILL.md +0 -97
- package/payload/platform/plugins/writer-craft/skills/point-of-view/references/indirect-narration.md +0 -72
- package/payload/platform/plugins/writer-craft/skills/point-of-view/references/pov-types-and-voice.md +0 -91
- package/payload/platform/plugins/writer-craft/skills/point-of-view/references/protagonist-filter.md +0 -71
- package/payload/platform/plugins/writer-craft/skills/point-of-view/references/tense-and-person.md +0 -85
- package/payload/platform/plugins/writer-craft/skills/prose-craft/SKILL.md +0 -100
- package/payload/platform/plugins/writer-craft/skills/prose-craft/references/punctuation-and-grammar.md +0 -72
- package/payload/platform/plugins/writer-craft/skills/prose-craft/references/repetition.md +0 -71
- package/payload/platform/plugins/writer-craft/skills/prose-craft/references/sound-and-rhythm.md +0 -64
- package/payload/platform/plugins/writer-craft/skills/prose-craft/references/word-economy.md +0 -93
- package/payload/platform/plugins/writer-craft/skills/reader-engagement/SKILL.md +0 -100
- package/payload/platform/plugins/writer-craft/skills/reader-engagement/references/cause-effect-setup-payoff.md +0 -79
- package/payload/platform/plugins/writer-craft/skills/reader-engagement/references/conflict-escalation.md +0 -81
- package/payload/platform/plugins/writer-craft/skills/reader-engagement/references/hooking-readers.md +0 -67
- package/payload/platform/plugins/writer-craft/skills/reader-engagement/references/neurochemistry-of-engagement.md +0 -94
- package/payload/platform/plugins/writer-craft/skills/review-manuscript/SKILL.md +0 -111
- package/payload/platform/plugins/writer-craft/skills/review-manuscript/references/review-manuscript-checklist.md +0 -119
- package/payload/platform/plugins/writer-craft/skills/review-prose/SKILL.md +0 -99
- package/payload/platform/plugins/writer-craft/skills/review-prose/references/prose-review-checklist.md +0 -112
- package/payload/platform/plugins/writer-craft/skills/review-scene/SKILL.md +0 -99
- package/payload/platform/plugins/writer-craft/skills/review-scene/references/scene-analysis-framework.md +0 -95
- package/payload/platform/plugins/writer-craft/skills/story-architecture/SKILL.md +0 -106
- package/payload/platform/plugins/writer-craft/skills/story-architecture/references/blueprinting-and-scene-cards.md +0 -118
- package/payload/platform/plugins/writer-craft/skills/story-architecture/references/inner-issue-and-protagonist-goal.md +0 -66
- package/payload/platform/plugins/writer-craft/skills/story-architecture/references/misbelief-desire-worldview.md +0 -87
- package/payload/platform/plugins/writer-craft/skills/story-architecture/references/origin-scenes-and-escalation.md +0 -82
- package/payload/platform/plugins/writer-craft/skills/story-blueprint/SKILL.md +0 -133
- package/payload/platform/plugins/writer-craft/skills/story-blueprint/references/blueprinting-exercises.md +0 -118
- package/payload/platform/plugins/writer-craft/skills/story-blueprint/references/blueprinting-process.md +0 -128
- package/payload/platform/plugins/writer-craft/skills/voice-mirror/SKILL.md +0 -166
|
@@ -83,3 +83,45 @@ test("findPremiumMcpDirs: skips bundle missing plugins/ subdir", () => {
|
|
|
83
83
|
rmSync(dir, { recursive: true, force: true });
|
|
84
84
|
}
|
|
85
85
|
});
|
|
86
|
+
test("findPremiumMcpDirs: discovers standalone MCP at premium-plugins/<bundle>/mcp/", () => {
|
|
87
|
+
const dir = mkdtempSync(join(tmpdir(), "premium-mcp-"));
|
|
88
|
+
try {
|
|
89
|
+
makeTree(dir, {
|
|
90
|
+
"premium-plugins/writer-craft/mcp/package.json": "{}",
|
|
91
|
+
});
|
|
92
|
+
assert.deepEqual(findPremiumMcpDirs(dir), [
|
|
93
|
+
join(dir, "premium-plugins/writer-craft/mcp"),
|
|
94
|
+
]);
|
|
95
|
+
}
|
|
96
|
+
finally {
|
|
97
|
+
rmSync(dir, { recursive: true, force: true });
|
|
98
|
+
}
|
|
99
|
+
});
|
|
100
|
+
test("findPremiumMcpDirs: standalone + bundle-sub coexist under different bundles", () => {
|
|
101
|
+
const dir = mkdtempSync(join(tmpdir(), "premium-mcp-"));
|
|
102
|
+
try {
|
|
103
|
+
makeTree(dir, {
|
|
104
|
+
"premium-plugins/writer-craft/mcp/package.json": "{}",
|
|
105
|
+
"premium-plugins/real-agent/plugins/loop/mcp/package.json": "{}",
|
|
106
|
+
});
|
|
107
|
+
assert.deepEqual(findPremiumMcpDirs(dir), [
|
|
108
|
+
join(dir, "premium-plugins/real-agent/plugins/loop/mcp"),
|
|
109
|
+
join(dir, "premium-plugins/writer-craft/mcp"),
|
|
110
|
+
]);
|
|
111
|
+
}
|
|
112
|
+
finally {
|
|
113
|
+
rmSync(dir, { recursive: true, force: true });
|
|
114
|
+
}
|
|
115
|
+
});
|
|
116
|
+
test("findPremiumMcpDirs: ignores standalone bundle with no mcp/ dir", () => {
|
|
117
|
+
const dir = mkdtempSync(join(tmpdir(), "premium-mcp-"));
|
|
118
|
+
try {
|
|
119
|
+
makeTree(dir, {
|
|
120
|
+
"premium-plugins/teaching/PLUGIN.md": "---\nname: teaching\n---\n",
|
|
121
|
+
});
|
|
122
|
+
assert.deepEqual(findPremiumMcpDirs(dir), []);
|
|
123
|
+
}
|
|
124
|
+
finally {
|
|
125
|
+
rmSync(dir, { recursive: true, force: true });
|
|
126
|
+
}
|
|
127
|
+
});
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
// Pure premium-plugin MCP directory discovery.
|
|
2
2
|
//
|
|
3
|
-
//
|
|
3
|
+
// Two shapes:
|
|
4
4
|
//
|
|
5
|
-
// <installDir>/premium-plugins/<bundle>/
|
|
5
|
+
// Standalone: <installDir>/premium-plugins/<bundle>/mcp/package.json
|
|
6
|
+
// Bundle sub: <installDir>/premium-plugins/<bundle>/plugins/<plugin>/mcp/package.json
|
|
6
7
|
//
|
|
7
8
|
// Recursive walks would match nested dirs that aren't real MCP plugins;
|
|
8
9
|
// the explicit walk eliminates that class of false positive. Each level
|
|
@@ -18,6 +19,12 @@ export function findPremiumMcpDirs(installDir) {
|
|
|
18
19
|
for (const bundle of readdirSync(root, { withFileTypes: true })) {
|
|
19
20
|
if (!bundle.isDirectory())
|
|
20
21
|
continue;
|
|
22
|
+
// Standalone shape: premium-plugins/<bundle>/mcp/
|
|
23
|
+
const standaloneMcp = join(root, bundle.name, "mcp");
|
|
24
|
+
if (existsSync(join(standaloneMcp, "package.json"))) {
|
|
25
|
+
out.push(standaloneMcp);
|
|
26
|
+
}
|
|
27
|
+
// Bundle-sub shape: premium-plugins/<bundle>/plugins/<plugin>/mcp/
|
|
21
28
|
const pluginsRoot = join(root, bundle.name, "plugins");
|
|
22
29
|
if (!existsSync(pluginsRoot))
|
|
23
30
|
continue;
|
package/package.json
CHANGED
|
@@ -104,21 +104,11 @@
|
|
|
104
104
|
"source": "./substack-import",
|
|
105
105
|
"version": "0.1.0"
|
|
106
106
|
},
|
|
107
|
-
{
|
|
108
|
-
"name": "teaching",
|
|
109
|
-
"source": "./teaching",
|
|
110
|
-
"version": "0.1.0"
|
|
111
|
-
},
|
|
112
107
|
{
|
|
113
108
|
"name": "telegram",
|
|
114
109
|
"source": "./telegram",
|
|
115
110
|
"version": "0.1.0"
|
|
116
111
|
},
|
|
117
|
-
{
|
|
118
|
-
"name": "venture-studio",
|
|
119
|
-
"source": "./venture-studio",
|
|
120
|
-
"version": "0.1.0"
|
|
121
|
-
},
|
|
122
112
|
{
|
|
123
113
|
"name": "whatsapp",
|
|
124
114
|
"source": "./whatsapp",
|
|
@@ -134,11 +124,6 @@
|
|
|
134
124
|
"source": "./workflows",
|
|
135
125
|
"version": "0.1.0"
|
|
136
126
|
},
|
|
137
|
-
{
|
|
138
|
-
"name": "writer-craft",
|
|
139
|
-
"source": "./writer-craft",
|
|
140
|
-
"version": "0.1.0"
|
|
141
|
-
},
|
|
142
127
|
{
|
|
143
128
|
"name": "x-import",
|
|
144
129
|
"source": "./x-import",
|
|
@@ -31,7 +31,7 @@ Everything {{productName}} can do is provided by a plugin. Each plugin is a self
|
|
|
31
31
|
|
|
32
32
|
**How tools and roles reach the session.** Each `claude` PTY spawn registers every plugin's MCP server and every bundled subagent directory before the operator's first turn — a per-spawn `mcp-config.json` written by the session manager and passed as `--mcp-config` on the PTY argv, plus one `--add-dir` per agents directory. Admin sessions see every plugin and every role; public sessions see only plugins with at least one public-allowlisted tool. The manager refuses to start when a plugin's `PLUGIN.md` declares tools without a matching `mcp:` block (forensic signal: `boot-failed reason=mcp-allowlist-without-server …`). See `internals.md` "Spawn-time MCP and subagent registration" for the full mechanism and `internals.md` "Tool Eagerness" for the separate ToolSearch-vs-eager registration concern.
|
|
33
33
|
|
|
34
|
-
**Where premium bundle subs live.** Bundle subs (`loop`, `property-data`, `brochures`, etc. inside `real-agent`) live exclusively at `premium-plugins/<bundle>/plugins/<sub>/` and are registered via the resolver's bundle-descent walk.
|
|
34
|
+
**Where premium bundle subs live.** Bundle subs (`loop`, `property-data`, `brochures`, etc. inside `real-agent`) live exclusively at `premium-plugins/<bundle>/plugins/<sub>/` and are registered via the resolver's bundle-descent walk. Standalone premiums (no `BUNDLE.md`, e.g. `writer-craft`, `teaching`, `venture-studio`) live exclusively at `premium-plugins/<name>/` and are registered via the resolver's dual-root scan (`platform/plugins/` and `premium-plugins/` are both `pluginsRoots`). Neither shape is flat-copied into `platform/plugins/<name>/`. A divergent flat copy of a bundle sub is treated as an operator override: the resolver refuses to boot with `boot-failed reason=mcp-plugin-duplicate <plugin> declared by more than one plugins root: <pathA> (sha=…) vs <pathB> (sha=…)` so the operator can `sha256sum` both paths and remove the stale one. Byte-identical bundle-sub flat copies left over from installer versions that flat-copied bundle subs are reaped on the first post-upgrade boot (`[premium-auto-deliver] reaped sub=<name> reason=duplicate-of-premium-tree`). Standalone flat copies (leaked by the pre-fix `autoDeliverPremiumPlugins` standalone branch) are reaped unconditionally — there is no documented override path for standalones at `platform/plugins/<name>/` — and the reaper logs `[premium-auto-deliver] reaped standalone=<name> matches-source=<true|false>` so divergent reaps leave a forensic trail.
|
|
35
35
|
|
|
36
36
|
Plugins are installed and managed through conversation. You can add marketplace plugins (like Stripe) or use {{productName}}'s built-in ones (contacts, memory, Telegram).
|
|
37
37
|
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MCP server stderr tee — dual-destination log capture.
|
|
3
|
+
*
|
|
4
|
+
* Claude Code spawns MCP servers as child processes and consumes their stderr
|
|
5
|
+
* internally. The platform cannot intercept at the spawn level. Each server
|
|
6
|
+
* must tee its own stderr so diagnostic output is retrievable.
|
|
7
|
+
*
|
|
8
|
+
* ┌─────────────────────────┐
|
|
9
|
+
* │ MCP server process │
|
|
10
|
+
* │ │
|
|
11
|
+
* │ console.error("[x] ..") │
|
|
12
|
+
* │ │ │
|
|
13
|
+
* │ ▼ │
|
|
14
|
+
* │ patched stderr.write() │
|
|
15
|
+
* │ │ │
|
|
16
|
+
* │ ├──► original stderr (consumed by Claude Code — opaque)
|
|
17
|
+
* │ │
|
|
18
|
+
* │ ├──► mcp-{name}-stderr-{YYYY-MM-DD}.log (raw chunks, per-plugin)
|
|
19
|
+
* │ │
|
|
20
|
+
* │ └──► $STREAM_LOG_PATH (per-line, prefixed)
|
|
21
|
+
* │ "[<iso>] [mcp:{name}] <line>"
|
|
22
|
+
* └─────────────────────────┘
|
|
23
|
+
*
|
|
24
|
+
* $STREAM_LOG_PATH is set by the spawner (`getMcpServers` in `claude-agent.ts`)
|
|
25
|
+
* to the per-conversation stream log file. The MCP server code itself knows
|
|
26
|
+
* nothing about conversations — it just trusts the spawner's path. This is
|
|
27
|
+
* the scope boundary introduced: the tee is attached per spawn,
|
|
28
|
+
* not per MCP-server process lifetime. Servers spawned for conversation A
|
|
29
|
+
* write to conversation A's file; servers for B write to B's file.
|
|
30
|
+
*
|
|
31
|
+
* Every decision is logged via `[mcp-tee-*]` markers on both the target file
|
|
32
|
+
* and the original stderr so an investigator can confirm from the stream log
|
|
33
|
+
* which tees were wired up, which were skipped, and why.
|
|
34
|
+
*/
|
|
35
|
+
/**
|
|
36
|
+
* Patch process.stderr.write to tee to:
|
|
37
|
+
* 1. Per-server raw log (`mcp-<serverName>-stderr-<date>.log` under LOG_DIR).
|
|
38
|
+
* 2. The per-conversation stream log at `STREAM_LOG_PATH` — per-line, prefixed.
|
|
39
|
+
* 3. The original stderr (consumed by Claude Code) — always preserved.
|
|
40
|
+
*
|
|
41
|
+
* LOG_DIR absent → skip per-server raw file (dev mode / tool discovery).
|
|
42
|
+
* STREAM_LOG_PATH absent → skip stream-log destination (older spawner or
|
|
43
|
+
* standalone invocation). In both absent cases, stderr works unchanged —
|
|
44
|
+
* a `[mcp-tee-skip]` marker is written to original stderr so the skip is
|
|
45
|
+
* visible to journalctl-level readers.
|
|
46
|
+
*
|
|
47
|
+
* Safe to call once at MCP server module load. Refused on second call to
|
|
48
|
+
* prevent stacking patches.
|
|
49
|
+
*/
|
|
50
|
+
export declare function initStderrTee(serverName: string): void;
|
|
51
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AAeH;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,aAAa,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CA8ItD"}
|
|
@@ -0,0 +1,196 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* MCP server stderr tee — dual-destination log capture.
|
|
4
|
+
*
|
|
5
|
+
* Claude Code spawns MCP servers as child processes and consumes their stderr
|
|
6
|
+
* internally. The platform cannot intercept at the spawn level. Each server
|
|
7
|
+
* must tee its own stderr so diagnostic output is retrievable.
|
|
8
|
+
*
|
|
9
|
+
* ┌─────────────────────────┐
|
|
10
|
+
* │ MCP server process │
|
|
11
|
+
* │ │
|
|
12
|
+
* │ console.error("[x] ..") │
|
|
13
|
+
* │ │ │
|
|
14
|
+
* │ ▼ │
|
|
15
|
+
* │ patched stderr.write() │
|
|
16
|
+
* │ │ │
|
|
17
|
+
* │ ├──► original stderr (consumed by Claude Code — opaque)
|
|
18
|
+
* │ │
|
|
19
|
+
* │ ├──► mcp-{name}-stderr-{YYYY-MM-DD}.log (raw chunks, per-plugin)
|
|
20
|
+
* │ │
|
|
21
|
+
* │ └──► $STREAM_LOG_PATH (per-line, prefixed)
|
|
22
|
+
* │ "[<iso>] [mcp:{name}] <line>"
|
|
23
|
+
* └─────────────────────────┘
|
|
24
|
+
*
|
|
25
|
+
* $STREAM_LOG_PATH is set by the spawner (`getMcpServers` in `claude-agent.ts`)
|
|
26
|
+
* to the per-conversation stream log file. The MCP server code itself knows
|
|
27
|
+
* nothing about conversations — it just trusts the spawner's path. This is
|
|
28
|
+
* the scope boundary introduced: the tee is attached per spawn,
|
|
29
|
+
* not per MCP-server process lifetime. Servers spawned for conversation A
|
|
30
|
+
* write to conversation A's file; servers for B write to B's file.
|
|
31
|
+
*
|
|
32
|
+
* Every decision is logged via `[mcp-tee-*]` markers on both the target file
|
|
33
|
+
* and the original stderr so an investigator can confirm from the stream log
|
|
34
|
+
* which tees were wired up, which were skipped, and why.
|
|
35
|
+
*/
|
|
36
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
37
|
+
exports.initStderrTee = initStderrTee;
|
|
38
|
+
const node_fs_1 = require("node:fs");
|
|
39
|
+
const node_path_1 = require("node:path");
|
|
40
|
+
const node_string_decoder_1 = require("node:string_decoder");
|
|
41
|
+
// Marker on process.stderr.write so repeat calls to initStderrTee() are
|
|
42
|
+
// detected at runtime, not just warned about in the docstring. A second
|
|
43
|
+
// call would stack patches and double-log every chunk.
|
|
44
|
+
const INIT_MARKER = Symbol.for("maxy.mcpStderrTee.installed");
|
|
45
|
+
/**
|
|
46
|
+
* Patch process.stderr.write to tee to:
|
|
47
|
+
* 1. Per-server raw log (`mcp-<serverName>-stderr-<date>.log` under LOG_DIR).
|
|
48
|
+
* 2. The per-conversation stream log at `STREAM_LOG_PATH` — per-line, prefixed.
|
|
49
|
+
* 3. The original stderr (consumed by Claude Code) — always preserved.
|
|
50
|
+
*
|
|
51
|
+
* LOG_DIR absent → skip per-server raw file (dev mode / tool discovery).
|
|
52
|
+
* STREAM_LOG_PATH absent → skip stream-log destination (older spawner or
|
|
53
|
+
* standalone invocation). In both absent cases, stderr works unchanged —
|
|
54
|
+
* a `[mcp-tee-skip]` marker is written to original stderr so the skip is
|
|
55
|
+
* visible to journalctl-level readers.
|
|
56
|
+
*
|
|
57
|
+
* Safe to call once at MCP server module load. Refused on second call to
|
|
58
|
+
* prevent stacking patches.
|
|
59
|
+
*/
|
|
60
|
+
function initStderrTee(serverName) {
|
|
61
|
+
const logDir = process.env.LOG_DIR;
|
|
62
|
+
const streamLogPath = process.env.STREAM_LOG_PATH;
|
|
63
|
+
// Refuse repeat patches — stacking them would double-log every chunk
|
|
64
|
+
// and corrupt the re-entrancy guard (originalWrite would capture the
|
|
65
|
+
// already-patched function on the second call).
|
|
66
|
+
if (process.stderr.write[INIT_MARKER])
|
|
67
|
+
return;
|
|
68
|
+
// Keep a direct reference to the unpatched writer. All diagnostic output
|
|
69
|
+
// from inside this module MUST go through originalWrite to avoid
|
|
70
|
+
// re-entering the patched writer (which would recurse on a tee failure).
|
|
71
|
+
const originalWrite = process.stderr.write.bind(process.stderr);
|
|
72
|
+
const tsPrefix = () => `[${new Date().toISOString()}]`;
|
|
73
|
+
const skipTee = (reason, destination) => {
|
|
74
|
+
originalWrite(`${tsPrefix()} [platform] [mcp-tee-skip] server=${serverName} destination=${destination} reason=${JSON.stringify(reason)}\n`);
|
|
75
|
+
};
|
|
76
|
+
// --- Destination 1: per-server raw file (optional, existing behaviour)
|
|
77
|
+
let perServerStream;
|
|
78
|
+
if (logDir) {
|
|
79
|
+
try {
|
|
80
|
+
(0, node_fs_1.mkdirSync)(logDir, { recursive: true });
|
|
81
|
+
const date = new Date().toISOString().slice(0, 10);
|
|
82
|
+
perServerStream = (0, node_fs_1.createWriteStream)((0, node_path_1.resolve)(logDir, `mcp-${serverName}-stderr-${date}.log`), { flags: "a" });
|
|
83
|
+
perServerStream.on("error", (err) => {
|
|
84
|
+
originalWrite(`${tsPrefix()} [platform] [mcp-tee-error] server=${serverName} destination=per-server reason=${JSON.stringify(err.message)}\n`);
|
|
85
|
+
});
|
|
86
|
+
}
|
|
87
|
+
catch (err) {
|
|
88
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
89
|
+
skipTee(msg, "per-server");
|
|
90
|
+
perServerStream = undefined;
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
else {
|
|
94
|
+
skipTee("LOG_DIR not set", "per-server");
|
|
95
|
+
}
|
|
96
|
+
// --- Destination 2: per-conversation stream log
|
|
97
|
+
let streamLogStream;
|
|
98
|
+
if (streamLogPath) {
|
|
99
|
+
try {
|
|
100
|
+
(0, node_fs_1.mkdirSync)((0, node_path_1.dirname)(streamLogPath), { recursive: true });
|
|
101
|
+
const s = (0, node_fs_1.createWriteStream)(streamLogPath, { flags: "a" });
|
|
102
|
+
s.on("error", (err) => {
|
|
103
|
+
originalWrite(`${tsPrefix()} [platform] [mcp-tee-error] server=${serverName} destination=stream-log reason=${JSON.stringify(err.message)}\n`);
|
|
104
|
+
});
|
|
105
|
+
streamLogStream = s;
|
|
106
|
+
// Attach marker lands in the stream log itself so investigators can
|
|
107
|
+
// confirm per-conversation the tee was wired up.
|
|
108
|
+
s.write(`${tsPrefix()} [platform] [mcp-tee-attach] server=${serverName} streamLogPath=${streamLogPath}\n`);
|
|
109
|
+
}
|
|
110
|
+
catch (err) {
|
|
111
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
112
|
+
skipTee(msg, "stream-log");
|
|
113
|
+
streamLogStream = undefined;
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
else {
|
|
117
|
+
skipTee("STREAM_LOG_PATH not set", "stream-log");
|
|
118
|
+
}
|
|
119
|
+
// If neither tee target is available, leave stderr untouched — patching
|
|
120
|
+
// the writer to a no-op tee would still consume event-loop cycles on
|
|
121
|
+
// every write for zero observability gain.
|
|
122
|
+
if (!perServerStream && !streamLogStream) {
|
|
123
|
+
return;
|
|
124
|
+
}
|
|
125
|
+
// Line buffer — accumulates characters written to stderr so complete
|
|
126
|
+
// newline-terminated lines can be prefixed and emitted to the stream log.
|
|
127
|
+
// Partial chunks are held until a newline arrives (or beforeExit flushes).
|
|
128
|
+
let lineBuffer = "";
|
|
129
|
+
// StringDecoder buffers trailing UTF-8 continuation bytes across chunks.
|
|
130
|
+
// Without it, a multi-byte codepoint that straddles a write boundary would
|
|
131
|
+
// render as two U+FFFD replacement characters in the stream log. Only
|
|
132
|
+
// matters when a caller writes Uint8Array chunks directly — console.error
|
|
133
|
+
// produces strings — but plugins piping child-process stderr can hit this.
|
|
134
|
+
const utf8 = new node_string_decoder_1.StringDecoder("utf8");
|
|
135
|
+
const emitCompleteLinesToStreamLog = (chunk) => {
|
|
136
|
+
if (!streamLogStream)
|
|
137
|
+
return;
|
|
138
|
+
lineBuffer += chunk;
|
|
139
|
+
let newlineIndex;
|
|
140
|
+
// eslint-disable-next-line no-cond-assign
|
|
141
|
+
while ((newlineIndex = lineBuffer.indexOf("\n")) !== -1) {
|
|
142
|
+
const line = lineBuffer.slice(0, newlineIndex);
|
|
143
|
+
lineBuffer = lineBuffer.slice(newlineIndex + 1);
|
|
144
|
+
if (line.length === 0)
|
|
145
|
+
continue; // skip blank lines
|
|
146
|
+
if (streamLogStream.destroyed || streamLogStream.writableEnded)
|
|
147
|
+
continue;
|
|
148
|
+
streamLogStream.write(`${tsPrefix()} [mcp:${serverName}] ${line}\n`);
|
|
149
|
+
}
|
|
150
|
+
};
|
|
151
|
+
process.stderr.write = (chunk, ...args) => {
|
|
152
|
+
// 1. Per-server raw file — behaviour (no prefix).
|
|
153
|
+
if (perServerStream && !perServerStream.destroyed) {
|
|
154
|
+
perServerStream.write(chunk);
|
|
155
|
+
}
|
|
156
|
+
// 2. Stream log — per-line, prefixed.
|
|
157
|
+
if (streamLogStream) {
|
|
158
|
+
try {
|
|
159
|
+
const text = typeof chunk === "string"
|
|
160
|
+
? chunk
|
|
161
|
+
: utf8.write(Buffer.from(chunk));
|
|
162
|
+
emitCompleteLinesToStreamLog(text);
|
|
163
|
+
}
|
|
164
|
+
catch (err) {
|
|
165
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
166
|
+
originalWrite(`${tsPrefix()} [platform] [mcp-tee-emit-error] server=${serverName} reason=${JSON.stringify(msg)}\n`);
|
|
167
|
+
}
|
|
168
|
+
}
|
|
169
|
+
// 3. Original stderr — Claude Code still gets what it's always got.
|
|
170
|
+
return originalWrite(chunk, ...args);
|
|
171
|
+
};
|
|
172
|
+
// Mark the patch so a second initStderrTee() call is refused at the top.
|
|
173
|
+
process.stderr.write[INIT_MARKER] = true;
|
|
174
|
+
// Flush any trailing unterminated segment on graceful event-loop drain.
|
|
175
|
+
// `beforeExit` can fire repeatedly: each async write to `streamLogStream`
|
|
176
|
+
// schedules I/O that keeps the event loop alive, which drains, which fires
|
|
177
|
+
// `beforeExit` again. With N MCP servers attached, the handler can emit
|
|
178
|
+
// thousands of detach lines per second. The `detached` flag gates the
|
|
179
|
+
// drain+detach emission to a single invocation; subsequent firings are
|
|
180
|
+
// no-ops. Buffer flushing also runs only once — partial-line state at true
|
|
181
|
+
// process exit doesn't change across re-fires.
|
|
182
|
+
let detached = false;
|
|
183
|
+
process.on("beforeExit", () => {
|
|
184
|
+
if (detached)
|
|
185
|
+
return;
|
|
186
|
+
detached = true;
|
|
187
|
+
if (streamLogStream && !streamLogStream.destroyed && !streamLogStream.writableEnded) {
|
|
188
|
+
if (lineBuffer.length > 0) {
|
|
189
|
+
streamLogStream.write(`${tsPrefix()} [mcp:${serverName}] ${lineBuffer}\n`);
|
|
190
|
+
}
|
|
191
|
+
streamLogStream.write(`${tsPrefix()} [platform] [mcp-tee-detach] server=${serverName} reason=process-before-exit\n`);
|
|
192
|
+
}
|
|
193
|
+
lineBuffer = "";
|
|
194
|
+
});
|
|
195
|
+
}
|
|
196
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAMA,OAAO,EAAmB,gBAAgB,EAAuB,MAAM,8BAA8B,CAAC;AA0RtG,OAAO,EAAE,gBAAgB,EAAE,CAAC"}
|