@getmarrow/mcp 3.9.102 → 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 (109) hide show
  1. package/README.md +49 -23
  2. package/dist/cli.js +41 -10
  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/hook-contract.d.ts +2 -2
  13. package/dist/hook-contract.d.ts.map +1 -1
  14. package/dist/hook-contract.js +8 -3
  15. package/dist/hook-contract.js.map +1 -1
  16. package/dist/hook-pre-action.d.ts +48 -2
  17. package/dist/hook-pre-action.d.ts.map +1 -1
  18. package/dist/hook-pre-action.js +195 -22
  19. package/dist/hook-pre-action.js.map +1 -1
  20. package/dist/hook.d.ts +1 -1
  21. package/dist/hook.d.ts.map +1 -1
  22. package/dist/hook.js +12 -6
  23. package/dist/hook.js.map +1 -1
  24. package/dist/host-session.d.ts +11 -0
  25. package/dist/host-session.d.ts.map +1 -1
  26. package/dist/host-session.js +49 -0
  27. package/dist/host-session.js.map +1 -1
  28. package/dist/index.d.ts.map +1 -1
  29. package/dist/index.js +15 -10
  30. package/dist/index.js.map +1 -1
  31. package/dist/normalized-action.d.ts +29 -6
  32. package/dist/normalized-action.d.ts.map +1 -1
  33. package/dist/normalized-action.js +492 -102
  34. package/dist/normalized-action.js.map +1 -1
  35. package/dist/own-server-identity.d.ts +123 -0
  36. package/dist/own-server-identity.d.ts.map +1 -0
  37. package/dist/own-server-identity.js +1052 -0
  38. package/dist/own-server-identity.js.map +1 -0
  39. package/dist/own-tool.d.ts +7 -3
  40. package/dist/own-tool.d.ts.map +1 -1
  41. package/dist/own-tool.js +7 -3
  42. package/dist/own-tool.js.map +1 -1
  43. package/dist/redact.d.ts +23 -0
  44. package/dist/redact.d.ts.map +1 -1
  45. package/dist/redact.js +181 -8
  46. package/dist/redact.js.map +1 -1
  47. package/dist/seatbelt/classifier-pin.d.ts +15 -0
  48. package/dist/seatbelt/classifier-pin.d.ts.map +1 -0
  49. package/dist/seatbelt/classifier-pin.js +26 -0
  50. package/dist/seatbelt/classifier-pin.js.map +1 -0
  51. package/dist/seatbelt/guards.d.ts +10 -0
  52. package/dist/seatbelt/guards.d.ts.map +1 -0
  53. package/dist/seatbelt/guards.js +509 -0
  54. package/dist/seatbelt/guards.js.map +1 -0
  55. package/dist/seatbelt/hook.d.ts +72 -0
  56. package/dist/seatbelt/hook.d.ts.map +1 -0
  57. package/dist/seatbelt/hook.js +362 -0
  58. package/dist/seatbelt/hook.js.map +1 -0
  59. package/dist/seatbelt/longopts.d.ts +68 -0
  60. package/dist/seatbelt/longopts.d.ts.map +1 -0
  61. package/dist/seatbelt/longopts.js +377 -0
  62. package/dist/seatbelt/longopts.js.map +1 -0
  63. package/dist/seatbelt/mapper.d.ts +83 -0
  64. package/dist/seatbelt/mapper.d.ts.map +1 -0
  65. package/dist/seatbelt/mapper.js +10248 -0
  66. package/dist/seatbelt/mapper.js.map +1 -0
  67. package/dist/seatbelt/record.d.ts +94 -0
  68. package/dist/seatbelt/record.d.ts.map +1 -0
  69. package/dist/seatbelt/record.js +776 -0
  70. package/dist/seatbelt/record.js.map +1 -0
  71. package/dist/seatbelt/tables.d.ts +82 -0
  72. package/dist/seatbelt/tables.d.ts.map +1 -0
  73. package/dist/seatbelt/tables.js +359 -0
  74. package/dist/seatbelt/tables.js.map +1 -0
  75. package/dist/seatbelt-deploy.d.ts +100 -0
  76. package/dist/seatbelt-deploy.d.ts.map +1 -0
  77. package/dist/seatbelt-deploy.js +393 -0
  78. package/dist/seatbelt-deploy.js.map +1 -0
  79. package/dist/seatbelt-fs.d.ts +30 -0
  80. package/dist/seatbelt-fs.d.ts.map +1 -0
  81. package/dist/seatbelt-fs.js +94 -0
  82. package/dist/seatbelt-fs.js.map +1 -0
  83. package/dist/seatbelt-git.d.ts +212 -0
  84. package/dist/seatbelt-git.d.ts.map +1 -0
  85. package/dist/seatbelt-git.js +844 -0
  86. package/dist/seatbelt-git.js.map +1 -0
  87. package/dist/seatbelt-mode.d.ts +77 -0
  88. package/dist/seatbelt-mode.d.ts.map +1 -0
  89. package/dist/seatbelt-mode.js +496 -0
  90. package/dist/seatbelt-mode.js.map +1 -0
  91. package/dist/seatbelt-path.d.ts +123 -0
  92. package/dist/seatbelt-path.d.ts.map +1 -0
  93. package/dist/seatbelt-path.js +482 -0
  94. package/dist/seatbelt-path.js.map +1 -0
  95. package/dist/seatbelt-scripts.d.ts +109 -0
  96. package/dist/seatbelt-scripts.d.ts.map +1 -0
  97. package/dist/seatbelt-scripts.js +1060 -0
  98. package/dist/seatbelt-scripts.js.map +1 -0
  99. package/dist/tool-catalog.js +2 -2
  100. package/dist/tool-catalog.js.map +1 -1
  101. package/dist/types.d.ts +2 -1
  102. package/dist/types.d.ts.map +1 -1
  103. package/package.json +2 -1
  104. package/server.json +3 -3
  105. package/vendor/classifier/MANIFEST.json +25 -0
  106. package/vendor/classifier/classifier.js +1356 -0
  107. package/vendor/classifier/policy-baseline.js +187 -0
  108. package/vendor/classifier/redact.js +59 -0
  109. package/vendor/classifier/shell-parse.js +455 -0
@@ -0,0 +1,94 @@
1
+ import * as nodeFs from 'node:fs';
2
+ export interface SeatbeltRecord {
3
+ v: 1;
4
+ mode: 'seatbelt' | 'claimed_no_key' | 'account';
5
+ /** `enforce`: the decision was the hook's answer. `watch`: computed for the record only (account floor). */
6
+ enforcement: 'enforce' | 'watch';
7
+ harness: string;
8
+ decision: 'pass' | 'stop' | 'skipped';
9
+ category: string;
10
+ rule: string;
11
+ reasons: string[];
12
+ flags: string[];
13
+ parse: string;
14
+ latency_ms: number;
15
+ }
16
+ /**
17
+ * What the hook knew about the event. It is used only to derive enums and keyed hashes and is never
18
+ * stored. `home` is the trusted home (passwd, or the hook's baked --home), never the agent's $HOME.
19
+ */
20
+ export interface SeatbeltRecordContext {
21
+ tool_name?: unknown;
22
+ tool_input?: unknown;
23
+ cwd?: unknown;
24
+ session?: unknown;
25
+ truncated?: boolean;
26
+ home?: string | null;
27
+ }
28
+ type Fs = typeof nodeFs;
29
+ /** Test seams (host, owner, clock, file system, caps). The hook passes none of them. */
30
+ export interface ReceiptOptions {
31
+ home?: string | null;
32
+ uid?: number | null;
33
+ now?: number;
34
+ fs?: Fs;
35
+ maxTotalBytes?: number;
36
+ retentionDays?: number;
37
+ lockWaitMs?: number;
38
+ }
39
+ export declare const MAX_RECEIPT_BYTES: number;
40
+ export declare const MAX_TOTAL_BYTES: number;
41
+ export declare const RETENTION_DAYS = 90;
42
+ export type DropReason = 'unsafe_store' | 'lock_timeout' | 'write_failed' | 'cap_full' | 'oversize' | 'platform' | 'error';
43
+ /** Flags the mapper emits (test/seatbelt-u6-receipts reads the source to prove it) plus the two the receipt adds for the account floor. */
44
+ export declare const FLAG_CODES: ReadonlySet<string>;
45
+ export interface SeatbeltReceipt {
46
+ v: 1;
47
+ id: string;
48
+ seq: number;
49
+ prev: string;
50
+ ts: number;
51
+ ts_label: 'client_time';
52
+ mode: string;
53
+ enforcement: string;
54
+ harness: string;
55
+ event: 'pre_tool';
56
+ tool_kind: string;
57
+ tool: string;
58
+ decision: string;
59
+ category: string;
60
+ rule: string;
61
+ reasons: string[];
62
+ programs: string[];
63
+ subcommand: string;
64
+ flags: string[];
65
+ target_class: string;
66
+ parse: string;
67
+ action_key: string;
68
+ workspace_key: string;
69
+ session_key: string;
70
+ engine: {
71
+ pkg: string;
72
+ contract: string;
73
+ source_commit: string;
74
+ rules: string;
75
+ tables: string;
76
+ };
77
+ latency_ms: number;
78
+ }
79
+ /** The problems with a receipt object (an empty list means valid). Used by the writer and by every consumer of the fields. */
80
+ export declare function validateReceipt(value: unknown): string[];
81
+ /** Write one receipt. Never throws; says what happened. The hook calls recordSeatbeltDecision; tests call this with options. */
82
+ export declare function writeSeatbeltReceipt(record: SeatbeltRecord, context?: SeatbeltRecordContext, options?: ReceiptOptions): 'written' | 'dropped';
83
+ /**
84
+ * This machine's private salt: the receipts store's (~/.marrow/seatbelt/salt under the passwd home, 32 random
85
+ * bytes, 0600, owned by this uid, read with O_NOFOLLOW, created once), with every check openStore makes. It keys
86
+ * hashes that leave the machine only as a MAC (normalized-action exact_hmac); the salt itself is never sent,
87
+ * printed or logged. null when the store is missing, unsafe, not ours or unreadable: the caller then fails closed.
88
+ * Cached per process. The options are test seams (home, uid, fs) and bypass the cache.
89
+ */
90
+ export declare function deviceSalt(options?: Pick<ReceiptOptions, 'home' | 'uid' | 'fs'>): Buffer | null;
91
+ /** The record hook U5 calls once per decision. It never throws, writes no output and never changes a decision. */
92
+ export declare function recordSeatbeltDecision(record: SeatbeltRecord, context?: SeatbeltRecordContext): void;
93
+ export {};
94
+ //# sourceMappingURL=record.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"record.d.ts","sourceRoot":"","sources":["../../src/seatbelt/record.ts"],"names":[],"mappings":"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"}