autodev-cli 1.4.32 → 1.4.34
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/out/agentBackup/export.js +69 -2
- package/out/agentBackup/export.js.map +1 -1
- package/out/agentBackup/import.js +1 -7
- package/out/agentBackup/import.js.map +1 -1
- package/out/agentBackup/layout.d.ts +9 -0
- package/out/agentBackup/layout.js +10 -1
- package/out/agentBackup/layout.js.map +1 -1
- package/out/commands/start.js +11 -0
- package/out/commands/start.js.map +1 -1
- package/out/core/commands.d.ts +4 -0
- package/out/core/commands.js +26 -0
- package/out/core/commands.js.map +1 -0
- package/out/core/pathSafe.d.ts +9 -0
- package/out/core/pathSafe.js +97 -0
- package/out/core/pathSafe.js.map +1 -0
- package/out/core/projectMcp.d.ts +4 -0
- package/out/core/projectMcp.js +42 -1
- package/out/core/projectMcp.js.map +1 -1
- package/out/emailPoller.d.ts +1 -1
- package/out/emailPoller.js +4 -1
- package/out/emailPoller.js.map +1 -1
- package/out/git/gitService.js +9 -1
- package/out/git/gitService.js.map +1 -1
- package/out/rateLimit.js +6 -1
- package/out/rateLimit.js.map +1 -1
- package/out/taskLoop.d.ts +7 -0
- package/out/taskLoop.js +155 -19
- package/out/taskLoop.js.map +1 -1
- package/out/webSocketPoller.d.ts +1 -1
- package/out/webSocketPoller.js +308 -260
- package/out/webSocketPoller.js.map +1 -1
- package/out/webhookPoller.d.ts +1 -1
- package/out/webhookPoller.js +21 -5
- package/out/webhookPoller.js.map +1 -1
- package/package.json +1 -1
|
@@ -34,11 +34,71 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
34
34
|
})();
|
|
35
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
36
|
exports.createAgentBackup = createAgentBackup;
|
|
37
|
+
const fs = __importStar(require("fs"));
|
|
37
38
|
const path = __importStar(require("path"));
|
|
38
39
|
const archive_1 = require("./archive");
|
|
39
40
|
const layout_1 = require("./layout");
|
|
40
41
|
const sessionProviders_1 = require("./sessionProviders");
|
|
41
42
|
const manifest_1 = require("./manifest");
|
|
43
|
+
/**
|
|
44
|
+
* Add the workspace `.autodev/` tree to the archive, but with `settings.json`
|
|
45
|
+
* SANITIZED — the raw file holds the live WS auth token + endpoint (IDENTITY_KEYS)
|
|
46
|
+
* written at connect time, and a backup ZIP is uploaded off-VM and served by the
|
|
47
|
+
* download endpoint. Shipping the token would let anyone who fetches the export
|
|
48
|
+
* connect AS the agent. Every other `.autodev` file is added verbatim so
|
|
49
|
+
* workspace-state portability is preserved. Symlinks are skipped (walk uses
|
|
50
|
+
* isFile), which also avoids following a link out of the tree.
|
|
51
|
+
*/
|
|
52
|
+
function addSanitizedAutodev(root, archive) {
|
|
53
|
+
const srcDir = path.join(root, '.autodev');
|
|
54
|
+
if (!fs.existsSync(srcDir)) {
|
|
55
|
+
return;
|
|
56
|
+
}
|
|
57
|
+
const archiveBase = `${layout_1.ARCHIVE_PATHS.workspace}/.autodev`;
|
|
58
|
+
const walk = (absDir, relDir) => {
|
|
59
|
+
let entries;
|
|
60
|
+
try {
|
|
61
|
+
entries = fs.readdirSync(absDir, { withFileTypes: true });
|
|
62
|
+
}
|
|
63
|
+
catch {
|
|
64
|
+
return;
|
|
65
|
+
}
|
|
66
|
+
for (const e of entries) {
|
|
67
|
+
const abs = path.join(absDir, e.name);
|
|
68
|
+
const rel = relDir ? `${relDir}/${e.name}` : e.name;
|
|
69
|
+
if (e.isDirectory()) {
|
|
70
|
+
walk(abs, rel);
|
|
71
|
+
continue;
|
|
72
|
+
}
|
|
73
|
+
if (!e.isFile()) {
|
|
74
|
+
continue;
|
|
75
|
+
}
|
|
76
|
+
if (rel === 'settings.json') {
|
|
77
|
+
archive.addBuffer(`${archiveBase}/settings.json`, sanitizeSettings(abs));
|
|
78
|
+
}
|
|
79
|
+
else {
|
|
80
|
+
archive.addFile(abs, `${archiveBase}/${rel}`);
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
};
|
|
84
|
+
walk(srcDir, '');
|
|
85
|
+
}
|
|
86
|
+
/** Read settings.json and return it with all IDENTITY_KEYS stripped. Fails
|
|
87
|
+
* closed: an unreadable/malformed file yields an empty object rather than
|
|
88
|
+
* shipping the raw (token-bearing) contents. */
|
|
89
|
+
function sanitizeSettings(absPath) {
|
|
90
|
+
let obj = {};
|
|
91
|
+
try {
|
|
92
|
+
obj = JSON.parse(fs.readFileSync(absPath, 'utf8'));
|
|
93
|
+
}
|
|
94
|
+
catch {
|
|
95
|
+
obj = {};
|
|
96
|
+
}
|
|
97
|
+
for (const k of layout_1.IDENTITY_KEYS) {
|
|
98
|
+
delete obj[k];
|
|
99
|
+
}
|
|
100
|
+
return Buffer.from(JSON.stringify(obj, null, 2) + '\n', 'utf8');
|
|
101
|
+
}
|
|
42
102
|
/**
|
|
43
103
|
* Pure (vscode-free) core: build and write the agent backup ZIP.
|
|
44
104
|
* Called both by the VS Code command (with a dialog-chosen path) and directly
|
|
@@ -46,9 +106,16 @@ const manifest_1 = require("./manifest");
|
|
|
46
106
|
*/
|
|
47
107
|
async function createAgentBackup(root, destPath) {
|
|
48
108
|
const archive = archive_1.AdmZipArchive.create();
|
|
49
|
-
// Workspace state directories (single source of truth in layout).
|
|
109
|
+
// Workspace state directories (single source of truth in layout). The
|
|
110
|
+
// `.autodev` tree is added via a sanitizing walk that strips the agent's WS
|
|
111
|
+
// auth token from settings.json before it can leave the VM.
|
|
50
112
|
for (const rel of layout_1.WORKSPACE_DIRS) {
|
|
51
|
-
|
|
113
|
+
if (rel === '.autodev') {
|
|
114
|
+
addSanitizedAutodev(root, archive);
|
|
115
|
+
}
|
|
116
|
+
else {
|
|
117
|
+
archive.addDir(path.join(root, rel), `${layout_1.ARCHIVE_PATHS.workspace}/${rel}`);
|
|
118
|
+
}
|
|
52
119
|
}
|
|
53
120
|
// Root-level agent docs.
|
|
54
121
|
for (const f of layout_1.ROOT_DOCS) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"export.js","sourceRoot":"","sources":["../../src/agentBackup/export.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"export.js","sourceRoot":"","sources":["../../src/agentBackup/export.ts"],"names":[],"mappings":"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"}
|
|
@@ -40,12 +40,6 @@ const archive_1 = require("./archive");
|
|
|
40
40
|
const layout_1 = require("./layout");
|
|
41
41
|
const sessionProviders_1 = require("./sessionProviders");
|
|
42
42
|
const manifest_1 = require("./manifest");
|
|
43
|
-
/**
|
|
44
|
-
* Identity/connection settings that belong to the DESTINATION agent, not the
|
|
45
|
-
* backed-up one. Restoring a backup must never overwrite these, or the restored
|
|
46
|
-
* agent would connect as the source agent (identity hijack).
|
|
47
|
-
*/
|
|
48
|
-
const IDENTITY_KEYS = ['wsUrl', 'serverBaseUrl', 'serverApiKey', 'webhookSlug', 'agentId'];
|
|
49
43
|
/**
|
|
50
44
|
* Restore an agent backup ZIP into a destination folder and wire up its
|
|
51
45
|
* session state so it resumes there. Mirrors {@link './export'} using the
|
|
@@ -69,7 +63,7 @@ async function restoreAgentBackup(zipPath, destRoot) {
|
|
|
69
63
|
try {
|
|
70
64
|
if (fs.existsSync(destSettingsPath)) {
|
|
71
65
|
const cur = JSON.parse(fs.readFileSync(destSettingsPath, 'utf8'));
|
|
72
|
-
for (const k of IDENTITY_KEYS) {
|
|
66
|
+
for (const k of layout_1.IDENTITY_KEYS) {
|
|
73
67
|
if (cur[k] !== undefined) {
|
|
74
68
|
preservedIdentity[k] = cur[k];
|
|
75
69
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"import.js","sourceRoot":"","sources":["../../src/agentBackup/import.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"import.js","sourceRoot":"","sources":["../../src/agentBackup/import.ts"],"names":[],"mappings":"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"}
|
|
@@ -20,6 +20,15 @@ export declare const ROOT_DOCS: readonly string[];
|
|
|
20
20
|
* by both export and import (DRY).
|
|
21
21
|
*/
|
|
22
22
|
export declare const WORKSPACE_DIRS: readonly string[];
|
|
23
|
+
/**
|
|
24
|
+
* Identity/connection settings in `.autodev/settings.json` that are scoped to a
|
|
25
|
+
* specific agent and MUST NOT travel in a backup: they are the live WS auth
|
|
26
|
+
* token + endpoint. Export strips them from the shipped settings.json (a backup
|
|
27
|
+
* ZIP is uploaded off-VM), and import preserves the destination agent's own
|
|
28
|
+
* values so a restore never hijacks its identity. Single source of truth shared
|
|
29
|
+
* by both sides (DRY).
|
|
30
|
+
*/
|
|
31
|
+
export declare const IDENTITY_KEYS: readonly ["wsUrl", "serverBaseUrl", "serverApiKey", "webhookSlug", "agentId"];
|
|
23
32
|
/** Normalise a filesystem path for comparison (case-insensitive, slash-form). */
|
|
24
33
|
export declare function normalizePath(p: string): string;
|
|
25
34
|
/** Root of the Copilot CLI store. */
|
|
@@ -33,7 +33,7 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
33
33
|
};
|
|
34
34
|
})();
|
|
35
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
-
exports.WORKSPACE_DIRS = exports.ROOT_DOCS = exports.ARCHIVE_PATHS = exports.TOP_FOLDER = void 0;
|
|
36
|
+
exports.IDENTITY_KEYS = exports.WORKSPACE_DIRS = exports.ROOT_DOCS = exports.ARCHIVE_PATHS = exports.TOP_FOLDER = void 0;
|
|
37
37
|
exports.sessionsPath = sessionsPath;
|
|
38
38
|
exports.normalizePath = normalizePath;
|
|
39
39
|
exports.copilotDir = copilotDir;
|
|
@@ -73,6 +73,15 @@ exports.WORKSPACE_DIRS = [
|
|
|
73
73
|
path.posix.join('media', 'profile'),
|
|
74
74
|
path.posix.join('media', 'skills'),
|
|
75
75
|
];
|
|
76
|
+
/**
|
|
77
|
+
* Identity/connection settings in `.autodev/settings.json` that are scoped to a
|
|
78
|
+
* specific agent and MUST NOT travel in a backup: they are the live WS auth
|
|
79
|
+
* token + endpoint. Export strips them from the shipped settings.json (a backup
|
|
80
|
+
* ZIP is uploaded off-VM), and import preserves the destination agent's own
|
|
81
|
+
* values so a restore never hijacks its identity. Single source of truth shared
|
|
82
|
+
* by both sides (DRY).
|
|
83
|
+
*/
|
|
84
|
+
exports.IDENTITY_KEYS = ['wsUrl', 'serverBaseUrl', 'serverApiKey', 'webhookSlug', 'agentId'];
|
|
76
85
|
/** Normalise a filesystem path for comparison (case-insensitive, slash-form). */
|
|
77
86
|
function normalizePath(p) {
|
|
78
87
|
return p.replace(/\\/g, '/').replace(/\/+$/, '').toLowerCase();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"layout.js","sourceRoot":"","sources":["../../src/agentBackup/layout.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAeA,oCAEC;
|
|
1
|
+
{"version":3,"file":"layout.js","sourceRoot":"","sources":["../../src/agentBackup/layout.ts"],"names":[],"mappings":"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"}
|
package/out/commands/start.js
CHANGED
|
@@ -97,6 +97,17 @@ function startCommand(program) {
|
|
|
97
97
|
sdk_1.AutoDev.loop.stop();
|
|
98
98
|
setTimeout(() => process.exit(0), 1500).unref();
|
|
99
99
|
});
|
|
100
|
+
// Backstop: an unexpected throw or rejection anywhere in the loop (a
|
|
101
|
+
// hostile WS frame, an I/O error) must not take the whole agent offline
|
|
102
|
+
// requiring a manual respawn. Log and keep the process alive so it stays
|
|
103
|
+
// online and serving. The per-frame try/catch in webSocketPoller is the
|
|
104
|
+
// primary guard; these are the last line of defence.
|
|
105
|
+
process.on('uncaughtException', (err) => {
|
|
106
|
+
logger_1.log.error(`Uncaught exception (kept alive): ${err instanceof Error ? err.stack ?? err.message : String(err)}`);
|
|
107
|
+
});
|
|
108
|
+
process.on('unhandledRejection', (reason) => {
|
|
109
|
+
logger_1.log.error(`Unhandled rejection (kept alive): ${reason instanceof Error ? reason.stack ?? reason.message : String(reason)}`);
|
|
110
|
+
});
|
|
100
111
|
try {
|
|
101
112
|
const options = {
|
|
102
113
|
cwd,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"start.js","sourceRoot":"","sources":["../../src/commands/start.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAQA,
|
|
1
|
+
{"version":3,"file":"start.js","sourceRoot":"","sources":["../../src/commands/start.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
/** Exact control commands recognized by TaskLoop._handleCommand. */
|
|
2
|
+
export declare const KNOWN_SLASH_COMMANDS: ReadonlySet<string>;
|
|
3
|
+
/** True only when `text` is exactly one of the known control commands. */
|
|
4
|
+
export declare function isKnownSlashCommand(text: string): boolean;
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// ---------------------------------------------------------------------------
|
|
3
|
+
// Slash-command whitelist shared by every inbound transport (WS / HTTP webhook
|
|
4
|
+
// / Discord). Only text that EXACTLY matches a known control command may be
|
|
5
|
+
// diverted away from the TODO queue to _handleCommand. Any other slash-prefixed
|
|
6
|
+
// text (e.g. "/login is broken", "/etc/nginx needs a tweak") is an ordinary
|
|
7
|
+
// task and must still be appended, never silently dropped.
|
|
8
|
+
// ---------------------------------------------------------------------------
|
|
9
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
10
|
+
exports.KNOWN_SLASH_COMMANDS = void 0;
|
|
11
|
+
exports.isKnownSlashCommand = isKnownSlashCommand;
|
|
12
|
+
/** Exact control commands recognized by TaskLoop._handleCommand. */
|
|
13
|
+
exports.KNOWN_SLASH_COMMANDS = new Set([
|
|
14
|
+
'/restart',
|
|
15
|
+
'/clear',
|
|
16
|
+
'/retry',
|
|
17
|
+
'/resume',
|
|
18
|
+
]);
|
|
19
|
+
/** True only when `text` is exactly one of the known control commands. */
|
|
20
|
+
function isKnownSlashCommand(text) {
|
|
21
|
+
if (typeof text !== 'string') {
|
|
22
|
+
return false;
|
|
23
|
+
}
|
|
24
|
+
return exports.KNOWN_SLASH_COMMANDS.has(text.trim().toLowerCase());
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=commands.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"commands.js","sourceRoot":"","sources":["../../src/core/commands.ts"],"names":[],"mappings":";AAAA,8EAA8E;AAC9E,+EAA+E;AAC/E,4EAA4E;AAC5E,gFAAgF;AAChF,4EAA4E;AAC5E,2DAA2D;AAC3D,8EAA8E;;;AAW9E,kDAGC;AAZD,oEAAoE;AACvD,QAAA,oBAAoB,GAAwB,IAAI,GAAG,CAAC;IAC/D,UAAU;IACV,QAAQ;IACR,QAAQ;IACR,SAAS;CACV,CAAC,CAAC;AAEH,0EAA0E;AAC1E,SAAgB,mBAAmB,CAAC,IAAY;IAC9C,IAAI,OAAO,IAAI,KAAK,QAAQ,EAAE,CAAC;QAAC,OAAO,KAAK,CAAC;IAAC,CAAC;IAC/C,OAAO,4BAAoB,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC;AAC7D,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Resolve `rel` against `root` and return the absolute path ONLY when it is
|
|
3
|
+
* contained within `root` both lexically AND after resolving symlinks. Returns
|
|
4
|
+
* null when the target escapes the workspace (including via a symlink that
|
|
5
|
+
* lexically lives inside it).
|
|
6
|
+
*
|
|
7
|
+
* @param allowRoot when false, the root itself is rejected (used for mutations).
|
|
8
|
+
*/
|
|
9
|
+
export declare function resolveWithinRoot(root: string, rel: string, allowRoot: boolean): string | null;
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.resolveWithinRoot = resolveWithinRoot;
|
|
37
|
+
const fs = __importStar(require("fs"));
|
|
38
|
+
const path = __importStar(require("path"));
|
|
39
|
+
// ---------------------------------------------------------------------------
|
|
40
|
+
// pathSafe — workspace containment that also defeats symlink escapes.
|
|
41
|
+
//
|
|
42
|
+
// A purely lexical check (path.resolve + startsWith(root)) is not enough: a
|
|
43
|
+
// symlink that lives inside the workspace but points outside it (common after a
|
|
44
|
+
// git checkout, or created by the agent itself) passes the lexical test yet
|
|
45
|
+
// resolves to an arbitrary host file. resolveWithinRoot canonicalizes with
|
|
46
|
+
// fs.realpathSync — realpath'ing the nearest existing ancestor for create ops,
|
|
47
|
+
// whose leaf does not exist yet — and re-asserts containment against the real
|
|
48
|
+
// root before returning the path.
|
|
49
|
+
// ---------------------------------------------------------------------------
|
|
50
|
+
/**
|
|
51
|
+
* Resolve `rel` against `root` and return the absolute path ONLY when it is
|
|
52
|
+
* contained within `root` both lexically AND after resolving symlinks. Returns
|
|
53
|
+
* null when the target escapes the workspace (including via a symlink that
|
|
54
|
+
* lexically lives inside it).
|
|
55
|
+
*
|
|
56
|
+
* @param allowRoot when false, the root itself is rejected (used for mutations).
|
|
57
|
+
*/
|
|
58
|
+
function resolveWithinRoot(root, rel, allowRoot) {
|
|
59
|
+
const resolved = path.resolve(root, rel);
|
|
60
|
+
let realRoot;
|
|
61
|
+
try {
|
|
62
|
+
realRoot = fs.realpathSync(root);
|
|
63
|
+
}
|
|
64
|
+
catch {
|
|
65
|
+
realRoot = root;
|
|
66
|
+
}
|
|
67
|
+
if (resolved === root) {
|
|
68
|
+
return allowRoot ? resolved : null;
|
|
69
|
+
}
|
|
70
|
+
// Lexical containment first (cheap, and rejects "../" traversal).
|
|
71
|
+
if (!resolved.startsWith(root + path.sep)) {
|
|
72
|
+
return null;
|
|
73
|
+
}
|
|
74
|
+
// Canonicalize the deepest existing ancestor — the leaf may not exist for a
|
|
75
|
+
// create op (write/mkdir/rename target). Any symlink along the way is
|
|
76
|
+
// resolved, so a link that points outside realRoot is rejected here.
|
|
77
|
+
let probe = resolved;
|
|
78
|
+
while (!fs.existsSync(probe)) {
|
|
79
|
+
const parent = path.dirname(probe);
|
|
80
|
+
if (parent === probe) {
|
|
81
|
+
return null;
|
|
82
|
+
}
|
|
83
|
+
probe = parent;
|
|
84
|
+
}
|
|
85
|
+
let realProbe;
|
|
86
|
+
try {
|
|
87
|
+
realProbe = fs.realpathSync(probe);
|
|
88
|
+
}
|
|
89
|
+
catch {
|
|
90
|
+
return null;
|
|
91
|
+
}
|
|
92
|
+
if (realProbe !== realRoot && !realProbe.startsWith(realRoot + path.sep)) {
|
|
93
|
+
return null;
|
|
94
|
+
}
|
|
95
|
+
return resolved;
|
|
96
|
+
}
|
|
97
|
+
//# sourceMappingURL=pathSafe.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"pathSafe.js","sourceRoot":"","sources":["../../src/core/pathSafe.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAuBA,8CAwBC;AA/CD,uCAAyB;AACzB,2CAA6B;AAE7B,8EAA8E;AAC9E,sEAAsE;AACtE,EAAE;AACF,4EAA4E;AAC5E,gFAAgF;AAChF,4EAA4E;AAC5E,2EAA2E;AAC3E,+EAA+E;AAC/E,8EAA8E;AAC9E,kCAAkC;AAClC,8EAA8E;AAE9E;;;;;;;GAOG;AACH,SAAgB,iBAAiB,CAAC,IAAY,EAAE,GAAW,EAAE,SAAkB;IAC7E,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IAEzC,IAAI,QAAgB,CAAC;IACrB,IAAI,CAAC;QAAC,QAAQ,GAAG,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;IAAC,CAAC;IAAC,MAAM,CAAC;QAAC,QAAQ,GAAG,IAAI,CAAC;IAAC,CAAC;IAEpE,IAAI,QAAQ,KAAK,IAAI,EAAE,CAAC;QAAC,OAAO,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC;IAAC,CAAC;IAC9D,kEAAkE;IAClE,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QAAC,OAAO,IAAI,CAAC;IAAC,CAAC;IAE3D,4EAA4E;IAC5E,sEAAsE;IACtE,qEAAqE;IACrE,IAAI,KAAK,GAAG,QAAQ,CAAC;IACrB,OAAO,CAAC,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,EAAE,CAAC;QAC7B,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;QACnC,IAAI,MAAM,KAAK,KAAK,EAAE,CAAC;YAAC,OAAO,IAAI,CAAC;QAAC,CAAC;QACtC,KAAK,GAAG,MAAM,CAAC;IACjB,CAAC;IACD,IAAI,SAAiB,CAAC;IACtB,IAAI,CAAC;QAAC,SAAS,GAAG,EAAE,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;IAAC,CAAC;IAAC,MAAM,CAAC;QAAC,OAAO,IAAI,CAAC;IAAC,CAAC;IAClE,IAAI,SAAS,KAAK,QAAQ,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,QAAQ,GAAG,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC;QAAC,OAAO,IAAI,CAAC;IAAC,CAAC;IAE1F,OAAO,QAAQ,CAAC;AAClB,CAAC"}
|
package/out/core/projectMcp.d.ts
CHANGED
|
@@ -30,6 +30,10 @@ export declare function isRemoteMcp(e: McpJsonEntry): boolean;
|
|
|
30
30
|
* command-execution primitives. Remote (url) entries are validated separately.
|
|
31
31
|
*/
|
|
32
32
|
export declare function isSafeStdioMcpCommand(command: unknown): command is string;
|
|
33
|
+
/** Reject an stdio MCP `args` array that carries an interpreter code-exec flag. */
|
|
34
|
+
export declare function isSafeStdioMcpArgs(args: unknown): boolean;
|
|
35
|
+
/** Reject an stdio MCP `env` block that sets a code-injection / preload var. */
|
|
36
|
+
export declare function isSafeStdioMcpEnv(env: unknown): boolean;
|
|
33
37
|
/**
|
|
34
38
|
* Filter an untrusted `mcpServers` map down to entries that are safe to write
|
|
35
39
|
* and (re)spawn. Remote entries must have an http/https url; stdio entries must
|
package/out/core/projectMcp.js
CHANGED
|
@@ -35,6 +35,8 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
35
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
36
|
exports.isRemoteMcp = isRemoteMcp;
|
|
37
37
|
exports.isSafeStdioMcpCommand = isSafeStdioMcpCommand;
|
|
38
|
+
exports.isSafeStdioMcpArgs = isSafeStdioMcpArgs;
|
|
39
|
+
exports.isSafeStdioMcpEnv = isSafeStdioMcpEnv;
|
|
38
40
|
exports.sanitizeRemoteMcpEntries = sanitizeRemoteMcpEntries;
|
|
39
41
|
exports.loadProjectUserMcp = loadProjectUserMcp;
|
|
40
42
|
exports.loadProjectAllMcp = loadProjectAllMcp;
|
|
@@ -78,6 +80,45 @@ function isSafeStdioMcpCommand(command) {
|
|
|
78
80
|
return false;
|
|
79
81
|
return true;
|
|
80
82
|
}
|
|
83
|
+
// Interpreter flags that turn an otherwise-legitimate launcher (node/npx/uvx/…)
|
|
84
|
+
// into a direct arbitrary-code primitive: `node -e "require('child_process')…"`,
|
|
85
|
+
// `python -c …`, `node --require=/tmp/evil.js`, `deno --import …`. These never
|
|
86
|
+
// appear in a real MCP server invocation, so reject any arg equal to or
|
|
87
|
+
// prefixing one of them.
|
|
88
|
+
const _MCP_FORBIDDEN_ARG = /^\s*(-e|--eval|-c|--command|-p|--print|--require|--import|--experimental-loader|--loader)(=|$)/i;
|
|
89
|
+
// Env vars that inject code / preload a library into the spawned interpreter
|
|
90
|
+
// regardless of its args (NODE_OPTIONS=--require=…, LD_PRELOAD=…). Never valid
|
|
91
|
+
// for an MCP server env block.
|
|
92
|
+
const _MCP_FORBIDDEN_ENV_KEYS = new Set([
|
|
93
|
+
'NODE_OPTIONS', 'PYTHONSTARTUP', 'LD_PRELOAD', 'DYLD_INSERT_LIBRARIES',
|
|
94
|
+
'BUN_INSPECT', 'PERL5OPT', 'RUBYOPT',
|
|
95
|
+
]);
|
|
96
|
+
/** Reject an stdio MCP `args` array that carries an interpreter code-exec flag. */
|
|
97
|
+
function isSafeStdioMcpArgs(args) {
|
|
98
|
+
if (args === undefined)
|
|
99
|
+
return true;
|
|
100
|
+
if (!Array.isArray(args))
|
|
101
|
+
return false;
|
|
102
|
+
for (const a of args) {
|
|
103
|
+
if (typeof a !== 'string')
|
|
104
|
+
return false;
|
|
105
|
+
if (_MCP_FORBIDDEN_ARG.test(a))
|
|
106
|
+
return false;
|
|
107
|
+
}
|
|
108
|
+
return true;
|
|
109
|
+
}
|
|
110
|
+
/** Reject an stdio MCP `env` block that sets a code-injection / preload var. */
|
|
111
|
+
function isSafeStdioMcpEnv(env) {
|
|
112
|
+
if (env === undefined)
|
|
113
|
+
return true;
|
|
114
|
+
if (typeof env !== 'object' || env === null || Array.isArray(env))
|
|
115
|
+
return false;
|
|
116
|
+
for (const k of Object.keys(env)) {
|
|
117
|
+
if (_MCP_FORBIDDEN_ENV_KEYS.has(k.trim().toUpperCase()))
|
|
118
|
+
return false;
|
|
119
|
+
}
|
|
120
|
+
return true;
|
|
121
|
+
}
|
|
81
122
|
/**
|
|
82
123
|
* Filter an untrusted `mcpServers` map down to entries that are safe to write
|
|
83
124
|
* and (re)spawn. Remote entries must have an http/https url; stdio entries must
|
|
@@ -104,7 +145,7 @@ function sanitizeRemoteMcpEntries(entries) {
|
|
|
104
145
|
}
|
|
105
146
|
continue;
|
|
106
147
|
}
|
|
107
|
-
if (isSafeStdioMcpCommand(e.command)) {
|
|
148
|
+
if (isSafeStdioMcpCommand(e.command) && isSafeStdioMcpArgs(e.args) && isSafeStdioMcpEnv(e.env)) {
|
|
108
149
|
safe[name] = e;
|
|
109
150
|
}
|
|
110
151
|
else {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"projectMcp.js","sourceRoot":"","sources":["../../src/core/projectMcp.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAqCA,kCAEC;AAkBD,sDAUC;AASD,
|
|
1
|
+
{"version":3,"file":"projectMcp.js","sourceRoot":"","sources":["../../src/core/projectMcp.ts"],"names":[],"mappings":"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"}
|
package/out/emailPoller.d.ts
CHANGED
|
@@ -4,7 +4,7 @@ export interface EmailPollerOptions {
|
|
|
4
4
|
secure: boolean;
|
|
5
5
|
user: string;
|
|
6
6
|
pass: string;
|
|
7
|
-
/** Empty array = allow
|
|
7
|
+
/** Sender allowlist (regex/substring patterns). Empty array = allow NOBODY. */
|
|
8
8
|
allowedSenders: string[];
|
|
9
9
|
/** Verify TLS cert. Default true. */
|
|
10
10
|
rejectUnauthorized?: boolean;
|
package/out/emailPoller.js
CHANGED
|
@@ -175,8 +175,11 @@ class EmailTaskPoller {
|
|
|
175
175
|
return this.connecting;
|
|
176
176
|
}
|
|
177
177
|
_senderAllowed(address) {
|
|
178
|
+
// Fail closed: an empty allowlist allows NOBODY. Inbound email runs
|
|
179
|
+
// autonomous, full-tool-access tasks, so it must never be an open relay for
|
|
180
|
+
// anyone who guesses the mailbox address.
|
|
178
181
|
if (this.allowed.length === 0)
|
|
179
|
-
return
|
|
182
|
+
return false;
|
|
180
183
|
if (!address)
|
|
181
184
|
return false;
|
|
182
185
|
const addr = address.toLowerCase();
|
package/out/emailPoller.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"emailPoller.js","sourceRoot":"","sources":["../src/emailPoller.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"emailPoller.js","sourceRoot":"","sources":["../src/emailPoller.ts"],"names":[],"mappings":"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"}
|
package/out/git/gitService.js
CHANGED
|
@@ -113,8 +113,16 @@ async function getDiff(cwd, filePath, staged) {
|
|
|
113
113
|
if (!out && !staged) {
|
|
114
114
|
const content = await git(cwd, ['show', `:${filePath}`]).catch(async () => {
|
|
115
115
|
const { readFileSync } = await Promise.resolve().then(() => __importStar(require('fs')));
|
|
116
|
+
const pathMod = await Promise.resolve().then(() => __importStar(require('path')));
|
|
117
|
+
// Containment guard: never read outside the repo even if a caller passes a
|
|
118
|
+
// traversing path. The WS handler already validates, but keep this defensive
|
|
119
|
+
// so getDiff cannot be turned into an arbitrary-file read by another caller.
|
|
120
|
+
const abs = pathMod.resolve(cwd, filePath);
|
|
121
|
+
if (abs !== cwd && !abs.startsWith(cwd + pathMod.sep)) {
|
|
122
|
+
return '';
|
|
123
|
+
}
|
|
116
124
|
try {
|
|
117
|
-
return readFileSync(
|
|
125
|
+
return readFileSync(abs, 'utf8');
|
|
118
126
|
}
|
|
119
127
|
catch {
|
|
120
128
|
return '';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gitService.js","sourceRoot":"","sources":["../../src/git/gitService.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkCA,8BAkCC;AAED,wBAkBC;AAED,
|
|
1
|
+
{"version":3,"file":"gitService.js","sourceRoot":"","sources":["../../src/git/gitService.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAkCA,8BAkCC;AAED,wBAkBC;AAED,0BAsBC;AAED,sCAIC;AAED,8BAEC;AAED,kCAIC;AAED,4BAEC;AAED,wBAIC;AAED,kCAEC;AAED,kCASC;AAED,wCAEC;AA7JD,iDAAyC;AACzC,+BAAiC;AAEjC,MAAM,aAAa,GAAG,IAAA,gBAAS,EAAC,wBAAQ,CAAC,CAAC;AA0B1C,KAAK,UAAU,GAAG,CAAC,GAAW,EAAE,IAAc;IAC5C,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,aAAa,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC,GAAG,IAAI,GAAG,IAAI,EAAE,CAAC,CAAC;IACzF,OAAO,MAAM,CAAC;AAChB,CAAC;AAEM,KAAK,UAAU,SAAS,CAAC,GAAW;IACzC,MAAM,CAAC,SAAS,EAAE,SAAS,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QAC/C,GAAG,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,gBAAgB,EAAE,IAAI,CAAC,CAAC;QAC5C,GAAG,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,IAAI,EAAE,gBAAgB,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC;KAC7D,CAAC,CAAC;IAEH,IAAI,MAAM,GAAG,MAAM,CAAC;IACpB,IAAI,QAAQ,GAAkB,IAAI,CAAC;IACnC,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,IAAI,MAAM,GAAG,CAAC,CAAC;IAEf,MAAM,UAAU,GAAG,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IAClD,4CAA4C;IAC5C,MAAM,WAAW,GAAG,UAAU,CAAC,KAAK,CAAC,4CAA4C,CAAC,CAAC;IACnF,IAAI,WAAW,EAAE,CAAC;QAChB,MAAM,GAAG,WAAW,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC;QAClC,QAAQ,GAAG,WAAW,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC;QAClC,MAAM,OAAO,GAAG,WAAW,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;QACrC,MAAM,UAAU,GAAG,OAAO,CAAC,KAAK,CAAC,aAAa,CAAC,CAAC;QAChD,MAAM,WAAW,GAAG,OAAO,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;QAClD,IAAI,UAAU;YAAE,KAAK,GAAG,QAAQ,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACpD,IAAI,WAAW;YAAE,MAAM,GAAG,QAAQ,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IACzD,CAAC;IAED,MAAM,KAAK,GAAc,EAAE,CAAC;IAC5B,KAAK,MAAM,IAAI,IAAI,SAAS,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;QACzC,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC;YAAE,SAAS;QAC9B,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC;QACzB,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC;QACzB,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;QAChE,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAE,MAAM,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,EAAE,CAAC,CAAC;IACzD,CAAC;IAED,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;AACpD,CAAC;AAEM,KAAK,UAAU,MAAM,CAAC,GAAW,EAAE,KAAK,GAAG,EAAE;IAClD,MAAM,GAAG,GAAG,MAAM,CAAC;IACnB,MAAM,GAAG,GAAG,KAAK,GAAG,KAAK,GAAG,KAAK,GAAG,MAAM,GAAG,MAAM,GAAG,MAAM,GAAG,IAAI,CAAC;IACpE,MAAM,GAAG,GAAG,MAAM,GAAG,CAAC,GAAG,EAAE,CAAC,KAAK,EAAE,YAAY,GAAG,EAAE,EAAE,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC;IACpE,OAAO,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC;SACnB,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;SACrB,GAAG,CAAC,IAAI,CAAC,EAAE;QACV,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC9B,OAAO;YACL,IAAI,EAAK,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE;YACvB,KAAK,EAAI,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE;YACvB,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE;YACvB,MAAM,EAAG,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE;YACvB,KAAK,EAAI,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE;YACvB,IAAI,EAAK,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE;YACvB,IAAI,EAAK,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE;SACxB,CAAC;IACJ,CAAC,CAAC,CAAC;AACP,CAAC;AAEM,KAAK,UAAU,OAAO,CAAC,GAAW,EAAE,QAAgB,EAAE,MAAe;IAC1E,MAAM,IAAI,GAAG,MAAM;QACjB,CAAC,CAAC,CAAC,MAAM,EAAE,UAAU,EAAE,IAAI,EAAE,QAAQ,CAAC;QACtC,CAAC,CAAC,CAAC,MAAM,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;IAC7B,MAAM,GAAG,GAAG,MAAM,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;IACjD,iFAAiF;IACjF,IAAI,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC;QACpB,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,GAAG,EAAE,CAAC,MAAM,EAAE,IAAI,QAAQ,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,IAAI,EAAE;YACxE,MAAM,EAAE,YAAY,EAAE,GAAG,wDAAa,IAAI,GAAC,CAAC;YAC5C,MAAM,OAAO,GAAG,wDAAa,MAAM,GAAC,CAAC;YACrC,2EAA2E;YAC3E,6EAA6E;YAC7E,6EAA6E;YAC7E,MAAM,GAAG,GAAG,OAAO,CAAC,OAAO,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;YAC3C,IAAI,GAAG,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,CAAC,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC;gBAAC,OAAO,EAAE,CAAC;YAAC,CAAC;YACrE,IAAI,CAAC;gBAAC,OAAO,YAAY,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;YAAC,CAAC;YAAC,MAAM,CAAC;gBAAC,OAAO,EAAE,CAAC;YAAC,CAAC;QAChE,CAAC,CAAC,CAAC;QACH,IAAI,OAAO,EAAE,CAAC;YACZ,OAAO,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC1D,CAAC;IACH,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAEM,KAAK,UAAU,aAAa,CAAC,GAAW,EAAE,IAAY,EAAE,QAAiB;IAC9E,MAAM,IAAI,GAAG,CAAC,MAAM,EAAE,QAAQ,EAAE,IAAI,CAAC,CAAC;IACtC,IAAI,QAAQ;QAAE,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC;IACxC,OAAO,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;AACxC,CAAC;AAEM,KAAK,UAAU,SAAS,CAAC,GAAW,EAAE,QAAgB;IAC3D,MAAM,GAAG,CAAC,GAAG,EAAE,CAAC,KAAK,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC;AAC1C,CAAC;AAEM,KAAK,UAAU,WAAW,CAAC,GAAW,EAAE,QAAgB;IAC7D,MAAM,GAAG,CAAC,GAAG,EAAE,CAAC,SAAS,EAAE,UAAU,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CACjE,GAAG,CAAC,GAAG,EAAE,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC,CAC5C,CAAC;AACJ,CAAC;AAEM,KAAK,UAAU,QAAQ,CAAC,GAAW;IACxC,MAAM,GAAG,CAAC,GAAG,EAAE,CAAC,KAAK,EAAE,IAAI,CAAC,CAAC,CAAC;AAChC,CAAC;AAEM,KAAK,UAAU,MAAM,CAAC,GAAW,EAAE,OAAe;IACvD,MAAM,GAAG,GAAG,MAAM,GAAG,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;IACtD,MAAM,SAAS,GAAG,GAAG,CAAC,KAAK,CAAC,oBAAoB,CAAC,CAAC;IAClD,OAAO,SAAS,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;AAC9B,CAAC;AAEM,KAAK,UAAU,WAAW,CAAC,GAAW;IAC3C,MAAM,GAAG,CAAC,GAAG,EAAE,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC,CAAC;AACvC,CAAC;AAEM,KAAK,UAAU,WAAW,CAAC,GAAW;IAC3C,MAAM,GAAG,GAAG,MAAM,GAAG,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,IAAI,EAAE,mCAAmC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;IAClG,OAAO,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC;SACnB,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;SACrB,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACZ,OAAO,EAAE,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC;QAC7B,MAAM,EAAE,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC;QACjC,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC;KAC5D,CAAC,CAAC,CAAC;AACR,CAAC;AAEM,KAAK,UAAU,cAAc,CAAC,GAAW,EAAE,MAAc;IAC9D,MAAM,GAAG,CAAC,GAAG,EAAE,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC;AACvC,CAAC"}
|