create-principles-disciple 1.146.9 → 1.147.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/_release/product-identity.json +1 -1
- package/codex-adapter/dist/ingestion/explicit-owner-statement.d.ts +6 -0
- package/codex-adapter/dist/ingestion/explicit-owner-statement.js +6 -0
- package/codex-adapter/dist/pd-hook.js +5 -2
- package/codex-adapter/dist/worker/workspace-worker.d.ts +13 -1
- package/codex-adapter/dist/worker/workspace-worker.js +26 -3
- package/codex-adapter/package.json +1 -1
- package/console/dist/shared/prompt-injection-contract.d.ts +1 -1
- package/console/dist/web/assets/app.js +31 -31
- package/core/dist/prompt-builder/size-guard.d.ts.map +1 -1
- package/core/dist/prompt-builder/size-guard.js +6 -1
- package/core/dist/prompt-builder/size-guard.js.map +1 -1
- package/core/dist/prompt-builder/types.d.ts +2 -1
- package/core/dist/prompt-builder/types.d.ts.map +1 -1
- package/core/dist/runtime-v2/activation/prompt-activation-reader-contract.d.ts +12 -1
- package/core/dist/runtime-v2/activation/prompt-activation-reader-contract.d.ts.map +1 -1
- package/core/dist/runtime-v2/activation/prompt-activation-reader-contract.js +12 -1
- package/core/dist/runtime-v2/activation/prompt-activation-reader-contract.js.map +1 -1
- package/core/dist/runtime-v2/activation/prompt-budget-policy.d.ts +42 -11
- package/core/dist/runtime-v2/activation/prompt-budget-policy.d.ts.map +1 -1
- package/core/dist/runtime-v2/activation/prompt-budget-policy.js +82 -30
- package/core/dist/runtime-v2/activation/prompt-budget-policy.js.map +1 -1
- package/core/dist/runtime-v2/adapter/pi-ai-catalog.d.ts.map +1 -1
- package/core/dist/runtime-v2/adapter/pi-ai-catalog.js +17 -5
- package/core/dist/runtime-v2/adapter/pi-ai-catalog.js.map +1 -1
- package/core/dist/runtime-v2/index.d.ts +2 -2
- package/core/dist/runtime-v2/index.d.ts.map +1 -1
- package/core/dist/runtime-v2/index.js +1 -1
- package/core/dist/runtime-v2/index.js.map +1 -1
- package/core/dist/runtime-v2/intent/intent-friction-block.d.ts +2 -2
- package/core/dist/runtime-v2/intent/intent-friction-block.js +2 -2
- package/core/dist/runtime-v2/pain-ingress-payload.d.ts +13 -1
- package/core/dist/runtime-v2/pain-ingress-payload.d.ts.map +1 -1
- package/core/dist/runtime-v2/pain-ingress-payload.js +21 -2
- package/core/dist/runtime-v2/pain-ingress-payload.js.map +1 -1
- package/core/dist/runtime-v2/pain-ingress.d.ts.map +1 -1
- package/core/dist/runtime-v2/pain-ingress.js +3 -0
- package/core/dist/runtime-v2/pain-ingress.js.map +1 -1
- package/core/dist/runtime-v2/signal-collector/confidence-gate.d.ts +35 -0
- package/core/dist/runtime-v2/signal-collector/confidence-gate.d.ts.map +1 -0
- package/core/dist/runtime-v2/signal-collector/confidence-gate.js +48 -0
- package/core/dist/runtime-v2/signal-collector/confidence-gate.js.map +1 -0
- package/core/dist/runtime-v2/signal-collector/index.d.ts +1 -0
- package/core/dist/runtime-v2/signal-collector/index.d.ts.map +1 -1
- package/core/dist/runtime-v2/signal-collector/index.js +1 -0
- package/core/dist/runtime-v2/signal-collector/index.js.map +1 -1
- package/core/dist/runtime-v2/signal-collector/keyword-stage.d.ts +4 -6
- package/core/dist/runtime-v2/signal-collector/keyword-stage.d.ts.map +1 -1
- package/core/dist/runtime-v2/signal-collector/keyword-stage.js +100 -9
- package/core/dist/runtime-v2/signal-collector/keyword-stage.js.map +1 -1
- package/core/dist/runtime-v2/store/context/sqlite-context-assembler.d.ts.map +1 -1
- package/core/dist/runtime-v2/store/context/sqlite-context-assembler.js +8 -4
- package/core/dist/runtime-v2/store/context/sqlite-context-assembler.js.map +1 -1
- package/core/dist/runtime-v2/types/event-types.d.ts +2 -2
- package/core/dist/runtime-v2/types/event-types.d.ts.map +1 -1
- package/core/dist/runtime-v2/types/event-types.js +1 -0
- package/core/dist/runtime-v2/types/event-types.js.map +1 -1
- package/core/package.json +1 -1
- package/dist/installer.d.ts.map +1 -1
- package/dist/installer.js +52 -1
- package/dist/installer.js.map +1 -1
- package/dist/installers/mcp-registration-conflict.d.ts +35 -0
- package/dist/installers/mcp-registration-conflict.d.ts.map +1 -0
- package/dist/installers/mcp-registration-conflict.js +559 -0
- package/dist/installers/mcp-registration-conflict.js.map +1 -0
- package/dist/installers/openclaw-host-installer.d.ts.map +1 -1
- package/dist/installers/openclaw-host-installer.js +20 -0
- package/dist/installers/openclaw-host-installer.js.map +1 -1
- package/dist/installers/workbuddy-host-installer.d.ts.map +1 -1
- package/dist/installers/workbuddy-host-installer.js +124 -2
- package/dist/installers/workbuddy-host-installer.js.map +1 -1
- package/dist/mcp-server-layout-compat.d.ts +18 -0
- package/dist/mcp-server-layout-compat.d.ts.map +1 -0
- package/dist/mcp-server-layout-compat.js +22 -0
- package/dist/mcp-server-layout-compat.js.map +1 -0
- package/host-runtime/dist/governance-signal-admission.d.ts +147 -4
- package/host-runtime/dist/governance-signal-admission.js +1065 -60
- package/host-runtime/dist/index.d.ts +2 -0
- package/host-runtime/dist/index.js +2 -0
- package/host-runtime/dist/prompt-injection-budget-observation.js +4 -2
- package/host-runtime/dist/signal-classifier.d.ts +46 -0
- package/host-runtime/dist/signal-classifier.js +167 -0
- package/host-runtime/dist/signal-stage2-cycle.d.ts +42 -0
- package/host-runtime/dist/signal-stage2-cycle.js +184 -0
- package/host-runtime/package.json +1 -1
- package/install-layout/dist/index.d.ts +15 -0
- package/install-layout/dist/index.js +10 -0
- package/install-layout/package.json +1 -1
- package/package.json +9 -7
- package/pd-cli/dist/commands/health-codex.d.ts.map +1 -1
- package/pd-cli/dist/commands/health-codex.js +12 -0
- package/pd-cli/dist/commands/health-codex.js.map +1 -1
- package/pd-cli/dist/commands/health-mcp.d.ts +74 -0
- package/pd-cli/dist/commands/health-mcp.d.ts.map +1 -0
- package/pd-cli/dist/commands/health-mcp.js +723 -0
- package/pd-cli/dist/commands/health-mcp.js.map +1 -0
- package/pd-cli/dist/commands/health.d.ts +2 -0
- package/pd-cli/dist/commands/health.d.ts.map +1 -1
- package/pd-cli/dist/commands/health.js +11 -6
- package/pd-cli/dist/commands/health.js.map +1 -1
- package/pd-cli/package.json +1 -1
- package/pd-mcp-server/dist/budget.d.ts +15 -0
- package/pd-mcp-server/dist/budget.js +19 -0
- package/pd-mcp-server/dist/deadline.d.ts +75 -0
- package/pd-mcp-server/dist/deadline.js +136 -0
- package/pd-mcp-server/dist/envelope.d.ts +52 -0
- package/pd-mcp-server/dist/envelope.js +63 -0
- package/pd-mcp-server/dist/index.d.ts +10 -0
- package/pd-mcp-server/dist/index.js +76 -0
- package/pd-mcp-server/dist/logging.d.ts +12 -0
- package/pd-mcp-server/dist/logging.js +42 -0
- package/pd-mcp-server/dist/server.d.ts +90 -0
- package/pd-mcp-server/dist/server.js +178 -0
- package/pd-mcp-server/dist/version.d.ts +13 -0
- package/pd-mcp-server/dist/version.js +13 -0
- package/pd-mcp-server/dist/workspace.d.ts +23 -0
- package/pd-mcp-server/dist/workspace.js +77 -0
- package/pd-mcp-server/package.json +49 -0
- package/plugin/dist/bundle.js +414 -412
- package/plugin/dist/core/mcp-binding.d.ts +41 -0
- package/plugin/dist/governance-audit.js +2 -2
- package/plugin/dist/index.d.ts +33 -0
- package/plugin/dist/openclaw.plugin.json +10 -1
- package/plugin/dist/utils/workspace-resolver.d.ts +17 -0
- package/plugin/openclaw.plugin.json +10 -1
- package/plugin/package.json +2 -1
- package/release-manager/dist/installer.js +52 -1
- package/release-manager/dist/installers/mcp-registration-conflict.js +559 -0
- package/release-manager/dist/installers/openclaw-host-installer.js +20 -0
- package/release-manager/dist/installers/workbuddy-host-installer.js +124 -2
- package/release-manager/dist/mcp-server-layout-compat.js +22 -0
- package/release-manager/package.json +7 -5
- package/workbuddy-adapter/dist/codec/input-decoder.js +3 -1
- package/workbuddy-adapter/dist/pd-hook.js +28 -5
- package/workbuddy-adapter/dist/worker/workspace-worker.d.ts +6 -1
- package/workbuddy-adapter/dist/worker/workspace-worker.js +24 -3
- package/workbuddy-adapter/package.json +1 -1
- package/workbuddy-adapter/plugin/.codebuddy-plugin/plugin.json +2 -2
- package/workbuddy-adapter/plugin/.mcp.json +10 -0
- package/workbuddy-adapter/plugin/mcp/launcher.cjs +347 -0
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
export declare const PD_MCP_SERVER_NAME = "pd-recall";
|
|
2
|
+
export type McpConflictHost = 'codex' | 'openclaw' | 'workbuddy';
|
|
3
|
+
export type McpRegistrationState = 'absent' | 'other_servers_only' | 'pd_owned';
|
|
4
|
+
export interface McpRegistrationOk {
|
|
5
|
+
ok: true;
|
|
6
|
+
state: McpRegistrationState;
|
|
7
|
+
host: McpConflictHost;
|
|
8
|
+
configPath: string;
|
|
9
|
+
}
|
|
10
|
+
export interface McpRegistrationBlocked {
|
|
11
|
+
ok: false;
|
|
12
|
+
host: McpConflictHost;
|
|
13
|
+
configPath: string;
|
|
14
|
+
kind: 'conflict' | 'unverifiable';
|
|
15
|
+
reason: string;
|
|
16
|
+
nextAction: string;
|
|
17
|
+
}
|
|
18
|
+
export type McpRegistrationCheck = McpRegistrationOk | McpRegistrationBlocked;
|
|
19
|
+
export interface McpRegistrationCheckOptions {
|
|
20
|
+
homeDir?: string;
|
|
21
|
+
/** Codex config root override (CODEX_HOME); defaults to <home>/.codex. */
|
|
22
|
+
codexHome?: string;
|
|
23
|
+
/** WorkBuddy config root override; defaults to <home>/.workbuddy. */
|
|
24
|
+
workbuddyConfigDir?: string;
|
|
25
|
+
/**
|
|
26
|
+
* Known payload roots for this host. A lexical path under one of these roots
|
|
27
|
+
* must also resolve inside its real path; root membership alone never proves
|
|
28
|
+
* ownership. Launcher bytes and the root's host marker are still verified.
|
|
29
|
+
*/
|
|
30
|
+
pdLauncherRoots?: readonly string[];
|
|
31
|
+
}
|
|
32
|
+
export declare function resolveMcpRegistrationConfigPath(host: McpConflictHost, options?: McpRegistrationCheckOptions): string;
|
|
33
|
+
export declare function classifyOpenClawConfigObject(config: Record<string, unknown>, configPath: string, options?: McpRegistrationCheckOptions): McpRegistrationCheck;
|
|
34
|
+
export declare function checkMcpRegistrationConflict(host: McpConflictHost, options?: McpRegistrationCheckOptions): McpRegistrationCheck;
|
|
35
|
+
//# sourceMappingURL=mcp-registration-conflict.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp-registration-conflict.d.ts","sourceRoot":"","sources":["../../src/installers/mcp-registration-conflict.ts"],"names":[],"mappings":"AA8BA,eAAO,MAAM,kBAAkB,cAAc,CAAC;AAE9C,MAAM,MAAM,eAAe,GAAG,OAAO,GAAG,UAAU,GAAG,WAAW,CAAC;AACjE,MAAM,MAAM,oBAAoB,GAAG,QAAQ,GAAG,oBAAoB,GAAG,UAAU,CAAC;AAEhF,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,IAAI,CAAC;IACT,KAAK,EAAE,oBAAoB,CAAC;IAC5B,IAAI,EAAE,eAAe,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;CACpB;AACD,MAAM,WAAW,sBAAsB;IACrC,EAAE,EAAE,KAAK,CAAC;IACV,IAAI,EAAE,eAAe,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,UAAU,GAAG,cAAc,CAAC;IAClC,MAAM,EAAE,MAAM,CAAC;IACf,UAAU,EAAE,MAAM,CAAC;CACpB;AACD,MAAM,MAAM,oBAAoB,GAAG,iBAAiB,GAAG,sBAAsB,CAAC;AAE9E,MAAM,WAAW,2BAA2B;IAC1C,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,0EAA0E;IAC1E,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,qEAAqE;IACrE,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B;;;;OAIG;IACH,eAAe,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CACrC;AAiBD,wBAAgB,gCAAgC,CAAC,IAAI,EAAE,eAAe,EAAE,OAAO,GAAE,2BAAgC,GAAG,MAAM,CAczH;AAiQD,wBAAgB,4BAA4B,CAC1C,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,UAAU,EAAE,MAAM,EAClB,OAAO,GAAE,2BAAgC,GACxC,oBAAoB,CAkCtB;AAsMD,wBAAgB,4BAA4B,CAC1C,IAAI,EAAE,eAAe,EACrB,OAAO,GAAE,2BAAgC,GACxC,oBAAoB,CAItB"}
|
|
@@ -0,0 +1,559 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Three-host MCP same-name registration conflict gate — SPEC-PD-MCP-GATE4-001
|
|
3
|
+
* §7.5 ("同名冲突时停止,不覆盖用户配置") / §11.3 ("同名冲突 | 明确报告,不覆盖").
|
|
4
|
+
*
|
|
5
|
+
* The host-specific MCP configs PD shares a name with are:
|
|
6
|
+
* - Codex: ~/.codex/config.toml `[mcp_servers.<name>]` (user tier
|
|
7
|
+
* overrides the plugin tier — Gate 4-A reality check).
|
|
8
|
+
* - OpenClaw: ~/.openclaw/openclaw.json `mcp.servers.<name>` (operator
|
|
9
|
+
* tier overrides plugin-owned servers).
|
|
10
|
+
* - WorkBuddy: ~/.workbuddy/mcp.json `mcpServers.<name>` (user-level MCP
|
|
11
|
+
* config; plugin servers are configured independently).
|
|
12
|
+
*
|
|
13
|
+
* Classification is ONE closed set of outcomes (never "guess and continue"):
|
|
14
|
+
* - `absent` no same-name registration, install may proceed.
|
|
15
|
+
* - `other_servers_only` other names coexist; PD's name is free.
|
|
16
|
+
* - `pd_owned` the same name already points at PD's launcher —
|
|
17
|
+
* idempotent reuse, no duplicate registration.
|
|
18
|
+
* - conflict same name points at ANOTHER MCP server → STOP before
|
|
19
|
+
* any write; never overwrite or delete the entry.
|
|
20
|
+
* - unverifiable config/ownership cannot be proven → STOP fail-closed
|
|
21
|
+
* (rc-1/rc-3: unknown is not "PD-owned").
|
|
22
|
+
*
|
|
23
|
+
* This module is a READ-ONLY classifier: no registration manager, no second
|
|
24
|
+
* source of truth. Installers call it before any config/binding/cache write;
|
|
25
|
+
* `pd health` reports the same verdict.
|
|
26
|
+
*/
|
|
27
|
+
import * as fs from 'fs';
|
|
28
|
+
import * as os from 'os';
|
|
29
|
+
import * as path from 'path';
|
|
30
|
+
export const PD_MCP_SERVER_NAME = 'pd-recall';
|
|
31
|
+
/** Stamp carried by PD's own launcher (see mcp/launcher.cjs `PD_LAUNCHER_ID`). */
|
|
32
|
+
const PD_LAUNCHER_ID = 'pd-mcp-launcher.v1';
|
|
33
|
+
/** Second stamp: the launcher's own binding-schema constant. Filename alone proves nothing. */
|
|
34
|
+
const PD_BINDING_SCHEMA_MARKER = 'pd.mcp-binding.v1';
|
|
35
|
+
/** A launcher is a small script; refuse to slurp arbitrary large files. */
|
|
36
|
+
const MAX_LAUNCHER_BYTES = 512 * 1024;
|
|
37
|
+
function isRecord(value) {
|
|
38
|
+
return value !== null && typeof value === 'object' && !Array.isArray(value);
|
|
39
|
+
}
|
|
40
|
+
function getHomeDir(options) {
|
|
41
|
+
return path.resolve(options.homeDir ?? os.homedir());
|
|
42
|
+
}
|
|
43
|
+
export function resolveMcpRegistrationConfigPath(host, options = {}) {
|
|
44
|
+
const home = getHomeDir(options);
|
|
45
|
+
if (host === 'codex') {
|
|
46
|
+
const codexHome = options.codexHome ?? (process.env.CODEX_HOME && process.env.CODEX_HOME.length > 0
|
|
47
|
+
? process.env.CODEX_HOME
|
|
48
|
+
: path.join(home, '.codex'));
|
|
49
|
+
return path.join(codexHome, 'config.toml');
|
|
50
|
+
}
|
|
51
|
+
if (host === 'openclaw')
|
|
52
|
+
return path.join(home, '.openclaw', 'openclaw.json');
|
|
53
|
+
const configDir = options.workbuddyConfigDir
|
|
54
|
+
?? (process.env.WORKBUDDY_CONFIG_DIR && process.env.WORKBUDDY_CONFIG_DIR.length > 0
|
|
55
|
+
? process.env.WORKBUDDY_CONFIG_DIR
|
|
56
|
+
: path.join(home, '.workbuddy'));
|
|
57
|
+
return path.join(configDir, 'mcp.json');
|
|
58
|
+
}
|
|
59
|
+
const HOST_MARKER_PATHS = {
|
|
60
|
+
codex: ['.codex-plugin', 'plugin.json'],
|
|
61
|
+
openclaw: ['openclaw.plugin.json'],
|
|
62
|
+
workbuddy: ['.codebuddy-plugin', 'plugin.json'],
|
|
63
|
+
};
|
|
64
|
+
function isPathWithin(child, root) {
|
|
65
|
+
const relative = path.relative(root, child);
|
|
66
|
+
return relative === '' || (!relative.startsWith('..') && !path.isAbsolute(relative));
|
|
67
|
+
}
|
|
68
|
+
/** Resolve BOTH sides before checking containment; lexical paths are not trust boundaries. */
|
|
69
|
+
function isInsideRoot(child, root) {
|
|
70
|
+
try {
|
|
71
|
+
const realRoot = fs.realpathSync(root);
|
|
72
|
+
const realChild = fs.realpathSync(child);
|
|
73
|
+
return isPathWithin(realChild, realRoot);
|
|
74
|
+
}
|
|
75
|
+
catch {
|
|
76
|
+
return false;
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
function readPluginHostIdentity(pluginRoot, expectedHost) {
|
|
80
|
+
const realRoot = fs.realpathSync(pluginRoot);
|
|
81
|
+
const detected = [];
|
|
82
|
+
for (const host of Object.keys(HOST_MARKER_PATHS)) {
|
|
83
|
+
const markerPath = path.join(realRoot, ...HOST_MARKER_PATHS[host]);
|
|
84
|
+
let markerStat;
|
|
85
|
+
try {
|
|
86
|
+
markerStat = fs.lstatSync(markerPath);
|
|
87
|
+
}
|
|
88
|
+
catch (error) {
|
|
89
|
+
if (isRecord(error) && error.code === 'ENOENT')
|
|
90
|
+
continue;
|
|
91
|
+
return 'unverifiable';
|
|
92
|
+
}
|
|
93
|
+
// Marker files are identity evidence, not links to identity evidence.
|
|
94
|
+
if (!markerStat.isFile() || markerStat.isSymbolicLink())
|
|
95
|
+
return 'unverifiable';
|
|
96
|
+
let realMarker;
|
|
97
|
+
try {
|
|
98
|
+
realMarker = fs.realpathSync(markerPath);
|
|
99
|
+
}
|
|
100
|
+
catch {
|
|
101
|
+
return 'unverifiable';
|
|
102
|
+
}
|
|
103
|
+
if (!isPathWithin(realMarker, realRoot))
|
|
104
|
+
return 'unverifiable';
|
|
105
|
+
let markerRecord;
|
|
106
|
+
try {
|
|
107
|
+
markerRecord = JSON.parse(fs.readFileSync(realMarker, 'utf8'));
|
|
108
|
+
}
|
|
109
|
+
catch {
|
|
110
|
+
return 'unverifiable';
|
|
111
|
+
}
|
|
112
|
+
const markerKey = host === 'openclaw' ? 'id' : 'name';
|
|
113
|
+
if (!isRecord(markerRecord) || markerRecord[markerKey] !== 'principles-disciple')
|
|
114
|
+
return 'unverifiable';
|
|
115
|
+
detected.push(host);
|
|
116
|
+
}
|
|
117
|
+
if (detected.length !== 1)
|
|
118
|
+
return 'unverifiable';
|
|
119
|
+
return detected[0] === expectedHost ? 'match' : 'other';
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* Prove launcher identity by BOTH content and host ownership. The launcher
|
|
123
|
+
* copies are intentionally byte-identical across hosts, so their containing
|
|
124
|
+
* plugin root's unique manifest marker is part of the identity contract.
|
|
125
|
+
*/
|
|
126
|
+
function readLauncherIdentity(file, expectedHost, trustedRoots = []) {
|
|
127
|
+
let real;
|
|
128
|
+
try {
|
|
129
|
+
real = fs.realpathSync(file);
|
|
130
|
+
}
|
|
131
|
+
catch {
|
|
132
|
+
return 'unverifiable';
|
|
133
|
+
}
|
|
134
|
+
if (path.basename(real).toLowerCase() !== 'launcher.cjs'
|
|
135
|
+
|| path.basename(path.dirname(real)).toLowerCase() !== 'mcp')
|
|
136
|
+
return 'other';
|
|
137
|
+
// If the configured path is lexically under a known payload root, its real
|
|
138
|
+
// target must remain under that root. This blocks file/directory symlink and
|
|
139
|
+
// junction escapes before any ownership shortcut can be considered.
|
|
140
|
+
const lexicalFile = path.resolve(file);
|
|
141
|
+
for (const root of trustedRoots) {
|
|
142
|
+
const lexicalRoot = path.resolve(root);
|
|
143
|
+
if (isPathWithin(lexicalFile, lexicalRoot) && !isInsideRoot(real, root))
|
|
144
|
+
return 'unverifiable';
|
|
145
|
+
}
|
|
146
|
+
// Read through ONE open descriptor: a stat-then-read pair leaves a window in
|
|
147
|
+
// which the path can be swapped (CodeQL js/file-system-race). fstat+read on
|
|
148
|
+
// the same handle validates and reads the same file instance.
|
|
149
|
+
let fd;
|
|
150
|
+
try {
|
|
151
|
+
fd = fs.openSync(real, 'r');
|
|
152
|
+
}
|
|
153
|
+
catch {
|
|
154
|
+
return 'unverifiable';
|
|
155
|
+
}
|
|
156
|
+
try {
|
|
157
|
+
const stat = fs.fstatSync(fd);
|
|
158
|
+
if (!stat.isFile())
|
|
159
|
+
return 'unverifiable';
|
|
160
|
+
if (stat.size > MAX_LAUNCHER_BYTES)
|
|
161
|
+
return 'other';
|
|
162
|
+
const buffer = Buffer.alloc(stat.size);
|
|
163
|
+
fs.readSync(fd, buffer, 0, stat.size, 0);
|
|
164
|
+
const content = buffer.toString('utf8');
|
|
165
|
+
if (!content.includes(PD_LAUNCHER_ID) || !content.includes(PD_BINDING_SCHEMA_MARKER))
|
|
166
|
+
return 'other';
|
|
167
|
+
const pluginRoot = path.dirname(path.dirname(real));
|
|
168
|
+
const hostIdentity = readPluginHostIdentity(pluginRoot, expectedHost);
|
|
169
|
+
return hostIdentity === 'match' ? 'pd' : hostIdentity;
|
|
170
|
+
}
|
|
171
|
+
catch {
|
|
172
|
+
return 'unverifiable';
|
|
173
|
+
}
|
|
174
|
+
finally {
|
|
175
|
+
fs.closeSync(fd);
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
/** Is this arg shaped like a PD launcher argument at all (`.../mcp/launcher.cjs`)? */
|
|
179
|
+
function launcherArgPath(arg) {
|
|
180
|
+
const normalized = arg.replace(/\\/g, '/');
|
|
181
|
+
if (path.basename(normalized) !== 'launcher.cjs')
|
|
182
|
+
return undefined;
|
|
183
|
+
if (path.basename(path.dirname(normalized)) !== 'mcp')
|
|
184
|
+
return undefined;
|
|
185
|
+
return arg;
|
|
186
|
+
}
|
|
187
|
+
function entryOwnership(entry, expectedHost, options = {}) {
|
|
188
|
+
if (!isRecord(entry))
|
|
189
|
+
return 'unverifiable';
|
|
190
|
+
const command = typeof entry.command === 'string' ? entry.command : undefined;
|
|
191
|
+
const args = Array.isArray(entry.args) ? entry.args.filter((arg) => typeof arg === 'string') : undefined;
|
|
192
|
+
const url = typeof entry.url === 'string' ? entry.url : undefined;
|
|
193
|
+
if (command === undefined) {
|
|
194
|
+
// No command: a URL-based server is definitely someone else's; anything
|
|
195
|
+
// else cannot be attributed.
|
|
196
|
+
return url !== undefined ? 'other' : 'unverifiable';
|
|
197
|
+
}
|
|
198
|
+
const commandBase = path.basename(command).toLowerCase();
|
|
199
|
+
if (commandBase !== 'node' && commandBase !== 'node.exe' && commandBase !== path.basename(process.execPath).toLowerCase()) {
|
|
200
|
+
return 'other';
|
|
201
|
+
}
|
|
202
|
+
if (args === undefined)
|
|
203
|
+
return 'unverifiable';
|
|
204
|
+
const candidate = args.map(launcherArgPath).find((arg) => arg !== undefined);
|
|
205
|
+
if (candidate === undefined)
|
|
206
|
+
return 'other';
|
|
207
|
+
// Relative args and unresolved host placeholders (${CODEBUDDY_PLUGIN_ROOT})
|
|
208
|
+
// depend on a cwd/variable the config does not fix: ownership is unprovable.
|
|
209
|
+
if (candidate.includes('${') || !path.isAbsolute(candidate))
|
|
210
|
+
return 'unverifiable';
|
|
211
|
+
const resolved = path.resolve(candidate);
|
|
212
|
+
const identity = readLauncherIdentity(resolved, expectedHost, options.pdLauncherRoots ?? []);
|
|
213
|
+
if (identity === 'pd')
|
|
214
|
+
return 'pd_owned';
|
|
215
|
+
return identity === 'other' ? 'other' : 'unverifiable';
|
|
216
|
+
}
|
|
217
|
+
function classifyEntryPresence(input) {
|
|
218
|
+
const { present, entry, host, configPath, ownershipOptions } = input;
|
|
219
|
+
if (!present)
|
|
220
|
+
return { ok: true, host, configPath, state: 'absent' };
|
|
221
|
+
const ownership = entryOwnership(entry, host, ownershipOptions);
|
|
222
|
+
if (ownership === 'pd_owned')
|
|
223
|
+
return { ok: true, host, configPath, state: 'pd_owned' };
|
|
224
|
+
if (ownership === 'unverifiable') {
|
|
225
|
+
return {
|
|
226
|
+
ok: false,
|
|
227
|
+
host,
|
|
228
|
+
configPath,
|
|
229
|
+
kind: 'unverifiable',
|
|
230
|
+
reason: `mcp_registration_unverifiable: ${configPath} declares mcpServers["${PD_MCP_SERVER_NAME}"] but its launcher identity cannot be proven (relative path, unresolved placeholder, or unreadable file). No PD write was performed.`,
|
|
231
|
+
nextAction: `Inspect ${configPath} manually: point the "${PD_MCP_SERVER_NAME}" entry at PD's absolute mcp/launcher.cjs path, remove it if it is not PD's, then re-run the installer. PD never guesses ownership from a file name.`,
|
|
232
|
+
};
|
|
233
|
+
}
|
|
234
|
+
return {
|
|
235
|
+
ok: false,
|
|
236
|
+
host,
|
|
237
|
+
configPath,
|
|
238
|
+
kind: 'conflict',
|
|
239
|
+
reason: `mcp_same_name_conflict: ${configPath} registers "${PD_MCP_SERVER_NAME}" with a launcher not owned by ${host} (third-party or another PD host). The installer stopped before any write; the existing entry was left byte-identical.`,
|
|
240
|
+
nextAction: `Point "${PD_MCP_SERVER_NAME}" at ${host}'s own absolute mcp/launcher.cjs path, or remove/rename the foreign entry in ${configPath}, then re-run the installer. PD never reuses another host's launcher.`,
|
|
241
|
+
};
|
|
242
|
+
}
|
|
243
|
+
// ─── JSON hosts (OpenClaw / WorkBuddy) ──────────────────────────────────────
|
|
244
|
+
function readJsonObject(configPath) {
|
|
245
|
+
let raw;
|
|
246
|
+
try {
|
|
247
|
+
raw = fs.readFileSync(configPath, 'utf8');
|
|
248
|
+
}
|
|
249
|
+
catch (error) {
|
|
250
|
+
if (isRecord(error) && error.code === 'ENOENT')
|
|
251
|
+
return { ok: true, value: undefined };
|
|
252
|
+
return { ok: false, reason: `unreadable: ${error instanceof Error ? error.message : String(error)}` };
|
|
253
|
+
}
|
|
254
|
+
try {
|
|
255
|
+
const parsed = JSON.parse(raw);
|
|
256
|
+
if (!isRecord(parsed))
|
|
257
|
+
return { ok: false, reason: 'root is not a JSON object' };
|
|
258
|
+
return { ok: true, value: parsed };
|
|
259
|
+
}
|
|
260
|
+
catch (error) {
|
|
261
|
+
return { ok: false, reason: `not valid JSON: ${error instanceof Error ? error.message : String(error)}` };
|
|
262
|
+
}
|
|
263
|
+
}
|
|
264
|
+
function classifyJsonHost(host, configPath, options = {}) {
|
|
265
|
+
const file = readJsonObject(configPath);
|
|
266
|
+
if (!file.ok) {
|
|
267
|
+
return {
|
|
268
|
+
ok: false,
|
|
269
|
+
host,
|
|
270
|
+
configPath,
|
|
271
|
+
kind: 'unverifiable',
|
|
272
|
+
reason: `mcp_registration_unverifiable: ${configPath} ${file.reason}. No PD write was performed.`,
|
|
273
|
+
nextAction: `Fix or remove ${configPath} manually so the MCP server list is readable, then re-run the installer. PD never merges into a config it cannot parse.`,
|
|
274
|
+
};
|
|
275
|
+
}
|
|
276
|
+
if (file.value === undefined)
|
|
277
|
+
return { ok: true, host, configPath, state: 'absent' };
|
|
278
|
+
const root = host === 'openclaw' ? file.value.mcp : file.value;
|
|
279
|
+
if (root === undefined)
|
|
280
|
+
return { ok: true, host, configPath, state: 'absent' };
|
|
281
|
+
if (!isRecord(root)) {
|
|
282
|
+
return {
|
|
283
|
+
ok: false,
|
|
284
|
+
host,
|
|
285
|
+
configPath,
|
|
286
|
+
kind: 'unverifiable',
|
|
287
|
+
reason: `mcp_registration_unverifiable: ${configPath} ${host === 'openclaw' ? 'mcp' : 'root'} is not an object. No PD write was performed.`,
|
|
288
|
+
nextAction: `Repair ${configPath} manually, then re-run the installer.`,
|
|
289
|
+
};
|
|
290
|
+
}
|
|
291
|
+
const servers = host === 'openclaw' ? root.servers : root.mcpServers;
|
|
292
|
+
if (servers === undefined)
|
|
293
|
+
return { ok: true, host, configPath, state: 'absent' };
|
|
294
|
+
if (!isRecord(servers)) {
|
|
295
|
+
return {
|
|
296
|
+
ok: false,
|
|
297
|
+
host,
|
|
298
|
+
configPath,
|
|
299
|
+
kind: 'unverifiable',
|
|
300
|
+
reason: `mcp_registration_unverifiable: ${configPath} ${host === 'openclaw' ? 'mcp.servers' : 'mcpServers'} is not an object. No PD write was performed.`,
|
|
301
|
+
nextAction: `Repair ${configPath} manually, then re-run the installer.`,
|
|
302
|
+
};
|
|
303
|
+
}
|
|
304
|
+
const present = Object.hasOwn(servers, PD_MCP_SERVER_NAME);
|
|
305
|
+
if (present)
|
|
306
|
+
return classifyEntryPresence({ present: true, entry: servers[PD_MCP_SERVER_NAME], host, configPath, ownershipOptions: options });
|
|
307
|
+
return {
|
|
308
|
+
ok: true,
|
|
309
|
+
host,
|
|
310
|
+
configPath,
|
|
311
|
+
state: Object.keys(servers).length === 0 ? 'absent' : 'other_servers_only',
|
|
312
|
+
};
|
|
313
|
+
}
|
|
314
|
+
export function classifyOpenClawConfigObject(config, configPath, options = {}) {
|
|
315
|
+
const { mcp } = config;
|
|
316
|
+
if (mcp === undefined)
|
|
317
|
+
return { ok: true, host: 'openclaw', configPath, state: 'absent' };
|
|
318
|
+
if (!isRecord(mcp)) {
|
|
319
|
+
return {
|
|
320
|
+
ok: false,
|
|
321
|
+
host: 'openclaw',
|
|
322
|
+
configPath,
|
|
323
|
+
kind: 'unverifiable',
|
|
324
|
+
reason: `mcp_registration_unverifiable: ${configPath} mcp is not an object. No PD write was performed.`,
|
|
325
|
+
nextAction: `Repair ${configPath} manually, then re-run the installer.`,
|
|
326
|
+
};
|
|
327
|
+
}
|
|
328
|
+
const { servers } = mcp;
|
|
329
|
+
if (servers === undefined)
|
|
330
|
+
return { ok: true, host: 'openclaw', configPath, state: 'absent' };
|
|
331
|
+
if (!isRecord(servers)) {
|
|
332
|
+
return {
|
|
333
|
+
ok: false,
|
|
334
|
+
host: 'openclaw',
|
|
335
|
+
configPath,
|
|
336
|
+
kind: 'unverifiable',
|
|
337
|
+
reason: `mcp_registration_unverifiable: ${configPath} mcp.servers is not an object. No PD write was performed.`,
|
|
338
|
+
nextAction: `Repair ${configPath} manually, then re-run the installer.`,
|
|
339
|
+
};
|
|
340
|
+
}
|
|
341
|
+
if (Object.hasOwn(servers, PD_MCP_SERVER_NAME)) {
|
|
342
|
+
return classifyEntryPresence({ present: true, entry: servers[PD_MCP_SERVER_NAME], host: 'openclaw', configPath, ownershipOptions: options });
|
|
343
|
+
}
|
|
344
|
+
return {
|
|
345
|
+
ok: true,
|
|
346
|
+
host: 'openclaw',
|
|
347
|
+
configPath,
|
|
348
|
+
state: Object.keys(servers).length === 0 ? 'absent' : 'other_servers_only',
|
|
349
|
+
};
|
|
350
|
+
}
|
|
351
|
+
function parseTomlScalarString(raw) {
|
|
352
|
+
const value = raw.trim();
|
|
353
|
+
if (value.startsWith('"') && value.endsWith('"')) {
|
|
354
|
+
try {
|
|
355
|
+
const parsed = JSON.parse(value);
|
|
356
|
+
return typeof parsed === 'string' ? parsed : undefined;
|
|
357
|
+
}
|
|
358
|
+
catch {
|
|
359
|
+
return undefined;
|
|
360
|
+
}
|
|
361
|
+
}
|
|
362
|
+
if (value.startsWith("'") && value.endsWith("'"))
|
|
363
|
+
return value.slice(1, -1);
|
|
364
|
+
return undefined;
|
|
365
|
+
}
|
|
366
|
+
function parseTomlStringArray(raw) {
|
|
367
|
+
const value = raw.trim();
|
|
368
|
+
if (!value.startsWith('[') || !value.endsWith(']'))
|
|
369
|
+
return undefined;
|
|
370
|
+
const inner = value.slice(1, -1).trim();
|
|
371
|
+
if (inner.length === 0)
|
|
372
|
+
return [];
|
|
373
|
+
const parts = inner.split(',').map((part) => part.trim()).filter((part) => part.length > 0);
|
|
374
|
+
const out = [];
|
|
375
|
+
for (const part of parts) {
|
|
376
|
+
const parsed = parseTomlScalarString(part);
|
|
377
|
+
if (parsed === undefined)
|
|
378
|
+
return undefined;
|
|
379
|
+
out.push(parsed);
|
|
380
|
+
}
|
|
381
|
+
return out;
|
|
382
|
+
}
|
|
383
|
+
function scanCodexToml(raw) {
|
|
384
|
+
const entry = { opaque: false };
|
|
385
|
+
let found = false;
|
|
386
|
+
let otherServers = false;
|
|
387
|
+
let table;
|
|
388
|
+
let multilineArgs = undefined;
|
|
389
|
+
const header = (line) => {
|
|
390
|
+
const captured = /^\s*\[\[?([^\]]+)\]\]?\s*(?:#.*)?$/.exec(line)?.[1];
|
|
391
|
+
return captured === undefined ? undefined : captured.trim();
|
|
392
|
+
};
|
|
393
|
+
for (const line of raw.split(/\r?\n/)) {
|
|
394
|
+
if (multilineArgs !== undefined) {
|
|
395
|
+
const close = line.indexOf(']');
|
|
396
|
+
const segment = close === -1 ? line : line.slice(0, close);
|
|
397
|
+
const parsed = parseTomlScalarString(segment.replace(/,$/, '').trim());
|
|
398
|
+
if (parsed !== undefined)
|
|
399
|
+
multilineArgs.push(parsed);
|
|
400
|
+
if (close !== -1) {
|
|
401
|
+
entry.args = multilineArgs;
|
|
402
|
+
multilineArgs = undefined;
|
|
403
|
+
}
|
|
404
|
+
continue;
|
|
405
|
+
}
|
|
406
|
+
const trimmed = line.trim();
|
|
407
|
+
if (trimmed.length === 0 || trimmed.startsWith('#'))
|
|
408
|
+
continue;
|
|
409
|
+
const named = header(line);
|
|
410
|
+
if (named !== undefined) {
|
|
411
|
+
if (/^mcp_servers\./.test(named)) {
|
|
412
|
+
const parts = named.split('.').map((part) => part.trim().replace(/^"(.*)"$/, '$1').replace(/^'(.*)'$/, '$1'));
|
|
413
|
+
const [, serverName] = parts;
|
|
414
|
+
if (serverName === PD_MCP_SERVER_NAME) {
|
|
415
|
+
found = true;
|
|
416
|
+
table = parts.length === 2 ? 'server' : 'child';
|
|
417
|
+
}
|
|
418
|
+
else {
|
|
419
|
+
// Another server is fine; a nested table of pd-recall is ignored.
|
|
420
|
+
if (parts.length >= 2)
|
|
421
|
+
otherServers = true;
|
|
422
|
+
table = undefined;
|
|
423
|
+
}
|
|
424
|
+
}
|
|
425
|
+
else {
|
|
426
|
+
table = undefined;
|
|
427
|
+
}
|
|
428
|
+
continue;
|
|
429
|
+
}
|
|
430
|
+
if (/^\s*mcp_servers\s*=/.test(line)) {
|
|
431
|
+
// Top-level inline table / array form — not modelled.
|
|
432
|
+
found = true;
|
|
433
|
+
entry.opaque = true;
|
|
434
|
+
table = undefined;
|
|
435
|
+
continue;
|
|
436
|
+
}
|
|
437
|
+
if (table === undefined) {
|
|
438
|
+
// Dotted keys: mcp_servers."pd-recall".command = ...
|
|
439
|
+
const dotted = /^\s*mcp_servers\.(?:"([^"]+)"|'([^']+)'|([A-Za-z0-9_-]+))\.(command|args|url)\s*=\s*(.*)$/.exec(line);
|
|
440
|
+
if (dotted) {
|
|
441
|
+
const name = dotted[1] ?? dotted[2] ?? dotted[3];
|
|
442
|
+
if (name === PD_MCP_SERVER_NAME) {
|
|
443
|
+
found = true;
|
|
444
|
+
const [, , , , key, value] = dotted;
|
|
445
|
+
if (key === undefined || value === undefined) {
|
|
446
|
+
entry.opaque = true;
|
|
447
|
+
continue;
|
|
448
|
+
}
|
|
449
|
+
if (key === 'command')
|
|
450
|
+
entry.command = parseTomlScalarString(value);
|
|
451
|
+
else if (key === 'url')
|
|
452
|
+
entry.url = parseTomlScalarString(value);
|
|
453
|
+
else {
|
|
454
|
+
const parsed = parseTomlStringArray(value);
|
|
455
|
+
if (parsed !== undefined)
|
|
456
|
+
entry.args = parsed;
|
|
457
|
+
else if (value.trim().startsWith('[')) {
|
|
458
|
+
multilineArgs = [];
|
|
459
|
+
}
|
|
460
|
+
else {
|
|
461
|
+
entry.opaque = true;
|
|
462
|
+
}
|
|
463
|
+
}
|
|
464
|
+
}
|
|
465
|
+
continue;
|
|
466
|
+
}
|
|
467
|
+
continue;
|
|
468
|
+
}
|
|
469
|
+
if (table !== 'server')
|
|
470
|
+
continue;
|
|
471
|
+
const pair = /^\s*(command|args|url)\s*=\s*(.*)$/.exec(line);
|
|
472
|
+
if (!pair)
|
|
473
|
+
continue;
|
|
474
|
+
const [, key, value] = pair;
|
|
475
|
+
if (key === undefined || value === undefined)
|
|
476
|
+
continue;
|
|
477
|
+
if (key === 'command') {
|
|
478
|
+
entry.command = parseTomlScalarString(value);
|
|
479
|
+
if (entry.command === undefined)
|
|
480
|
+
entry.opaque = true;
|
|
481
|
+
}
|
|
482
|
+
else if (key === 'url') {
|
|
483
|
+
entry.url = parseTomlScalarString(value);
|
|
484
|
+
if (entry.url === undefined)
|
|
485
|
+
entry.opaque = true;
|
|
486
|
+
}
|
|
487
|
+
else {
|
|
488
|
+
const parsed = parseTomlStringArray(value);
|
|
489
|
+
if (parsed !== undefined)
|
|
490
|
+
entry.args = parsed;
|
|
491
|
+
else if (value.trim().startsWith('['))
|
|
492
|
+
multilineArgs = [];
|
|
493
|
+
else
|
|
494
|
+
entry.opaque = true;
|
|
495
|
+
}
|
|
496
|
+
}
|
|
497
|
+
return found ? { entry, otherServers } : { otherServers };
|
|
498
|
+
}
|
|
499
|
+
function classifyCodex(configPath, options = {}) {
|
|
500
|
+
let raw;
|
|
501
|
+
try {
|
|
502
|
+
raw = fs.readFileSync(configPath, 'utf8');
|
|
503
|
+
}
|
|
504
|
+
catch (error) {
|
|
505
|
+
if (isRecord(error) && error.code === 'ENOENT')
|
|
506
|
+
return { ok: true, host: 'codex', configPath, state: 'absent' };
|
|
507
|
+
return {
|
|
508
|
+
ok: false,
|
|
509
|
+
host: 'codex',
|
|
510
|
+
configPath,
|
|
511
|
+
kind: 'unverifiable',
|
|
512
|
+
reason: `mcp_registration_unverifiable: ${configPath} is unreadable (${error instanceof Error ? error.message : String(error)}). No PD write was performed.`,
|
|
513
|
+
nextAction: `Fix ${configPath} read access, then re-run the installer. PD never guesses another server's ownership.`,
|
|
514
|
+
};
|
|
515
|
+
}
|
|
516
|
+
const scan = scanCodexToml(raw);
|
|
517
|
+
if (scan.entry === undefined) {
|
|
518
|
+
return { ok: true, host: 'codex', configPath, state: scan.otherServers ? 'other_servers_only' : 'absent' };
|
|
519
|
+
}
|
|
520
|
+
const { entry } = scan;
|
|
521
|
+
if (entry.opaque) {
|
|
522
|
+
return {
|
|
523
|
+
ok: false,
|
|
524
|
+
host: 'codex',
|
|
525
|
+
configPath,
|
|
526
|
+
kind: 'unverifiable',
|
|
527
|
+
reason: `mcp_registration_unverifiable: ${configPath} uses an mcp_servers construct PD cannot parse, so the "${PD_MCP_SERVER_NAME}" ownership is unknown. No PD write was performed.`,
|
|
528
|
+
nextAction: `Inspect ${configPath} manually (PD only understands [mcp_servers.<name>] tables and dotted mcp_servers.<name>.* keys), then re-run the installer.`,
|
|
529
|
+
};
|
|
530
|
+
}
|
|
531
|
+
const ownership = entryOwnership({ command: entry.command, args: entry.args, url: entry.url }, 'codex', options);
|
|
532
|
+
if (ownership === 'pd_owned')
|
|
533
|
+
return { ok: true, host: 'codex', configPath, state: 'pd_owned' };
|
|
534
|
+
if (ownership === 'unverifiable') {
|
|
535
|
+
return {
|
|
536
|
+
ok: false,
|
|
537
|
+
host: 'codex',
|
|
538
|
+
configPath,
|
|
539
|
+
kind: 'unverifiable',
|
|
540
|
+
reason: `mcp_registration_unverifiable: ${configPath} declares [mcp_servers.${PD_MCP_SERVER_NAME}] without a verifiable command/args. No PD write was performed.`,
|
|
541
|
+
nextAction: `Inspect ${configPath} manually and remove/repair the "${PD_MCP_SERVER_NAME}" entry, then re-run the installer.`,
|
|
542
|
+
};
|
|
543
|
+
}
|
|
544
|
+
return {
|
|
545
|
+
ok: false,
|
|
546
|
+
host: 'codex',
|
|
547
|
+
configPath,
|
|
548
|
+
kind: 'conflict',
|
|
549
|
+
reason: `mcp_same_name_conflict: ${configPath} registers "${PD_MCP_SERVER_NAME}" with a launcher not owned by Codex (third-party or another PD host; user tier overrides the plugin tier). The installer stopped before any write; the existing entry was left byte-identical.`,
|
|
550
|
+
nextAction: `Point [mcp_servers.${PD_MCP_SERVER_NAME}] at the Codex plugin's own absolute mcp/launcher.cjs path, or remove/rename the foreign entry in ${configPath}, then re-run $pd-control setup. PD never reuses another host's launcher.`,
|
|
551
|
+
};
|
|
552
|
+
}
|
|
553
|
+
export function checkMcpRegistrationConflict(host, options = {}) {
|
|
554
|
+
const configPath = resolveMcpRegistrationConfigPath(host, options);
|
|
555
|
+
if (host === 'codex')
|
|
556
|
+
return classifyCodex(configPath, options);
|
|
557
|
+
return classifyJsonHost(host, configPath, options);
|
|
558
|
+
}
|
|
559
|
+
//# sourceMappingURL=mcp-registration-conflict.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp-registration-conflict.js","sourceRoot":"","sources":["../../src/installers/mcp-registration-conflict.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,KAAK,EAAE,MAAM,IAAI,CAAC;AACzB,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAE7B,MAAM,CAAC,MAAM,kBAAkB,GAAG,WAAW,CAAC;AAmC9C,kFAAkF;AAClF,MAAM,cAAc,GAAG,oBAAoB,CAAC;AAC5C,+FAA+F;AAC/F,MAAM,wBAAwB,GAAG,mBAAmB,CAAC;AACrD,2EAA2E;AAC3E,MAAM,kBAAkB,GAAG,GAAG,GAAG,IAAI,CAAC;AAEtC,SAAS,QAAQ,CAAC,KAAc;IAC9B,OAAO,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;AAC9E,CAAC;AAED,SAAS,UAAU,CAAC,OAAoC;IACtD,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,IAAI,EAAE,CAAC,OAAO,EAAE,CAAC,CAAC;AACvD,CAAC;AAED,MAAM,UAAU,gCAAgC,CAAC,IAAqB,EAAE,OAAO,GAAgC,EAAE;IAC/G,MAAM,IAAI,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC;IACjC,IAAI,IAAI,KAAK,OAAO,EAAE,CAAC;QACrB,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU,IAAI,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,MAAM,GAAG,CAAC;YACjG,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,UAAU;YACxB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,QAAQ,CAAC,CAAC,CAAC;QAC/B,OAAO,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;IAC7C,CAAC;IACD,IAAI,IAAI,KAAK,UAAU;QAAE,OAAO,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,WAAW,EAAE,eAAe,CAAC,CAAC;IAC9E,MAAM,SAAS,GAAG,OAAO,CAAC,kBAAkB;WACvC,CAAC,OAAO,CAAC,GAAG,CAAC,oBAAoB,IAAI,OAAO,CAAC,GAAG,CAAC,oBAAoB,CAAC,MAAM,GAAG,CAAC;YACjF,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,oBAAoB;YAClC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,YAAY,CAAC,CAAC,CAAC;IACrC,OAAO,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,UAAU,CAAC,CAAC;AAC1C,CAAC;AAKD,MAAM,iBAAiB,GAAsC;IAC3D,KAAK,EAAE,CAAC,eAAe,EAAE,aAAa,CAAC;IACvC,QAAQ,EAAE,CAAC,sBAAsB,CAAC;IAClC,SAAS,EAAE,CAAC,mBAAmB,EAAE,aAAa,CAAC;CAChD,CAAC;AAEF,SAAS,YAAY,CAAC,KAAa,EAAE,IAAY;IAC/C,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC;IAC5C,OAAO,QAAQ,KAAK,EAAE,IAAI,CAAC,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC;AACvF,CAAC;AAED,8FAA8F;AAC9F,SAAS,YAAY,CAAC,KAAa,EAAE,IAAY;IAC/C,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;QACvC,MAAM,SAAS,GAAG,EAAE,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;QACzC,OAAO,YAAY,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;IAC3C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED,SAAS,sBAAsB,CAAC,UAAkB,EAAE,YAA6B;IAC/E,MAAM,QAAQ,GAAG,EAAE,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;IAC7C,MAAM,QAAQ,GAAsB,EAAE,CAAC;IACvC,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAsB,EAAE,CAAC;QACvE,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,iBAAiB,CAAC,IAAI,CAAC,CAAC,CAAC;QACnE,IAAI,UAAoB,CAAC;QACzB,IAAI,CAAC;YACH,UAAU,GAAG,EAAE,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;QACxC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ;gBAAE,SAAS;YACzD,OAAO,cAAc,CAAC;QACxB,CAAC;QACD,sEAAsE;QACtE,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,IAAI,UAAU,CAAC,cAAc,EAAE;YAAE,OAAO,cAAc,CAAC;QAC/E,IAAI,UAAkB,CAAC;QACvB,IAAI,CAAC;YACH,UAAU,GAAG,EAAE,CAAC,YAAY,CAAC,UAAU,CAAC,CAAC;QAC3C,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,cAAc,CAAC;QACxB,CAAC;QACD,IAAI,CAAC,YAAY,CAAC,UAAU,EAAE,QAAQ,CAAC;YAAE,OAAO,cAAc,CAAC;QAC/D,IAAI,YAAqB,CAAC;QAC1B,IAAI,CAAC;YACH,YAAY,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC,CAAC;QACjE,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,cAAc,CAAC;QACxB,CAAC;QACD,MAAM,SAAS,GAAG,IAAI,KAAK,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC;QACtD,IAAI,CAAC,QAAQ,CAAC,YAAY,CAAC,IAAI,YAAY,CAAC,SAAS,CAAC,KAAK,qBAAqB;YAAE,OAAO,cAAc,CAAC;QACxG,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACtB,CAAC;IACD,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,cAAc,CAAC;IACjD,OAAO,QAAQ,CAAC,CAAC,CAAC,KAAK,YAAY,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC;AAC1D,CAAC;AAED;;;;GAIG;AACH,SAAS,oBAAoB,CAC3B,IAAY,EACZ,YAA6B,EAC7B,YAAY,GAAsB,EAAE;IAEpC,IAAI,IAAY,CAAC;IACjB,IAAI,CAAC;QACH,IAAI,GAAG,EAAE,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC;IAC/B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,cAAc,CAAC;IACxB,CAAC;IACD,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,KAAK,cAAc;WACnD,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,WAAW,EAAE,KAAK,KAAK;QAAE,OAAO,OAAO,CAAC;IAE/E,2EAA2E;IAC3E,6EAA6E;IAC7E,oEAAoE;IACpE,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IACvC,KAAK,MAAM,IAAI,IAAI,YAAY,EAAE,CAAC;QAChC,MAAM,WAAW,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACvC,IAAI,YAAY,CAAC,WAAW,EAAE,WAAW,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC;YAAE,OAAO,cAAc,CAAC;IACjG,CAAC;IAED,6EAA6E;IAC7E,4EAA4E;IAC5E,8DAA8D;IAC9D,IAAI,EAAU,CAAC;IACf,IAAI,CAAC;QACH,EAAE,GAAG,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IAC9B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,cAAc,CAAC;IACxB,CAAC;IACD,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;QAC9B,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE;YAAE,OAAO,cAAc,CAAC;QAC1C,IAAI,IAAI,CAAC,IAAI,GAAG,kBAAkB;YAAE,OAAO,OAAO,CAAC;QACnD,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACvC,EAAE,CAAC,QAAQ,CAAC,EAAE,EAAE,MAAM,EAAE,CAAC,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;QACzC,MAAM,OAAO,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QACxC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,wBAAwB,CAAC;YAAE,OAAO,OAAO,CAAC;QAErG,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC;QACpD,MAAM,YAAY,GAAG,sBAAsB,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC;QACtE,OAAO,YAAY,KAAK,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,YAAY,CAAC;IACxD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,cAAc,CAAC;IACxB,CAAC;YAAS,CAAC;QACT,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,CAAC;IACnB,CAAC;AACH,CAAC;AAED,sFAAsF;AACtF,SAAS,eAAe,CAAC,GAAW;IAClC,MAAM,UAAU,GAAG,GAAG,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;IAC3C,IAAI,IAAI,CAAC,QAAQ,CAAC,UAAU,CAAC,KAAK,cAAc;QAAE,OAAO,SAAS,CAAC;IACnE,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,KAAK,KAAK;QAAE,OAAO,SAAS,CAAC;IACxE,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,cAAc,CACrB,KAAc,EACd,YAA6B,EAC7B,OAAO,GAAgC,EAAE;IAEzC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;QAAE,OAAO,cAAc,CAAC;IAC5C,MAAM,OAAO,GAAG,OAAO,KAAK,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC;IAC9E,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,EAAiB,EAAE,CAAC,OAAO,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACxH,MAAM,GAAG,GAAG,OAAO,KAAK,CAAC,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,SAAS,CAAC;IAClE,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;QAC1B,wEAAwE;QACxE,6BAA6B;QAC7B,OAAO,GAAG,KAAK,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,cAAc,CAAC;IACtD,CAAC;IACD,MAAM,WAAW,GAAG,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,WAAW,EAAE,CAAC;IACzD,IAAI,WAAW,KAAK,MAAM,IAAI,WAAW,KAAK,UAAU,IAAI,WAAW,KAAK,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC;QAC1H,OAAO,OAAO,CAAC;IACjB,CAAC;IACD,IAAI,IAAI,KAAK,SAAS;QAAE,OAAO,cAAc,CAAC;IAC9C,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,KAAK,SAAS,CAAC,CAAC;IAC7E,IAAI,SAAS,KAAK,SAAS;QAAE,OAAO,OAAO,CAAC;IAC5C,4EAA4E;IAC5E,6EAA6E;IAC7E,IAAI,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,UAAU,CAAC,SAAS,CAAC;QAAE,OAAO,cAAc,CAAC;IACnF,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IACzC,MAAM,QAAQ,GAAG,oBAAoB,CAAC,QAAQ,EAAE,YAAY,EAAE,OAAO,CAAC,eAAe,IAAI,EAAE,CAAC,CAAC;IAC7F,IAAI,QAAQ,KAAK,IAAI;QAAE,OAAO,UAAU,CAAC;IACzC,OAAO,QAAQ,KAAK,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,cAAc,CAAC;AACzD,CAAC;AAED,SAAS,qBAAqB,CAAC,KAM9B;IACC,MAAM,EAAE,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,UAAU,EAAE,gBAAgB,EAAE,GAAG,KAAK,CAAC;IACrE,IAAI,CAAC,OAAO;QAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;IACrE,MAAM,SAAS,GAAG,cAAc,CAAC,KAAK,EAAE,IAAI,EAAE,gBAAgB,CAAC,CAAC;IAChE,IAAI,SAAS,KAAK,UAAU;QAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC;IACvF,IAAI,SAAS,KAAK,cAAc,EAAE,CAAC;QACjC,OAAO;YACL,EAAE,EAAE,KAAK;YACT,IAAI;YACJ,UAAU;YACV,IAAI,EAAE,cAAc;YACpB,MAAM,EAAE,kCAAkC,UAAU,yBAAyB,kBAAkB,uIAAuI;YACtO,UAAU,EAAE,WAAW,UAAU,yBAAyB,kBAAkB,sJAAsJ;SACnO,CAAC;IACJ,CAAC;IACD,OAAO;QACL,EAAE,EAAE,KAAK;QACT,IAAI;QACJ,UAAU;QACV,IAAI,EAAE,UAAU;QAChB,MAAM,EAAE,2BAA2B,UAAU,eAAe,kBAAkB,kCAAkC,IAAI,wHAAwH;QAC5O,UAAU,EAAE,UAAU,kBAAkB,QAAQ,IAAI,gFAAgF,UAAU,uEAAuE;KACtN,CAAC;AACJ,CAAC;AAED,+EAA+E;AAE/E,SAAS,cAAc,CAAC,UAAkB;IACxC,IAAI,GAAW,CAAC;IAChB,IAAI,CAAC;QACH,GAAG,GAAG,EAAE,CAAC,YAAY,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;IAC5C,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ;YAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;QACtF,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,eAAe,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC;IACxG,CAAC;IACD,IAAI,CAAC;QACH,MAAM,MAAM,GAAY,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QACxC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC;YAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,2BAA2B,EAAE,CAAC;QACjF,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC;IACrC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,mBAAmB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC;IAC5G,CAAC;AACH,CAAC;AAED,SAAS,gBAAgB,CACvB,IAA8B,EAC9B,UAAkB,EAClB,OAAO,GAAgC,EAAE;IAEzC,MAAM,IAAI,GAAG,cAAc,CAAC,UAAU,CAAC,CAAC;IACxC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAC;QACb,OAAO;YACL,EAAE,EAAE,KAAK;YACT,IAAI;YACJ,UAAU;YACV,IAAI,EAAE,cAAc;YACpB,MAAM,EAAE,kCAAkC,UAAU,IAAI,IAAI,CAAC,MAAM,8BAA8B;YACjG,UAAU,EAAE,iBAAiB,UAAU,yHAAyH;SACjK,CAAC;IACJ,CAAC;IACD,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS;QAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;IACrF,MAAM,IAAI,GAAG,IAAI,KAAK,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC;IAC/D,IAAI,IAAI,KAAK,SAAS;QAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;IAC/E,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QACpB,OAAO;YACL,EAAE,EAAE,KAAK;YACT,IAAI;YACJ,UAAU;YACV,IAAI,EAAE,cAAc;YACpB,MAAM,EAAE,kCAAkC,UAAU,IAAI,IAAI,KAAK,UAAU,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,+CAA+C;YAC3I,UAAU,EAAE,UAAU,UAAU,uCAAuC;SACxE,CAAC;IACJ,CAAC;IACD,MAAM,OAAO,GAAG,IAAI,KAAK,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,UAAU,CAAC;IACrE,IAAI,OAAO,KAAK,SAAS;QAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;IAClF,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;QACvB,OAAO;YACL,EAAE,EAAE,KAAK;YACT,IAAI;YACJ,UAAU;YACV,IAAI,EAAE,cAAc;YACpB,MAAM,EAAE,kCAAkC,UAAU,IAAI,IAAI,KAAK,UAAU,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,YAAY,+CAA+C;YACzJ,UAAU,EAAE,UAAU,UAAU,uCAAuC;SACxE,CAAC;IACJ,CAAC;IACD,MAAM,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,kBAAkB,CAAC,CAAC;IAC3D,IAAI,OAAO;QAAE,OAAO,qBAAqB,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC,kBAAkB,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,gBAAgB,EAAE,OAAO,EAAE,CAAC,CAAC;IAC9I,OAAO;QACL,EAAE,EAAE,IAAI;QACR,IAAI;QACJ,UAAU;QACV,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,oBAAoB;KAC3E,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,4BAA4B,CAC1C,MAA+B,EAC/B,UAAkB,EAClB,OAAO,GAAgC,EAAE;IAEzC,MAAM,EAAE,GAAG,EAAE,GAAG,MAAM,CAAC;IACvB,IAAI,GAAG,KAAK,SAAS;QAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,UAAU,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;IAC1F,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QACnB,OAAO;YACL,EAAE,EAAE,KAAK;YACT,IAAI,EAAE,UAAU;YAChB,UAAU;YACV,IAAI,EAAE,cAAc;YACpB,MAAM,EAAE,kCAAkC,UAAU,mDAAmD;YACvG,UAAU,EAAE,UAAU,UAAU,uCAAuC;SACxE,CAAC;IACJ,CAAC;IACD,MAAM,EAAE,OAAO,EAAE,GAAG,GAAG,CAAC;IACxB,IAAI,OAAO,KAAK,SAAS;QAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,UAAU,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;IAC9F,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;QACvB,OAAO;YACL,EAAE,EAAE,KAAK;YACT,IAAI,EAAE,UAAU;YAChB,UAAU;YACV,IAAI,EAAE,cAAc;YACpB,MAAM,EAAE,kCAAkC,UAAU,2DAA2D;YAC/G,UAAU,EAAE,UAAU,UAAU,uCAAuC;SACxE,CAAC;IACJ,CAAC;IACD,IAAI,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,kBAAkB,CAAC,EAAE,CAAC;QAC/C,OAAO,qBAAqB,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC,kBAAkB,CAAC,EAAE,IAAI,EAAE,UAAU,EAAE,UAAU,EAAE,gBAAgB,EAAE,OAAO,EAAE,CAAC,CAAC;IAC/I,CAAC;IACD,OAAO;QACL,EAAE,EAAE,IAAI;QACR,IAAI,EAAE,UAAU;QAChB,UAAU;QACV,KAAK,EAAE,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,oBAAoB;KAC3E,CAAC;AACJ,CAAC;AAiBD,SAAS,qBAAqB,CAAC,GAAW;IACxC,MAAM,KAAK,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;IACzB,IAAI,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC;QACjD,IAAI,CAAC;YACH,MAAM,MAAM,GAAY,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YAC1C,OAAO,OAAO,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;QACzD,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,SAAS,CAAC;QACnB,CAAC;IACH,CAAC;IACD,IAAI,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC;QAAE,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IAC5E,OAAO,SAAS,CAAC;AACnB,CAAC;AAED,SAAS,oBAAoB,CAAC,GAAW;IACvC,MAAM,KAAK,GAAG,GAAG,CAAC,IAAI,EAAE,CAAC;IACzB,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC;QAAE,OAAO,SAAS,CAAC;IACrE,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;IACxC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC;IAClC,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAC5F,MAAM,GAAG,GAAa,EAAE,CAAC;IACzB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,MAAM,MAAM,GAAG,qBAAqB,CAAC,IAAI,CAAC,CAAC;QAC3C,IAAI,MAAM,KAAK,SAAS;YAAE,OAAO,SAAS,CAAC;QAC3C,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACnB,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAS,aAAa,CAAC,GAAW;IAChC,MAAM,KAAK,GAAiB,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;IAC9C,IAAI,KAAK,GAAG,KAAK,CAAC;IAClB,IAAI,YAAY,GAAG,KAAK,CAAC;IACzB,IAAI,KAAyB,CAAC;IAC9B,IAAI,aAAa,GAAyB,SAAS,CAAC;IAEpD,MAAM,MAAM,GAAG,CAAC,IAAY,EAAsB,EAAE;QAClD,MAAM,QAAQ,GAAG,oCAAoC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QACtE,OAAO,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE,CAAC;IAC9D,CAAC,CAAC;IAEF,KAAK,MAAM,IAAI,IAAI,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;QACtC,IAAI,aAAa,KAAK,SAAS,EAAE,CAAC;YAChC,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC;YAChC,MAAM,OAAO,GAAG,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;YAC3D,MAAM,MAAM,GAAG,qBAAqB,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;YACvE,IAAI,MAAM,KAAK,SAAS;gBAAE,aAAa,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACrD,IAAI,KAAK,KAAK,CAAC,CAAC,EAAE,CAAC;gBACjB,KAAK,CAAC,IAAI,GAAG,aAAa,CAAC;gBAC3B,aAAa,GAAG,SAAS,CAAC;YAC5B,CAAC;YACD,SAAS;QACX,CAAC;QACD,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;QAC5B,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,IAAI,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC;YAAE,SAAS;QAC9D,MAAM,KAAK,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC;QAC3B,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,IAAI,gBAAgB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;gBACjC,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,OAAO,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC,OAAO,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC,CAAC;gBAC9G,MAAM,CAAC,EAAE,UAAU,CAAC,GAAG,KAAK,CAAC;gBAC7B,IAAI,UAAU,KAAK,kBAAkB,EAAE,CAAC;oBACtC,KAAK,GAAG,IAAI,CAAC;oBACb,KAAK,GAAG,KAAK,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC;gBAClD,CAAC;qBAAM,CAAC;oBACN,kEAAkE;oBAClE,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC;wBAAE,YAAY,GAAG,IAAI,CAAC;oBAC3C,KAAK,GAAG,SAAS,CAAC;gBACpB,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,KAAK,GAAG,SAAS,CAAC;YACpB,CAAC;YACD,SAAS;QACX,CAAC;QACD,IAAI,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YACrC,sDAAsD;YACtD,KAAK,GAAG,IAAI,CAAC;YACb,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC;YACpB,KAAK,GAAG,SAAS,CAAC;YAClB,SAAS;QACX,CAAC;QACD,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,qDAAqD;YACrD,MAAM,MAAM,GAAG,2FAA2F,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACtH,IAAI,MAAM,EAAE,CAAC;gBACX,MAAM,IAAI,GAAG,MAAM,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,CAAC,CAAC;gBACjD,IAAI,IAAI,KAAK,kBAAkB,EAAE,CAAC;oBAChC,KAAK,GAAG,IAAI,CAAC;oBACb,MAAM,CAAC,EAAE,AAAD,EAAG,AAAD,EAAG,AAAD,EAAG,GAAG,EAAE,KAAK,CAAC,GAAG,MAAM,CAAC;oBACpC,IAAI,GAAG,KAAK,SAAS,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;wBAC7C,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC;wBACpB,SAAS;oBACX,CAAC;oBACD,IAAI,GAAG,KAAK,SAAS;wBAAE,KAAK,CAAC,OAAO,GAAG,qBAAqB,CAAC,KAAK,CAAC,CAAC;yBAC/D,IAAI,GAAG,KAAK,KAAK;wBAAE,KAAK,CAAC,GAAG,GAAG,qBAAqB,CAAC,KAAK,CAAC,CAAC;yBAC5D,CAAC;wBACJ,MAAM,MAAM,GAAG,oBAAoB,CAAC,KAAK,CAAC,CAAC;wBAC3C,IAAI,MAAM,KAAK,SAAS;4BAAE,KAAK,CAAC,IAAI,GAAG,MAAM,CAAC;6BACzC,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;4BACtC,aAAa,GAAG,EAAE,CAAC;wBACrB,CAAC;6BAAM,CAAC;4BACN,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC;wBACtB,CAAC;oBACH,CAAC;gBACH,CAAC;gBACD,SAAS;YACX,CAAC;YACD,SAAS;QACX,CAAC;QACD,IAAI,KAAK,KAAK,QAAQ;YAAE,SAAS;QACjC,MAAM,IAAI,GAAG,oCAAoC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QAC7D,IAAI,CAAC,IAAI;YAAE,SAAS;QACpB,MAAM,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,IAAI,CAAC;QAC5B,IAAI,GAAG,KAAK,SAAS,IAAI,KAAK,KAAK,SAAS;YAAE,SAAS;QACvD,IAAI,GAAG,KAAK,SAAS,EAAE,CAAC;YACtB,KAAK,CAAC,OAAO,GAAG,qBAAqB,CAAC,KAAK,CAAC,CAAC;YAC7C,IAAI,KAAK,CAAC,OAAO,KAAK,SAAS;gBAAE,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC;QACvD,CAAC;aAAM,IAAI,GAAG,KAAK,KAAK,EAAE,CAAC;YACzB,KAAK,CAAC,GAAG,GAAG,qBAAqB,CAAC,KAAK,CAAC,CAAC;YACzC,IAAI,KAAK,CAAC,GAAG,KAAK,SAAS;gBAAE,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC;QACnD,CAAC;aAAM,CAAC;YACN,MAAM,MAAM,GAAG,oBAAoB,CAAC,KAAK,CAAC,CAAC;YAC3C,IAAI,MAAM,KAAK,SAAS;gBAAE,KAAK,CAAC,IAAI,GAAG,MAAM,CAAC;iBACzC,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,UAAU,CAAC,GAAG,CAAC;gBAAE,aAAa,GAAG,EAAE,CAAC;;gBACrD,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC;QAC3B,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC;AAC5D,CAAC;AAED,SAAS,aAAa,CAAC,UAAkB,EAAE,OAAO,GAAgC,EAAE;IAClF,IAAI,GAAW,CAAC;IAChB,IAAI,CAAC;QACH,GAAG,GAAG,EAAE,CAAC,YAAY,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;IAC5C,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ;YAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;QAChH,OAAO;YACL,EAAE,EAAE,KAAK;YACT,IAAI,EAAE,OAAO;YACb,UAAU;YACV,IAAI,EAAE,cAAc;YACpB,MAAM,EAAE,kCAAkC,UAAU,mBAAmB,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,+BAA+B;YAC5J,UAAU,EAAE,OAAO,UAAU,uFAAuF;SACrH,CAAC;IACJ,CAAC;IACD,MAAM,IAAI,GAAG,aAAa,CAAC,GAAG,CAAC,CAAC;IAChC,IAAI,IAAI,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;QAC7B,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,IAAI,CAAC,YAAY,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,QAAQ,EAAE,CAAC;IAC7G,CAAC;IACD,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC;IACvB,IAAI,KAAK,CAAC,MAAM,EAAE,CAAC;QACjB,OAAO;YACL,EAAE,EAAE,KAAK;YACT,IAAI,EAAE,OAAO;YACb,UAAU;YACV,IAAI,EAAE,cAAc;YACpB,MAAM,EAAE,kCAAkC,UAAU,2DAA2D,kBAAkB,oDAAoD;YACrL,UAAU,EAAE,WAAW,UAAU,8HAA8H;SAChK,CAAC;IACJ,CAAC;IACD,MAAM,SAAS,GAAG,cAAc,CAAC,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;IACjH,IAAI,SAAS,KAAK,UAAU;QAAE,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,UAAU,EAAE,CAAC;IAChG,IAAI,SAAS,KAAK,cAAc,EAAE,CAAC;QACjC,OAAO;YACL,EAAE,EAAE,KAAK;YACT,IAAI,EAAE,OAAO;YACb,UAAU;YACV,IAAI,EAAE,cAAc;YACpB,MAAM,EAAE,kCAAkC,UAAU,0BAA0B,kBAAkB,iEAAiE;YACjK,UAAU,EAAE,WAAW,UAAU,oCAAoC,kBAAkB,qCAAqC;SAC7H,CAAC;IACJ,CAAC;IACD,OAAO;QACL,EAAE,EAAE,KAAK;QACT,IAAI,EAAE,OAAO;QACb,UAAU;QACV,IAAI,EAAE,UAAU;QAChB,MAAM,EAAE,2BAA2B,UAAU,eAAe,kBAAkB,iMAAiM;QAC/Q,UAAU,EAAE,sBAAsB,kBAAkB,qGAAqG,UAAU,2EAA2E;KAC/O,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,4BAA4B,CAC1C,IAAqB,EACrB,OAAO,GAAgC,EAAE;IAEzC,MAAM,UAAU,GAAG,gCAAgC,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACnE,IAAI,IAAI,KAAK,OAAO;QAAE,OAAO,aAAa,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC;IAChE,OAAO,gBAAgB,CAAC,IAAI,EAAE,UAAU,EAAE,OAAO,CAAC,CAAC;AACrD,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"openclaw-host-installer.d.ts","sourceRoot":"","sources":["../../src/installers/openclaw-host-installer.ts"],"names":[],"mappings":"AAuBA,OAAO,KAAK,EACV,aAAa,EACb,kBAAkB,EAClB,iBAAiB,EACjB,oBAAoB,EACpB,mBAAmB,EACnB,gBAAgB,EACjB,MAAM,uBAAuB,CAAC;
|
|
1
|
+
{"version":3,"file":"openclaw-host-installer.d.ts","sourceRoot":"","sources":["../../src/installers/openclaw-host-installer.ts"],"names":[],"mappings":"AAuBA,OAAO,KAAK,EACV,aAAa,EACb,kBAAkB,EAClB,iBAAiB,EACjB,oBAAoB,EACpB,mBAAmB,EACnB,gBAAgB,EACjB,MAAM,uBAAuB,CAAC;AAiE/B;;;;;GAKG;AACH,qBAAa,qBAAsB,YAAW,aAAa;IACzD,QAAQ,CAAC,MAAM,cAAc;IAEvB,OAAO,CAAC,IAAI,EAAE,kBAAkB,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAiKlE;IAEK,SAAS,CAAC,IAAI,EAAE,oBAAoB,GAAG,OAAO,CAAC,mBAAmB,CAAC,CAwGxE;IAGD,MAAM,IAAI,gBAAgB,CAsBzB;CACF"}
|