@getmarrow/mcp 3.9.108 → 3.9.110
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 +26 -1
- package/dist/cli.js +44 -3
- package/dist/cli.js.map +1 -1
- package/dist/control-notice.d.ts +13 -0
- package/dist/control-notice.d.ts.map +1 -0
- package/dist/control-notice.js +76 -0
- package/dist/control-notice.js.map +1 -0
- package/dist/control-routes.d.ts +10 -0
- package/dist/control-routes.d.ts.map +1 -0
- package/dist/control-routes.js +81 -0
- package/dist/control-routes.js.map +1 -0
- package/dist/env.d.ts +15 -0
- package/dist/env.d.ts.map +1 -1
- package/dist/env.js +29 -2
- package/dist/env.js.map +1 -1
- package/dist/hook-context.d.ts.map +1 -1
- package/dist/hook-context.js +34 -11
- package/dist/hook-context.js.map +1 -1
- package/dist/hook-contract.d.ts +2 -2
- package/dist/hook-contract.js +1 -1
- package/dist/hook-pre-action.d.ts +10 -2
- package/dist/hook-pre-action.d.ts.map +1 -1
- package/dist/hook-pre-action.js +105 -33
- package/dist/hook-pre-action.js.map +1 -1
- package/dist/hook-session.d.ts.map +1 -1
- package/dist/hook-session.js +12 -7
- package/dist/hook-session.js.map +1 -1
- package/dist/hook-tool-policy.d.ts +1 -1
- package/dist/hook-tool-policy.d.ts.map +1 -1
- package/dist/hook.d.ts.map +1 -1
- package/dist/hook.js +19 -14
- package/dist/hook.js.map +1 -1
- package/dist/host-approval.d.ts +9 -0
- package/dist/host-approval.d.ts.map +1 -1
- package/dist/host-approval.js +22 -0
- package/dist/host-approval.js.map +1 -1
- package/dist/identity-explain.d.ts +35 -0
- package/dist/identity-explain.d.ts.map +1 -0
- package/dist/identity-explain.js +60 -0
- package/dist/identity-explain.js.map +1 -0
- package/dist/ipv4-first.d.ts +7 -0
- package/dist/ipv4-first.d.ts.map +1 -0
- package/dist/ipv4-first.js +60 -0
- package/dist/ipv4-first.js.map +1 -0
- package/dist/key-class.d.ts +16 -0
- package/dist/key-class.d.ts.map +1 -0
- package/dist/key-class.js +37 -0
- package/dist/key-class.js.map +1 -0
- package/dist/keyless-notice.d.ts +10 -0
- package/dist/keyless-notice.d.ts.map +1 -0
- package/dist/keyless-notice.js +47 -0
- package/dist/keyless-notice.js.map +1 -0
- package/dist/normalized-action.d.ts +4 -0
- package/dist/normalized-action.d.ts.map +1 -1
- package/dist/normalized-action.js +60 -27
- package/dist/normalized-action.js.map +1 -1
- package/dist/own-server-identity.d.ts +20 -0
- package/dist/own-server-identity.d.ts.map +1 -1
- package/dist/own-server-identity.js +130 -5
- package/dist/own-server-identity.js.map +1 -1
- package/dist/owner-bypass.d.ts +9 -0
- package/dist/owner-bypass.d.ts.map +1 -0
- package/dist/owner-bypass.js +79 -0
- package/dist/owner-bypass.js.map +1 -0
- package/dist/redact.d.ts +5 -0
- package/dist/redact.d.ts.map +1 -1
- package/dist/redact.js +61 -9
- package/dist/redact.js.map +1 -1
- package/dist/seatbelt/hook.d.ts +3 -1
- package/dist/seatbelt/hook.d.ts.map +1 -1
- package/dist/seatbelt/hook.js +7 -3
- package/dist/seatbelt/hook.js.map +1 -1
- package/dist/seatbelt/mapper.d.ts.map +1 -1
- package/dist/seatbelt/mapper.js +849 -12
- package/dist/seatbelt/mapper.js.map +1 -1
- package/dist/seatbelt/patch-text.d.ts +49 -0
- package/dist/seatbelt/patch-text.d.ts.map +1 -0
- package/dist/seatbelt/patch-text.js +376 -0
- package/dist/seatbelt/patch-text.js.map +1 -0
- package/dist/seatbelt/tables.d.ts +66 -0
- package/dist/seatbelt/tables.d.ts.map +1 -1
- package/dist/seatbelt/tables.js +467 -3
- package/dist/seatbelt/tables.js.map +1 -1
- package/dist/seatbelt/win-protected.d.ts +52 -0
- package/dist/seatbelt/win-protected.d.ts.map +1 -0
- package/dist/seatbelt/win-protected.js +1279 -0
- package/dist/seatbelt/win-protected.js.map +1 -0
- package/dist/self-protect.d.ts +18 -0
- package/dist/self-protect.d.ts.map +1 -0
- package/dist/self-protect.js +185 -0
- package/dist/self-protect.js.map +1 -0
- package/dist/session-id.d.ts +2 -0
- package/dist/session-id.d.ts.map +1 -0
- package/dist/session-id.js +32 -0
- package/dist/session-id.js.map +1 -0
- package/dist/session-loop-guard.d.ts +40 -0
- package/dist/session-loop-guard.d.ts.map +1 -1
- package/dist/session-loop-guard.js +236 -9
- package/dist/session-loop-guard.js.map +1 -1
- package/dist/session-marker.d.ts +7 -0
- package/dist/session-marker.d.ts.map +1 -0
- package/dist/session-marker.js +42 -0
- package/dist/session-marker.js.map +1 -0
- package/dist/win-private-state.d.ts +117 -0
- package/dist/win-private-state.d.ts.map +1 -0
- package/dist/win-private-state.js +544 -0
- package/dist/win-private-state.js.map +1 -0
- package/package.json +1 -1
- package/server.json +2 -2
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export declare const CONTROL_STATUS_COMMAND = "npx @getmarrow/install control status";
|
|
2
|
+
/** Appended to the pre-action deny text: the fix first, so a host's length limit trims the path before it trims the fix. */
|
|
3
|
+
export declare function unreadableControlSuffix(home?: string): string;
|
|
4
|
+
/** One plain notice for the person: control stays ON, what to run, which file. */
|
|
5
|
+
export declare function unreadableControlNotice(home?: string): string;
|
|
6
|
+
/**
|
|
7
|
+
* True when this session has not been told yet (and is now marked as told), false when it has.
|
|
8
|
+
* The marker is an empty owner-only file named by a hash of the session key, under ~/.marrow/control-notice.
|
|
9
|
+
* When a marker cannot be stored safely (no ~/.marrow, a link or another owner's directory) the answer is
|
|
10
|
+
* true: a repeated notice is better than a silent one, and nothing is ever written through a link.
|
|
11
|
+
*/
|
|
12
|
+
export declare function claimUnreadableControlNotice(sessionKey: string, home?: string): boolean;
|
|
13
|
+
//# sourceMappingURL=control-notice.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"control-notice.d.ts","sourceRoot":"","sources":["../src/control-notice.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,sBAAsB,0CAA0C,CAAC;AAW9E,4HAA4H;AAC5H,wBAAgB,uBAAuB,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAE7D;AAED,kFAAkF;AAClF,wBAAgB,uBAAuB,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAE7D;AAOD;;;;;GAKG;AACH,wBAAgB,4BAA4B,CAAC,UAAU,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,OAAO,CAgBvF"}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.CONTROL_STATUS_COMMAND = void 0;
|
|
4
|
+
exports.unreadableControlSuffix = unreadableControlSuffix;
|
|
5
|
+
exports.unreadableControlNotice = unreadableControlNotice;
|
|
6
|
+
exports.claimUnreadableControlNotice = claimUnreadableControlNotice;
|
|
7
|
+
const node_crypto_1 = require("node:crypto");
|
|
8
|
+
const node_fs_1 = require("node:fs");
|
|
9
|
+
const node_os_1 = require("node:os");
|
|
10
|
+
const node_path_1 = require("node:path");
|
|
11
|
+
const control_state_1 = require("./control-state");
|
|
12
|
+
exports.CONTROL_STATUS_COMMAND = 'npx @getmarrow/install control status';
|
|
13
|
+
const NOTICE_DIRECTORY = 'control-notice';
|
|
14
|
+
const MAX_MARKERS = 200;
|
|
15
|
+
/** The control file's path as plain text (the file's contents are never read into a message). */
|
|
16
|
+
function plainPath(home) {
|
|
17
|
+
let path = '~/.marrow/control.json';
|
|
18
|
+
try {
|
|
19
|
+
path = (0, control_state_1.controlStatePath)(home || (0, node_os_1.homedir)());
|
|
20
|
+
}
|
|
21
|
+
catch { /* no home directory: name the usual place */ }
|
|
22
|
+
return path.replace(/[\u0000-\u001f\u007f]/g, ' ');
|
|
23
|
+
}
|
|
24
|
+
/** Appended to the pre-action deny text: the fix first, so a host's length limit trims the path before it trims the fix. */
|
|
25
|
+
function unreadableControlSuffix(home) {
|
|
26
|
+
return ` Fix: run \`${exports.CONTROL_STATUS_COMMAND}\`. File: ${plainPath(home)}`;
|
|
27
|
+
}
|
|
28
|
+
/** One plain notice for the person: control stays ON, what to run, which file. */
|
|
29
|
+
function unreadableControlNotice(home) {
|
|
30
|
+
return `Marrow cannot read its local control file, so Marrow keeps checking actions as if control were on. Run \`${exports.CONTROL_STATUS_COMMAND}\` to see what is wrong. File: ${plainPath(home)}`;
|
|
31
|
+
}
|
|
32
|
+
function ownDirectory(stat) {
|
|
33
|
+
return stat.isDirectory() && !stat.isSymbolicLink()
|
|
34
|
+
&& stat.uid === (typeof process.getuid === 'function' ? process.getuid() : stat.uid);
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* True when this session has not been told yet (and is now marked as told), false when it has.
|
|
38
|
+
* The marker is an empty owner-only file named by a hash of the session key, under ~/.marrow/control-notice.
|
|
39
|
+
* When a marker cannot be stored safely (no ~/.marrow, a link or another owner's directory) the answer is
|
|
40
|
+
* true: a repeated notice is better than a silent one, and nothing is ever written through a link.
|
|
41
|
+
*/
|
|
42
|
+
function claimUnreadableControlNotice(sessionKey, home) {
|
|
43
|
+
try {
|
|
44
|
+
const marrow = (0, node_path_1.join)(home || (0, node_os_1.homedir)(), control_state_1.CONTROL_STATE_DIRECTORY);
|
|
45
|
+
if (!ownDirectory((0, node_fs_1.lstatSync)(marrow)))
|
|
46
|
+
return true;
|
|
47
|
+
const directory = (0, node_path_1.join)(marrow, NOTICE_DIRECTORY);
|
|
48
|
+
try {
|
|
49
|
+
(0, node_fs_1.mkdirSync)(directory, { mode: 0o700 });
|
|
50
|
+
}
|
|
51
|
+
catch (error) {
|
|
52
|
+
if (error.code !== 'EEXIST')
|
|
53
|
+
throw error;
|
|
54
|
+
}
|
|
55
|
+
if (!ownDirectory((0, node_fs_1.lstatSync)(directory)))
|
|
56
|
+
return true;
|
|
57
|
+
const name = (0, node_crypto_1.createHash)('sha256').update(sessionKey).digest('hex').slice(0, 32);
|
|
58
|
+
(0, node_fs_1.closeSync)((0, node_fs_1.openSync)((0, node_path_1.join)(directory, name), node_fs_1.constants.O_WRONLY | node_fs_1.constants.O_CREAT | node_fs_1.constants.O_EXCL | (node_fs_1.constants.O_NOFOLLOW || 0), 0o600));
|
|
59
|
+
pruneMarkers(directory);
|
|
60
|
+
return true;
|
|
61
|
+
}
|
|
62
|
+
catch (error) {
|
|
63
|
+
return error.code !== 'EEXIST';
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
function pruneMarkers(directory) {
|
|
67
|
+
try {
|
|
68
|
+
const markers = (0, node_fs_1.readdirSync)(directory)
|
|
69
|
+
.map((name) => ({ name, at: (0, node_fs_1.lstatSync)((0, node_path_1.join)(directory, name)).mtimeMs }))
|
|
70
|
+
.sort((a, b) => a.at - b.at);
|
|
71
|
+
for (const marker of markers.slice(0, Math.max(0, markers.length - MAX_MARKERS)))
|
|
72
|
+
(0, node_fs_1.unlinkSync)((0, node_path_1.join)(directory, marker.name));
|
|
73
|
+
}
|
|
74
|
+
catch { /* best effort: a stale marker only means one more notice */ }
|
|
75
|
+
}
|
|
76
|
+
//# sourceMappingURL=control-notice.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"control-notice.js","sourceRoot":"","sources":["../src/control-notice.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* MCP-10: the visible ways to switch Marrow's local control off or remove it through the installer. A command that runs the installer
|
|
3
|
+
* (`npx @getmarrow/install ...`, `marrow-install ...`, `node .../@getmarrow/install/bin/marrow-install.js ...`) with a `control` word other
|
|
4
|
+
* than `enable`/`status`, with `disable` or `uninstall`, or with any argument the shell expands, is a control-off route. The agent's own
|
|
5
|
+
* `--yes` approves nothing: such a command is labelled `security on marrow-control` and held for the account owner.
|
|
6
|
+
*/
|
|
7
|
+
export declare const CONTROL_ROUTE_DENY_TEXT = "Turning Marrow control off needs the account owner. Ask them to run it in their own terminal.";
|
|
8
|
+
/** Whether the shell text runs the installer in a way that can switch Marrow control off, remove it, or cannot be read as one fixed command. */
|
|
9
|
+
export declare function controlRoute(command: string, depth?: number): boolean;
|
|
10
|
+
//# sourceMappingURL=control-routes.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"control-routes.d.ts","sourceRoot":"","sources":["../src/control-routes.ts"],"names":[],"mappings":"AAEA;;;;;GAKG;AACH,eAAO,MAAM,uBAAuB,kGAAkG,CAAC;AAmDvI,gJAAgJ;AAChJ,wBAAgB,YAAY,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,SAAI,GAAG,OAAO,CAWhE"}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.CONTROL_ROUTE_DENY_TEXT = void 0;
|
|
4
|
+
exports.controlRoute = controlRoute;
|
|
5
|
+
const hook_tool_policy_1 = require("./hook-tool-policy");
|
|
6
|
+
/**
|
|
7
|
+
* MCP-10: the visible ways to switch Marrow's local control off or remove it through the installer. A command that runs the installer
|
|
8
|
+
* (`npx @getmarrow/install ...`, `marrow-install ...`, `node .../@getmarrow/install/bin/marrow-install.js ...`) with a `control` word other
|
|
9
|
+
* than `enable`/`status`, with `disable` or `uninstall`, or with any argument the shell expands, is a control-off route. The agent's own
|
|
10
|
+
* `--yes` approves nothing: such a command is labelled `security on marrow-control` and held for the account owner.
|
|
11
|
+
*/
|
|
12
|
+
exports.CONTROL_ROUTE_DENY_TEXT = 'Turning Marrow control off needs the account owner. Ask them to run it in their own terminal.';
|
|
13
|
+
const INSTALLER_PACKAGE = /(?:^|=)@getmarrow\/install(?:@[^\s/]*)?$/i;
|
|
14
|
+
const INSTALLER_BIN = /(?:^|\/)marrow-install(?:\.[cm]?js)?$/i;
|
|
15
|
+
const INSTALLER_PATH = /@getmarrow\/install\//i;
|
|
16
|
+
const INSTALLER_TEXT = /@getmarrow\/install|marrow-install/i;
|
|
17
|
+
const WRAPPER = /^(?:sudo|env|nohup|time|exec|command|builtin|nice|ionice|stdbuf|timeout|xargs|setsid)$/;
|
|
18
|
+
const ASSIGNMENT = /^[A-Za-z_][A-Za-z0-9_]*=/;
|
|
19
|
+
const SHELL_PROGRAM = /^(?:sh|bash|zsh|dash|ksh)$/;
|
|
20
|
+
// Programs that can run an installer package or file: a grep, a cat or a commit message that merely names it is not a route.
|
|
21
|
+
const RUNNER = /^(?:npx|pnpx|bunx|npm|pnpm|yarn|bun|node|nodejs|deno|corepack)$/;
|
|
22
|
+
const SAFE_CONTROL_SUBCOMMAND = new Set(['enable', 'status']);
|
|
23
|
+
function baseName(word) {
|
|
24
|
+
const cut = word.lastIndexOf('/');
|
|
25
|
+
return cut < 0 ? word : word.slice(cut + 1);
|
|
26
|
+
}
|
|
27
|
+
function installerArguments(words) {
|
|
28
|
+
const marker = words.findIndex((word) => INSTALLER_PACKAGE.test(word) || INSTALLER_BIN.test(word) || INSTALLER_PATH.test(word));
|
|
29
|
+
return marker < 0 ? null : words.slice(marker + 1);
|
|
30
|
+
}
|
|
31
|
+
function routeArguments(args, segment) {
|
|
32
|
+
if (segment.expansions.length > 0 || args.some((arg) => /[$`*?[~]/.test(arg)))
|
|
33
|
+
return true;
|
|
34
|
+
if (args.some((arg) => /^-{0,2}(?:disable|uninstall)$/i.test(arg)))
|
|
35
|
+
return true;
|
|
36
|
+
const control = args.findIndex((arg) => arg.toLowerCase() === 'control');
|
|
37
|
+
if (control < 0)
|
|
38
|
+
return false;
|
|
39
|
+
const subcommands = args.slice(control + 1).filter((arg) => !arg.startsWith('-')).map((arg) => arg.toLowerCase());
|
|
40
|
+
return !(subcommands.length > 0 && subcommands.every((arg) => SAFE_CONTROL_SUBCOMMAND.has(arg)));
|
|
41
|
+
}
|
|
42
|
+
function segmentIsRoute(segment, depth) {
|
|
43
|
+
let at = 0;
|
|
44
|
+
while (at < segment.words.length && ASSIGNMENT.test(segment.words[at]))
|
|
45
|
+
at += 1;
|
|
46
|
+
while (at < segment.words.length && WRAPPER.test(baseName(segment.words[at]))) {
|
|
47
|
+
at += 1;
|
|
48
|
+
while (at < segment.words.length && (segment.words[at].startsWith('-') || ASSIGNMENT.test(segment.words[at]) || /^\d+$/.test(segment.words[at])))
|
|
49
|
+
at += 1;
|
|
50
|
+
}
|
|
51
|
+
const words = segment.words.slice(at);
|
|
52
|
+
if (!words.length)
|
|
53
|
+
return false;
|
|
54
|
+
if (SHELL_PROGRAM.test(baseName(words[0]))) {
|
|
55
|
+
const flag = words.findIndex((word, index) => index > 0 && /^-[A-Za-z]*c[A-Za-z]*$/.test(word));
|
|
56
|
+
if (flag > 0 && words[flag + 1] !== undefined)
|
|
57
|
+
return controlRoute(words[flag + 1], depth + 1);
|
|
58
|
+
}
|
|
59
|
+
const program = words[0];
|
|
60
|
+
const runs = RUNNER.test(baseName(program)) || INSTALLER_BIN.test(program) || INSTALLER_PATH.test(program) || /[$`]/.test(program);
|
|
61
|
+
const args = runs ? installerArguments(words) : null;
|
|
62
|
+
return args !== null && routeArguments(args, segment);
|
|
63
|
+
}
|
|
64
|
+
/** Whether the shell text runs the installer in a way that can switch Marrow control off, remove it, or cannot be read as one fixed command. */
|
|
65
|
+
function controlRoute(command, depth = 0) {
|
|
66
|
+
try {
|
|
67
|
+
if (typeof command !== 'string' || !INSTALLER_TEXT.test(command))
|
|
68
|
+
return false;
|
|
69
|
+
if (depth > 3)
|
|
70
|
+
return true;
|
|
71
|
+
const segments = (0, hook_tool_policy_1.parseShellSegments)(command);
|
|
72
|
+
// A command the parser cannot read that names the installer next to a control word is held, never guessed at.
|
|
73
|
+
if (!segments)
|
|
74
|
+
return /control|disable|uninstall|[$`]/i.test(command);
|
|
75
|
+
return segments.some((segment) => segmentIsRoute(segment, depth));
|
|
76
|
+
}
|
|
77
|
+
catch {
|
|
78
|
+
return true;
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
//# sourceMappingURL=control-routes.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"control-routes.js","sourceRoot":"","sources":["../src/control-routes.ts"],"names":[],"mappings":"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"}
|
package/dist/env.d.ts
CHANGED
|
@@ -1,7 +1,21 @@
|
|
|
1
|
+
/** Where resolveMarrowEnv took the agent id from. `fleet_key_match` is the process-env id that also picked a fleet key. */
|
|
2
|
+
export type AgentIdOrigin = 'fleet_key_match' | 'process_env' | 'owner_file' | 'none';
|
|
3
|
+
export type AgentIdVariable = 'MARROW_FLEET_AGENT_ID' | 'MARROW_AGENT_ID';
|
|
4
|
+
/** Names only, never a value: which variable supplied the id and which origin won. */
|
|
5
|
+
export interface AgentIdSource {
|
|
6
|
+
origin: AgentIdOrigin;
|
|
7
|
+
variable: AgentIdVariable | null;
|
|
8
|
+
/** fleet_key_match only: the NAME of the key variable the id selected (MARROW_KEY_<X>). */
|
|
9
|
+
keyVariable?: string;
|
|
10
|
+
/** owner_file only: the owner file that supplied the id, as `~/...`. */
|
|
11
|
+
ownerFile?: string;
|
|
12
|
+
}
|
|
1
13
|
export interface ResolvedMarrowEnv {
|
|
2
14
|
apiKey: string;
|
|
3
15
|
baseUrl: string;
|
|
4
16
|
agentId?: string;
|
|
17
|
+
/** The origin and variable of `agentId`. Explanation only: no decision reads it. */
|
|
18
|
+
agentIdSource: AgentIdSource;
|
|
5
19
|
sessionId?: string;
|
|
6
20
|
source: string | null;
|
|
7
21
|
missing: boolean;
|
|
@@ -13,6 +27,7 @@ export interface ResolvedMarrowEnv {
|
|
|
13
27
|
}
|
|
14
28
|
/** Host (with port) of a non-default base URL, for status output; null for the default. */
|
|
15
29
|
export declare function nonDefaultBaseUrlHost(baseUrl: string): string | null;
|
|
30
|
+
export declare const SAFE_AGENT_ID: RegExp;
|
|
16
31
|
/** Writes a resolver notice to stderr once per process. Notices name a source, never a key or a URL. */
|
|
17
32
|
export declare function emitBaseUrlNotice(resolved: {
|
|
18
33
|
baseUrlNotice?: string;
|
package/dist/env.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
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;
|
|
1
|
+
{"version":3,"file":"env.d.ts","sourceRoot":"","sources":["../src/env.ts"],"names":[],"mappings":"AAkBA,2HAA2H;AAC3H,MAAM,MAAM,aAAa,GAAG,iBAAiB,GAAG,aAAa,GAAG,YAAY,GAAG,MAAM,CAAC;AACtF,MAAM,MAAM,eAAe,GAAG,uBAAuB,GAAG,iBAAiB,CAAC;AAE1E,sFAAsF;AACtF,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,aAAa,CAAC;IACtB,QAAQ,EAAE,eAAe,GAAG,IAAI,CAAC;IACjC,2FAA2F;IAC3F,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,wEAAwE;IACxE,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,iBAAiB;IAChC,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,oFAAoF;IACpF,aAAa,EAAE,aAAa,CAAC;IAC7B,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;AAcD,eAAO,MAAM,aAAa,QAA6B,CAAC;AA+ExD,wGAAwG;AACxG,wBAAgB,iBAAiB,CAAC,QAAQ,EAAE;IAAE,aAAa,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAS5E;AAuKD,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,CAiEzB"}
|
package/dist/env.js
CHANGED
|
@@ -33,6 +33,7 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
33
33
|
};
|
|
34
34
|
})();
|
|
35
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.SAFE_AGENT_ID = void 0;
|
|
36
37
|
exports.nonDefaultBaseUrlHost = nonDefaultBaseUrlHost;
|
|
37
38
|
exports.emitBaseUrlNotice = emitBaseUrlNotice;
|
|
38
39
|
exports.resolveMarrowEnv = resolveMarrowEnv;
|
|
@@ -73,6 +74,8 @@ function normalizeBaseUrl(value) {
|
|
|
73
74
|
}
|
|
74
75
|
// File paths come from the working directory; keep notices on one printable line.
|
|
75
76
|
const MAX_PRINTED_PATH = 200;
|
|
77
|
+
// The check for an agent id that may be printed into agent-facing text (the same pattern as the hook head's own copy): the tool 403 sentence prints an id only if it passes.
|
|
78
|
+
exports.SAFE_AGENT_ID = /^[A-Za-z0-9._:-]{1,128}$/;
|
|
76
79
|
// Paths in notices can be attacker-named: control, line-separator and format
|
|
77
80
|
// (bidi, zero-width) characters become '?', and the length is capped.
|
|
78
81
|
function printablePath(filePath) {
|
|
@@ -289,6 +292,18 @@ function pickKey(env) {
|
|
|
289
292
|
return { key: env.MARROW_KEY, source: 'MARROW_KEY' };
|
|
290
293
|
return { key: '', source: null };
|
|
291
294
|
}
|
|
295
|
+
// The same precedence as `MARROW_FLEET_AGENT_ID || MARROW_AGENT_ID` (an empty value is absent), with the name that won.
|
|
296
|
+
function pickAgentId(values) {
|
|
297
|
+
if (values.MARROW_FLEET_AGENT_ID)
|
|
298
|
+
return { variable: 'MARROW_FLEET_AGENT_ID', value: values.MARROW_FLEET_AGENT_ID };
|
|
299
|
+
if (values.MARROW_AGENT_ID)
|
|
300
|
+
return { variable: 'MARROW_AGENT_ID', value: values.MARROW_AGENT_ID };
|
|
301
|
+
return null;
|
|
302
|
+
}
|
|
303
|
+
function envAgentIdSource(env) {
|
|
304
|
+
const picked = pickAgentId(env);
|
|
305
|
+
return picked ? { origin: 'process_env', variable: picked.variable } : { origin: 'none', variable: null };
|
|
306
|
+
}
|
|
292
307
|
function matchingFleetIdentity(env, agentId) {
|
|
293
308
|
const want = String(agentId || '').trim();
|
|
294
309
|
if (!want)
|
|
@@ -305,6 +320,11 @@ function matchingFleetIdentity(env, agentId) {
|
|
|
305
320
|
}
|
|
306
321
|
return null;
|
|
307
322
|
}
|
|
323
|
+
// Owner files live under the home directory (the trust check requires it): name them as `~/...` the way the docs do.
|
|
324
|
+
function homeRelative(filePath, home) {
|
|
325
|
+
const relative = path.relative(path.resolve(home), path.resolve(filePath));
|
|
326
|
+
return `~/${printablePath(relative.split(path.sep).join('/'))}`;
|
|
327
|
+
}
|
|
308
328
|
function resolveMarrowEnv(options = {}) {
|
|
309
329
|
const env = options.env || process.env;
|
|
310
330
|
const cwd = options.cwd || process.cwd();
|
|
@@ -317,6 +337,7 @@ function resolveMarrowEnv(options = {}) {
|
|
|
317
337
|
apiKey: matchedIdentity.key,
|
|
318
338
|
baseUrl: env.MARROW_BASE_URL || DEFAULT_BASE_URL,
|
|
319
339
|
agentId: matchedIdentity.agentId,
|
|
340
|
+
agentIdSource: { origin: 'fleet_key_match', variable: pickAgentId(env)?.variable ?? null, keyVariable: matchedIdentity.source },
|
|
320
341
|
sessionId: env.MARROW_SESSION_ID,
|
|
321
342
|
source: matchedIdentity.source,
|
|
322
343
|
missing: false,
|
|
@@ -328,6 +349,7 @@ function resolveMarrowEnv(options = {}) {
|
|
|
328
349
|
apiKey: direct.key,
|
|
329
350
|
baseUrl: env.MARROW_BASE_URL || DEFAULT_BASE_URL,
|
|
330
351
|
agentId: requestedAgentId,
|
|
352
|
+
agentIdSource: envAgentIdSource(env),
|
|
331
353
|
sessionId: env.MARROW_SESSION_ID,
|
|
332
354
|
source: direct.source,
|
|
333
355
|
missing: false,
|
|
@@ -351,7 +373,7 @@ function resolveMarrowEnv(options = {}) {
|
|
|
351
373
|
continue;
|
|
352
374
|
const found = pickKey(read.values);
|
|
353
375
|
if (found.key)
|
|
354
|
-
return fromFile(filePath, found, read.values, env);
|
|
376
|
+
return fromFile(filePath, found, read.values, env, home);
|
|
355
377
|
}
|
|
356
378
|
if (options.trustedOnly === true)
|
|
357
379
|
return missingKey(env, ignored, ownerFileRefused);
|
|
@@ -437,13 +459,17 @@ function ownerFileNotice(filePath, home) {
|
|
|
437
459
|
const homeText = homeDir === null ? '' : ' and chmod go-w on your home folder';
|
|
438
460
|
return `${lead} Fix: run chmod 600 on the file named above and chmod 700 on its folder${homeText}${tail}.`;
|
|
439
461
|
}
|
|
440
|
-
function fromFile(filePath, found, parsed, env) {
|
|
462
|
+
function fromFile(filePath, found, parsed, env, home) {
|
|
441
463
|
const target = ownerKeyBaseUrl(filePath, parsed, env);
|
|
464
|
+
const fileId = pickAgentId(parsed);
|
|
442
465
|
return {
|
|
443
466
|
apiKey: found.key,
|
|
444
467
|
baseUrl: target.baseUrl,
|
|
445
468
|
...(target.notice ? { baseUrlNotice: target.notice } : {}),
|
|
446
469
|
agentId: parsed.MARROW_FLEET_AGENT_ID || parsed.MARROW_AGENT_ID || env.MARROW_FLEET_AGENT_ID || env.MARROW_AGENT_ID,
|
|
470
|
+
agentIdSource: fileId
|
|
471
|
+
? { origin: 'owner_file', variable: fileId.variable, ownerFile: homeRelative(filePath, home) }
|
|
472
|
+
: envAgentIdSource(env),
|
|
447
473
|
sessionId: parsed.MARROW_SESSION_ID || env.MARROW_SESSION_ID,
|
|
448
474
|
source: `${filePath}:${found.source}`,
|
|
449
475
|
missing: false,
|
|
@@ -455,6 +481,7 @@ function missingKey(env, ignored, ownerFileRefused) {
|
|
|
455
481
|
apiKey: '',
|
|
456
482
|
baseUrl: env.MARROW_BASE_URL || DEFAULT_BASE_URL,
|
|
457
483
|
agentId: env.MARROW_FLEET_AGENT_ID || env.MARROW_AGENT_ID,
|
|
484
|
+
agentIdSource: envAgentIdSource(env),
|
|
458
485
|
sessionId: env.MARROW_SESSION_ID,
|
|
459
486
|
source: null,
|
|
460
487
|
missing: true,
|
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;AAiE5G,eAAO,MAAM,oBAAoB,QAAgC,CAAC;AAqIlE,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,CAoK3D;AAaD;;;;GAIG;AACH,wBAAgB,2BAA2B,CAAC,QAAQ,GAAE,MAAsB,GAAG,aAAa,CA2B3F"}
|
package/dist/hook-context.js
CHANGED
|
@@ -25,6 +25,10 @@ const lifecycle_spool_1 = require("./lifecycle-spool");
|
|
|
25
25
|
const guidance_cache_1 = require("./guidance-cache");
|
|
26
26
|
const hook_contract_1 = require("./hook-contract");
|
|
27
27
|
const control_state_1 = require("./control-state");
|
|
28
|
+
const owner_bypass_1 = require("./owner-bypass");
|
|
29
|
+
const keyless_notice_1 = require("./keyless-notice");
|
|
30
|
+
const session_id_1 = require("./session-id");
|
|
31
|
+
const control_notice_1 = require("./control-notice");
|
|
28
32
|
const session_loop_guard_1 = require("./session-loop-guard");
|
|
29
33
|
const host_approval_1 = require("./host-approval");
|
|
30
34
|
const host_session_1 = require("./host-session");
|
|
@@ -81,8 +85,8 @@ function promptHoldContext(identity, event) {
|
|
|
81
85
|
catch {
|
|
82
86
|
return null;
|
|
83
87
|
}
|
|
84
|
-
const sessionId = identity.environment.sessionId || asString(event.session_id) || asString(event.conversation_id)
|
|
85
|
-
|| (0, hook_contract_1.stableSessionWorkflowId)(undefined, [identity.harness, process.cwd()]);
|
|
88
|
+
const sessionId = (0, session_id_1.marrowSessionId)(identity.environment.sessionId || asString(event.session_id) || asString(event.conversation_id)
|
|
89
|
+
|| (0, hook_contract_1.stableSessionWorkflowId)(undefined, [identity.harness, process.cwd()]), identity.agent_id);
|
|
86
90
|
return {
|
|
87
91
|
apiKey,
|
|
88
92
|
baseUrl,
|
|
@@ -93,13 +97,22 @@ function promptHoldContext(identity, event) {
|
|
|
93
97
|
hostSessionId: (0, host_approval_1.hostSessionIdFor)([event.session_id, event.conversation_id], sessionId),
|
|
94
98
|
};
|
|
95
99
|
}
|
|
100
|
+
function joinNotice(notice, existing) {
|
|
101
|
+
return [notice, typeof existing === 'string' ? existing : ''].filter(Boolean).join('\n');
|
|
102
|
+
}
|
|
103
|
+
/** The control-file notice for this session's first prompt after the file became unreadable, else null. */
|
|
104
|
+
function unreadableControlNoticeOnce(harness, event) {
|
|
105
|
+
const session = (0, hook_contract_1.resolveNativeHookIdentity)(process.argv[2]).environment.sessionId || asString(event.session_id) || asString(event.conversation_id)
|
|
106
|
+
|| (0, hook_contract_1.stableSessionWorkflowId)(undefined, [harness, process.cwd()]);
|
|
107
|
+
return (0, control_notice_1.claimUnreadableControlNotice)(`${harness}:${session}`) ? (0, control_notice_1.unreadableControlNotice)() : null;
|
|
108
|
+
}
|
|
96
109
|
/**
|
|
97
110
|
* Cursor beforeSubmitPrompt: never adds context (Cursor cannot), only records
|
|
98
111
|
* that the prompt hook runs and handles a typed "marrow approve CODE" in a
|
|
99
112
|
* local interactive session. A failed typed answer blocks that one message so
|
|
100
113
|
* the user sees why; everything else continues unchanged.
|
|
101
114
|
*/
|
|
102
|
-
async function runCursorPromptHook(event) {
|
|
115
|
+
async function runCursorPromptHook(event, controlNotice = null) {
|
|
103
116
|
const identity = (0, hook_contract_1.resolveNativeHookIdentity)(process.argv[2]);
|
|
104
117
|
const context = promptHoldContext(identity, event);
|
|
105
118
|
let output = { continue: true };
|
|
@@ -113,6 +126,8 @@ async function runCursorPromptHook(event) {
|
|
|
113
126
|
output = { continue: true, user_message: notice };
|
|
114
127
|
}
|
|
115
128
|
}
|
|
129
|
+
if (controlNotice)
|
|
130
|
+
output = { ...output, user_message: joinNotice(controlNotice, output.user_message) };
|
|
116
131
|
process.stdout.write(JSON.stringify(output));
|
|
117
132
|
}
|
|
118
133
|
/**
|
|
@@ -120,7 +135,7 @@ async function runCursorPromptHook(event) {
|
|
|
120
135
|
* "marrow approve CODE" in a local interactive session. The confirmation goes
|
|
121
136
|
* to the user (systemMessage); the agent only learns that it may retry.
|
|
122
137
|
*/
|
|
123
|
-
async function runGeminiPromptHook(event) {
|
|
138
|
+
async function runGeminiPromptHook(event, controlNotice = null) {
|
|
124
139
|
const identity = (0, hook_contract_1.resolveNativeHookIdentity)(process.argv[2]);
|
|
125
140
|
const context = promptHoldContext(identity, event);
|
|
126
141
|
let output = {};
|
|
@@ -138,6 +153,8 @@ async function runGeminiPromptHook(event) {
|
|
|
138
153
|
}
|
|
139
154
|
await (0, host_approval_1.flushHoldOutbox)(context, 1, 1_500).catch(() => undefined);
|
|
140
155
|
}
|
|
156
|
+
if (controlNotice)
|
|
157
|
+
output = { ...output, systemMessage: joinNotice(controlNotice, output.systemMessage) };
|
|
141
158
|
process.stdout.write(JSON.stringify(output));
|
|
142
159
|
}
|
|
143
160
|
/** A typed reply's confirmation (user only) and retry note (agent), added to this hook's output. */
|
|
@@ -670,10 +687,14 @@ function compactAgentContext(context) {
|
|
|
670
687
|
async function runContextHookCommand() {
|
|
671
688
|
// Kill switch — same flag as PostToolUse
|
|
672
689
|
if (process.env.MARROW_AUTO_HOOK === 'false') {
|
|
690
|
+
await (0, owner_bypass_1.recordSessionBypass)('hooks_switched_off', (0, hook_contract_1.resolveNativeHookIdentity)(process.argv[2]));
|
|
673
691
|
emitNoContext();
|
|
674
692
|
process.exit(0);
|
|
675
693
|
return;
|
|
676
694
|
}
|
|
695
|
+
// Only a valid file that says "disabled" switches this hook off. A file that cannot be read or is invalid
|
|
696
|
+
// never does: the hook runs as if control were on and tells the person once per session.
|
|
697
|
+
let controlUnreadable = false;
|
|
677
698
|
try {
|
|
678
699
|
if (!(0, control_state_1.readLocalControlState)().enabled) {
|
|
679
700
|
emitNoContext();
|
|
@@ -682,9 +703,7 @@ async function runContextHookCommand() {
|
|
|
682
703
|
}
|
|
683
704
|
}
|
|
684
705
|
catch {
|
|
685
|
-
|
|
686
|
-
process.exit(0);
|
|
687
|
-
return;
|
|
706
|
+
controlUnreadable = true;
|
|
688
707
|
}
|
|
689
708
|
try {
|
|
690
709
|
const raw = (await readStdin()).trim();
|
|
@@ -705,17 +724,20 @@ async function runContextHookCommand() {
|
|
|
705
724
|
return;
|
|
706
725
|
}
|
|
707
726
|
const promptHarness = (0, hook_contract_1.resolveNativeHookIdentity)(process.argv[2]).harness;
|
|
727
|
+
const controlNotice = controlUnreadable ? unreadableControlNoticeOnce(promptHarness, event) : null;
|
|
708
728
|
if (promptHarness === 'cursor') {
|
|
709
|
-
await runCursorPromptHook(event);
|
|
729
|
+
await runCursorPromptHook(event, controlNotice);
|
|
710
730
|
process.exit(0);
|
|
711
731
|
return;
|
|
712
732
|
}
|
|
713
733
|
if (promptHarness === 'gemini') {
|
|
714
|
-
await runGeminiPromptHook(event);
|
|
734
|
+
await runGeminiPromptHook(event, controlNotice);
|
|
715
735
|
process.exit(0);
|
|
716
736
|
return;
|
|
717
737
|
}
|
|
718
738
|
await settleHeldCallsAtPrompt(event).catch(() => undefined);
|
|
739
|
+
if (controlNotice)
|
|
740
|
+
heldReplyUserText = joinNotice(controlNotice, heldReplyUserText);
|
|
719
741
|
const prompt = asString(event.prompt);
|
|
720
742
|
if (!prompt) {
|
|
721
743
|
debug('[marrow-context-hook] no prompt field');
|
|
@@ -725,8 +747,8 @@ async function runContextHookCommand() {
|
|
|
725
747
|
}
|
|
726
748
|
const identity = (0, hook_contract_1.resolveNativeHookIdentity)(process.argv[2]);
|
|
727
749
|
const resolvedEnv = identity.environment;
|
|
728
|
-
const sessionId = resolvedEnv.sessionId || asString(event.session_id)
|
|
729
|
-
|| (0, hook_contract_1.stableSessionWorkflowId)(undefined, [identity.harness, process.cwd()]);
|
|
750
|
+
const sessionId = (0, session_id_1.marrowSessionId)(resolvedEnv.sessionId || asString(event.session_id)
|
|
751
|
+
|| (0, hook_contract_1.stableSessionWorkflowId)(undefined, [identity.harness, process.cwd()]), identity.agent_id);
|
|
730
752
|
const agentId = identity.agent_id;
|
|
731
753
|
try {
|
|
732
754
|
(0, session_loop_guard_1.advanceSessionInstructionEpoch)({ sessionId, agentId, harness: identity.harness });
|
|
@@ -740,6 +762,7 @@ async function runContextHookCommand() {
|
|
|
740
762
|
const apiKey = resolvedEnv.apiKey || '';
|
|
741
763
|
if (!apiKey) {
|
|
742
764
|
debug(`[marrow-context-hook] missing MARROW_API_KEY. ${resolvedEnv.exactFix}`);
|
|
765
|
+
(0, keyless_notice_1.armKeylessNotice)(identity.harness, resolvedEnv.sessionId || asString(event.session_id));
|
|
743
766
|
emitNoContext();
|
|
744
767
|
process.exit(0);
|
|
745
768
|
return;
|