@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.
Files changed (109) hide show
  1. package/README.md +26 -1
  2. package/dist/cli.js +44 -3
  3. package/dist/cli.js.map +1 -1
  4. package/dist/control-notice.d.ts +13 -0
  5. package/dist/control-notice.d.ts.map +1 -0
  6. package/dist/control-notice.js +76 -0
  7. package/dist/control-notice.js.map +1 -0
  8. package/dist/control-routes.d.ts +10 -0
  9. package/dist/control-routes.d.ts.map +1 -0
  10. package/dist/control-routes.js +81 -0
  11. package/dist/control-routes.js.map +1 -0
  12. package/dist/env.d.ts +15 -0
  13. package/dist/env.d.ts.map +1 -1
  14. package/dist/env.js +29 -2
  15. package/dist/env.js.map +1 -1
  16. package/dist/hook-context.d.ts.map +1 -1
  17. package/dist/hook-context.js +34 -11
  18. package/dist/hook-context.js.map +1 -1
  19. package/dist/hook-contract.d.ts +2 -2
  20. package/dist/hook-contract.js +1 -1
  21. package/dist/hook-pre-action.d.ts +10 -2
  22. package/dist/hook-pre-action.d.ts.map +1 -1
  23. package/dist/hook-pre-action.js +105 -33
  24. package/dist/hook-pre-action.js.map +1 -1
  25. package/dist/hook-session.d.ts.map +1 -1
  26. package/dist/hook-session.js +12 -7
  27. package/dist/hook-session.js.map +1 -1
  28. package/dist/hook-tool-policy.d.ts +1 -1
  29. package/dist/hook-tool-policy.d.ts.map +1 -1
  30. package/dist/hook.d.ts.map +1 -1
  31. package/dist/hook.js +19 -14
  32. package/dist/hook.js.map +1 -1
  33. package/dist/host-approval.d.ts +9 -0
  34. package/dist/host-approval.d.ts.map +1 -1
  35. package/dist/host-approval.js +22 -0
  36. package/dist/host-approval.js.map +1 -1
  37. package/dist/identity-explain.d.ts +35 -0
  38. package/dist/identity-explain.d.ts.map +1 -0
  39. package/dist/identity-explain.js +60 -0
  40. package/dist/identity-explain.js.map +1 -0
  41. package/dist/ipv4-first.d.ts +7 -0
  42. package/dist/ipv4-first.d.ts.map +1 -0
  43. package/dist/ipv4-first.js +60 -0
  44. package/dist/ipv4-first.js.map +1 -0
  45. package/dist/key-class.d.ts +16 -0
  46. package/dist/key-class.d.ts.map +1 -0
  47. package/dist/key-class.js +37 -0
  48. package/dist/key-class.js.map +1 -0
  49. package/dist/keyless-notice.d.ts +10 -0
  50. package/dist/keyless-notice.d.ts.map +1 -0
  51. package/dist/keyless-notice.js +47 -0
  52. package/dist/keyless-notice.js.map +1 -0
  53. package/dist/normalized-action.d.ts +4 -0
  54. package/dist/normalized-action.d.ts.map +1 -1
  55. package/dist/normalized-action.js +60 -27
  56. package/dist/normalized-action.js.map +1 -1
  57. package/dist/own-server-identity.d.ts +20 -0
  58. package/dist/own-server-identity.d.ts.map +1 -1
  59. package/dist/own-server-identity.js +130 -5
  60. package/dist/own-server-identity.js.map +1 -1
  61. package/dist/owner-bypass.d.ts +9 -0
  62. package/dist/owner-bypass.d.ts.map +1 -0
  63. package/dist/owner-bypass.js +79 -0
  64. package/dist/owner-bypass.js.map +1 -0
  65. package/dist/redact.d.ts +5 -0
  66. package/dist/redact.d.ts.map +1 -1
  67. package/dist/redact.js +61 -9
  68. package/dist/redact.js.map +1 -1
  69. package/dist/seatbelt/hook.d.ts +3 -1
  70. package/dist/seatbelt/hook.d.ts.map +1 -1
  71. package/dist/seatbelt/hook.js +7 -3
  72. package/dist/seatbelt/hook.js.map +1 -1
  73. package/dist/seatbelt/mapper.d.ts.map +1 -1
  74. package/dist/seatbelt/mapper.js +849 -12
  75. package/dist/seatbelt/mapper.js.map +1 -1
  76. package/dist/seatbelt/patch-text.d.ts +49 -0
  77. package/dist/seatbelt/patch-text.d.ts.map +1 -0
  78. package/dist/seatbelt/patch-text.js +376 -0
  79. package/dist/seatbelt/patch-text.js.map +1 -0
  80. package/dist/seatbelt/tables.d.ts +66 -0
  81. package/dist/seatbelt/tables.d.ts.map +1 -1
  82. package/dist/seatbelt/tables.js +467 -3
  83. package/dist/seatbelt/tables.js.map +1 -1
  84. package/dist/seatbelt/win-protected.d.ts +52 -0
  85. package/dist/seatbelt/win-protected.d.ts.map +1 -0
  86. package/dist/seatbelt/win-protected.js +1279 -0
  87. package/dist/seatbelt/win-protected.js.map +1 -0
  88. package/dist/self-protect.d.ts +18 -0
  89. package/dist/self-protect.d.ts.map +1 -0
  90. package/dist/self-protect.js +185 -0
  91. package/dist/self-protect.js.map +1 -0
  92. package/dist/session-id.d.ts +2 -0
  93. package/dist/session-id.d.ts.map +1 -0
  94. package/dist/session-id.js +32 -0
  95. package/dist/session-id.js.map +1 -0
  96. package/dist/session-loop-guard.d.ts +40 -0
  97. package/dist/session-loop-guard.d.ts.map +1 -1
  98. package/dist/session-loop-guard.js +236 -9
  99. package/dist/session-loop-guard.js.map +1 -1
  100. package/dist/session-marker.d.ts +7 -0
  101. package/dist/session-marker.d.ts.map +1 -0
  102. package/dist/session-marker.js +42 -0
  103. package/dist/session-marker.js.map +1 -0
  104. package/dist/win-private-state.d.ts +117 -0
  105. package/dist/win-private-state.d.ts.map +1 -0
  106. package/dist/win-private-state.js +544 -0
  107. package/dist/win-private-state.js.map +1 -0
  108. package/package.json +1 -1
  109. 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":";;;AAkBA,0DAEC;AAGD,0DAEC;AAaD,oEAgBC;AAtDD,6CAAyC;AACzC,qCAAoH;AACpH,qCAAkC;AAClC,yCAAiC;AACjC,mDAA4E;AAE/D,QAAA,sBAAsB,GAAG,uCAAuC,CAAC;AAC9E,MAAM,gBAAgB,GAAG,gBAAgB,CAAC;AAC1C,MAAM,WAAW,GAAG,GAAG,CAAC;AAExB,iGAAiG;AACjG,SAAS,SAAS,CAAC,IAAa;IAC9B,IAAI,IAAI,GAAG,wBAAwB,CAAC;IACpC,IAAI,CAAC;QAAC,IAAI,GAAG,IAAA,gCAAgB,EAAC,IAAI,IAAI,IAAA,iBAAO,GAAE,CAAC,CAAC;IAAC,CAAC;IAAC,MAAM,CAAC,CAAC,6CAA6C,CAAC,CAAC;IAC3G,OAAO,IAAI,CAAC,OAAO,CAAC,wBAAwB,EAAE,GAAG,CAAC,CAAC;AACrD,CAAC;AAED,4HAA4H;AAC5H,SAAgB,uBAAuB,CAAC,IAAa;IACnD,OAAO,eAAe,8BAAsB,aAAa,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC;AAC7E,CAAC;AAED,kFAAkF;AAClF,SAAgB,uBAAuB,CAAC,IAAa;IACnD,OAAO,4GAA4G,8BAAsB,kCAAkC,SAAS,CAAC,IAAI,CAAC,EAAE,CAAC;AAC/L,CAAC;AAED,SAAS,YAAY,CAAC,IAAW;IAC/B,OAAO,IAAI,CAAC,WAAW,EAAE,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE;WAC9C,IAAI,CAAC,GAAG,KAAK,CAAC,OAAO,OAAO,CAAC,MAAM,KAAK,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACzF,CAAC;AAED;;;;;GAKG;AACH,SAAgB,4BAA4B,CAAC,UAAkB,EAAE,IAAa;IAC5E,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAA,gBAAI,EAAC,IAAI,IAAI,IAAA,iBAAO,GAAE,EAAE,uCAAuB,CAAC,CAAC;QAChE,IAAI,CAAC,YAAY,CAAC,IAAA,mBAAS,EAAC,MAAM,CAAC,CAAC;YAAE,OAAO,IAAI,CAAC;QAClD,MAAM,SAAS,GAAG,IAAA,gBAAI,EAAC,MAAM,EAAE,gBAAgB,CAAC,CAAC;QACjD,IAAI,CAAC;YAAC,IAAA,mBAAS,EAAC,SAAS,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAC;QAAC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YAC5D,IAAK,KAA+B,CAAC,IAAI,KAAK,QAAQ;gBAAE,MAAM,KAAK,CAAC;QACtE,CAAC;QACD,IAAI,CAAC,YAAY,CAAC,IAAA,mBAAS,EAAC,SAAS,CAAC,CAAC;YAAE,OAAO,IAAI,CAAC;QACrD,MAAM,IAAI,GAAG,IAAA,wBAAU,EAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAChF,IAAA,mBAAS,EAAC,IAAA,kBAAQ,EAAC,IAAA,gBAAI,EAAC,SAAS,EAAE,IAAI,CAAC,EAAE,mBAAS,CAAC,QAAQ,GAAG,mBAAS,CAAC,OAAO,GAAG,mBAAS,CAAC,MAAM,GAAG,CAAC,mBAAS,CAAC,UAAU,IAAI,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC;QAC3I,YAAY,CAAC,SAAS,CAAC,CAAC;QACxB,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAQ,KAA+B,CAAC,IAAI,KAAK,QAAQ,CAAC;IAC5D,CAAC;AACH,CAAC;AAED,SAAS,YAAY,CAAC,SAAiB;IACrC,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,IAAA,qBAAW,EAAC,SAAS,CAAC;aACnC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,IAAA,mBAAS,EAAC,IAAA,gBAAI,EAAC,SAAS,EAAE,IAAI,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;aACvE,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC;QAC/B,KAAK,MAAM,MAAM,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,MAAM,GAAG,WAAW,CAAC,CAAC;YAAE,IAAA,oBAAU,EAAC,IAAA,gBAAI,EAAC,SAAS,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;IAC7H,CAAC;IAAC,MAAM,CAAC,CAAC,4DAA4D,CAAC,CAAC;AAC1E,CAAC"}
@@ -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;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"}
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;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"}
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"}
@@ -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
- emitNoContext();
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;