@echoes-io/mcp-server 7.0.0 → 7.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +1 -0
- package/lib/prompts/arc-resume.d.ts +2 -0
- package/lib/prompts/arc-resume.d.ts.map +1 -0
- package/lib/prompts/arc-resume.js +136 -0
- package/lib/prompts/arc-resume.js.map +1 -0
- package/lib/prompts/index.d.ts +1 -0
- package/lib/prompts/index.d.ts.map +1 -1
- package/lib/prompts/index.js +28 -0
- package/lib/prompts/index.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -110,6 +110,7 @@ Configure in your MCP client (e.g., Claude Desktop, Kiro):
|
|
|
110
110
|
|
|
111
111
|
| Prompt | Arguments | Description |
|
|
112
112
|
|--------|-----------|-------------|
|
|
113
|
+
| `arc-resume` | arc, episode?, lastChapters? | Load complete context for resuming work on an arc |
|
|
113
114
|
| `new-chapter` | arc, chapter | Create a new chapter |
|
|
114
115
|
| `revise-chapter` | arc, chapter | Revise an existing chapter |
|
|
115
116
|
| `expand-chapter` | arc, chapter, target | Expand chapter to target word count |
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"arc-resume.d.ts","sourceRoot":"","sources":["arc-resume.ts"],"names":[],"mappings":"AAcA,wBAAgB,uBAAuB,CACrC,GAAG,EAAE,MAAM,EACX,OAAO,EAAE,MAAM,GAAG,SAAS,EAC3B,YAAY,EAAE,MAAM,EACpB,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,MAAM,GACf,MAAM,CA6JR"}
|
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
import { readdirSync, readFileSync, statSync } from 'node:fs';
|
|
2
|
+
import { join } from 'node:path';
|
|
3
|
+
export function generateArcResumePrompt(arc, episode, lastChapters, contentPath, docsPath) {
|
|
4
|
+
// Scan content directory for chapters
|
|
5
|
+
const arcDir = join(contentPath, arc);
|
|
6
|
+
if (!readdirSync(contentPath).includes(arc)) {
|
|
7
|
+
throw new Error(`No chapters found for arc "${arc}"`);
|
|
8
|
+
}
|
|
9
|
+
const chapters = [];
|
|
10
|
+
const entries = readdirSync(arcDir, { withFileTypes: true });
|
|
11
|
+
// Check if chapters are directly in arc dir or in episode subdirs
|
|
12
|
+
const hasEpisodeDirs = entries.some((e) => e.isDirectory());
|
|
13
|
+
if (hasEpisodeDirs) {
|
|
14
|
+
// Chapters in episode subdirectories
|
|
15
|
+
for (const entry of entries.filter((e) => e.isDirectory())) {
|
|
16
|
+
const files = readdirSync(join(arcDir, entry.name)).filter((f) => f.endsWith('.md'));
|
|
17
|
+
for (const file of files) {
|
|
18
|
+
const filePath = join(arcDir, entry.name, file);
|
|
19
|
+
const content = readFileSync(filePath, 'utf-8');
|
|
20
|
+
const frontmatterMatch = content.match(/^---\n([\s\S]*?)\n---/);
|
|
21
|
+
if (!frontmatterMatch)
|
|
22
|
+
continue;
|
|
23
|
+
const metadata = {};
|
|
24
|
+
for (const line of frontmatterMatch[1].split('\n')) {
|
|
25
|
+
const [key, ...valueParts] = line.split(':');
|
|
26
|
+
if (key && valueParts.length) {
|
|
27
|
+
const value = valueParts.join(':').trim();
|
|
28
|
+
metadata[key.trim()] = Number.isNaN(Number(value)) ? value : Number(value);
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
const wordCount = content.split(/\s+/).length;
|
|
32
|
+
const mtime = statSync(filePath).mtimeMs;
|
|
33
|
+
chapters.push({
|
|
34
|
+
file: filePath,
|
|
35
|
+
episode: metadata.episode,
|
|
36
|
+
chapter: metadata.chapter,
|
|
37
|
+
pov: metadata.pov,
|
|
38
|
+
title: metadata.title,
|
|
39
|
+
excerpt: metadata.excerpt || '',
|
|
40
|
+
wordCount,
|
|
41
|
+
mtime,
|
|
42
|
+
});
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
else {
|
|
47
|
+
// Chapters directly in arc directory
|
|
48
|
+
const files = entries.filter((e) => e.isFile() && e.name.endsWith('.md')).map((e) => e.name);
|
|
49
|
+
for (const file of files) {
|
|
50
|
+
const filePath = join(arcDir, file);
|
|
51
|
+
const content = readFileSync(filePath, 'utf-8');
|
|
52
|
+
const frontmatterMatch = content.match(/^---\n([\s\S]*?)\n---/);
|
|
53
|
+
if (!frontmatterMatch)
|
|
54
|
+
continue;
|
|
55
|
+
const metadata = {};
|
|
56
|
+
for (const line of frontmatterMatch[1].split('\n')) {
|
|
57
|
+
const [key, ...valueParts] = line.split(':');
|
|
58
|
+
if (key && valueParts.length) {
|
|
59
|
+
const value = valueParts.join(':').trim();
|
|
60
|
+
metadata[key.trim()] = Number.isNaN(Number(value)) ? value : Number(value);
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
const wordCount = content.split(/\s+/).length;
|
|
64
|
+
const mtime = statSync(filePath).mtimeMs;
|
|
65
|
+
chapters.push({
|
|
66
|
+
file: filePath,
|
|
67
|
+
episode: metadata.episode,
|
|
68
|
+
chapter: metadata.chapter,
|
|
69
|
+
pov: metadata.pov,
|
|
70
|
+
title: metadata.title,
|
|
71
|
+
excerpt: metadata.excerpt || '',
|
|
72
|
+
wordCount,
|
|
73
|
+
mtime,
|
|
74
|
+
});
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
if (chapters.length === 0) {
|
|
78
|
+
throw new Error(`No chapters found for arc "${arc}"`);
|
|
79
|
+
}
|
|
80
|
+
// Determine target episode
|
|
81
|
+
const targetEpisode = episode ?? Math.max(...chapters.map((c) => c.episode));
|
|
82
|
+
// Filter and sort chapters for target episode
|
|
83
|
+
const episodeChapters = chapters
|
|
84
|
+
.filter((c) => c.episode === targetEpisode)
|
|
85
|
+
.sort((a, b) => b.chapter - a.chapter);
|
|
86
|
+
if (episodeChapters.length === 0) {
|
|
87
|
+
throw new Error(`No chapters found for arc "${arc}" episode ${targetEpisode}`);
|
|
88
|
+
}
|
|
89
|
+
// Get recent chapters
|
|
90
|
+
const recentChapters = episodeChapters.slice(0, lastChapters);
|
|
91
|
+
// Read episode outline
|
|
92
|
+
const episodesDir = join(docsPath, 'episodes');
|
|
93
|
+
const episodeFiles = readdirSync(episodesDir);
|
|
94
|
+
const episodeFile = episodeFiles.find((f) => f.startsWith(`${arc}-ep${String(targetEpisode).padStart(2, '0')}`));
|
|
95
|
+
if (!episodeFile) {
|
|
96
|
+
throw new Error(`Episode outline not found for arc "${arc}" episode ${targetEpisode}`);
|
|
97
|
+
}
|
|
98
|
+
const episodeOutline = readFileSync(join(episodesDir, episodeFile), 'utf-8');
|
|
99
|
+
// Read character sheets
|
|
100
|
+
const charactersDir = join(docsPath, 'characters', arc);
|
|
101
|
+
const characters = {};
|
|
102
|
+
try {
|
|
103
|
+
const characterFiles = readdirSync(charactersDir);
|
|
104
|
+
for (const file of characterFiles) {
|
|
105
|
+
if (file.endsWith('.md')) {
|
|
106
|
+
const name = file.replace('.md', '');
|
|
107
|
+
characters[name] = readFileSync(join(charactersDir, file), 'utf-8');
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
catch {
|
|
112
|
+
// Characters directory might not exist
|
|
113
|
+
}
|
|
114
|
+
// Build prompt
|
|
115
|
+
let prompt = `# Arc Resume: ${arc} - Episode ${targetEpisode}\n\n`;
|
|
116
|
+
prompt += '## Episode Outline\n\n';
|
|
117
|
+
prompt += `${episodeOutline}\n\n`;
|
|
118
|
+
if (Object.keys(characters).length > 0) {
|
|
119
|
+
prompt += '## Characters\n\n';
|
|
120
|
+
for (const [name, content] of Object.entries(characters)) {
|
|
121
|
+
prompt += `### ${name}\n\n${content}\n\n`;
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
prompt += '## Recent Chapters\n\n';
|
|
125
|
+
for (const chapter of recentChapters) {
|
|
126
|
+
prompt += `### Chapter ${chapter.chapter}: ${chapter.title} (${chapter.pov})\n\n`;
|
|
127
|
+
prompt += `**File**: ${chapter.file}\n`;
|
|
128
|
+
prompt += `**Word Count**: ${chapter.wordCount}\n`;
|
|
129
|
+
if (chapter.excerpt) {
|
|
130
|
+
prompt += `**Excerpt**: ${chapter.excerpt}\n`;
|
|
131
|
+
}
|
|
132
|
+
prompt += '\n';
|
|
133
|
+
}
|
|
134
|
+
return prompt;
|
|
135
|
+
}
|
|
136
|
+
//# sourceMappingURL=arc-resume.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"arc-resume.js","sourceRoot":"","sources":["arc-resume.ts"],"names":[],"mappings":"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"}
|
package/lib/prompts/index.d.ts
CHANGED
|
@@ -8,6 +8,7 @@ export declare const PROMPTS: PromptConfig[];
|
|
|
8
8
|
export interface GetPromptOptions {
|
|
9
9
|
timeline?: string;
|
|
10
10
|
contentPath?: string;
|
|
11
|
+
docsPath?: string;
|
|
11
12
|
}
|
|
12
13
|
export declare function getPrompt(name: string, args: Record<string, string>, options?: GetPromptOptions): string;
|
|
13
14
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":"AAGA,OAAO,CAAC,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":"AAGA,OAAO,CAAC,MAAM,KAAK,CAAC;AAIpB,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,CAAC,CAAC,WAAW,CAAC;CACrB;AAED,eAAO,MAAM,OAAO,EAAE,YAAY,EAmEjC,CAAC;AAkFF,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,wBAAgB,SAAS,CACvB,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAC5B,OAAO,GAAE,gBAAqB,GAC7B,MAAM,CA6CR"}
|
package/lib/prompts/index.js
CHANGED
|
@@ -1,7 +1,20 @@
|
|
|
1
1
|
import { existsSync, readdirSync, readFileSync } from 'node:fs';
|
|
2
2
|
import { join } from 'node:path';
|
|
3
3
|
import z from 'zod';
|
|
4
|
+
import { generateArcResumePrompt } from './arc-resume.js';
|
|
4
5
|
export const PROMPTS = [
|
|
6
|
+
{
|
|
7
|
+
name: 'arc-resume',
|
|
8
|
+
description: 'Load complete context for resuming work on an arc',
|
|
9
|
+
args: {
|
|
10
|
+
arc: z.string().describe('Arc name'),
|
|
11
|
+
episode: z.string().optional().describe('Episode number (optional - defaults to latest)'),
|
|
12
|
+
lastChapters: z
|
|
13
|
+
.string()
|
|
14
|
+
.optional()
|
|
15
|
+
.describe('Number of recent chapters to include (default: 3)'),
|
|
16
|
+
},
|
|
17
|
+
},
|
|
5
18
|
{
|
|
6
19
|
name: 'new-chapter',
|
|
7
20
|
description: 'Create a new chapter for a timeline arc',
|
|
@@ -86,6 +99,13 @@ function validateArgs(promptName, args, contentPath) {
|
|
|
86
99
|
}
|
|
87
100
|
};
|
|
88
101
|
switch (promptName) {
|
|
102
|
+
case 'arc-resume':
|
|
103
|
+
requireArcExists(args.arc);
|
|
104
|
+
if (args.episode)
|
|
105
|
+
requireNumber(args.episode, 'Episode');
|
|
106
|
+
if (args.lastChapters)
|
|
107
|
+
requireNumber(args.lastChapters, 'Last chapters');
|
|
108
|
+
break;
|
|
89
109
|
case 'new-chapter':
|
|
90
110
|
case 'revise-chapter':
|
|
91
111
|
case 'expand-chapter':
|
|
@@ -123,6 +143,14 @@ function substitutePlaceholders(template, args, timeline) {
|
|
|
123
143
|
export function getPrompt(name, args, options = {}) {
|
|
124
144
|
const timeline = options.timeline ?? 'timeline';
|
|
125
145
|
const contentPath = options.contentPath ?? 'content';
|
|
146
|
+
const docsPath = options.docsPath ?? join(process.cwd(), 'docs');
|
|
147
|
+
// Handle arc-resume specially (no template file)
|
|
148
|
+
if (name === 'arc-resume') {
|
|
149
|
+
validateArgs(name, args, contentPath);
|
|
150
|
+
const episode = args.episode ? Number(args.episode) : undefined;
|
|
151
|
+
const lastChapters = args.lastChapters ? Number(args.lastChapters) : 3;
|
|
152
|
+
return generateArcResumePrompt(args.arc, episode, lastChapters, contentPath, docsPath);
|
|
153
|
+
}
|
|
126
154
|
// Validate .github repo
|
|
127
155
|
const githubPath = getGithubPromptsPath();
|
|
128
156
|
if (!githubPath) {
|
package/lib/prompts/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAChE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,OAAO,CAAC,MAAM,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAChE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,OAAO,CAAC,MAAM,KAAK,CAAC;AAEpB,OAAO,EAAE,uBAAuB,EAAE,MAAM,iBAAiB,CAAC;AAQ1D,MAAM,CAAC,MAAM,OAAO,GAAmB;IACrC;QACE,IAAI,EAAE,YAAY;QAClB,WAAW,EAAE,mDAAmD;QAChE,IAAI,EAAE;YACJ,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC;YACpC,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,CAAC,gDAAgD,CAAC;YACzF,YAAY,EAAE,CAAC;iBACZ,MAAM,EAAE;iBACR,QAAQ,EAAE;iBACV,QAAQ,CAAC,mDAAmD,CAAC;SACjE;KACF;IACD;QACE,IAAI,EAAE,aAAa;QACnB,WAAW,EAAE,yCAAyC;QACtD,IAAI,EAAE;YACJ,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,kCAAkC,CAAC;YAC5D,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,kCAAkC,CAAC;SACjE;KACF;IACD;QACE,IAAI,EAAE,gBAAgB;QACtB,WAAW,EAAE,uDAAuD;QACpE,IAAI,EAAE;YACJ,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC;YACpC,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,gBAAgB,CAAC;SAC/C;KACF;IACD;QACE,IAAI,EAAE,gBAAgB;QACtB,WAAW,EAAE,6CAA6C;QAC1D,IAAI,EAAE;YACJ,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC;YACpC,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,gBAAgB,CAAC;YAC9C,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,kCAAkC,CAAC;SAChE;KACF;IACD;QACE,IAAI,EAAE,eAAe;QACrB,WAAW,EAAE,8BAA8B;QAC3C,IAAI,EAAE;YACJ,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,gBAAgB,CAAC;SAC5C;KACF;IACD;QACE,IAAI,EAAE,aAAa;QACnB,WAAW,EAAE,8BAA8B;QAC3C,IAAI,EAAE;YACJ,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,UAAU,CAAC;YACpC,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,gBAAgB,CAAC;SAC/C;KACF;IACD;QACE,IAAI,EAAE,SAAS;QACf,WAAW,EAAE,wBAAwB;QACrC,IAAI,EAAE;YACJ,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,iCAAiC,CAAC;SAC7D;KACF;IACD;QACE,IAAI,EAAE,YAAY;QAClB,WAAW,EAAE,8BAA8B;QAC3C,IAAI,EAAE;YACJ,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,oBAAoB,CAAC;SAC/C;KACF;CACF,CAAC;AAEF,SAAS,oBAAoB;IAC3B,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;IACtE,OAAO,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;AACxC,CAAC;AAED,SAAS,mBAAmB;IAC1B,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;IACrD,OAAO,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;AACxC,CAAC;AAED,SAAS,gBAAgB,CAAC,WAAmB;IAC3C,IAAI,CAAC,UAAU,CAAC,WAAW,CAAC;QAAE,OAAO,EAAE,CAAC;IACxC,OAAO,WAAW,CAAC,WAAW,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC;SACrD,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC;SACzD,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;SAClB,IAAI,EAAE,CAAC;AACZ,CAAC;AAED,SAAS,YAAY,CAAC,UAAkB,EAAE,IAA4B,EAAE,WAAmB;IACzF,MAAM,IAAI,GAAG,gBAAgB,CAAC,WAAW,CAAC,CAAC;IAE3C,MAAM,gBAAgB,GAAG,CAAC,GAAW,EAAE,EAAE;QACvC,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;YACxB,MAAM,IAAI,KAAK,CAAC,QAAQ,GAAG,2BAA2B,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,MAAM,EAAE,CAAC,CAAC;QACrF,CAAC;IACH,CAAC,CAAC;IAEF,MAAM,aAAa,GAAG,CAAC,KAAa,EAAE,IAAY,EAAE,EAAE;QACpD,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;YACzB,MAAM,IAAI,KAAK,CAAC,GAAG,IAAI,4BAA4B,KAAK,GAAG,CAAC,CAAC;QAC/D,CAAC;IACH,CAAC,CAAC;IAEF,QAAQ,UAAU,EAAE,CAAC;QACnB,KAAK,YAAY;YACf,gBAAgB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAC3B,IAAI,IAAI,CAAC,OAAO;gBAAE,aAAa,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;YACzD,IAAI,IAAI,CAAC,YAAY;gBAAE,aAAa,CAAC,IAAI,CAAC,YAAY,EAAE,eAAe,CAAC,CAAC;YACzE,MAAM;QACR,KAAK,aAAa,CAAC;QACnB,KAAK,gBAAgB,CAAC;QACtB,KAAK,gBAAgB;YACnB,gBAAgB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAC3B,aAAa,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;YACvC,IAAI,UAAU,KAAK,gBAAgB,EAAE,CAAC;gBACpC,aAAa,CAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;YACvC,CAAC;YACD,MAAM;QACR,KAAK,aAAa;YAChB,gBAAgB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAC3B,aAAa,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;YACvC,MAAM;QACR,KAAK,SAAS;YACZ,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC7B,MAAM,IAAI,KAAK,CAAC,QAAQ,IAAI,CAAC,IAAI,mBAAmB,CAAC,CAAC;YACxD,CAAC;YACD,MAAM;QACR,KAAK,YAAY;YACf,gBAAgB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YAC3B,MAAM;IACV,CAAC;AACH,CAAC;AAED,SAAS,sBAAsB,CAC7B,QAAgB,EAChB,IAA4B,EAC5B,QAAgB;IAEhB,MAAM,YAAY,GAA2B;QAC3C,QAAQ,EAAE,QAAQ;QAClB,GAAG,MAAM,CAAC,WAAW,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;KAClF,CAAC;IAEF,IAAI,MAAM,GAAG,QAAQ,CAAC;IACtB,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC;QACxD,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,MAAM,GAAG,KAAK,EAAE,IAAI,CAAC,EAAE,KAAK,CAAC,CAAC;IACnE,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC;AAQD,MAAM,UAAU,SAAS,CACvB,IAAY,EACZ,IAA4B,EAC5B,UAA4B,EAAE;IAE9B,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,UAAU,CAAC;IAChD,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,IAAI,SAAS,CAAC;IACrD,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,MAAM,CAAC,CAAC;IAEjE,iDAAiD;IACjD,IAAI,IAAI,KAAK,YAAY,EAAE,CAAC;QAC1B,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,WAAW,CAAC,CAAC;QACtC,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;QAChE,MAAM,YAAY,GAAG,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACvE,OAAO,uBAAuB,CAAC,IAAI,CAAC,GAAG,EAAE,OAAO,EAAE,YAAY,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAC;IACzF,CAAC;IAED,wBAAwB;IACxB,MAAM,UAAU,GAAG,oBAAoB,EAAE,CAAC;IAC1C,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,MAAM,IAAI,KAAK,CACb,iCAAiC;YAC/B,gFAAgF,CACnF,CAAC;IACJ,CAAC;IAED,qBAAqB;IACrB,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,EAAE,GAAG,IAAI,KAAK,CAAC,CAAC;IAChD,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC1B,MAAM,IAAI,KAAK,CAAC,8BAA8B,IAAI,kBAAkB,QAAQ,EAAE,CAAC,CAAC;IAClF,CAAC;IACD,MAAM,UAAU,GAAG,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAEnD,+BAA+B;IAC/B,MAAM,SAAS,GAAG,mBAAmB,EAAE,CAAC;IACxC,IAAI,cAAc,GAAG,EAAE,CAAC;IACxB,IAAI,SAAS,EAAE,CAAC;QACd,MAAM,YAAY,GAAG,IAAI,CAAC,SAAS,EAAE,GAAG,IAAI,KAAK,CAAC,CAAC;QACnD,IAAI,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;YAC7B,cAAc,GAAG,YAAY,CAAC,YAAY,EAAE,OAAO,CAAC,CAAC;QACvD,CAAC;IACH,CAAC;IAED,gBAAgB;IAChB,YAAY,CAAC,IAAI,EAAE,IAAI,EAAE,WAAW,CAAC,CAAC;IAEtC,yBAAyB;IACzB,MAAM,QAAQ,GAAG,cAAc,CAAC,CAAC,CAAC,GAAG,UAAU,cAAc,cAAc,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC;IAC3F,OAAO,sBAAsB,CAAC,QAAQ,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;AAC1D,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@echoes-io/mcp-server",
|
|
3
|
-
"version": "7.
|
|
3
|
+
"version": "7.1.1",
|
|
4
4
|
"description": "📚 Model Context Protocol server for AI-powered storytelling with Narrative Knowledge Graph - extract characters, locations, relationships and search your stories semantically.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|