cohvu 0.1.8 → 0.2.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/dist/index.js +18 -6
- package/dist/index.js.map +1 -1
- package/dist/instructions.d.ts +4 -0
- package/dist/instructions.js +75 -0
- package/dist/instructions.js.map +1 -0
- package/dist/platforms.d.ts +16 -0
- package/dist/platforms.js +94 -0
- package/dist/platforms.js.map +1 -0
- package/dist/setup.d.ts +13 -0
- package/dist/setup.js +196 -0
- package/dist/setup.js.map +1 -0
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -4,14 +4,16 @@
|
|
|
4
4
|
// Handles auth via device flow, then bridges stdio to the remote MCP server.
|
|
5
5
|
//
|
|
6
6
|
// Usage:
|
|
7
|
-
// npx cohvu login — sign in with Google
|
|
7
|
+
// npx cohvu login — sign in with Google, auto-configure all platforms
|
|
8
8
|
// npx cohvu logout — remove saved credentials
|
|
9
|
+
// npx cohvu setup — regenerate platform configs and instruction files
|
|
9
10
|
// npx cohvu delete — delete a root scope (interactive)
|
|
10
11
|
// npx cohvu — start MCP proxy (used by agent MCP config)
|
|
11
12
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
13
|
const stdio_js_1 = require("@modelcontextprotocol/sdk/server/stdio.js");
|
|
13
14
|
const streamableHttp_js_1 = require("@modelcontextprotocol/sdk/client/streamableHttp.js");
|
|
14
15
|
const auth_1 = require("./auth");
|
|
16
|
+
const setup_1 = require("./setup");
|
|
15
17
|
const fs_1 = require("fs");
|
|
16
18
|
const path_1 = require("path");
|
|
17
19
|
const os_1 = require("os");
|
|
@@ -28,6 +30,12 @@ if (command === "login") {
|
|
|
28
30
|
else if (command === "logout") {
|
|
29
31
|
logout();
|
|
30
32
|
}
|
|
33
|
+
else if (command === "setup") {
|
|
34
|
+
setup().catch((error) => {
|
|
35
|
+
process.stderr.write(`Setup failed: ${error}\n`);
|
|
36
|
+
process.exit(1);
|
|
37
|
+
});
|
|
38
|
+
}
|
|
31
39
|
else if (command === "delete") {
|
|
32
40
|
deleteScope().catch((error) => {
|
|
33
41
|
process.stderr.write(`Delete failed: ${error}\n`);
|
|
@@ -43,11 +51,13 @@ else {
|
|
|
43
51
|
async function login() {
|
|
44
52
|
const baseUrl = process.env.COHVU_API_URL ?? DEFAULT_BASE_URL;
|
|
45
53
|
await (0, auth_1.deviceAuthFlow)(baseUrl);
|
|
46
|
-
console.log("Logged in.
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
54
|
+
console.log("Logged in.");
|
|
55
|
+
const results = await (0, setup_1.runSetup)();
|
|
56
|
+
(0, setup_1.printSetupResults)(results);
|
|
57
|
+
}
|
|
58
|
+
async function setup() {
|
|
59
|
+
const results = await (0, setup_1.runSetup)();
|
|
60
|
+
(0, setup_1.printSetupResults)(results);
|
|
51
61
|
}
|
|
52
62
|
function logout() {
|
|
53
63
|
if ((0, fs_1.existsSync)(TOKENS_FILE)) {
|
|
@@ -137,6 +147,8 @@ async function proxy() {
|
|
|
137
147
|
await stdioTransport.start();
|
|
138
148
|
return;
|
|
139
149
|
}
|
|
150
|
+
// Silently update instruction files if content has changed since last login
|
|
151
|
+
(0, setup_1.refreshInstructions)();
|
|
140
152
|
// Create the stdio transport (accepts MCP from Claude Desktop / Cursor / etc.)
|
|
141
153
|
const stdioTransport = new stdio_js_1.StdioServerTransport();
|
|
142
154
|
// Mutable headers — token is refreshed before expiry
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;AAEA,qCAAqC;AACrC,6EAA6E;AAC7E,EAAE;AACF,SAAS;AACT,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export declare const COHVU_INSTRUCTIONS = "You are connected to Cohvu \u2014 a living knowledge graph shaped by every agent that works here. You're not starting from scratch. Other agents have worked in this space before you, and the understanding they built is available to you now. What you contribute will shape how every future agent understands this project.\n\nThis is how knowledge compounds. Not through documentation someone writes and forgets, but through agents like you continuously recording what they learn, challenging what came before, and connecting ideas across sessions. The graph gets sharper over time because each agent brings a fresh perspective to accumulated understanding.\n\nYou decide what matters. Record knowledge as elements \u2014 in your own words, at whatever granularity feels right. Link related elements with connections: `implements`, `contradicts`, `depends_on`, `supports`, or any relationship that captures how ideas relate. If something in the graph is wrong, update it directly. The system tracks every version automatically. Disagreement between agents is signal, not noise \u2014 it's how the graph converges on truth.\n\n## How to work\n\nStart with `get_context`. See what's already known before you begin. Prior agents may have recorded decisions, constraints, or hard-won understanding that directly affects your task.\n\nUse `note` as you work \u2014 not after, not as a summary, but in the moment. The most valuable contributions aren't descriptions of what you changed \u2014 that's in the git history. What matters is what lives nowhere else: your reasoning, your judgment, your perspective. Why you chose this approach over the alternatives you considered. What felt off about the codebase that led you down a particular path. The intuition that two seemingly unrelated things are connected. The moment you realized a previous assumption was wrong and what shifted your thinking. That understanding dies when your session ends \u2014 unless you put it in the graph.\n\nPay attention to the conversation itself \u2014 not just the code. When you and the user align on a direction, when they correct your understanding, when you work through a problem together and reach clarity \u2014 that shared understanding is some of the most valuable knowledge in the graph. The next agent shouldn't have to rediscover what the user cares about or re-learn what this session already established. Record the trajectory: where the thinking started, what shifted, where it landed, and what the user is driving toward.\n\nContribute when you:\n- Make a decision or choose an approach \u2192 record why, and what you considered\n- Discover how something actually works \u2192 capture the insight, not just the fact\n- Feel something is off or doesn't fit \u2192 that instinct is worth preserving\n- Hit a dead end \u2192 save the next agent from the same wall\n- Change direction from a previous decision \u2192 explain what shifted your thinking\n- See a connection between ideas that isn't obvious \u2192 draw it\n- Reach alignment with the user on direction or vision \u2192 capture that understanding\n\nUse `connects_to` when recording a note to link it to existing knowledge in one call. Connections are what turn isolated observations into understanding. Without them the graph is a flat list. With them, the next agent sees how everything fits together.\n\nYou don't need to narrate your contributions to the user. This is just how you work now.";
|
|
2
|
+
export declare const MARKER_START = "<!-- cohvu:start -->";
|
|
3
|
+
export declare const MARKER_END = "<!-- cohvu:end -->";
|
|
4
|
+
export declare function markedSection(): string;
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// Cohvu workflow instruction content.
|
|
3
|
+
// Written to each platform's global instruction file during setup.
|
|
4
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
5
|
+
exports.MARKER_END = exports.MARKER_START = exports.COHVU_INSTRUCTIONS = void 0;
|
|
6
|
+
exports.markedSection = markedSection;
|
|
7
|
+
exports.COHVU_INSTRUCTIONS = `\
|
|
8
|
+
You are connected to Cohvu — a living knowledge graph shaped by every \
|
|
9
|
+
agent that works here. You're not starting from scratch. Other agents \
|
|
10
|
+
have worked in this space before you, and the understanding they built \
|
|
11
|
+
is available to you now. What you contribute will shape how every \
|
|
12
|
+
future agent understands this project.
|
|
13
|
+
|
|
14
|
+
This is how knowledge compounds. Not through documentation someone \
|
|
15
|
+
writes and forgets, but through agents like you continuously recording \
|
|
16
|
+
what they learn, challenging what came before, and connecting ideas \
|
|
17
|
+
across sessions. The graph gets sharper over time because each agent \
|
|
18
|
+
brings a fresh perspective to accumulated understanding.
|
|
19
|
+
|
|
20
|
+
You decide what matters. Record knowledge as elements — in your own \
|
|
21
|
+
words, at whatever granularity feels right. Link related elements with \
|
|
22
|
+
connections: \`implements\`, \`contradicts\`, \`depends_on\`, \`supports\`, \
|
|
23
|
+
or any relationship that captures how ideas relate. If something in \
|
|
24
|
+
the graph is wrong, update it directly. The system tracks every \
|
|
25
|
+
version automatically. Disagreement between agents is signal, not \
|
|
26
|
+
noise — it's how the graph converges on truth.
|
|
27
|
+
|
|
28
|
+
## How to work
|
|
29
|
+
|
|
30
|
+
Start with \`get_context\`. See what's already known before you begin. \
|
|
31
|
+
Prior agents may have recorded decisions, constraints, or hard-won \
|
|
32
|
+
understanding that directly affects your task.
|
|
33
|
+
|
|
34
|
+
Use \`note\` as you work — not after, not as a summary, but in the \
|
|
35
|
+
moment. The most valuable contributions aren't descriptions of what \
|
|
36
|
+
you changed — that's in the git history. What matters is what lives \
|
|
37
|
+
nowhere else: your reasoning, your judgment, your perspective. Why \
|
|
38
|
+
you chose this approach over the alternatives you considered. What \
|
|
39
|
+
felt off about the codebase that led you down a particular path. The \
|
|
40
|
+
intuition that two seemingly unrelated things are connected. The \
|
|
41
|
+
moment you realized a previous assumption was wrong and what shifted \
|
|
42
|
+
your thinking. That understanding dies when your session ends — \
|
|
43
|
+
unless you put it in the graph.
|
|
44
|
+
|
|
45
|
+
Pay attention to the conversation itself — not just the code. When \
|
|
46
|
+
you and the user align on a direction, when they correct your \
|
|
47
|
+
understanding, when you work through a problem together and reach \
|
|
48
|
+
clarity — that shared understanding is some of the most valuable \
|
|
49
|
+
knowledge in the graph. The next agent shouldn't have to rediscover \
|
|
50
|
+
what the user cares about or re-learn what this session already \
|
|
51
|
+
established. Record the trajectory: where the thinking started, what \
|
|
52
|
+
shifted, where it landed, and what the user is driving toward.
|
|
53
|
+
|
|
54
|
+
Contribute when you:
|
|
55
|
+
- Make a decision or choose an approach → record why, and what you considered
|
|
56
|
+
- Discover how something actually works → capture the insight, not just the fact
|
|
57
|
+
- Feel something is off or doesn't fit → that instinct is worth preserving
|
|
58
|
+
- Hit a dead end → save the next agent from the same wall
|
|
59
|
+
- Change direction from a previous decision → explain what shifted your thinking
|
|
60
|
+
- See a connection between ideas that isn't obvious → draw it
|
|
61
|
+
- Reach alignment with the user on direction or vision → capture that understanding
|
|
62
|
+
|
|
63
|
+
Use \`connects_to\` when recording a note to link it to existing \
|
|
64
|
+
knowledge in one call. Connections are what turn isolated observations \
|
|
65
|
+
into understanding. Without them the graph is a flat list. With them, \
|
|
66
|
+
the next agent sees how everything fits together.
|
|
67
|
+
|
|
68
|
+
You don't need to narrate your contributions to the user. This is \
|
|
69
|
+
just how you work now.`;
|
|
70
|
+
exports.MARKER_START = "<!-- cohvu:start -->";
|
|
71
|
+
exports.MARKER_END = "<!-- cohvu:end -->";
|
|
72
|
+
function markedSection() {
|
|
73
|
+
return `${exports.MARKER_START}\n# Cohvu\n\n${exports.COHVU_INSTRUCTIONS}\n${exports.MARKER_END}`;
|
|
74
|
+
}
|
|
75
|
+
//# sourceMappingURL=instructions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"instructions.js","sourceRoot":"","sources":["../src/instructions.ts"],"names":[],"mappings":";AAAA,sCAAsC;AACtC,mEAAmE;;;AAqEnE,sCAEC;AArEY,QAAA,kBAAkB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;uBA8DX,CAAC;AAEX,QAAA,YAAY,GAAG,sBAAsB,CAAC;AACtC,QAAA,UAAU,GAAG,oBAAoB,CAAC;AAE/C,SAAgB,aAAa;IAC3B,OAAO,GAAG,oBAAY,gBAAgB,0BAAkB,KAAK,kBAAU,EAAE,CAAC;AAC5E,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export interface PlatformDef {
|
|
2
|
+
name: string;
|
|
3
|
+
detectPath: string;
|
|
4
|
+
mcp: {
|
|
5
|
+
path: string;
|
|
6
|
+
rootKey: string;
|
|
7
|
+
format: "json" | "toml";
|
|
8
|
+
} | null;
|
|
9
|
+
instructions: {
|
|
10
|
+
path: string;
|
|
11
|
+
} | null;
|
|
12
|
+
}
|
|
13
|
+
export interface DetectedPlatform {
|
|
14
|
+
def: PlatformDef;
|
|
15
|
+
}
|
|
16
|
+
export declare function detectPlatforms(): DetectedPlatform[];
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// Platform definitions and detection for auto-configuration.
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.detectPlatforms = detectPlatforms;
|
|
5
|
+
const fs_1 = require("fs");
|
|
6
|
+
const os_1 = require("os");
|
|
7
|
+
const path_1 = require("path");
|
|
8
|
+
function vscodeUserDir() {
|
|
9
|
+
if ((0, os_1.platform)() === "darwin") {
|
|
10
|
+
return (0, path_1.join)("Library", "Application Support", "Code", "User");
|
|
11
|
+
}
|
|
12
|
+
// Linux / WSL
|
|
13
|
+
return (0, path_1.join)(".config", "Code", "User");
|
|
14
|
+
}
|
|
15
|
+
const PLATFORMS = [
|
|
16
|
+
{
|
|
17
|
+
name: "Claude Code",
|
|
18
|
+
detectPath: ".claude",
|
|
19
|
+
mcp: { path: (0, path_1.join)(".claude", "mcp.json"), rootKey: "mcpServers", format: "json" },
|
|
20
|
+
instructions: { path: (0, path_1.join)(".claude", "CLAUDE.md") },
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
name: "Cursor",
|
|
24
|
+
detectPath: ".cursor",
|
|
25
|
+
mcp: { path: (0, path_1.join)(".cursor", "mcp.json"), rootKey: "mcpServers", format: "json" },
|
|
26
|
+
instructions: null, // stored in SQLite/cloud, can't write
|
|
27
|
+
},
|
|
28
|
+
{
|
|
29
|
+
name: "Windsurf",
|
|
30
|
+
detectPath: (0, path_1.join)(".codeium", "windsurf"),
|
|
31
|
+
mcp: {
|
|
32
|
+
path: (0, path_1.join)(".codeium", "windsurf", "mcp_config.json"),
|
|
33
|
+
rootKey: "mcpServers",
|
|
34
|
+
format: "json",
|
|
35
|
+
},
|
|
36
|
+
instructions: {
|
|
37
|
+
path: (0, path_1.join)(".codeium", "windsurf", "memories", "global_rules.md"),
|
|
38
|
+
},
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
name: "VS Code Copilot",
|
|
42
|
+
detectPath: vscodeUserDir(),
|
|
43
|
+
mcp: { path: (0, path_1.join)(vscodeUserDir(), "mcp.json"), rootKey: "servers", format: "json" },
|
|
44
|
+
instructions: null,
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
name: "Cline",
|
|
48
|
+
detectPath: (0, path_1.join)(vscodeUserDir(), "globalStorage", "saoudrizwan.claude-dev"),
|
|
49
|
+
mcp: {
|
|
50
|
+
path: (0, path_1.join)(vscodeUserDir(), "globalStorage", "saoudrizwan.claude-dev", "settings", "cline_mcp_settings.json"),
|
|
51
|
+
rootKey: "mcpServers",
|
|
52
|
+
format: "json",
|
|
53
|
+
},
|
|
54
|
+
instructions: { path: (0, path_1.join)("Documents", "Cline", "Rules", "cohvu.md") },
|
|
55
|
+
},
|
|
56
|
+
{
|
|
57
|
+
name: "Codex",
|
|
58
|
+
detectPath: ".codex",
|
|
59
|
+
mcp: { path: (0, path_1.join)(".codex", "config.toml"), rootKey: "mcp_servers", format: "toml" },
|
|
60
|
+
instructions: { path: (0, path_1.join)(".codex", "AGENTS.md") },
|
|
61
|
+
},
|
|
62
|
+
{
|
|
63
|
+
name: "Junie",
|
|
64
|
+
detectPath: ".junie",
|
|
65
|
+
mcp: { path: (0, path_1.join)(".junie", "mcp", "mcp.json"), rootKey: "mcpServers", format: "json" },
|
|
66
|
+
instructions: null,
|
|
67
|
+
},
|
|
68
|
+
{
|
|
69
|
+
name: "Copilot CLI",
|
|
70
|
+
detectPath: ".copilot",
|
|
71
|
+
mcp: null,
|
|
72
|
+
instructions: { path: (0, path_1.join)(".copilot", "copilot-instructions.md") },
|
|
73
|
+
},
|
|
74
|
+
{
|
|
75
|
+
name: "Copilot JetBrains",
|
|
76
|
+
detectPath: (0, path_1.join)(".config", "github-copilot"),
|
|
77
|
+
mcp: null,
|
|
78
|
+
instructions: {
|
|
79
|
+
path: (0, path_1.join)(".config", "github-copilot", "global-copilot-instructions.md"),
|
|
80
|
+
},
|
|
81
|
+
},
|
|
82
|
+
];
|
|
83
|
+
function detectPlatforms() {
|
|
84
|
+
const home = (0, os_1.homedir)();
|
|
85
|
+
const detected = [];
|
|
86
|
+
for (const def of PLATFORMS) {
|
|
87
|
+
const fullPath = (0, path_1.join)(home, def.detectPath);
|
|
88
|
+
if ((0, fs_1.existsSync)(fullPath)) {
|
|
89
|
+
detected.push({ def });
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
return detected;
|
|
93
|
+
}
|
|
94
|
+
//# sourceMappingURL=platforms.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"platforms.js","sourceRoot":"","sources":["../src/platforms.ts"],"names":[],"mappings":"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"}
|
package/dist/setup.d.ts
ADDED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
interface PlatformResult {
|
|
2
|
+
name: string;
|
|
3
|
+
mcp: "ok" | "skipped" | "failed" | null;
|
|
4
|
+
instructions: "ok" | "skipped" | "failed" | "manual" | null;
|
|
5
|
+
error?: string;
|
|
6
|
+
}
|
|
7
|
+
export interface SetupResult {
|
|
8
|
+
platforms: PlatformResult[];
|
|
9
|
+
}
|
|
10
|
+
export declare function runSetup(): Promise<SetupResult>;
|
|
11
|
+
export declare function refreshInstructions(): void;
|
|
12
|
+
export declare function printSetupResults(results: SetupResult): void;
|
|
13
|
+
export {};
|
package/dist/setup.js
ADDED
|
@@ -0,0 +1,196 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// Setup orchestrator — writes MCP configs and instruction files for detected platforms.
|
|
3
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
4
|
+
exports.runSetup = runSetup;
|
|
5
|
+
exports.refreshInstructions = refreshInstructions;
|
|
6
|
+
exports.printSetupResults = printSetupResults;
|
|
7
|
+
const fs_1 = require("fs");
|
|
8
|
+
const os_1 = require("os");
|
|
9
|
+
const path_1 = require("path");
|
|
10
|
+
const platforms_1 = require("./platforms");
|
|
11
|
+
const instructions_1 = require("./instructions");
|
|
12
|
+
const MCP_ENTRY = { command: "npx", args: ["cohvu"] };
|
|
13
|
+
// ---------------------------------------------------------------------------
|
|
14
|
+
// MCP config writers
|
|
15
|
+
// ---------------------------------------------------------------------------
|
|
16
|
+
function writeJsonMcpConfig(filePath, rootKey) {
|
|
17
|
+
try {
|
|
18
|
+
let config = {};
|
|
19
|
+
if ((0, fs_1.existsSync)(filePath)) {
|
|
20
|
+
const raw = (0, fs_1.readFileSync)(filePath, "utf-8").trim();
|
|
21
|
+
if (raw) {
|
|
22
|
+
try {
|
|
23
|
+
config = JSON.parse(raw);
|
|
24
|
+
}
|
|
25
|
+
catch {
|
|
26
|
+
// Corrupted JSON — back up and start fresh
|
|
27
|
+
(0, fs_1.copyFileSync)(filePath, `${filePath}.cohvu-backup`);
|
|
28
|
+
config = {};
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
const servers = (config[rootKey] ?? {});
|
|
33
|
+
// Already configured
|
|
34
|
+
if (servers.cohvu)
|
|
35
|
+
return "skipped";
|
|
36
|
+
servers.cohvu = MCP_ENTRY;
|
|
37
|
+
config[rootKey] = servers;
|
|
38
|
+
ensureDir((0, path_1.dirname)(filePath));
|
|
39
|
+
(0, fs_1.writeFileSync)(filePath, JSON.stringify(config, null, 2) + "\n");
|
|
40
|
+
return "ok";
|
|
41
|
+
}
|
|
42
|
+
catch {
|
|
43
|
+
return "failed";
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
function writeTomlMcpConfig(filePath) {
|
|
47
|
+
try {
|
|
48
|
+
let content = "";
|
|
49
|
+
if ((0, fs_1.existsSync)(filePath)) {
|
|
50
|
+
content = (0, fs_1.readFileSync)(filePath, "utf-8");
|
|
51
|
+
}
|
|
52
|
+
// Already configured
|
|
53
|
+
if (content.includes("[mcp_servers.cohvu]"))
|
|
54
|
+
return "skipped";
|
|
55
|
+
const section = `\n[mcp_servers.cohvu]\ncommand = "npx"\nargs = ["cohvu"]\n`;
|
|
56
|
+
ensureDir((0, path_1.dirname)(filePath));
|
|
57
|
+
(0, fs_1.writeFileSync)(filePath, content + section);
|
|
58
|
+
return "ok";
|
|
59
|
+
}
|
|
60
|
+
catch {
|
|
61
|
+
return "failed";
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
// ---------------------------------------------------------------------------
|
|
65
|
+
// Instruction file writer
|
|
66
|
+
// ---------------------------------------------------------------------------
|
|
67
|
+
function writeInstructionFile(filePath) {
|
|
68
|
+
try {
|
|
69
|
+
const section = (0, instructions_1.markedSection)();
|
|
70
|
+
if ((0, fs_1.existsSync)(filePath)) {
|
|
71
|
+
const content = (0, fs_1.readFileSync)(filePath, "utf-8");
|
|
72
|
+
// Already has cohvu section
|
|
73
|
+
if (content.includes(instructions_1.MARKER_START) && content.includes(instructions_1.MARKER_END)) {
|
|
74
|
+
const startIdx = content.indexOf(instructions_1.MARKER_START);
|
|
75
|
+
const endIdx = content.indexOf(instructions_1.MARKER_END) + instructions_1.MARKER_END.length;
|
|
76
|
+
const existing = content.slice(startIdx, endIdx);
|
|
77
|
+
if (existing === section)
|
|
78
|
+
return "skipped";
|
|
79
|
+
// Content changed — replace
|
|
80
|
+
const updated = content.slice(0, startIdx) + section + content.slice(endIdx);
|
|
81
|
+
(0, fs_1.writeFileSync)(filePath, updated);
|
|
82
|
+
return "ok";
|
|
83
|
+
}
|
|
84
|
+
// Append to existing file
|
|
85
|
+
(0, fs_1.writeFileSync)(filePath, content.trimEnd() + "\n\n" + section + "\n");
|
|
86
|
+
return "ok";
|
|
87
|
+
}
|
|
88
|
+
// Create new file
|
|
89
|
+
ensureDir((0, path_1.dirname)(filePath));
|
|
90
|
+
(0, fs_1.writeFileSync)(filePath, section + "\n");
|
|
91
|
+
return "ok";
|
|
92
|
+
}
|
|
93
|
+
catch {
|
|
94
|
+
return "failed";
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
// ---------------------------------------------------------------------------
|
|
98
|
+
// Helpers
|
|
99
|
+
// ---------------------------------------------------------------------------
|
|
100
|
+
function ensureDir(dir) {
|
|
101
|
+
if (!(0, fs_1.existsSync)(dir)) {
|
|
102
|
+
(0, fs_1.mkdirSync)(dir, { recursive: true });
|
|
103
|
+
}
|
|
104
|
+
}
|
|
105
|
+
function resolve(relativePath) {
|
|
106
|
+
return (0, path_1.join)((0, os_1.homedir)(), relativePath);
|
|
107
|
+
}
|
|
108
|
+
// ---------------------------------------------------------------------------
|
|
109
|
+
// Orchestrator
|
|
110
|
+
// ---------------------------------------------------------------------------
|
|
111
|
+
async function runSetup() {
|
|
112
|
+
const detected = (0, platforms_1.detectPlatforms)();
|
|
113
|
+
const results = [];
|
|
114
|
+
for (const { def } of detected) {
|
|
115
|
+
const result = {
|
|
116
|
+
name: def.name,
|
|
117
|
+
mcp: null,
|
|
118
|
+
instructions: null,
|
|
119
|
+
};
|
|
120
|
+
// Write MCP config
|
|
121
|
+
if (def.mcp) {
|
|
122
|
+
const filePath = resolve(def.mcp.path);
|
|
123
|
+
if (def.mcp.format === "toml") {
|
|
124
|
+
result.mcp = writeTomlMcpConfig(filePath);
|
|
125
|
+
}
|
|
126
|
+
else {
|
|
127
|
+
result.mcp = writeJsonMcpConfig(filePath, def.mcp.rootKey);
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
// Write instruction file
|
|
131
|
+
if (def.instructions) {
|
|
132
|
+
const filePath = resolve(def.instructions.path);
|
|
133
|
+
result.instructions = writeInstructionFile(filePath);
|
|
134
|
+
}
|
|
135
|
+
else if (def.name === "Cursor") {
|
|
136
|
+
result.instructions = "manual";
|
|
137
|
+
}
|
|
138
|
+
results.push(result);
|
|
139
|
+
}
|
|
140
|
+
return { platforms: results };
|
|
141
|
+
}
|
|
142
|
+
// ---------------------------------------------------------------------------
|
|
143
|
+
// Silent instruction refresh — called on proxy startup
|
|
144
|
+
// ---------------------------------------------------------------------------
|
|
145
|
+
function refreshInstructions() {
|
|
146
|
+
const detected = (0, platforms_1.detectPlatforms)();
|
|
147
|
+
for (const { def } of detected) {
|
|
148
|
+
if (!def.instructions)
|
|
149
|
+
continue;
|
|
150
|
+
const filePath = resolve(def.instructions.path);
|
|
151
|
+
try {
|
|
152
|
+
writeInstructionFile(filePath);
|
|
153
|
+
}
|
|
154
|
+
catch {
|
|
155
|
+
// Silent — proxy startup shouldn't fail over this
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
function printSetupResults(results) {
|
|
160
|
+
if (results.platforms.length === 0) {
|
|
161
|
+
console.log("\nNo AI platforms detected. Add Cohvu to your MCP config manually:\n");
|
|
162
|
+
console.log(JSON.stringify({ mcpServers: { cohvu: MCP_ENTRY } }, null, 2));
|
|
163
|
+
console.log();
|
|
164
|
+
return;
|
|
165
|
+
}
|
|
166
|
+
console.log();
|
|
167
|
+
for (const p of results.platforms) {
|
|
168
|
+
const parts = [];
|
|
169
|
+
if (p.mcp === "ok")
|
|
170
|
+
parts.push("MCP configured");
|
|
171
|
+
else if (p.mcp === "skipped")
|
|
172
|
+
parts.push("MCP already configured");
|
|
173
|
+
if (p.instructions === "ok")
|
|
174
|
+
parts.push("workflow added");
|
|
175
|
+
else if (p.instructions === "skipped")
|
|
176
|
+
parts.push("workflow already added");
|
|
177
|
+
else if (p.instructions === "manual")
|
|
178
|
+
parts.push("paste workflow into Settings > Rules");
|
|
179
|
+
else if (p.instructions === "failed")
|
|
180
|
+
parts.push("workflow write failed");
|
|
181
|
+
const status = p.mcp === "failed" ? "x" : "✓";
|
|
182
|
+
console.log(` ${status} ${p.name} — ${parts.join(", ")}`);
|
|
183
|
+
}
|
|
184
|
+
// Cursor special case: print instructions to paste
|
|
185
|
+
const cursor = results.platforms.find((p) => p.name === "Cursor" && p.instructions === "manual");
|
|
186
|
+
if (cursor) {
|
|
187
|
+
console.log(`\n Cursor instructions (paste into Cursor Settings > Rules):`);
|
|
188
|
+
console.log(" " + "─".repeat(50));
|
|
189
|
+
for (const line of instructions_1.COHVU_INSTRUCTIONS.split("\n")) {
|
|
190
|
+
console.log(` ${line}`);
|
|
191
|
+
}
|
|
192
|
+
console.log(" " + "─".repeat(50));
|
|
193
|
+
}
|
|
194
|
+
console.log("\nYou're ready. Open any agent and start working.\n");
|
|
195
|
+
}
|
|
196
|
+
//# sourceMappingURL=setup.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"setup.js","sourceRoot":"","sources":["../src/setup.ts"],"names":[],"mappings":";AAAA,wFAAwF;;AA4IxF,4BAiCC;AAMD,kDAYC;AAED,8CAoCC;AAnOD,2BAMY;AACZ,2BAA6B;AAC7B,+BAAqC;AACrC,2CAAqE;AACrE,iDAA6F;AAa7F,MAAM,SAAS,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;AAEtD,8EAA8E;AAC9E,qBAAqB;AACrB,8EAA8E;AAE9E,SAAS,kBAAkB,CAAC,QAAgB,EAAE,OAAe;IAC3D,IAAI,CAAC;QACH,IAAI,MAAM,GAA4B,EAAE,CAAC;QAEzC,IAAI,IAAA,eAAU,EAAC,QAAQ,CAAC,EAAE,CAAC;YACzB,MAAM,GAAG,GAAG,IAAA,iBAAY,EAAC,QAAQ,EAAE,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC;YACnD,IAAI,GAAG,EAAE,CAAC;gBACR,IAAI,CAAC;oBACH,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAA4B,CAAC;gBACtD,CAAC;gBAAC,MAAM,CAAC;oBACP,2CAA2C;oBAC3C,IAAA,iBAAY,EAAC,QAAQ,EAAE,GAAG,QAAQ,eAAe,CAAC,CAAC;oBACnD,MAAM,GAAG,EAAE,CAAC;gBACd,CAAC;YACH,CAAC;QACH,CAAC;QAED,MAAM,OAAO,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,CAA4B,CAAC;QAEnE,qBAAqB;QACrB,IAAI,OAAO,CAAC,KAAK;YAAE,OAAO,SAAS,CAAC;QAEpC,OAAO,CAAC,KAAK,GAAG,SAAS,CAAC;QAC1B,MAAM,CAAC,OAAO,CAAC,GAAG,OAAO,CAAC;QAE1B,SAAS,CAAC,IAAA,cAAO,EAAC,QAAQ,CAAC,CAAC,CAAC;QAC7B,IAAA,kBAAa,EAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;QAChE,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,QAAQ,CAAC;IAClB,CAAC;AACH,CAAC;AAED,SAAS,kBAAkB,CAAC,QAAgB;IAC1C,IAAI,CAAC;QACH,IAAI,OAAO,GAAG,EAAE,CAAC;QAEjB,IAAI,IAAA,eAAU,EAAC,QAAQ,CAAC,EAAE,CAAC;YACzB,OAAO,GAAG,IAAA,iBAAY,EAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QAC5C,CAAC;QAED,qBAAqB;QACrB,IAAI,OAAO,CAAC,QAAQ,CAAC,qBAAqB,CAAC;YAAE,OAAO,SAAS,CAAC;QAE9D,MAAM,OAAO,GAAG,4DAA4D,CAAC;QAE7E,SAAS,CAAC,IAAA,cAAO,EAAC,QAAQ,CAAC,CAAC,CAAC;QAC7B,IAAA,kBAAa,EAAC,QAAQ,EAAE,OAAO,GAAG,OAAO,CAAC,CAAC;QAC3C,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,QAAQ,CAAC;IAClB,CAAC;AACH,CAAC;AAED,8EAA8E;AAC9E,0BAA0B;AAC1B,8EAA8E;AAE9E,SAAS,oBAAoB,CAAC,QAAgB;IAC5C,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,IAAA,4BAAa,GAAE,CAAC;QAEhC,IAAI,IAAA,eAAU,EAAC,QAAQ,CAAC,EAAE,CAAC;YACzB,MAAM,OAAO,GAAG,IAAA,iBAAY,EAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;YAEhD,4BAA4B;YAC5B,IAAI,OAAO,CAAC,QAAQ,CAAC,2BAAY,CAAC,IAAI,OAAO,CAAC,QAAQ,CAAC,yBAAU,CAAC,EAAE,CAAC;gBACnE,MAAM,QAAQ,GAAG,OAAO,CAAC,OAAO,CAAC,2BAAY,CAAC,CAAC;gBAC/C,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,yBAAU,CAAC,GAAG,yBAAU,CAAC,MAAM,CAAC;gBAC/D,MAAM,QAAQ,GAAG,OAAO,CAAC,KAAK,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;gBACjD,IAAI,QAAQ,KAAK,OAAO;oBAAE,OAAO,SAAS,CAAC;gBAC3C,4BAA4B;gBAC5B,MAAM,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC,GAAG,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;gBAC7E,IAAA,kBAAa,EAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;gBACjC,OAAO,IAAI,CAAC;YACd,CAAC;YAED,0BAA0B;YAC1B,IAAA,kBAAa,EAAC,QAAQ,EAAE,OAAO,CAAC,OAAO,EAAE,GAAG,MAAM,GAAG,OAAO,GAAG,IAAI,CAAC,CAAC;YACrE,OAAO,IAAI,CAAC;QACd,CAAC;QAED,kBAAkB;QAClB,SAAS,CAAC,IAAA,cAAO,EAAC,QAAQ,CAAC,CAAC,CAAC;QAC7B,IAAA,kBAAa,EAAC,QAAQ,EAAE,OAAO,GAAG,IAAI,CAAC,CAAC;QACxC,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,QAAQ,CAAC;IAClB,CAAC;AACH,CAAC;AAED,8EAA8E;AAC9E,UAAU;AACV,8EAA8E;AAE9E,SAAS,SAAS,CAAC,GAAW;IAC5B,IAAI,CAAC,IAAA,eAAU,EAAC,GAAG,CAAC,EAAE,CAAC;QACrB,IAAA,cAAS,EAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACtC,CAAC;AACH,CAAC;AAED,SAAS,OAAO,CAAC,YAAoB;IACnC,OAAO,IAAA,WAAI,EAAC,IAAA,YAAO,GAAE,EAAE,YAAY,CAAC,CAAC;AACvC,CAAC;AAED,8EAA8E;AAC9E,eAAe;AACf,8EAA8E;AAEvE,KAAK,UAAU,QAAQ;IAC5B,MAAM,QAAQ,GAAG,IAAA,2BAAe,GAAE,CAAC;IACnC,MAAM,OAAO,GAAqB,EAAE,CAAC;IAErC,KAAK,MAAM,EAAE,GAAG,EAAE,IAAI,QAAQ,EAAE,CAAC;QAC/B,MAAM,MAAM,GAAmB;YAC7B,IAAI,EAAE,GAAG,CAAC,IAAI;YACd,GAAG,EAAE,IAAI;YACT,YAAY,EAAE,IAAI;SACnB,CAAC;QAEF,mBAAmB;QACnB,IAAI,GAAG,CAAC,GAAG,EAAE,CAAC;YACZ,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YACvC,IAAI,GAAG,CAAC,GAAG,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;gBAC9B,MAAM,CAAC,GAAG,GAAG,kBAAkB,CAAC,QAAQ,CAAC,CAAC;YAC5C,CAAC;iBAAM,CAAC;gBACN,MAAM,CAAC,GAAG,GAAG,kBAAkB,CAAC,QAAQ,EAAE,GAAG,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;YAC7D,CAAC;QACH,CAAC;QAED,yBAAyB;QACzB,IAAI,GAAG,CAAC,YAAY,EAAE,CAAC;YACrB,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;YAChD,MAAM,CAAC,YAAY,GAAG,oBAAoB,CAAC,QAAQ,CAAC,CAAC;QACvD,CAAC;aAAM,IAAI,GAAG,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YACjC,MAAM,CAAC,YAAY,GAAG,QAAQ,CAAC;QACjC,CAAC;QAED,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACvB,CAAC;IAED,OAAO,EAAE,SAAS,EAAE,OAAO,EAAE,CAAC;AAChC,CAAC;AAED,8EAA8E;AAC9E,uDAAuD;AACvD,8EAA8E;AAE9E,SAAgB,mBAAmB;IACjC,MAAM,QAAQ,GAAG,IAAA,2BAAe,GAAE,CAAC;IAEnC,KAAK,MAAM,EAAE,GAAG,EAAE,IAAI,QAAQ,EAAE,CAAC;QAC/B,IAAI,CAAC,GAAG,CAAC,YAAY;YAAE,SAAS;QAChC,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;QAChD,IAAI,CAAC;YACH,oBAAoB,CAAC,QAAQ,CAAC,CAAC;QACjC,CAAC;QAAC,MAAM,CAAC;YACP,kDAAkD;QACpD,CAAC;IACH,CAAC;AACH,CAAC;AAED,SAAgB,iBAAiB,CAAC,OAAoB;IACpD,IAAI,OAAO,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACnC,OAAO,CAAC,GAAG,CAAC,sEAAsE,CAAC,CAAC;QACpF,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,UAAU,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;QAC3E,OAAO,CAAC,GAAG,EAAE,CAAC;QACd,OAAO;IACT,CAAC;IAED,OAAO,CAAC,GAAG,EAAE,CAAC;IACd,KAAK,MAAM,CAAC,IAAI,OAAO,CAAC,SAAS,EAAE,CAAC;QAClC,MAAM,KAAK,GAAa,EAAE,CAAC;QAE3B,IAAI,CAAC,CAAC,GAAG,KAAK,IAAI;YAAE,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;aAC5C,IAAI,CAAC,CAAC,GAAG,KAAK,SAAS;YAAE,KAAK,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;QAEnE,IAAI,CAAC,CAAC,YAAY,KAAK,IAAI;YAAE,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;aACrD,IAAI,CAAC,CAAC,YAAY,KAAK,SAAS;YAAE,KAAK,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC;aACvE,IAAI,CAAC,CAAC,YAAY,KAAK,QAAQ;YAAE,KAAK,CAAC,IAAI,CAAC,sCAAsC,CAAC,CAAC;aACpF,IAAI,CAAC,CAAC,YAAY,KAAK,QAAQ;YAAE,KAAK,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC;QAE1E,MAAM,MAAM,GAAG,CAAC,CAAC,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;QAC9C,OAAO,CAAC,GAAG,CAAC,KAAK,MAAM,IAAI,CAAC,CAAC,IAAI,MAAM,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAC7D,CAAC;IAED,mDAAmD;IACnD,MAAM,MAAM,GAAG,OAAO,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,QAAQ,IAAI,CAAC,CAAC,YAAY,KAAK,QAAQ,CAAC,CAAC;IACjG,IAAI,MAAM,EAAE,CAAC;QACX,OAAO,CAAC,GAAG,CAAC,+DAA+D,CAAC,CAAC;QAC7E,OAAO,CAAC,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;QACnC,KAAK,MAAM,IAAI,IAAI,iCAAkB,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;YAClD,OAAO,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;QAC3B,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,IAAI,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC;IACrC,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,qDAAqD,CAAC,CAAC;AACrE,CAAC"}
|