@colbymchenry/codegraph-darwin-arm64 0.9.1 → 0.9.3
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/bin/codegraph +2 -1
- package/lib/dist/bin/codegraph.d.ts +1 -0
- package/lib/dist/bin/codegraph.d.ts.map +1 -1
- package/lib/dist/bin/codegraph.js +41 -1
- package/lib/dist/bin/codegraph.js.map +1 -1
- package/lib/dist/extraction/grammars.d.ts +7 -1
- package/lib/dist/extraction/grammars.d.ts.map +1 -1
- package/lib/dist/extraction/grammars.js +30 -0
- package/lib/dist/extraction/grammars.js.map +1 -1
- package/lib/dist/extraction/index.d.ts +9 -14
- package/lib/dist/extraction/index.d.ts.map +1 -1
- package/lib/dist/extraction/index.js +75 -94
- package/lib/dist/extraction/index.js.map +1 -1
- package/lib/dist/extraction/tree-sitter.d.ts.map +1 -1
- package/lib/dist/extraction/tree-sitter.js +6 -0
- package/lib/dist/extraction/tree-sitter.js.map +1 -1
- package/lib/dist/extraction/wasm-runtime-flags.d.ts +26 -0
- package/lib/dist/extraction/wasm-runtime-flags.d.ts.map +1 -0
- package/lib/dist/extraction/wasm-runtime-flags.js +93 -0
- package/lib/dist/extraction/wasm-runtime-flags.js.map +1 -0
- package/lib/dist/index.d.ts +2 -14
- package/lib/dist/index.d.ts.map +1 -1
- package/lib/dist/index.js +9 -49
- package/lib/dist/index.js.map +1 -1
- package/lib/dist/installer/index.d.ts +54 -2
- package/lib/dist/installer/index.d.ts.map +1 -1
- package/lib/dist/installer/index.js +123 -1
- package/lib/dist/installer/index.js.map +1 -1
- package/lib/dist/installer/targets/cursor.d.ts.map +1 -1
- package/lib/dist/installer/targets/cursor.js +57 -3
- package/lib/dist/installer/targets/cursor.js.map +1 -1
- package/lib/dist/installer/targets/hermes.d.ts +18 -0
- package/lib/dist/installer/targets/hermes.d.ts.map +1 -0
- package/lib/dist/installer/targets/hermes.js +305 -0
- package/lib/dist/installer/targets/hermes.js.map +1 -0
- package/lib/dist/installer/targets/registry.d.ts.map +1 -1
- package/lib/dist/installer/targets/registry.js +2 -0
- package/lib/dist/installer/targets/registry.js.map +1 -1
- package/lib/dist/installer/targets/types.d.ts +1 -1
- package/lib/dist/installer/targets/types.d.ts.map +1 -1
- package/lib/dist/mcp/tools.d.ts.map +1 -1
- package/lib/dist/mcp/tools.js +25 -2
- package/lib/dist/mcp/tools.js.map +1 -1
- package/lib/dist/resolution/frameworks/drupal.d.ts +51 -0
- package/lib/dist/resolution/frameworks/drupal.d.ts.map +1 -0
- package/lib/dist/resolution/frameworks/drupal.js +335 -0
- package/lib/dist/resolution/frameworks/drupal.js.map +1 -0
- package/lib/dist/resolution/frameworks/index.d.ts +1 -0
- package/lib/dist/resolution/frameworks/index.d.ts.map +1 -1
- package/lib/dist/resolution/frameworks/index.js +5 -1
- package/lib/dist/resolution/frameworks/index.js.map +1 -1
- package/lib/dist/sync/watcher.d.ts +2 -4
- package/lib/dist/sync/watcher.d.ts.map +1 -1
- package/lib/dist/sync/watcher.js +4 -6
- package/lib/dist/sync/watcher.js.map +1 -1
- package/lib/dist/types.d.ts +1 -55
- package/lib/dist/types.d.ts.map +1 -1
- package/lib/dist/types.js +3 -190
- package/lib/dist/types.js.map +1 -1
- package/lib/node_modules/.package-lock.json +10 -1
- package/lib/node_modules/ignore/LICENSE-MIT +21 -0
- package/lib/node_modules/ignore/README.md +452 -0
- package/lib/node_modules/ignore/index.d.ts +81 -0
- package/lib/node_modules/ignore/index.js +784 -0
- package/lib/node_modules/ignore/legacy.js +681 -0
- package/lib/node_modules/ignore/package.json +87 -0
- package/lib/package.json +2 -1
- package/package.json +1 -1
- package/lib/dist/config.d.ts +0 -51
- package/lib/dist/config.d.ts.map +0 -1
- package/lib/dist/config.js +0 -321
- package/lib/dist/config.js.map +0 -1
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Hermes Agent target.
|
|
3
|
+
*
|
|
4
|
+
* Hermes reads MCP servers from `$HERMES_HOME/config.yaml` under the
|
|
5
|
+
* top-level `mcp_servers` key, and exposes discovered MCP tools through
|
|
6
|
+
* dynamic toolsets named `mcp-<server>`. We add:
|
|
7
|
+
*
|
|
8
|
+
* mcp_servers.codegraph -> `codegraph serve --mcp`
|
|
9
|
+
* platform_toolsets.cli -> `mcp-codegraph`
|
|
10
|
+
*
|
|
11
|
+
* The second entry matters because Hermes CLI profiles often enable an
|
|
12
|
+
* explicit `platform_toolsets.cli` list. Without `mcp-codegraph` in that
|
|
13
|
+
* list, the MCP server can be configured and connected but its tools may
|
|
14
|
+
* still be filtered out of normal CLI sessions.
|
|
15
|
+
*/
|
|
16
|
+
import { AgentTarget } from './types';
|
|
17
|
+
export declare const hermesTarget: AgentTarget;
|
|
18
|
+
//# sourceMappingURL=hermes.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hermes.d.ts","sourceRoot":"","sources":["../../../src/installer/targets/hermes.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAKH,OAAO,EACL,WAAW,EAKZ,MAAM,SAAS,CAAC;AAiRjB,eAAO,MAAM,YAAY,EAAE,WAAgC,CAAC"}
|
|
@@ -0,0 +1,305 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Hermes Agent target.
|
|
4
|
+
*
|
|
5
|
+
* Hermes reads MCP servers from `$HERMES_HOME/config.yaml` under the
|
|
6
|
+
* top-level `mcp_servers` key, and exposes discovered MCP tools through
|
|
7
|
+
* dynamic toolsets named `mcp-<server>`. We add:
|
|
8
|
+
*
|
|
9
|
+
* mcp_servers.codegraph -> `codegraph serve --mcp`
|
|
10
|
+
* platform_toolsets.cli -> `mcp-codegraph`
|
|
11
|
+
*
|
|
12
|
+
* The second entry matters because Hermes CLI profiles often enable an
|
|
13
|
+
* explicit `platform_toolsets.cli` list. Without `mcp-codegraph` in that
|
|
14
|
+
* list, the MCP server can be configured and connected but its tools may
|
|
15
|
+
* still be filtered out of normal CLI sessions.
|
|
16
|
+
*/
|
|
17
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
18
|
+
if (k2 === undefined) k2 = k;
|
|
19
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
20
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
21
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
22
|
+
}
|
|
23
|
+
Object.defineProperty(o, k2, desc);
|
|
24
|
+
}) : (function(o, m, k, k2) {
|
|
25
|
+
if (k2 === undefined) k2 = k;
|
|
26
|
+
o[k2] = m[k];
|
|
27
|
+
}));
|
|
28
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
29
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
30
|
+
}) : function(o, v) {
|
|
31
|
+
o["default"] = v;
|
|
32
|
+
});
|
|
33
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
34
|
+
var ownKeys = function(o) {
|
|
35
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
36
|
+
var ar = [];
|
|
37
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
38
|
+
return ar;
|
|
39
|
+
};
|
|
40
|
+
return ownKeys(o);
|
|
41
|
+
};
|
|
42
|
+
return function (mod) {
|
|
43
|
+
if (mod && mod.__esModule) return mod;
|
|
44
|
+
var result = {};
|
|
45
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
46
|
+
__setModuleDefault(result, mod);
|
|
47
|
+
return result;
|
|
48
|
+
};
|
|
49
|
+
})();
|
|
50
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
51
|
+
exports.hermesTarget = void 0;
|
|
52
|
+
const fs = __importStar(require("fs"));
|
|
53
|
+
const path = __importStar(require("path"));
|
|
54
|
+
const os = __importStar(require("os"));
|
|
55
|
+
const shared_1 = require("./shared");
|
|
56
|
+
class HermesTarget {
|
|
57
|
+
id = 'hermes';
|
|
58
|
+
displayName = 'Hermes Agent';
|
|
59
|
+
docsUrl = 'https://hermes-agent.nousresearch.com';
|
|
60
|
+
supportsLocation(loc) {
|
|
61
|
+
return loc === 'global';
|
|
62
|
+
}
|
|
63
|
+
detect(loc) {
|
|
64
|
+
if (loc !== 'global') {
|
|
65
|
+
return { installed: false, alreadyConfigured: false };
|
|
66
|
+
}
|
|
67
|
+
const file = configPath();
|
|
68
|
+
const content = readText(file);
|
|
69
|
+
const installed = fs.existsSync(hermesHome()) || fs.existsSync(file);
|
|
70
|
+
return {
|
|
71
|
+
installed,
|
|
72
|
+
alreadyConfigured: hasCodeGraphMcpServer(content),
|
|
73
|
+
configPath: file,
|
|
74
|
+
};
|
|
75
|
+
}
|
|
76
|
+
install(loc, _opts) {
|
|
77
|
+
if (loc !== 'global') {
|
|
78
|
+
return {
|
|
79
|
+
files: [],
|
|
80
|
+
notes: ['Hermes Agent uses $HERMES_HOME/config.yaml; re-run with --location=global.'],
|
|
81
|
+
};
|
|
82
|
+
}
|
|
83
|
+
return {
|
|
84
|
+
files: [writeHermesConfig()],
|
|
85
|
+
notes: ['Start a new Hermes session for MCP changes to take effect.'],
|
|
86
|
+
};
|
|
87
|
+
}
|
|
88
|
+
uninstall(loc) {
|
|
89
|
+
if (loc !== 'global')
|
|
90
|
+
return { files: [] };
|
|
91
|
+
const file = configPath();
|
|
92
|
+
if (!fs.existsSync(file)) {
|
|
93
|
+
return { files: [{ path: file, action: 'not-found' }] };
|
|
94
|
+
}
|
|
95
|
+
const before = readText(file);
|
|
96
|
+
const after = removeCodeGraphToolset(removeCodeGraphMcpServer(before));
|
|
97
|
+
if (after === before) {
|
|
98
|
+
return { files: [{ path: file, action: 'not-found' }] };
|
|
99
|
+
}
|
|
100
|
+
(0, shared_1.atomicWriteFileSync)(file, ensureTrailingNewline(after));
|
|
101
|
+
return { files: [{ path: file, action: 'removed' }] };
|
|
102
|
+
}
|
|
103
|
+
printConfig(loc) {
|
|
104
|
+
if (loc !== 'global') {
|
|
105
|
+
return '# Hermes Agent uses $HERMES_HOME/config.yaml; use --location=global.\n';
|
|
106
|
+
}
|
|
107
|
+
return [
|
|
108
|
+
`# Add to ${configPath()}`,
|
|
109
|
+
'',
|
|
110
|
+
renderCodeGraphMcpBlock().join('\n'),
|
|
111
|
+
'',
|
|
112
|
+
'platform_toolsets:',
|
|
113
|
+
' cli:',
|
|
114
|
+
' - hermes-cli',
|
|
115
|
+
' - mcp-codegraph',
|
|
116
|
+
'',
|
|
117
|
+
].join('\n');
|
|
118
|
+
}
|
|
119
|
+
describePaths(loc) {
|
|
120
|
+
return loc === 'global' ? [configPath()] : [];
|
|
121
|
+
}
|
|
122
|
+
}
|
|
123
|
+
function hermesHome() {
|
|
124
|
+
return process.env.HERMES_HOME
|
|
125
|
+
? path.resolve(process.env.HERMES_HOME)
|
|
126
|
+
: path.join(os.homedir(), '.hermes');
|
|
127
|
+
}
|
|
128
|
+
function configPath() {
|
|
129
|
+
return path.join(hermesHome(), 'config.yaml');
|
|
130
|
+
}
|
|
131
|
+
function readText(file) {
|
|
132
|
+
try {
|
|
133
|
+
return fs.readFileSync(file, 'utf-8');
|
|
134
|
+
}
|
|
135
|
+
catch {
|
|
136
|
+
return '';
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
function writeHermesConfig() {
|
|
140
|
+
const file = configPath();
|
|
141
|
+
const existed = fs.existsSync(file);
|
|
142
|
+
const before = readText(file);
|
|
143
|
+
const afterMcp = upsertCodeGraphMcpServer(before);
|
|
144
|
+
const after = upsertCodeGraphToolset(afterMcp);
|
|
145
|
+
if (after === before) {
|
|
146
|
+
return { path: file, action: 'unchanged' };
|
|
147
|
+
}
|
|
148
|
+
(0, shared_1.atomicWriteFileSync)(file, ensureTrailingNewline(after));
|
|
149
|
+
return { path: file, action: existed ? 'updated' : 'created' };
|
|
150
|
+
}
|
|
151
|
+
function ensureTrailingNewline(text) {
|
|
152
|
+
return text.endsWith('\n') ? text : text + '\n';
|
|
153
|
+
}
|
|
154
|
+
function splitLines(content) {
|
|
155
|
+
return content.replace(/\r\n/g, '\n').replace(/\r/g, '\n').split('\n');
|
|
156
|
+
}
|
|
157
|
+
function joinLines(lines) {
|
|
158
|
+
while (lines.length > 0 && lines[lines.length - 1] === '')
|
|
159
|
+
lines.pop();
|
|
160
|
+
return lines.join('\n') + '\n';
|
|
161
|
+
}
|
|
162
|
+
function topLevelRange(lines, key) {
|
|
163
|
+
const start = lines.findIndex((line) => line.trim() === `${key}:`);
|
|
164
|
+
if (start === -1)
|
|
165
|
+
return null;
|
|
166
|
+
let end = lines.length;
|
|
167
|
+
for (let i = start + 1; i < lines.length; i++) {
|
|
168
|
+
const line = lines[i] ?? '';
|
|
169
|
+
if (line.trim() === '')
|
|
170
|
+
continue;
|
|
171
|
+
if (/^[A-Za-z_][A-Za-z0-9_-]*:\s*(?:#.*)?$/.test(line)) {
|
|
172
|
+
end = i;
|
|
173
|
+
break;
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
return { start, end };
|
|
177
|
+
}
|
|
178
|
+
function childRange(lines, parent, child) {
|
|
179
|
+
const startPattern = new RegExp(`^ ${escapeRegExp(child)}:\\s*(?:#.*)?$`);
|
|
180
|
+
let start = -1;
|
|
181
|
+
for (let i = parent.start + 1; i < parent.end; i++) {
|
|
182
|
+
if (startPattern.test(lines[i] ?? '')) {
|
|
183
|
+
start = i;
|
|
184
|
+
break;
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
if (start === -1)
|
|
188
|
+
return null;
|
|
189
|
+
let end = parent.end;
|
|
190
|
+
for (let i = start + 1; i < parent.end; i++) {
|
|
191
|
+
const line = lines[i] ?? '';
|
|
192
|
+
if (line.trim() === '')
|
|
193
|
+
continue;
|
|
194
|
+
if (/^ \S/.test(line)) {
|
|
195
|
+
end = i;
|
|
196
|
+
break;
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
while (end > start + 1 && (lines[end - 1] ?? '').trim() === '') {
|
|
200
|
+
end--;
|
|
201
|
+
}
|
|
202
|
+
return { start, end };
|
|
203
|
+
}
|
|
204
|
+
function escapeRegExp(value) {
|
|
205
|
+
return value.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
|
|
206
|
+
}
|
|
207
|
+
function renderCodeGraphMcpChild() {
|
|
208
|
+
return [
|
|
209
|
+
' codegraph:',
|
|
210
|
+
' command: codegraph',
|
|
211
|
+
' args:',
|
|
212
|
+
' - serve',
|
|
213
|
+
' - --mcp',
|
|
214
|
+
' timeout: 120',
|
|
215
|
+
' connect_timeout: 60',
|
|
216
|
+
' enabled: true',
|
|
217
|
+
];
|
|
218
|
+
}
|
|
219
|
+
function renderCodeGraphMcpBlock() {
|
|
220
|
+
return ['mcp_servers:', ...renderCodeGraphMcpChild()];
|
|
221
|
+
}
|
|
222
|
+
function hasCodeGraphMcpServer(content) {
|
|
223
|
+
const lines = splitLines(content);
|
|
224
|
+
const parent = topLevelRange(lines, 'mcp_servers');
|
|
225
|
+
return !!parent && !!childRange(lines, parent, 'codegraph');
|
|
226
|
+
}
|
|
227
|
+
function upsertCodeGraphMcpServer(content) {
|
|
228
|
+
const lines = splitLines(content);
|
|
229
|
+
const parent = topLevelRange(lines, 'mcp_servers');
|
|
230
|
+
const child = parent ? childRange(lines, parent, 'codegraph') : null;
|
|
231
|
+
const replacement = renderCodeGraphMcpChild();
|
|
232
|
+
if (!parent) {
|
|
233
|
+
if (lines.length > 0 && lines[lines.length - 1] === '')
|
|
234
|
+
lines.pop();
|
|
235
|
+
if (lines.length > 0)
|
|
236
|
+
lines.push('');
|
|
237
|
+
lines.push(...renderCodeGraphMcpBlock());
|
|
238
|
+
return joinLines(lines);
|
|
239
|
+
}
|
|
240
|
+
if (child) {
|
|
241
|
+
const existing = lines.slice(child.start, child.end);
|
|
242
|
+
if (arrayEqual(existing, replacement))
|
|
243
|
+
return joinLines(lines);
|
|
244
|
+
lines.splice(child.start, child.end - child.start, ...replacement);
|
|
245
|
+
return joinLines(lines);
|
|
246
|
+
}
|
|
247
|
+
lines.splice(parent.end, 0, ...replacement);
|
|
248
|
+
return joinLines(lines);
|
|
249
|
+
}
|
|
250
|
+
function removeCodeGraphMcpServer(content) {
|
|
251
|
+
const lines = splitLines(content);
|
|
252
|
+
const parent = topLevelRange(lines, 'mcp_servers');
|
|
253
|
+
const child = parent ? childRange(lines, parent, 'codegraph') : null;
|
|
254
|
+
if (!child)
|
|
255
|
+
return content;
|
|
256
|
+
lines.splice(child.start, child.end - child.start);
|
|
257
|
+
return joinLines(lines);
|
|
258
|
+
}
|
|
259
|
+
function upsertCodeGraphToolset(content) {
|
|
260
|
+
const lines = splitLines(content);
|
|
261
|
+
const parent = topLevelRange(lines, 'platform_toolsets');
|
|
262
|
+
const cli = parent ? childRange(lines, parent, 'cli') : null;
|
|
263
|
+
if (!parent) {
|
|
264
|
+
if (lines.length > 0 && lines[lines.length - 1] === '')
|
|
265
|
+
lines.pop();
|
|
266
|
+
if (lines.length > 0)
|
|
267
|
+
lines.push('');
|
|
268
|
+
lines.push('platform_toolsets:', ' cli:', ' - hermes-cli', ' - mcp-codegraph');
|
|
269
|
+
return joinLines(lines);
|
|
270
|
+
}
|
|
271
|
+
if (!cli) {
|
|
272
|
+
lines.splice(parent.end, 0, ' cli:', ' - hermes-cli', ' - mcp-codegraph');
|
|
273
|
+
return joinLines(lines);
|
|
274
|
+
}
|
|
275
|
+
const hasEntry = lines
|
|
276
|
+
.slice(cli.start + 1, cli.end)
|
|
277
|
+
.some((line) => line.trim() === '- mcp-codegraph');
|
|
278
|
+
if (hasEntry)
|
|
279
|
+
return joinLines(lines);
|
|
280
|
+
lines.splice(cli.end, 0, ' - mcp-codegraph');
|
|
281
|
+
return joinLines(lines);
|
|
282
|
+
}
|
|
283
|
+
function removeCodeGraphToolset(content) {
|
|
284
|
+
const lines = splitLines(content);
|
|
285
|
+
const parent = topLevelRange(lines, 'platform_toolsets');
|
|
286
|
+
const cli = parent ? childRange(lines, parent, 'cli') : null;
|
|
287
|
+
if (!cli)
|
|
288
|
+
return content;
|
|
289
|
+
const hasEntry = lines
|
|
290
|
+
.slice(cli.start + 1, cli.end)
|
|
291
|
+
.some((line) => line.trim() === '- mcp-codegraph');
|
|
292
|
+
if (!hasEntry)
|
|
293
|
+
return content;
|
|
294
|
+
const next = lines.filter((line, idx) => {
|
|
295
|
+
if (idx <= cli.start || idx >= cli.end)
|
|
296
|
+
return true;
|
|
297
|
+
return line.trim() !== '- mcp-codegraph';
|
|
298
|
+
});
|
|
299
|
+
return joinLines(next);
|
|
300
|
+
}
|
|
301
|
+
function arrayEqual(a, b) {
|
|
302
|
+
return a.length === b.length && a.every((value, idx) => value === b[idx]);
|
|
303
|
+
}
|
|
304
|
+
exports.hermesTarget = new HermesTarget();
|
|
305
|
+
//# sourceMappingURL=hermes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hermes.js","sourceRoot":"","sources":["../../../src/installer/targets/hermes.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../../src/installer/targets/registry.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../../src/installer/targets/registry.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAO1D,eAAO,MAAM,WAAW,EAAE,SAAS,WAAW,EAM5C,CAAC;AAEH,wBAAgB,SAAS,CAAC,EAAE,EAAE,MAAM,GAAG,WAAW,GAAG,SAAS,CAE7D;AAED,wBAAgB,aAAa,IAAI,QAAQ,EAAE,CAE1C;AAED;;;;;GAKG;AACH,wBAAgB,SAAS,CAAC,GAAG,EAAE,QAAQ,GAAG,KAAK,CAAC;IAC9C,MAAM,EAAE,WAAW,CAAC;IACpB,SAAS,EAAE,UAAU,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC,CAAC;CAC9C,CAAC,CAKD;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,QAAQ,GAAG,WAAW,EAAE,CAyB7E"}
|
|
@@ -17,11 +17,13 @@ const claude_1 = require("./claude");
|
|
|
17
17
|
const cursor_1 = require("./cursor");
|
|
18
18
|
const codex_1 = require("./codex");
|
|
19
19
|
const opencode_1 = require("./opencode");
|
|
20
|
+
const hermes_1 = require("./hermes");
|
|
20
21
|
exports.ALL_TARGETS = Object.freeze([
|
|
21
22
|
claude_1.claudeTarget,
|
|
22
23
|
cursor_1.cursorTarget,
|
|
23
24
|
codex_1.codexTarget,
|
|
24
25
|
opencode_1.opencodeTarget,
|
|
26
|
+
hermes_1.hermesTarget,
|
|
25
27
|
]);
|
|
26
28
|
function getTarget(id) {
|
|
27
29
|
return exports.ALL_TARGETS.find((t) => t.id === id);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../../src/installer/targets/registry.ts"],"names":[],"mappings":";AAAA;;;;;;;GAOG;;;
|
|
1
|
+
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../../src/installer/targets/registry.ts"],"names":[],"mappings":";AAAA;;;;;;;GAOG;;;AAiBH,8BAEC;AAED,sCAEC;AAQD,8BAQC;AAaD,8CAyBC;AA1ED,qCAAwC;AACxC,qCAAwC;AACxC,mCAAsC;AACtC,yCAA4C;AAC5C,qCAAwC;AAE3B,QAAA,WAAW,GAA2B,MAAM,CAAC,MAAM,CAAC;IAC/D,qBAAY;IACZ,qBAAY;IACZ,mBAAW;IACX,yBAAc;IACd,qBAAY;CACb,CAAC,CAAC;AAEH,SAAgB,SAAS,CAAC,EAAU;IAClC,OAAO,mBAAW,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;AAC9C,CAAC;AAED,SAAgB,aAAa;IAC3B,OAAO,mBAAW,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AACtC,CAAC;AAED;;;;;GAKG;AACH,SAAgB,SAAS,CAAC,GAAa;IAIrC,OAAO,mBAAW,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QAClC,MAAM;QACN,SAAS,EAAE,MAAM,CAAC,MAAM,CAAC,GAAG,CAAC;KAC9B,CAAC,CAAC,CAAC;AACN,CAAC;AAED;;;;;;;;;;GAUG;AACH,SAAgB,iBAAiB,CAAC,KAAa,EAAE,GAAa;IAC5D,IAAI,KAAK,KAAK,MAAM;QAAE,OAAO,EAAE,CAAC;IAChC,IAAI,KAAK,KAAK,KAAK;QAAE,OAAO,CAAC,GAAG,mBAAW,CAAC,CAAC;IAC7C,IAAI,KAAK,KAAK,MAAM,EAAE,CAAC;QACrB,MAAM,QAAQ,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;QAC/E,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC;YAAE,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC;QACrE,MAAM,QAAQ,GAAG,SAAS,CAAC,QAAQ,CAAC,CAAC;QACrC,OAAO,QAAQ,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IACpC,CAAC;IAED,MAAM,GAAG,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;IAClE,MAAM,QAAQ,GAAkB,EAAE,CAAC;IACnC,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,KAAK,MAAM,EAAE,IAAI,GAAG,EAAE,CAAC;QACrB,MAAM,CAAC,GAAG,SAAS,CAAC,EAAE,CAAC,CAAC;QACxB,IAAI,CAAC;YAAE,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;;YACnB,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACxB,CAAC;IACD,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvB,MAAM,KAAK,GAAG,aAAa,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACzC,MAAM,IAAI,KAAK,CACb,2BAA2B,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,YAAY,KAAK,iCAAiC,CAChG,CAAC;IACJ,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC"}
|
|
@@ -17,7 +17,7 @@ export type Location = 'global' | 'local';
|
|
|
17
17
|
* lookup. New targets add a value here when they're added to the
|
|
18
18
|
* registry. Keep these short and lowercase.
|
|
19
19
|
*/
|
|
20
|
-
export type TargetId = 'claude' | 'cursor' | 'codex' | 'opencode';
|
|
20
|
+
export type TargetId = 'claude' | 'cursor' | 'codex' | 'opencode' | 'hermes';
|
|
21
21
|
/**
|
|
22
22
|
* Result of `target.detect(location)`.
|
|
23
23
|
*
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/installer/targets/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,MAAM,MAAM,QAAQ,GAAG,QAAQ,GAAG,OAAO,CAAC;AAE1C;;;;GAIG;AACH,MAAM,MAAM,QAAQ,GAAG,QAAQ,GAAG,QAAQ,GAAG,OAAO,GAAG,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/installer/targets/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,MAAM,MAAM,QAAQ,GAAG,QAAQ,GAAG,OAAO,CAAC;AAE1C;;;;GAIG;AACH,MAAM,MAAM,QAAQ,GAAG,QAAQ,GAAG,QAAQ,GAAG,OAAO,GAAG,UAAU,GAAG,QAAQ,CAAC;AAE7E;;;;;;;;;;;;GAYG;AACH,MAAM,WAAW,eAAe;IAC9B,SAAS,EAAE,OAAO,CAAC;IACnB,iBAAiB,EAAE,OAAO,CAAC;IAC3B,+DAA+D;IAC/D,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED;;;;;;GAMG;AACH,MAAM,WAAW,WAAW;IAC1B,KAAK,EAAE,KAAK,CAAC;QACX,IAAI,EAAE,MAAM,CAAC;QACb,MAAM,EAAE,SAAS,GAAG,SAAS,GAAG,WAAW,GAAG,SAAS,GAAG,WAAW,GAAG,MAAM,CAAC;KAChF,CAAC,CAAC;IACH;;;;OAIG;IACH,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,MAAM,WAAW,cAAc;IAC7B;;;;OAIG;IACH,SAAS,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,WAAW;IAC1B,+CAA+C;IAC/C,QAAQ,CAAC,EAAE,EAAE,QAAQ,CAAC;IACtB,gEAAgE;IAChE,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,iEAAiE;IACjE,QAAQ,CAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAC1B;;;;;;;OAOG;IACH,gBAAgB,CAAC,GAAG,EAAE,QAAQ,GAAG,OAAO,CAAC;IACzC,MAAM,CAAC,GAAG,EAAE,QAAQ,GAAG,eAAe,CAAC;IACvC,OAAO,CAAC,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,cAAc,GAAG,WAAW,CAAC;IAC1D;;;;;OAKG;IACH,SAAS,CAAC,GAAG,EAAE,QAAQ,GAAG,WAAW,CAAC;IACtC;;;;OAIG;IACH,WAAW,CAAC,GAAG,EAAE,QAAQ,GAAG,MAAM,CAAC;IACnC,oEAAoE;IACpE,aAAa,CAAC,GAAG,EAAE,QAAQ,GAAG,MAAM,EAAE,CAAC;IACvC;;;;;;;;;;;;;OAaG;IACH,mBAAmB,CAAC,IAAI,WAAW,CAAC;CACrC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../../src/mcp/tools.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,SAAuC,MAAM,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../../src/mcp/tools.ts"],"names":[],"mappings":"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"}
|
package/lib/dist/mcp/tools.js
CHANGED
|
@@ -176,15 +176,38 @@ function numberSourceLines(slice, firstLineNumber) {
|
|
|
176
176
|
/**
|
|
177
177
|
* Mark a Claude session as having consulted MCP tools.
|
|
178
178
|
* This enables Grep/Glob/Bash commands that would otherwise be blocked.
|
|
179
|
+
*
|
|
180
|
+
* Why the explicit openSync + O_NOFOLLOW dance instead of plain writeFileSync:
|
|
181
|
+
* tmpdir() is world-writable on Linux (mode 1777), so on a shared multi-user
|
|
182
|
+
* machine any other local user can pre-create `codegraph-consulted-<hash>` as
|
|
183
|
+
* a symlink pointing at a file the victim owns. The old `writeFileSync` would
|
|
184
|
+
* happily follow that link and overwrite the target's contents with the ISO
|
|
185
|
+
* timestamp string (CWE-59). The session-id hash provides the predictability
|
|
186
|
+
* gate, but it's defense-in-depth: if a session id ever surfaces in logs,
|
|
187
|
+
* argv, or telemetry the attack becomes trivial, and the right fix is to not
|
|
188
|
+
* follow links from /tmp paths in the first place.
|
|
179
189
|
*/
|
|
180
190
|
function markSessionConsulted(sessionId) {
|
|
181
191
|
try {
|
|
182
192
|
const hash = (0, crypto_1.createHash)('md5').update(sessionId).digest('hex').slice(0, 16);
|
|
183
193
|
const markerPath = (0, path_1.join)((0, os_1.tmpdir)(), `codegraph-consulted-${hash}`);
|
|
184
|
-
|
|
194
|
+
// O_NOFOLLOW makes openSync throw ELOOP if markerPath is already a symlink.
|
|
195
|
+
// O_CREAT + O_TRUNC keep the original "create-or-overwrite" semantics, and
|
|
196
|
+
// mode 0o600 prevents readback by other local users (the marker payload is
|
|
197
|
+
// benign, but narrowing the exposure costs nothing).
|
|
198
|
+
const flags = fs_1.constants.O_WRONLY | fs_1.constants.O_CREAT | fs_1.constants.O_TRUNC | fs_1.constants.O_NOFOLLOW;
|
|
199
|
+
const fd = (0, fs_1.openSync)(markerPath, flags, 0o600);
|
|
200
|
+
try {
|
|
201
|
+
(0, fs_1.writeSync)(fd, new Date().toISOString());
|
|
202
|
+
}
|
|
203
|
+
finally {
|
|
204
|
+
(0, fs_1.closeSync)(fd);
|
|
205
|
+
}
|
|
185
206
|
}
|
|
186
207
|
catch {
|
|
187
|
-
// Silently fail - don't break MCP on marker write failure
|
|
208
|
+
// Silently fail - don't break MCP on marker write failure. ELOOP from a
|
|
209
|
+
// planted symlink lands here too, which is the intended behavior: refuse
|
|
210
|
+
// to write rather than overwrite an attacker-chosen target.
|
|
188
211
|
}
|
|
189
212
|
}
|
|
190
213
|
/**
|