@intutic/sync-daemon 2.1.0 → 2.3.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/README.md +1 -1
- package/dist/agentReporter.d.ts +24 -11
- package/dist/agentReporter.d.ts.map +1 -1
- package/dist/agentReporter.js +20 -13
- package/dist/agentReporter.js.map +1 -1
- package/dist/configReader.d.ts +45 -25
- package/dist/configReader.d.ts.map +1 -1
- package/dist/configReader.js +70 -46
- package/dist/configReader.js.map +1 -1
- package/dist/configWriter.d.ts +32 -45
- package/dist/configWriter.d.ts.map +1 -1
- package/dist/configWriter.js +52 -686
- package/dist/configWriter.js.map +1 -1
- package/dist/disconnect/harnesses.d.ts +29 -0
- package/dist/disconnect/harnesses.d.ts.map +1 -0
- package/dist/disconnect/harnesses.js +805 -0
- package/dist/disconnect/harnesses.js.map +1 -0
- package/dist/disconnect/index.d.ts +25 -0
- package/dist/disconnect/index.d.ts.map +1 -0
- package/dist/disconnect/index.js +92 -0
- package/dist/disconnect/index.js.map +1 -0
- package/dist/disconnect/mcp.d.ts +81 -0
- package/dist/disconnect/mcp.d.ts.map +1 -0
- package/dist/disconnect/mcp.js +354 -0
- package/dist/disconnect/mcp.js.map +1 -0
- package/dist/disconnect/originals.d.ts +88 -0
- package/dist/disconnect/originals.d.ts.map +1 -0
- package/dist/disconnect/originals.js +257 -0
- package/dist/disconnect/originals.js.map +1 -0
- package/dist/disconnect/plan.d.ts +175 -0
- package/dist/disconnect/plan.d.ts.map +1 -0
- package/dist/disconnect/plan.js +580 -0
- package/dist/disconnect/plan.js.map +1 -0
- package/dist/disconnect/recognise.d.ts +43 -0
- package/dist/disconnect/recognise.d.ts.map +1 -0
- package/dist/disconnect/recognise.js +108 -0
- package/dist/disconnect/recognise.js.map +1 -0
- package/dist/disconnect/tomlLines.d.ts +39 -0
- package/dist/disconnect/tomlLines.d.ts.map +1 -0
- package/dist/disconnect/tomlLines.js +105 -0
- package/dist/disconnect/tomlLines.js.map +1 -0
- package/dist/harness/aiderConfigMerger.d.ts +29 -8
- package/dist/harness/aiderConfigMerger.d.ts.map +1 -1
- package/dist/harness/aiderConfigMerger.js +63 -12
- package/dist/harness/aiderConfigMerger.js.map +1 -1
- package/dist/harness/antigravityCliHooks.d.ts +61 -0
- package/dist/harness/antigravityCliHooks.d.ts.map +1 -0
- package/dist/harness/antigravityCliHooks.js +207 -0
- package/dist/harness/antigravityCliHooks.js.map +1 -0
- package/dist/harness/antigravityHooks.d.ts +12 -2
- package/dist/harness/antigravityHooks.d.ts.map +1 -1
- package/dist/harness/antigravityHooks.js +38 -16
- package/dist/harness/antigravityHooks.js.map +1 -1
- package/dist/harness/antigravityProducts.d.ts +40 -0
- package/dist/harness/antigravityProducts.d.ts.map +1 -0
- package/dist/harness/antigravityProducts.js +109 -0
- package/dist/harness/antigravityProducts.js.map +1 -0
- package/dist/harness/claudeAgentsMd.d.ts +29 -0
- package/dist/harness/claudeAgentsMd.d.ts.map +1 -0
- package/dist/harness/claudeAgentsMd.js +80 -0
- package/dist/harness/claudeAgentsMd.js.map +1 -0
- package/dist/harness/claudeCodeHooks.d.ts +6 -6
- package/dist/harness/claudeCodeHooks.d.ts.map +1 -1
- package/dist/harness/claudeCodeHooks.js +115 -28
- package/dist/harness/claudeCodeHooks.js.map +1 -1
- package/dist/harness/claudeProjectApproval.d.ts +53 -0
- package/dist/harness/claudeProjectApproval.d.ts.map +1 -0
- package/dist/harness/claudeProjectApproval.js +159 -0
- package/dist/harness/claudeProjectApproval.js.map +1 -0
- package/dist/harness/clineHooks.d.ts +0 -1
- package/dist/harness/clineHooks.d.ts.map +1 -1
- package/dist/harness/clineHooks.js +13 -4
- package/dist/harness/clineHooks.js.map +1 -1
- package/dist/harness/codexConfigMerger.d.ts.map +1 -1
- package/dist/harness/codexConfigMerger.js +4 -0
- package/dist/harness/codexConfigMerger.js.map +1 -1
- package/dist/harness/codexHooks.d.ts +2 -0
- package/dist/harness/codexHooks.d.ts.map +1 -1
- package/dist/harness/codexHooks.js +15 -4
- package/dist/harness/codexHooks.js.map +1 -1
- package/dist/harness/continueConfigMerger.d.ts.map +1 -1
- package/dist/harness/continueConfigMerger.js +4 -0
- package/dist/harness/continueConfigMerger.js.map +1 -1
- package/dist/harness/cursorHooks.d.ts +5 -2
- package/dist/harness/cursorHooks.d.ts.map +1 -1
- package/dist/harness/cursorHooks.js +12 -3
- package/dist/harness/cursorHooks.js.map +1 -1
- package/dist/harness/dshHooks.d.ts +5 -5
- package/dist/harness/dshHooks.d.ts.map +1 -1
- package/dist/harness/dshHooks.js +12 -5
- package/dist/harness/dshHooks.js.map +1 -1
- package/dist/harness/gateArtifacts.d.ts +35 -0
- package/dist/harness/gateArtifacts.d.ts.map +1 -0
- package/dist/harness/gateArtifacts.js +88 -0
- package/dist/harness/gateArtifacts.js.map +1 -0
- package/dist/harness/gateBody.d.ts +195 -69
- package/dist/harness/gateBody.d.ts.map +1 -1
- package/dist/harness/gateBody.js +847 -182
- package/dist/harness/gateBody.js.map +1 -1
- package/dist/harness/gateSightings.d.ts +47 -0
- package/dist/harness/gateSightings.d.ts.map +1 -0
- package/dist/harness/gateSightings.js +159 -0
- package/dist/harness/gateSightings.js.map +1 -0
- package/dist/harness/githubCopilotHooks.d.ts.map +1 -1
- package/dist/harness/githubCopilotHooks.js +11 -10
- package/dist/harness/githubCopilotHooks.js.map +1 -1
- package/dist/harness/gooseHardener.d.ts +0 -1
- package/dist/harness/gooseHardener.d.ts.map +1 -1
- package/dist/harness/gooseHardener.js +1 -1
- package/dist/harness/gooseHardener.js.map +1 -1
- package/dist/harness/gooseHooks.d.ts +29 -1
- package/dist/harness/gooseHooks.d.ts.map +1 -1
- package/dist/harness/gooseHooks.js +107 -69
- package/dist/harness/gooseHooks.js.map +1 -1
- package/dist/harness/grokHooks.d.ts +2 -2
- package/dist/harness/grokHooks.d.ts.map +1 -1
- package/dist/harness/grokHooks.js +20 -18
- package/dist/harness/grokHooks.js.map +1 -1
- package/dist/harness/hermesHooks.d.ts +18 -8
- package/dist/harness/hermesHooks.d.ts.map +1 -1
- package/dist/harness/hermesHooks.js +55 -19
- package/dist/harness/hermesHooks.js.map +1 -1
- package/dist/harness/holdRedaction.d.ts +4 -1
- package/dist/harness/holdRedaction.d.ts.map +1 -1
- package/dist/harness/holdRedaction.js +32 -8
- package/dist/harness/holdRedaction.js.map +1 -1
- package/dist/harness/jetbrainsXmlConfig.d.ts +20 -0
- package/dist/harness/jetbrainsXmlConfig.d.ts.map +1 -1
- package/dist/harness/jetbrainsXmlConfig.js +39 -18
- package/dist/harness/jetbrainsXmlConfig.js.map +1 -1
- package/dist/harness/mcpAutoWrite.d.ts +62 -25
- package/dist/harness/mcpAutoWrite.d.ts.map +1 -1
- package/dist/harness/mcpAutoWrite.js +406 -95
- package/dist/harness/mcpAutoWrite.js.map +1 -1
- package/dist/harness/museHooks.d.ts +3 -3
- package/dist/harness/museHooks.d.ts.map +1 -1
- package/dist/harness/museHooks.js +15 -7
- package/dist/harness/museHooks.js.map +1 -1
- package/dist/harness/n8nHooks.d.ts +0 -1
- package/dist/harness/n8nHooks.d.ts.map +1 -1
- package/dist/harness/n8nHooks.js +4 -1
- package/dist/harness/n8nHooks.js.map +1 -1
- package/dist/harness/openCodeHooks.d.ts +2 -2
- package/dist/harness/openCodeHooks.d.ts.map +1 -1
- package/dist/harness/openCodeHooks.js +9 -8
- package/dist/harness/openCodeHooks.js.map +1 -1
- package/dist/harness/openWebuiHooks.d.ts +0 -1
- package/dist/harness/openWebuiHooks.d.ts.map +1 -1
- package/dist/harness/openWebuiHooks.js +11 -3
- package/dist/harness/openWebuiHooks.js.map +1 -1
- package/dist/harness/openclawHooks.d.ts +75 -18
- package/dist/harness/openclawHooks.d.ts.map +1 -1
- package/dist/harness/openclawHooks.js +214 -160
- package/dist/harness/openclawHooks.js.map +1 -1
- package/dist/harness/openhandsHooks.d.ts +37 -11
- package/dist/harness/openhandsHooks.d.ts.map +1 -1
- package/dist/harness/openhandsHooks.js +148 -97
- package/dist/harness/openhandsHooks.js.map +1 -1
- package/dist/harness/piHooks.d.ts +52 -17
- package/dist/harness/piHooks.d.ts.map +1 -1
- package/dist/harness/piHooks.js +177 -163
- package/dist/harness/piHooks.js.map +1 -1
- package/dist/harness/protectedPaths.d.ts +107 -25
- package/dist/harness/protectedPaths.d.ts.map +1 -1
- package/dist/harness/protectedPaths.js +342 -48
- package/dist/harness/protectedPaths.js.map +1 -1
- package/dist/harness/rulesSection.d.ts +62 -0
- package/dist/harness/rulesSection.d.ts.map +1 -0
- package/dist/harness/rulesSection.js +145 -0
- package/dist/harness/rulesSection.js.map +1 -0
- package/dist/harness/windsurfHooks.d.ts +18 -3
- package/dist/harness/windsurfHooks.d.ts.map +1 -1
- package/dist/harness/windsurfHooks.js +41 -8
- package/dist/harness/windsurfHooks.js.map +1 -1
- package/dist/harness/windsurfJetBrainsProxy.d.ts +1 -1
- package/dist/harness/windsurfJetBrainsProxy.d.ts.map +1 -1
- package/dist/harness/windsurfJetBrainsProxy.js +5 -1
- package/dist/harness/windsurfJetBrainsProxy.js.map +1 -1
- package/dist/index.d.ts +21 -20
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +19 -19
- package/dist/index.js.map +1 -1
- package/dist/inventory.d.ts +53 -0
- package/dist/inventory.d.ts.map +1 -0
- package/dist/inventory.js +133 -0
- package/dist/inventory.js.map +1 -0
- package/dist/lib/complianceProbes.d.ts +2 -1
- package/dist/lib/complianceProbes.d.ts.map +1 -1
- package/dist/lib/complianceProbes.js +1 -1
- package/dist/lib/complianceProbes.js.map +1 -1
- package/dist/lib/decisionsDigest.d.ts +35 -17
- package/dist/lib/decisionsDigest.d.ts.map +1 -1
- package/dist/lib/decisionsDigest.js +106 -47
- package/dist/lib/decisionsDigest.js.map +1 -1
- package/dist/lib/egressPolicy.d.ts +2 -2
- package/dist/lib/egressPolicy.js +2 -2
- package/dist/lib/mcpRegistryPy.d.ts +11 -0
- package/dist/lib/mcpRegistryPy.d.ts.map +1 -0
- package/dist/lib/mcpRegistryPy.js +173 -0
- package/dist/lib/mcpRegistryPy.js.map +1 -0
- package/dist/lib/phrasesPy.d.ts +11 -0
- package/dist/lib/phrasesPy.d.ts.map +1 -0
- package/dist/lib/phrasesPy.js +351 -0
- package/dist/lib/phrasesPy.js.map +1 -0
- package/dist/lib/policySnapshot.d.ts +63 -9
- package/dist/lib/policySnapshot.d.ts.map +1 -1
- package/dist/lib/policySnapshot.js +269 -45
- package/dist/lib/policySnapshot.js.map +1 -1
- package/dist/lib/processPoller.d.ts.map +1 -1
- package/dist/lib/processPoller.js +9 -2
- package/dist/lib/processPoller.js.map +1 -1
- package/dist/lib/regexLinearity.d.ts +43 -0
- package/dist/lib/regexLinearity.d.ts.map +1 -0
- package/dist/lib/regexLinearity.js +275 -0
- package/dist/lib/regexLinearity.js.map +1 -0
- package/dist/lib/runtimeEnv.d.ts +1 -3
- package/dist/lib/runtimeEnv.d.ts.map +1 -1
- package/dist/lib/runtimeEnv.js +0 -2
- package/dist/lib/runtimeEnv.js.map +1 -1
- package/dist/lib/sequencePy.d.ts +10 -0
- package/dist/lib/sequencePy.d.ts.map +1 -0
- package/dist/lib/sequencePy.js +102 -0
- package/dist/lib/sequencePy.js.map +1 -0
- package/dist/sessionReporter.d.ts +18 -12
- package/dist/sessionReporter.d.ts.map +1 -1
- package/dist/sessionReporter.js +37 -24
- package/dist/sessionReporter.js.map +1 -1
- package/dist/skillWriter.d.ts +23 -5
- package/dist/skillWriter.d.ts.map +1 -1
- package/dist/skillWriter.js +159 -16
- package/dist/skillWriter.js.map +1 -1
- package/dist/syncCycle.d.ts +142 -0
- package/dist/syncCycle.d.ts.map +1 -0
- package/dist/syncCycle.js +327 -0
- package/dist/syncCycle.js.map +1 -0
- package/dist/trajectoryMonitor.d.ts +2 -4
- package/dist/trajectoryMonitor.d.ts.map +1 -1
- package/dist/trajectoryMonitor.js +2 -5
- package/dist/trajectoryMonitor.js.map +1 -1
- package/dist/watcher/driftWatcher.d.ts +0 -1
- package/dist/watcher/driftWatcher.d.ts.map +1 -1
- package/dist/watcher/driftWatcher.js +1 -2
- package/dist/watcher/driftWatcher.js.map +1 -1
- package/dist/watcher/settingsGuard.d.ts +36 -7
- package/dist/watcher/settingsGuard.d.ts.map +1 -1
- package/dist/watcher/settingsGuard.js +397 -60
- package/dist/watcher/settingsGuard.js.map +1 -1
- package/dist/watcher/vscodeHookSettings.d.ts +30 -0
- package/dist/watcher/vscodeHookSettings.d.ts.map +1 -0
- package/dist/watcher/vscodeHookSettings.js +170 -0
- package/dist/watcher/vscodeHookSettings.js.map +1 -0
- package/dist/wsClient.d.ts +0 -1
- package/dist/wsClient.d.ts.map +1 -1
- package/dist/wsClient.js +0 -1
- package/dist/wsClient.js.map +1 -1
- package/package.json +5 -5
- package/dist/harness/claudeDesktopHooks.d.ts +0 -30
- package/dist/harness/claudeDesktopHooks.d.ts.map +0 -1
- package/dist/harness/claudeDesktopHooks.js +0 -254
- package/dist/harness/claudeDesktopHooks.js.map +0 -1
- package/dist/harness/continueHooks.d.ts +0 -63
- package/dist/harness/continueHooks.d.ts.map +0 -1
- package/dist/harness/continueHooks.js +0 -247
- package/dist/harness/continueHooks.js.map +0 -1
- package/dist/harness/gateKind.d.ts +0 -164
- package/dist/harness/gateKind.d.ts.map +0 -1
- package/dist/harness/gateKind.js +0 -144
- package/dist/harness/gateKind.js.map +0 -1
- package/dist/harness/rooCodeHooks.d.ts +0 -31
- package/dist/harness/rooCodeHooks.d.ts.map +0 -1
- package/dist/harness/rooCodeHooks.js +0 -286
- package/dist/harness/rooCodeHooks.js.map +0 -1
- package/dist/hashReporter.d.ts +0 -33
- package/dist/hashReporter.d.ts.map +0 -1
- package/dist/hashReporter.js +0 -69
- package/dist/hashReporter.js.map +0 -1
- package/dist/integrityStore.d.ts +0 -35
- package/dist/integrityStore.d.ts.map +0 -1
- package/dist/integrityStore.js +0 -71
- package/dist/integrityStore.js.map +0 -1
- package/dist/lib/gitWorktrees.d.ts +0 -140
- package/dist/lib/gitWorktrees.d.ts.map +0 -1
- package/dist/lib/gitWorktrees.js +0 -191
- package/dist/lib/gitWorktrees.js.map +0 -1
- package/dist/syncLoop.d.ts +0 -172
- package/dist/syncLoop.d.ts.map +0 -1
- package/dist/syncLoop.js +0 -878
- package/dist/syncLoop.js.map +0 -1
|
@@ -0,0 +1,354 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* mcp.ts — undoes the MCP wrapping `mcpAutoWrite.ts` does in every harness.
|
|
3
|
+
*
|
|
4
|
+
* Three kinds of entry are Intutic's, and only these are touched:
|
|
5
|
+
*
|
|
6
|
+
* - a wrapped server (`__intutic_wrapped: true`), put back as it was: from
|
|
7
|
+
* `__intutic_original`, which holds the whole pre-wrap entry, or, for a
|
|
8
|
+
* stdio server wrapped before that was recorded, from the wrapped entry
|
|
9
|
+
* itself, whose argv carries the original command after `--`;
|
|
10
|
+
* - the `intutic` server added beside them, recognised by its command (node
|
|
11
|
+
* running the governance proxy);
|
|
12
|
+
* - a Claude Code local-scope copy of a project server
|
|
13
|
+
* (`__intutic_shadow_of: 'project'`), deleted, which hands the name back to
|
|
14
|
+
* `.mcp.json`.
|
|
15
|
+
*
|
|
16
|
+
* OpenCode's schema has no room for markers, so its wrapped entries are
|
|
17
|
+
* recognised by command shape and rebuilt from the argv; when the file's
|
|
18
|
+
* original was kept, an entry rebuilt that way is swapped for the original
|
|
19
|
+
* entry, which also carries the keys the wrap did not keep.
|
|
20
|
+
*
|
|
21
|
+
* @module
|
|
22
|
+
*/
|
|
23
|
+
import { isDeepStrictEqual } from 'node:util';
|
|
24
|
+
import { isMap } from 'yaml';
|
|
25
|
+
import { PROXY_BIN_PATTERN } from '../harness/mcpAutoWrite.js';
|
|
26
|
+
import { isObject, pruneEmpty } from './plan.js';
|
|
27
|
+
/** The env keys a wrap adds; everything else in a wrapped entry's env was the server's. */
|
|
28
|
+
const WRAP_ENV_KEYS = ['INTUTIC_WORKSPACE_ID', 'INTUTIC_REMOTE_HEADERS'];
|
|
29
|
+
function stripWrapEnv(env) {
|
|
30
|
+
if (!isObject(env))
|
|
31
|
+
return undefined;
|
|
32
|
+
const rest = { ...env };
|
|
33
|
+
for (const key of WRAP_ENV_KEYS)
|
|
34
|
+
delete rest[key];
|
|
35
|
+
return Object.keys(rest).length > 0 ? rest : undefined;
|
|
36
|
+
}
|
|
37
|
+
function stringArray(v) {
|
|
38
|
+
return Array.isArray(v) && v.every((a) => typeof a === 'string') ? v : null;
|
|
39
|
+
}
|
|
40
|
+
/** The pre-wrap shape read back from a wrapped proxy argv (everything after the proxy binary). */
|
|
41
|
+
function fromProxyArgv(argv, env) {
|
|
42
|
+
const sep = argv.indexOf('--');
|
|
43
|
+
if (sep >= 0) {
|
|
44
|
+
const [command, ...args] = argv.slice(sep + 1);
|
|
45
|
+
if (command === undefined)
|
|
46
|
+
return null;
|
|
47
|
+
const out = { command, args };
|
|
48
|
+
const kept = stripWrapEnv(env);
|
|
49
|
+
if (kept)
|
|
50
|
+
out.env = kept;
|
|
51
|
+
return out;
|
|
52
|
+
}
|
|
53
|
+
const urlAt = argv.indexOf('--remote-url');
|
|
54
|
+
if (urlAt >= 0 && typeof argv[urlAt + 1] === 'string') {
|
|
55
|
+
const out = { url: argv[urlAt + 1] };
|
|
56
|
+
const transport = argv[argv.indexOf('--remote-transport') + 1];
|
|
57
|
+
if (transport === 'sse')
|
|
58
|
+
out.type = 'sse';
|
|
59
|
+
if (isObject(env) && typeof env.INTUTIC_REMOTE_HEADERS === 'string') {
|
|
60
|
+
try {
|
|
61
|
+
out.headers = JSON.parse(env.INTUTIC_REMOTE_HEADERS);
|
|
62
|
+
}
|
|
63
|
+
catch {
|
|
64
|
+
// Unreadable headers stay out rather than being guessed at.
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
const kept = stripWrapEnv(env);
|
|
68
|
+
if (kept)
|
|
69
|
+
out.env = kept;
|
|
70
|
+
return out;
|
|
71
|
+
}
|
|
72
|
+
return null;
|
|
73
|
+
}
|
|
74
|
+
/** Whether a recorded original still describes what the wrapped entry runs. */
|
|
75
|
+
function originalMatches(original, derived) {
|
|
76
|
+
if (derived === null)
|
|
77
|
+
return true;
|
|
78
|
+
if (typeof derived.command === 'string') {
|
|
79
|
+
return original.command === derived.command && isDeepStrictEqual(original.args ?? [], derived.args);
|
|
80
|
+
}
|
|
81
|
+
return original.url === derived.url;
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* What a wrapped entry was, or `undefined` when `entry` is not one Intutic
|
|
85
|
+
* wrapped. A recorded original wins unless the user has since changed the
|
|
86
|
+
* command or url inside the wrap, in which case the wrap's own argv is the
|
|
87
|
+
* truth.
|
|
88
|
+
*/
|
|
89
|
+
export function unwrapEntry(entry) {
|
|
90
|
+
if (!isObject(entry) || entry.__intutic_wrapped !== true)
|
|
91
|
+
return undefined;
|
|
92
|
+
const argv = stringArray(entry.args);
|
|
93
|
+
const derived = argv && argv.length > 0 && PROXY_BIN_PATTERN.test(argv[0]) ? fromProxyArgv(argv.slice(1), entry.env) : null;
|
|
94
|
+
const original = entry.__intutic_original;
|
|
95
|
+
if (isObject(original) && (typeof original.command === 'string' || typeof original.url === 'string') && originalMatches(original, derived)) {
|
|
96
|
+
return structuredClone(original);
|
|
97
|
+
}
|
|
98
|
+
return derived ?? undefined;
|
|
99
|
+
}
|
|
100
|
+
/** The `intutic` server mcpAutoWrite adds: node running the governance proxy. */
|
|
101
|
+
export function isIntuticServer(entry) {
|
|
102
|
+
if (!isObject(entry))
|
|
103
|
+
return false;
|
|
104
|
+
if (entry.command === 'node') {
|
|
105
|
+
const argv = stringArray(entry.args);
|
|
106
|
+
return argv !== null && argv.length > 0 && PROXY_BIN_PATTERN.test(argv[0]);
|
|
107
|
+
}
|
|
108
|
+
const argv = stringArray(entry.command);
|
|
109
|
+
return argv !== null && argv[0] === 'node' && typeof argv[1] === 'string' && PROXY_BIN_PATTERN.test(argv[1]) && !argv.includes('--server-name');
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* Unwraps every Intutic entry in one name → entry map, in place. Returns
|
|
113
|
+
* whether anything changed.
|
|
114
|
+
*/
|
|
115
|
+
export function unwrapServerMap(map) {
|
|
116
|
+
let changed = false;
|
|
117
|
+
for (const [name, entry] of Object.entries(map)) {
|
|
118
|
+
if (isObject(entry) && entry.__intutic_shadow_of === 'project') {
|
|
119
|
+
delete map[name];
|
|
120
|
+
changed = true;
|
|
121
|
+
}
|
|
122
|
+
else if (name === 'intutic' && isIntuticServer(entry)) {
|
|
123
|
+
delete map[name];
|
|
124
|
+
changed = true;
|
|
125
|
+
}
|
|
126
|
+
else {
|
|
127
|
+
const original = unwrapEntry(entry);
|
|
128
|
+
if (original !== undefined) {
|
|
129
|
+
map[name] = original;
|
|
130
|
+
changed = true;
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
return changed;
|
|
135
|
+
}
|
|
136
|
+
/**
|
|
137
|
+
* Unwraps the map at `path` of `doc`, removing it when it is left empty and
|
|
138
|
+
* the original did not have it.
|
|
139
|
+
*/
|
|
140
|
+
export function unwrapServersAt(doc, path, original) {
|
|
141
|
+
let parent = doc;
|
|
142
|
+
for (const k of path.slice(0, -1))
|
|
143
|
+
parent = isObject(parent) ? parent[k] : undefined;
|
|
144
|
+
const map = isObject(parent) ? parent[path[path.length - 1]] : undefined;
|
|
145
|
+
if (!isObject(map) || !unwrapServerMap(map))
|
|
146
|
+
return false;
|
|
147
|
+
pruneEmpty(doc, path, original);
|
|
148
|
+
return true;
|
|
149
|
+
}
|
|
150
|
+
/**
|
|
151
|
+
* `~/.claude.json`: the user-scope map and every project's local-scope map.
|
|
152
|
+
* Empty maps stay: Claude Code keeps `mcpServers: {}` in its own entries.
|
|
153
|
+
*/
|
|
154
|
+
export function unwrapClaudeState(doc) {
|
|
155
|
+
let changed = false;
|
|
156
|
+
if (isObject(doc.mcpServers))
|
|
157
|
+
changed = unwrapServerMap(doc.mcpServers) || changed;
|
|
158
|
+
if (isObject(doc.projects)) {
|
|
159
|
+
for (const project of Object.values(doc.projects)) {
|
|
160
|
+
if (isObject(project) && isObject(project.mcpServers))
|
|
161
|
+
changed = unwrapServerMap(project.mcpServers) || changed;
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
return changed;
|
|
165
|
+
}
|
|
166
|
+
/** Continue's `~/.continue/config.json`, whose `mcpServers` is an array of `{ name, ... }`. */
|
|
167
|
+
export function unwrapContinueServers(doc, original) {
|
|
168
|
+
if (!Array.isArray(doc.mcpServers))
|
|
169
|
+
return false;
|
|
170
|
+
let changed = false;
|
|
171
|
+
const next = [];
|
|
172
|
+
for (const entry of doc.mcpServers) {
|
|
173
|
+
if (!isObject(entry)) {
|
|
174
|
+
next.push(entry);
|
|
175
|
+
continue;
|
|
176
|
+
}
|
|
177
|
+
const { name, ...rest } = entry;
|
|
178
|
+
if (name === 'intutic' && isIntuticServer(rest)) {
|
|
179
|
+
changed = true;
|
|
180
|
+
continue;
|
|
181
|
+
}
|
|
182
|
+
const unwrapped = unwrapEntry(rest);
|
|
183
|
+
if (unwrapped === undefined) {
|
|
184
|
+
next.push(entry);
|
|
185
|
+
}
|
|
186
|
+
else {
|
|
187
|
+
next.push({ name, ...unwrapped });
|
|
188
|
+
changed = true;
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
if (!changed)
|
|
192
|
+
return false;
|
|
193
|
+
doc.mcpServers = next;
|
|
194
|
+
pruneEmpty(doc, ['mcpServers'], original);
|
|
195
|
+
return true;
|
|
196
|
+
}
|
|
197
|
+
/** Goose's `config.yaml` `mcp:` block, edited through the YAML document so comments survive. */
|
|
198
|
+
export function unwrapGooseServers(doc, original) {
|
|
199
|
+
if (!isMap(doc.get('mcp')))
|
|
200
|
+
return false;
|
|
201
|
+
const servers = doc.toJS().mcp ?? {};
|
|
202
|
+
let changed = false;
|
|
203
|
+
for (const [name, entry] of Object.entries(servers)) {
|
|
204
|
+
if (name === 'intutic' && isIntuticServer(entry)) {
|
|
205
|
+
doc.deleteIn(['mcp', name]);
|
|
206
|
+
changed = true;
|
|
207
|
+
continue;
|
|
208
|
+
}
|
|
209
|
+
const unwrapped = unwrapEntry(entry);
|
|
210
|
+
if (unwrapped !== undefined) {
|
|
211
|
+
doc.setIn(['mcp', name], unwrapped);
|
|
212
|
+
changed = true;
|
|
213
|
+
}
|
|
214
|
+
}
|
|
215
|
+
const after = doc.get('mcp');
|
|
216
|
+
const originalHadMcp = original !== null && isObject(original.toJS()) && original.toJS().mcp !== undefined;
|
|
217
|
+
if (changed && isMap(after) && after.items.length === 0 && !originalHadMcp)
|
|
218
|
+
doc.delete('mcp');
|
|
219
|
+
return changed;
|
|
220
|
+
}
|
|
221
|
+
// ─── OpenCode ────────────────────────────────────────────────────────────────
|
|
222
|
+
/** An OpenCode entry rebuilt from a wrapped one's argv; undefined when it is not a wrapped one. */
|
|
223
|
+
export function unwrapOpenCodeEntry(entry) {
|
|
224
|
+
if (!isObject(entry))
|
|
225
|
+
return undefined;
|
|
226
|
+
const argv = stringArray(entry.command);
|
|
227
|
+
if (!argv || argv[0] !== 'node' || typeof argv[1] !== 'string' || !PROXY_BIN_PATTERN.test(argv[1]) || !argv.includes('--server-name')) {
|
|
228
|
+
return undefined;
|
|
229
|
+
}
|
|
230
|
+
const derived = fromProxyArgv(argv.slice(2), entry.environment);
|
|
231
|
+
if (derived === null)
|
|
232
|
+
return undefined;
|
|
233
|
+
const rest = { ...entry };
|
|
234
|
+
delete rest.type;
|
|
235
|
+
delete rest.command;
|
|
236
|
+
delete rest.environment;
|
|
237
|
+
if (typeof derived.command === 'string') {
|
|
238
|
+
return {
|
|
239
|
+
type: 'local',
|
|
240
|
+
command: [derived.command, ...(derived.args ?? [])],
|
|
241
|
+
...(derived.env ? { environment: derived.env } : {}),
|
|
242
|
+
...rest,
|
|
243
|
+
};
|
|
244
|
+
}
|
|
245
|
+
return {
|
|
246
|
+
type: 'remote',
|
|
247
|
+
url: derived.url,
|
|
248
|
+
...(derived.headers ? { headers: derived.headers } : {}),
|
|
249
|
+
...rest,
|
|
250
|
+
};
|
|
251
|
+
}
|
|
252
|
+
/** Whether a rebuilt OpenCode entry and an original one name the same server. */
|
|
253
|
+
function sameOpenCodeServer(a, b) {
|
|
254
|
+
return a.type === b.type && isDeepStrictEqual(a.command, b.command) && a.url === b.url;
|
|
255
|
+
}
|
|
256
|
+
/**
|
|
257
|
+
* OpenCode's `opencode.json` `mcp` block. A rebuilt entry is swapped for the
|
|
258
|
+
* original file's entry of the same name when both name the same server.
|
|
259
|
+
*/
|
|
260
|
+
export function unwrapOpenCodeServers(doc, original) {
|
|
261
|
+
const mcp = doc.mcp;
|
|
262
|
+
if (!isObject(mcp))
|
|
263
|
+
return false;
|
|
264
|
+
const originalMcp = original && isObject(original.mcp) ? original.mcp : {};
|
|
265
|
+
let changed = false;
|
|
266
|
+
for (const [name, entry] of Object.entries(mcp)) {
|
|
267
|
+
if (name === 'intutic' && isIntuticServer(entry)) {
|
|
268
|
+
delete mcp[name];
|
|
269
|
+
changed = true;
|
|
270
|
+
continue;
|
|
271
|
+
}
|
|
272
|
+
const rebuilt = unwrapOpenCodeEntry(entry);
|
|
273
|
+
if (rebuilt === undefined)
|
|
274
|
+
continue;
|
|
275
|
+
const was = originalMcp[name];
|
|
276
|
+
mcp[name] = isObject(was) && sameOpenCodeServer(rebuilt, was) ? structuredClone(was) : rebuilt;
|
|
277
|
+
changed = true;
|
|
278
|
+
}
|
|
279
|
+
if (changed)
|
|
280
|
+
pruneEmpty(doc, ['mcp'], original);
|
|
281
|
+
return changed;
|
|
282
|
+
}
|
|
283
|
+
export const geminiRemoteShape = (url, transport) => (transport === 'sse' ? { url, type: 'sse' } : { url });
|
|
284
|
+
export const antigravityRemoteShape = (url) => ({ serverUrl: url });
|
|
285
|
+
/**
|
|
286
|
+
* A Gemini CLI or Antigravity entry rebuilt from a wrapped one, which carries
|
|
287
|
+
* no marker (mcpAutoWrite.ts's `isProxyFronted`); undefined when it is not a
|
|
288
|
+
* wrapped one. The keys the wrap kept (`cwd`, `trust`, `includeTools`, …) stay.
|
|
289
|
+
*/
|
|
290
|
+
export function unwrapUnmarkedEntry(entry, remoteShape) {
|
|
291
|
+
if (!isObject(entry) || entry.command !== 'node')
|
|
292
|
+
return undefined;
|
|
293
|
+
const argv = stringArray(entry.args);
|
|
294
|
+
if (!argv || argv.length === 0 || !PROXY_BIN_PATTERN.test(argv[0]) || !argv.includes('--server-name'))
|
|
295
|
+
return undefined;
|
|
296
|
+
const derived = fromProxyArgv(argv.slice(1), entry.env);
|
|
297
|
+
if (derived === null)
|
|
298
|
+
return undefined;
|
|
299
|
+
const rest = { ...entry };
|
|
300
|
+
delete rest.command;
|
|
301
|
+
delete rest.args;
|
|
302
|
+
delete rest.env;
|
|
303
|
+
if (typeof derived.command === 'string') {
|
|
304
|
+
return { command: derived.command, args: derived.args, ...(derived.env ? { env: derived.env } : {}), ...rest };
|
|
305
|
+
}
|
|
306
|
+
return {
|
|
307
|
+
...remoteShape(derived.url, derived.type === 'sse' ? 'sse' : 'http'),
|
|
308
|
+
...(derived.headers ? { headers: derived.headers } : {}),
|
|
309
|
+
...(derived.env ? { env: derived.env } : {}),
|
|
310
|
+
...rest,
|
|
311
|
+
};
|
|
312
|
+
}
|
|
313
|
+
/** Whether two entries run the same server: the same command line, or the same URL. */
|
|
314
|
+
function sameServer(a, b) {
|
|
315
|
+
if (typeof a.command === 'string')
|
|
316
|
+
return a.command === b.command && isDeepStrictEqual(a.args ?? [], b.args ?? []);
|
|
317
|
+
const url = (e) => e.url ?? e.httpUrl ?? e.serverUrl;
|
|
318
|
+
return url(a) !== undefined && url(a) === url(b);
|
|
319
|
+
}
|
|
320
|
+
/**
|
|
321
|
+
* The `mcpServers` map at `path` of a Gemini CLI or Antigravity file. A
|
|
322
|
+
* rebuilt entry is swapped for the original file's entry of the same name
|
|
323
|
+
* when both run the same server, which also brings back what the rebuild
|
|
324
|
+
* cannot know (Gemini CLI's `httpUrl` spelling, a `type: "http"`).
|
|
325
|
+
*/
|
|
326
|
+
export function unwrapUnmarkedServersAt(doc, path, original, remoteShape) {
|
|
327
|
+
let map = doc;
|
|
328
|
+
let was = original;
|
|
329
|
+
for (const k of path) {
|
|
330
|
+
map = isObject(map) ? map[k] : undefined;
|
|
331
|
+
was = isObject(was) ? was[k] : undefined;
|
|
332
|
+
}
|
|
333
|
+
if (!isObject(map))
|
|
334
|
+
return false;
|
|
335
|
+
const originals = isObject(was) ? was : {};
|
|
336
|
+
let changed = false;
|
|
337
|
+
for (const [name, entry] of Object.entries(map)) {
|
|
338
|
+
if (name === 'intutic' && isIntuticServer(entry)) {
|
|
339
|
+
delete map[name];
|
|
340
|
+
changed = true;
|
|
341
|
+
continue;
|
|
342
|
+
}
|
|
343
|
+
const rebuilt = unwrapUnmarkedEntry(entry, remoteShape);
|
|
344
|
+
if (rebuilt === undefined)
|
|
345
|
+
continue;
|
|
346
|
+
const before = originals[name];
|
|
347
|
+
map[name] = isObject(before) && sameServer(rebuilt, before) ? structuredClone(before) : rebuilt;
|
|
348
|
+
changed = true;
|
|
349
|
+
}
|
|
350
|
+
if (changed)
|
|
351
|
+
pruneEmpty(doc, path, original);
|
|
352
|
+
return changed;
|
|
353
|
+
}
|
|
354
|
+
//# sourceMappingURL=mcp.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mcp.js","sourceRoot":"","sources":["../../src/disconnect/mcp.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,88 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* originals.ts — what a file looked like before Intutic first wrote to it.
|
|
3
|
+
*
|
|
4
|
+
* `intutic disconnect` puts every file `intutic connect` touched back the way
|
|
5
|
+
* it was. For an entry Intutic adds to a file the user owns (a hook
|
|
6
|
+
* registration, a wrapped MCP server) the entry itself says it is Intutic's.
|
|
7
|
+
* But some writes replace what was there: a rules file (`CLAUDE.md`,
|
|
8
|
+
* `AGENTS.md`, ...) is written whole, a proxy base URL overwrites the user's
|
|
9
|
+
* own, a deny list is replaced. Those can only be undone if the original was
|
|
10
|
+
* kept, so every such writer calls {@link keepOriginal} before it writes, and
|
|
11
|
+
* {@link noteWritten} after a write of a file it owns whole.
|
|
12
|
+
*
|
|
13
|
+
* One record per file, under `<root>/.intutic/originals/`, where `<root>` is
|
|
14
|
+
* the workspace for files inside it and the home directory for the rest:
|
|
15
|
+
*
|
|
16
|
+
* - `existed: false` — Intutic created the file (and `createdDirs`, the
|
|
17
|
+
* directories it had to make for it); disconnect deletes them.
|
|
18
|
+
* - `existed: true` — the bytes as they were, in a copy next to the record.
|
|
19
|
+
* - `writtenSha256` — what Intutic last wrote to a file it owns whole. A file
|
|
20
|
+
* that no longer matches was edited since, and disconnect leaves it alone
|
|
21
|
+
* rather than throw the edit away.
|
|
22
|
+
*
|
|
23
|
+
* Only the first record for a path is kept (created with O_EXCL, so two
|
|
24
|
+
* writers racing on one file cannot both claim it): the original is the file
|
|
25
|
+
* before Intutic's FIRST write, not before its latest one. A record per file,
|
|
26
|
+
* rather than one index, is what lets the MCP writers, which run in parallel,
|
|
27
|
+
* record without a lock.
|
|
28
|
+
*
|
|
29
|
+
* Best-effort by design: a failure to record must never stop the write it
|
|
30
|
+
* precedes. The cost is that disconnect then treats the file as one written
|
|
31
|
+
* by an earlier version, which kept no record.
|
|
32
|
+
*
|
|
33
|
+
* @module
|
|
34
|
+
*/
|
|
35
|
+
export interface OriginalRecord {
|
|
36
|
+
/** Absolute path of the file this record is for. */
|
|
37
|
+
path: string;
|
|
38
|
+
/** Whether the file existed before Intutic first wrote it. */
|
|
39
|
+
existed: boolean;
|
|
40
|
+
/** Its permission bits then, so a restore keeps them. */
|
|
41
|
+
mode?: number;
|
|
42
|
+
/** Directories Intutic created to hold the file, outermost first. */
|
|
43
|
+
createdDirs?: string[];
|
|
44
|
+
/** SHA-256 of what Intutic last wrote, for files it owns whole. */
|
|
45
|
+
writtenSha256?: string;
|
|
46
|
+
/** Writer-specific detail disconnect needs, e.g. the deny rules Intutic added. */
|
|
47
|
+
meta?: Record<string, unknown>;
|
|
48
|
+
recordedAt: string;
|
|
49
|
+
}
|
|
50
|
+
export declare function sha256(content: string | Buffer): string;
|
|
51
|
+
/** The directory whose `.intutic/originals` holds `filePath`'s record. */
|
|
52
|
+
export declare function ledgerRootFor(filePath: string, workspaceRoot: string): string;
|
|
53
|
+
export declare function ledgerDir(root: string): string;
|
|
54
|
+
/**
|
|
55
|
+
* Keeps `filePath` as it is now, unless an earlier call already did. Call it
|
|
56
|
+
* immediately before Intutic's write.
|
|
57
|
+
*/
|
|
58
|
+
export declare function keepOriginal(filePath: string, workspaceRoot: string): Promise<void>;
|
|
59
|
+
/**
|
|
60
|
+
* Notes what Intutic just wrote to a file it owns whole, so disconnect can
|
|
61
|
+
* tell a later edit apart; `meta` is merged into the record's.
|
|
62
|
+
*/
|
|
63
|
+
export declare function noteWritten(filePath: string, workspaceRoot: string, content: string | Buffer | null, meta?: Record<string, unknown>): Promise<void>;
|
|
64
|
+
/**
|
|
65
|
+
* Writes a file Intutic owns whole, keeping the original first and noting
|
|
66
|
+
* what was written: the write every rules file, generated hook file and
|
|
67
|
+
* plugin goes through.
|
|
68
|
+
*/
|
|
69
|
+
export declare function writeOwnedFile(filePath: string, workspaceRoot: string, content: string, mode?: number): Promise<void>;
|
|
70
|
+
/** The record for `filePath`, with the saved bytes when the file existed. */
|
|
71
|
+
export declare function readOriginal(filePath: string, workspaceRoot: string): Promise<(OriginalRecord & {
|
|
72
|
+
content?: Buffer;
|
|
73
|
+
}) | null>;
|
|
74
|
+
/** Forgets `filePath` once disconnect has dealt with it. */
|
|
75
|
+
export declare function forgetOriginal(filePath: string, workspaceRoot: string): Promise<void>;
|
|
76
|
+
/** Every file recorded under `root`. */
|
|
77
|
+
export declare function recordedFiles(root: string): Promise<OriginalRecord[]>;
|
|
78
|
+
/** Removes `root`'s ledger directory once it holds no record, and `.intutic/` if that leaves it empty. */
|
|
79
|
+
export declare function pruneLedger(root: string): Promise<void>;
|
|
80
|
+
/**
|
|
81
|
+
* Remembers a proxy URL connect wrote into harness configs. Disconnect uses
|
|
82
|
+
* the list to recognise a base-URL setting as Intutic's when no original was
|
|
83
|
+
* kept for it.
|
|
84
|
+
*/
|
|
85
|
+
export declare function noteProxyUrl(url: string): Promise<void>;
|
|
86
|
+
export declare function knownProxyUrls(): Promise<string[]>;
|
|
87
|
+
export declare function forgetProxyUrls(): Promise<void>;
|
|
88
|
+
//# sourceMappingURL=originals.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"originals.d.ts","sourceRoot":"","sources":["../../src/disconnect/originals.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAiCG;AAOH,MAAM,WAAW,cAAc;IAC7B,oDAAoD;IACpD,IAAI,EAAE,MAAM,CAAA;IACZ,8DAA8D;IAC9D,OAAO,EAAE,OAAO,CAAA;IAChB,yDAAyD;IACzD,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,qEAAqE;IACrE,WAAW,CAAC,EAAE,MAAM,EAAE,CAAA;IACtB,mEAAmE;IACnE,aAAa,CAAC,EAAE,MAAM,CAAA;IACtB,kFAAkF;IAClF,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC9B,UAAU,EAAE,MAAM,CAAA;CACnB;AAED,wBAAgB,MAAM,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAEvD;AAED,0EAA0E;AAC1E,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,MAAM,CAG7E;AAED,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAE9C;AAuCD;;;GAGG;AACH,wBAAsB,YAAY,CAAC,QAAQ,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAgCzF;AAED;;;GAGG;AACH,wBAAsB,WAAW,CAC/B,QAAQ,EAAE,MAAM,EAChB,aAAa,EAAE,MAAM,EACrB,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,EAC/B,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC7B,OAAO,CAAC,IAAI,CAAC,CAef;AAED;;;;GAIG;AACH,wBAAsB,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAQ3H;AAED,6EAA6E;AAC7E,wBAAsB,YAAY,CAChC,QAAQ,EAAE,MAAM,EAChB,aAAa,EAAE,MAAM,GACpB,OAAO,CAAC,CAAC,cAAc,GAAG;IAAE,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,GAAG,IAAI,CAAC,CAWzD;AAED,4DAA4D;AAC5D,wBAAsB,cAAc,CAAC,QAAQ,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAI3F;AAED,wCAAwC;AACxC,wBAAsB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,cAAc,EAAE,CAAC,CAa3E;AAED,0GAA0G;AAC1G,wBAAsB,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAW7D;AAQD;;;;GAIG;AACH,wBAAsB,YAAY,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAW7D;AAED,wBAAsB,cAAc,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC,CAOxD;AAED,wBAAsB,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC,CAErD"}
|