@roarpeng/graphflow 1.15.4 → 1.16.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/CHANGELOG.md +32 -0
- package/README.md +60 -60
- package/README.zh.md +51 -51
- package/dist/config/discover-workspace.d.ts +18 -1
- package/dist/config/discover-workspace.d.ts.map +1 -1
- package/dist/config/discover-workspace.js +30 -3
- package/dist/config/discover-workspace.js.map +1 -1
- package/dist/core/orchestrator-phases.d.ts +70 -0
- package/dist/core/orchestrator-phases.d.ts.map +1 -0
- package/dist/core/orchestrator-phases.js +344 -0
- package/dist/core/orchestrator-phases.js.map +1 -0
- package/dist/core/orchestrator.d.ts.map +1 -1
- package/dist/core/orchestrator.js +47 -266
- package/dist/core/orchestrator.js.map +1 -1
- package/dist/graph/client-factory.d.ts.map +1 -1
- package/dist/graph/client-factory.js +7 -0
- package/dist/graph/client-factory.js.map +1 -1
- package/dist/integrations/agent-mcp-installer.d.ts.map +1 -1
- package/dist/integrations/agent-mcp-installer.js +42 -3
- package/dist/integrations/agent-mcp-installer.js.map +1 -1
- package/dist/integrations/agent-profiles/index.d.ts +2 -0
- package/dist/integrations/agent-profiles/index.d.ts.map +1 -1
- package/dist/integrations/agent-profiles/index.js +2 -0
- package/dist/integrations/agent-profiles/index.js.map +1 -1
- package/dist/integrations/agent-profiles/profiles/kimi-code.d.ts +2 -0
- package/dist/integrations/agent-profiles/profiles/kimi-code.d.ts.map +1 -0
- package/dist/integrations/agent-profiles/profiles/kimi-code.js +23 -0
- package/dist/integrations/agent-profiles/profiles/kimi-code.js.map +1 -0
- package/dist/integrations/agent-profiles/skills/kimi-code.d.ts +2 -0
- package/dist/integrations/agent-profiles/skills/kimi-code.d.ts.map +1 -0
- package/dist/integrations/agent-profiles/skills/kimi-code.js +14 -0
- package/dist/integrations/agent-profiles/skills/kimi-code.js.map +1 -0
- package/dist/integrations/host-adapter-install.d.ts +19 -6
- package/dist/integrations/host-adapter-install.d.ts.map +1 -1
- package/dist/integrations/host-adapter-install.js +88 -6
- package/dist/integrations/host-adapter-install.js.map +1 -1
- package/dist/integrations/host-adapter.d.ts +6 -2
- package/dist/integrations/host-adapter.d.ts.map +1 -1
- package/dist/integrations/host-adapter.js +68 -0
- package/dist/integrations/host-adapter.js.map +1 -1
- package/dist/integrations/kimi-code-host-installer.d.ts +36 -0
- package/dist/integrations/kimi-code-host-installer.d.ts.map +1 -0
- package/dist/integrations/kimi-code-host-installer.js +312 -0
- package/dist/integrations/kimi-code-host-installer.js.map +1 -0
- package/dist/integrations/kimi-code-paths.d.ts +8 -0
- package/dist/integrations/kimi-code-paths.d.ts.map +1 -0
- package/dist/integrations/kimi-code-paths.js +20 -0
- package/dist/integrations/kimi-code-paths.js.map +1 -0
- package/dist/integrations/profile-host-installer.d.ts +63 -0
- package/dist/integrations/profile-host-installer.d.ts.map +1 -0
- package/dist/integrations/profile-host-installer.js +223 -0
- package/dist/integrations/profile-host-installer.js.map +1 -0
- package/dist/integrations/skill-installer.d.ts +19 -0
- package/dist/integrations/skill-installer.d.ts.map +1 -1
- package/dist/integrations/skill-installer.js +104 -3
- package/dist/integrations/skill-installer.js.map +1 -1
- package/dist/surfaces/cli/init.d.ts.map +1 -1
- package/dist/surfaces/cli/init.js +97 -52
- package/dist/surfaces/cli/init.js.map +1 -1
- package/dist/surfaces/trae-skill/graphflow/SKILL.md +11 -1
- package/package.json +1 -1
- package/plugin.json +1 -1
- package/skills/graphflow/SKILL.md +11 -1
- package/src/surfaces/trae-skill/graphflow/SKILL.md +11 -1
|
@@ -1,7 +1,11 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Host capability registry (v1.13).
|
|
3
|
-
*
|
|
4
|
-
*
|
|
3
|
+
*
|
|
4
|
+
* Install dispatch lives in `host-adapter-install.ts`. Two kinds of hosts:
|
|
5
|
+
* - **Hand-written slices** (host-specific behaviour: hooks, home overlays,
|
|
6
|
+
* placeholder rules): `deepseek-harness`, `cursor`, `claude-code`, `kimi-code`.
|
|
7
|
+
* - **Profile-backed generic slices** (`profile-host-installer.ts`): every other
|
|
8
|
+
* registry host — MCP / Skill / instruction targets are already declarative.
|
|
5
9
|
*/
|
|
6
10
|
export type HostCapability = "mcp-stdio" | "mcp-http" | "skills" | "rules" | "hooks" | "client-panel" | "workbench";
|
|
7
11
|
export interface HostAdapter {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"host-adapter.d.ts","sourceRoot":"","sources":["../../src/integrations/host-adapter.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"host-adapter.d.ts","sourceRoot":"","sources":["../../src/integrations/host-adapter.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,MAAM,MAAM,cAAc,GACtB,WAAW,GACX,UAAU,GACV,QAAQ,GACR,OAAO,GACP,OAAO,GACP,cAAc,GACd,WAAW,CAAC;AAEhB,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,SAAS,cAAc,EAAE,CAAC;IACxC,0EAA0E;IAC1E,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,0EAA0E;IAC1E,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,eAAO,MAAM,aAAa,EAAE,SAAS,WAAW,EAuFtC,CAAC;AAEX,wBAAgB,cAAc,CAAC,EAAE,EAAE,MAAM,GAAG,WAAW,GAAG,SAAS,CAElE;AAED,wBAAgB,mBAAmB,CAAC,UAAU,EAAE,cAAc,GAAG,WAAW,EAAE,CAE7E"}
|
|
@@ -22,6 +22,74 @@ exports.HOST_ADAPTERS = [
|
|
|
22
22
|
capabilities: ["mcp-stdio", "skills", "rules", "hooks"],
|
|
23
23
|
homeMarker: ".claude",
|
|
24
24
|
},
|
|
25
|
+
{
|
|
26
|
+
id: "kimi-code",
|
|
27
|
+
displayName: "Kimi Code",
|
|
28
|
+
capabilities: ["mcp-stdio", "skills", "rules"],
|
|
29
|
+
homeMarker: ".kimi-code",
|
|
30
|
+
toolPrefix: "mcp__graphflow__",
|
|
31
|
+
},
|
|
32
|
+
// ── Profile-backed hosts (generic slice) ──────────────────────────────
|
|
33
|
+
{ id: "trae", displayName: "Trae", capabilities: ["mcp-stdio"], homeMarker: ".trae" },
|
|
34
|
+
{ id: "vscode", displayName: "VS Code", capabilities: ["mcp-stdio"], homeMarker: ".vscode" },
|
|
35
|
+
{
|
|
36
|
+
id: "windsurf",
|
|
37
|
+
displayName: "Windsurf",
|
|
38
|
+
capabilities: ["mcp-stdio", "rules"],
|
|
39
|
+
homeMarker: ".codeium",
|
|
40
|
+
},
|
|
41
|
+
{
|
|
42
|
+
id: "cline",
|
|
43
|
+
displayName: "Cline",
|
|
44
|
+
capabilities: ["mcp-stdio", "rules"],
|
|
45
|
+
homeMarker: ".cline",
|
|
46
|
+
},
|
|
47
|
+
{
|
|
48
|
+
id: "roo-code",
|
|
49
|
+
displayName: "Roo Code",
|
|
50
|
+
capabilities: ["mcp-stdio", "skills", "rules"],
|
|
51
|
+
homeMarker: ".roo",
|
|
52
|
+
},
|
|
53
|
+
{
|
|
54
|
+
id: "kilocode",
|
|
55
|
+
displayName: "Kilo Code",
|
|
56
|
+
capabilities: ["mcp-stdio", "skills", "rules"],
|
|
57
|
+
homeMarker: ".kilocode",
|
|
58
|
+
},
|
|
59
|
+
{ id: "pearai", displayName: "PearAI", capabilities: ["mcp-stdio"] },
|
|
60
|
+
{
|
|
61
|
+
id: "gemini",
|
|
62
|
+
displayName: "Gemini CLI",
|
|
63
|
+
capabilities: ["mcp-stdio", "rules"],
|
|
64
|
+
homeMarker: ".gemini",
|
|
65
|
+
},
|
|
66
|
+
{
|
|
67
|
+
id: "codex",
|
|
68
|
+
displayName: "Codex",
|
|
69
|
+
capabilities: ["mcp-stdio", "skills", "rules"],
|
|
70
|
+
homeMarker: ".codex",
|
|
71
|
+
},
|
|
72
|
+
{
|
|
73
|
+
id: "antigravity",
|
|
74
|
+
displayName: "Antigravity",
|
|
75
|
+
capabilities: ["mcp-stdio", "skills"],
|
|
76
|
+
homeMarker: ".gemini/antigravity",
|
|
77
|
+
},
|
|
78
|
+
{ id: "amazon-q", displayName: "Amazon Q", capabilities: ["mcp-stdio"] },
|
|
79
|
+
{ id: "zed", displayName: "Zed", capabilities: ["mcp-stdio"] },
|
|
80
|
+
{ id: "continue", displayName: "Continue", capabilities: ["mcp-stdio"] },
|
|
81
|
+
{
|
|
82
|
+
id: "qoder",
|
|
83
|
+
displayName: "Qoder",
|
|
84
|
+
capabilities: ["mcp-stdio", "skills"],
|
|
85
|
+
homeMarker: ".qoder",
|
|
86
|
+
},
|
|
87
|
+
{
|
|
88
|
+
id: "opencode",
|
|
89
|
+
displayName: "Opencode",
|
|
90
|
+
capabilities: ["mcp-stdio", "rules"],
|
|
91
|
+
homeMarker: ".config/opencode",
|
|
92
|
+
},
|
|
25
93
|
];
|
|
26
94
|
function getHostAdapter(id) {
|
|
27
95
|
return exports.HOST_ADAPTERS.find((adapter) => adapter.id === id);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"host-adapter.js","sourceRoot":"","sources":["../../src/integrations/host-adapter.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"host-adapter.js","sourceRoot":"","sources":["../../src/integrations/host-adapter.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
export { KIMI_CODE_HOST_ADAPTER_ID, KIMI_CODE_HOME_ENV, resolveKimiCodeHome } from "./kimi-code-paths";
|
|
2
|
+
export interface KimiCodeHostInstallResult {
|
|
3
|
+
status: "created" | "updated" | "skipped" | "error";
|
|
4
|
+
filePath?: string;
|
|
5
|
+
message?: string;
|
|
6
|
+
}
|
|
7
|
+
export interface KimiCodeHostMcpTarget {
|
|
8
|
+
path: string;
|
|
9
|
+
installed: boolean;
|
|
10
|
+
scope: "user" | "workspace";
|
|
11
|
+
agentName: string;
|
|
12
|
+
}
|
|
13
|
+
export interface KimiCodeHostStatus {
|
|
14
|
+
hostId: string;
|
|
15
|
+
agent: string;
|
|
16
|
+
detected: boolean;
|
|
17
|
+
installed: boolean;
|
|
18
|
+
mcpInstalled: boolean;
|
|
19
|
+
rulesInstalled: boolean;
|
|
20
|
+
skillInstalled: boolean;
|
|
21
|
+
home: string;
|
|
22
|
+
mcpPath: string;
|
|
23
|
+
rulesPath: string;
|
|
24
|
+
skillPath: string;
|
|
25
|
+
mcpTargets: KimiCodeHostMcpTarget[];
|
|
26
|
+
}
|
|
27
|
+
export declare function getKimiCodeHostStatus(options?: {
|
|
28
|
+
home?: string;
|
|
29
|
+
}): KimiCodeHostStatus;
|
|
30
|
+
export declare function installKimiCodeHost(options?: {
|
|
31
|
+
home?: string;
|
|
32
|
+
}): KimiCodeHostInstallResult;
|
|
33
|
+
export declare function uninstallKimiCodeHost(options?: {
|
|
34
|
+
home?: string;
|
|
35
|
+
}): KimiCodeHostInstallResult;
|
|
36
|
+
//# sourceMappingURL=kimi-code-host-installer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"kimi-code-host-installer.d.ts","sourceRoot":"","sources":["../../src/integrations/kimi-code-host-installer.ts"],"names":[],"mappings":"AAiCA,OAAO,EAAE,yBAAyB,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AAIvG,MAAM,WAAW,yBAAyB;IACxC,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,qBAAqB;IACpC,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,kBAAkB;IACjC,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,qBAAqB,EAAE,CAAC;CACrC;AA6LD,wBAAgB,qBAAqB,CAAC,OAAO,GAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAA;CAAO,GAAG,kBAAkB,CA4DzF;AAED,wBAAgB,mBAAmB,CAAC,OAAO,GAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAA;CAAO,GAAG,yBAAyB,CA6C9F;AAED,wBAAgB,qBAAqB,CAAC,OAAO,GAAE;IAAE,IAAI,CAAC,EAAE,MAAM,CAAA;CAAO,GAAG,yBAAyB,CA6BhG"}
|
|
@@ -0,0 +1,312 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.resolveKimiCodeHome = exports.KIMI_CODE_HOME_ENV = exports.KIMI_CODE_HOST_ADAPTER_ID = void 0;
|
|
4
|
+
exports.getKimiCodeHostStatus = getKimiCodeHostStatus;
|
|
5
|
+
exports.installKimiCodeHost = installKimiCodeHost;
|
|
6
|
+
exports.uninstallKimiCodeHost = uninstallKimiCodeHost;
|
|
7
|
+
/**
|
|
8
|
+
* Kimi Code HostAdapter install slice.
|
|
9
|
+
*
|
|
10
|
+
* Writes user-level MCP (`mcp.json`), Skill, and AGENTS.md under
|
|
11
|
+
* `$KIMI_CODE_HOME` (default `~/.kimi-code`). Isolated
|
|
12
|
+
* `home` / GRAPHFLOW_KIMI_CODE_HOME never touches the real user home.
|
|
13
|
+
*
|
|
14
|
+
* Kimi Code does not expand `${workspaceFolder}`; MCP env omits that placeholder.
|
|
15
|
+
*/
|
|
16
|
+
const node_fs_1 = require("node:fs");
|
|
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 kimi_code_paths_1 = require("./kimi-code-paths");
|
|
21
|
+
const skill_installer_1 = require("./skill-installer");
|
|
22
|
+
var kimi_code_paths_2 = require("./kimi-code-paths");
|
|
23
|
+
Object.defineProperty(exports, "KIMI_CODE_HOST_ADAPTER_ID", { enumerable: true, get: function () { return kimi_code_paths_2.KIMI_CODE_HOST_ADAPTER_ID; } });
|
|
24
|
+
Object.defineProperty(exports, "KIMI_CODE_HOME_ENV", { enumerable: true, get: function () { return kimi_code_paths_2.KIMI_CODE_HOME_ENV; } });
|
|
25
|
+
Object.defineProperty(exports, "resolveKimiCodeHome", { enumerable: true, get: function () { return kimi_code_paths_2.resolveKimiCodeHome; } });
|
|
26
|
+
const KIMI_CODE_PROFILE_IDS = ["kimi-code", "kimi-code-windows"];
|
|
27
|
+
function kimiDisplayName() {
|
|
28
|
+
return (0, host_adapter_1.getHostAdapter)(kimi_code_paths_1.KIMI_CODE_HOST_ADAPTER_ID)?.displayName ?? "Kimi Code";
|
|
29
|
+
}
|
|
30
|
+
function kimiPaths(home) {
|
|
31
|
+
return {
|
|
32
|
+
mcpPath: (0, node_path_1.join)(home, "mcp.json"),
|
|
33
|
+
rulesPath: (0, node_path_1.join)(home, "AGENTS.md"),
|
|
34
|
+
skillPath: (0, node_path_1.join)(home, "skills", "graphflow", "SKILL.md"),
|
|
35
|
+
skillsRoot: (0, node_path_1.join)(home, "skills"),
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
function isMcpServerInstalled(configPath, serverName = "graphflow") {
|
|
39
|
+
if (!(0, node_fs_1.existsSync)(configPath))
|
|
40
|
+
return false;
|
|
41
|
+
try {
|
|
42
|
+
const json = JSON.parse((0, node_fs_1.readFileSync)(configPath, "utf8"));
|
|
43
|
+
return Boolean(json.mcpServers?.[serverName]);
|
|
44
|
+
}
|
|
45
|
+
catch {
|
|
46
|
+
return false;
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
function isInstructionInstalled(filePath) {
|
|
50
|
+
if (!(0, node_fs_1.existsSync)(filePath))
|
|
51
|
+
return false;
|
|
52
|
+
try {
|
|
53
|
+
const content = (0, node_fs_1.readFileSync)(filePath, "utf8");
|
|
54
|
+
return content.includes("GRAPHFLOW:BEGIN") && content.includes("GRAPHFLOW:END");
|
|
55
|
+
}
|
|
56
|
+
catch {
|
|
57
|
+
return false;
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
function copyIfChanged(sourcePath, destDir, destFileName) {
|
|
61
|
+
const destFile = (0, node_path_1.join)(destDir, destFileName);
|
|
62
|
+
const existed = (0, node_fs_1.existsSync)(destFile);
|
|
63
|
+
if (existed && (0, node_fs_1.readFileSync)(destFile, "utf8") === (0, node_fs_1.readFileSync)(sourcePath, "utf8")) {
|
|
64
|
+
return { status: "skipped", filePath: destFile };
|
|
65
|
+
}
|
|
66
|
+
(0, node_fs_1.mkdirSync)(destDir, { recursive: true });
|
|
67
|
+
(0, node_fs_1.copyFileSync)(sourcePath, destFile);
|
|
68
|
+
return { status: existed ? "updated" : "created", filePath: destFile };
|
|
69
|
+
}
|
|
70
|
+
function writeKimiMcp(configPath) {
|
|
71
|
+
try {
|
|
72
|
+
const node = (0, agent_mcp_installer_1.buildMcpServerNode)({ strategy: "npx", omitWorkspaceFolderPlaceholder: true });
|
|
73
|
+
const existed = (0, node_fs_1.existsSync)(configPath);
|
|
74
|
+
let json = {};
|
|
75
|
+
if (existed) {
|
|
76
|
+
try {
|
|
77
|
+
json = JSON.parse((0, node_fs_1.readFileSync)(configPath, "utf8"));
|
|
78
|
+
}
|
|
79
|
+
catch {
|
|
80
|
+
json = {};
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
const servers = json.mcpServers && typeof json.mcpServers === "object"
|
|
84
|
+
? { ...json.mcpServers }
|
|
85
|
+
: {};
|
|
86
|
+
const serverExisted = Boolean(servers.graphflow);
|
|
87
|
+
servers.graphflow = node;
|
|
88
|
+
const next = { ...json, mcpServers: servers };
|
|
89
|
+
const payload = `${JSON.stringify(next, null, 2)}\n`;
|
|
90
|
+
if (existed && (0, node_fs_1.readFileSync)(configPath, "utf8") === payload) {
|
|
91
|
+
return { status: "skipped", filePath: configPath, message: "already up to date" };
|
|
92
|
+
}
|
|
93
|
+
(0, node_fs_1.mkdirSync)((0, node_path_1.dirname)(configPath), { recursive: true });
|
|
94
|
+
(0, node_fs_1.writeFileSync)(configPath, payload, "utf8");
|
|
95
|
+
if (!existed || !serverExisted)
|
|
96
|
+
return { status: "created", filePath: configPath };
|
|
97
|
+
return { status: "updated", filePath: configPath };
|
|
98
|
+
}
|
|
99
|
+
catch (error) {
|
|
100
|
+
return {
|
|
101
|
+
status: "error",
|
|
102
|
+
filePath: configPath,
|
|
103
|
+
message: error instanceof Error ? error.message : String(error),
|
|
104
|
+
};
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
function installKimiSkillAt(skillsRoot) {
|
|
108
|
+
const sourceDir = (0, skill_installer_1.resolveSkillSourcePath)();
|
|
109
|
+
const destFile = (0, node_path_1.join)(skillsRoot, "graphflow", "SKILL.md");
|
|
110
|
+
if (!sourceDir) {
|
|
111
|
+
return { status: "skipped", filePath: destFile, message: "Skill source (SKILL.md) not found" };
|
|
112
|
+
}
|
|
113
|
+
try {
|
|
114
|
+
return copyIfChanged((0, node_path_1.join)(sourceDir, "SKILL.md"), (0, node_path_1.join)(skillsRoot, "graphflow"), "SKILL.md");
|
|
115
|
+
}
|
|
116
|
+
catch (error) {
|
|
117
|
+
return {
|
|
118
|
+
status: "error",
|
|
119
|
+
filePath: destFile,
|
|
120
|
+
message: error instanceof Error ? error.message : String(error),
|
|
121
|
+
};
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
function installKimiAgentsMd(home) {
|
|
125
|
+
const filePath = (0, node_path_1.join)(home, "AGENTS.md");
|
|
126
|
+
try {
|
|
127
|
+
const block = (0, skill_installer_1.buildInstructionBlock)();
|
|
128
|
+
const existed = (0, node_fs_1.existsSync)(filePath);
|
|
129
|
+
if (!existed) {
|
|
130
|
+
(0, node_fs_1.mkdirSync)(home, { recursive: true });
|
|
131
|
+
(0, node_fs_1.writeFileSync)(filePath, `${block}\n`, "utf8");
|
|
132
|
+
return { status: "created", filePath };
|
|
133
|
+
}
|
|
134
|
+
const current = (0, node_fs_1.readFileSync)(filePath, "utf8");
|
|
135
|
+
const begin = "<!-- GRAPHFLOW:BEGIN managed block — edit outside these markers only -->";
|
|
136
|
+
const end = "<!-- GRAPHFLOW:END -->";
|
|
137
|
+
const beginIdx = current.indexOf(begin);
|
|
138
|
+
const endIdx = current.indexOf(end);
|
|
139
|
+
if (beginIdx !== -1 && endIdx !== -1 && endIdx > beginIdx) {
|
|
140
|
+
const next = `${current.slice(0, beginIdx)}${block.trimEnd()}${current.slice(endIdx + end.length)}`;
|
|
141
|
+
if (next === current)
|
|
142
|
+
return { status: "skipped", filePath, message: "already up to date" };
|
|
143
|
+
(0, node_fs_1.writeFileSync)(filePath, next, "utf8");
|
|
144
|
+
return { status: "updated", filePath };
|
|
145
|
+
}
|
|
146
|
+
const separator = current.endsWith("\n") ? "\n" : "\n\n";
|
|
147
|
+
(0, node_fs_1.writeFileSync)(filePath, `${current}${separator}${block}\n`, "utf8");
|
|
148
|
+
return { status: "updated", filePath };
|
|
149
|
+
}
|
|
150
|
+
catch (error) {
|
|
151
|
+
return {
|
|
152
|
+
status: "error",
|
|
153
|
+
filePath,
|
|
154
|
+
message: error instanceof Error ? error.message : String(error),
|
|
155
|
+
};
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
function rollupStatus(results) {
|
|
159
|
+
if (results.some((item) => item.status === "error"))
|
|
160
|
+
return "error";
|
|
161
|
+
if (results.some((item) => item.status === "created" || item.status === "injected"))
|
|
162
|
+
return "created";
|
|
163
|
+
if (results.some((item) => item.status === "updated"))
|
|
164
|
+
return "updated";
|
|
165
|
+
return "skipped";
|
|
166
|
+
}
|
|
167
|
+
function resultFromParts(parts, fallbackPath) {
|
|
168
|
+
const status = rollupStatus(parts);
|
|
169
|
+
const filePath = parts.find((part) => part.filePath)?.filePath ?? fallbackPath;
|
|
170
|
+
const message = parts
|
|
171
|
+
.map((part) => part.message)
|
|
172
|
+
.filter((item) => Boolean(item))
|
|
173
|
+
.join("; ");
|
|
174
|
+
const result = { status, filePath };
|
|
175
|
+
if (message)
|
|
176
|
+
result.message = message;
|
|
177
|
+
return result;
|
|
178
|
+
}
|
|
179
|
+
function detectedKimiProfileIds() {
|
|
180
|
+
const ids = (0, agent_mcp_installer_1.detectInstalledAgents)()
|
|
181
|
+
.map((agent) => agent.id)
|
|
182
|
+
.filter((id) => KIMI_CODE_PROFILE_IDS.includes(id));
|
|
183
|
+
if (ids.length === 0 && (0, node_fs_1.existsSync)((0, kimi_code_paths_1.resolveKimiCodeHome)())) {
|
|
184
|
+
return ["kimi-code"];
|
|
185
|
+
}
|
|
186
|
+
return ids;
|
|
187
|
+
}
|
|
188
|
+
function getKimiCodeHostStatus(options = {}) {
|
|
189
|
+
const isolated = (0, kimi_code_paths_1.isolatedKimiCodeHome)(options.home);
|
|
190
|
+
const home = (0, kimi_code_paths_1.resolveKimiCodeHome)(options.home);
|
|
191
|
+
const paths = kimiPaths(home);
|
|
192
|
+
const agent = kimiDisplayName();
|
|
193
|
+
if (isolated) {
|
|
194
|
+
const detected = (0, node_fs_1.existsSync)(home);
|
|
195
|
+
const mcpInstalled = detected && isMcpServerInstalled(paths.mcpPath);
|
|
196
|
+
const rulesInstalled = isInstructionInstalled(paths.rulesPath);
|
|
197
|
+
const skillInstalled = (0, node_fs_1.existsSync)(paths.skillPath);
|
|
198
|
+
return {
|
|
199
|
+
hostId: kimi_code_paths_1.KIMI_CODE_HOST_ADAPTER_ID,
|
|
200
|
+
agent,
|
|
201
|
+
detected,
|
|
202
|
+
installed: mcpInstalled,
|
|
203
|
+
mcpInstalled,
|
|
204
|
+
rulesInstalled,
|
|
205
|
+
skillInstalled,
|
|
206
|
+
home,
|
|
207
|
+
mcpPath: paths.mcpPath,
|
|
208
|
+
rulesPath: paths.rulesPath,
|
|
209
|
+
skillPath: paths.skillPath,
|
|
210
|
+
mcpTargets: detected
|
|
211
|
+
? [{ path: paths.mcpPath, installed: mcpInstalled, scope: "user", agentName: agent }]
|
|
212
|
+
: [],
|
|
213
|
+
};
|
|
214
|
+
}
|
|
215
|
+
const mcp = (0, agent_mcp_installer_1.getMcpInstallStatus)().filter((item) => item.agentId === "kimi-code" || item.agentId === "kimi-code-windows");
|
|
216
|
+
const skill = (0, skill_installer_1.getAgentSkillStatus)().find((item) => item.agent === "Kimi Code skill");
|
|
217
|
+
const detected = mcp.length > 0 || (0, node_fs_1.existsSync)(home) || detectedKimiProfileIds().length > 0;
|
|
218
|
+
const mcpInstalled = mcp.some((item) => item.installed) || isMcpServerInstalled(paths.mcpPath);
|
|
219
|
+
const skillInstalled = skill?.installed ?? (0, node_fs_1.existsSync)(paths.skillPath);
|
|
220
|
+
const rulesInstalled = isInstructionInstalled(paths.rulesPath);
|
|
221
|
+
return {
|
|
222
|
+
hostId: kimi_code_paths_1.KIMI_CODE_HOST_ADAPTER_ID,
|
|
223
|
+
agent,
|
|
224
|
+
detected,
|
|
225
|
+
installed: mcpInstalled,
|
|
226
|
+
mcpInstalled,
|
|
227
|
+
rulesInstalled,
|
|
228
|
+
skillInstalled,
|
|
229
|
+
home,
|
|
230
|
+
mcpPath: mcp[0]?.configPath ?? paths.mcpPath,
|
|
231
|
+
rulesPath: paths.rulesPath,
|
|
232
|
+
skillPath: skill?.configPath ?? paths.skillPath,
|
|
233
|
+
mcpTargets: mcp.length > 0
|
|
234
|
+
? mcp.map((item) => ({
|
|
235
|
+
path: item.configPath,
|
|
236
|
+
installed: item.installed,
|
|
237
|
+
scope: item.scope,
|
|
238
|
+
agentName: item.agentName,
|
|
239
|
+
}))
|
|
240
|
+
: detected
|
|
241
|
+
? [{ path: paths.mcpPath, installed: mcpInstalled, scope: "user", agentName: agent }]
|
|
242
|
+
: [],
|
|
243
|
+
};
|
|
244
|
+
}
|
|
245
|
+
function installKimiCodeHost(options = {}) {
|
|
246
|
+
const isolated = (0, kimi_code_paths_1.isolatedKimiCodeHome)(options.home);
|
|
247
|
+
const home = (0, kimi_code_paths_1.resolveKimiCodeHome)(options.home);
|
|
248
|
+
const paths = kimiPaths(home);
|
|
249
|
+
if (isolated) {
|
|
250
|
+
if (!(0, node_fs_1.existsSync)(home)) {
|
|
251
|
+
return { status: "skipped", filePath: paths.mcpPath, message: `${kimiDisplayName()} not detected` };
|
|
252
|
+
}
|
|
253
|
+
const mcp = writeKimiMcp(paths.mcpPath);
|
|
254
|
+
const rules = installKimiAgentsMd(home);
|
|
255
|
+
const skill = installKimiSkillAt(paths.skillsRoot);
|
|
256
|
+
return resultFromParts([mcp, rules, skill], paths.mcpPath);
|
|
257
|
+
}
|
|
258
|
+
const ids = detectedKimiProfileIds();
|
|
259
|
+
if (ids.length === 0 && !(0, node_fs_1.existsSync)(home)) {
|
|
260
|
+
return { status: "skipped", filePath: paths.mcpPath, message: `${kimiDisplayName()} not detected` };
|
|
261
|
+
}
|
|
262
|
+
const mcp = (0, agent_mcp_installer_1.installMcpToDetectedAgents)({
|
|
263
|
+
strategy: "npx",
|
|
264
|
+
installScope: "user",
|
|
265
|
+
omitWorkspaceFolderPlaceholder: true,
|
|
266
|
+
agentIdsOverride: ids.length > 0 ? ids : ["kimi-code"],
|
|
267
|
+
});
|
|
268
|
+
const rules = (0, node_fs_1.existsSync)(home)
|
|
269
|
+
? installKimiAgentsMd(home)
|
|
270
|
+
: { status: "skipped", filePath: paths.rulesPath, message: "Kimi Code home not found" };
|
|
271
|
+
const skill = (0, node_fs_1.existsSync)(home)
|
|
272
|
+
? installKimiSkillAt(paths.skillsRoot)
|
|
273
|
+
: { status: "skipped", filePath: paths.skillPath, message: "Kimi Code skill marker not found" };
|
|
274
|
+
return resultFromParts([
|
|
275
|
+
...mcp.map((item) => ({
|
|
276
|
+
status: item.status,
|
|
277
|
+
filePath: item.configPath,
|
|
278
|
+
...(item.message ? { message: item.message } : {}),
|
|
279
|
+
})),
|
|
280
|
+
rules,
|
|
281
|
+
skill,
|
|
282
|
+
], mcp[0]?.configPath ?? paths.mcpPath);
|
|
283
|
+
}
|
|
284
|
+
function uninstallKimiCodeHost(options = {}) {
|
|
285
|
+
const isolated = (0, kimi_code_paths_1.isolatedKimiCodeHome)(options.home);
|
|
286
|
+
const home = (0, kimi_code_paths_1.resolveKimiCodeHome)(options.home);
|
|
287
|
+
const paths = kimiPaths(home);
|
|
288
|
+
if (isolated) {
|
|
289
|
+
if (!(0, node_fs_1.existsSync)(paths.mcpPath) && !(0, node_fs_1.existsSync)(paths.rulesPath) && !(0, node_fs_1.existsSync)(paths.skillPath)) {
|
|
290
|
+
return { status: "skipped", filePath: paths.mcpPath, message: "not found" };
|
|
291
|
+
}
|
|
292
|
+
const mcpRemoved = (0, node_fs_1.existsSync)(paths.mcpPath) ? (0, agent_mcp_installer_1.removeMcpEntry)(paths.mcpPath, "mcpServers", "graphflow") : false;
|
|
293
|
+
const rulesRemoved = (0, skill_installer_1.removeGraphFlowOwnedFile)(paths.rulesPath);
|
|
294
|
+
const skillRemoved = (0, skill_installer_1.removeAgentSkill)(paths.skillsRoot);
|
|
295
|
+
if (!mcpRemoved && !rulesRemoved && !skillRemoved) {
|
|
296
|
+
return { status: "skipped", filePath: paths.mcpPath, message: "no GraphFlow Kimi Code files" };
|
|
297
|
+
}
|
|
298
|
+
return { status: "updated", filePath: paths.mcpPath, message: "removed GraphFlow Kimi Code MCP + AGENTS.md + skill" };
|
|
299
|
+
}
|
|
300
|
+
const mcp = [
|
|
301
|
+
...(0, agent_mcp_installer_1.uninstallMcpFromDetectedAgents)({ agentId: "kimi-code" }),
|
|
302
|
+
...(0, agent_mcp_installer_1.uninstallMcpFromDetectedAgents)({ agentId: "kimi-code-windows" }),
|
|
303
|
+
];
|
|
304
|
+
const rulesRemoved = (0, skill_installer_1.removeGraphFlowOwnedFile)(paths.rulesPath);
|
|
305
|
+
const skillRemoved = (0, skill_installer_1.removeAgentSkill)(paths.skillsRoot);
|
|
306
|
+
const mcpRemoved = mcp.some((item) => item.removed) || ((0, node_fs_1.existsSync)(paths.mcpPath) && (0, agent_mcp_installer_1.removeMcpEntry)(paths.mcpPath, "mcpServers", "graphflow"));
|
|
307
|
+
if (!mcpRemoved && !rulesRemoved && !skillRemoved) {
|
|
308
|
+
return { status: "skipped", filePath: paths.mcpPath, message: "no GraphFlow Kimi Code files" };
|
|
309
|
+
}
|
|
310
|
+
return { status: "updated", filePath: paths.mcpPath, message: "removed GraphFlow Kimi Code MCP + AGENTS.md + skill" };
|
|
311
|
+
}
|
|
312
|
+
//# sourceMappingURL=kimi-code-host-installer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"kimi-code-host-installer.js","sourceRoot":"","sources":["../../src/integrations/kimi-code-host-installer.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/** HostAdapter registry id for Kimi Code CLI. */
|
|
2
|
+
export declare const KIMI_CODE_HOST_ADAPTER_ID = "kimi-code";
|
|
3
|
+
/** Test/isolation override. Prefer this over `$KIMI_CODE_HOME` so tests never touch the real home. */
|
|
4
|
+
export declare const KIMI_CODE_HOME_ENV = "GRAPHFLOW_KIMI_CODE_HOME";
|
|
5
|
+
export declare function isolatedKimiCodeHome(override?: string): string | undefined;
|
|
6
|
+
/** Kimi Code data root: isolated override, else `$KIMI_CODE_HOME`, else `~/.kimi-code`. */
|
|
7
|
+
export declare function resolveKimiCodeHome(override?: string, home?: string): string;
|
|
8
|
+
//# sourceMappingURL=kimi-code-paths.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"kimi-code-paths.d.ts","sourceRoot":"","sources":["../../src/integrations/kimi-code-paths.ts"],"names":[],"mappings":"AAGA,iDAAiD;AACjD,eAAO,MAAM,yBAAyB,cAAc,CAAC;AAErD,sGAAsG;AACtG,eAAO,MAAM,kBAAkB,6BAA6B,CAAC;AAE7D,wBAAgB,oBAAoB,CAAC,QAAQ,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAG1E;AAED,2FAA2F;AAC3F,wBAAgB,mBAAmB,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,IAAI,SAAY,GAAG,MAAM,CAE/E"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.KIMI_CODE_HOME_ENV = exports.KIMI_CODE_HOST_ADAPTER_ID = void 0;
|
|
4
|
+
exports.isolatedKimiCodeHome = isolatedKimiCodeHome;
|
|
5
|
+
exports.resolveKimiCodeHome = resolveKimiCodeHome;
|
|
6
|
+
const node_os_1 = require("node:os");
|
|
7
|
+
const node_path_1 = require("node:path");
|
|
8
|
+
/** HostAdapter registry id for Kimi Code CLI. */
|
|
9
|
+
exports.KIMI_CODE_HOST_ADAPTER_ID = "kimi-code";
|
|
10
|
+
/** Test/isolation override. Prefer this over `$KIMI_CODE_HOME` so tests never touch the real home. */
|
|
11
|
+
exports.KIMI_CODE_HOME_ENV = "GRAPHFLOW_KIMI_CODE_HOME";
|
|
12
|
+
function isolatedKimiCodeHome(override) {
|
|
13
|
+
const explicit = override?.trim() || process.env[exports.KIMI_CODE_HOME_ENV]?.trim();
|
|
14
|
+
return explicit || undefined;
|
|
15
|
+
}
|
|
16
|
+
/** Kimi Code data root: isolated override, else `$KIMI_CODE_HOME`, else `~/.kimi-code`. */
|
|
17
|
+
function resolveKimiCodeHome(override, home = (0, node_os_1.homedir)()) {
|
|
18
|
+
return isolatedKimiCodeHome(override) ?? process.env.KIMI_CODE_HOME?.trim() ?? (0, node_path_1.join)(home, ".kimi-code");
|
|
19
|
+
}
|
|
20
|
+
//# sourceMappingURL=kimi-code-paths.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"kimi-code-paths.js","sourceRoot":"","sources":["../../src/integrations/kimi-code-paths.ts"],"names":[],"mappings":";;;AASA,oDAGC;AAGD,kDAEC;AAjBD,qCAAkC;AAClC,yCAAiC;AAEjC,iDAAiD;AACpC,QAAA,yBAAyB,GAAG,WAAW,CAAC;AAErD,sGAAsG;AACzF,QAAA,kBAAkB,GAAG,0BAA0B,CAAC;AAE7D,SAAgB,oBAAoB,CAAC,QAAiB;IACpD,MAAM,QAAQ,GAAG,QAAQ,EAAE,IAAI,EAAE,IAAI,OAAO,CAAC,GAAG,CAAC,0BAAkB,CAAC,EAAE,IAAI,EAAE,CAAC;IAC7E,OAAO,QAAQ,IAAI,SAAS,CAAC;AAC/B,CAAC;AAED,2FAA2F;AAC3F,SAAgB,mBAAmB,CAAC,QAAiB,EAAE,IAAI,GAAG,IAAA,iBAAO,GAAE;IACrE,OAAO,oBAAoB,CAAC,QAAQ,CAAC,IAAI,OAAO,CAAC,GAAG,CAAC,cAAc,EAAE,IAAI,EAAE,IAAI,IAAA,gBAAI,EAAC,IAAI,EAAE,YAAY,CAAC,CAAC;AAC1G,CAAC"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
export interface ProfileHostSpec {
|
|
2
|
+
/**
|
|
3
|
+
* `agent-mcp-installer` profile ids owned by this host. Includes the WSL
|
|
4
|
+
* `-windows` variant when one exists; unknown ids are ignored by the installer,
|
|
5
|
+
* so listing them is safe on native Windows / Linux.
|
|
6
|
+
*/
|
|
7
|
+
profileIds: readonly string[];
|
|
8
|
+
/** `getAgentSkillTargets().agent` names owned by this host. */
|
|
9
|
+
skillTargets?: readonly string[];
|
|
10
|
+
/** `getAgentInstructionTargets().agent` names owned by this host. */
|
|
11
|
+
instructionTargets?: readonly string[];
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Registry of hosts whose install slice is fully derived from existing
|
|
15
|
+
* profile / skill / instruction targets. Migrated (hand-written) hosts —
|
|
16
|
+
* `deepseek-harness`, `cursor`, `claude-code`, `kimi-code` — are intentionally
|
|
17
|
+
* absent: they have host-specific behaviour (hooks, overlays, placeholder rules).
|
|
18
|
+
*/
|
|
19
|
+
export declare const PROFILE_HOST_SPECS: Readonly<Record<string, ProfileHostSpec>>;
|
|
20
|
+
export declare const PROFILE_HOST_IDS: string[];
|
|
21
|
+
export type ProfileHostInstallStatus = "created" | "updated" | "skipped" | "error";
|
|
22
|
+
export interface ProfileHostInstallResult {
|
|
23
|
+
status: ProfileHostInstallStatus;
|
|
24
|
+
filePath?: string;
|
|
25
|
+
message?: string;
|
|
26
|
+
}
|
|
27
|
+
export interface ProfileHostMcpTarget {
|
|
28
|
+
path: string;
|
|
29
|
+
installed: boolean;
|
|
30
|
+
scope: "user" | "workspace";
|
|
31
|
+
agentName: string;
|
|
32
|
+
}
|
|
33
|
+
export interface ProfileHostStatus {
|
|
34
|
+
hostId: string;
|
|
35
|
+
agent: string;
|
|
36
|
+
detected: boolean;
|
|
37
|
+
installed: boolean;
|
|
38
|
+
mcpInstalled: boolean;
|
|
39
|
+
skillInstalled?: boolean;
|
|
40
|
+
rulesInstalled?: boolean;
|
|
41
|
+
mcpPath?: string;
|
|
42
|
+
skillPath?: string;
|
|
43
|
+
rulesPath?: string;
|
|
44
|
+
mcpTargets: ProfileHostMcpTarget[];
|
|
45
|
+
}
|
|
46
|
+
export declare function getProfileHostSpec(hostId: string): ProfileHostSpec | undefined;
|
|
47
|
+
export declare function isProfileHost(hostId: string): boolean;
|
|
48
|
+
export interface ProfileHostInstallOptions {
|
|
49
|
+
/** Reserved for symmetry with the hand-written slices; profile hosts resolve paths from the host registry. */
|
|
50
|
+
home?: string;
|
|
51
|
+
/** Test hook: override the MCP profile ids (empty array = no agents, no writes). */
|
|
52
|
+
agentIdsOverride?: readonly string[];
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Install MCP + Skill + instruction block for one profile-backed host.
|
|
56
|
+
* Returns `undefined` when the host has no profile spec (caller falls back).
|
|
57
|
+
*/
|
|
58
|
+
export declare function installProfileHost(hostId: string, options?: ProfileHostInstallOptions): ProfileHostInstallResult | undefined;
|
|
59
|
+
/** Remove MCP + Skill + instruction block for one profile-backed host. */
|
|
60
|
+
export declare function uninstallProfileHost(hostId: string, _options?: ProfileHostInstallOptions): ProfileHostInstallResult | undefined;
|
|
61
|
+
/** Detect / status snapshot for one profile-backed host. */
|
|
62
|
+
export declare function getProfileHostStatus(hostId: string, _options?: ProfileHostInstallOptions): ProfileHostStatus | undefined;
|
|
63
|
+
//# sourceMappingURL=profile-host-installer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"profile-host-installer.d.ts","sourceRoot":"","sources":["../../src/integrations/profile-host-installer.ts"],"names":[],"mappings":"AAyCA,MAAM,WAAW,eAAe;IAC9B;;;;OAIG;IACH,UAAU,EAAE,SAAS,MAAM,EAAE,CAAC;IAC9B,+DAA+D;IAC/D,YAAY,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IACjC,qEAAqE;IACrE,kBAAkB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CACxC;AAED;;;;;GAKG;AACH,eAAO,MAAM,kBAAkB,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CA4BxE,CAAC;AAEF,eAAO,MAAM,gBAAgB,UAAkC,CAAC;AAEhE,MAAM,MAAM,wBAAwB,GAAG,SAAS,GAAG,SAAS,GAAG,SAAS,GAAG,OAAO,CAAC;AAEnF,MAAM,WAAW,wBAAwB;IACvC,MAAM,EAAE,wBAAwB,CAAC;IACjC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,oBAAoB;IACnC,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,iBAAiB;IAChC,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,CAAC,EAAE,OAAO,CAAC;IACzB,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,oBAAoB,EAAE,CAAC;CACpC;AAED,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,MAAM,GAAG,eAAe,GAAG,SAAS,CAE9E;AAED,wBAAgB,aAAa,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAErD;AA2DD,MAAM,WAAW,yBAAyB;IACxC,8GAA8G;IAC9G,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,oFAAoF;IACpF,gBAAgB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CACtC;AAWD;;;GAGG;AACH,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,MAAM,EACd,OAAO,GAAE,yBAA8B,GACtC,wBAAwB,GAAG,SAAS,CAetC;AAED,0EAA0E;AAC1E,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,MAAM,EACd,QAAQ,GAAE,yBAA8B,GACvC,wBAAwB,GAAG,SAAS,CAiBtC;AAED,4DAA4D;AAC5D,wBAAgB,oBAAoB,CAClC,MAAM,EAAE,MAAM,EACd,QAAQ,GAAE,yBAA8B,GACvC,iBAAiB,GAAG,SAAS,CAmD/B"}
|