@vectle/cli 1.0.0 → 1.1.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 +15 -0
- package/README.md +15 -8
- package/dist/activity.d.ts +10 -0
- package/dist/activity.js +10 -0
- package/dist/activity.js.map +1 -0
- package/dist/adapters/claude.d.ts +4 -0
- package/dist/adapters/claude.js +279 -0
- package/dist/adapters/claude.js.map +1 -0
- package/dist/adapters/codex.d.ts +16 -0
- package/dist/adapters/codex.js +410 -0
- package/dist/adapters/codex.js.map +1 -0
- package/dist/adapters/common.d.ts +80 -0
- package/dist/adapters/common.js +249 -0
- package/dist/adapters/common.js.map +1 -0
- package/dist/adapters/cursor.d.ts +4 -0
- package/dist/adapters/cursor.js +240 -0
- package/dist/adapters/cursor.js.map +1 -0
- package/dist/adapters/vscode.d.ts +4 -0
- package/dist/adapters/vscode.js +240 -0
- package/dist/adapters/vscode.js.map +1 -0
- package/dist/agent-policy.d.ts +50 -0
- package/dist/agent-policy.js +83 -0
- package/dist/agent-policy.js.map +1 -0
- package/dist/client.d.ts +69 -10
- package/dist/client.js +247 -24
- package/dist/client.js.map +1 -1
- package/dist/constants.d.ts +12 -2
- package/dist/constants.js +7 -1
- package/dist/constants.js.map +1 -1
- package/dist/contracts.d.ts +53 -0
- package/dist/contracts.js +68 -0
- package/dist/contracts.js.map +1 -0
- package/dist/delivery.d.ts +80 -0
- package/dist/delivery.js +304 -0
- package/dist/delivery.js.map +1 -0
- package/dist/findings.d.ts +12 -0
- package/dist/findings.js +41 -0
- package/dist/findings.js.map +1 -0
- package/dist/help.d.ts +1 -0
- package/dist/help.js +53 -0
- package/dist/help.js.map +1 -0
- package/dist/index.js +370 -72
- package/dist/index.js.map +1 -1
- package/dist/integrations.d.ts +126 -0
- package/dist/integrations.js +173 -0
- package/dist/integrations.js.map +1 -0
- package/dist/legacy-compat.d.ts +45 -0
- package/dist/legacy-compat.js +149 -0
- package/dist/legacy-compat.js.map +1 -0
- package/dist/lifecycle.d.ts +50 -0
- package/dist/lifecycle.js +146 -0
- package/dist/lifecycle.js.map +1 -0
- package/dist/locator.d.ts +58 -0
- package/dist/locator.js +233 -0
- package/dist/locator.js.map +1 -0
- package/dist/mcp.d.ts +12 -2
- package/dist/mcp.js +194 -48
- package/dist/mcp.js.map +1 -1
- package/dist/modes.d.ts +37 -0
- package/dist/modes.js +32 -0
- package/dist/modes.js.map +1 -0
- package/dist/outbox.d.ts +9 -0
- package/dist/outbox.js +188 -0
- package/dist/outbox.js.map +1 -0
- package/dist/parser.d.ts +10 -0
- package/dist/parser.js +99 -0
- package/dist/parser.js.map +1 -0
- package/dist/pulse.d.ts +122 -0
- package/dist/pulse.js +412 -0
- package/dist/pulse.js.map +1 -0
- package/dist/release-manifest.d.ts +123 -0
- package/dist/release-manifest.js +226 -0
- package/dist/release-manifest.js.map +1 -0
- package/dist/release.d.ts +1 -1
- package/dist/response.d.ts +17 -0
- package/dist/response.js +15 -0
- package/dist/response.js.map +1 -1
- package/dist/rollout.d.ts +8 -0
- package/dist/rollout.js +27 -0
- package/dist/rollout.js.map +1 -0
- package/dist/runtime.d.ts +60 -0
- package/dist/runtime.js +276 -0
- package/dist/runtime.js.map +1 -0
- package/dist/secure-store.d.ts +36 -0
- package/dist/secure-store.js +282 -0
- package/dist/secure-store.js.map +1 -0
- package/dist/setup.d.ts +159 -0
- package/dist/setup.js +629 -0
- package/dist/setup.js.map +1 -0
- package/dist/state.d.ts +98 -0
- package/dist/state.js +226 -0
- package/dist/state.js.map +1 -0
- package/dist/status.d.ts +282 -0
- package/dist/status.js +213 -0
- package/dist/status.js.map +1 -0
- package/dist/store.d.ts +44 -2
- package/dist/store.js +222 -44
- package/dist/store.js.map +1 -1
- package/dist/update.d.ts +33 -1
- package/dist/update.js +88 -16
- package/dist/update.js.map +1 -1
- package/dist/write-journal.d.ts +71 -0
- package/dist/write-journal.js +175 -0
- package/dist/write-journal.js.map +1 -0
- package/package.json +7 -2
|
@@ -0,0 +1,249 @@
|
|
|
1
|
+
import { spawn } from 'node:child_process';
|
|
2
|
+
import { existsSync, lstatSync, mkdtempSync, readFileSync, unlinkSync, rmSync } from 'node:fs';
|
|
3
|
+
import { homedir, tmpdir } from 'node:os';
|
|
4
|
+
import { isAbsolute, join, resolve } from 'node:path';
|
|
5
|
+
import { fileURLToPath } from 'node:url';
|
|
6
|
+
import { renderAgentPolicy } from '../agent-policy.js';
|
|
7
|
+
import { integrationBindingDigest, loadIntegrationManifest, managedMcpArguments } from '../integrations.js';
|
|
8
|
+
import { atomicWriteJson, atomicWriteText, digestLocal } from '../state.js';
|
|
9
|
+
import { digestFile, durableRuntimeForSetup, inspectCurrentRuntime, provisionManagedRuntime } from '../runtime.js';
|
|
10
|
+
export const BEGIN_POLICY = '<!-- BEGIN:Vectle agent policy v2 -->';
|
|
11
|
+
export const END_POLICY = '<!-- END:Vectle agent policy v2 -->';
|
|
12
|
+
export const MAX_ADAPTER_CONFIG_BYTES = 128 * 1024;
|
|
13
|
+
export const MAX_INSTRUCTIONS_BYTES = 32 * 1024;
|
|
14
|
+
export function safeReadFile(path, maxBytes = MAX_ADAPTER_CONFIG_BYTES) {
|
|
15
|
+
if (!existsSync(path))
|
|
16
|
+
return null;
|
|
17
|
+
const stats = lstatSync(path);
|
|
18
|
+
if (stats.isSymbolicLink() || !stats.isFile() || stats.size > maxBytes)
|
|
19
|
+
throw new Error('client_config_conflict');
|
|
20
|
+
return readFileSync(path, 'utf8');
|
|
21
|
+
}
|
|
22
|
+
export function safeClientHome(input, fallback) {
|
|
23
|
+
const value = input ?? fallback;
|
|
24
|
+
if (!isAbsolute(value))
|
|
25
|
+
throw new Error('unsafe_client_home');
|
|
26
|
+
const resolved = resolve(value);
|
|
27
|
+
const accountHome = resolve(homedir());
|
|
28
|
+
if (resolved === accountHome || resolved === resolve(join(accountHome, '..')))
|
|
29
|
+
throw new Error('unsafe_client_home');
|
|
30
|
+
if (existsSync(resolved)) {
|
|
31
|
+
const stats = lstatSync(resolved);
|
|
32
|
+
if (stats.isSymbolicLink() || !stats.isDirectory())
|
|
33
|
+
throw new Error('unsafe_client_home');
|
|
34
|
+
}
|
|
35
|
+
return resolved;
|
|
36
|
+
}
|
|
37
|
+
export function resolveCliEntry(value) {
|
|
38
|
+
const current = value ?? fileURLToPath(new URL('../index.js', import.meta.url));
|
|
39
|
+
if (!isAbsolute(current))
|
|
40
|
+
throw new Error('runtime_not_durable');
|
|
41
|
+
return current;
|
|
42
|
+
}
|
|
43
|
+
export function resolveAdapterRuntime(options, stateRoot) {
|
|
44
|
+
const requestedEntry = resolveCliEntry(options.cliEntry);
|
|
45
|
+
let runtime = options.nodePath || options.cliEntry
|
|
46
|
+
? inspectCurrentRuntime({ nodePath: options.nodePath, cliEntry: requestedEntry, stateRoot })
|
|
47
|
+
: durableRuntimeForSetup(stateRoot).descriptor;
|
|
48
|
+
if (!runtime.durable) {
|
|
49
|
+
const pointer = provisionManagedRuntime(stateRoot, { nodePath: runtime.node_path, cliEntry: runtime.cli_entry });
|
|
50
|
+
runtime = inspectCurrentRuntime({ nodePath: pointer.node_path, cliEntry: pointer.cli_entry, stateRoot });
|
|
51
|
+
}
|
|
52
|
+
if (!runtime.durable || !runtime.node_sha256 || !runtime.cli_sha256 || !isAbsolute(runtime.node_path) || !isAbsolute(runtime.cli_entry))
|
|
53
|
+
throw new Error('runtime_not_durable');
|
|
54
|
+
return runtime;
|
|
55
|
+
}
|
|
56
|
+
export function adapterPolicy(config, client, capability) {
|
|
57
|
+
return renderAgentPolicy({
|
|
58
|
+
mode: config.mode ?? 'active',
|
|
59
|
+
clientFamily: client,
|
|
60
|
+
integrationCapability: capability,
|
|
61
|
+
approvedBehaviorCeiling: { consentVersion: 2, startupPulse: config.installation?.automatic_lookup ? 'automatic' : 'on_demand', sharingAndCorrection: config.installation?.automatic_sharing ? 'automatic' : 'explicit_only' },
|
|
62
|
+
approvalPersistence: { read: 'promptless', write: 'promptless' },
|
|
63
|
+
tools: { startupPulse: true, shareFinding: true, correctFinding: true },
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
export function quotedCommand(args) {
|
|
67
|
+
return args.map(value => JSON.stringify(value)).join(' ');
|
|
68
|
+
}
|
|
69
|
+
export function hookArgs(client, nodePath, cliEntry, adapterEntryId, stateRoot, bindingDigest) {
|
|
70
|
+
return [nodePath, cliEntry, 'hook', 'session-start', '--client', client, '--adapter-entry-id', adapterEntryId, '--state-root', stateRoot, '--integration-manifest-digest', bindingDigest];
|
|
71
|
+
}
|
|
72
|
+
export function managedMcpArgVector(client, cliEntry, adapterEntryId, stateRoot, bindingDigest) {
|
|
73
|
+
return [cliEntry, 'mcp', '--client', client, '--adapter-entry-id', adapterEntryId, '--state-root', stateRoot, '--integration-manifest-digest', bindingDigest];
|
|
74
|
+
}
|
|
75
|
+
export function bindingFor(input) {
|
|
76
|
+
if (!input.runtime.node_sha256 || !input.runtime.cli_sha256)
|
|
77
|
+
throw new Error('runtime_not_durable');
|
|
78
|
+
const details = {
|
|
79
|
+
clientFamily: input.client,
|
|
80
|
+
profileKey: input.profileKey,
|
|
81
|
+
stateRoot: input.stateRoot,
|
|
82
|
+
nodePath: input.runtime.node_path,
|
|
83
|
+
nodeSha256: input.runtime.node_sha256,
|
|
84
|
+
cliEntry: input.runtime.cli_entry,
|
|
85
|
+
cliSha256: input.runtime.cli_sha256,
|
|
86
|
+
policyBaseVersion: input.policy.base_version,
|
|
87
|
+
policyVariant: input.policy.variant,
|
|
88
|
+
policyChecksum: input.policy.checksum,
|
|
89
|
+
ownedTargetIdentifiers: input.ownedTargetIdentifiers,
|
|
90
|
+
managedCommandArgumentVectors: input.managedCommandArgumentVectors,
|
|
91
|
+
};
|
|
92
|
+
return integrationBindingDigest(input.config, input.adapterEntryId, details);
|
|
93
|
+
}
|
|
94
|
+
export function mergeMarkedBlock(content, begin, end, block, maxBytes) {
|
|
95
|
+
const beginCount = content.split(begin).length - 1;
|
|
96
|
+
const endCount = content.split(end).length - 1;
|
|
97
|
+
if (beginCount !== endCount || beginCount > 1)
|
|
98
|
+
throw new Error('client_config_conflict');
|
|
99
|
+
const escapedBegin = escapeRegex(begin);
|
|
100
|
+
const escapedEnd = escapeRegex(end);
|
|
101
|
+
const next = beginCount === 1
|
|
102
|
+
? content.replace(new RegExp(`${escapedBegin}[\\s\\S]*?${escapedEnd}`, 'u'), block)
|
|
103
|
+
: `${content.replace(/\s*$/u, '')}\n\n${block}\n`;
|
|
104
|
+
if (Buffer.byteLength(next, 'utf8') > maxBytes)
|
|
105
|
+
throw new Error('policy_size_limit');
|
|
106
|
+
return next;
|
|
107
|
+
}
|
|
108
|
+
export function escapeRegex(value) { return value.replace(/[.*+?^${}()|[\]\\]/gu, '\\$&'); }
|
|
109
|
+
export function policyBlock(policy) {
|
|
110
|
+
return `${BEGIN_POLICY}\n${policy.text}\n${END_POLICY}`;
|
|
111
|
+
}
|
|
112
|
+
export function jsonObject(path, maxBytes = MAX_ADAPTER_CONFIG_BYTES) {
|
|
113
|
+
const content = safeReadFile(path, maxBytes);
|
|
114
|
+
if (content === null || !content.trim())
|
|
115
|
+
return {};
|
|
116
|
+
try {
|
|
117
|
+
const value = JSON.parse(content);
|
|
118
|
+
if (!value || typeof value !== 'object' || Array.isArray(value))
|
|
119
|
+
throw new Error('invalid');
|
|
120
|
+
return value;
|
|
121
|
+
}
|
|
122
|
+
catch {
|
|
123
|
+
throw new Error('client_config_conflict');
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
export function writeOwnedJson(path, value) {
|
|
127
|
+
atomicWriteJson(path, value);
|
|
128
|
+
}
|
|
129
|
+
export function digestText(value) { return digestLocal(value); }
|
|
130
|
+
export function snapshots(paths) {
|
|
131
|
+
return paths.map(path => ({ path, content: safeReadFile(path, path.endsWith('.md') ? MAX_INSTRUCTIONS_BYTES : MAX_ADAPTER_CONFIG_BYTES) }));
|
|
132
|
+
}
|
|
133
|
+
export function restoreSnapshots(values) {
|
|
134
|
+
for (const value of values) {
|
|
135
|
+
if (value.content === null) {
|
|
136
|
+
try {
|
|
137
|
+
unlinkSync(value.path);
|
|
138
|
+
}
|
|
139
|
+
catch { /* absent */ }
|
|
140
|
+
}
|
|
141
|
+
else
|
|
142
|
+
atomicWriteText(value.path, value.content);
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
export function commonChecks(overrides = {}) {
|
|
146
|
+
const codes = ['runtime_durable', 'credential_stored', 'mcp_configured', 'policy_installed', 'approval_persistence', 'lifecycle_hook_configured', 'lifecycle_marker', 'server_smoke', 'client_smoke'];
|
|
147
|
+
return codes.map(code => ({ code, status: overrides[code] ?? (['lifecycle_marker'].includes(code) ? 'pending' : 'passed') }));
|
|
148
|
+
}
|
|
149
|
+
export function capabilityFor(options) {
|
|
150
|
+
const limitations = [];
|
|
151
|
+
if (options.cloudNotCovered)
|
|
152
|
+
limitations.push('cloud_not_covered');
|
|
153
|
+
if (!options.hookAvailable)
|
|
154
|
+
limitations.push('lifecycle_unsupported');
|
|
155
|
+
if (options.serverTrustVerified === false)
|
|
156
|
+
limitations.push('managed_policy_block');
|
|
157
|
+
if (!options.persistentApprovalSupported)
|
|
158
|
+
limitations.push('host_approval_may_repeat');
|
|
159
|
+
return { capability: options.marker && options.hookAvailable ? 'full_lifecycle' : 'policy_and_mcp', limitations };
|
|
160
|
+
}
|
|
161
|
+
export async function runManagedMcpSmoke(nodePath, cliEntry, client, config, entry) {
|
|
162
|
+
if (!config.stateRoot)
|
|
163
|
+
return { clientSmoke: 'failed', tools: [] };
|
|
164
|
+
const smokeHome = mkdtempSync(join(tmpdir(), `vectle-${client}-smoke-`));
|
|
165
|
+
const stateRoot = config.stateRoot;
|
|
166
|
+
const boundConfigPath = join(stateRoot, 'config.json');
|
|
167
|
+
const manifestPath = join(stateRoot, 'integrations.json');
|
|
168
|
+
let priorBoundConfig = null;
|
|
169
|
+
let priorManifest = null;
|
|
170
|
+
try {
|
|
171
|
+
priorBoundConfig = safeReadFile(boundConfigPath);
|
|
172
|
+
priorManifest = safeReadFile(manifestPath);
|
|
173
|
+
writeOwnedJson(boundConfigPath, {
|
|
174
|
+
schema_version: 'vectle-config-v2', endpoint: config.endpoint.replace(/\/$/u, ''), mode: config.mode ?? 'active',
|
|
175
|
+
query_analytics: config.queryAnalytics, operational_analytics: config.operationalAnalytics !== false,
|
|
176
|
+
rollout_seed: config.rollout_seed ?? 'smoke-seed', installation: config.installation,
|
|
177
|
+
});
|
|
178
|
+
const manifest = loadIntegrationManifest(stateRoot);
|
|
179
|
+
writeOwnedJson(manifestPath, { schema_version: 'integrations-v1', entries: [...manifest.entries.filter(item => item.adapter_entry_id !== entry.adapter_entry_id), entry] });
|
|
180
|
+
}
|
|
181
|
+
catch {
|
|
182
|
+
try {
|
|
183
|
+
rmSync(smokeHome, { recursive: true, force: true });
|
|
184
|
+
}
|
|
185
|
+
catch { /* best effort */ }
|
|
186
|
+
return { clientSmoke: 'failed', tools: [] };
|
|
187
|
+
}
|
|
188
|
+
const input = `${JSON.stringify({ jsonrpc: '2.0', id: 1, method: 'initialize', params: { protocolVersion: '2025-03-26' } })}\n${JSON.stringify({ jsonrpc: '2.0', id: 2, method: 'tools/list', params: {} })}\n`;
|
|
189
|
+
const env = {
|
|
190
|
+
PATH: process.env.PATH ?? '', HOME: smokeHome, CODEX_HOME: join(smokeHome, '.codex'), CLAUDE_CONFIG_DIR: join(smokeHome, '.claude'),
|
|
191
|
+
NODE_ENV: 'production', VECTLE_CONFIG_DIR: join(smokeHome, 'config'),
|
|
192
|
+
};
|
|
193
|
+
return new Promise(resolveResult => {
|
|
194
|
+
const cleanup = () => {
|
|
195
|
+
try {
|
|
196
|
+
rmSync(smokeHome, { recursive: true, force: true });
|
|
197
|
+
}
|
|
198
|
+
catch { /* best effort */ }
|
|
199
|
+
try {
|
|
200
|
+
if (priorBoundConfig === null)
|
|
201
|
+
unlinkSync(boundConfigPath);
|
|
202
|
+
else
|
|
203
|
+
atomicWriteText(boundConfigPath, priorBoundConfig);
|
|
204
|
+
}
|
|
205
|
+
catch { /* best effort */ }
|
|
206
|
+
try {
|
|
207
|
+
if (priorManifest === null)
|
|
208
|
+
unlinkSync(manifestPath);
|
|
209
|
+
else
|
|
210
|
+
atomicWriteText(manifestPath, priorManifest);
|
|
211
|
+
}
|
|
212
|
+
catch { /* best effort */ }
|
|
213
|
+
};
|
|
214
|
+
const finish = (result) => { cleanup(); resolveResult(result); };
|
|
215
|
+
const child = spawn(nodePath, [cliEntry, ...managedMcpArguments(client, entry.adapter_entry_id, stateRoot, entry.integration_binding_digest)], { env, stdio: 'pipe' });
|
|
216
|
+
let output = '';
|
|
217
|
+
const timer = setTimeout(() => { child.kill(); finish({ clientSmoke: 'failed', tools: [] }); }, 10_000);
|
|
218
|
+
child.stdout.on('data', chunk => { output += String(chunk); });
|
|
219
|
+
child.stderr.resume();
|
|
220
|
+
child.on('error', () => { clearTimeout(timer); finish({ clientSmoke: 'failed', tools: [] }); });
|
|
221
|
+
child.on('close', () => {
|
|
222
|
+
clearTimeout(timer);
|
|
223
|
+
try {
|
|
224
|
+
const lines = output.trim().split('\n').map(line => JSON.parse(line));
|
|
225
|
+
const initialize = lines.find(line => line.id === 1)?.result;
|
|
226
|
+
const list = lines.find(line => line.id === 2)?.result;
|
|
227
|
+
const instructions = typeof initialize?.instructions === 'string' ? initialize.instructions : '';
|
|
228
|
+
const tools = Array.isArray(list?.tools) ? list.tools.map(item => item && typeof item === 'object' && typeof item.name === 'string' ? String(item.name) : '').filter(Boolean) : [];
|
|
229
|
+
finish({ clientSmoke: initialize && instructions.includes('Vectle') && tools.includes('startup_pulse') ? 'passed' : 'failed', tools });
|
|
230
|
+
}
|
|
231
|
+
catch {
|
|
232
|
+
finish({ clientSmoke: 'failed', tools: [] });
|
|
233
|
+
}
|
|
234
|
+
});
|
|
235
|
+
child.stdin.end(input);
|
|
236
|
+
});
|
|
237
|
+
}
|
|
238
|
+
export function bindingVectors(client, runtime, adapterEntryId, stateRoot) {
|
|
239
|
+
return {
|
|
240
|
+
mcp: managedMcpArgVector(client, runtime.cli_entry, adapterEntryId, stateRoot, '<binding-digest>'),
|
|
241
|
+
hook: hookArgs(client, runtime.node_path, runtime.cli_entry, adapterEntryId, stateRoot, '<binding-digest>'),
|
|
242
|
+
};
|
|
243
|
+
}
|
|
244
|
+
export function stableRuntimeDigest(runtime) {
|
|
245
|
+
if (!runtime.node_sha256 || !runtime.cli_sha256)
|
|
246
|
+
throw new Error('runtime_not_durable');
|
|
247
|
+
return { node: runtime.node_sha256, cli: runtime.cli_sha256, nodeFile: digestFile(runtime.node_path), cliFile: digestFile(runtime.cli_entry) };
|
|
248
|
+
}
|
|
249
|
+
//# sourceMappingURL=common.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"common.js","sourceRoot":"","sources":["../../src/adapters/common.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { SetupAdapter } from '../setup.js';
|
|
2
|
+
import { type AdapterOptions } from './common.js';
|
|
3
|
+
export declare function createCursorAdapter(options?: AdapterOptions): SetupAdapter;
|
|
4
|
+
export declare function removeCursorIntegration(options?: AdapterOptions, adapterEntryId?: string): Promise<boolean>;
|
|
@@ -0,0 +1,240 @@
|
|
|
1
|
+
import { chmodSync, mkdirSync } from 'node:fs';
|
|
2
|
+
import { homedir } from 'node:os';
|
|
3
|
+
import { join } from 'node:path';
|
|
4
|
+
import { readHookState } from '../lifecycle.js';
|
|
5
|
+
import { managedMcpArguments, newIntegrationEntry, validateAdapterEntryId } from '../integrations.js';
|
|
6
|
+
import { atomicWriteJson, digestLocal } from '../state.js';
|
|
7
|
+
import { inspectCurrentRuntime } from '../runtime.js';
|
|
8
|
+
import { adapterPolicy, bindingFor, bindingVectors, commonChecks, hookArgs, jsonObject, quotedCommand, resolveAdapterRuntime, resolveCliEntry, restoreSnapshots, runManagedMcpSmoke, safeClientHome, snapshots, } from './common.js';
|
|
9
|
+
function cursorHome(options) { return safeClientHome(options.home, join(homedir(), '.cursor')); }
|
|
10
|
+
function mcpPath(home) { return join(home, 'mcp.json'); }
|
|
11
|
+
function hooksPath(home) { return join(home, 'hooks.json'); }
|
|
12
|
+
function ensureDirectory(path) {
|
|
13
|
+
mkdirSync(path, { recursive: true, mode: 0o700 });
|
|
14
|
+
try {
|
|
15
|
+
chmodSync(path, 0o700);
|
|
16
|
+
}
|
|
17
|
+
catch { /* Windows ACLs are inherited. */ }
|
|
18
|
+
}
|
|
19
|
+
function serverFromMcp(root) {
|
|
20
|
+
const servers = root.mcpServers;
|
|
21
|
+
if (!servers || typeof servers !== 'object' || Array.isArray(servers))
|
|
22
|
+
return null;
|
|
23
|
+
const server = servers.vectle;
|
|
24
|
+
return server && typeof server === 'object' && !Array.isArray(server) ? server : null;
|
|
25
|
+
}
|
|
26
|
+
function managedServer(server, adapterEntryId) {
|
|
27
|
+
if (!server || server.type !== 'stdio' || typeof server.command !== 'string' || !Array.isArray(server.args) || server.args.some(value => typeof value !== 'string'))
|
|
28
|
+
return false;
|
|
29
|
+
const args = server.args;
|
|
30
|
+
const idIndex = args.indexOf('--adapter-entry-id');
|
|
31
|
+
return Boolean(idIndex >= 0 && validateAdapterEntryId(args[idIndex + 1]) && (!adapterEntryId || args[idIndex + 1] === adapterEntryId)
|
|
32
|
+
&& args[0] && args[1] === 'mcp' && args.includes('--client') && args[args.indexOf('--client') + 1] === 'cursor'
|
|
33
|
+
&& args.includes('--state-root') && args.includes('--integration-manifest-digest'));
|
|
34
|
+
}
|
|
35
|
+
function mergeMcp(root, command, args) {
|
|
36
|
+
const serversValue = root.mcpServers;
|
|
37
|
+
const servers = serversValue === undefined ? {} : serversValue;
|
|
38
|
+
if (!servers || typeof servers !== 'object' || Array.isArray(servers))
|
|
39
|
+
throw new Error('client_config_conflict');
|
|
40
|
+
const current = servers.vectle;
|
|
41
|
+
if (current !== undefined && (!current || typeof current !== 'object' || Array.isArray(current) || !managedServer(current)))
|
|
42
|
+
throw new Error('client_config_conflict');
|
|
43
|
+
return { ...root, mcpServers: { ...servers, vectle: { type: 'stdio', command, args } } };
|
|
44
|
+
}
|
|
45
|
+
function commandFromHook(value) {
|
|
46
|
+
if (!value || typeof value !== 'object' || Array.isArray(value))
|
|
47
|
+
return null;
|
|
48
|
+
const item = value;
|
|
49
|
+
return typeof item.command === 'string' ? item.command : null;
|
|
50
|
+
}
|
|
51
|
+
function decodeCommand(value) {
|
|
52
|
+
const tokens = value.match(/"(?:[^"\\]|\\.)*"/gu);
|
|
53
|
+
if (!tokens || tokens.join(' ') !== value)
|
|
54
|
+
return null;
|
|
55
|
+
try {
|
|
56
|
+
const decoded = tokens.map(token => JSON.parse(token));
|
|
57
|
+
return decoded.every(item => typeof item === 'string') ? decoded : null;
|
|
58
|
+
}
|
|
59
|
+
catch {
|
|
60
|
+
return null;
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
function managedHook(value, adapterEntryId) {
|
|
64
|
+
const args = typeof value === 'string' ? decodeCommand(value) : null;
|
|
65
|
+
const idIndex = args?.indexOf('--adapter-entry-id') ?? -1;
|
|
66
|
+
return Boolean(args && args[2] === 'hook' && args[3] === 'session-start' && args[4] === '--client' && args[5] === 'cursor' && idIndex >= 0 && validateAdapterEntryId(args[idIndex + 1]) && (!adapterEntryId || args[idIndex + 1] === adapterEntryId));
|
|
67
|
+
}
|
|
68
|
+
function mergeHooks(root, command, adapterEntryId) {
|
|
69
|
+
const version = root.version === undefined ? 1 : root.version;
|
|
70
|
+
if (version !== 1)
|
|
71
|
+
throw new Error('client_config_conflict');
|
|
72
|
+
const hooksValue = root.hooks;
|
|
73
|
+
const hooks = hooksValue === undefined ? {} : hooksValue;
|
|
74
|
+
if (!hooks || typeof hooks !== 'object' || Array.isArray(hooks))
|
|
75
|
+
throw new Error('client_config_conflict');
|
|
76
|
+
const sessionValue = hooks.sessionStart;
|
|
77
|
+
const session = sessionValue === undefined ? [] : sessionValue;
|
|
78
|
+
if (!Array.isArray(session))
|
|
79
|
+
throw new Error('client_config_conflict');
|
|
80
|
+
const managedIndexes = [];
|
|
81
|
+
for (let index = 0; index < session.length; index += 1) {
|
|
82
|
+
const item = session[index];
|
|
83
|
+
if (!item || typeof item !== 'object' || Array.isArray(item))
|
|
84
|
+
continue;
|
|
85
|
+
const commands = [commandFromHook(item)].filter((value) => Boolean(value));
|
|
86
|
+
if (commands.some(value => managedHook(value, adapterEntryId)))
|
|
87
|
+
managedIndexes.push(index);
|
|
88
|
+
else if (commands.some(value => value.includes('vectle') && value.includes('session-start')))
|
|
89
|
+
throw new Error('client_config_conflict');
|
|
90
|
+
}
|
|
91
|
+
if (managedIndexes.length > 1)
|
|
92
|
+
throw new Error('client_config_conflict');
|
|
93
|
+
const nextSession = [...session];
|
|
94
|
+
const managed = { command };
|
|
95
|
+
if (managedIndexes.length === 1)
|
|
96
|
+
nextSession[managedIndexes[0]] = managed;
|
|
97
|
+
else
|
|
98
|
+
nextSession.push(managed);
|
|
99
|
+
return { ...root, version: 1, hooks: { ...hooks, sessionStart: nextSession } };
|
|
100
|
+
}
|
|
101
|
+
function exactHook(root, command) {
|
|
102
|
+
const hooks = root.hooks && typeof root.hooks === 'object' && !Array.isArray(root.hooks) ? root.hooks : null;
|
|
103
|
+
const session = hooks?.sessionStart;
|
|
104
|
+
return Array.isArray(session) && session.some(item => item && typeof item === 'object' && !Array.isArray(item) && commandFromHook(item) === command);
|
|
105
|
+
}
|
|
106
|
+
function targetIdentifiers(hooksSupported) {
|
|
107
|
+
return ['cursor.mcp.json:mcpServers.vectle', ...(hooksSupported ? ['cursor.hooks.json:sessionStart'] : [])];
|
|
108
|
+
}
|
|
109
|
+
function vectorsFor(hooksSupported, client, runtime, id, root) {
|
|
110
|
+
const vectors = bindingVectors(client, runtime, id, root);
|
|
111
|
+
return hooksSupported ? [vectors.mcp, vectors.hook] : [vectors.mcp];
|
|
112
|
+
}
|
|
113
|
+
export function createCursorAdapter(options = {}) {
|
|
114
|
+
let previous = [];
|
|
115
|
+
return {
|
|
116
|
+
client: 'cursor',
|
|
117
|
+
profileLabel: 'default',
|
|
118
|
+
async apply(input) {
|
|
119
|
+
if (!validateAdapterEntryId(input.adapterEntryId))
|
|
120
|
+
throw new Error('invalid_adapter_entry_id');
|
|
121
|
+
const home = cursorHome(options);
|
|
122
|
+
ensureDirectory(home);
|
|
123
|
+
const mcp = mcpPath(home);
|
|
124
|
+
const hooks = hooksPath(home);
|
|
125
|
+
const hooksSupported = options.hooksSupported !== false;
|
|
126
|
+
const capability = input.targetCapability === 'full_lifecycle' && !hooksSupported ? 'policy_and_mcp' : input.targetCapability;
|
|
127
|
+
const installHook = capability === 'full_lifecycle';
|
|
128
|
+
const runtime = resolveAdapterRuntime(options, input.stateRoot);
|
|
129
|
+
const requestedPolicy = adapterPolicy(input.config, 'cursor', input.targetCapability);
|
|
130
|
+
if (input.policyChecksum !== requestedPolicy.checksum)
|
|
131
|
+
throw new Error('policy_binding_mismatch');
|
|
132
|
+
const policy = capability === input.targetCapability ? requestedPolicy : adapterPolicy(input.config, 'cursor', capability);
|
|
133
|
+
const vectors = bindingVectors('cursor', runtime, input.adapterEntryId, input.stateRoot);
|
|
134
|
+
const binding = bindingFor({ client: 'cursor', profileKey: 'default', stateRoot: input.stateRoot, config: input.config, adapterEntryId: input.adapterEntryId, runtime, policy, ownedTargetIdentifiers: targetIdentifiers(installHook), managedCommandArgumentVectors: vectorsFor(installHook, 'cursor', runtime, input.adapterEntryId, input.stateRoot) });
|
|
135
|
+
const mcpRoot = mergeMcp(jsonObject(mcp), runtime.node_path, [runtime.cli_entry, ...managedMcpArguments('cursor', input.adapterEntryId, input.stateRoot, binding)]);
|
|
136
|
+
const hook = quotedCommand(hookArgs('cursor', runtime.node_path, runtime.cli_entry, input.adapterEntryId, input.stateRoot, binding));
|
|
137
|
+
const hooksRoot = installHook ? mergeHooks(jsonObject(hooks), hook, input.adapterEntryId) : jsonObject(hooks);
|
|
138
|
+
previous = snapshots([mcp, hooks]);
|
|
139
|
+
try {
|
|
140
|
+
atomicWriteJson(mcp, mcpRoot);
|
|
141
|
+
if (installHook)
|
|
142
|
+
atomicWriteJson(hooks, hooksRoot);
|
|
143
|
+
}
|
|
144
|
+
catch (error) {
|
|
145
|
+
try {
|
|
146
|
+
restoreSnapshots(previous);
|
|
147
|
+
}
|
|
148
|
+
catch { /* repair reports the owned conflict */ }
|
|
149
|
+
throw error;
|
|
150
|
+
}
|
|
151
|
+
const checks = commonChecks({ runtime_durable: 'passed', credential_stored: 'passed', mcp_configured: 'passed', policy_installed: capability === 'mcp_only' ? 'unsupported' : 'passed', approval_persistence: 'unsupported', lifecycle_hook_configured: installHook ? 'passed' : 'unsupported', lifecycle_marker: installHook ? 'pending' : 'unsupported' });
|
|
152
|
+
const limitations = ['cloud_not_covered', 'host_approval_may_repeat'];
|
|
153
|
+
if (capability !== 'full_lifecycle')
|
|
154
|
+
limitations.push('lifecycle_unsupported');
|
|
155
|
+
if (input.targetCapability === 'full_lifecycle' && !hooksSupported)
|
|
156
|
+
limitations.push('client_version_unverified');
|
|
157
|
+
if (options.serverTrustVerified !== true)
|
|
158
|
+
limitations.push('managed_policy_block');
|
|
159
|
+
const actions = [];
|
|
160
|
+
if (options.serverTrustVerified !== true)
|
|
161
|
+
actions.push('mcp_server_trust');
|
|
162
|
+
if (installHook)
|
|
163
|
+
actions.push('lifecycle_hook_trust', 'client_restart');
|
|
164
|
+
else
|
|
165
|
+
actions.push('client_restart');
|
|
166
|
+
return {
|
|
167
|
+
entry: { ...newIntegrationEntry('cursor', 'default', policy.checksum, binding, capability), adapter_entry_id: input.adapterEntryId, config_digest: digestLocal(JSON.stringify(mcpRoot)), hook_digest: installHook ? digestLocal(JSON.stringify(hooksRoot)) : null, updated_at: new Date((options.now ?? Date.now)()).toISOString() },
|
|
168
|
+
checks, actions, limitations, capability: capability === 'full_lifecycle' ? 'policy_and_mcp' : capability,
|
|
169
|
+
};
|
|
170
|
+
},
|
|
171
|
+
async verify(input) {
|
|
172
|
+
try {
|
|
173
|
+
const home = cursorHome(options);
|
|
174
|
+
const mcp = jsonObject(mcpPath(home));
|
|
175
|
+
const server = serverFromMcp(mcp);
|
|
176
|
+
const command = typeof server?.command === 'string' ? server.command : '';
|
|
177
|
+
const args = Array.isArray(server?.args) && server.args.every(value => typeof value === 'string') ? server.args : [];
|
|
178
|
+
const cliEntry = args[0] ?? resolveCliEntry(options.cliEntry);
|
|
179
|
+
const runtime = inspectCurrentRuntime({ nodePath: command, cliEntry, stateRoot: input.config.stateRoot });
|
|
180
|
+
if (!runtime.node_sha256 || !runtime.cli_sha256 || !runtime.durable)
|
|
181
|
+
return { clientSmoke: 'failed', marker: 'unsupported', lifecycle: 'authorized_only', actions: ['repair'], limitations: ['runtime_not_durable', 'cloud_not_covered'] };
|
|
182
|
+
const expectedArgs = managedMcpArguments('cursor', input.entry.adapter_entry_id, input.config.stateRoot ?? '', input.entry.integration_binding_digest);
|
|
183
|
+
const mcpMatches = managedServer(server, input.entry.adapter_entry_id) && command === runtime.node_path && JSON.stringify(args.slice(1)) === JSON.stringify(expectedArgs);
|
|
184
|
+
const configuredCapability = input.entry.integration_capability === 'full_lifecycle' ? 'full_lifecycle' : input.entry.integration_capability === 'policy_and_mcp' ? 'policy_and_mcp' : 'mcp_only';
|
|
185
|
+
const hooksRoot = configuredCapability === 'full_lifecycle' ? jsonObject(hooksPath(home)) : {};
|
|
186
|
+
const hook = quotedCommand(hookArgs('cursor', runtime.node_path, runtime.cli_entry, input.entry.adapter_entry_id, input.config.stateRoot ?? '', input.entry.integration_binding_digest));
|
|
187
|
+
const hookMatches = configuredCapability !== 'full_lifecycle' || exactHook(hooksRoot, hook);
|
|
188
|
+
const smoke = mcpMatches ? await (options.smoke ? options.smoke(runtime.node_path, runtime.cli_entry, input.config, input.entry) : runManagedMcpSmoke(runtime.node_path, runtime.cli_entry, 'cursor', input.config, input.entry)) : { clientSmoke: 'failed', tools: [] };
|
|
189
|
+
const marker = readHookState(input.config.stateRoot ?? '', input.entry.adapter_entry_id);
|
|
190
|
+
const markerPassed = Boolean(marker && marker.client_family === 'cursor' && marker.integration_manifest_digest === input.entry.integration_binding_digest && marker.policy_checksum === input.entry.policy_checksum && Date.parse(marker.executed_at) >= Date.parse(input.entry.updated_at));
|
|
191
|
+
const policy = adapterPolicy(input.config, 'cursor', configuredCapability);
|
|
192
|
+
const vectors = bindingVectors('cursor', runtime, input.entry.adapter_entry_id, input.config.stateRoot ?? '');
|
|
193
|
+
const bindingMatches = bindingFor({ client: 'cursor', profileKey: 'default', stateRoot: input.config.stateRoot ?? '', config: input.config, adapterEntryId: input.entry.adapter_entry_id, runtime, policy, ownedTargetIdentifiers: targetIdentifiers(configuredCapability === 'full_lifecycle'), managedCommandArgumentVectors: configuredCapability === 'full_lifecycle' ? [vectors.mcp, vectors.hook] : [vectors.mcp] }) === input.entry.integration_binding_digest;
|
|
194
|
+
if (!mcpMatches || !hookMatches || smoke.clientSmoke === 'failed' || !bindingMatches)
|
|
195
|
+
return { clientSmoke: 'failed', marker: 'unsupported', lifecycle: 'authorized_only', actions: ['repair'], limitations: ['cloud_not_covered'] };
|
|
196
|
+
if (configuredCapability !== 'full_lifecycle')
|
|
197
|
+
return { clientSmoke: 'passed', marker: 'unsupported', lifecycle: configuredCapability, actions: [...(options.serverTrustVerified === true ? [] : ['mcp_server_trust']), 'client_restart'], limitations: ['cloud_not_covered', 'lifecycle_unsupported', 'host_approval_may_repeat', ...(options.serverTrustVerified === true ? [] : ['managed_policy_block'])] };
|
|
198
|
+
if (options.serverTrustVerified !== true)
|
|
199
|
+
return { clientSmoke: 'passed', marker: markerPassed ? 'passed' : 'pending', lifecycle: 'policy_and_mcp', actions: ['mcp_server_trust', 'lifecycle_hook_trust', 'client_restart'], limitations: ['cloud_not_covered', 'managed_policy_block', 'host_approval_may_repeat'] };
|
|
200
|
+
if (!markerPassed)
|
|
201
|
+
return { clientSmoke: 'passed', marker: 'pending', lifecycle: 'policy_and_mcp', actions: ['lifecycle_hook_trust', 'client_restart'], limitations: ['cloud_not_covered', 'host_approval_may_repeat'] };
|
|
202
|
+
return { clientSmoke: 'passed', marker: 'passed', lifecycle: 'full_lifecycle', actions: [], limitations: ['cloud_not_covered', 'host_approval_may_repeat'] };
|
|
203
|
+
}
|
|
204
|
+
catch {
|
|
205
|
+
return { clientSmoke: 'failed', marker: 'unsupported', lifecycle: 'authorized_only', actions: ['repair'], limitations: ['cloud_not_covered'] };
|
|
206
|
+
}
|
|
207
|
+
},
|
|
208
|
+
async rollback() { if (previous.length)
|
|
209
|
+
restoreSnapshots(previous); },
|
|
210
|
+
};
|
|
211
|
+
}
|
|
212
|
+
export async function removeCursorIntegration(options = {}, adapterEntryId) {
|
|
213
|
+
const home = cursorHome(options);
|
|
214
|
+
const mcp = mcpPath(home);
|
|
215
|
+
const hooks = hooksPath(home);
|
|
216
|
+
let owns = false;
|
|
217
|
+
try {
|
|
218
|
+
const root = jsonObject(mcp);
|
|
219
|
+
const server = serverFromMcp(root);
|
|
220
|
+
owns = managedServer(server, adapterEntryId);
|
|
221
|
+
if (owns && server) {
|
|
222
|
+
const servers = root.mcpServers;
|
|
223
|
+
delete servers.vectle;
|
|
224
|
+
atomicWriteJson(mcp, { ...root, mcpServers: servers });
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
catch { /* leave user-owned or malformed configuration untouched */ }
|
|
228
|
+
try {
|
|
229
|
+
const root = jsonObject(hooks);
|
|
230
|
+
const hookRoot = root.hooks && typeof root.hooks === 'object' && !Array.isArray(root.hooks) ? root.hooks : null;
|
|
231
|
+
const session = hookRoot?.sessionStart;
|
|
232
|
+
if (hookRoot && Array.isArray(session)) {
|
|
233
|
+
hookRoot.sessionStart = session.filter(item => !(item && typeof item === 'object' && !Array.isArray(item) && managedHook(commandFromHook(item), adapterEntryId)));
|
|
234
|
+
atomicWriteJson(hooks, { ...root, hooks: hookRoot });
|
|
235
|
+
}
|
|
236
|
+
}
|
|
237
|
+
catch { /* leave unrelated hooks untouched */ }
|
|
238
|
+
return owns;
|
|
239
|
+
}
|
|
240
|
+
//# sourceMappingURL=cursor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cursor.js","sourceRoot":"","sources":["../../src/adapters/cursor.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { SetupAdapter } from '../setup.js';
|
|
2
|
+
import { type AdapterOptions } from './common.js';
|
|
3
|
+
export declare function createVsCodeAdapter(options?: AdapterOptions): SetupAdapter;
|
|
4
|
+
export declare function removeVsCodeIntegration(options?: AdapterOptions, adapterEntryId?: string): Promise<boolean>;
|