@roarpeng/graphflow 1.15.0 → 1.15.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/CHANGELOG.md +10 -0
- package/README.md +1 -1
- package/README.zh.md +1 -1
- package/dist/integrations/claude-code-host-installer.d.ts +42 -0
- package/dist/integrations/claude-code-host-installer.d.ts.map +1 -0
- package/dist/integrations/claude-code-host-installer.js +341 -0
- package/dist/integrations/claude-code-host-installer.js.map +1 -0
- package/dist/integrations/cursor-host-installer.d.ts +38 -0
- package/dist/integrations/cursor-host-installer.d.ts.map +1 -0
- package/dist/integrations/cursor-host-installer.js +291 -0
- package/dist/integrations/cursor-host-installer.js.map +1 -0
- package/dist/integrations/host-adapter-install.d.ts +39 -4
- package/dist/integrations/host-adapter-install.d.ts.map +1 -1
- package/dist/integrations/host-adapter-install.js +90 -9
- package/dist/integrations/host-adapter-install.js.map +1 -1
- package/dist/integrations/host-adapter.d.ts +2 -2
- package/dist/surfaces/cli/init.d.ts.map +1 -1
- package/dist/surfaces/cli/init.js +115 -59
- package/dist/surfaces/cli/init.js.map +1 -1
- package/package.json +1 -1
- package/plugin.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -2,6 +2,16 @@
|
|
|
2
2
|
|
|
3
3
|
All notable changes to this project are documented in this file.
|
|
4
4
|
|
|
5
|
+
## [1.15.1] - 2026-09-05
|
|
6
|
+
|
|
7
|
+
### Changed
|
|
8
|
+
|
|
9
|
+
- Cursor and Claude Code install / uninstall / doctor now go through the HostAdapter registry (`installViaHostAdapter("cursor")` / `installViaHostAdapter("claude-code")`), including Claude Code hooks. Remaining hosts (Trae, VS Code, Windsurf, Codex, Gemini, and others) still use the legacy installers.
|
|
10
|
+
|
|
11
|
+
### Tests
|
|
12
|
+
|
|
13
|
+
- Extended `host-adapter-install` with Cursor / Claude Code install-uninstall-status slices and M16-style CLI doctor wiring.
|
|
14
|
+
|
|
5
15
|
## [1.15.0] - 2026-09-05
|
|
6
16
|
|
|
7
17
|
### Added
|
package/README.md
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
English | [中文](README.zh.md)
|
|
4
4
|
|
|
5
|
-
[](https://www.npmjs.com/package/@roarpeng/graphflow)
|
|
6
6
|
|
|
7
7
|
> **The memory & context harness for coding agents.** Local-first code knowledge graph · bounded context compression (~98% token savings) · cross-session learning flywheel.
|
|
8
8
|
|
package/README.zh.md
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
[English](README.md) | 中文
|
|
4
4
|
|
|
5
|
-
[](https://www.npmjs.com/package/@roarpeng/graphflow)
|
|
6
6
|
|
|
7
7
|
> **给编程 Agent 用的记忆与上下文 harness。** 本地优先的代码知识图谱 · 有界上下文压缩(约 98% token 节省) · 跨会话学习飞轮。
|
|
8
8
|
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
import { type ClaudeCodeHooksResult } from "./claude-code-hooks";
|
|
2
|
+
export declare const CLAUDE_CODE_HOST_ADAPTER_ID = "claude-code";
|
|
3
|
+
export interface ClaudeCodeHostInstallResult {
|
|
4
|
+
status: "created" | "updated" | "skipped" | "error";
|
|
5
|
+
filePath?: string;
|
|
6
|
+
message?: string;
|
|
7
|
+
hooks?: ClaudeCodeHooksResult;
|
|
8
|
+
}
|
|
9
|
+
export interface ClaudeCodeHostMcpTarget {
|
|
10
|
+
path: string;
|
|
11
|
+
installed: boolean;
|
|
12
|
+
scope: "user" | "workspace";
|
|
13
|
+
agentName: string;
|
|
14
|
+
}
|
|
15
|
+
export interface ClaudeCodeHostStatus {
|
|
16
|
+
hostId: string;
|
|
17
|
+
agent: string;
|
|
18
|
+
detected: boolean;
|
|
19
|
+
installed: boolean;
|
|
20
|
+
mcpInstalled: boolean;
|
|
21
|
+
rulesInstalled: boolean;
|
|
22
|
+
skillInstalled: boolean;
|
|
23
|
+
hooksInstalled: boolean;
|
|
24
|
+
home: string;
|
|
25
|
+
mcpPath: string;
|
|
26
|
+
rulesPath: string;
|
|
27
|
+
skillPath: string;
|
|
28
|
+
settingsPath: string;
|
|
29
|
+
hooksDir: string;
|
|
30
|
+
mcpTargets: ClaudeCodeHostMcpTarget[];
|
|
31
|
+
}
|
|
32
|
+
export declare function resolveClaudeCodeHostHome(override?: string): string;
|
|
33
|
+
export declare function getClaudeCodeHostStatus(options?: {
|
|
34
|
+
home?: string;
|
|
35
|
+
}): ClaudeCodeHostStatus;
|
|
36
|
+
export declare function installClaudeCodeHost(options?: {
|
|
37
|
+
home?: string;
|
|
38
|
+
}): ClaudeCodeHostInstallResult;
|
|
39
|
+
export declare function uninstallClaudeCodeHost(options?: {
|
|
40
|
+
home?: string;
|
|
41
|
+
}): ClaudeCodeHostInstallResult;
|
|
42
|
+
//# sourceMappingURL=claude-code-host-installer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"claude-code-host-installer.d.ts","sourceRoot":"","sources":["../../src/integrations/claude-code-host-installer.ts"],"names":[],"mappings":"AAiBA,OAAO,EAML,KAAK,qBAAqB,EAC3B,MAAM,qBAAqB,CAAC;AAW7B,eAAO,MAAM,2BAA2B,gBAAgB,CAAC;AAIzD,MAAM,WAAW,2BAA2B;IAC1C,MAAM,EAAE,SAAS,GAAG,SAAS,GAAG,SAAS,GAAG,OAAO,CAAC;IACpD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,qBAAqB,CAAC;CAC/B;AAED,MAAM,WAAW,uBAAuB;IACtC,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,OAAO,CAAC;IACnB,KAAK,EAAE,MAAM,GAAG,WAAW,CAAC;IAC5B,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,OAAO,CAAC;IAClB,SAAS,EAAE,OAAO,CAAC;IACnB,YAAY,EAAE,OAAO,CAAC;IACtB,cAAc,EAAE,OAAO,CAAC;IACxB,cAAc,EAAE,OAAO,CAAC;IACxB,cAAc,EAAE,OAAO,CAAC;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,uBAAuB,EAAE,CAAC;CACvC;AAWD,wBAAgB,yBAAyB,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAEnE;AAgKD,wBAAgB,uBAAuB,CAAC,OAAO,GAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAA;CAAO,GAAG,oBAAoB,CAkE7F;AAED,wBAAgB,qBAAqB,CAAC,OAAO,GAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAA;CAAO,GAAG,2BAA2B,CA0DlG;AAED,wBAAgB,uBAAuB,CAAC,OAAO,GAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAA;CAAO,GAAG,2BAA2B,CAyDpG"}
|
|
@@ -0,0 +1,341 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.CLAUDE_CODE_HOST_ADAPTER_ID = void 0;
|
|
4
|
+
exports.resolveClaudeCodeHostHome = resolveClaudeCodeHostHome;
|
|
5
|
+
exports.getClaudeCodeHostStatus = getClaudeCodeHostStatus;
|
|
6
|
+
exports.installClaudeCodeHost = installClaudeCodeHost;
|
|
7
|
+
exports.uninstallClaudeCodeHost = uninstallClaudeCodeHost;
|
|
8
|
+
/**
|
|
9
|
+
* Claude Code HostAdapter install slice.
|
|
10
|
+
*
|
|
11
|
+
* Composes existing MCP + CLAUDE.md + skill + hooks installers. Isolated
|
|
12
|
+
* `home` / GRAPHFLOW_CLAUDE_HOME treats that directory as `~/.claude` and
|
|
13
|
+
* writes MCP to the sibling `.claude.json` so tests match production layout.
|
|
14
|
+
*/
|
|
15
|
+
const node_fs_1 = require("node:fs");
|
|
16
|
+
const node_path_1 = require("node:path");
|
|
17
|
+
const agent_mcp_installer_1 = require("./agent-mcp-installer");
|
|
18
|
+
const claude_code_hooks_1 = require("./claude-code-hooks");
|
|
19
|
+
const host_adapter_1 = require("./host-adapter");
|
|
20
|
+
const skill_installer_1 = require("./skill-installer");
|
|
21
|
+
exports.CLAUDE_CODE_HOST_ADAPTER_ID = "claude-code";
|
|
22
|
+
const CLAUDE_PROFILE_IDS = ["claude-code", "claude-code-windows"];
|
|
23
|
+
function claudeDisplayName() {
|
|
24
|
+
return (0, host_adapter_1.getHostAdapter)(exports.CLAUDE_CODE_HOST_ADAPTER_ID)?.displayName ?? "Claude Code";
|
|
25
|
+
}
|
|
26
|
+
function isolatedClaudeHome(override) {
|
|
27
|
+
const explicit = override?.trim() || process.env[claude_code_hooks_1.CLAUDE_HOME_ENV]?.trim();
|
|
28
|
+
return explicit || undefined;
|
|
29
|
+
}
|
|
30
|
+
function resolveClaudeCodeHostHome(override) {
|
|
31
|
+
return isolatedClaudeHome(override) ?? (0, claude_code_hooks_1.resolveClaudeHome)();
|
|
32
|
+
}
|
|
33
|
+
function claudeMcpPath(home) {
|
|
34
|
+
return (0, node_path_1.join)((0, node_path_1.dirname)(home), ".claude.json");
|
|
35
|
+
}
|
|
36
|
+
function claudePaths(home) {
|
|
37
|
+
return {
|
|
38
|
+
mcpPath: claudeMcpPath(home),
|
|
39
|
+
rulesPath: (0, node_path_1.join)(home, "CLAUDE.md"),
|
|
40
|
+
skillPath: (0, node_path_1.join)(home, "skills", "graphflow", "SKILL.md"),
|
|
41
|
+
skillsRoot: (0, node_path_1.join)(home, "skills"),
|
|
42
|
+
settingsPath: (0, node_path_1.join)(home, "settings.json"),
|
|
43
|
+
hooksDir: (0, node_path_1.join)(home, "graphflow-hooks"),
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
function isMcpServerInstalled(configPath, serverName = "graphflow") {
|
|
47
|
+
if (!(0, node_fs_1.existsSync)(configPath))
|
|
48
|
+
return false;
|
|
49
|
+
try {
|
|
50
|
+
const json = JSON.parse((0, node_fs_1.readFileSync)(configPath, "utf8"));
|
|
51
|
+
return Boolean(json.mcpServers?.[serverName]);
|
|
52
|
+
}
|
|
53
|
+
catch {
|
|
54
|
+
return false;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
function copyIfChanged(sourcePath, destDir, destFileName) {
|
|
58
|
+
const destFile = (0, node_path_1.join)(destDir, destFileName);
|
|
59
|
+
const existed = (0, node_fs_1.existsSync)(destFile);
|
|
60
|
+
if (existed && (0, node_fs_1.readFileSync)(destFile, "utf8") === (0, node_fs_1.readFileSync)(sourcePath, "utf8")) {
|
|
61
|
+
return { status: "skipped", filePath: destFile };
|
|
62
|
+
}
|
|
63
|
+
(0, node_fs_1.mkdirSync)(destDir, { recursive: true });
|
|
64
|
+
(0, node_fs_1.copyFileSync)(sourcePath, destFile);
|
|
65
|
+
return { status: existed ? "updated" : "created", filePath: destFile };
|
|
66
|
+
}
|
|
67
|
+
function writeClaudeMcp(configPath) {
|
|
68
|
+
try {
|
|
69
|
+
const node = (0, agent_mcp_installer_1.buildMcpServerNode)({ strategy: "npx" });
|
|
70
|
+
const existed = (0, node_fs_1.existsSync)(configPath);
|
|
71
|
+
let json = {};
|
|
72
|
+
if (existed) {
|
|
73
|
+
try {
|
|
74
|
+
json = JSON.parse((0, node_fs_1.readFileSync)(configPath, "utf8"));
|
|
75
|
+
}
|
|
76
|
+
catch {
|
|
77
|
+
json = {};
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
const servers = json.mcpServers && typeof json.mcpServers === "object"
|
|
81
|
+
? { ...json.mcpServers }
|
|
82
|
+
: {};
|
|
83
|
+
const serverExisted = Boolean(servers.graphflow);
|
|
84
|
+
servers.graphflow = node;
|
|
85
|
+
const next = { ...json, mcpServers: servers };
|
|
86
|
+
const payload = `${JSON.stringify(next, null, 2)}\n`;
|
|
87
|
+
if (existed && (0, node_fs_1.readFileSync)(configPath, "utf8") === payload) {
|
|
88
|
+
return { status: "skipped", filePath: configPath, message: "already up to date" };
|
|
89
|
+
}
|
|
90
|
+
(0, node_fs_1.mkdirSync)((0, node_path_1.dirname)(configPath), { recursive: true });
|
|
91
|
+
(0, node_fs_1.writeFileSync)(configPath, payload, "utf8");
|
|
92
|
+
if (!existed)
|
|
93
|
+
return { status: "created", filePath: configPath };
|
|
94
|
+
if (!serverExisted)
|
|
95
|
+
return { status: "created", filePath: configPath };
|
|
96
|
+
return { status: "updated", filePath: configPath };
|
|
97
|
+
}
|
|
98
|
+
catch (error) {
|
|
99
|
+
return {
|
|
100
|
+
status: "error",
|
|
101
|
+
filePath: configPath,
|
|
102
|
+
message: error instanceof Error ? error.message : String(error),
|
|
103
|
+
};
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
function rollupStatus(results) {
|
|
107
|
+
if (results.some((item) => item.status === "error"))
|
|
108
|
+
return "error";
|
|
109
|
+
if (results.some((item) => item.status === "created" || item.status === "injected"))
|
|
110
|
+
return "created";
|
|
111
|
+
if (results.some((item) => item.status === "updated"))
|
|
112
|
+
return "updated";
|
|
113
|
+
return "skipped";
|
|
114
|
+
}
|
|
115
|
+
function detectedClaudeProfileIds() {
|
|
116
|
+
const ids = (0, agent_mcp_installer_1.detectInstalledAgents)()
|
|
117
|
+
.map((agent) => agent.id)
|
|
118
|
+
.filter((id) => CLAUDE_PROFILE_IDS.includes(id));
|
|
119
|
+
if (ids.length === 0 && (0, node_fs_1.existsSync)((0, claude_code_hooks_1.resolveClaudeHome)())) {
|
|
120
|
+
return ["claude-code"];
|
|
121
|
+
}
|
|
122
|
+
return ids;
|
|
123
|
+
}
|
|
124
|
+
function installClaudeSkillAt(skillsRoot) {
|
|
125
|
+
const sourceDir = (0, skill_installer_1.resolveSkillSourcePath)();
|
|
126
|
+
const destFile = (0, node_path_1.join)(skillsRoot, "graphflow", "SKILL.md");
|
|
127
|
+
if (!sourceDir) {
|
|
128
|
+
return { status: "skipped", filePath: destFile, message: "Skill source (SKILL.md) not found" };
|
|
129
|
+
}
|
|
130
|
+
try {
|
|
131
|
+
return copyIfChanged((0, node_path_1.join)(sourceDir, "SKILL.md"), (0, node_path_1.join)(skillsRoot, "graphflow"), "SKILL.md");
|
|
132
|
+
}
|
|
133
|
+
catch (error) {
|
|
134
|
+
return {
|
|
135
|
+
status: "error",
|
|
136
|
+
filePath: destFile,
|
|
137
|
+
message: error instanceof Error ? error.message : String(error),
|
|
138
|
+
};
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
function installClaudeMdAt(home) {
|
|
142
|
+
const dest = (0, node_path_1.join)(home, "CLAUDE.md");
|
|
143
|
+
const sourcePath = (0, skill_installer_1.resolveClaudeMdSourcePath)();
|
|
144
|
+
if (!sourcePath) {
|
|
145
|
+
return { status: "skipped", filePath: dest, message: "CLAUDE.md source not found" };
|
|
146
|
+
}
|
|
147
|
+
try {
|
|
148
|
+
return copyIfChanged(sourcePath, home, "CLAUDE.md");
|
|
149
|
+
}
|
|
150
|
+
catch (error) {
|
|
151
|
+
return {
|
|
152
|
+
status: "error",
|
|
153
|
+
filePath: dest,
|
|
154
|
+
message: error instanceof Error ? error.message : String(error),
|
|
155
|
+
};
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
function resultFromParts(parts, fallbackPath, hooks) {
|
|
159
|
+
const status = rollupStatus(parts);
|
|
160
|
+
const filePath = hooks?.filePath ?? parts.find((part) => part.filePath)?.filePath ?? fallbackPath;
|
|
161
|
+
const message = parts
|
|
162
|
+
.map((part) => part.message)
|
|
163
|
+
.filter((item) => Boolean(item))
|
|
164
|
+
.join("; ");
|
|
165
|
+
const result = { status, filePath };
|
|
166
|
+
if (message)
|
|
167
|
+
result.message = message;
|
|
168
|
+
if (hooks)
|
|
169
|
+
result.hooks = hooks;
|
|
170
|
+
return result;
|
|
171
|
+
}
|
|
172
|
+
function getClaudeCodeHostStatus(options = {}) {
|
|
173
|
+
const isolated = isolatedClaudeHome(options.home);
|
|
174
|
+
const home = resolveClaudeCodeHostHome(options.home);
|
|
175
|
+
const paths = claudePaths(home);
|
|
176
|
+
const agent = claudeDisplayName();
|
|
177
|
+
if (isolated) {
|
|
178
|
+
const hooks = (0, claude_code_hooks_1.getClaudeCodeHooksStatus)({
|
|
179
|
+
claudeHome: home,
|
|
180
|
+
settingsPath: paths.settingsPath,
|
|
181
|
+
hooksDir: paths.hooksDir,
|
|
182
|
+
});
|
|
183
|
+
const detected = (0, node_fs_1.existsSync)(home);
|
|
184
|
+
const mcpInstalled = detected && isMcpServerInstalled(paths.mcpPath);
|
|
185
|
+
const rulesInstalled = (0, node_fs_1.existsSync)(paths.rulesPath);
|
|
186
|
+
const skillInstalled = (0, node_fs_1.existsSync)(paths.skillPath);
|
|
187
|
+
return {
|
|
188
|
+
hostId: exports.CLAUDE_CODE_HOST_ADAPTER_ID,
|
|
189
|
+
agent,
|
|
190
|
+
detected,
|
|
191
|
+
installed: mcpInstalled,
|
|
192
|
+
mcpInstalled,
|
|
193
|
+
rulesInstalled,
|
|
194
|
+
skillInstalled,
|
|
195
|
+
hooksInstalled: hooks.installed,
|
|
196
|
+
home,
|
|
197
|
+
mcpPath: paths.mcpPath,
|
|
198
|
+
rulesPath: paths.rulesPath,
|
|
199
|
+
skillPath: paths.skillPath,
|
|
200
|
+
settingsPath: paths.settingsPath,
|
|
201
|
+
hooksDir: paths.hooksDir,
|
|
202
|
+
mcpTargets: detected
|
|
203
|
+
? [{ path: paths.mcpPath, installed: mcpInstalled, scope: "user", agentName: agent }]
|
|
204
|
+
: [],
|
|
205
|
+
};
|
|
206
|
+
}
|
|
207
|
+
const mcp = (0, agent_mcp_installer_1.getMcpInstallStatus)().filter((item) => item.agentId === "claude-code" || item.agentId === "claude-code-windows");
|
|
208
|
+
const skill = (0, skill_installer_1.getAgentSkillStatus)().find((item) => item.agent === "Claude Code skill");
|
|
209
|
+
const hooks = (0, claude_code_hooks_1.getClaudeCodeHooksStatus)();
|
|
210
|
+
const detected = mcp.length > 0 || hooks.detected || (0, node_fs_1.existsSync)(home) || detectedClaudeProfileIds().length > 0;
|
|
211
|
+
const mcpInstalled = mcp.some((item) => item.installed);
|
|
212
|
+
return {
|
|
213
|
+
hostId: exports.CLAUDE_CODE_HOST_ADAPTER_ID,
|
|
214
|
+
agent,
|
|
215
|
+
detected,
|
|
216
|
+
installed: mcpInstalled,
|
|
217
|
+
mcpInstalled,
|
|
218
|
+
rulesInstalled: (0, node_fs_1.existsSync)(paths.rulesPath),
|
|
219
|
+
skillInstalled: skill?.installed ?? (0, node_fs_1.existsSync)(paths.skillPath),
|
|
220
|
+
hooksInstalled: hooks.installed,
|
|
221
|
+
home,
|
|
222
|
+
mcpPath: mcp[0]?.configPath ?? paths.mcpPath,
|
|
223
|
+
rulesPath: paths.rulesPath,
|
|
224
|
+
skillPath: skill?.configPath ?? paths.skillPath,
|
|
225
|
+
settingsPath: hooks.settingsPath,
|
|
226
|
+
hooksDir: hooks.hooksDir,
|
|
227
|
+
mcpTargets: mcp.map((item) => ({
|
|
228
|
+
path: item.configPath,
|
|
229
|
+
installed: item.installed,
|
|
230
|
+
scope: item.scope,
|
|
231
|
+
agentName: item.agentName,
|
|
232
|
+
})),
|
|
233
|
+
};
|
|
234
|
+
}
|
|
235
|
+
function installClaudeCodeHost(options = {}) {
|
|
236
|
+
const isolated = isolatedClaudeHome(options.home);
|
|
237
|
+
const home = resolveClaudeCodeHostHome(options.home);
|
|
238
|
+
const paths = claudePaths(home);
|
|
239
|
+
if (isolated) {
|
|
240
|
+
if (!(0, node_fs_1.existsSync)(home)) {
|
|
241
|
+
return { status: "skipped", filePath: paths.mcpPath, message: `${claudeDisplayName()} not detected` };
|
|
242
|
+
}
|
|
243
|
+
const mcp = writeClaudeMcp(paths.mcpPath);
|
|
244
|
+
const md = installClaudeMdAt(home);
|
|
245
|
+
const skill = installClaudeSkillAt(paths.skillsRoot);
|
|
246
|
+
const hooks = (0, claude_code_hooks_1.installClaudeCodeHooks)({
|
|
247
|
+
settingsPath: paths.settingsPath,
|
|
248
|
+
hooksDir: paths.hooksDir,
|
|
249
|
+
});
|
|
250
|
+
return resultFromParts([mcp, md, skill, hooks], paths.settingsPath, hooks);
|
|
251
|
+
}
|
|
252
|
+
const ids = detectedClaudeProfileIds();
|
|
253
|
+
if (ids.length === 0 && !(0, node_fs_1.existsSync)(home)) {
|
|
254
|
+
return { status: "skipped", filePath: paths.mcpPath, message: `${claudeDisplayName()} not detected` };
|
|
255
|
+
}
|
|
256
|
+
const mcp = (0, agent_mcp_installer_1.installMcpToDetectedAgents)({
|
|
257
|
+
strategy: "npx",
|
|
258
|
+
installScope: "user",
|
|
259
|
+
agentIdsOverride: ids.length > 0 ? ids : ["claude-code"],
|
|
260
|
+
});
|
|
261
|
+
const md = (0, skill_installer_1.installClaudeCodeMd)();
|
|
262
|
+
const skill = (0, node_fs_1.existsSync)(home)
|
|
263
|
+
? installClaudeSkillAt(paths.skillsRoot)
|
|
264
|
+
: { status: "skipped", filePath: paths.skillPath, message: "Claude Code skill marker not found" };
|
|
265
|
+
const hooksStatus = (0, claude_code_hooks_1.getClaudeCodeHooksStatus)();
|
|
266
|
+
const hooks = hooksStatus.detected
|
|
267
|
+
? (0, claude_code_hooks_1.installClaudeCodeHooks)({
|
|
268
|
+
settingsPath: hooksStatus.settingsPath,
|
|
269
|
+
hooksDir: hooksStatus.hooksDir,
|
|
270
|
+
})
|
|
271
|
+
: { status: "skipped", filePath: hooksStatus.settingsPath, message: "Claude Code not detected" };
|
|
272
|
+
return resultFromParts([
|
|
273
|
+
...mcp.map((item) => ({
|
|
274
|
+
status: item.status,
|
|
275
|
+
filePath: item.configPath,
|
|
276
|
+
...(item.message ? { message: item.message } : {}),
|
|
277
|
+
})),
|
|
278
|
+
...md.map((item) => ({
|
|
279
|
+
status: item.status,
|
|
280
|
+
...(item.message ? { message: item.message } : {}),
|
|
281
|
+
})),
|
|
282
|
+
skill,
|
|
283
|
+
hooks,
|
|
284
|
+
], hooks.filePath ?? mcp[0]?.configPath ?? paths.settingsPath, hooks);
|
|
285
|
+
}
|
|
286
|
+
function uninstallClaudeCodeHost(options = {}) {
|
|
287
|
+
const isolated = isolatedClaudeHome(options.home);
|
|
288
|
+
const home = resolveClaudeCodeHostHome(options.home);
|
|
289
|
+
const paths = claudePaths(home);
|
|
290
|
+
if (isolated) {
|
|
291
|
+
const hooks = (0, claude_code_hooks_1.uninstallClaudeCodeHooks)(paths.settingsPath, paths.hooksDir);
|
|
292
|
+
const mcpRemoved = (0, node_fs_1.existsSync)(paths.mcpPath) ? (0, agent_mcp_installer_1.removeMcpEntry)(paths.mcpPath, "mcpServers", "graphflow") : false;
|
|
293
|
+
const mdRemoved = (0, skill_installer_1.removeGraphFlowOwnedFile)(paths.rulesPath);
|
|
294
|
+
const skillRemoved = (0, skill_installer_1.removeAgentSkill)(paths.skillsRoot);
|
|
295
|
+
const hooksRemoved = hooks.status === "updated";
|
|
296
|
+
if (!mcpRemoved && !mdRemoved && !skillRemoved && !hooksRemoved) {
|
|
297
|
+
return {
|
|
298
|
+
status: "skipped",
|
|
299
|
+
filePath: paths.settingsPath,
|
|
300
|
+
message: "no GraphFlow Claude Code files",
|
|
301
|
+
hooks,
|
|
302
|
+
};
|
|
303
|
+
}
|
|
304
|
+
return {
|
|
305
|
+
status: "updated",
|
|
306
|
+
filePath: paths.settingsPath,
|
|
307
|
+
message: "removed GraphFlow Claude Code MCP + rules + skill + hooks",
|
|
308
|
+
hooks,
|
|
309
|
+
};
|
|
310
|
+
}
|
|
311
|
+
const mcp = [
|
|
312
|
+
...(0, agent_mcp_installer_1.uninstallMcpFromDetectedAgents)({ agentId: "claude-code" }),
|
|
313
|
+
...(0, agent_mcp_installer_1.uninstallMcpFromDetectedAgents)({ agentId: "claude-code-windows" }),
|
|
314
|
+
];
|
|
315
|
+
const mdRemoved = (0, skill_installer_1.removeGraphFlowOwnedFile)(paths.rulesPath);
|
|
316
|
+
const appData = process.env.APPDATA;
|
|
317
|
+
const appDataMd = process.platform === "win32" && appData
|
|
318
|
+
? (0, skill_installer_1.removeGraphFlowOwnedFile)((0, node_path_1.join)(appData, "Claude Code", "CLAUDE.md"))
|
|
319
|
+
: false;
|
|
320
|
+
const skillRemoved = (0, skill_installer_1.removeAgentSkill)(paths.skillsRoot);
|
|
321
|
+
const hooksStatus = (0, claude_code_hooks_1.getClaudeCodeHooksStatus)();
|
|
322
|
+
const hooks = hooksStatus.detected
|
|
323
|
+
? (0, claude_code_hooks_1.uninstallClaudeCodeHooks)(hooksStatus.settingsPath, hooksStatus.hooksDir)
|
|
324
|
+
: { status: "skipped", filePath: hooksStatus.settingsPath, message: "Claude Code not detected" };
|
|
325
|
+
const mcpRemoved = mcp.some((item) => item.removed);
|
|
326
|
+
if (!mcpRemoved && !mdRemoved && !appDataMd && !skillRemoved && hooks.status !== "updated") {
|
|
327
|
+
return {
|
|
328
|
+
status: "skipped",
|
|
329
|
+
filePath: hooks.filePath ?? paths.settingsPath,
|
|
330
|
+
message: "no GraphFlow Claude Code files",
|
|
331
|
+
hooks,
|
|
332
|
+
};
|
|
333
|
+
}
|
|
334
|
+
return {
|
|
335
|
+
status: "updated",
|
|
336
|
+
filePath: hooks.filePath ?? paths.settingsPath,
|
|
337
|
+
message: "removed GraphFlow Claude Code MCP + rules + skill + hooks",
|
|
338
|
+
hooks,
|
|
339
|
+
};
|
|
340
|
+
}
|
|
341
|
+
//# sourceMappingURL=claude-code-host-installer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"claude-code-host-installer.js","sourceRoot":"","sources":["../../src/integrations/claude-code-host-installer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
export declare const CURSOR_HOST_ADAPTER_ID = "cursor";
|
|
2
|
+
export declare const CURSOR_HOME_ENV = "GRAPHFLOW_CURSOR_HOME";
|
|
3
|
+
export interface CursorHostInstallResult {
|
|
4
|
+
status: "created" | "updated" | "skipped" | "error";
|
|
5
|
+
filePath?: string;
|
|
6
|
+
message?: string;
|
|
7
|
+
}
|
|
8
|
+
export interface CursorHostMcpTarget {
|
|
9
|
+
path: string;
|
|
10
|
+
installed: boolean;
|
|
11
|
+
scope: "user" | "workspace";
|
|
12
|
+
agentName: string;
|
|
13
|
+
}
|
|
14
|
+
export interface CursorHostStatus {
|
|
15
|
+
hostId: string;
|
|
16
|
+
agent: string;
|
|
17
|
+
detected: boolean;
|
|
18
|
+
installed: boolean;
|
|
19
|
+
mcpInstalled: boolean;
|
|
20
|
+
rulesInstalled: boolean;
|
|
21
|
+
skillInstalled: boolean;
|
|
22
|
+
home: string;
|
|
23
|
+
mcpPath: string;
|
|
24
|
+
rulesPath: string;
|
|
25
|
+
skillPath: string;
|
|
26
|
+
mcpTargets: CursorHostMcpTarget[];
|
|
27
|
+
}
|
|
28
|
+
export declare function resolveCursorHome(override?: string): string;
|
|
29
|
+
export declare function getCursorHostStatus(options?: {
|
|
30
|
+
home?: string;
|
|
31
|
+
}): CursorHostStatus;
|
|
32
|
+
export declare function installCursorHost(options?: {
|
|
33
|
+
home?: string;
|
|
34
|
+
}): CursorHostInstallResult;
|
|
35
|
+
export declare function uninstallCursorHost(options?: {
|
|
36
|
+
home?: string;
|
|
37
|
+
}): CursorHostInstallResult;
|
|
38
|
+
//# sourceMappingURL=cursor-host-installer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cursor-host-installer.d.ts","sourceRoot":"","sources":["../../src/integrations/cursor-host-installer.ts"],"names":[],"mappings":"AA4BA,eAAO,MAAM,sBAAsB,WAAW,CAAC;AAC/C,eAAO,MAAM,eAAe,0BAA0B,CAAC;AAIvD,MAAM,WAAW,uBAAuB;IACtC,MAAM,EAAE,SAAS,GAAG,SAAS,GAAG,SAAS,GAAG,OAAO,CAAC;IACpD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,OAAO,CAAC;IACnB,KAAK,EAAE,MAAM,GAAG,WAAW,CAAC;IAC5B,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,gBAAgB;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,OAAO,CAAC;IAClB,SAAS,EAAE,OAAO,CAAC;IACnB,YAAY,EAAE,OAAO,CAAC;IACtB,cAAc,EAAE,OAAO,CAAC;IACxB,cAAc,EAAE,OAAO,CAAC;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,mBAAmB,EAAE,CAAC;CACnC;AAWD,wBAAgB,iBAAiB,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,CAE3D;AAkJD,wBAAgB,mBAAmB,CAAC,OAAO,GAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAA;CAAO,GAAG,gBAAgB,CAsDrF;AAED,wBAAgB,iBAAiB,CAAC,OAAO,GAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAA;CAAO,GAAG,uBAAuB,CA6C1F;AAED,wBAAgB,mBAAmB,CAAC,OAAO,GAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAA;CAAO,GAAG,uBAAuB,CAkC5F"}
|