@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.
- package/README.md +63 -29
- package/dist/cli.js +64 -1005
- package/dist/cli.js.map +1 -1
- package/dist/codex-plugin-pins.d.ts +19 -0
- package/dist/codex-plugin-pins.d.ts.map +1 -0
- package/dist/codex-plugin-pins.js +43 -0
- package/dist/codex-plugin-pins.js.map +1 -0
- package/dist/codex-plugins.d.ts +34 -0
- package/dist/codex-plugins.d.ts.map +1 -0
- package/dist/codex-plugins.js +240 -0
- package/dist/codex-plugins.js.map +1 -0
- package/dist/env.d.ts +2 -0
- package/dist/env.d.ts.map +1 -1
- package/dist/env.js +229 -39
- package/dist/env.js.map +1 -1
- package/dist/hook-contract.d.ts +41 -3
- package/dist/hook-contract.d.ts.map +1 -1
- package/dist/hook-contract.js +126 -18
- package/dist/hook-contract.js.map +1 -1
- package/dist/hook-pre-action.d.ts +48 -2
- package/dist/hook-pre-action.d.ts.map +1 -1
- package/dist/hook-pre-action.js +199 -23
- package/dist/hook-pre-action.js.map +1 -1
- package/dist/hook-tool-policy.d.ts +3 -3
- package/dist/hook-tool-policy.d.ts.map +1 -1
- package/dist/hook-tool-policy.js +6 -22
- package/dist/hook-tool-policy.js.map +1 -1
- package/dist/hook.d.ts +2 -2
- package/dist/hook.d.ts.map +1 -1
- package/dist/hook.js +13 -6
- package/dist/hook.js.map +1 -1
- package/dist/host-approval-state.d.ts +9 -0
- package/dist/host-approval-state.d.ts.map +1 -1
- package/dist/host-approval-state.js +4 -0
- package/dist/host-approval-state.js.map +1 -1
- package/dist/host-approval.d.ts +6 -0
- package/dist/host-approval.d.ts.map +1 -1
- package/dist/host-approval.js +3 -1
- package/dist/host-approval.js.map +1 -1
- package/dist/host-session.d.ts +11 -0
- package/dist/host-session.d.ts.map +1 -1
- package/dist/host-session.js +49 -0
- package/dist/host-session.js.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +27 -19
- package/dist/index.js.map +1 -1
- package/dist/normalized-action.d.ts +29 -6
- package/dist/normalized-action.d.ts.map +1 -1
- package/dist/normalized-action.js +497 -103
- package/dist/normalized-action.js.map +1 -1
- package/dist/own-server-identity.d.ts +123 -0
- package/dist/own-server-identity.d.ts.map +1 -0
- package/dist/own-server-identity.js +1052 -0
- package/dist/own-server-identity.js.map +1 -0
- package/dist/own-tool.d.ts +87 -0
- package/dist/own-tool.d.ts.map +1 -0
- package/dist/own-tool.js +169 -0
- package/dist/own-tool.js.map +1 -0
- package/dist/redact.d.ts +23 -0
- package/dist/redact.d.ts.map +1 -1
- package/dist/redact.js +181 -8
- package/dist/redact.js.map +1 -1
- package/dist/seatbelt/classifier-pin.d.ts +15 -0
- package/dist/seatbelt/classifier-pin.d.ts.map +1 -0
- package/dist/seatbelt/classifier-pin.js +26 -0
- package/dist/seatbelt/classifier-pin.js.map +1 -0
- package/dist/seatbelt/guards.d.ts +10 -0
- package/dist/seatbelt/guards.d.ts.map +1 -0
- package/dist/seatbelt/guards.js +509 -0
- package/dist/seatbelt/guards.js.map +1 -0
- package/dist/seatbelt/hook.d.ts +72 -0
- package/dist/seatbelt/hook.d.ts.map +1 -0
- package/dist/seatbelt/hook.js +362 -0
- package/dist/seatbelt/hook.js.map +1 -0
- package/dist/seatbelt/longopts.d.ts +68 -0
- package/dist/seatbelt/longopts.d.ts.map +1 -0
- package/dist/seatbelt/longopts.js +377 -0
- package/dist/seatbelt/longopts.js.map +1 -0
- package/dist/seatbelt/mapper.d.ts +83 -0
- package/dist/seatbelt/mapper.d.ts.map +1 -0
- package/dist/seatbelt/mapper.js +10248 -0
- package/dist/seatbelt/mapper.js.map +1 -0
- package/dist/seatbelt/record.d.ts +94 -0
- package/dist/seatbelt/record.d.ts.map +1 -0
- package/dist/seatbelt/record.js +776 -0
- package/dist/seatbelt/record.js.map +1 -0
- package/dist/seatbelt/tables.d.ts +82 -0
- package/dist/seatbelt/tables.d.ts.map +1 -0
- package/dist/seatbelt/tables.js +359 -0
- package/dist/seatbelt/tables.js.map +1 -0
- package/dist/seatbelt-deploy.d.ts +100 -0
- package/dist/seatbelt-deploy.d.ts.map +1 -0
- package/dist/seatbelt-deploy.js +393 -0
- package/dist/seatbelt-deploy.js.map +1 -0
- package/dist/seatbelt-fs.d.ts +30 -0
- package/dist/seatbelt-fs.d.ts.map +1 -0
- package/dist/seatbelt-fs.js +94 -0
- package/dist/seatbelt-fs.js.map +1 -0
- package/dist/seatbelt-git.d.ts +212 -0
- package/dist/seatbelt-git.d.ts.map +1 -0
- package/dist/seatbelt-git.js +844 -0
- package/dist/seatbelt-git.js.map +1 -0
- package/dist/seatbelt-mode.d.ts +77 -0
- package/dist/seatbelt-mode.d.ts.map +1 -0
- package/dist/seatbelt-mode.js +496 -0
- package/dist/seatbelt-mode.js.map +1 -0
- package/dist/seatbelt-path.d.ts +123 -0
- package/dist/seatbelt-path.d.ts.map +1 -0
- package/dist/seatbelt-path.js +482 -0
- package/dist/seatbelt-path.js.map +1 -0
- package/dist/seatbelt-scripts.d.ts +109 -0
- package/dist/seatbelt-scripts.d.ts.map +1 -0
- package/dist/seatbelt-scripts.js +1060 -0
- package/dist/seatbelt-scripts.js.map +1 -0
- package/dist/tool-catalog.d.ts +6852 -0
- package/dist/tool-catalog.d.ts.map +1 -0
- package/dist/tool-catalog.js +999 -0
- package/dist/tool-catalog.js.map +1 -0
- package/dist/types.d.ts +2 -1
- package/dist/types.d.ts.map +1 -1
- package/package.json +2 -1
- package/server.json +10 -3
- package/vendor/classifier/MANIFEST.json +25 -0
- package/vendor/classifier/classifier.js +1356 -0
- package/vendor/classifier/policy-baseline.js +187 -0
- package/vendor/classifier/redact.js +59 -0
- package/vendor/classifier/shell-parse.js +455 -0
|
@@ -0,0 +1 @@
|
|
|
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"}
|
package/dist/own-tool.js
ADDED
|
@@ -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
|
package/dist/redact.d.ts.map
CHANGED
|
@@ -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,
|
|
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
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
.replace(
|
|
10
|
-
.replace(
|
|
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
|
-
|
|
15
|
-
.replace(/([?&](?:token|key|secret|password|auth|signature|sig|session)=)[^&#\s]
|
|
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
|