@getmarrow/mcp 3.9.102 → 3.9.106
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 +71 -24
- package/dist/approval-reply.d.ts +2 -0
- package/dist/approval-reply.d.ts.map +1 -0
- package/dist/approval-reply.js +18 -0
- package/dist/approval-reply.js.map +1 -0
- package/dist/cli.js +1716 -1644
- package/dist/cli.js.map +1 -1
- package/dist/codex-plugin-pins.d.ts +19 -0
- package/dist/codex-plugin-pins.d.ts.map +1 -0
- package/dist/codex-plugin-pins.js +61 -0
- package/dist/codex-plugin-pins.js.map +1 -0
- package/dist/codex-plugins.d.ts +34 -0
- package/dist/codex-plugins.d.ts.map +1 -0
- package/dist/codex-plugins.js +240 -0
- package/dist/codex-plugins.js.map +1 -0
- package/dist/env.d.ts +8 -0
- package/dist/env.d.ts.map +1 -1
- package/dist/env.js +83 -4
- package/dist/env.js.map +1 -1
- package/dist/hook-context.d.ts.map +1 -1
- package/dist/hook-context.js +25 -0
- package/dist/hook-context.js.map +1 -1
- package/dist/hook-contract.d.ts +4 -3
- package/dist/hook-contract.d.ts.map +1 -1
- package/dist/hook-contract.js +43 -5
- package/dist/hook-contract.js.map +1 -1
- package/dist/hook-pre-action.d.ts +80 -3
- package/dist/hook-pre-action.d.ts.map +1 -1
- package/dist/hook-pre-action.js +435 -29
- package/dist/hook-pre-action.js.map +1 -1
- package/dist/hook-tool-policy.d.ts +73 -4
- package/dist/hook-tool-policy.d.ts.map +1 -1
- package/dist/hook-tool-policy.js +287 -18
- package/dist/hook-tool-policy.js.map +1 -1
- package/dist/hook.d.ts +1 -1
- package/dist/hook.d.ts.map +1 -1
- package/dist/hook.js +15 -7
- package/dist/hook.js.map +1 -1
- package/dist/host-approval-state.d.ts +7 -0
- package/dist/host-approval-state.d.ts.map +1 -1
- package/dist/host-approval-state.js +15 -0
- package/dist/host-approval-state.js.map +1 -1
- package/dist/host-approval.d.ts +22 -1
- package/dist/host-approval.d.ts.map +1 -1
- package/dist/host-approval.js +65 -4
- package/dist/host-approval.js.map +1 -1
- package/dist/host-session.d.ts +11 -0
- package/dist/host-session.d.ts.map +1 -1
- package/dist/host-session.js +49 -0
- package/dist/host-session.js.map +1 -1
- package/dist/index.d.ts +5 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +23 -11
- package/dist/index.js.map +1 -1
- package/dist/keyless-server.d.ts +53 -0
- package/dist/keyless-server.d.ts.map +1 -0
- package/dist/keyless-server.js +230 -0
- package/dist/keyless-server.js.map +1 -0
- package/dist/normalized-action.d.ts +31 -6
- package/dist/normalized-action.d.ts.map +1 -1
- package/dist/normalized-action.js +550 -105
- package/dist/normalized-action.js.map +1 -1
- package/dist/own-server-identity.d.ts +142 -0
- package/dist/own-server-identity.d.ts.map +1 -0
- package/dist/own-server-identity.js +1123 -0
- package/dist/own-server-identity.js.map +1 -0
- package/dist/own-tool.d.ts +21 -9
- package/dist/own-tool.d.ts.map +1 -1
- package/dist/own-tool.js +25 -10
- package/dist/own-tool.js.map +1 -1
- package/dist/redact.d.ts +23 -0
- package/dist/redact.d.ts.map +1 -1
- package/dist/redact.js +181 -8
- package/dist/redact.js.map +1 -1
- package/dist/seatbelt/classifier-pin.d.ts +15 -0
- package/dist/seatbelt/classifier-pin.d.ts.map +1 -0
- package/dist/seatbelt/classifier-pin.js +26 -0
- package/dist/seatbelt/classifier-pin.js.map +1 -0
- package/dist/seatbelt/env-dump.d.ts +45 -0
- package/dist/seatbelt/env-dump.d.ts.map +1 -0
- package/dist/seatbelt/env-dump.js +308 -0
- package/dist/seatbelt/env-dump.js.map +1 -0
- package/dist/seatbelt/fallback-copy.d.ts +16 -0
- package/dist/seatbelt/fallback-copy.d.ts.map +1 -0
- package/dist/seatbelt/fallback-copy.js +68 -0
- package/dist/seatbelt/fallback-copy.js.map +1 -0
- package/dist/seatbelt/guards.d.ts +10 -0
- package/dist/seatbelt/guards.d.ts.map +1 -0
- package/dist/seatbelt/guards.js +509 -0
- package/dist/seatbelt/guards.js.map +1 -0
- package/dist/seatbelt/hook.d.ts +91 -0
- package/dist/seatbelt/hook.d.ts.map +1 -0
- package/dist/seatbelt/hook.js +396 -0
- package/dist/seatbelt/hook.js.map +1 -0
- package/dist/seatbelt/longopts.d.ts +68 -0
- package/dist/seatbelt/longopts.d.ts.map +1 -0
- package/dist/seatbelt/longopts.js +377 -0
- package/dist/seatbelt/longopts.js.map +1 -0
- package/dist/seatbelt/mapper.d.ts +83 -0
- package/dist/seatbelt/mapper.d.ts.map +1 -0
- package/dist/seatbelt/mapper.js +10581 -0
- package/dist/seatbelt/mapper.js.map +1 -0
- package/dist/seatbelt/record.d.ts +94 -0
- package/dist/seatbelt/record.d.ts.map +1 -0
- package/dist/seatbelt/record.js +776 -0
- package/dist/seatbelt/record.js.map +1 -0
- package/dist/seatbelt/tables.d.ts +82 -0
- package/dist/seatbelt/tables.d.ts.map +1 -0
- package/dist/seatbelt/tables.js +352 -0
- package/dist/seatbelt/tables.js.map +1 -0
- package/dist/seatbelt-deploy.d.ts +100 -0
- package/dist/seatbelt-deploy.d.ts.map +1 -0
- package/dist/seatbelt-deploy.js +393 -0
- package/dist/seatbelt-deploy.js.map +1 -0
- package/dist/seatbelt-fs.d.ts +30 -0
- package/dist/seatbelt-fs.d.ts.map +1 -0
- package/dist/seatbelt-fs.js +94 -0
- package/dist/seatbelt-fs.js.map +1 -0
- package/dist/seatbelt-git.d.ts +212 -0
- package/dist/seatbelt-git.d.ts.map +1 -0
- package/dist/seatbelt-git.js +844 -0
- package/dist/seatbelt-git.js.map +1 -0
- package/dist/seatbelt-mode.d.ts +77 -0
- package/dist/seatbelt-mode.d.ts.map +1 -0
- package/dist/seatbelt-mode.js +496 -0
- package/dist/seatbelt-mode.js.map +1 -0
- package/dist/seatbelt-path.d.ts +123 -0
- package/dist/seatbelt-path.d.ts.map +1 -0
- package/dist/seatbelt-path.js +482 -0
- package/dist/seatbelt-path.js.map +1 -0
- package/dist/seatbelt-scripts.d.ts +109 -0
- package/dist/seatbelt-scripts.d.ts.map +1 -0
- package/dist/seatbelt-scripts.js +1060 -0
- package/dist/seatbelt-scripts.js.map +1 -0
- package/dist/secret-paths.d.ts +17 -0
- package/dist/secret-paths.d.ts.map +1 -0
- package/dist/secret-paths.js +32 -0
- package/dist/secret-paths.js.map +1 -0
- package/dist/session-loop-guard.d.ts.map +1 -1
- package/dist/session-loop-guard.js +15 -5
- package/dist/session-loop-guard.js.map +1 -1
- package/dist/tool-catalog.js +2 -2
- package/dist/tool-catalog.js.map +1 -1
- package/dist/types.d.ts +2 -1
- package/dist/types.d.ts.map +1 -1
- package/package.json +3 -2
- package/server.json +3 -3
- package/vendor/classifier/MANIFEST.json +25 -0
- package/vendor/classifier/classifier.js +1356 -0
- package/vendor/classifier/policy-baseline.js +187 -0
- package/vendor/classifier/redact.js +59 -0
- package/vendor/classifier/shell-parse.js +455 -0
|
@@ -0,0 +1,240 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* The MCP servers enabled Codex plugins add, read from the plugin cache the
|
|
4
|
+
* way codex 0.161 lays it out (`codex plugin add` writes
|
|
5
|
+
* `$CODEX_HOME/plugins/cache/<marketplace>/<plugin>/<version>/` and enables
|
|
6
|
+
* `[plugins."<plugin>@<marketplace>"]` in `$CODEX_HOME/config.toml`), and
|
|
7
|
+
* whether a plugin is the official Marrow Codex plugin, proven only by the
|
|
8
|
+
* SHA-256 of every file that decides what its `marrow` server runs.
|
|
9
|
+
*
|
|
10
|
+
* Fail closed: a missing cache, more than one version, a symlink whose real
|
|
11
|
+
* path leaves the cache, a file that is not a regular file, over the size cap
|
|
12
|
+
* or unparsable, an unknown `mcpServers` shape, a plugin file changed after
|
|
13
|
+
* codex started (or no codex process to compare with) means "not proven".
|
|
14
|
+
* Nothing read here is ever logged.
|
|
15
|
+
*/
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
exports.scanCodexPlugins = scanCodexPlugins;
|
|
18
|
+
const node_crypto_1 = require("node:crypto");
|
|
19
|
+
const node_fs_1 = require("node:fs");
|
|
20
|
+
const node_path_1 = require("node:path");
|
|
21
|
+
const own_server_identity_1 = require("./own-server-identity");
|
|
22
|
+
const codex_plugin_pins_1 = require("./codex-plugin-pins");
|
|
23
|
+
const MAX_PLUGINS = 32;
|
|
24
|
+
/** codex keeps whole-second precision in places and the process start is exact to about a second. */
|
|
25
|
+
const START_MARGIN_MS = 2_000;
|
|
26
|
+
const PLUGIN_ID = /^([A-Za-z0-9_][A-Za-z0-9_.-]{0,127})@([A-Za-z0-9_][A-Za-z0-9_.-]{0,127})$/;
|
|
27
|
+
const MANIFESTS = ['.codex-plugin/plugin.json', '.claude-plugin/plugin.json', '.cursor-plugin/plugin.json'];
|
|
28
|
+
const DEFAULT_MCP_FILE = '.mcp.json';
|
|
29
|
+
function insideRoot(root, real) {
|
|
30
|
+
return real.startsWith(`${root}${node_path_1.sep}`);
|
|
31
|
+
}
|
|
32
|
+
/** A file inside the plugin version directory: relative, no `..`, real path inside the cache. */
|
|
33
|
+
function readPluginFile(at, rel) {
|
|
34
|
+
if (typeof rel !== 'string' || rel.length === 0 || rel.length > 1024 || rel.includes('\0') || (0, node_path_1.isAbsolute)(rel))
|
|
35
|
+
return { state: 'bad' };
|
|
36
|
+
const clean = (0, node_path_1.normalize)(rel);
|
|
37
|
+
if (clean === '..' || clean.startsWith(`..${node_path_1.sep}`) || (0, node_path_1.isAbsolute)(clean))
|
|
38
|
+
return { state: 'bad' };
|
|
39
|
+
const path = (0, node_path_1.join)(at.dir, clean);
|
|
40
|
+
let real;
|
|
41
|
+
try {
|
|
42
|
+
real = (0, node_fs_1.realpathSync)(path);
|
|
43
|
+
}
|
|
44
|
+
catch (error) {
|
|
45
|
+
const code = error?.code;
|
|
46
|
+
return code === 'ENOENT' || code === 'ENOTDIR' ? { state: 'missing' } : { state: 'bad' };
|
|
47
|
+
}
|
|
48
|
+
if (!insideRoot(at.root, real))
|
|
49
|
+
return { state: 'bad' };
|
|
50
|
+
const read = (0, own_server_identity_1.readHostConfigBytes)(real);
|
|
51
|
+
if (read.state !== 'ok')
|
|
52
|
+
return read.state === 'missing' ? { state: 'missing' } : { state: 'bad' };
|
|
53
|
+
try {
|
|
54
|
+
at.newest = Math.max(at.newest, (0, node_fs_1.statSync)(real).mtimeMs, (0, node_fs_1.lstatSync)(path).mtimeMs);
|
|
55
|
+
}
|
|
56
|
+
catch {
|
|
57
|
+
return { state: 'bad' };
|
|
58
|
+
}
|
|
59
|
+
return read;
|
|
60
|
+
}
|
|
61
|
+
function withoutBom(text) {
|
|
62
|
+
return text.charCodeAt(0) === 0xfeff ? text.slice(1) : text;
|
|
63
|
+
}
|
|
64
|
+
function plainObject(value) {
|
|
65
|
+
return Boolean(value) && typeof value === 'object' && !Array.isArray(value);
|
|
66
|
+
}
|
|
67
|
+
/** `{ "mcpServers": { name: {...} } }` or a bare `{ name: {...} }` map; anything else is unknown. */
|
|
68
|
+
function serverNames(value) {
|
|
69
|
+
if (!plainObject(value))
|
|
70
|
+
return null;
|
|
71
|
+
const keys = Object.keys(value);
|
|
72
|
+
if (keys.includes('mcpServers')) {
|
|
73
|
+
if (keys.length !== 1 || !plainObject(value.mcpServers))
|
|
74
|
+
return null;
|
|
75
|
+
value = value.mcpServers;
|
|
76
|
+
}
|
|
77
|
+
const map = value;
|
|
78
|
+
if (!Object.values(map).every(plainObject))
|
|
79
|
+
return null;
|
|
80
|
+
return Object.keys(map);
|
|
81
|
+
}
|
|
82
|
+
function parseJson(text) {
|
|
83
|
+
try {
|
|
84
|
+
return JSON.parse(withoutBom(text));
|
|
85
|
+
}
|
|
86
|
+
catch {
|
|
87
|
+
return undefined;
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
function sha256(bytes) {
|
|
91
|
+
return (0, node_crypto_1.createHash)('sha256').update(bytes).digest('hex');
|
|
92
|
+
}
|
|
93
|
+
/** One enabled plugin's servers, and whether its files are exactly a pinned official release. */
|
|
94
|
+
function scanPlugin(cacheRoot, realRoot, id) {
|
|
95
|
+
const match = PLUGIN_ID.exec(id);
|
|
96
|
+
if (!match)
|
|
97
|
+
return 'a Codex plugin id has an unknown form';
|
|
98
|
+
const [, plugin, marketplace] = match;
|
|
99
|
+
const pluginDir = (0, node_path_1.join)(cacheRoot, marketplace, plugin);
|
|
100
|
+
let versions;
|
|
101
|
+
try {
|
|
102
|
+
versions = (0, node_fs_1.readdirSync)(pluginDir);
|
|
103
|
+
}
|
|
104
|
+
catch {
|
|
105
|
+
return 'an enabled Codex plugin is not in the local cache';
|
|
106
|
+
}
|
|
107
|
+
if (versions.length !== 1)
|
|
108
|
+
return versions.length ? 'more than one version of a Codex plugin is cached' : 'an enabled Codex plugin is not in the local cache';
|
|
109
|
+
const dir = (0, node_path_1.join)(pluginDir, versions[0]);
|
|
110
|
+
let realDir;
|
|
111
|
+
try {
|
|
112
|
+
realDir = (0, node_fs_1.realpathSync)(dir);
|
|
113
|
+
if (!(0, node_fs_1.statSync)(realDir).isDirectory())
|
|
114
|
+
return 'a Codex plugin cache entry is not a directory';
|
|
115
|
+
}
|
|
116
|
+
catch {
|
|
117
|
+
return 'a Codex plugin cache entry is unreadable';
|
|
118
|
+
}
|
|
119
|
+
if (!insideRoot(realRoot, realDir))
|
|
120
|
+
return 'a Codex plugin cache entry leaves the cache';
|
|
121
|
+
const at = { root: realRoot, dir, newest: 0 };
|
|
122
|
+
try {
|
|
123
|
+
at.newest = Math.max((0, node_fs_1.lstatSync)(dir).mtimeMs, (0, node_fs_1.statSync)(realDir).mtimeMs);
|
|
124
|
+
}
|
|
125
|
+
catch {
|
|
126
|
+
return 'a Codex plugin cache entry is unreadable';
|
|
127
|
+
}
|
|
128
|
+
const names = new Set();
|
|
129
|
+
const texts = new Map();
|
|
130
|
+
const take = (rel, required) => {
|
|
131
|
+
const read = readPluginFile(at, rel);
|
|
132
|
+
if (read.state === 'missing')
|
|
133
|
+
return required ? 'a Codex plugin file is missing' : null;
|
|
134
|
+
if (read.state === 'bad')
|
|
135
|
+
return 'a Codex plugin file is unreadable, not a regular file, too large or outside the cache';
|
|
136
|
+
texts.set((0, node_path_1.normalize)(rel), read.bytes);
|
|
137
|
+
const parsed = parseJson(read.bytes.toString('utf8'));
|
|
138
|
+
return parsed === undefined ? 'a Codex plugin file does not parse' : { parsed };
|
|
139
|
+
};
|
|
140
|
+
const manifests = [];
|
|
141
|
+
for (const rel of MANIFESTS) {
|
|
142
|
+
const got = take(rel, false);
|
|
143
|
+
if (typeof got === 'string')
|
|
144
|
+
return got;
|
|
145
|
+
if (got === null)
|
|
146
|
+
continue;
|
|
147
|
+
const manifest = got.parsed;
|
|
148
|
+
if (!plainObject(manifest))
|
|
149
|
+
return 'a Codex plugin manifest is not an object';
|
|
150
|
+
manifests.push(manifest);
|
|
151
|
+
const servers = manifest.mcpServers;
|
|
152
|
+
if (servers === undefined)
|
|
153
|
+
continue;
|
|
154
|
+
let found;
|
|
155
|
+
if (typeof servers === 'string') {
|
|
156
|
+
const file = take(servers, true);
|
|
157
|
+
if (typeof file === 'string')
|
|
158
|
+
return file;
|
|
159
|
+
found = serverNames(file.parsed);
|
|
160
|
+
}
|
|
161
|
+
else {
|
|
162
|
+
found = serverNames(servers);
|
|
163
|
+
}
|
|
164
|
+
if (!found)
|
|
165
|
+
return 'a Codex plugin declares MCP servers in an unknown shape';
|
|
166
|
+
for (const name of found)
|
|
167
|
+
names.add(name);
|
|
168
|
+
}
|
|
169
|
+
if (!manifests.length)
|
|
170
|
+
return 'a Codex plugin has no manifest';
|
|
171
|
+
const fallback = take(DEFAULT_MCP_FILE, false);
|
|
172
|
+
if (typeof fallback === 'string')
|
|
173
|
+
return fallback;
|
|
174
|
+
if (fallback !== null) {
|
|
175
|
+
const found = serverNames(fallback.parsed);
|
|
176
|
+
if (!found)
|
|
177
|
+
return 'a Codex plugin declares MCP servers in an unknown shape';
|
|
178
|
+
for (const name of found)
|
|
179
|
+
names.add(name);
|
|
180
|
+
}
|
|
181
|
+
// The official plugin: one codex manifest naming a pinned release, cached under its own version,
|
|
182
|
+
// and every file that decides what its server runs byte-identical to that release.
|
|
183
|
+
let official = false;
|
|
184
|
+
const primary = manifests.length === 1 && texts.has((0, node_path_1.normalize)(MANIFESTS[0])) ? manifests[0] : null;
|
|
185
|
+
const pins = primary && typeof primary.name === 'string' && typeof primary.version === 'string'
|
|
186
|
+
? codex_plugin_pins_1.OFFICIAL_CODEX_PLUGIN_PINS[`${primary.name}@${primary.version}`]
|
|
187
|
+
: undefined;
|
|
188
|
+
if (pins && (0, node_path_1.basename)(dir) === primary.version) {
|
|
189
|
+
official = Object.entries(pins).every(([rel, digest]) => {
|
|
190
|
+
if (!texts.has((0, node_path_1.normalize)(rel))) {
|
|
191
|
+
const read = readPluginFile(at, rel);
|
|
192
|
+
if (read.state !== 'ok')
|
|
193
|
+
return false;
|
|
194
|
+
texts.set((0, node_path_1.normalize)(rel), read.bytes);
|
|
195
|
+
}
|
|
196
|
+
return sha256(texts.get((0, node_path_1.normalize)(rel))) === digest;
|
|
197
|
+
});
|
|
198
|
+
}
|
|
199
|
+
return { id, official, servers: [...names], newest: at.newest };
|
|
200
|
+
}
|
|
201
|
+
/** Every enabled plugin's MCP server names; any doubt is `bad`. */
|
|
202
|
+
function scanCodexPlugins(options) {
|
|
203
|
+
if (!options.ids.length)
|
|
204
|
+
return { bad: null, plugins: [] };
|
|
205
|
+
if (options.ids.length > MAX_PLUGINS)
|
|
206
|
+
return { bad: 'too many Codex plugins are enabled' };
|
|
207
|
+
if (options.processStartMs === null || !Number.isFinite(options.processStartMs)) {
|
|
208
|
+
return { bad: 'the codex process start is unknown, so plugin files cannot be dated' };
|
|
209
|
+
}
|
|
210
|
+
const plugins = (0, node_path_1.join)(options.codexHome, 'plugins');
|
|
211
|
+
try {
|
|
212
|
+
const staging = (0, node_fs_1.readdirSync)((0, node_path_1.join)(plugins, '.remote-plugin-install-staging'));
|
|
213
|
+
if (staging.length)
|
|
214
|
+
return { bad: 'a remote Codex plugin install is staged' };
|
|
215
|
+
}
|
|
216
|
+
catch (error) {
|
|
217
|
+
if (error?.code !== 'ENOENT')
|
|
218
|
+
return { bad: 'the Codex plugin staging folder is unreadable' };
|
|
219
|
+
}
|
|
220
|
+
const cacheRoot = (0, node_path_1.join)(plugins, 'cache');
|
|
221
|
+
let realRoot;
|
|
222
|
+
try {
|
|
223
|
+
realRoot = (0, node_fs_1.realpathSync)(cacheRoot);
|
|
224
|
+
}
|
|
225
|
+
catch {
|
|
226
|
+
return { bad: 'the Codex plugin cache is missing' };
|
|
227
|
+
}
|
|
228
|
+
const out = [];
|
|
229
|
+
for (const id of options.ids) {
|
|
230
|
+
const scanned = scanPlugin(cacheRoot, realRoot, id);
|
|
231
|
+
if (typeof scanned === 'string')
|
|
232
|
+
return { bad: scanned };
|
|
233
|
+
const { newest, ...plugin } = scanned;
|
|
234
|
+
if (!(newest < options.processStartMs - START_MARGIN_MS))
|
|
235
|
+
return { bad: 'a Codex plugin changed after codex started' };
|
|
236
|
+
out.push(plugin);
|
|
237
|
+
}
|
|
238
|
+
return { bad: null, plugins: out };
|
|
239
|
+
}
|
|
240
|
+
//# sourceMappingURL=codex-plugins.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"codex-plugins.js","sourceRoot":"","sources":["../src/codex-plugins.ts"],"names":[],"mappings":"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"}
|
package/dist/env.d.ts
CHANGED
|
@@ -6,9 +6,17 @@ export interface ResolvedMarrowEnv {
|
|
|
6
6
|
source: string | null;
|
|
7
7
|
missing: boolean;
|
|
8
8
|
exactFix: string;
|
|
9
|
+
/** Set when a base URL from the process environment was not used with an owner-file key. Names the source only, never a value. */
|
|
10
|
+
baseUrlNotice?: string;
|
|
11
|
+
/** Set only on a no-key result: an owner key file exists but failed the owner-only check, so whatever it holds was refused. */
|
|
12
|
+
ownerFileRefused?: boolean;
|
|
9
13
|
}
|
|
10
14
|
/** Host (with port) of a non-default base URL, for status output; null for the default. */
|
|
11
15
|
export declare function nonDefaultBaseUrlHost(baseUrl: string): string | null;
|
|
16
|
+
/** Writes a resolver notice to stderr once per process. Notices name a source, never a key or a URL. */
|
|
17
|
+
export declare function emitBaseUrlNotice(resolved: {
|
|
18
|
+
baseUrlNotice?: string;
|
|
19
|
+
}): void;
|
|
12
20
|
export declare function resolveMarrowEnv(options?: {
|
|
13
21
|
cwd?: string;
|
|
14
22
|
env?: NodeJS.ProcessEnv;
|
package/dist/env.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"env.d.ts","sourceRoot":"","sources":["../src/env.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"env.d.ts","sourceRoot":"","sources":["../src/env.ts"],"names":[],"mappings":"AAkBA,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,OAAO,EAAE,OAAO,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,kIAAkI;IAClI,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,+HAA+H;IAC/H,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B;AAED,2FAA2F;AAC3F,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAQpE;AA0FD,wGAAwG;AACxG,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE;IAAE,aAAa,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAS5E;AAqJD,wBAAgB,gBAAgB,CAAC,OAAO,GAAE;IACxC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IACxB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,OAAO,CAAC;CAClB,GAAG,iBAAiB,CA+DzB"}
|
package/dist/env.js
CHANGED
|
@@ -34,6 +34,7 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
34
34
|
})();
|
|
35
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
36
|
exports.nonDefaultBaseUrlHost = nonDefaultBaseUrlHost;
|
|
37
|
+
exports.emitBaseUrlNotice = emitBaseUrlNotice;
|
|
37
38
|
exports.resolveMarrowEnv = resolveMarrowEnv;
|
|
38
39
|
const fs = __importStar(require("fs"));
|
|
39
40
|
const os = __importStar(require("os"));
|
|
@@ -43,6 +44,7 @@ const ALLOWED_ENV_KEYS = new Set([
|
|
|
43
44
|
'MARROW_API_KEY',
|
|
44
45
|
'MARROW_KEY',
|
|
45
46
|
'MARROW_BASE_URL',
|
|
47
|
+
'MARROW_ALLOWED_BASE_URLS',
|
|
46
48
|
'MARROW_FLEET_AGENT_ID',
|
|
47
49
|
'MARROW_AGENT_ID',
|
|
48
50
|
'MARROW_SESSION_ID',
|
|
@@ -88,6 +90,78 @@ function shellOperand(realPath) {
|
|
|
88
90
|
return realPath;
|
|
89
91
|
return `'${realPath.replace(/'/g, `'\\''`)}'`;
|
|
90
92
|
}
|
|
93
|
+
// Where an owner-file key may be sent. A key read from ~/.marrow/env goes only to the
|
|
94
|
+
// default endpoint, the endpoint that same file names (MARROW_BASE_URL), or an exact
|
|
95
|
+
// origin that file lists in MARROW_ALLOWED_BASE_URLS. A base URL that only the process
|
|
96
|
+
// environment names (a project .mcp.json or .claude/settings.json env block, direnv, a
|
|
97
|
+
// devcontainer) never moves it. A key from the process environment is unchanged.
|
|
98
|
+
const LOOPBACK_HOSTS = new Set(['localhost', '127.0.0.1', '[::1]']);
|
|
99
|
+
// Strict parse of a URL a key may be sent to: https, or http on a loopback host only.
|
|
100
|
+
// No credentials, query, fragment, wildcard, whitespace, control or format characters.
|
|
101
|
+
function parseKeyTarget(value) {
|
|
102
|
+
const text = String(value ?? '').trim();
|
|
103
|
+
if (!text || /[\s\p{Cc}\p{Cf}\\*?#@]/u.test(text))
|
|
104
|
+
return null;
|
|
105
|
+
let url;
|
|
106
|
+
try {
|
|
107
|
+
url = new URL(text);
|
|
108
|
+
}
|
|
109
|
+
catch {
|
|
110
|
+
return null;
|
|
111
|
+
}
|
|
112
|
+
if (url.username || url.password || url.search || url.hash)
|
|
113
|
+
return null;
|
|
114
|
+
if (url.protocol === 'https:')
|
|
115
|
+
return url;
|
|
116
|
+
if (url.protocol === 'http:' && LOOPBACK_HOSTS.has(url.hostname))
|
|
117
|
+
return url;
|
|
118
|
+
return null;
|
|
119
|
+
}
|
|
120
|
+
function isRootPath(url) {
|
|
121
|
+
return url.pathname === '/' || url.pathname === '';
|
|
122
|
+
}
|
|
123
|
+
// Exact origins only: an entry with a path, credentials, query, fragment or wildcard is skipped.
|
|
124
|
+
function allowedOrigins(value) {
|
|
125
|
+
const origins = new Set();
|
|
126
|
+
for (const entry of String(value || '').split(',')) {
|
|
127
|
+
const url = parseKeyTarget(entry);
|
|
128
|
+
if (url && isRootPath(url))
|
|
129
|
+
origins.add(url.origin);
|
|
130
|
+
}
|
|
131
|
+
return origins;
|
|
132
|
+
}
|
|
133
|
+
function ownerKeyBaseUrl(filePath, parsed, env) {
|
|
134
|
+
// The owner file names its own endpoint: the existing precedence, the env URL is not consulted.
|
|
135
|
+
if (parsed.MARROW_BASE_URL)
|
|
136
|
+
return { baseUrl: parsed.MARROW_BASE_URL };
|
|
137
|
+
const candidate = String(env.MARROW_BASE_URL || '').trim();
|
|
138
|
+
if (!candidate)
|
|
139
|
+
return { baseUrl: DEFAULT_BASE_URL };
|
|
140
|
+
const target = parseKeyTarget(candidate);
|
|
141
|
+
if (target && target.origin === new URL(DEFAULT_BASE_URL).origin && isRootPath(target))
|
|
142
|
+
return { baseUrl: DEFAULT_BASE_URL };
|
|
143
|
+
if (target && allowedOrigins(parsed.MARROW_ALLOWED_BASE_URLS).has(target.origin)) {
|
|
144
|
+
return { baseUrl: `${target.origin}${target.pathname.replace(/\/+$/, '')}` };
|
|
145
|
+
}
|
|
146
|
+
return {
|
|
147
|
+
baseUrl: DEFAULT_BASE_URL,
|
|
148
|
+
notice: `ignored MARROW_BASE_URL from the process environment: the key comes from ~/.marrow/${path.basename(filePath)}; list the URL in MARROW_ALLOWED_BASE_URLS in that file to allow it`,
|
|
149
|
+
};
|
|
150
|
+
}
|
|
151
|
+
const emittedNotices = new Set();
|
|
152
|
+
/** Writes a resolver notice to stderr once per process. Notices name a source, never a key or a URL. */
|
|
153
|
+
function emitBaseUrlNotice(resolved) {
|
|
154
|
+
const notice = resolved.baseUrlNotice;
|
|
155
|
+
if (!notice || emittedNotices.has(notice))
|
|
156
|
+
return;
|
|
157
|
+
emittedNotices.add(notice);
|
|
158
|
+
try {
|
|
159
|
+
process.stderr.write(`[marrow] ${notice}\n`);
|
|
160
|
+
}
|
|
161
|
+
catch {
|
|
162
|
+
// A closed stderr never changes the decision.
|
|
163
|
+
}
|
|
164
|
+
}
|
|
91
165
|
function stripQuotes(value) {
|
|
92
166
|
const trimmed = String(value || '').trim();
|
|
93
167
|
if ((trimmed.startsWith('"') && trimmed.endsWith('"')) || (trimmed.startsWith("'") && trimmed.endsWith("'"))) {
|
|
@@ -264,9 +338,11 @@ function resolveMarrowEnv(options = {}) {
|
|
|
264
338
|
// paths. A file that fails the check supplies nothing, key included.
|
|
265
339
|
const ownerFiles = ownerEnvFiles(home);
|
|
266
340
|
let ignored = null;
|
|
341
|
+
let ownerFileRefused = false;
|
|
267
342
|
for (const filePath of ownerFiles) {
|
|
268
343
|
const read = readOwnerEnvFile(filePath, home);
|
|
269
344
|
if (read.status === 'rejected') {
|
|
345
|
+
ownerFileRefused = true;
|
|
270
346
|
if (!ignored)
|
|
271
347
|
ignored = ownerFileNotice(filePath, home);
|
|
272
348
|
continue;
|
|
@@ -278,7 +354,7 @@ function resolveMarrowEnv(options = {}) {
|
|
|
278
354
|
return fromFile(filePath, found, read.values, env);
|
|
279
355
|
}
|
|
280
356
|
if (options.trustedOnly === true)
|
|
281
|
-
return missingKey(env, ignored);
|
|
357
|
+
return missingKey(env, ignored, ownerFileRefused);
|
|
282
358
|
// Repository-level files (found by walking up from cwd) never supply a key or
|
|
283
359
|
// any other Marrow setting, whatever their owner or mode: a umask-077 clone or a
|
|
284
360
|
// mode-preserving archive yields a private file the owner never wrote. They are
|
|
@@ -294,7 +370,7 @@ function resolveMarrowEnv(options = {}) {
|
|
|
294
370
|
if (pickKey(peek?.values || {}).key && !ignored)
|
|
295
371
|
ignored = repoKeyNotice(filePath);
|
|
296
372
|
}
|
|
297
|
-
return missingKey(env, ignored);
|
|
373
|
+
return missingKey(env, ignored, ownerFileRefused);
|
|
298
374
|
}
|
|
299
375
|
function repoKeyNotice(filePath) {
|
|
300
376
|
return `Marrow key in ${printablePath(filePath)} ignored: keys are read only from ~/.marrow/env or your environment. Fix: ${REPO_KEY_FIX}.`;
|
|
@@ -362,9 +438,11 @@ function ownerFileNotice(filePath, home) {
|
|
|
362
438
|
return `${lead} Fix: run chmod 600 on the file named above and chmod 700 on its folder${homeText}${tail}.`;
|
|
363
439
|
}
|
|
364
440
|
function fromFile(filePath, found, parsed, env) {
|
|
441
|
+
const target = ownerKeyBaseUrl(filePath, parsed, env);
|
|
365
442
|
return {
|
|
366
443
|
apiKey: found.key,
|
|
367
|
-
baseUrl:
|
|
444
|
+
baseUrl: target.baseUrl,
|
|
445
|
+
...(target.notice ? { baseUrlNotice: target.notice } : {}),
|
|
368
446
|
agentId: parsed.MARROW_FLEET_AGENT_ID || parsed.MARROW_AGENT_ID || env.MARROW_FLEET_AGENT_ID || env.MARROW_AGENT_ID,
|
|
369
447
|
sessionId: parsed.MARROW_SESSION_ID || env.MARROW_SESSION_ID,
|
|
370
448
|
source: `${filePath}:${found.source}`,
|
|
@@ -372,7 +450,7 @@ function fromFile(filePath, found, parsed, env) {
|
|
|
372
450
|
exactFix: `Marrow key was found in ${printablePath(filePath)}. Keep this file private and run npx @getmarrow/install doctor to verify.`,
|
|
373
451
|
};
|
|
374
452
|
}
|
|
375
|
-
function missingKey(env, ignored) {
|
|
453
|
+
function missingKey(env, ignored, ownerFileRefused) {
|
|
376
454
|
return {
|
|
377
455
|
apiKey: '',
|
|
378
456
|
baseUrl: env.MARROW_BASE_URL || DEFAULT_BASE_URL,
|
|
@@ -380,6 +458,7 @@ function missingKey(env, ignored) {
|
|
|
380
458
|
sessionId: env.MARROW_SESSION_ID,
|
|
381
459
|
source: null,
|
|
382
460
|
missing: true,
|
|
461
|
+
...(ownerFileRefused ? { ownerFileRefused: true } : {}),
|
|
383
462
|
exactFix: 'Create an API key at https://getmarrow.ai, then export MARROW_API_KEY from trusted secret storage or place it in ~/.marrow/env with owner-only permissions before running npx -y --package=@getmarrow/mcp@latest marrow-mcp setup.'
|
|
384
463
|
+ (ignored ? `\n${ignored}` : ''),
|
|
385
464
|
};
|
package/dist/env.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"env.js","sourceRoot":"","sources":["../src/env.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"env.js","sourceRoot":"","sources":["../src/env.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"hook-context.d.ts","sourceRoot":"","sources":["../src/hook-context.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAGH,OAAO,KAAK,EAAE,wBAAwB,EAAE,yBAAyB,EAAE,uBAAuB,EAAE,MAAM,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"hook-context.d.ts","sourceRoot":"","sources":["../src/hook-context.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAGH,OAAO,KAAK,EAAE,wBAAwB,EAAE,yBAAyB,EAAE,uBAAuB,EAAE,MAAM,SAAS,CAAC;AA6D5G,eAAO,MAAM,oBAAoB,QAAgC,CAAC;AAwHlE,UAAU,aAAa;IACrB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,OAAO,CAAC;CACpB;AA6GD,UAAU,cAAc;IACtB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,cAAc,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,SAAS,EAAE,OAAO,CAAC;CACpB;AA2CD,wBAAgB,cAAc,CAAC,WAAW,EAAE,OAAO,GAAG,cAAc,CAiDnE;AAiPD,wBAAgB,yBAAyB,CACvC,OAAO,EAAE,cAAc,EACvB,KAAK,EAAE,yBAAyB,GAAG,IAAI,EACvC,WAAW,EAAE,uBAAuB,GAAG,IAAI,EAC3C,OAAO,GAAE,wBAAwB,GAAG,IAAW,GAC9C,MAAM,CAWR;AAmDD,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,wBAAwB,GAAG,MAAM,CAgB/E;AAiBD,wBAAsB,qBAAqB,IAAI,OAAO,CAAC,IAAI,CAAC,CA6J3D;AAaD;;;;GAIG;AACH,wBAAgB,2BAA2B,CAAC,QAAQ,GAAE,MAAsB,GAAG,aAAa,CA2B3F"}
|
package/dist/hook-context.js
CHANGED
|
@@ -28,6 +28,8 @@ const control_state_1 = require("./control-state");
|
|
|
28
28
|
const session_loop_guard_1 = require("./session-loop-guard");
|
|
29
29
|
const host_approval_1 = require("./host-approval");
|
|
30
30
|
const host_session_1 = require("./host-session");
|
|
31
|
+
const approval_reply_1 = require("./approval-reply");
|
|
32
|
+
const host_approval_state_1 = require("./host-approval-state");
|
|
31
33
|
/** Held actions waiting for the person, shown once at an interactive session's first prompt. */
|
|
32
34
|
async function interactiveHeldActionsNotice(context) {
|
|
33
35
|
const interactive = context.host === 'claude-code' ? !(0, host_approval_1.claudeCodeHeadless)()
|
|
@@ -38,6 +40,27 @@ async function interactiveHeldActionsNotice(context) {
|
|
|
38
40
|
return null;
|
|
39
41
|
return (0, host_approval_1.heldActionsNotice)(context).catch(() => null);
|
|
40
42
|
}
|
|
43
|
+
/** Shown to the user (never the agent) when they answer a held action in chat: only a dialog, the typed code on hosts that have one, or the owner's link approves. */
|
|
44
|
+
const CHAT_APPROVAL_NOTICE = 'Marrow did not record that as an approval: a chat reply cannot approve a held action. To approve it, put Claude Code in default mode (Shift+Tab), then ask the agent to retry; Claude Code will ask you.';
|
|
45
|
+
/**
|
|
46
|
+
* Tier A3, Claude Code only: the prompt looks like an approval ("yes") and this session has an open hold
|
|
47
|
+
* that was denied for later or is waiting quietly (never one that got a real dialog). Read-only: it writes
|
|
48
|
+
* no state, sends nothing, changes no hold, and keeps no copy of the prompt (the matcher answers yes or
|
|
49
|
+
* no). A state that cannot be read, a missing session id or any error shows nothing.
|
|
50
|
+
*/
|
|
51
|
+
function chatApprovalNotice(context, event) {
|
|
52
|
+
try {
|
|
53
|
+
if (context.host !== 'claude-code' || !(0, approval_reply_1.looksLikeApprovalReply)(event.prompt))
|
|
54
|
+
return null;
|
|
55
|
+
const sessionId = asString(event.session_id)?.trim();
|
|
56
|
+
if (!sessionId || sessionId !== context.hostSessionId)
|
|
57
|
+
return null;
|
|
58
|
+
return (0, host_approval_state_1.hasOpenChatOnlyHold)({ apiKey: context.apiKey, baseUrl: context.baseUrl, agentId: context.agentId || null }, context.hostSessionId, context.home) ? CHAT_APPROVAL_NOTICE : null;
|
|
59
|
+
}
|
|
60
|
+
catch {
|
|
61
|
+
return null;
|
|
62
|
+
}
|
|
63
|
+
}
|
|
41
64
|
exports.CONTEXT_HOOK_COMMAND = hook_contract_1.CONTEXT_HOOK_COMMAND;
|
|
42
65
|
const HOOK_DEBUG = process.env.MARROW_CONTEXT_HOOK_DEBUG === 'true' || process.env.MARROW_HOOK_DEBUG === 'true';
|
|
43
66
|
const MARROW_API_TIMEOUT_MS = 400;
|
|
@@ -144,6 +167,8 @@ async function settleHeldCallsAtPrompt(event) {
|
|
|
144
167
|
}
|
|
145
168
|
if (!heldReplyUserText)
|
|
146
169
|
heldReplyUserText = await interactiveHeldActionsNotice(context);
|
|
170
|
+
if (!heldReplyUserText)
|
|
171
|
+
heldReplyUserText = chatApprovalNotice(context, event);
|
|
147
172
|
await (0, host_approval_1.flushHoldOutbox)(context, 2, 2_000).catch(() => undefined);
|
|
148
173
|
}
|
|
149
174
|
function debug(msg) {
|