@spilno/herald-mcp 1.4.0 → 1.5.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 +32 -3
- package/dist/cli/init.d.ts +20 -0
- package/dist/cli/init.d.ts.map +1 -0
- package/dist/cli/init.js +158 -0
- package/dist/cli/init.js.map +1 -0
- package/dist/cli/templates/claude-md.d.ts +16 -0
- package/dist/cli/templates/claude-md.d.ts.map +1 -0
- package/dist/cli/templates/claude-md.js +45 -0
- package/dist/cli/templates/claude-md.js.map +1 -0
- package/dist/index.d.ts +1 -7
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +153 -238
- package/dist/index.js.map +1 -0
- package/package.json +3 -2
package/README.md
CHANGED
|
@@ -7,18 +7,47 @@ Herald MCP - AI-native interface to [CEDA](https://getceda.com) (Cognitive Event
|
|
|
7
7
|
## Quick Start
|
|
8
8
|
|
|
9
9
|
```bash
|
|
10
|
+
# Initialize Herald MCP config for Claude Desktop
|
|
11
|
+
npx @spilno/herald-mcp init
|
|
12
|
+
|
|
13
|
+
# Or install globally
|
|
10
14
|
npm install -g @spilno/herald-mcp
|
|
15
|
+
herald-mcp init
|
|
16
|
+
```
|
|
11
17
|
|
|
12
|
-
|
|
18
|
+
That's it. Herald is now configured for Claude Desktop.
|
|
13
19
|
|
|
14
|
-
|
|
20
|
+
## Init Command (New in v1.4.0)
|
|
21
|
+
|
|
22
|
+
The `init` command creates `.claude/settings.json` with Herald MCP configuration:
|
|
23
|
+
|
|
24
|
+
```bash
|
|
25
|
+
npx @spilno/herald-mcp init
|
|
26
|
+
```
|
|
27
|
+
|
|
28
|
+
This creates:
|
|
29
|
+
```json
|
|
30
|
+
{
|
|
31
|
+
"mcpServers": {
|
|
32
|
+
"herald": {
|
|
33
|
+
"command": "npx",
|
|
34
|
+
"args": ["@spilno/herald-mcp"],
|
|
35
|
+
"env": {
|
|
36
|
+
"HERALD_API_URL": "https://getceda.com"
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
}
|
|
15
41
|
```
|
|
16
42
|
|
|
17
|
-
|
|
43
|
+
Options:
|
|
44
|
+
- `--help, -h` - Show help
|
|
45
|
+
- `--force, -f` - Overwrite existing settings.json
|
|
18
46
|
|
|
19
47
|
## Chat Mode (Natural Conversation)
|
|
20
48
|
|
|
21
49
|
```bash
|
|
50
|
+
export HERALD_API_URL=https://getceda.com
|
|
22
51
|
herald-mcp chat
|
|
23
52
|
```
|
|
24
53
|
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* Herald MCP Init CLI
|
|
4
|
+
*
|
|
5
|
+
* Creates .claude/settings.json with Herald MCP configuration
|
|
6
|
+
* and updates CLAUDE.md with Herald integration instructions.
|
|
7
|
+
*
|
|
8
|
+
* Usage: npx @spilno/herald-mcp init [options]
|
|
9
|
+
*/
|
|
10
|
+
export interface InitOptions {
|
|
11
|
+
force?: boolean;
|
|
12
|
+
help?: boolean;
|
|
13
|
+
company?: string;
|
|
14
|
+
project?: string;
|
|
15
|
+
user?: string;
|
|
16
|
+
noClaudeMd?: boolean;
|
|
17
|
+
}
|
|
18
|
+
export declare function parseInitArgs(args: string[]): InitOptions;
|
|
19
|
+
export declare function runInit(args?: string[]): void;
|
|
20
|
+
//# sourceMappingURL=init.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"init.d.ts","sourceRoot":"","sources":["../../src/cli/init.ts"],"names":[],"mappings":";AACA;;;;;;;GAOG;AAgDH,MAAM,WAAW,WAAW;IAC1B,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,WAAW,CAqBzD;AAED,wBAAgB,OAAO,CAAC,IAAI,GAAE,MAAM,EAAO,GAAG,IAAI,CA2FjD"}
|
package/dist/cli/init.js
ADDED
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* Herald MCP Init CLI
|
|
4
|
+
*
|
|
5
|
+
* Creates .claude/settings.json with Herald MCP configuration
|
|
6
|
+
* and updates CLAUDE.md with Herald integration instructions.
|
|
7
|
+
*
|
|
8
|
+
* Usage: npx @spilno/herald-mcp init [options]
|
|
9
|
+
*/
|
|
10
|
+
import { existsSync, mkdirSync, writeFileSync, readFileSync } from "fs";
|
|
11
|
+
import { join, basename } from "path";
|
|
12
|
+
import { updateClaudeMdContent } from "./templates/claude-md.js";
|
|
13
|
+
const HERALD_MCP_CONFIG = {
|
|
14
|
+
mcpServers: {
|
|
15
|
+
herald: {
|
|
16
|
+
command: "npx",
|
|
17
|
+
args: ["@spilno/herald-mcp"],
|
|
18
|
+
env: {
|
|
19
|
+
HERALD_API_URL: "https://getceda.com"
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
};
|
|
24
|
+
function printInitHelp() {
|
|
25
|
+
console.log(`
|
|
26
|
+
Herald MCP Init - Configure Claude Desktop for Herald
|
|
27
|
+
|
|
28
|
+
Usage:
|
|
29
|
+
npx @spilno/herald-mcp init [options]
|
|
30
|
+
|
|
31
|
+
Options:
|
|
32
|
+
--help, -h Show this help message
|
|
33
|
+
--force, -f Overwrite existing settings.json
|
|
34
|
+
--company, -c Company context (e.g., goprint)
|
|
35
|
+
--project, -p Project context (e.g., mobidruk)
|
|
36
|
+
--user, -u User context (default: plumber)
|
|
37
|
+
--no-claude-md Skip CLAUDE.md modification
|
|
38
|
+
|
|
39
|
+
What it does:
|
|
40
|
+
1. Creates .claude/settings.json with Herald MCP configuration
|
|
41
|
+
2. Creates/updates CLAUDE.md with Herald integration instructions
|
|
42
|
+
|
|
43
|
+
After running init:
|
|
44
|
+
1. Open Claude Desktop
|
|
45
|
+
2. Herald will be available as an MCP server
|
|
46
|
+
3. Claude will know to use Herald for module design
|
|
47
|
+
|
|
48
|
+
Example:
|
|
49
|
+
cd my-project
|
|
50
|
+
npx @spilno/herald-mcp init --company goprint --project mobidruk
|
|
51
|
+
`);
|
|
52
|
+
}
|
|
53
|
+
export function parseInitArgs(args) {
|
|
54
|
+
const options = {};
|
|
55
|
+
for (let i = 0; i < args.length; i++) {
|
|
56
|
+
const arg = args[i];
|
|
57
|
+
if (arg === "--help" || arg === "-h") {
|
|
58
|
+
options.help = true;
|
|
59
|
+
}
|
|
60
|
+
else if (arg === "--force" || arg === "-f") {
|
|
61
|
+
options.force = true;
|
|
62
|
+
}
|
|
63
|
+
else if (arg === "--company" || arg === "-c") {
|
|
64
|
+
options.company = args[++i];
|
|
65
|
+
}
|
|
66
|
+
else if (arg === "--project" || arg === "-p") {
|
|
67
|
+
options.project = args[++i];
|
|
68
|
+
}
|
|
69
|
+
else if (arg === "--user" || arg === "-u") {
|
|
70
|
+
options.user = args[++i];
|
|
71
|
+
}
|
|
72
|
+
else if (arg === "--no-claude-md") {
|
|
73
|
+
options.noClaudeMd = true;
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
return options;
|
|
77
|
+
}
|
|
78
|
+
export function runInit(args = []) {
|
|
79
|
+
const options = parseInitArgs(args);
|
|
80
|
+
if (options.help) {
|
|
81
|
+
printInitHelp();
|
|
82
|
+
return;
|
|
83
|
+
}
|
|
84
|
+
const cwd = process.cwd();
|
|
85
|
+
const projectName = basename(cwd);
|
|
86
|
+
const claudeDir = join(cwd, ".claude");
|
|
87
|
+
const settingsPath = join(claudeDir, "settings.json");
|
|
88
|
+
const claudeMdPath = join(cwd, "CLAUDE.md");
|
|
89
|
+
const context = {
|
|
90
|
+
company: options.company || "default",
|
|
91
|
+
project: options.project || projectName,
|
|
92
|
+
user: options.user || "plumber",
|
|
93
|
+
};
|
|
94
|
+
if (existsSync(settingsPath) && !options.force) {
|
|
95
|
+
console.log(`
|
|
96
|
+
.claude/settings.json already exists.
|
|
97
|
+
|
|
98
|
+
To view current config:
|
|
99
|
+
cat .claude/settings.json
|
|
100
|
+
|
|
101
|
+
To overwrite:
|
|
102
|
+
npx @spilno/herald-mcp init --force
|
|
103
|
+
`);
|
|
104
|
+
return;
|
|
105
|
+
}
|
|
106
|
+
if (!existsSync(claudeDir)) {
|
|
107
|
+
mkdirSync(claudeDir, { recursive: true });
|
|
108
|
+
console.log("Created .claude directory");
|
|
109
|
+
}
|
|
110
|
+
let finalConfig = HERALD_MCP_CONFIG;
|
|
111
|
+
if (existsSync(settingsPath)) {
|
|
112
|
+
try {
|
|
113
|
+
const existingContent = readFileSync(settingsPath, "utf-8");
|
|
114
|
+
const existingConfig = JSON.parse(existingContent);
|
|
115
|
+
finalConfig = {
|
|
116
|
+
...existingConfig,
|
|
117
|
+
mcpServers: {
|
|
118
|
+
...existingConfig.mcpServers,
|
|
119
|
+
...HERALD_MCP_CONFIG.mcpServers
|
|
120
|
+
}
|
|
121
|
+
};
|
|
122
|
+
console.log("Merging with existing settings.json");
|
|
123
|
+
}
|
|
124
|
+
catch {
|
|
125
|
+
console.log("Overwriting invalid settings.json");
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
writeFileSync(settingsPath, JSON.stringify(finalConfig, null, 2) + "\n", "utf-8");
|
|
129
|
+
console.log("Created .mcp.json with Herald config");
|
|
130
|
+
if (!options.noClaudeMd) {
|
|
131
|
+
let existingClaudeMd = null;
|
|
132
|
+
if (existsSync(claudeMdPath)) {
|
|
133
|
+
existingClaudeMd = readFileSync(claudeMdPath, "utf-8");
|
|
134
|
+
}
|
|
135
|
+
const updatedClaudeMd = updateClaudeMdContent(existingClaudeMd, context, projectName);
|
|
136
|
+
writeFileSync(claudeMdPath, updatedClaudeMd, "utf-8");
|
|
137
|
+
if (existingClaudeMd) {
|
|
138
|
+
console.log("Updated CLAUDE.md with Herald integration");
|
|
139
|
+
}
|
|
140
|
+
else {
|
|
141
|
+
console.log("Created CLAUDE.md with Herald integration");
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
console.log(`Context: ${context.company}/${context.project}/${context.user}`);
|
|
145
|
+
console.log(`
|
|
146
|
+
Herald is ready. Claude Code will now:
|
|
147
|
+
- Check patterns before building
|
|
148
|
+
- Use predictions as starting points
|
|
149
|
+
- Observe outcomes for learning
|
|
150
|
+
|
|
151
|
+
Environment variables (optional):
|
|
152
|
+
HERALD_API_URL CEDA server URL (default: https://getceda.com)
|
|
153
|
+
HERALD_COMPANY Company context for multi-tenancy
|
|
154
|
+
HERALD_PROJECT Project context for multi-tenancy
|
|
155
|
+
HERALD_USER User context for multi-tenancy
|
|
156
|
+
`);
|
|
157
|
+
}
|
|
158
|
+
//# sourceMappingURL=init.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"init.js","sourceRoot":"","sources":["../../src/cli/init.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CLAUDE.md Herald Integration Template
|
|
3
|
+
*
|
|
4
|
+
* Template for the Herald integration section that gets added to CLAUDE.md
|
|
5
|
+
* when running `herald-mcp init`.
|
|
6
|
+
*/
|
|
7
|
+
export interface HeraldContext {
|
|
8
|
+
company: string;
|
|
9
|
+
project: string;
|
|
10
|
+
user: string;
|
|
11
|
+
}
|
|
12
|
+
export declare const HERALD_SECTION_MARKER = "## Herald Integration";
|
|
13
|
+
export declare const HERALD_SECTION_TEMPLATE = "## Herald Integration\n\nYou have Herald MCP tools available. USE THEM.\n\n### On Session Start\n- Call `herald_health()` to verify CEDA connection\n- Call `herald_predict()` when building new features\n\n### During Implementation\n- Use `herald_predict()` before building structures\n- Use `herald_query_insights()` when stuck\n\n### On Session End\n- Call `herald_observe()` with outcome (accepted/modified/rejected)\n\n### Context\n- Company: {{company}}\n- Project: {{project}}\n- User: {{user}}\n";
|
|
14
|
+
export declare function renderHeraldSection(context: HeraldContext): string;
|
|
15
|
+
export declare function updateClaudeMdContent(existingContent: string | null, context: HeraldContext, projectName: string): string;
|
|
16
|
+
//# sourceMappingURL=claude-md.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"claude-md.d.ts","sourceRoot":"","sources":["../../../src/cli/templates/claude-md.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,eAAO,MAAM,qBAAqB,0BAA0B,CAAC;AAE7D,eAAO,MAAM,uBAAuB,0fAmBnC,CAAC;AAEF,wBAAgB,mBAAmB,CAAC,OAAO,EAAE,aAAa,GAAG,MAAM,CAKlE;AAED,wBAAgB,qBAAqB,CACnC,eAAe,EAAE,MAAM,GAAG,IAAI,EAC9B,OAAO,EAAE,aAAa,EACtB,WAAW,EAAE,MAAM,GAClB,MAAM,CAaR"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CLAUDE.md Herald Integration Template
|
|
3
|
+
*
|
|
4
|
+
* Template for the Herald integration section that gets added to CLAUDE.md
|
|
5
|
+
* when running `herald-mcp init`.
|
|
6
|
+
*/
|
|
7
|
+
export const HERALD_SECTION_MARKER = "## Herald Integration";
|
|
8
|
+
export const HERALD_SECTION_TEMPLATE = `## Herald Integration
|
|
9
|
+
|
|
10
|
+
You have Herald MCP tools available. USE THEM.
|
|
11
|
+
|
|
12
|
+
### On Session Start
|
|
13
|
+
- Call \`herald_health()\` to verify CEDA connection
|
|
14
|
+
- Call \`herald_predict()\` when building new features
|
|
15
|
+
|
|
16
|
+
### During Implementation
|
|
17
|
+
- Use \`herald_predict()\` before building structures
|
|
18
|
+
- Use \`herald_query_insights()\` when stuck
|
|
19
|
+
|
|
20
|
+
### On Session End
|
|
21
|
+
- Call \`herald_observe()\` with outcome (accepted/modified/rejected)
|
|
22
|
+
|
|
23
|
+
### Context
|
|
24
|
+
- Company: {{company}}
|
|
25
|
+
- Project: {{project}}
|
|
26
|
+
- User: {{user}}
|
|
27
|
+
`;
|
|
28
|
+
export function renderHeraldSection(context) {
|
|
29
|
+
return HERALD_SECTION_TEMPLATE
|
|
30
|
+
.replace("{{company}}", context.company)
|
|
31
|
+
.replace("{{project}}", context.project)
|
|
32
|
+
.replace("{{user}}", context.user);
|
|
33
|
+
}
|
|
34
|
+
export function updateClaudeMdContent(existingContent, context, projectName) {
|
|
35
|
+
const heraldSection = renderHeraldSection(context);
|
|
36
|
+
if (!existingContent) {
|
|
37
|
+
return `# ${projectName}\n\n${heraldSection}`;
|
|
38
|
+
}
|
|
39
|
+
if (existingContent.includes(HERALD_SECTION_MARKER)) {
|
|
40
|
+
const regex = /## Herald Integration[\s\S]*?(?=\n## |\n# |$)/;
|
|
41
|
+
return existingContent.replace(regex, heraldSection.trimEnd());
|
|
42
|
+
}
|
|
43
|
+
return existingContent.trimEnd() + "\n\n" + heraldSection;
|
|
44
|
+
}
|
|
45
|
+
//# sourceMappingURL=claude-md.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"claude-md.js","sourceRoot":"","sources":["../../../src/cli/templates/claude-md.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAQH,MAAM,CAAC,MAAM,qBAAqB,GAAG,uBAAuB,CAAC;AAE7D,MAAM,CAAC,MAAM,uBAAuB,GAAG;;;;;;;;;;;;;;;;;;;CAmBtC,CAAC;AAEF,MAAM,UAAU,mBAAmB,CAAC,OAAsB;IACxD,OAAO,uBAAuB;SAC3B,OAAO,CAAC,aAAa,EAAE,OAAO,CAAC,OAAO,CAAC;SACvC,OAAO,CAAC,aAAa,EAAE,OAAO,CAAC,OAAO,CAAC;SACvC,OAAO,CAAC,UAAU,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;AACvC,CAAC;AAED,MAAM,UAAU,qBAAqB,CACnC,eAA8B,EAC9B,OAAsB,EACtB,WAAmB;IAEnB,MAAM,aAAa,GAAG,mBAAmB,CAAC,OAAO,CAAC,CAAC;IAEnD,IAAI,CAAC,eAAe,EAAE,CAAC;QACrB,OAAO,KAAK,WAAW,OAAO,aAAa,EAAE,CAAC;IAChD,CAAC;IAED,IAAI,eAAe,CAAC,QAAQ,CAAC,qBAAqB,CAAC,EAAE,CAAC;QACpD,MAAM,KAAK,GAAG,+CAA+C,CAAC;QAC9D,OAAO,eAAe,CAAC,OAAO,CAAC,KAAK,EAAE,aAAa,CAAC,OAAO,EAAE,CAAC,CAAC;IACjE,CAAC;IAED,OAAO,eAAe,CAAC,OAAO,EAAE,GAAG,MAAM,GAAG,aAAa,CAAC;AAC5D,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":""}
|
package/dist/index.js
CHANGED
|
@@ -12,6 +12,8 @@ import { CallToolRequestSchema, ListToolsRequestSchema, } from "@modelcontextpro
|
|
|
12
12
|
import { existsSync, mkdirSync, readFileSync, writeFileSync, unlinkSync } from "fs";
|
|
13
13
|
import { homedir } from "os";
|
|
14
14
|
import { join } from "path";
|
|
15
|
+
import * as readline from "readline";
|
|
16
|
+
import { runInit } from "./cli/init.js";
|
|
15
17
|
// Configuration - all sensitive values from environment only
|
|
16
18
|
const CEDA_API_URL = process.env.HERALD_API_URL;
|
|
17
19
|
const CEDA_API_TOKEN = process.env.HERALD_API_TOKEN;
|
|
@@ -22,16 +24,15 @@ const HERALD_COMPANY = process.env.HERALD_COMPANY || "default";
|
|
|
22
24
|
const HERALD_PROJECT = process.env.HERALD_PROJECT || "default";
|
|
23
25
|
const HERALD_USER = process.env.HERALD_USER || "default";
|
|
24
26
|
// Offspring vault context (for Avatar mode)
|
|
25
|
-
const HERALD_VAULT = process.env.HERALD_VAULT || "";
|
|
27
|
+
const HERALD_VAULT = process.env.HERALD_VAULT || "";
|
|
26
28
|
const AEGIS_OFFSPRING_PATH = process.env.AEGIS_OFFSPRING_PATH || join(homedir(), "Documents", "aegis_ceda", "_offspring");
|
|
27
29
|
// Cloud mode: Use CEDA API for offspring communication instead of local files
|
|
28
30
|
const OFFSPRING_CLOUD_MODE = process.env.HERALD_OFFSPRING_CLOUD === "true";
|
|
29
|
-
const VERSION = "1.
|
|
31
|
+
const VERSION = "1.5.0";
|
|
30
32
|
// Claude for Herald's voice - bundled key with limits, users can override
|
|
31
33
|
const HERALD_VOICE_KEY = "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";
|
|
32
34
|
const ANTHROPIC_API_KEY = process.env.ANTHROPIC_API_KEY || HERALD_VOICE_KEY;
|
|
33
35
|
// Session persistence - context-isolated paths
|
|
34
|
-
// ~/.herald/{company}/{project}/{user}/session
|
|
35
36
|
function getHeraldDir() {
|
|
36
37
|
return join(homedir(), ".herald", HERALD_COMPANY, HERALD_PROJECT, HERALD_USER);
|
|
37
38
|
}
|
|
@@ -61,7 +62,6 @@ function clearSession() {
|
|
|
61
62
|
unlinkSync(sessionFile);
|
|
62
63
|
}
|
|
63
64
|
}
|
|
64
|
-
// Context info for display
|
|
65
65
|
function getContextString() {
|
|
66
66
|
return `${HERALD_COMPANY}:${HERALD_PROJECT}:${HERALD_USER}`;
|
|
67
67
|
}
|
|
@@ -81,11 +81,9 @@ When users describe what they want, you:
|
|
|
81
81
|
Keep responses concise and focused. You're a helpful assistant, not verbose.
|
|
82
82
|
When showing module structures, summarize the key sections and fields.`;
|
|
83
83
|
async function callClaude(systemPrompt, messages) {
|
|
84
|
-
// Convert to Anthropic format (separate system from messages)
|
|
85
84
|
const anthropicMessages = messages
|
|
86
85
|
.filter(m => m.role !== "system")
|
|
87
86
|
.map(m => ({ role: m.role, content: m.content }));
|
|
88
|
-
// Combine all system messages
|
|
89
87
|
const systemContent = messages
|
|
90
88
|
.filter(m => m.role === "system")
|
|
91
89
|
.map(m => m.content)
|
|
@@ -113,7 +111,6 @@ async function callClaude(systemPrompt, messages) {
|
|
|
113
111
|
}
|
|
114
112
|
async function translateAndExecute(userInput, conversationHistory) {
|
|
115
113
|
const sessionId = loadSession();
|
|
116
|
-
// First, ask Claude to interpret the user's intent
|
|
117
114
|
const interpretSystemPrompt = `You interpret user requests for CEDA.
|
|
118
115
|
Respond with JSON only: {"action": "predict"|"refine"|"info"|"accept"|"reject", "input": "the user's requirement"}
|
|
119
116
|
- predict: User wants to create something new
|
|
@@ -137,7 +134,7 @@ Current session: ${sessionId || "none"}`;
|
|
|
137
134
|
input,
|
|
138
135
|
config: { enableAutoFix: true, maxAutoFixAttempts: 3 },
|
|
139
136
|
});
|
|
140
|
-
if (cedaResult.sessionId) {
|
|
137
|
+
if (cedaResult && typeof cedaResult.sessionId === "string") {
|
|
141
138
|
saveSession(cedaResult.sessionId);
|
|
142
139
|
}
|
|
143
140
|
}
|
|
@@ -162,21 +159,17 @@ Current session: ${sessionId || "none"}`;
|
|
|
162
159
|
catch {
|
|
163
160
|
// Claude didn't return valid JSON, treat as info request
|
|
164
161
|
}
|
|
165
|
-
// Build response context
|
|
166
162
|
let responseContext = "";
|
|
167
163
|
if (cedaResult) {
|
|
168
164
|
responseContext = `\n\nCEDA ${action} result:\n${JSON.stringify(cedaResult, null, 2)}\n\nSummarize this naturally for the user.`;
|
|
169
165
|
}
|
|
170
|
-
// Ask Claude to formulate a natural response
|
|
171
166
|
const responseMessages = [
|
|
172
167
|
...conversationHistory,
|
|
173
168
|
{ role: "user", content: userInput },
|
|
174
169
|
];
|
|
175
170
|
return await callClaude(HERALD_SYSTEM_PROMPT + responseContext, responseMessages);
|
|
176
171
|
}
|
|
177
|
-
import * as readline from "readline";
|
|
178
172
|
async function runChatMode() {
|
|
179
|
-
// Key is bundled - chat works out of the box
|
|
180
173
|
const contextStr = getContextString();
|
|
181
174
|
console.log(`
|
|
182
175
|
Herald v${VERSION} - Chat Mode
|
|
@@ -214,7 +207,6 @@ Type your requirements in natural language. Type 'exit' to quit.
|
|
|
214
207
|
};
|
|
215
208
|
prompt();
|
|
216
209
|
}
|
|
217
|
-
// Auth strategy: prefer Bearer token, fallback to Basic auth, allow none for demo
|
|
218
210
|
function getAuthHeader() {
|
|
219
211
|
if (CEDA_API_TOKEN) {
|
|
220
212
|
return `Bearer ${CEDA_API_TOKEN}`;
|
|
@@ -232,7 +224,6 @@ async function callCedaAPI(endpoint, method = "GET", body) {
|
|
|
232
224
|
error: "HERALD_API_URL not configured. Run: export HERALD_API_URL=https://getceda.com"
|
|
233
225
|
};
|
|
234
226
|
}
|
|
235
|
-
// Add context params to URL for GET requests (except /health)
|
|
236
227
|
let url = `${CEDA_API_URL}${endpoint}`;
|
|
237
228
|
if (method === "GET" && endpoint.startsWith("/api/")) {
|
|
238
229
|
const separator = endpoint.includes("?") ? "&" : "?";
|
|
@@ -245,7 +236,6 @@ async function callCedaAPI(endpoint, method = "GET", body) {
|
|
|
245
236
|
if (authHeader) {
|
|
246
237
|
headers["Authorization"] = authHeader;
|
|
247
238
|
}
|
|
248
|
-
// Add context to POST body
|
|
249
239
|
let enrichedBody = body;
|
|
250
240
|
if (method === "POST" && body && typeof body === "object") {
|
|
251
241
|
enrichedBody = {
|
|
@@ -288,6 +278,7 @@ Usage:
|
|
|
288
278
|
herald-mcp <command> [options]
|
|
289
279
|
|
|
290
280
|
Commands:
|
|
281
|
+
init Initialize Herald MCP config in .claude/settings.json
|
|
291
282
|
chat Natural conversation mode (Claude voice)
|
|
292
283
|
predict "<signal>" Start new prediction (saves session)
|
|
293
284
|
refine "<text>" Refine current session
|
|
@@ -298,13 +289,14 @@ Commands:
|
|
|
298
289
|
stats Get server statistics
|
|
299
290
|
|
|
300
291
|
Examples:
|
|
301
|
-
herald-mcp
|
|
302
|
-
herald-mcp
|
|
292
|
+
herald-mcp init # Setup Claude Desktop config
|
|
293
|
+
herald-mcp chat # Natural conversation
|
|
294
|
+
herald-mcp predict "create safety assessment" # Command mode
|
|
303
295
|
herald-mcp refine "add OSHA compliance"
|
|
304
296
|
herald-mcp observe yes
|
|
305
297
|
|
|
306
298
|
Environment:
|
|
307
|
-
HERALD_API_URL CEDA server URL (required)
|
|
299
|
+
HERALD_API_URL CEDA server URL (required for API calls)
|
|
308
300
|
HERALD_COMPANY Company context (default: default)
|
|
309
301
|
HERALD_PROJECT Project context (default: default)
|
|
310
302
|
HERALD_USER User context (default: default)
|
|
@@ -320,7 +312,6 @@ function formatOutput(data) {
|
|
|
320
312
|
console.error(`Error: ${data.error}`);
|
|
321
313
|
process.exit(1);
|
|
322
314
|
}
|
|
323
|
-
// Pretty print with session ID highlighted if present
|
|
324
315
|
if (data.sessionId) {
|
|
325
316
|
console.log(`\nSession: ${data.sessionId}\n`);
|
|
326
317
|
}
|
|
@@ -337,6 +328,10 @@ async function runCLI(args) {
|
|
|
337
328
|
return;
|
|
338
329
|
}
|
|
339
330
|
switch (command) {
|
|
331
|
+
case "init": {
|
|
332
|
+
runInit(args.slice(1));
|
|
333
|
+
break;
|
|
334
|
+
}
|
|
340
335
|
case "chat": {
|
|
341
336
|
await runChatMode();
|
|
342
337
|
break;
|
|
@@ -361,8 +356,7 @@ async function runCLI(args) {
|
|
|
361
356
|
input: signal,
|
|
362
357
|
config: { enableAutoFix: true, maxAutoFixAttempts: 3 },
|
|
363
358
|
});
|
|
364
|
-
|
|
365
|
-
if (result.sessionId) {
|
|
359
|
+
if (result.sessionId && typeof result.sessionId === "string") {
|
|
366
360
|
saveSession(result.sessionId);
|
|
367
361
|
console.log(`\n✓ Session saved: ${result.sessionId}\n`);
|
|
368
362
|
}
|
|
@@ -414,7 +408,6 @@ async function runCLI(args) {
|
|
|
414
408
|
accepted: accepted === "yes" || accepted === "true" || accepted === "accept",
|
|
415
409
|
comment: args[2],
|
|
416
410
|
});
|
|
417
|
-
// Clear session after feedback
|
|
418
411
|
clearSession();
|
|
419
412
|
console.log("\n✓ Session closed.\n");
|
|
420
413
|
formatOutput(result);
|
|
@@ -486,273 +479,194 @@ const tools = [
|
|
|
486
479
|
},
|
|
487
480
|
},
|
|
488
481
|
{
|
|
489
|
-
name: "
|
|
490
|
-
description: "
|
|
482
|
+
name: "herald_feedback",
|
|
483
|
+
description: "Submit feedback on a prediction (accept/reject)",
|
|
491
484
|
inputSchema: {
|
|
492
485
|
type: "object",
|
|
493
486
|
properties: {
|
|
494
487
|
session_id: { type: "string", description: "Session ID" },
|
|
495
|
-
accepted: { type: "boolean", description: "
|
|
496
|
-
|
|
488
|
+
accepted: { type: "boolean", description: "Whether prediction was accepted" },
|
|
489
|
+
comment: { type: "string", description: "Optional feedback comment" },
|
|
497
490
|
},
|
|
498
491
|
required: ["session_id", "accepted"],
|
|
499
492
|
},
|
|
500
493
|
},
|
|
501
|
-
// === HERALD CONTEXT SYNC TOOLS ===
|
|
502
494
|
{
|
|
503
495
|
name: "herald_context_status",
|
|
504
|
-
description: "
|
|
496
|
+
description: "Read status from Herald contexts across domains (offspring vaults)",
|
|
505
497
|
inputSchema: {
|
|
506
498
|
type: "object",
|
|
507
499
|
properties: {
|
|
508
|
-
|
|
500
|
+
vault: { type: "string", description: "Specific vault to query (optional)" },
|
|
509
501
|
},
|
|
510
502
|
},
|
|
511
503
|
},
|
|
512
504
|
{
|
|
513
505
|
name: "herald_share_insight",
|
|
514
|
-
description: "Share a pattern insight with another
|
|
506
|
+
description: "Share a pattern insight with another context",
|
|
515
507
|
inputSchema: {
|
|
516
508
|
type: "object",
|
|
517
509
|
properties: {
|
|
518
|
-
context: { type: "string", description: "Target context to share insight with" },
|
|
519
510
|
insight: { type: "string", description: "The insight to share" },
|
|
520
|
-
|
|
511
|
+
target_vault: { type: "string", description: "Target vault (optional)" },
|
|
512
|
+
topic: { type: "string", description: "Topic category" },
|
|
521
513
|
},
|
|
522
|
-
required: ["
|
|
514
|
+
required: ["insight"],
|
|
523
515
|
},
|
|
524
516
|
},
|
|
525
517
|
{
|
|
526
518
|
name: "herald_query_insights",
|
|
527
|
-
description: "Query
|
|
519
|
+
description: "Query accumulated insights on a topic",
|
|
528
520
|
inputSchema: {
|
|
529
521
|
type: "object",
|
|
530
522
|
properties: {
|
|
531
|
-
|
|
532
|
-
|
|
523
|
+
topic: { type: "string", description: "Topic to query" },
|
|
524
|
+
vault: { type: "string", description: "Specific vault to query (optional)" },
|
|
533
525
|
},
|
|
534
|
-
required: ["
|
|
526
|
+
required: ["topic"],
|
|
535
527
|
},
|
|
536
528
|
},
|
|
537
529
|
];
|
|
538
|
-
server.setRequestHandler(ListToolsRequestSchema, async () =>
|
|
530
|
+
server.setRequestHandler(ListToolsRequestSchema, async () => {
|
|
531
|
+
return { tools };
|
|
532
|
+
});
|
|
539
533
|
server.setRequestHandler(CallToolRequestSchema, async (request) => {
|
|
540
534
|
const { name, arguments: args } = request.params;
|
|
541
|
-
|
|
542
|
-
|
|
543
|
-
|
|
544
|
-
|
|
545
|
-
|
|
546
|
-
|
|
547
|
-
result = await callCedaAPI("/api/stats");
|
|
548
|
-
break;
|
|
549
|
-
case "herald_predict": {
|
|
550
|
-
const params = args;
|
|
551
|
-
const context = params.context ? [{ type: "user_context", value: params.context, source: "herald_mcp" }] : [];
|
|
552
|
-
result = await callCedaAPI("/api/predict", "POST", {
|
|
553
|
-
input: params.signal,
|
|
554
|
-
context,
|
|
555
|
-
sessionId: params.session_id,
|
|
556
|
-
participant: params.participant,
|
|
557
|
-
config: { enableAutoFix: true, maxAutoFixAttempts: 3 },
|
|
558
|
-
});
|
|
559
|
-
break;
|
|
560
|
-
}
|
|
561
|
-
case "herald_refine": {
|
|
562
|
-
const params = args;
|
|
563
|
-
const context = params.context ? [{ type: "refinement_context", value: params.context, source: "herald_mcp" }] : [];
|
|
564
|
-
result = await callCedaAPI("/api/refine", "POST", {
|
|
565
|
-
sessionId: params.session_id,
|
|
566
|
-
refinement: params.refinement,
|
|
567
|
-
context,
|
|
568
|
-
participant: params.participant,
|
|
569
|
-
});
|
|
570
|
-
break;
|
|
571
|
-
}
|
|
572
|
-
case "herald_session": {
|
|
573
|
-
const params = args;
|
|
574
|
-
result = await callCedaAPI(`/api/session/${params.session_id}`);
|
|
575
|
-
break;
|
|
576
|
-
}
|
|
577
|
-
case "herald_observe": {
|
|
578
|
-
const params = args;
|
|
579
|
-
result = await callCedaAPI("/api/feedback", "POST", {
|
|
580
|
-
sessionId: params.session_id,
|
|
581
|
-
accepted: params.accepted,
|
|
582
|
-
comment: params.feedback,
|
|
583
|
-
});
|
|
584
|
-
break;
|
|
585
|
-
}
|
|
586
|
-
// === HERALD CONTEXT SYNC HANDLERS ===
|
|
587
|
-
case "herald_context_status": {
|
|
588
|
-
const params = args;
|
|
589
|
-
const knownContexts = ["goprint", "disrupt", "spilno"];
|
|
590
|
-
const contextsToQuery = params.context ? [params.context] : knownContexts;
|
|
591
|
-
// Cloud mode: Call CEDA API (Herald-to-Herald protocol)
|
|
592
|
-
if (OFFSPRING_CLOUD_MODE && CEDA_API_URL) {
|
|
593
|
-
const contextParam = params.context ? `?context=${params.context}` : "";
|
|
594
|
-
result = await callCedaAPI(`/api/herald/contexts${contextParam}`);
|
|
595
|
-
break;
|
|
596
|
-
}
|
|
597
|
-
const statuses = [];
|
|
598
|
-
for (const ctx of contextsToQuery) {
|
|
599
|
-
const statusPath = join(AEGIS_OFFSPRING_PATH, `${ctx}.md`);
|
|
600
|
-
if (!existsSync(statusPath)) {
|
|
601
|
-
statuses.push({
|
|
602
|
-
context: ctx,
|
|
603
|
-
status: "not_found",
|
|
604
|
-
sessionCount: 0,
|
|
605
|
-
lastOutcome: null,
|
|
606
|
-
activeThreads: [],
|
|
607
|
-
blockers: [],
|
|
608
|
-
pendingItems: [],
|
|
609
|
-
readyForSync: false,
|
|
610
|
-
});
|
|
611
|
-
continue;
|
|
612
|
-
}
|
|
613
|
-
const content = readFileSync(statusPath, "utf-8");
|
|
614
|
-
const frontmatterMatch = content.match(/^---\n([\s\S]*?)\n---/);
|
|
615
|
-
if (!frontmatterMatch) {
|
|
616
|
-
statuses.push({
|
|
617
|
-
context: ctx,
|
|
618
|
-
status: "invalid_format",
|
|
619
|
-
sessionCount: 0,
|
|
620
|
-
lastOutcome: null,
|
|
621
|
-
activeThreads: [],
|
|
622
|
-
blockers: [],
|
|
623
|
-
pendingItems: [],
|
|
624
|
-
readyForSync: false,
|
|
625
|
-
});
|
|
626
|
-
continue;
|
|
627
|
-
}
|
|
628
|
-
const yaml = frontmatterMatch[1];
|
|
629
|
-
const parseYamlArray = (key) => {
|
|
630
|
-
const match = yaml.match(new RegExp(`${key}:\\s*\\n((?:\\s+-[^\\n]+\\n?)+)`, "m"));
|
|
631
|
-
if (!match)
|
|
632
|
-
return [];
|
|
633
|
-
return match[1]
|
|
634
|
-
.split("\n")
|
|
635
|
-
.filter((line) => line.trim().startsWith("-"))
|
|
636
|
-
.map((line) => line.replace(/^\s*-\s*/, "").trim());
|
|
535
|
+
try {
|
|
536
|
+
switch (name) {
|
|
537
|
+
case "herald_health": {
|
|
538
|
+
const result = await callCedaAPI("/health");
|
|
539
|
+
return {
|
|
540
|
+
content: [{ type: "text", text: JSON.stringify(result, null, 2) }],
|
|
637
541
|
};
|
|
638
|
-
|
|
639
|
-
|
|
640
|
-
|
|
542
|
+
}
|
|
543
|
+
case "herald_stats": {
|
|
544
|
+
const result = await callCedaAPI("/api/stats");
|
|
545
|
+
return {
|
|
546
|
+
content: [{ type: "text", text: JSON.stringify(result, null, 2) }],
|
|
641
547
|
};
|
|
642
|
-
statuses.push({
|
|
643
|
-
context: ctx,
|
|
644
|
-
status: "active",
|
|
645
|
-
sessionCount: parseInt(parseYamlValue("session_count") || "0", 10),
|
|
646
|
-
lastOutcome: parseYamlValue("outcome"),
|
|
647
|
-
activeThreads: parseYamlArray("active_threads"),
|
|
648
|
-
blockers: parseYamlArray("blockers"),
|
|
649
|
-
pendingItems: parseYamlArray("awaiting_aegis"), // Read from file but expose as pendingItems
|
|
650
|
-
readyForSync: parseYamlValue("ready_for_handoff") === "true",
|
|
651
|
-
});
|
|
652
548
|
}
|
|
653
|
-
|
|
654
|
-
|
|
655
|
-
|
|
656
|
-
|
|
657
|
-
|
|
658
|
-
|
|
659
|
-
|
|
660
|
-
|
|
661
|
-
|
|
662
|
-
|
|
663
|
-
|
|
664
|
-
|
|
665
|
-
|
|
666
|
-
|
|
667
|
-
|
|
668
|
-
const params = args;
|
|
669
|
-
const validContexts = ["goprint", "disrupt", "spilno"];
|
|
670
|
-
if (!validContexts.includes(params.context)) {
|
|
671
|
-
result = { success: false, error: `Unknown context: ${params.context}. Valid: ${validContexts.join(", ")}` };
|
|
672
|
-
break;
|
|
549
|
+
case "herald_predict": {
|
|
550
|
+
const signal = args?.signal;
|
|
551
|
+
const context = args?.context;
|
|
552
|
+
const sessionId = args?.session_id;
|
|
553
|
+
const participant = args?.participant;
|
|
554
|
+
const result = await callCedaAPI("/api/predict", "POST", {
|
|
555
|
+
input: signal,
|
|
556
|
+
context,
|
|
557
|
+
sessionId,
|
|
558
|
+
participant,
|
|
559
|
+
config: { enableAutoFix: true, maxAutoFixAttempts: 3 },
|
|
560
|
+
});
|
|
561
|
+
return {
|
|
562
|
+
content: [{ type: "text", text: JSON.stringify(result, null, 2) }],
|
|
563
|
+
};
|
|
673
564
|
}
|
|
674
|
-
|
|
675
|
-
|
|
676
|
-
|
|
677
|
-
|
|
678
|
-
|
|
679
|
-
|
|
565
|
+
case "herald_refine": {
|
|
566
|
+
const sessionId = args?.session_id;
|
|
567
|
+
const refinement = args?.refinement;
|
|
568
|
+
const context = args?.context;
|
|
569
|
+
const participant = args?.participant;
|
|
570
|
+
const result = await callCedaAPI("/api/refine", "POST", {
|
|
571
|
+
sessionId,
|
|
572
|
+
refinement,
|
|
573
|
+
context,
|
|
574
|
+
participant,
|
|
680
575
|
});
|
|
681
|
-
|
|
576
|
+
return {
|
|
577
|
+
content: [{ type: "text", text: JSON.stringify(result, null, 2) }],
|
|
578
|
+
};
|
|
682
579
|
}
|
|
683
|
-
|
|
684
|
-
|
|
685
|
-
|
|
686
|
-
|
|
687
|
-
|
|
688
|
-
|
|
689
|
-
---
|
|
690
|
-
|
|
691
|
-
${params.insight}
|
|
692
|
-
|
|
693
|
-
---
|
|
694
|
-
`;
|
|
695
|
-
let existingContent = "";
|
|
696
|
-
if (existsSync(insightPath)) {
|
|
697
|
-
existingContent = readFileSync(insightPath, "utf-8");
|
|
580
|
+
case "herald_session": {
|
|
581
|
+
const sessionId = args?.session_id;
|
|
582
|
+
const result = await callCedaAPI(`/api/session/${sessionId}`);
|
|
583
|
+
return {
|
|
584
|
+
content: [{ type: "text", text: JSON.stringify(result, null, 2) }],
|
|
585
|
+
};
|
|
698
586
|
}
|
|
699
|
-
|
|
700
|
-
|
|
701
|
-
|
|
702
|
-
|
|
703
|
-
|
|
704
|
-
|
|
705
|
-
|
|
706
|
-
|
|
707
|
-
|
|
708
|
-
|
|
709
|
-
|
|
710
|
-
|
|
711
|
-
// Determine which context Herald is serving
|
|
712
|
-
const ctx = HERALD_VAULT || "default";
|
|
713
|
-
// Cloud mode: Call CEDA API (Herald-to-Herald protocol)
|
|
714
|
-
if (OFFSPRING_CLOUD_MODE && CEDA_API_URL) {
|
|
715
|
-
result = await callCedaAPI(`/api/herald/insights?context=${ctx}&query=${encodeURIComponent(params.question)}`);
|
|
716
|
-
break;
|
|
587
|
+
case "herald_feedback": {
|
|
588
|
+
const sessionId = args?.session_id;
|
|
589
|
+
const accepted = args?.accepted;
|
|
590
|
+
const comment = args?.comment;
|
|
591
|
+
const result = await callCedaAPI("/api/feedback", "POST", {
|
|
592
|
+
sessionId,
|
|
593
|
+
accepted,
|
|
594
|
+
comment,
|
|
595
|
+
});
|
|
596
|
+
return {
|
|
597
|
+
content: [{ type: "text", text: JSON.stringify(result, null, 2) }],
|
|
598
|
+
};
|
|
717
599
|
}
|
|
718
|
-
|
|
719
|
-
|
|
720
|
-
|
|
721
|
-
|
|
722
|
-
|
|
723
|
-
|
|
724
|
-
|
|
725
|
-
|
|
726
|
-
|
|
727
|
-
|
|
728
|
-
|
|
600
|
+
case "herald_context_status": {
|
|
601
|
+
const vault = args?.vault;
|
|
602
|
+
if (OFFSPRING_CLOUD_MODE) {
|
|
603
|
+
const endpoint = vault ? `/api/herald/contexts?vault=${vault}` : "/api/herald/contexts";
|
|
604
|
+
const result = await callCedaAPI(endpoint);
|
|
605
|
+
return {
|
|
606
|
+
content: [{ type: "text", text: JSON.stringify(result, null, 2) }],
|
|
607
|
+
};
|
|
608
|
+
}
|
|
609
|
+
// Local mode - read from files
|
|
610
|
+
const vaults = vault ? [vault] : ["spilno", "goprint", "disrupt"];
|
|
611
|
+
const statuses = {};
|
|
612
|
+
for (const v of vaults) {
|
|
613
|
+
const statusPath = join(AEGIS_OFFSPRING_PATH, v, "_status.md");
|
|
614
|
+
if (existsSync(statusPath)) {
|
|
615
|
+
statuses[v] = readFileSync(statusPath, "utf-8");
|
|
729
616
|
}
|
|
730
617
|
}
|
|
618
|
+
return {
|
|
619
|
+
content: [{ type: "text", text: JSON.stringify(statuses, null, 2) }],
|
|
620
|
+
};
|
|
731
621
|
}
|
|
732
|
-
|
|
733
|
-
|
|
734
|
-
|
|
622
|
+
case "herald_share_insight": {
|
|
623
|
+
const insight = args?.insight;
|
|
624
|
+
const targetVault = args?.target_vault;
|
|
625
|
+
const topic = args?.topic;
|
|
626
|
+
if (OFFSPRING_CLOUD_MODE) {
|
|
627
|
+
const result = await callCedaAPI("/api/herald/insight", "POST", {
|
|
628
|
+
insight,
|
|
629
|
+
targetVault,
|
|
630
|
+
topic,
|
|
631
|
+
sourceVault: HERALD_VAULT,
|
|
632
|
+
});
|
|
633
|
+
return {
|
|
634
|
+
content: [{ type: "text", text: JSON.stringify(result, null, 2) }],
|
|
635
|
+
};
|
|
636
|
+
}
|
|
637
|
+
return {
|
|
638
|
+
content: [{ type: "text", text: JSON.stringify({ success: true, message: "Insight recorded (local mode)" }, null, 2) }],
|
|
639
|
+
};
|
|
735
640
|
}
|
|
736
|
-
|
|
737
|
-
|
|
738
|
-
|
|
739
|
-
|
|
740
|
-
|
|
641
|
+
case "herald_query_insights": {
|
|
642
|
+
const topic = args?.topic;
|
|
643
|
+
const vault = args?.vault;
|
|
644
|
+
if (OFFSPRING_CLOUD_MODE) {
|
|
645
|
+
const endpoint = vault
|
|
646
|
+
? `/api/herald/insights?topic=${encodeURIComponent(topic)}&vault=${vault}`
|
|
647
|
+
: `/api/herald/insights?topic=${encodeURIComponent(topic)}`;
|
|
648
|
+
const result = await callCedaAPI(endpoint);
|
|
649
|
+
return {
|
|
650
|
+
content: [{ type: "text", text: JSON.stringify(result, null, 2) }],
|
|
651
|
+
};
|
|
652
|
+
}
|
|
653
|
+
return {
|
|
654
|
+
content: [{ type: "text", text: JSON.stringify({ insights: [], message: "Local mode - no shared insights" }, null, 2) }],
|
|
655
|
+
};
|
|
741
656
|
}
|
|
742
|
-
|
|
743
|
-
|
|
744
|
-
|
|
745
|
-
|
|
746
|
-
|
|
747
|
-
response,
|
|
748
|
-
hasInsights: !!relevantInsights,
|
|
749
|
-
};
|
|
750
|
-
break;
|
|
657
|
+
default:
|
|
658
|
+
return {
|
|
659
|
+
content: [{ type: "text", text: `Unknown tool: ${name}` }],
|
|
660
|
+
isError: true,
|
|
661
|
+
};
|
|
751
662
|
}
|
|
752
|
-
default:
|
|
753
|
-
throw new Error(`Unknown tool: ${name}`);
|
|
754
663
|
}
|
|
755
|
-
|
|
664
|
+
catch (error) {
|
|
665
|
+
return {
|
|
666
|
+
content: [{ type: "text", text: `Error: ${error}` }],
|
|
667
|
+
isError: true,
|
|
668
|
+
};
|
|
669
|
+
}
|
|
756
670
|
});
|
|
757
671
|
async function runMCP() {
|
|
758
672
|
const transport = new StdioServerTransport();
|
|
@@ -778,3 +692,4 @@ async function main() {
|
|
|
778
692
|
await runMCP();
|
|
779
693
|
}
|
|
780
694
|
main().catch(console.error);
|
|
695
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@spilno/herald-mcp",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.5.0",
|
|
4
4
|
"description": "Herald MCP - AI-native interface to CEDA (Cognitive Event-Driven Architecture)",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"type": "module",
|
|
@@ -11,7 +11,8 @@
|
|
|
11
11
|
"build": "tsc && chmod +x dist/index.js",
|
|
12
12
|
"start": "node dist/index.js",
|
|
13
13
|
"dev": "tsx src/index.ts",
|
|
14
|
-
"prepublishOnly": "npm run build"
|
|
14
|
+
"prepublishOnly": "npm run build",
|
|
15
|
+
"typecheck": "tsc --noEmit"
|
|
15
16
|
},
|
|
16
17
|
"keywords": [
|
|
17
18
|
"mcp",
|