@getmarrow/mcp 3.9.101 → 3.9.103

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 (127) hide show
  1. package/README.md +63 -29
  2. package/dist/cli.js +64 -1005
  3. package/dist/cli.js.map +1 -1
  4. package/dist/codex-plugin-pins.d.ts +19 -0
  5. package/dist/codex-plugin-pins.d.ts.map +1 -0
  6. package/dist/codex-plugin-pins.js +43 -0
  7. package/dist/codex-plugin-pins.js.map +1 -0
  8. package/dist/codex-plugins.d.ts +34 -0
  9. package/dist/codex-plugins.d.ts.map +1 -0
  10. package/dist/codex-plugins.js +240 -0
  11. package/dist/codex-plugins.js.map +1 -0
  12. package/dist/env.d.ts +2 -0
  13. package/dist/env.d.ts.map +1 -1
  14. package/dist/env.js +229 -39
  15. package/dist/env.js.map +1 -1
  16. package/dist/hook-contract.d.ts +41 -3
  17. package/dist/hook-contract.d.ts.map +1 -1
  18. package/dist/hook-contract.js +126 -18
  19. package/dist/hook-contract.js.map +1 -1
  20. package/dist/hook-pre-action.d.ts +48 -2
  21. package/dist/hook-pre-action.d.ts.map +1 -1
  22. package/dist/hook-pre-action.js +199 -23
  23. package/dist/hook-pre-action.js.map +1 -1
  24. package/dist/hook-tool-policy.d.ts +3 -3
  25. package/dist/hook-tool-policy.d.ts.map +1 -1
  26. package/dist/hook-tool-policy.js +6 -22
  27. package/dist/hook-tool-policy.js.map +1 -1
  28. package/dist/hook.d.ts +2 -2
  29. package/dist/hook.d.ts.map +1 -1
  30. package/dist/hook.js +13 -6
  31. package/dist/hook.js.map +1 -1
  32. package/dist/host-approval-state.d.ts +9 -0
  33. package/dist/host-approval-state.d.ts.map +1 -1
  34. package/dist/host-approval-state.js +4 -0
  35. package/dist/host-approval-state.js.map +1 -1
  36. package/dist/host-approval.d.ts +6 -0
  37. package/dist/host-approval.d.ts.map +1 -1
  38. package/dist/host-approval.js +3 -1
  39. package/dist/host-approval.js.map +1 -1
  40. package/dist/host-session.d.ts +11 -0
  41. package/dist/host-session.d.ts.map +1 -1
  42. package/dist/host-session.js +49 -0
  43. package/dist/host-session.js.map +1 -1
  44. package/dist/index.d.ts.map +1 -1
  45. package/dist/index.js +27 -19
  46. package/dist/index.js.map +1 -1
  47. package/dist/normalized-action.d.ts +29 -6
  48. package/dist/normalized-action.d.ts.map +1 -1
  49. package/dist/normalized-action.js +497 -103
  50. package/dist/normalized-action.js.map +1 -1
  51. package/dist/own-server-identity.d.ts +123 -0
  52. package/dist/own-server-identity.d.ts.map +1 -0
  53. package/dist/own-server-identity.js +1052 -0
  54. package/dist/own-server-identity.js.map +1 -0
  55. package/dist/own-tool.d.ts +87 -0
  56. package/dist/own-tool.d.ts.map +1 -0
  57. package/dist/own-tool.js +169 -0
  58. package/dist/own-tool.js.map +1 -0
  59. package/dist/redact.d.ts +23 -0
  60. package/dist/redact.d.ts.map +1 -1
  61. package/dist/redact.js +181 -8
  62. package/dist/redact.js.map +1 -1
  63. package/dist/seatbelt/classifier-pin.d.ts +15 -0
  64. package/dist/seatbelt/classifier-pin.d.ts.map +1 -0
  65. package/dist/seatbelt/classifier-pin.js +26 -0
  66. package/dist/seatbelt/classifier-pin.js.map +1 -0
  67. package/dist/seatbelt/guards.d.ts +10 -0
  68. package/dist/seatbelt/guards.d.ts.map +1 -0
  69. package/dist/seatbelt/guards.js +509 -0
  70. package/dist/seatbelt/guards.js.map +1 -0
  71. package/dist/seatbelt/hook.d.ts +72 -0
  72. package/dist/seatbelt/hook.d.ts.map +1 -0
  73. package/dist/seatbelt/hook.js +362 -0
  74. package/dist/seatbelt/hook.js.map +1 -0
  75. package/dist/seatbelt/longopts.d.ts +68 -0
  76. package/dist/seatbelt/longopts.d.ts.map +1 -0
  77. package/dist/seatbelt/longopts.js +377 -0
  78. package/dist/seatbelt/longopts.js.map +1 -0
  79. package/dist/seatbelt/mapper.d.ts +83 -0
  80. package/dist/seatbelt/mapper.d.ts.map +1 -0
  81. package/dist/seatbelt/mapper.js +10248 -0
  82. package/dist/seatbelt/mapper.js.map +1 -0
  83. package/dist/seatbelt/record.d.ts +94 -0
  84. package/dist/seatbelt/record.d.ts.map +1 -0
  85. package/dist/seatbelt/record.js +776 -0
  86. package/dist/seatbelt/record.js.map +1 -0
  87. package/dist/seatbelt/tables.d.ts +82 -0
  88. package/dist/seatbelt/tables.d.ts.map +1 -0
  89. package/dist/seatbelt/tables.js +359 -0
  90. package/dist/seatbelt/tables.js.map +1 -0
  91. package/dist/seatbelt-deploy.d.ts +100 -0
  92. package/dist/seatbelt-deploy.d.ts.map +1 -0
  93. package/dist/seatbelt-deploy.js +393 -0
  94. package/dist/seatbelt-deploy.js.map +1 -0
  95. package/dist/seatbelt-fs.d.ts +30 -0
  96. package/dist/seatbelt-fs.d.ts.map +1 -0
  97. package/dist/seatbelt-fs.js +94 -0
  98. package/dist/seatbelt-fs.js.map +1 -0
  99. package/dist/seatbelt-git.d.ts +212 -0
  100. package/dist/seatbelt-git.d.ts.map +1 -0
  101. package/dist/seatbelt-git.js +844 -0
  102. package/dist/seatbelt-git.js.map +1 -0
  103. package/dist/seatbelt-mode.d.ts +77 -0
  104. package/dist/seatbelt-mode.d.ts.map +1 -0
  105. package/dist/seatbelt-mode.js +496 -0
  106. package/dist/seatbelt-mode.js.map +1 -0
  107. package/dist/seatbelt-path.d.ts +123 -0
  108. package/dist/seatbelt-path.d.ts.map +1 -0
  109. package/dist/seatbelt-path.js +482 -0
  110. package/dist/seatbelt-path.js.map +1 -0
  111. package/dist/seatbelt-scripts.d.ts +109 -0
  112. package/dist/seatbelt-scripts.d.ts.map +1 -0
  113. package/dist/seatbelt-scripts.js +1060 -0
  114. package/dist/seatbelt-scripts.js.map +1 -0
  115. package/dist/tool-catalog.d.ts +6852 -0
  116. package/dist/tool-catalog.d.ts.map +1 -0
  117. package/dist/tool-catalog.js +999 -0
  118. package/dist/tool-catalog.js.map +1 -0
  119. package/dist/types.d.ts +2 -1
  120. package/dist/types.d.ts.map +1 -1
  121. package/package.json +2 -1
  122. package/server.json +10 -3
  123. package/vendor/classifier/MANIFEST.json +25 -0
  124. package/vendor/classifier/classifier.js +1356 -0
  125. package/vendor/classifier/policy-baseline.js +187 -0
  126. package/vendor/classifier/redact.js +59 -0
  127. package/vendor/classifier/shell-parse.js +455 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"own-server-identity.js","sourceRoot":"","sources":["../src/own-server-identity.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,87 @@
1
+ /**
2
+ * Marrow's own MCP tools skip the pre-action gate. A tool is Marrow's own only
3
+ * when its server is exactly `marrow` and its tool is exactly a name this
4
+ * package registers (any profile). Case, padding, NUL, suffixes and look-alike
5
+ * servers are never own, so they go down the normal gate path.
6
+ *
7
+ * Host forms (the exact names each host emits for the `marrow` server):
8
+ * mcp__marrow__<tool> Claude Code, Codex; the form the Windsurf,
9
+ * Cursor, Grok and Gemini adapters normalise to
10
+ * functions.mcp__marrow__<tool> Codex function namespace
11
+ * MCP:<tool> Cursor preToolUse (no server part; see below)
12
+ * MCP:marrow:<tool> Cursor preToolUse look-alike (see below)
13
+ * use_mcp_tool / use_tool (+ mcp, mcp_tool) with serverName and toolName
14
+ * Cline and Grok nested calls
15
+ *
16
+ * Gemini's label `mcp_<server>_<tool>` is ambiguous (server `marrow_marrow` +
17
+ * tool `commit` gives the same label as server `marrow` + tool
18
+ * `marrow_commit`), so it is never own by itself: the Gemini adapter decides
19
+ * from the payload's separate `mcp_context.server_name` / `tool_name`
20
+ * (isOfficialMarrowGeminiCall) and normalises an own call to
21
+ * `mcp__marrow__<tool>`.
22
+ *
23
+ * These functions decide on the label alone. The Codex and Cursor hooks do not
24
+ * trust the label: Codex builds it from the user's server name (servers
25
+ * `mcp__marrow`, `marrow-` and `marrow_` also give `mcp__marrow__<tool>`) and
26
+ * Cursor's preToolUse `MCP:<tool>` has no server. Those hooks skip only after
27
+ * own-server-identity.ts proves, from the host's MCP config, that exactly one
28
+ * server can produce the label and it starts the official package
29
+ * (isOfficialMarrowMcpEventOnHost); every other host keeps this label rule.
30
+ */
31
+ export declare const MARROW_OWN_SERVER_NAME = "marrow";
32
+ export declare const MARROW_OWN_TOOL_NAMES: ReadonlySet<string>;
33
+ type OwnToolEvent = {
34
+ tool_name?: unknown;
35
+ tool_input?: unknown;
36
+ };
37
+ export declare function isMarrowOwnTool(server: unknown, tool: unknown): boolean;
38
+ export declare function isOfficialMarrowMcpTool(value: unknown): boolean;
39
+ /**
40
+ * Gemini's separate server and tool (`mcp_context.server_name`/`tool_name`,
41
+ * the mcpServers key and the server's own tool name), when the host sent both
42
+ * as strings. Only these two fields: the context's command, args, cwd and url
43
+ * are never kept.
44
+ */
45
+ export declare function geminiMcpTarget(value: unknown): {
46
+ server_name: string;
47
+ tool_name: string;
48
+ } | null;
49
+ /**
50
+ * A Gemini call is Marrow's own only when its mcp_context proves server
51
+ * `marrow` and an exact registered tool, and the host's label is that call's
52
+ * label (`mcp_marrow_<tool>`, or the normalised `mcp__marrow__<tool>` on the
53
+ * second read). Without mcp_context it is never own.
54
+ */
55
+ export declare function isOfficialMarrowGeminiCall(label: unknown, context: unknown): boolean;
56
+ /** Gemini's label for a Marrow tool, as the label alone would claim it (never proof). */
57
+ export declare function isGeminiOwnLabel(value: unknown): boolean;
58
+ export declare function isOfficialMarrowNestedInput(input: unknown): boolean;
59
+ export declare function isOfficialMarrowMcpEvent(event: OwnToolEvent): boolean;
60
+ /**
61
+ * The Claude Code hook matcher (marrow-install writes the identical bytes): every
62
+ * built-in it covers, and every label holding `mcp__` or `functions.` anywhere,
63
+ * except exactly `mcp__marrow__<registered name>`. Claude Code's label proves
64
+ * server `marrow` (it maps every other character to `_`, without trimming);
65
+ * no other host form is skipped. Hosts test it unanchored (search) or as a
66
+ * full match; with no m flag `^` and `$` are the start and end of the label,
67
+ * and every consuming part is `[\s\S]*`, so a label padded anywhere (line
68
+ * terminators, NUL, spaces) reaches the hook either way.
69
+ */
70
+ export declare function nativeHookMatcher(names?: Iterable<string>): string;
71
+ /** The never-released r2 matcher (c5354487): `.*` tails and a `functions.` exemption. A hook carrying it is repaired. */
72
+ export declare function r2NativeHookMatcher(names?: Iterable<string>): string;
73
+ /**
74
+ * The normalised name of a host MCP call that came with a separate server and
75
+ * tool (Cursor beforeMCPExecution, Windsurf, Grok use_tool). Every distinct
76
+ * (raw server, raw tool) pair gets a distinct name, so it never shares an
77
+ * action, a correlation or an approval with another target:
78
+ * own mcp__marrow__<tool>
79
+ * exact names, colon-free server MCP:<server>:<tool> (unchanged form)
80
+ * anything else MCP:<"server" | ?type>:<"tool" | ?type>
81
+ * The plain server has no `"`, `?` or `:`, so the forms cannot be confused,
82
+ * and JSON string literals are self-delimiting. Nothing is cut: a long name
83
+ * stays whole here (normalizedHookAction marks one over 128 never bound).
84
+ */
85
+ export declare function normalizedMcpToolName(own: boolean, tool: string, server: string, rawServer: unknown, rawTool: unknown): string;
86
+ export {};
87
+ //# sourceMappingURL=own-tool.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"own-tool.d.ts","sourceRoot":"","sources":["../src/own-tool.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6BG;AAIH,eAAO,MAAM,sBAAsB,WAAW,CAAC;AAE/C,eAAO,MAAM,qBAAqB,EAAE,WAAW,CAAC,MAAM,CAA2C,CAAC;AAMlG,KAAK,YAAY,GAAG;IAAE,SAAS,CAAC,EAAE,OAAO,CAAC;IAAC,UAAU,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC;AAElE,wBAAgB,eAAe,CAAC,MAAM,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,GAAG,OAAO,CAEvE;AAED,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAI/D;AAaD;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG;IAAE,WAAW,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAMjG;AAED;;;;;GAKG;AACH,wBAAgB,0BAA0B,CAAC,KAAK,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,GAAG,OAAO,CAIpF;AAED,yFAAyF;AACzF,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAExD;AAED,wBAAgB,2BAA2B,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAInE;AAED,wBAAgB,wBAAwB,CAAC,KAAK,EAAE,YAAY,GAAG,OAAO,CAKrE;AAeD;;;;;;;;;GASG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,GAAE,QAAQ,CAAC,MAAM,CAAyB,GAAG,MAAM,CAEzF;AAED,yHAAyH;AACzH,wBAAgB,mBAAmB,CAAC,KAAK,GAAE,QAAQ,CAAC,MAAM,CAAyB,GAAG,MAAM,CAG3F;AAWD;;;;;;;;;;;GAWG;AACH,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,GAAG,MAAM,CAQ9H"}
@@ -0,0 +1,169 @@
1
+ "use strict";
2
+ /**
3
+ * Marrow's own MCP tools skip the pre-action gate. A tool is Marrow's own only
4
+ * when its server is exactly `marrow` and its tool is exactly a name this
5
+ * package registers (any profile). Case, padding, NUL, suffixes and look-alike
6
+ * servers are never own, so they go down the normal gate path.
7
+ *
8
+ * Host forms (the exact names each host emits for the `marrow` server):
9
+ * mcp__marrow__<tool> Claude Code, Codex; the form the Windsurf,
10
+ * Cursor, Grok and Gemini adapters normalise to
11
+ * functions.mcp__marrow__<tool> Codex function namespace
12
+ * MCP:<tool> Cursor preToolUse (no server part; see below)
13
+ * MCP:marrow:<tool> Cursor preToolUse look-alike (see below)
14
+ * use_mcp_tool / use_tool (+ mcp, mcp_tool) with serverName and toolName
15
+ * Cline and Grok nested calls
16
+ *
17
+ * Gemini's label `mcp_<server>_<tool>` is ambiguous (server `marrow_marrow` +
18
+ * tool `commit` gives the same label as server `marrow` + tool
19
+ * `marrow_commit`), so it is never own by itself: the Gemini adapter decides
20
+ * from the payload's separate `mcp_context.server_name` / `tool_name`
21
+ * (isOfficialMarrowGeminiCall) and normalises an own call to
22
+ * `mcp__marrow__<tool>`.
23
+ *
24
+ * These functions decide on the label alone. The Codex and Cursor hooks do not
25
+ * trust the label: Codex builds it from the user's server name (servers
26
+ * `mcp__marrow`, `marrow-` and `marrow_` also give `mcp__marrow__<tool>`) and
27
+ * Cursor's preToolUse `MCP:<tool>` has no server. Those hooks skip only after
28
+ * own-server-identity.ts proves, from the host's MCP config, that exactly one
29
+ * server can produce the label and it starts the official package
30
+ * (isOfficialMarrowMcpEventOnHost); every other host keeps this label rule.
31
+ */
32
+ Object.defineProperty(exports, "__esModule", { value: true });
33
+ exports.MARROW_OWN_TOOL_NAMES = exports.MARROW_OWN_SERVER_NAME = void 0;
34
+ exports.isMarrowOwnTool = isMarrowOwnTool;
35
+ exports.isOfficialMarrowMcpTool = isOfficialMarrowMcpTool;
36
+ exports.geminiMcpTarget = geminiMcpTarget;
37
+ exports.isOfficialMarrowGeminiCall = isOfficialMarrowGeminiCall;
38
+ exports.isGeminiOwnLabel = isGeminiOwnLabel;
39
+ exports.isOfficialMarrowNestedInput = isOfficialMarrowNestedInput;
40
+ exports.isOfficialMarrowMcpEvent = isOfficialMarrowMcpEvent;
41
+ exports.nativeHookMatcher = nativeHookMatcher;
42
+ exports.r2NativeHookMatcher = r2NativeHookMatcher;
43
+ exports.normalizedMcpToolName = normalizedMcpToolName;
44
+ const tool_catalog_1 = require("./tool-catalog");
45
+ exports.MARROW_OWN_SERVER_NAME = 'marrow';
46
+ exports.MARROW_OWN_TOOL_NAMES = new Set(tool_catalog_1.TOOLS.map((tool) => tool.name));
47
+ const OWN_TOOL_PREFIXES = ['mcp__marrow__', 'functions.mcp__marrow__', 'MCP:marrow:', 'MCP:'];
48
+ const NESTED_MCP_TOOLS = new Set(['use_mcp_tool', 'use_tool', 'mcp', 'mcp_tool']);
49
+ function isMarrowOwnTool(server, tool) {
50
+ return server === exports.MARROW_OWN_SERVER_NAME && typeof tool === 'string' && exports.MARROW_OWN_TOOL_NAMES.has(tool);
51
+ }
52
+ function isOfficialMarrowMcpTool(value) {
53
+ if (typeof value !== 'string')
54
+ return false;
55
+ return OWN_TOOL_PREFIXES.some((prefix) => value.startsWith(prefix)
56
+ && exports.MARROW_OWN_TOOL_NAMES.has(value.slice(prefix.length)));
57
+ }
58
+ /** Every alias the host sent must agree; a conflicting pair is never own. */
59
+ function soleAlias(input, keys) {
60
+ const present = keys.filter((key) => input[key] !== undefined).map((key) => input[key]);
61
+ return present.length > 0 && present.every((value) => value === present[0]) ? present[0] : undefined;
62
+ }
63
+ /** The exact own-property string, never an inherited or coerced value. */
64
+ function ownString(record, key) {
65
+ return Object.prototype.hasOwnProperty.call(record, key) && typeof record[key] === 'string' ? record[key] : undefined;
66
+ }
67
+ /**
68
+ * Gemini's separate server and tool (`mcp_context.server_name`/`tool_name`,
69
+ * the mcpServers key and the server's own tool name), when the host sent both
70
+ * as strings. Only these two fields: the context's command, args, cwd and url
71
+ * are never kept.
72
+ */
73
+ function geminiMcpTarget(value) {
74
+ if (!value || typeof value !== 'object' || Array.isArray(value))
75
+ return null;
76
+ const record = value;
77
+ const server = ownString(record, 'server_name');
78
+ const tool = ownString(record, 'tool_name');
79
+ return server === undefined || tool === undefined ? null : { server_name: server, tool_name: tool };
80
+ }
81
+ /**
82
+ * A Gemini call is Marrow's own only when its mcp_context proves server
83
+ * `marrow` and an exact registered tool, and the host's label is that call's
84
+ * label (`mcp_marrow_<tool>`, or the normalised `mcp__marrow__<tool>` on the
85
+ * second read). Without mcp_context it is never own.
86
+ */
87
+ function isOfficialMarrowGeminiCall(label, context) {
88
+ const target = geminiMcpTarget(context);
89
+ if (!target || !isMarrowOwnTool(target.server_name, target.tool_name))
90
+ return false;
91
+ return label === `mcp_marrow_${target.tool_name}` || label === `mcp__marrow__${target.tool_name}`;
92
+ }
93
+ /** Gemini's label for a Marrow tool, as the label alone would claim it (never proof). */
94
+ function isGeminiOwnLabel(value) {
95
+ return typeof value === 'string' && value.startsWith('mcp_marrow_') && exports.MARROW_OWN_TOOL_NAMES.has(value.slice('mcp_marrow_'.length));
96
+ }
97
+ function isOfficialMarrowNestedInput(input) {
98
+ if (!input || typeof input !== 'object' || Array.isArray(input))
99
+ return false;
100
+ const record = input;
101
+ return isMarrowOwnTool(soleAlias(record, ['serverName', 'server_name']), soleAlias(record, ['toolName', 'tool_name']));
102
+ }
103
+ function isOfficialMarrowMcpEvent(event) {
104
+ if (isOfficialMarrowMcpTool(event.tool_name))
105
+ return true;
106
+ return typeof event.tool_name === 'string'
107
+ && NESTED_MCP_TOOLS.has(event.tool_name)
108
+ && isOfficialMarrowNestedInput(event.tool_input);
109
+ }
110
+ /**
111
+ * Hook adapters that see a separate server and tool name. `own` is the exact
112
+ * decision on the raw host values; `server` and `tool` are the bounded
113
+ * (trimmed) names. An inexact `marrow` call (padding, a padded wrapper,
114
+ * conflicting aliases) never normalises into an own form: it keeps its quoted
115
+ * raw names, so it stays a distinct, gated MCP action.
116
+ */
117
+ const NATIVE_HOOK_BUILTIN_TOOLS = 'Bash|Edit|Write|MultiEdit|Read|Glob|Grep|Search|WebSearch|Task';
118
+ function ownAlternation(names) {
119
+ return [...names].sort().map((name) => name.replace(/[.*+?^${}()|[\]\\]/g, '\\$&')).join('|');
120
+ }
121
+ /**
122
+ * The Claude Code hook matcher (marrow-install writes the identical bytes): every
123
+ * built-in it covers, and every label holding `mcp__` or `functions.` anywhere,
124
+ * except exactly `mcp__marrow__<registered name>`. Claude Code's label proves
125
+ * server `marrow` (it maps every other character to `_`, without trimming);
126
+ * no other host form is skipped. Hosts test it unanchored (search) or as a
127
+ * full match; with no m flag `^` and `$` are the start and end of the label,
128
+ * and every consuming part is `[\s\S]*`, so a label padded anywhere (line
129
+ * terminators, NUL, spaces) reaches the hook either way.
130
+ */
131
+ function nativeHookMatcher(names = exports.MARROW_OWN_TOOL_NAMES) {
132
+ return `${NATIVE_HOOK_BUILTIN_TOOLS}|^(?!mcp__marrow__(?:${ownAlternation(names)})$)[\\s\\S]*(?:functions\\.|mcp__)[\\s\\S]*`;
133
+ }
134
+ /** The never-released r2 matcher (c5354487): `.*` tails and a `functions.` exemption. A hook carrying it is repaired. */
135
+ function r2NativeHookMatcher(names = exports.MARROW_OWN_TOOL_NAMES) {
136
+ const own = ownAlternation(names);
137
+ return `${NATIVE_HOOK_BUILTIN_TOOLS}|functions\\.(?!mcp__marrow__(?:${own})$).*|mcp__(?!marrow__(?:${own})$).*`;
138
+ }
139
+ /** A server the plain form can carry: exact host name, no `:` (so the first `:` after `MCP:` always ends it). */
140
+ const PLAIN_MCP_SERVER = /^[A-Za-z0-9._-]{1,128}$/;
141
+ const PLAIN_MCP_TOOL = /^[A-Za-z0-9._:-]{1,128}$/;
142
+ /** One raw name in the escaped form: a JSON string literal (self-delimiting), or `?<type>` for a value that is not a string. */
143
+ function escapedPart(value) {
144
+ return typeof value === 'string' ? JSON.stringify(value) : `?${value === null ? 'null' : typeof value}`;
145
+ }
146
+ /**
147
+ * The normalised name of a host MCP call that came with a separate server and
148
+ * tool (Cursor beforeMCPExecution, Windsurf, Grok use_tool). Every distinct
149
+ * (raw server, raw tool) pair gets a distinct name, so it never shares an
150
+ * action, a correlation or an approval with another target:
151
+ * own mcp__marrow__<tool>
152
+ * exact names, colon-free server MCP:<server>:<tool> (unchanged form)
153
+ * anything else MCP:<"server" | ?type>:<"tool" | ?type>
154
+ * The plain server has no `"`, `?` or `:`, so the forms cannot be confused,
155
+ * and JSON string literals are self-delimiting. Nothing is cut: a long name
156
+ * stays whole here (normalizedHookAction marks one over 128 never bound).
157
+ */
158
+ function normalizedMcpToolName(own, tool, server, rawServer, rawTool) {
159
+ if (own)
160
+ return `mcp__marrow__${tool}`;
161
+ if (typeof rawServer === 'string' && typeof rawTool === 'string' && rawServer === server && rawTool === tool
162
+ && PLAIN_MCP_SERVER.test(rawServer) && PLAIN_MCP_TOOL.test(rawTool)) {
163
+ const plain = `MCP:${rawServer}:${rawTool}`;
164
+ if (!isOfficialMarrowMcpTool(plain))
165
+ return plain;
166
+ }
167
+ return `MCP:${escapedPart(rawServer)}:${escapedPart(rawTool)}`;
168
+ }
169
+ //# sourceMappingURL=own-tool.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"own-tool.js","sourceRoot":"","sources":["../src/own-tool.ts"],"names":[],"mappings":"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"}
package/dist/redact.d.ts CHANGED
@@ -1,3 +1,26 @@
1
+ /**
2
+ * The shared redactor for text that leaves the process. Every pattern starts
3
+ * at a boundary and bounds or delimits its repeats, so a scan is linear in
4
+ * the text: an adversarial input (a long run of a secret word, unterminated
5
+ * quotes, repeated `?`) cannot make it quadratic. Only the secret is
6
+ * replaced (by a fixed marker); the text after it is kept, so two texts that
7
+ * differ after a secret stay different.
8
+ *
9
+ * A replaced value that may also hide command text or a field separator (a
10
+ * quoted value with blanks, quotes or shell operators; an unquoted one with
11
+ * `& ; | < > ( ) # , ?`, a backtick or a `$` expansion; a URL password with
12
+ * `@`) becomes `[REDACTED_AMBIGUOUS]`, the backend's marker for a value that
13
+ * never binds an approval (backend src/utils/redaction.ts hide()): two actions
14
+ * that differ only inside such a span must never share one.
15
+ */
16
+ export declare const AMBIGUOUS_REDACTION_MARKER = "[REDACTED_AMBIGUOUS]";
1
17
  export declare function redactSensitiveText(value: string): string;
2
18
  export declare function redactSensitiveValue(value: unknown, depth?: number): unknown;
19
+ /**
20
+ * Redacts every string in a value that is sent as data (workflow fields,
21
+ * context, inputs): the structure, array lengths and every other value are
22
+ * kept, so nothing is dropped or reshaped; a text field under a credential
23
+ * name is replaced whole. Past depth 32 a value is withheld.
24
+ */
25
+ export declare function redactSensitiveStrings<T>(value: T, depth?: number): T;
3
26
  //# sourceMappingURL=redact.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"redact.d.ts","sourceRoot":"","sources":["../src/redact.ts"],"names":[],"mappings":"AAAA,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAWzD;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,GAAE,MAAU,GAAG,OAAO,CAe/E"}
1
+ {"version":3,"file":"redact.d.ts","sourceRoot":"","sources":["../src/redact.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,eAAO,MAAM,0BAA0B,yBAAyB,CAAC;AAoHjE,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CA8BzD;AAED,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,OAAO,EAAE,KAAK,GAAE,MAAU,GAAG,OAAO,CAe/E;AAID;;;;;GAKG;AACH,wBAAgB,sBAAsB,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,GAAE,MAAU,GAAG,CAAC,CAcxE"}
package/dist/redact.js CHANGED
@@ -1,18 +1,166 @@
1
1
  "use strict";
2
+ /**
3
+ * The shared redactor for text that leaves the process. Every pattern starts
4
+ * at a boundary and bounds or delimits its repeats, so a scan is linear in
5
+ * the text: an adversarial input (a long run of a secret word, unterminated
6
+ * quotes, repeated `?`) cannot make it quadratic. Only the secret is
7
+ * replaced (by a fixed marker); the text after it is kept, so two texts that
8
+ * differ after a secret stay different.
9
+ *
10
+ * A replaced value that may also hide command text or a field separator (a
11
+ * quoted value with blanks, quotes or shell operators; an unquoted one with
12
+ * `& ; | < > ( ) # , ?`, a backtick or a `$` expansion; a URL password with
13
+ * `@`) becomes `[REDACTED_AMBIGUOUS]`, the backend's marker for a value that
14
+ * never binds an approval (backend src/utils/redaction.ts hide()): two actions
15
+ * that differ only inside such a span must never share one.
16
+ */
2
17
  Object.defineProperty(exports, "__esModule", { value: true });
18
+ exports.AMBIGUOUS_REDACTION_MARKER = void 0;
3
19
  exports.redactSensitiveText = redactSensitiveText;
4
20
  exports.redactSensitiveValue = redactSensitiveValue;
21
+ exports.redactSensitiveStrings = redactSensitiveStrings;
22
+ exports.AMBIGUOUS_REDACTION_MARKER = '[REDACTED_AMBIGUOUS]';
23
+ const COMMAND_STRUCTURE = /[\s'"`;&|<>()#,?]|\$\(/;
24
+ const UNQUOTED_STRUCTURE = /[&;|<>()`#,?]|\$[({A-Za-z_]/;
25
+ /** The marker for one hidden value: ambiguous when the value may also hide command text. */
26
+ function hide(value, plain = '[REDACTED]', quoted = false) {
27
+ return (quoted ? COMMAND_STRUCTURE : UNQUOTED_STRUCTURE).test(value) ? exports.AMBIGUOUS_REDACTION_MARKER : plain;
28
+ }
29
+ /** A quoted (`"…"` / `'…'`) or bare value: the marker for its content; an unterminated quote is ambiguous. */
30
+ function hideMaybeQuoted(value, plain = '[REDACTED]') {
31
+ if (value.startsWith('\\"')) {
32
+ if (value.length < 4 || !value.endsWith('\\"'))
33
+ return exports.AMBIGUOUS_REDACTION_MARKER;
34
+ return hide(value.slice(2, -2), plain, true);
35
+ }
36
+ const quote = value[0];
37
+ if (quote === '"' || quote === "'") {
38
+ if (value.length < 2 || value[value.length - 1] !== quote)
39
+ return exports.AMBIGUOUS_REDACTION_MARKER;
40
+ return hide(value.slice(1, -1), plain, true);
41
+ }
42
+ return hide(value, plain);
43
+ }
44
+ /** A credential-like name (as in `NAME=value`, `NAME: value`, `"name": "value"`). */
45
+ const SECRET_NAME = /SECRET|TOKEN|API[_-]?KEY|CREDENTIAL|PASSWORD|PRIVATE[_-]?KEY/i;
46
+ /** The same names, plus `passwd` and `authorization`, as a quoted key (`"api_key": …`). */
47
+ const SECRET_KEY_NAME = /SECRET|TOKEN|API[_-]?KEY|CREDENTIAL|PASSWORD|PASSWD|PRIVATE[_-]?KEY|AUTHORIZATION/i;
48
+ /** A query parameter name that carries a secret. */
49
+ const SECRET_QUERY_NAME = /code|token|secret|signature|sig|credential|password|session|auth|api[_-]?key|apikey|client[_-]?secret|(?:^|[-_])key|key(?:[-_]|$)/i;
50
+ /** `"name": "value"` / `'name': 'value'` / `"name": value` (JSON, Python, YAML flow), also with the quotes escaped inside a shell string (`\"name\":\"value\"`). */
51
+ const QUOTED_NAME_VALUE = /(\\?["'])([A-Za-z0-9_.-]{1,128})\1([ \t]{0,8}:[ \t]{0,8})(\\"(?:[^"\\\n]|\\[^"\n]){0,8192}(?:\\")?|"(?:[^"\\\n]|\\.){0,8192}"?|'(?:[^'\\\n]|\\.){0,8192}'?|[^\s"',;}\]\\]{1,8192})/g;
52
+ /**
53
+ * `scheme://user:password@host`: the password is replaced, scheme, user and host stay. A hidden span that
54
+ * holds `@`, `#` or `?` may also hold the real host (`https://deploy:443#@api.example.test` goes to host
55
+ * `deploy`; libpq and mysql take the whole span as the password): it gets the ambiguous marker (M2-R1).
56
+ */
57
+ const URL_USERINFO = /(?<![A-Za-z0-9+.-])([A-Za-z][A-Za-z0-9+.-]{0,31}:\/\/)([^\s/@:'"`]{0,256}):([^\s/'"`]{1,1024})@/g;
58
+ /** `Authorization: <scheme> <value>` / `Proxy-Authorization: <value>`: the value is replaced, the scheme word stays. */
59
+ const AUTH_HEADER = /\b((?:Proxy-)?Authorization)([ \t]{0,8}[:=][ \t]{0,8})(?:(Basic|Bearer|Digest|Token|Negotiate|NTLM|ApiKey|Bot|HOBA|Mutual|AWS4-HMAC-SHA256)[ \t]{1,8})?([^\s"'`,;]{1,8192})/gi;
60
+ /** Digest parameters derived from the password. */
61
+ const DIGEST_PARAM = /\b(response|cnonce|nonce)=("[^"\n]{0,1024}(?:"|$)|[^\s,;"]{1,1024})/gi;
62
+ /** A value an earlier rule already replaced by a marker: it stays as it is (an ambiguous marker is never made plain). */
63
+ const OWN_MARKER_AHEAD = /^['"]?\[(?:REDACTED(?:_[A-Z_]{1,20})?|redacted)\]/;
64
+ function nameValueRedactor(text) {
65
+ // `NAME=value` / `NAME: value`: the name is a whole run of name characters (`-` included, as in
66
+ // `API-KEY`), so a match starts only where a run starts and each run is scanned once. Names and
67
+ // blanks are unbounded, as in 3.9.102: never fewer names redacted than before.
68
+ const pattern = /(?<![A-Za-z0-9_-])([A-Za-z0-9_-]+)(\s*[:=]\s*)/g;
69
+ const quoted = /(["'])([^"'\n]{0,4096})\1/y;
70
+ const value = /['"]?[^'"\s,;]{6,}/y;
71
+ let out = '';
72
+ let copied = 0;
73
+ for (let match = pattern.exec(text); match; match = pattern.exec(text)) {
74
+ const end = match.index + match[0].length;
75
+ if (!SECRET_NAME.test(match[1])) {
76
+ pattern.lastIndex = end;
77
+ continue;
78
+ }
79
+ const marker = OWN_MARKER_AHEAD.exec(text.slice(end, end + 24));
80
+ if (marker) {
81
+ // Already replaced: it stays as it is, unless text is glued to it (an earlier rule stopped at a
82
+ // quote that opened the next value). Then the glued text is hidden too, as 3.9.102 did; an
83
+ // ambiguous marker is never made plain.
84
+ const after = end + marker[0].length;
85
+ value.lastIndex = end;
86
+ const glued = /^[^'"\s,;]/.test(text.slice(after, after + 1)) ? value.exec(text) : null;
87
+ if (!glued) {
88
+ pattern.lastIndex = after;
89
+ continue;
90
+ }
91
+ out += text.slice(copied, match.index) + `${match[1]}=${glued[0].includes(exports.AMBIGUOUS_REDACTION_MARKER) ? exports.AMBIGUOUS_REDACTION_MARKER : hide(glued[0].replace(/^['"]/, ''))}`;
92
+ copied = value.lastIndex;
93
+ pattern.lastIndex = copied;
94
+ continue;
95
+ }
96
+ quoted.lastIndex = end;
97
+ const whole = quoted.exec(text);
98
+ // A quote counts as closing only before a delimiter; otherwise it may open the next value, and
99
+ // the 3.9.102 rule (up to the next quote or blank) applies.
100
+ if (whole && whole[2].length >= 6 && /^(?:[\s,;)}\]&|<>]|$)/.test(text.slice(quoted.lastIndex, quoted.lastIndex + 1))) {
101
+ // A quoted value is hidden up to its closing quote, blanks included.
102
+ out += text.slice(copied, match.index) + `${match[1]}=${hide(whole[2], '[REDACTED]', true)}`;
103
+ copied = quoted.lastIndex;
104
+ pattern.lastIndex = copied;
105
+ continue;
106
+ }
107
+ value.lastIndex = end;
108
+ const found = value.exec(text);
109
+ if (!found) {
110
+ pattern.lastIndex = end;
111
+ continue;
112
+ }
113
+ out += text.slice(copied, match.index) + `${match[1]}=${hide(found[0].replace(/^['"]/, ''))}`;
114
+ copied = value.lastIndex;
115
+ pattern.lastIndex = copied;
116
+ }
117
+ return out + text.slice(copied);
118
+ }
119
+ function queryRedactor(text) {
120
+ // `?name=value` / `&name=value`: the name stops at the next `?`, so every start scans its own run only.
121
+ const pattern = /([?&])([^=&#?\s]*)=/g;
122
+ const value = /[^&#\s]*/y;
123
+ let out = '';
124
+ let copied = 0;
125
+ for (let match = pattern.exec(text); match; match = pattern.exec(text)) {
126
+ const end = match.index + match[0].length;
127
+ if (!SECRET_QUERY_NAME.test(match[2])) {
128
+ pattern.lastIndex = end;
129
+ continue;
130
+ }
131
+ value.lastIndex = end;
132
+ const found = value.exec(text);
133
+ out += text.slice(copied, end) + hide(found ? found[0] : '', '[redacted]');
134
+ copied = value.lastIndex;
135
+ pattern.lastIndex = copied > end ? copied : end;
136
+ }
137
+ return out + text.slice(copied);
138
+ }
139
+ function digestRedactor(text) {
140
+ if (!/\bDigest[ \t]/i.test(text))
141
+ return text;
142
+ return text.replace(/\bDigest[ \t]{1,8}[^\n]{0,4096}/gi, (span) => span.replace(DIGEST_PARAM, (_m, name, v) => `${name}=${hideMaybeQuoted(v)}`));
143
+ }
5
144
  function redactSensitiveText(value) {
6
- return value
7
- .replace(/(\B--(?:password|pass|secret|api-key|apikey|token|auth|access-token|client-secret|private-key|key)=)([^\s"'`]+|"[^"]*"|'[^']*')/gi, '$1[REDACTED]')
8
- .replace(/(\B--(?:password|pass|secret|api-key|apikey|token|auth|access-token|client-secret|private-key|key)\s+)([^\s"'`]+|"[^"]*"|'[^']*')/gi, '$1[REDACTED]')
9
- .replace(/\b(Bearer|Token|ApiKey|API_KEY|MARROW_API_KEY|MARROW_KEY)\s+[\w.\-+/=]{12,}\b/gi, '$1 [REDACTED]')
10
- .replace(/\b([A-Z0-9_]*(?:SECRET|TOKEN|API[_-]?KEY|CREDENTIAL|PASSWORD|PRIVATE[_-]?KEY)[A-Z0-9_]*)\s*[:=]\s*['"]?[^'"\s,;]{6,}/gi, '$1=[REDACTED]')
145
+ // The 3.9.102 rules first, in their 3.9.102 order (with linear scans and context-aware markers), so
146
+ // no text 3.9.102 hid is ever left; then the shapes 3.9.102 missed.
147
+ let out = value
148
+ .replace(/(\B--(?:password|pass|secret|api-key|apikey|token|auth|access-token|client-secret|private-key|key)=)([^\s"'`]+|"[^"]*(?:"|$)|'[^']*(?:'|$))/gi, (_m, flag, v) => `${flag}${hideMaybeQuoted(v)}`)
149
+ .replace(/(\B--(?:password|pass|secret|api-key|apikey|token|auth|access-token|client-secret|private-key|key)\s+)([^\s"'`]+|"[^"]*(?:"|$)|'[^']*(?:'|$))/gi, (_m, flag, v) => `${flag}${hideMaybeQuoted(v)}`)
150
+ .replace(/\b(Bearer|Token|ApiKey|API_KEY|MARROW_API_KEY|MARROW_KEY)\s+[\w.\-+/=]{12,}\b/gi, '$1 [REDACTED]');
151
+ out = nameValueRedactor(out)
11
152
  .replace(/\b(mrw_[A-Za-z0-9_\-]{8,})\b/g, '[REDACTED_MARROW_KEY]')
12
153
  .replace(/\bmrw_[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}_[A-Fa-f0-9]{16,}\b/gi, '[REDACTED_MARROW_KEY]')
13
- .replace(/\b(?:sk|pk|ghp|github_pat|npm|cfut)_[A-Za-z0-9_\-]{12,}\b/g, '[REDACTED_TOKEN]')
14
- .replace(/([?&])([^=&#\s]*(?:code|token|secret|signature|sig|credential|password|session|auth|api[_-]?key|apikey|client[_-]?secret|(?:^|[-_])key|key(?:[-_]|$))[^=&#\s]*=)[^&#\s]*/gi, '$1$2[redacted]')
15
- .replace(/([?&](?:token|key|secret|password|auth|signature|sig|session)=)[^&#\s]*/gi, '$1[redacted]');
154
+ .replace(/\b(?:sk|pk|ghp|github_pat|npm|cfut)_[A-Za-z0-9_\-]{12,}\b/g, '[REDACTED_TOKEN]');
155
+ out = queryRedactor(out)
156
+ .replace(/([?&](?:token|key|secret|password|auth|signature|sig|session)=)([^&#\s]*)/gi, (match, name, v) => (/^\[(?:redacted|REDACTED_AMBIGUOUS)\]$/.test(v) ? match : `${name}${hide(v, '[redacted]')}`));
157
+ out = out
158
+ .replace(QUOTED_NAME_VALUE, (match, quote, name, sep, v) => (SECRET_KEY_NAME.test(name) ? `${quote}${name}${quote}${sep}${quote.length > 1 ? '\\"' : '"'}${hideMaybeQuoted(v)}${quote.length > 1 ? '\\"' : '"'}` : match))
159
+ .replace(URL_USERINFO, (_m, scheme, user, password) => (`${scheme}${user}:${/[@#?]/.test(password) ? exports.AMBIGUOUS_REDACTION_MARKER : hide(password)}@`));
160
+ return digestRedactor(out)
161
+ .replace(AUTH_HEADER, (_match, header, sep, scheme, v) => (`${header}${sep}${scheme ? `${scheme} ` : ''}${hide(v)}`))
162
+ // `Basic <base64>` outside a header: base64 of `user:password` (a digit, `+`, `/`, `=` or an inner capital), not a plain word.
163
+ .replace(/\bBasic([ \t]{1,8})([A-Za-z0-9+/]{8,8192}={0,2})(?![A-Za-z0-9+/=])/g, (match, space, token) => (/[0-9+/=]|.[A-Z]/.test(token) ? `Basic${space}[REDACTED]` : match));
16
164
  }
17
165
  function redactSensitiveValue(value, depth = 0) {
18
166
  if (depth > 4)
@@ -34,4 +182,29 @@ function redactSensitiveValue(value, depth = 0) {
34
182
  }
35
183
  return String(value);
36
184
  }
185
+ const SECRET_FIELD = /(?:secret|token|api[_-]?key|password|credential|authorization|private[_-]?key)/i;
186
+ /**
187
+ * Redacts every string in a value that is sent as data (workflow fields,
188
+ * context, inputs): the structure, array lengths and every other value are
189
+ * kept, so nothing is dropped or reshaped; a text field under a credential
190
+ * name is replaced whole. Past depth 32 a value is withheld.
191
+ */
192
+ function redactSensitiveStrings(value, depth = 0) {
193
+ if (depth > 32)
194
+ return '[redacted-depth]';
195
+ if (typeof value === 'string')
196
+ return redactSensitiveText(value);
197
+ if (Array.isArray(value))
198
+ return value.map((item) => redactSensitiveStrings(item, depth + 1));
199
+ if (value && typeof value === 'object') {
200
+ const out = {};
201
+ for (const [key, item] of Object.entries(value)) {
202
+ out[key] = SECRET_FIELD.test(key) && item !== null && (typeof item === 'string' || typeof item === 'object')
203
+ ? '[redacted]'
204
+ : redactSensitiveStrings(item, depth + 1);
205
+ }
206
+ return out;
207
+ }
208
+ return value;
209
+ }
37
210
  //# sourceMappingURL=redact.js.map