@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.
Files changed (105) hide show
  1. package/CHANGELOG.md +15 -0
  2. package/README.md +15 -8
  3. package/dist/activity.d.ts +10 -0
  4. package/dist/activity.js +10 -0
  5. package/dist/activity.js.map +1 -0
  6. package/dist/adapters/claude.d.ts +4 -0
  7. package/dist/adapters/claude.js +279 -0
  8. package/dist/adapters/claude.js.map +1 -0
  9. package/dist/adapters/codex.d.ts +16 -0
  10. package/dist/adapters/codex.js +410 -0
  11. package/dist/adapters/codex.js.map +1 -0
  12. package/dist/adapters/common.d.ts +80 -0
  13. package/dist/adapters/common.js +249 -0
  14. package/dist/adapters/common.js.map +1 -0
  15. package/dist/adapters/cursor.d.ts +4 -0
  16. package/dist/adapters/cursor.js +240 -0
  17. package/dist/adapters/cursor.js.map +1 -0
  18. package/dist/adapters/vscode.d.ts +4 -0
  19. package/dist/adapters/vscode.js +240 -0
  20. package/dist/adapters/vscode.js.map +1 -0
  21. package/dist/agent-policy.d.ts +50 -0
  22. package/dist/agent-policy.js +83 -0
  23. package/dist/agent-policy.js.map +1 -0
  24. package/dist/client.d.ts +69 -10
  25. package/dist/client.js +247 -24
  26. package/dist/client.js.map +1 -1
  27. package/dist/constants.d.ts +12 -2
  28. package/dist/constants.js +7 -1
  29. package/dist/constants.js.map +1 -1
  30. package/dist/contracts.d.ts +53 -0
  31. package/dist/contracts.js +68 -0
  32. package/dist/contracts.js.map +1 -0
  33. package/dist/delivery.d.ts +80 -0
  34. package/dist/delivery.js +304 -0
  35. package/dist/delivery.js.map +1 -0
  36. package/dist/findings.d.ts +12 -0
  37. package/dist/findings.js +41 -0
  38. package/dist/findings.js.map +1 -0
  39. package/dist/help.d.ts +1 -0
  40. package/dist/help.js +53 -0
  41. package/dist/help.js.map +1 -0
  42. package/dist/index.js +370 -72
  43. package/dist/index.js.map +1 -1
  44. package/dist/integrations.d.ts +126 -0
  45. package/dist/integrations.js +173 -0
  46. package/dist/integrations.js.map +1 -0
  47. package/dist/legacy-compat.d.ts +45 -0
  48. package/dist/legacy-compat.js +149 -0
  49. package/dist/legacy-compat.js.map +1 -0
  50. package/dist/lifecycle.d.ts +50 -0
  51. package/dist/lifecycle.js +146 -0
  52. package/dist/lifecycle.js.map +1 -0
  53. package/dist/locator.d.ts +58 -0
  54. package/dist/locator.js +233 -0
  55. package/dist/locator.js.map +1 -0
  56. package/dist/mcp.d.ts +12 -2
  57. package/dist/mcp.js +194 -48
  58. package/dist/mcp.js.map +1 -1
  59. package/dist/modes.d.ts +37 -0
  60. package/dist/modes.js +32 -0
  61. package/dist/modes.js.map +1 -0
  62. package/dist/outbox.d.ts +9 -0
  63. package/dist/outbox.js +188 -0
  64. package/dist/outbox.js.map +1 -0
  65. package/dist/parser.d.ts +10 -0
  66. package/dist/parser.js +99 -0
  67. package/dist/parser.js.map +1 -0
  68. package/dist/pulse.d.ts +122 -0
  69. package/dist/pulse.js +412 -0
  70. package/dist/pulse.js.map +1 -0
  71. package/dist/release-manifest.d.ts +123 -0
  72. package/dist/release-manifest.js +226 -0
  73. package/dist/release-manifest.js.map +1 -0
  74. package/dist/release.d.ts +1 -1
  75. package/dist/response.d.ts +17 -0
  76. package/dist/response.js +15 -0
  77. package/dist/response.js.map +1 -1
  78. package/dist/rollout.d.ts +8 -0
  79. package/dist/rollout.js +27 -0
  80. package/dist/rollout.js.map +1 -0
  81. package/dist/runtime.d.ts +60 -0
  82. package/dist/runtime.js +276 -0
  83. package/dist/runtime.js.map +1 -0
  84. package/dist/secure-store.d.ts +36 -0
  85. package/dist/secure-store.js +282 -0
  86. package/dist/secure-store.js.map +1 -0
  87. package/dist/setup.d.ts +159 -0
  88. package/dist/setup.js +629 -0
  89. package/dist/setup.js.map +1 -0
  90. package/dist/state.d.ts +98 -0
  91. package/dist/state.js +226 -0
  92. package/dist/state.js.map +1 -0
  93. package/dist/status.d.ts +282 -0
  94. package/dist/status.js +213 -0
  95. package/dist/status.js.map +1 -0
  96. package/dist/store.d.ts +44 -2
  97. package/dist/store.js +222 -44
  98. package/dist/store.js.map +1 -1
  99. package/dist/update.d.ts +33 -1
  100. package/dist/update.js +88 -16
  101. package/dist/update.js.map +1 -1
  102. package/dist/write-journal.d.ts +71 -0
  103. package/dist/write-journal.js +175 -0
  104. package/dist/write-journal.js.map +1 -0
  105. 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>;