@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
|
@@ -8,8 +8,14 @@
|
|
|
8
8
|
* names of a shell command, the file paths of an edit (the home directory as
|
|
9
9
|
* `~`, another user's home as `/home/[user]`), a SHA-256 of the
|
|
10
10
|
* command or tool input, and `truncated: true` when that hash could not cover
|
|
11
|
-
* everything that decides what the action does. The
|
|
12
|
-
*
|
|
11
|
+
* everything that decides what the action does. The tool input is never sent.
|
|
12
|
+
* The command text is never sent, with one exception: a shell command that is
|
|
13
|
+
* word for word one of the deploy grammars (deployCommandText: one clause of
|
|
14
|
+
* plain ASCII words, an optional launcher, the deploy tool and subcommand, at
|
|
15
|
+
* most one environment flag with a DEPLOY_ENV_VALUE value, nothing else, and
|
|
16
|
+
* no secret replaced) is also sent as `tool_input.command`, exactly as typed
|
|
17
|
+
* (for example `sst deploy --stage production`), so the service can judge the
|
|
18
|
+
* deploy target. Every other command sends only its hash.
|
|
13
19
|
*
|
|
14
20
|
* Before hashing, a normalized form is built (whitespace and quoting
|
|
15
21
|
* normalized) in which:
|
|
@@ -39,9 +45,12 @@
|
|
|
39
45
|
* - Data a command reads (text echoed or printed into a pipe or a file,
|
|
40
46
|
* heredoc bodies, here-strings) and the values of other environment
|
|
41
47
|
* assignments and env-store settings (`env:set`, `config:set`, `variables
|
|
42
|
-
* set`) are replaced by a SHA-256 of the data when the data
|
|
43
|
-
*
|
|
44
|
-
*
|
|
48
|
+
* set`) are replaced by a SHA-256 of the data when the data does not feed
|
|
49
|
+
* a secrets command or a secrets file: different data gives a different
|
|
50
|
+
* hash, the same data the same hash. Data that carries something
|
|
51
|
+
* secret-shaped is hashed with each secret replaced by `[secret]`
|
|
52
|
+
* (`[secret-data:…]`, truncated), so data that differs outside a secret
|
|
53
|
+
* still gives a different hash.
|
|
45
54
|
* - Anything else that may be a secret is replaced by `[secret]` and the
|
|
46
55
|
* action is marked `truncated: true`, so Marrow never binds an approval to
|
|
47
56
|
* it and always asks: data that feeds a secrets command (`… secret put`,
|
|
@@ -74,8 +83,12 @@ export type NormalizedHookAction = {
|
|
|
74
83
|
paths?: string[];
|
|
75
84
|
tool_input: {
|
|
76
85
|
command_sha256: string;
|
|
86
|
+
exact_hmac?: string;
|
|
77
87
|
} | {
|
|
78
88
|
input_sha256: string;
|
|
89
|
+
exact_hmac?: string;
|
|
90
|
+
} | {
|
|
91
|
+
exact_hmac: string;
|
|
79
92
|
} | Record<string, never>;
|
|
80
93
|
/** The hash could not cover everything that decides the action: Marrow never binds an approval to it. */
|
|
81
94
|
truncated?: true;
|
|
@@ -100,7 +113,7 @@ export declare function classifySecretName(name: string): NameClass;
|
|
|
100
113
|
* never sent. `truncated` is true when something that may change what the
|
|
101
114
|
* command does had to be withheld. Exported for tests.
|
|
102
115
|
*/
|
|
103
|
-
export declare function normalizeShellCommand(command: string, deadline?: number): {
|
|
116
|
+
export declare function normalizeShellCommand(command: string, deadline?: number, exact?: boolean): {
|
|
104
117
|
text: string;
|
|
105
118
|
programs: string[];
|
|
106
119
|
truncated: boolean;
|
|
@@ -123,9 +136,19 @@ export declare function deployCommandText(command: string): string | null;
|
|
|
123
136
|
* service never binds, so the hook still answers within its host's budget.
|
|
124
137
|
* An event whose input a host adapter cut or dropped (`input_truncated`) is
|
|
125
138
|
* marked truncated as well.
|
|
139
|
+
*
|
|
140
|
+
* A truncated action also carries `tool_input.exact_hmac`: a keyed hash (the
|
|
141
|
+
* device salt never leaves the machine) of the action with only certain
|
|
142
|
+
* credentials replaced, so two actions that differ anywhere else never share a
|
|
143
|
+
* correlation, hold or key, and a retry that differs only in a certain
|
|
144
|
+
* credential (an OTP) still does. A placeholder keys the raw input (up to
|
|
145
|
+
* 1 MB). Input a host adapter cut or dropped, input over 1 MB and a missing or
|
|
146
|
+
* unsafe salt give a random nonce: the action matches nothing (it is asked
|
|
147
|
+
* again). `salt` is a test seam (undefined: the device salt).
|
|
126
148
|
*/
|
|
127
149
|
export declare function normalizedHookAction(event: ToolEvent, options?: {
|
|
128
150
|
deadlineAt?: number;
|
|
151
|
+
salt?: Buffer | null;
|
|
129
152
|
}): NormalizedHookAction;
|
|
130
153
|
export {};
|
|
131
154
|
//# sourceMappingURL=normalized-action.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"normalized-action.d.ts","sourceRoot":"","sources":["../src/normalized-action.ts"],"names":[],"mappings":"AAUA
|
|
1
|
+
{"version":3,"file":"normalized-action.d.ts","sourceRoot":"","sources":["../src/normalized-action.ts"],"names":[],"mappings":"AAUA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA6EG;AACH,MAAM,MAAM,oBAAoB,GAAG;IACjC,SAAS,EAAE,OAAO,GAAG,MAAM,GAAG,KAAK,GAAG,OAAO,CAAC;IAC9C,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,EAAE,CAAC;IACjB,UAAU,EAAE;QAAE,cAAc,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG;QAAE,YAAY,EAAE,MAAM,CAAC;QAAC,UAAU,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG;QAAE,UAAU,EAAE,MAAM,CAAA;KAAE,GAAG,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IAC7J,yGAAyG;IACzG,SAAS,CAAC,EAAE,IAAI,CAAC;CAClB,CAAC;AAMF,yHAAyH;AACzH,eAAO,MAAM,cAAc,QAAS,CAAC;AAWrC,KAAK,SAAS,GAAG;IAAE,SAAS,CAAC,EAAE,OAAO,CAAC;IAAC,UAAU,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC;AA8C/D,4GAA4G;AAC5G,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAUnD;AAgDD,KAAK,SAAS,GAAG,YAAY,GAAG,WAAW,GAAG,WAAW,GAAG,OAAO,CAAC;AAEpE;;;;GAIG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,CAW1D;AAm5BD;;;;GAIG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,EAAE,KAAK,UAAQ,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,EAAE,CAAC;IAAC,SAAS,EAAE,OAAO,CAAA;CAAE,CAWjJ;AAwHD;;;;;;;;;GASG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAyChE;AA0KD;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,SAAS,EAAE,OAAO,GAAE;IAAE,UAAU,CAAC,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAAA;CAAO,GAAG,oBAAoB,CA4BxI"}
|