@roarpeng/graphflow 1.14.1 → 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 +24 -0
- package/README.md +3 -3
- package/README.zh.md +1 -1
- package/dist/config/schema.d.ts +3 -1
- package/dist/config/schema.d.ts.map +1 -1
- package/dist/graph/client-factory.d.ts.map +1 -1
- package/dist/graph/client-factory.js +4 -1
- package/dist/graph/client-factory.js.map +1 -1
- package/dist/graph/graphify-mcp-client.d.ts +33 -0
- package/dist/graph/graphify-mcp-client.d.ts.map +1 -1
- package/dist/graph/graphify-mcp-client.js +66 -5
- package/dist/graph/graphify-mcp-client.js.map +1 -1
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +10 -1
- package/dist/index.js.map +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/security/rbac.d.ts +39 -0
- package/dist/security/rbac.d.ts.map +1 -0
- package/dist/security/rbac.js +213 -0
- package/dist/security/rbac.js.map +1 -0
- package/dist/security/token-auth.d.ts +15 -2
- package/dist/security/token-auth.d.ts.map +1 -1
- package/dist/security/token-auth.js +86 -5
- package/dist/security/token-auth.js.map +1 -1
- package/dist/surfaces/cli/index.js +79 -4
- package/dist/surfaces/cli/index.js.map +1 -1
- package/dist/surfaces/cli/init.d.ts +3 -0
- package/dist/surfaces/cli/init.d.ts.map +1 -1
- package/dist/surfaces/cli/init.js +133 -59
- package/dist/surfaces/cli/init.js.map +1 -1
- package/dist/surfaces/cli/output.d.ts.map +1 -1
- package/dist/surfaces/cli/output.js +7 -3
- package/dist/surfaces/cli/output.js.map +1 -1
- package/dist/surfaces/cli/runtime/graph.d.ts +13 -0
- package/dist/surfaces/cli/runtime/graph.d.ts.map +1 -1
- package/dist/surfaces/cli/runtime/graph.js +97 -9
- package/dist/surfaces/cli/runtime/graph.js.map +1 -1
- package/dist/surfaces/cli/runtime/routing.d.ts +1 -1
- package/dist/surfaces/cli/runtime/routing.d.ts.map +1 -1
- package/dist/surfaces/cli/runtime/routing.js +12 -2
- package/dist/surfaces/cli/runtime/routing.js.map +1 -1
- package/dist/surfaces/cli/runtime/types.d.ts +3 -0
- package/dist/surfaces/cli/runtime/types.d.ts.map +1 -1
- package/dist/surfaces/cli/runtime.d.ts +1 -1
- package/dist/surfaces/cli/runtime.d.ts.map +1 -1
- package/dist/surfaces/cli/runtime.js +3 -2
- package/dist/surfaces/cli/runtime.js.map +1 -1
- package/dist/surfaces/mcp/server.d.ts +2 -0
- package/dist/surfaces/mcp/server.d.ts.map +1 -1
- package/dist/surfaces/mcp/server.js +77 -37
- package/dist/surfaces/mcp/server.js.map +1 -1
- package/dist/surfaces/mcp/tool-handlers.d.ts.map +1 -1
- package/dist/surfaces/mcp/tool-handlers.js +2 -0
- package/dist/surfaces/mcp/tool-handlers.js.map +1 -1
- package/dist/surfaces/team/diagnose.d.ts +18 -0
- package/dist/surfaces/team/diagnose.d.ts.map +1 -0
- package/dist/surfaces/team/diagnose.js +57 -0
- package/dist/surfaces/team/diagnose.js.map +1 -0
- package/dist/surfaces/team/ops.d.ts +16 -0
- package/dist/surfaces/team/ops.d.ts.map +1 -0
- package/dist/surfaces/team/ops.js +137 -0
- package/dist/surfaces/team/ops.js.map +1 -0
- package/dist/surfaces/team/server.d.ts +48 -0
- package/dist/surfaces/team/server.d.ts.map +1 -0
- package/dist/surfaces/team/server.js +393 -0
- package/dist/surfaces/team/server.js.map +1 -0
- package/package.json +1 -1
- package/plugin.json +1 -1
|
@@ -0,0 +1,291 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.CURSOR_HOME_ENV = exports.CURSOR_HOST_ADAPTER_ID = void 0;
|
|
4
|
+
exports.resolveCursorHome = resolveCursorHome;
|
|
5
|
+
exports.getCursorHostStatus = getCursorHostStatus;
|
|
6
|
+
exports.installCursorHost = installCursorHost;
|
|
7
|
+
exports.uninstallCursorHost = uninstallCursorHost;
|
|
8
|
+
/**
|
|
9
|
+
* Cursor HostAdapter install slice.
|
|
10
|
+
*
|
|
11
|
+
* Composes existing MCP + rules + skill installers. Isolated `home` /
|
|
12
|
+
* GRAPHFLOW_CURSOR_HOME writes only under that `.cursor` directory so tests
|
|
13
|
+
* never touch the real user home.
|
|
14
|
+
*/
|
|
15
|
+
const node_fs_1 = require("node:fs");
|
|
16
|
+
const node_os_1 = require("node:os");
|
|
17
|
+
const node_path_1 = require("node:path");
|
|
18
|
+
const agent_mcp_installer_1 = require("./agent-mcp-installer");
|
|
19
|
+
const host_adapter_1 = require("./host-adapter");
|
|
20
|
+
const skill_installer_1 = require("./skill-installer");
|
|
21
|
+
exports.CURSOR_HOST_ADAPTER_ID = "cursor";
|
|
22
|
+
exports.CURSOR_HOME_ENV = "GRAPHFLOW_CURSOR_HOME";
|
|
23
|
+
const CURSOR_PROFILE_IDS = ["cursor", "cursor-windows"];
|
|
24
|
+
function cursorDisplayName() {
|
|
25
|
+
return (0, host_adapter_1.getHostAdapter)(exports.CURSOR_HOST_ADAPTER_ID)?.displayName ?? "Cursor";
|
|
26
|
+
}
|
|
27
|
+
function isolatedCursorHome(override) {
|
|
28
|
+
const explicit = override?.trim() || process.env[exports.CURSOR_HOME_ENV]?.trim();
|
|
29
|
+
return explicit || undefined;
|
|
30
|
+
}
|
|
31
|
+
function resolveCursorHome(override) {
|
|
32
|
+
return isolatedCursorHome(override) ?? (0, node_path_1.join)((0, node_os_1.homedir)(), ".cursor");
|
|
33
|
+
}
|
|
34
|
+
function cursorPaths(home) {
|
|
35
|
+
return {
|
|
36
|
+
mcpPath: (0, node_path_1.join)(home, "mcp.json"),
|
|
37
|
+
rulesPath: (0, node_path_1.join)(home, "rules", "graphflow.mdc"),
|
|
38
|
+
skillPath: (0, node_path_1.join)(home, "skills", "graphflow", "SKILL.md"),
|
|
39
|
+
skillsRoot: (0, node_path_1.join)(home, "skills"),
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
function isMcpServerInstalled(configPath, serverName = "graphflow") {
|
|
43
|
+
if (!(0, node_fs_1.existsSync)(configPath))
|
|
44
|
+
return false;
|
|
45
|
+
try {
|
|
46
|
+
const json = JSON.parse((0, node_fs_1.readFileSync)(configPath, "utf8"));
|
|
47
|
+
return Boolean(json.mcpServers?.[serverName]);
|
|
48
|
+
}
|
|
49
|
+
catch {
|
|
50
|
+
return false;
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
function copyIfChanged(sourcePath, destDir, destFileName) {
|
|
54
|
+
const destFile = (0, node_path_1.join)(destDir, destFileName);
|
|
55
|
+
const existed = (0, node_fs_1.existsSync)(destFile);
|
|
56
|
+
if (existed && (0, node_fs_1.readFileSync)(destFile, "utf8") === (0, node_fs_1.readFileSync)(sourcePath, "utf8")) {
|
|
57
|
+
return { status: "skipped", filePath: destFile };
|
|
58
|
+
}
|
|
59
|
+
(0, node_fs_1.mkdirSync)(destDir, { recursive: true });
|
|
60
|
+
(0, node_fs_1.copyFileSync)(sourcePath, destFile);
|
|
61
|
+
return { status: existed ? "updated" : "created", filePath: destFile };
|
|
62
|
+
}
|
|
63
|
+
function writeCursorMcp(configPath) {
|
|
64
|
+
try {
|
|
65
|
+
const node = (0, agent_mcp_installer_1.buildMcpServerNode)({ strategy: "npx" });
|
|
66
|
+
const existed = (0, node_fs_1.existsSync)(configPath);
|
|
67
|
+
let json = {};
|
|
68
|
+
if (existed) {
|
|
69
|
+
try {
|
|
70
|
+
json = JSON.parse((0, node_fs_1.readFileSync)(configPath, "utf8"));
|
|
71
|
+
}
|
|
72
|
+
catch {
|
|
73
|
+
json = {};
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
const servers = json.mcpServers && typeof json.mcpServers === "object"
|
|
77
|
+
? { ...json.mcpServers }
|
|
78
|
+
: {};
|
|
79
|
+
const serverExisted = Boolean(servers.graphflow);
|
|
80
|
+
servers.graphflow = node;
|
|
81
|
+
const next = { ...json, mcpServers: servers };
|
|
82
|
+
const payload = `${JSON.stringify(next, null, 2)}\n`;
|
|
83
|
+
if (existed && (0, node_fs_1.readFileSync)(configPath, "utf8") === payload) {
|
|
84
|
+
return { status: "skipped", filePath: configPath, message: "already up to date" };
|
|
85
|
+
}
|
|
86
|
+
(0, node_fs_1.mkdirSync)((0, node_path_1.dirname)(configPath), { recursive: true });
|
|
87
|
+
(0, node_fs_1.writeFileSync)(configPath, payload, "utf8");
|
|
88
|
+
if (!existed)
|
|
89
|
+
return { status: "created", filePath: configPath };
|
|
90
|
+
if (!serverExisted)
|
|
91
|
+
return { status: "created", filePath: configPath };
|
|
92
|
+
return { status: "updated", filePath: configPath };
|
|
93
|
+
}
|
|
94
|
+
catch (error) {
|
|
95
|
+
return {
|
|
96
|
+
status: "error",
|
|
97
|
+
filePath: configPath,
|
|
98
|
+
message: error instanceof Error ? error.message : String(error),
|
|
99
|
+
};
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
function rollupStatus(results) {
|
|
103
|
+
if (results.some((item) => item.status === "error"))
|
|
104
|
+
return "error";
|
|
105
|
+
if (results.some((item) => item.status === "created" || item.status === "injected"))
|
|
106
|
+
return "created";
|
|
107
|
+
if (results.some((item) => item.status === "updated"))
|
|
108
|
+
return "updated";
|
|
109
|
+
return "skipped";
|
|
110
|
+
}
|
|
111
|
+
function detectedCursorProfileIds() {
|
|
112
|
+
const ids = (0, agent_mcp_installer_1.detectInstalledAgents)()
|
|
113
|
+
.map((agent) => agent.id)
|
|
114
|
+
.filter((id) => CURSOR_PROFILE_IDS.includes(id));
|
|
115
|
+
if (ids.length === 0 && (0, node_fs_1.existsSync)((0, node_path_1.join)((0, node_os_1.homedir)(), ".cursor"))) {
|
|
116
|
+
return ["cursor"];
|
|
117
|
+
}
|
|
118
|
+
return ids;
|
|
119
|
+
}
|
|
120
|
+
function installCursorSkillAt(skillsRoot) {
|
|
121
|
+
const sourceDir = (0, skill_installer_1.resolveSkillSourcePath)();
|
|
122
|
+
const destFile = (0, node_path_1.join)(skillsRoot, "graphflow", "SKILL.md");
|
|
123
|
+
if (!sourceDir) {
|
|
124
|
+
return { status: "skipped", filePath: destFile, message: "Skill source (SKILL.md) not found" };
|
|
125
|
+
}
|
|
126
|
+
try {
|
|
127
|
+
const copied = copyIfChanged((0, node_path_1.join)(sourceDir, "SKILL.md"), (0, node_path_1.join)(skillsRoot, "graphflow"), "SKILL.md");
|
|
128
|
+
return copied;
|
|
129
|
+
}
|
|
130
|
+
catch (error) {
|
|
131
|
+
return {
|
|
132
|
+
status: "error",
|
|
133
|
+
filePath: destFile,
|
|
134
|
+
message: error instanceof Error ? error.message : String(error),
|
|
135
|
+
};
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
function installCursorRulesAt(home) {
|
|
139
|
+
const rulesPath = (0, node_path_1.join)(home, "rules", "graphflow.mdc");
|
|
140
|
+
const sourceDir = (0, skill_installer_1.resolveCursorRulesSourcePath)();
|
|
141
|
+
if (!sourceDir) {
|
|
142
|
+
return { status: "skipped", filePath: rulesPath, message: "Cursor rules source (graphflow.mdc) not found" };
|
|
143
|
+
}
|
|
144
|
+
try {
|
|
145
|
+
return copyIfChanged((0, node_path_1.join)(sourceDir, "graphflow.mdc"), (0, node_path_1.join)(home, "rules"), "graphflow.mdc");
|
|
146
|
+
}
|
|
147
|
+
catch (error) {
|
|
148
|
+
return {
|
|
149
|
+
status: "error",
|
|
150
|
+
filePath: rulesPath,
|
|
151
|
+
message: error instanceof Error ? error.message : String(error),
|
|
152
|
+
};
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
function resultFromParts(parts, fallbackPath) {
|
|
156
|
+
const status = rollupStatus(parts);
|
|
157
|
+
const filePath = parts.find((part) => part.filePath)?.filePath ?? fallbackPath;
|
|
158
|
+
const message = parts
|
|
159
|
+
.map((part) => part.message)
|
|
160
|
+
.filter((item) => Boolean(item))
|
|
161
|
+
.join("; ");
|
|
162
|
+
const result = { status, filePath };
|
|
163
|
+
if (message)
|
|
164
|
+
result.message = message;
|
|
165
|
+
return result;
|
|
166
|
+
}
|
|
167
|
+
function getCursorHostStatus(options = {}) {
|
|
168
|
+
const isolated = isolatedCursorHome(options.home);
|
|
169
|
+
const home = resolveCursorHome(options.home);
|
|
170
|
+
const paths = cursorPaths(home);
|
|
171
|
+
const agent = cursorDisplayName();
|
|
172
|
+
if (isolated) {
|
|
173
|
+
const detected = (0, node_fs_1.existsSync)(home);
|
|
174
|
+
const mcpInstalled = detected && isMcpServerInstalled(paths.mcpPath);
|
|
175
|
+
const rulesInstalled = (0, node_fs_1.existsSync)(paths.rulesPath);
|
|
176
|
+
const skillInstalled = (0, node_fs_1.existsSync)(paths.skillPath);
|
|
177
|
+
return {
|
|
178
|
+
hostId: exports.CURSOR_HOST_ADAPTER_ID,
|
|
179
|
+
agent,
|
|
180
|
+
detected,
|
|
181
|
+
installed: mcpInstalled,
|
|
182
|
+
mcpInstalled,
|
|
183
|
+
rulesInstalled,
|
|
184
|
+
skillInstalled,
|
|
185
|
+
home,
|
|
186
|
+
mcpPath: paths.mcpPath,
|
|
187
|
+
rulesPath: paths.rulesPath,
|
|
188
|
+
skillPath: paths.skillPath,
|
|
189
|
+
mcpTargets: detected
|
|
190
|
+
? [{ path: paths.mcpPath, installed: mcpInstalled, scope: "user", agentName: agent }]
|
|
191
|
+
: [],
|
|
192
|
+
};
|
|
193
|
+
}
|
|
194
|
+
const mcp = (0, agent_mcp_installer_1.getMcpInstallStatus)().filter((item) => item.agentId === "cursor" || item.agentId === "cursor-windows");
|
|
195
|
+
const skill = (0, skill_installer_1.getAgentSkillStatus)().find((item) => item.agent === "Cursor skill");
|
|
196
|
+
const detected = mcp.length > 0 || (0, node_fs_1.existsSync)(home) || detectedCursorProfileIds().length > 0;
|
|
197
|
+
const mcpInstalled = mcp.some((item) => item.installed);
|
|
198
|
+
const skillInstalled = skill?.installed ?? (0, node_fs_1.existsSync)(paths.skillPath);
|
|
199
|
+
const rulesInstalled = (0, node_fs_1.existsSync)(paths.rulesPath);
|
|
200
|
+
return {
|
|
201
|
+
hostId: exports.CURSOR_HOST_ADAPTER_ID,
|
|
202
|
+
agent,
|
|
203
|
+
detected,
|
|
204
|
+
installed: mcpInstalled,
|
|
205
|
+
mcpInstalled,
|
|
206
|
+
rulesInstalled,
|
|
207
|
+
skillInstalled,
|
|
208
|
+
home,
|
|
209
|
+
mcpPath: mcp[0]?.configPath ?? paths.mcpPath,
|
|
210
|
+
rulesPath: paths.rulesPath,
|
|
211
|
+
skillPath: skill?.configPath ?? paths.skillPath,
|
|
212
|
+
mcpTargets: mcp.map((item) => ({
|
|
213
|
+
path: item.configPath,
|
|
214
|
+
installed: item.installed,
|
|
215
|
+
scope: item.scope,
|
|
216
|
+
agentName: item.agentName,
|
|
217
|
+
})),
|
|
218
|
+
};
|
|
219
|
+
}
|
|
220
|
+
function installCursorHost(options = {}) {
|
|
221
|
+
const isolated = isolatedCursorHome(options.home);
|
|
222
|
+
const home = resolveCursorHome(options.home);
|
|
223
|
+
const paths = cursorPaths(home);
|
|
224
|
+
if (isolated) {
|
|
225
|
+
if (!(0, node_fs_1.existsSync)(home)) {
|
|
226
|
+
return { status: "skipped", filePath: paths.mcpPath, message: `${cursorDisplayName()} not detected` };
|
|
227
|
+
}
|
|
228
|
+
const mcp = writeCursorMcp(paths.mcpPath);
|
|
229
|
+
const rules = installCursorRulesAt(home);
|
|
230
|
+
const skill = installCursorSkillAt(paths.skillsRoot);
|
|
231
|
+
return resultFromParts([mcp, rules, skill], paths.mcpPath);
|
|
232
|
+
}
|
|
233
|
+
const ids = detectedCursorProfileIds();
|
|
234
|
+
if (ids.length === 0 && !(0, node_fs_1.existsSync)(home)) {
|
|
235
|
+
return { status: "skipped", filePath: paths.mcpPath, message: `${cursorDisplayName()} not detected` };
|
|
236
|
+
}
|
|
237
|
+
const mcp = (0, agent_mcp_installer_1.installMcpToDetectedAgents)({
|
|
238
|
+
strategy: "npx",
|
|
239
|
+
installScope: "user",
|
|
240
|
+
agentIdsOverride: ids.length > 0 ? ids : ["cursor"],
|
|
241
|
+
});
|
|
242
|
+
const rules = (0, skill_installer_1.installCursorRules)();
|
|
243
|
+
const skill = (0, node_fs_1.existsSync)(home)
|
|
244
|
+
? installCursorSkillAt(paths.skillsRoot)
|
|
245
|
+
: { status: "skipped", filePath: paths.skillPath, message: "Cursor skill marker not found" };
|
|
246
|
+
return resultFromParts([
|
|
247
|
+
...mcp.map((item) => ({
|
|
248
|
+
status: item.status,
|
|
249
|
+
filePath: item.configPath,
|
|
250
|
+
...(item.message ? { message: item.message } : {}),
|
|
251
|
+
})),
|
|
252
|
+
...rules.map((item) => ({
|
|
253
|
+
status: item.status,
|
|
254
|
+
...(item.message ? { message: item.message } : {}),
|
|
255
|
+
})),
|
|
256
|
+
skill,
|
|
257
|
+
], mcp[0]?.configPath ?? paths.mcpPath);
|
|
258
|
+
}
|
|
259
|
+
function uninstallCursorHost(options = {}) {
|
|
260
|
+
const isolated = isolatedCursorHome(options.home);
|
|
261
|
+
const home = resolveCursorHome(options.home);
|
|
262
|
+
const paths = cursorPaths(home);
|
|
263
|
+
if (isolated) {
|
|
264
|
+
if (!(0, node_fs_1.existsSync)(paths.mcpPath) && !(0, node_fs_1.existsSync)(paths.rulesPath) && !(0, node_fs_1.existsSync)(paths.skillPath)) {
|
|
265
|
+
return { status: "skipped", filePath: paths.mcpPath, message: "not found" };
|
|
266
|
+
}
|
|
267
|
+
const mcpRemoved = (0, node_fs_1.existsSync)(paths.mcpPath) ? (0, agent_mcp_installer_1.removeMcpEntry)(paths.mcpPath, "mcpServers", "graphflow") : false;
|
|
268
|
+
const rulesRemoved = (0, skill_installer_1.removeGraphFlowOwnedFile)(paths.rulesPath);
|
|
269
|
+
const skillRemoved = (0, skill_installer_1.removeAgentSkill)(paths.skillsRoot);
|
|
270
|
+
if (!mcpRemoved && !rulesRemoved && !skillRemoved) {
|
|
271
|
+
return { status: "skipped", filePath: paths.mcpPath, message: "no GraphFlow Cursor files" };
|
|
272
|
+
}
|
|
273
|
+
return { status: "updated", filePath: paths.mcpPath, message: "removed GraphFlow Cursor MCP + rules + skill" };
|
|
274
|
+
}
|
|
275
|
+
const mcp = [
|
|
276
|
+
...(0, agent_mcp_installer_1.uninstallMcpFromDetectedAgents)({ agentId: "cursor" }),
|
|
277
|
+
...(0, agent_mcp_installer_1.uninstallMcpFromDetectedAgents)({ agentId: "cursor-windows" }),
|
|
278
|
+
];
|
|
279
|
+
const rulesRemoved = (0, skill_installer_1.removeGraphFlowOwnedFile)(paths.rulesPath);
|
|
280
|
+
const appData = process.env.APPDATA;
|
|
281
|
+
const appDataRules = process.platform === "win32" && appData
|
|
282
|
+
? (0, skill_installer_1.removeGraphFlowOwnedFile)((0, node_path_1.join)(appData, "Cursor", "User", "rules", "graphflow.mdc"))
|
|
283
|
+
: false;
|
|
284
|
+
const skillRemoved = (0, skill_installer_1.removeAgentSkill)(paths.skillsRoot);
|
|
285
|
+
const mcpRemoved = mcp.some((item) => item.removed);
|
|
286
|
+
if (!mcpRemoved && !rulesRemoved && !appDataRules && !skillRemoved) {
|
|
287
|
+
return { status: "skipped", filePath: paths.mcpPath, message: "no GraphFlow Cursor files" };
|
|
288
|
+
}
|
|
289
|
+
return { status: "updated", filePath: paths.mcpPath, message: "removed GraphFlow Cursor MCP + rules + skill" };
|
|
290
|
+
}
|
|
291
|
+
//# sourceMappingURL=cursor-host-installer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cursor-host-installer.js","sourceRoot":"","sources":["../../src/integrations/cursor-host-installer.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,16 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
/**
|
|
2
|
+
* Thin HostAdapter install dispatch.
|
|
3
|
+
*
|
|
4
|
+
* v1.13 added the capability registry (`host-adapter.ts`). Migrated install
|
|
5
|
+
* slices: DeepSeek Harness, Cursor, and Claude Code. Other IDE installers
|
|
6
|
+
* (Trae, VS Code, Windsurf, Codex, Gemini, …) still use the legacy paths.
|
|
7
|
+
*/
|
|
8
|
+
import { CLAUDE_CODE_HOST_ADAPTER_ID } from "./claude-code-host-installer";
|
|
9
|
+
import { CURSOR_HOST_ADAPTER_ID } from "./cursor-host-installer";
|
|
10
|
+
import { DSH_HOST_ADAPTER_ID, type DshHarnessInstallResult } from "./dsh-harness-installer";
|
|
11
|
+
export { CLAUDE_CODE_HOST_ADAPTER_ID, CURSOR_HOST_ADAPTER_ID, DSH_HOST_ADAPTER_ID };
|
|
3
12
|
export declare const HOST_ADAPTER_INSTALL_UNMIGRATED = "install path is not yet migrated onto HostAdapter";
|
|
13
|
+
export declare const HOST_ADAPTER_MIGRATED_IDS: readonly ["deepseek-harness", "cursor", "claude-code"];
|
|
4
14
|
export interface HostAdapterInstallOptions {
|
|
5
15
|
home?: string;
|
|
6
16
|
}
|
|
@@ -12,8 +22,33 @@ export interface HostAdapterInstallResult {
|
|
|
12
22
|
filePath?: string;
|
|
13
23
|
message?: string;
|
|
14
24
|
}
|
|
15
|
-
|
|
25
|
+
export interface HostAdapterHostStatus {
|
|
26
|
+
hostId: string;
|
|
27
|
+
agent: string;
|
|
28
|
+
detected: boolean;
|
|
29
|
+
installed: boolean;
|
|
30
|
+
glueInstalled?: boolean;
|
|
31
|
+
skillInstalled?: boolean;
|
|
32
|
+
mcpInstalled?: boolean;
|
|
33
|
+
rulesInstalled?: boolean;
|
|
34
|
+
hooksInstalled?: boolean;
|
|
35
|
+
home?: string;
|
|
36
|
+
mcpPath?: string;
|
|
37
|
+
rulesPath?: string;
|
|
38
|
+
skillPath?: string;
|
|
39
|
+
hooksPath?: string;
|
|
40
|
+
settingsPath?: string;
|
|
41
|
+
patchPath?: string;
|
|
42
|
+
dshHome?: string;
|
|
43
|
+
mcpTargets?: Array<{
|
|
44
|
+
path: string;
|
|
45
|
+
installed: boolean;
|
|
46
|
+
scope?: "user" | "workspace";
|
|
47
|
+
agentName?: string;
|
|
48
|
+
}>;
|
|
49
|
+
}
|
|
50
|
+
/** Install a migrated host slice. Unknown registry ids error; unmigrated hosts are unsupported. */
|
|
16
51
|
export declare function installViaHostAdapter(hostId: string, options?: HostAdapterInstallOptions): HostAdapterInstallResult;
|
|
17
52
|
export declare function uninstallViaHostAdapter(hostId: string, options?: HostAdapterInstallOptions): HostAdapterInstallResult;
|
|
18
|
-
export declare function getHostAdapterInstallStatus(hostId: string, options?: HostAdapterInstallOptions):
|
|
53
|
+
export declare function getHostAdapterInstallStatus(hostId: string, options?: HostAdapterInstallOptions): HostAdapterHostStatus | undefined;
|
|
19
54
|
//# sourceMappingURL=host-adapter-install.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"host-adapter-install.d.ts","sourceRoot":"","sources":["../../src/integrations/host-adapter-install.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"host-adapter-install.d.ts","sourceRoot":"","sources":["../../src/integrations/host-adapter-install.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,EACL,2BAA2B,EAM5B,MAAM,8BAA8B,CAAC;AACtC,OAAO,EACL,sBAAsB,EAMvB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,mBAAmB,EAInB,KAAK,uBAAuB,EAE7B,MAAM,yBAAyB,CAAC;AAGjC,OAAO,EAAE,2BAA2B,EAAE,sBAAsB,EAAE,mBAAmB,EAAE,CAAC;AAEpF,eAAO,MAAM,+BAA+B,sDACS,CAAC;AAEtD,eAAO,MAAM,yBAAyB,wDAI5B,CAAC;AAEX,MAAM,WAAW,yBAAyB;IACxC,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,MAAM,wBAAwB,GAAG,uBAAuB,CAAC,QAAQ,CAAC,GAAG,aAAa,CAAC;AAEzF,MAAM,WAAW,wBAAwB;IACvC,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,wBAAwB,CAAC;IACjC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,qBAAqB;IACpC,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,OAAO,CAAC;IAClB,SAAS,EAAE,OAAO,CAAC;IACnB,aAAa,CAAC,EAAE,OAAO,CAAC;IACxB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,UAAU,CAAC,EAAE,KAAK,CAAC;QACjB,IAAI,EAAE,MAAM,CAAC;QACb,SAAS,EAAE,OAAO,CAAC;QACnB,KAAK,CAAC,EAAE,MAAM,GAAG,WAAW,CAAC;QAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB,CAAC,CAAC;CACJ;AAiGD,mGAAmG;AACnG,wBAAgB,qBAAqB,CACnC,MAAM,EAAE,MAAM,EACd,OAAO,GAAE,yBAA8B,GACtC,wBAAwB,CAa1B;AAED,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,MAAM,EACd,OAAO,GAAE,yBAA8B,GACtC,wBAAwB,CAa1B;AAED,wBAAgB,2BAA2B,CACzC,MAAM,EAAE,MAAM,EACd,OAAO,GAAE,yBAA8B,GACtC,qBAAqB,GAAG,SAAS,CAanC"}
|
|
@@ -1,21 +1,29 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.HOST_ADAPTER_INSTALL_UNMIGRATED = exports.DSH_HOST_ADAPTER_ID = void 0;
|
|
3
|
+
exports.HOST_ADAPTER_MIGRATED_IDS = exports.HOST_ADAPTER_INSTALL_UNMIGRATED = exports.DSH_HOST_ADAPTER_ID = exports.CURSOR_HOST_ADAPTER_ID = exports.CLAUDE_CODE_HOST_ADAPTER_ID = void 0;
|
|
4
4
|
exports.installViaHostAdapter = installViaHostAdapter;
|
|
5
5
|
exports.uninstallViaHostAdapter = uninstallViaHostAdapter;
|
|
6
6
|
exports.getHostAdapterInstallStatus = getHostAdapterInstallStatus;
|
|
7
7
|
/**
|
|
8
8
|
* Thin HostAdapter install dispatch.
|
|
9
9
|
*
|
|
10
|
-
* v1.13 added the capability registry (`host-adapter.ts`).
|
|
11
|
-
*
|
|
12
|
-
*
|
|
13
|
-
* hosts here next, do not grow this file into a rewrite of agent-mcp-installer.
|
|
10
|
+
* v1.13 added the capability registry (`host-adapter.ts`). Migrated install
|
|
11
|
+
* slices: DeepSeek Harness, Cursor, and Claude Code. Other IDE installers
|
|
12
|
+
* (Trae, VS Code, Windsurf, Codex, Gemini, …) still use the legacy paths.
|
|
14
13
|
*/
|
|
15
|
-
const
|
|
14
|
+
const claude_code_host_installer_1 = require("./claude-code-host-installer");
|
|
15
|
+
Object.defineProperty(exports, "CLAUDE_CODE_HOST_ADAPTER_ID", { enumerable: true, get: function () { return claude_code_host_installer_1.CLAUDE_CODE_HOST_ADAPTER_ID; } });
|
|
16
|
+
const cursor_host_installer_1 = require("./cursor-host-installer");
|
|
17
|
+
Object.defineProperty(exports, "CURSOR_HOST_ADAPTER_ID", { enumerable: true, get: function () { return cursor_host_installer_1.CURSOR_HOST_ADAPTER_ID; } });
|
|
16
18
|
const dsh_harness_installer_1 = require("./dsh-harness-installer");
|
|
17
19
|
Object.defineProperty(exports, "DSH_HOST_ADAPTER_ID", { enumerable: true, get: function () { return dsh_harness_installer_1.DSH_HOST_ADAPTER_ID; } });
|
|
20
|
+
const host_adapter_1 = require("./host-adapter");
|
|
18
21
|
exports.HOST_ADAPTER_INSTALL_UNMIGRATED = "install path is not yet migrated onto HostAdapter";
|
|
22
|
+
exports.HOST_ADAPTER_MIGRATED_IDS = [
|
|
23
|
+
dsh_harness_installer_1.DSH_HOST_ADAPTER_ID,
|
|
24
|
+
cursor_host_installer_1.CURSOR_HOST_ADAPTER_ID,
|
|
25
|
+
claude_code_host_installer_1.CLAUDE_CODE_HOST_ADAPTER_ID,
|
|
26
|
+
];
|
|
19
27
|
function unknownHost(hostId) {
|
|
20
28
|
return {
|
|
21
29
|
hostId,
|
|
@@ -35,6 +43,9 @@ function unsupportedHost(hostId, displayName) {
|
|
|
35
43
|
function dshHomeOptions(options) {
|
|
36
44
|
return typeof options.home === "string" ? { dshHome: options.home } : {};
|
|
37
45
|
}
|
|
46
|
+
function sliceHomeOptions(options) {
|
|
47
|
+
return typeof options.home === "string" ? { home: options.home } : {};
|
|
48
|
+
}
|
|
38
49
|
function withAdapterMeta(hostId, displayName, result) {
|
|
39
50
|
const mapped = {
|
|
40
51
|
hostId,
|
|
@@ -47,7 +58,56 @@ function withAdapterMeta(hostId, displayName, result) {
|
|
|
47
58
|
mapped.message = result.message;
|
|
48
59
|
return mapped;
|
|
49
60
|
}
|
|
50
|
-
|
|
61
|
+
function fromDshStatus(status) {
|
|
62
|
+
return {
|
|
63
|
+
hostId: dsh_harness_installer_1.DSH_HOST_ADAPTER_ID,
|
|
64
|
+
agent: status.agent,
|
|
65
|
+
detected: status.detected,
|
|
66
|
+
installed: status.installed,
|
|
67
|
+
glueInstalled: status.glueInstalled,
|
|
68
|
+
skillInstalled: status.skillInstalled,
|
|
69
|
+
home: status.dshHome,
|
|
70
|
+
patchPath: status.patchPath,
|
|
71
|
+
skillPath: status.skillPath,
|
|
72
|
+
dshHome: status.dshHome,
|
|
73
|
+
};
|
|
74
|
+
}
|
|
75
|
+
function fromCursorStatus(status) {
|
|
76
|
+
return {
|
|
77
|
+
hostId: status.hostId,
|
|
78
|
+
agent: status.agent,
|
|
79
|
+
detected: status.detected,
|
|
80
|
+
installed: status.installed,
|
|
81
|
+
mcpInstalled: status.mcpInstalled,
|
|
82
|
+
rulesInstalled: status.rulesInstalled,
|
|
83
|
+
skillInstalled: status.skillInstalled,
|
|
84
|
+
home: status.home,
|
|
85
|
+
mcpPath: status.mcpPath,
|
|
86
|
+
rulesPath: status.rulesPath,
|
|
87
|
+
skillPath: status.skillPath,
|
|
88
|
+
mcpTargets: status.mcpTargets,
|
|
89
|
+
};
|
|
90
|
+
}
|
|
91
|
+
function fromClaudeStatus(status) {
|
|
92
|
+
return {
|
|
93
|
+
hostId: status.hostId,
|
|
94
|
+
agent: status.agent,
|
|
95
|
+
detected: status.detected,
|
|
96
|
+
installed: status.installed,
|
|
97
|
+
mcpInstalled: status.mcpInstalled,
|
|
98
|
+
rulesInstalled: status.rulesInstalled,
|
|
99
|
+
skillInstalled: status.skillInstalled,
|
|
100
|
+
hooksInstalled: status.hooksInstalled,
|
|
101
|
+
home: status.home,
|
|
102
|
+
mcpPath: status.mcpPath,
|
|
103
|
+
rulesPath: status.rulesPath,
|
|
104
|
+
skillPath: status.skillPath,
|
|
105
|
+
hooksPath: status.settingsPath,
|
|
106
|
+
settingsPath: status.settingsPath,
|
|
107
|
+
mcpTargets: status.mcpTargets,
|
|
108
|
+
};
|
|
109
|
+
}
|
|
110
|
+
/** Install a migrated host slice. Unknown registry ids error; unmigrated hosts are unsupported. */
|
|
51
111
|
function installViaHostAdapter(hostId, options = {}) {
|
|
52
112
|
const adapter = (0, host_adapter_1.getHostAdapter)(hostId);
|
|
53
113
|
if (!adapter)
|
|
@@ -55,6 +115,12 @@ function installViaHostAdapter(hostId, options = {}) {
|
|
|
55
115
|
if (adapter.id === dsh_harness_installer_1.DSH_HOST_ADAPTER_ID) {
|
|
56
116
|
return withAdapterMeta(adapter.id, adapter.displayName, (0, dsh_harness_installer_1.installDshHarness)(dshHomeOptions(options)));
|
|
57
117
|
}
|
|
118
|
+
if (adapter.id === cursor_host_installer_1.CURSOR_HOST_ADAPTER_ID) {
|
|
119
|
+
return withAdapterMeta(adapter.id, adapter.displayName, (0, cursor_host_installer_1.installCursorHost)(sliceHomeOptions(options)));
|
|
120
|
+
}
|
|
121
|
+
if (adapter.id === claude_code_host_installer_1.CLAUDE_CODE_HOST_ADAPTER_ID) {
|
|
122
|
+
return withAdapterMeta(adapter.id, adapter.displayName, (0, claude_code_host_installer_1.installClaudeCodeHost)(sliceHomeOptions(options)));
|
|
123
|
+
}
|
|
58
124
|
return unsupportedHost(adapter.id, adapter.displayName);
|
|
59
125
|
}
|
|
60
126
|
function uninstallViaHostAdapter(hostId, options = {}) {
|
|
@@ -64,12 +130,27 @@ function uninstallViaHostAdapter(hostId, options = {}) {
|
|
|
64
130
|
if (adapter.id === dsh_harness_installer_1.DSH_HOST_ADAPTER_ID) {
|
|
65
131
|
return withAdapterMeta(adapter.id, adapter.displayName, (0, dsh_harness_installer_1.uninstallDshHarness)(dshHomeOptions(options)));
|
|
66
132
|
}
|
|
133
|
+
if (adapter.id === cursor_host_installer_1.CURSOR_HOST_ADAPTER_ID) {
|
|
134
|
+
return withAdapterMeta(adapter.id, adapter.displayName, (0, cursor_host_installer_1.uninstallCursorHost)(sliceHomeOptions(options)));
|
|
135
|
+
}
|
|
136
|
+
if (adapter.id === claude_code_host_installer_1.CLAUDE_CODE_HOST_ADAPTER_ID) {
|
|
137
|
+
return withAdapterMeta(adapter.id, adapter.displayName, (0, claude_code_host_installer_1.uninstallClaudeCodeHost)(sliceHomeOptions(options)));
|
|
138
|
+
}
|
|
67
139
|
return unsupportedHost(adapter.id, adapter.displayName);
|
|
68
140
|
}
|
|
69
141
|
function getHostAdapterInstallStatus(hostId, options = {}) {
|
|
70
142
|
const adapter = (0, host_adapter_1.getHostAdapter)(hostId);
|
|
71
|
-
if (!adapter
|
|
143
|
+
if (!adapter)
|
|
72
144
|
return undefined;
|
|
73
|
-
|
|
145
|
+
if (adapter.id === dsh_harness_installer_1.DSH_HOST_ADAPTER_ID) {
|
|
146
|
+
return fromDshStatus((0, dsh_harness_installer_1.getDshHarnessStatus)(dshHomeOptions(options)));
|
|
147
|
+
}
|
|
148
|
+
if (adapter.id === cursor_host_installer_1.CURSOR_HOST_ADAPTER_ID) {
|
|
149
|
+
return fromCursorStatus((0, cursor_host_installer_1.getCursorHostStatus)(sliceHomeOptions(options)));
|
|
150
|
+
}
|
|
151
|
+
if (adapter.id === claude_code_host_installer_1.CLAUDE_CODE_HOST_ADAPTER_ID) {
|
|
152
|
+
return fromClaudeStatus((0, claude_code_host_installer_1.getClaudeCodeHostStatus)(sliceHomeOptions(options)));
|
|
153
|
+
}
|
|
154
|
+
return undefined;
|
|
74
155
|
}
|
|
75
156
|
//# sourceMappingURL=host-adapter-install.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"host-adapter-install.js","sourceRoot":"","sources":["../../src/integrations/host-adapter-install.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"host-adapter-install.js","sourceRoot":"","sources":["../../src/integrations/host-adapter-install.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Host capability registry (v1.13).
|
|
3
|
-
* Install dispatch lives in `host-adapter-install.ts` — DSH
|
|
4
|
-
*
|
|
3
|
+
* Install dispatch lives in `host-adapter-install.ts` — DSH, Cursor, and
|
|
4
|
+
* Claude Code are migrated; other IDE installers remain standalone.
|
|
5
5
|
*/
|
|
6
6
|
export type HostCapability = "mcp-stdio" | "mcp-http" | "skills" | "rules" | "hooks" | "client-panel" | "workbench";
|
|
7
7
|
export interface HostAdapter {
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Team HTTP RBAC — viewer | contributor | admin.
|
|
3
|
+
*
|
|
4
|
+
* Local-first surfaces (stdio, loopback file/sqlite, unauthenticated loopback
|
|
5
|
+
* HTTP) never consult this module. Shared HTTP surfaces fail closed: a missing
|
|
6
|
+
* role is a deny, not a silent grant.
|
|
7
|
+
*/
|
|
8
|
+
export declare const TEAM_ROLES: readonly ["viewer", "contributor", "admin"];
|
|
9
|
+
export type TeamRole = (typeof TEAM_ROLES)[number];
|
|
10
|
+
export declare const TEAM_PERMISSIONS: readonly ["graph.read", "graph.write", "graph.delete", "skill.read", "skill.sync", "artifact.import", "governance.mutate", "diagnose.read"];
|
|
11
|
+
export type TeamPermission = (typeof TEAM_PERMISSIONS)[number];
|
|
12
|
+
export interface AuthorizationDecision {
|
|
13
|
+
ok: boolean;
|
|
14
|
+
role?: TeamRole;
|
|
15
|
+
permission?: TeamPermission;
|
|
16
|
+
reason?: string;
|
|
17
|
+
}
|
|
18
|
+
export declare function isTeamRole(value: unknown): value is TeamRole;
|
|
19
|
+
export declare function permissionsForRole(role: TeamRole): readonly TeamPermission[];
|
|
20
|
+
export declare function roleSatisfies(actual: TeamRole, required: TeamRole): boolean;
|
|
21
|
+
export declare function hasPermission(role: TeamRole | undefined, permission: TeamPermission): boolean;
|
|
22
|
+
/**
|
|
23
|
+
* Map JWT `scope` tokens (and a few aliases) to the strongest matching role.
|
|
24
|
+
* Unknown scopes are ignored — absence of a known role scope means unresolved.
|
|
25
|
+
*/
|
|
26
|
+
export declare function roleFromScopes(scopes: readonly string[]): TeamRole | undefined;
|
|
27
|
+
export declare function defaultScopesForRole(role: TeamRole): string;
|
|
28
|
+
export declare function permissionForTeamMethod(method: string): TeamPermission | undefined;
|
|
29
|
+
export declare function permissionForMcpTool(toolName: string): TeamPermission | undefined;
|
|
30
|
+
export declare function authorizePermission(role: TeamRole | undefined, permission: TeamPermission, subject?: string): AuthorizationDecision;
|
|
31
|
+
export declare function authorizeTeamMethod(role: TeamRole | undefined, method: string): AuthorizationDecision;
|
|
32
|
+
export declare function authorizeMcpTool(role: TeamRole | undefined, toolName: string): AuthorizationDecision;
|
|
33
|
+
export declare class TeamAuthorizationError extends Error {
|
|
34
|
+
readonly statusCode = 403;
|
|
35
|
+
readonly decision: AuthorizationDecision;
|
|
36
|
+
constructor(decision: AuthorizationDecision);
|
|
37
|
+
}
|
|
38
|
+
export declare function assertAuthorized(decision: AuthorizationDecision): void;
|
|
39
|
+
//# sourceMappingURL=rbac.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rbac.d.ts","sourceRoot":"","sources":["../../src/security/rbac.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,eAAO,MAAM,UAAU,6CAA8C,CAAC;AACtE,MAAM,MAAM,QAAQ,GAAG,CAAC,OAAO,UAAU,CAAC,CAAC,MAAM,CAAC,CAAC;AAEnD,eAAO,MAAM,gBAAgB,6IASnB,CAAC;AACX,MAAM,MAAM,cAAc,GAAG,CAAC,OAAO,gBAAgB,CAAC,CAAC,MAAM,CAAC,CAAC;AA8D/D,MAAM,WAAW,qBAAqB;IACpC,EAAE,EAAE,OAAO,CAAC;IACZ,IAAI,CAAC,EAAE,QAAQ,CAAC;IAChB,UAAU,CAAC,EAAE,cAAc,CAAC;IAC5B,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,wBAAgB,UAAU,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,QAAQ,CAE5D;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,QAAQ,GAAG,SAAS,cAAc,EAAE,CAE5E;AAED,wBAAgB,aAAa,CAAC,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAE3E;AAED,wBAAgB,aAAa,CAAC,IAAI,EAAE,QAAQ,GAAG,SAAS,EAAE,UAAU,EAAE,cAAc,GAAG,OAAO,CAG7F;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,SAAS,MAAM,EAAE,GAAG,QAAQ,GAAG,SAAS,CAU9E;AAgCD,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,QAAQ,GAAG,MAAM,CAI3D;AAED,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,MAAM,GAAG,cAAc,GAAG,SAAS,CAElF;AAED,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,GAAG,cAAc,GAAG,SAAS,CAEjF;AAED,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,QAAQ,GAAG,SAAS,EAC1B,UAAU,EAAE,cAAc,EAC1B,OAAO,SAAW,GACjB,qBAAqB,CAiBvB;AAED,wBAAgB,mBAAmB,CACjC,IAAI,EAAE,QAAQ,GAAG,SAAS,EAC1B,MAAM,EAAE,MAAM,GACb,qBAAqB,CAUvB;AAED,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,QAAQ,GAAG,SAAS,EAC1B,QAAQ,EAAE,MAAM,GACf,qBAAqB,CAUvB;AAED,qBAAa,sBAAuB,SAAQ,KAAK;IAC/C,QAAQ,CAAC,UAAU,OAAO;IAC1B,QAAQ,CAAC,QAAQ,EAAE,qBAAqB,CAAC;gBAE7B,QAAQ,EAAE,qBAAqB;CAK5C;AAED,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,qBAAqB,GAAG,IAAI,CAItE"}
|