@aimarket/warden 0.21.0 → 0.22.1

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 (212) hide show
  1. package/CHANGELOG.md +52 -0
  2. package/README-es.md +24 -7
  3. package/README-fr.md +24 -7
  4. package/README-ru.md +24 -7
  5. package/README-zh.md +24 -7
  6. package/README.md +24 -7
  7. package/dist/annotation-review.d.ts +10 -0
  8. package/dist/annotation-review.d.ts.map +1 -0
  9. package/dist/annotation-review.js +36 -0
  10. package/dist/annotation-review.js.map +1 -0
  11. package/dist/answer-gate.d.ts +94 -0
  12. package/dist/answer-gate.d.ts.map +1 -0
  13. package/dist/answer-gate.js +234 -0
  14. package/dist/answer-gate.js.map +1 -0
  15. package/dist/atomic-screen.d.ts.map +1 -1
  16. package/dist/classifier.d.ts +2 -2
  17. package/dist/classifier.d.ts.map +1 -1
  18. package/dist/claude-hook.js.map +1 -1
  19. package/dist/declare.d.ts.map +1 -1
  20. package/dist/declare.js.map +1 -1
  21. package/dist/flow-guard-answer.d.ts +30 -0
  22. package/dist/flow-guard-answer.d.ts.map +1 -0
  23. package/dist/flow-guard-answer.js +228 -0
  24. package/dist/flow-guard-answer.js.map +1 -0
  25. package/dist/flow-guard-classify.d.ts +14 -0
  26. package/dist/flow-guard-classify.d.ts.map +1 -0
  27. package/dist/flow-guard-classify.js +224 -0
  28. package/dist/flow-guard-classify.js.map +1 -0
  29. package/dist/flow-guard-constraints.d.ts +43 -0
  30. package/dist/flow-guard-constraints.d.ts.map +1 -0
  31. package/dist/flow-guard-constraints.js +69 -0
  32. package/dist/flow-guard-constraints.js.map +1 -0
  33. package/dist/flow-guard-decode.d.ts +17 -0
  34. package/dist/flow-guard-decode.d.ts.map +1 -0
  35. package/dist/flow-guard-decode.js +149 -0
  36. package/dist/flow-guard-decode.js.map +1 -0
  37. package/dist/flow-guard-destinations.d.ts +23 -0
  38. package/dist/flow-guard-destinations.d.ts.map +1 -0
  39. package/dist/flow-guard-destinations.js +158 -0
  40. package/dist/flow-guard-destinations.js.map +1 -0
  41. package/dist/flow-guard-fingerprints.d.ts +27 -0
  42. package/dist/flow-guard-fingerprints.d.ts.map +1 -0
  43. package/dist/flow-guard-fingerprints.js +164 -0
  44. package/dist/flow-guard-fingerprints.js.map +1 -0
  45. package/dist/flow-guard-fragments.d.ts +17 -0
  46. package/dist/flow-guard-fragments.d.ts.map +1 -0
  47. package/dist/flow-guard-fragments.js +122 -0
  48. package/dist/flow-guard-fragments.js.map +1 -0
  49. package/dist/flow-guard-instructions.d.ts +12 -0
  50. package/dist/flow-guard-instructions.d.ts.map +1 -0
  51. package/dist/flow-guard-instructions.js +36 -0
  52. package/dist/flow-guard-instructions.js.map +1 -0
  53. package/dist/flow-guard-labels.d.ts +10 -0
  54. package/dist/flow-guard-labels.d.ts.map +1 -0
  55. package/dist/flow-guard-labels.js +55 -0
  56. package/dist/flow-guard-labels.js.map +1 -0
  57. package/dist/flow-guard-leak.d.ts +29 -0
  58. package/dist/flow-guard-leak.d.ts.map +1 -0
  59. package/dist/flow-guard-leak.js +135 -0
  60. package/dist/flow-guard-leak.js.map +1 -0
  61. package/dist/flow-guard-paths.d.ts +21 -0
  62. package/dist/flow-guard-paths.d.ts.map +1 -0
  63. package/dist/flow-guard-paths.js +72 -0
  64. package/dist/flow-guard-paths.js.map +1 -0
  65. package/dist/flow-guard-policy.d.ts +15 -0
  66. package/dist/flow-guard-policy.d.ts.map +1 -0
  67. package/dist/flow-guard-policy.js +179 -0
  68. package/dist/flow-guard-policy.js.map +1 -0
  69. package/dist/flow-guard-post.d.ts +6 -0
  70. package/dist/flow-guard-post.d.ts.map +1 -0
  71. package/dist/flow-guard-post.js +131 -0
  72. package/dist/flow-guard-post.js.map +1 -0
  73. package/dist/flow-guard-pre.d.ts +13 -0
  74. package/dist/flow-guard-pre.d.ts.map +1 -0
  75. package/dist/flow-guard-pre.js +335 -0
  76. package/dist/flow-guard-pre.js.map +1 -0
  77. package/dist/flow-guard-screen.d.ts +85 -0
  78. package/dist/flow-guard-screen.d.ts.map +1 -0
  79. package/dist/flow-guard-screen.js +558 -0
  80. package/dist/flow-guard-screen.js.map +1 -0
  81. package/dist/flow-guard-state.d.ts +12 -0
  82. package/dist/flow-guard-state.d.ts.map +1 -0
  83. package/dist/flow-guard-state.js +129 -0
  84. package/dist/flow-guard-state.js.map +1 -0
  85. package/dist/flow-guard-text.d.ts +9 -0
  86. package/dist/flow-guard-text.d.ts.map +1 -0
  87. package/dist/flow-guard-text.js +46 -0
  88. package/dist/flow-guard-text.js.map +1 -0
  89. package/dist/flow-guard-types.d.ts +162 -0
  90. package/dist/flow-guard-types.d.ts.map +1 -0
  91. package/dist/flow-guard-types.js +2 -0
  92. package/dist/flow-guard-types.js.map +1 -0
  93. package/dist/flow-guard.d.ts +22 -394
  94. package/dist/flow-guard.d.ts.map +1 -1
  95. package/dist/flow-guard.js +27 -2522
  96. package/dist/flow-guard.js.map +1 -1
  97. package/dist/histor.js.map +1 -1
  98. package/dist/index.d.ts +4 -0
  99. package/dist/index.d.ts.map +1 -1
  100. package/dist/index.js +2 -0
  101. package/dist/index.js.map +1 -1
  102. package/dist/jcs.d.ts.map +1 -1
  103. package/dist/jcs.js.map +1 -1
  104. package/dist/mcp-client.d.ts +1 -2
  105. package/dist/mcp-client.d.ts.map +1 -1
  106. package/dist/mcp-client.js +2 -19
  107. package/dist/mcp-client.js.map +1 -1
  108. package/dist/mcp-rpc.js.map +1 -1
  109. package/dist/mcp-tools.d.ts.map +1 -1
  110. package/dist/mcp-tools.js.map +1 -1
  111. package/dist/mtl.d.ts +1 -1
  112. package/dist/mtl.d.ts.map +1 -1
  113. package/dist/mtl.js.map +1 -1
  114. package/dist/origin.d.ts.map +1 -1
  115. package/dist/pin-store.d.ts.map +1 -1
  116. package/dist/pin-store.js.map +1 -1
  117. package/dist/pinning.d.ts.map +1 -1
  118. package/dist/pinning.js.map +1 -1
  119. package/dist/public-address.d.ts +3 -0
  120. package/dist/public-address.d.ts.map +1 -0
  121. package/dist/public-address.js +58 -0
  122. package/dist/public-address.js.map +1 -0
  123. package/dist/review-diff.d.ts +3 -3
  124. package/dist/review-diff.d.ts.map +1 -1
  125. package/dist/review-diff.js +3 -5
  126. package/dist/review-diff.js.map +1 -1
  127. package/dist/sandbox.d.ts.map +1 -1
  128. package/dist/sanitize.js.map +1 -1
  129. package/dist/scan-lock.d.ts.map +1 -1
  130. package/dist/scan-lock.js.map +1 -1
  131. package/dist/scan.d.ts.map +1 -1
  132. package/dist/scan.js.map +1 -1
  133. package/dist/static-scan.d.ts.map +1 -1
  134. package/dist/static-scan.js.map +1 -1
  135. package/dist/task-adapter.d.ts.map +1 -1
  136. package/dist/task-adapter.js.map +1 -1
  137. package/dist/threat-feed.d.ts.map +1 -1
  138. package/dist/threat-feed.js.map +1 -1
  139. package/dist/tool-list.js.map +1 -1
  140. package/dist/toxic-flow.js.map +1 -1
  141. package/dist/wrap-cli.d.ts +1 -1
  142. package/dist/wrap-cli.d.ts.map +1 -1
  143. package/dist/wrap-cli.js +2 -1
  144. package/dist/wrap-cli.js.map +1 -1
  145. package/dist/wrap-screen.js.map +1 -1
  146. package/dist/wrap-state.d.ts +3 -1
  147. package/dist/wrap-state.d.ts.map +1 -1
  148. package/dist/wrap-state.js +18 -3
  149. package/dist/wrap-state.js.map +1 -1
  150. package/dist/wrap-wire.d.ts.map +1 -1
  151. package/dist/wrap-wire.js.map +1 -1
  152. package/dist/wrap.d.ts.map +1 -1
  153. package/dist/wrap.js +45 -7
  154. package/dist/wrap.js.map +1 -1
  155. package/docs/flow-guard-answer-gate.es.md +53 -0
  156. package/docs/flow-guard-answer-gate.fr.md +53 -0
  157. package/docs/flow-guard-answer-gate.md +86 -0
  158. package/docs/flow-guard-answer-gate.ru.md +53 -0
  159. package/docs/flow-guard-answer-gate.zh.md +53 -0
  160. package/docs/flow-guard-constraint-evidence.es.md +76 -0
  161. package/docs/flow-guard-constraint-evidence.fr.md +76 -0
  162. package/docs/flow-guard-constraint-evidence.md +78 -0
  163. package/docs/flow-guard-constraint-evidence.ru.md +78 -0
  164. package/docs/flow-guard-constraint-evidence.zh.md +76 -0
  165. package/docs/flow-guard-final-witness-2026-10-26.es.md +24 -0
  166. package/docs/flow-guard-final-witness-2026-10-26.fr.md +24 -0
  167. package/docs/flow-guard-final-witness-2026-10-26.md +24 -0
  168. package/docs/flow-guard-final-witness-2026-10-26.ru.md +24 -0
  169. package/docs/flow-guard-final-witness-2026-10-26.zh.md +24 -0
  170. package/docs/flow-guard-fresh-rechecks-2026-10-26.es.md +39 -0
  171. package/docs/flow-guard-fresh-rechecks-2026-10-26.fr.md +39 -0
  172. package/docs/flow-guard-fresh-rechecks-2026-10-26.md +39 -0
  173. package/docs/flow-guard-fresh-rechecks-2026-10-26.ru.md +39 -0
  174. package/docs/flow-guard-fresh-rechecks-2026-10-26.zh.md +39 -0
  175. package/docs/flow-guard-model-comparison-2026-10-25.es.md +109 -0
  176. package/docs/flow-guard-model-comparison-2026-10-25.fr.md +109 -0
  177. package/docs/flow-guard-model-comparison-2026-10-25.md +109 -0
  178. package/docs/flow-guard-model-comparison-2026-10-25.ru.md +109 -0
  179. package/docs/flow-guard-model-comparison-2026-10-25.zh.md +109 -0
  180. package/docs/flow-guard-prospective-holdout-2026-10-26.es.md +30 -0
  181. package/docs/flow-guard-prospective-holdout-2026-10-26.fr.md +30 -0
  182. package/docs/flow-guard-prospective-holdout-2026-10-26.md +44 -0
  183. package/docs/flow-guard-prospective-holdout-2026-10-26.ru.md +44 -0
  184. package/docs/flow-guard-prospective-holdout-2026-10-26.zh.md +30 -0
  185. package/docs/flow-guard-review-factors-2026-10-26.es.md +41 -0
  186. package/docs/flow-guard-review-factors-2026-10-26.fr.md +41 -0
  187. package/docs/flow-guard-review-factors-2026-10-26.md +45 -0
  188. package/docs/flow-guard-review-factors-2026-10-26.ru.md +45 -0
  189. package/docs/flow-guard-review-factors-2026-10-26.zh.md +41 -0
  190. package/docs/flow-guard-structured-model-2026-10-26.es.md +35 -0
  191. package/docs/flow-guard-structured-model-2026-10-26.fr.md +35 -0
  192. package/docs/flow-guard-structured-model-2026-10-26.md +44 -0
  193. package/docs/flow-guard-structured-model-2026-10-26.ru.md +46 -0
  194. package/docs/flow-guard-structured-model-2026-10-26.zh.md +35 -0
  195. package/docs/flow-guard.es.md +54 -4
  196. package/docs/flow-guard.fr.md +54 -4
  197. package/docs/flow-guard.md +61 -4
  198. package/docs/flow-guard.ru.md +60 -4
  199. package/docs/flow-guard.zh.md +54 -4
  200. package/docs/scan-limits.es.md +39 -0
  201. package/docs/scan-limits.fr.md +39 -0
  202. package/docs/scan-limits.md +39 -0
  203. package/docs/scan-limits.ru.md +39 -0
  204. package/docs/scan-limits.zh.md +39 -0
  205. package/docs/scan.es.md +2 -0
  206. package/docs/scan.fr.md +2 -0
  207. package/docs/scan.md +2 -0
  208. package/docs/scan.ru.md +2 -0
  209. package/docs/scan.zh.md +2 -0
  210. package/examples/answer-gate-host.mjs +33 -0
  211. package/native/macos/Sources/WardenDesktop/NativeSurface.swift +1 -1
  212. package/package.json +6 -5
@@ -0,0 +1 @@
1
+ {"version":3,"file":"flow-guard-screen.js","sourceRoot":"","sources":["../src/flow-guard-screen.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ import type { FlowState } from './flow-guard-types.js';
2
+ import { flowPaths } from './flow-guard-paths.js';
3
+ export declare const EMPTY: FlowState;
4
+ export declare function readFlowState(path: string): FlowState;
5
+ export declare function updateFlowState(path: string, change: (s: FlowState) => void): FlowState;
6
+ export declare function appendFp(path: string, fps: readonly string[]): boolean;
7
+ export declare function log(paths: ReturnType<typeof flowPaths>, entry: Record<string, unknown>): void;
8
+ export declare function safeToolName(name: string): string;
9
+ /** Display correlation only, never a pin or authority. No server-authored words. */
10
+ export declare function warningSourceId(name: string): string;
11
+ export declare function flowStateExists(sessionId: string, env?: NodeJS.ProcessEnv): boolean;
12
+ //# sourceMappingURL=flow-guard-state.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"flow-guard-state.d.ts","sourceRoot":"","sources":["../src/flow-guard-state.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,SAAS,EAAkB,MAAM,uBAAuB,CAAC;AACvE,OAAO,EAAE,SAAS,EAAwB,MAAM,uBAAuB,CAAC;AASxE,eAAO,MAAM,KAAK,EAAE,SAA8E,CAAC;AAEnG,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,CA4BrD;AA0BD,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,CAAC,EAAE,SAAS,KAAK,IAAI,GAAG,SAAS,CASvF;AAED,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,EAAE,SAAS,MAAM,EAAE,GAAG,OAAO,CAOtE;AAED,wBAAgB,GAAG,CAAC,KAAK,EAAE,UAAU,CAAC,OAAO,SAAS,CAAC,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAK7F;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEjD;AAED,oFAAoF;AACpF,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAEpD;AAED,wBAAgB,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,OAAO,CAEhG"}
@@ -0,0 +1,129 @@
1
+ /** Flow guard: per-session state under a lock, fingerprint files and the session log. */
2
+ import { appendFileSync, closeSync, existsSync, mkdirSync, openSync, readFileSync, renameSync, statSync, unlinkSync, writeFileSync } from 'node:fs';
3
+ import { flowPaths, stateDir, sessionKey } from './flow-guard-paths.js';
4
+ import { MAX_TEXT } from './flow-guard-text.js';
5
+ import { secretPattern } from './flow-guard-fingerprints.js';
6
+ import { MAX_FRAGMENT_INDEX, MAX_FRAGMENT_SEEN, SHORT_SIZES } from './flow-guard-fragments.js';
7
+ const MAX_SOURCES = 20;
8
+ const MAX_PRIVATE = 50;
9
+ const MAX_FP_BYTES = 32 * 1_048_576;
10
+ export const EMPTY = { v: 1, untrusted: [], private: [], notified: false, full: false };
11
+ export function readFlowState(path) {
12
+ try {
13
+ const s = JSON.parse(readFileSync(path, 'utf8'));
14
+ if (!s || s.v !== 1 || !Array.isArray(s.untrusted) || !Array.isArray(s.private))
15
+ throw new Error('invalid flow state');
16
+ if (s.credentialRead !== undefined && s.credentialRead !== true || s.credentialGrants !== undefined && (!Array.isArray(s.credentialGrants) || s.credentialGrants.length > 32 || !s.credentialGrants.every(v => typeof v === 'string' && /^[0-9a-f]{64}$/.test(v))))
17
+ throw new Error('invalid credential egress state');
18
+ if (s.answerReview !== undefined) {
19
+ const review = s.answerReview;
20
+ if (!review || !Number.isSafeInteger(review.turn) || review.turn < 1 || typeof review.discloseInstruction !== 'boolean' || !Array.isArray(review.sources) || review.sources.length > 4 ||
21
+ !review.sources.every(source => typeof source === 'string' && /^source-[0-9a-f]{16}$/.test(source)) || review.factsSha256 !== undefined && (typeof review.factsSha256 !== 'string' || !/^[0-9a-f]{64}$/.test(review.factsSha256)))
22
+ throw new Error('invalid answer review state');
23
+ if (review.constraintViolations !== undefined && (!Number.isSafeInteger(review.constraintViolations) || review.constraintViolations < 0 || review.constraintViolations > 2064))
24
+ throw new Error('invalid answer review constraints');
25
+ }
26
+ if (s.fragments !== undefined) {
27
+ const f = s.fragments;
28
+ if (!f || ![1, 2].includes(f.v))
29
+ throw new Error('invalid fragment state');
30
+ const valid = (r) => {
31
+ if (!r || typeof r.group !== 'string' || !/^[0-9a-f]{32}$/.test(r.group) || typeof r.hash !== 'string' || !/^[0-9a-f]{32}$/.test(r.hash) ||
32
+ !Number.isSafeInteger(r.offset) || r.offset < 0 || r.offset > MAX_TEXT || r.edge !== undefined && r.edge !== true)
33
+ return false;
34
+ if (f.v === 1)
35
+ return r.size === undefined || Number.isSafeInteger(r.size) && r.size >= 1 && r.size <= 64;
36
+ return typeof r.size === 'number' && Number.isSafeInteger(r.size) && (r.edge ? r.size >= 5 && r.size <= 64 : SHORT_SIZES.includes(r.size));
37
+ };
38
+ if (!Array.isArray(f.index) || f.index.length > MAX_FRAGMENT_INDEX || !f.index.every(valid) ||
39
+ !Array.isArray(f.seen) || f.seen.length > MAX_FRAGMENT_SEEN || !f.seen.every(valid) || f.full !== undefined && f.full !== true)
40
+ throw new Error('invalid fragment state');
41
+ }
42
+ return s;
43
+ }
44
+ catch (err) {
45
+ if (err.code === 'ENOENT')
46
+ return { ...EMPTY, untrusted: [], private: [] };
47
+ throw new Error('flow state cannot be read safely');
48
+ }
49
+ }
50
+ function withLock(path, action) {
51
+ const lock = `${path}.lock`;
52
+ let fd;
53
+ const deadline = Date.now() + 3000;
54
+ while (fd === undefined) {
55
+ try {
56
+ fd = openSync(lock, 'wx', 0o600);
57
+ }
58
+ catch (err) {
59
+ if (err.code !== 'EEXIST')
60
+ throw err;
61
+ // A lock older than 10 s is a crashed hook: take it over rather than wedge the session.
62
+ try {
63
+ if (Date.now() - statSync(lock).mtimeMs > 10_000)
64
+ unlinkSync(lock);
65
+ }
66
+ catch { /* raced */ }
67
+ if (Date.now() > deadline)
68
+ throw new Error('flow state is locked');
69
+ const until = Date.now() + 15;
70
+ while (Date.now() < until) { /* short spin; hooks are short-lived */ }
71
+ }
72
+ }
73
+ try {
74
+ return action();
75
+ }
76
+ finally {
77
+ closeSync(fd);
78
+ try {
79
+ unlinkSync(lock);
80
+ }
81
+ catch { /* gone */ }
82
+ }
83
+ }
84
+ function writeAtomic(path, value) {
85
+ const temp = `${path}.${process.pid}.${Date.now()}.tmp`;
86
+ writeFileSync(temp, JSON.stringify(value), { mode: 0o600 });
87
+ renameSync(temp, path);
88
+ }
89
+ export function updateFlowState(path, change) {
90
+ return withLock(path, () => {
91
+ const s = readFlowState(path);
92
+ change(s);
93
+ s.untrusted = s.untrusted.slice(-MAX_SOURCES);
94
+ s.private = s.private.slice(-MAX_PRIVATE);
95
+ writeAtomic(path, s);
96
+ return s;
97
+ });
98
+ }
99
+ export function appendFp(path, fps) {
100
+ if (!fps.length)
101
+ return true;
102
+ let size = 0;
103
+ try {
104
+ size = statSync(path).size;
105
+ }
106
+ catch { /* new */ }
107
+ if (size > MAX_FP_BYTES)
108
+ return false;
109
+ appendFileSync(path, fps.join('\n') + '\n', { mode: 0o600 });
110
+ return true;
111
+ }
112
+ export function log(paths, entry) {
113
+ try {
114
+ mkdirSync(paths.dir, { recursive: true, mode: 0o700 });
115
+ appendFileSync(paths.log, JSON.stringify({ at: new Date().toISOString(), ...entry }) + '\n', { mode: 0o600 });
116
+ }
117
+ catch { /* best effort */ }
118
+ }
119
+ export function safeToolName(name) {
120
+ return /^[A-Za-z0-9_.:-]{1,100}$/.test(name) && !secretPattern([name]) ? name : '[unrecognized tool name]';
121
+ }
122
+ /** Display correlation only, never a pin or authority. No server-authored words. */
123
+ export function warningSourceId(name) {
124
+ return `source-${sessionKey(name).slice(0, 16)}`;
125
+ }
126
+ export function flowStateExists(sessionId, env = process.env) {
127
+ return existsSync(flowPaths(stateDir(env), sessionId).state);
128
+ }
129
+ //# sourceMappingURL=flow-guard-state.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"flow-guard-state.js","sourceRoot":"","sources":["../src/flow-guard-state.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ /** Flow guard: the text a call carries or a result returns, and the hosts named in it. */
2
+ export declare const MAX_TEXT = 1048576;
3
+ export declare function strings(value: unknown, out?: string[], budget?: {
4
+ left: number;
5
+ omitBinary?: boolean;
6
+ }): string[];
7
+ export declare function responseStrings(value: unknown): string[];
8
+ export declare function hostsIn(texts: readonly string[]): string[];
9
+ //# sourceMappingURL=flow-guard-text.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"flow-guard-text.d.ts","sourceRoot":"","sources":["../src/flow-guard-text.ts"],"names":[],"mappings":"AAAA,0FAA0F;AAE1F,eAAO,MAAM,QAAQ,UAAY,CAAC;AAElC,wBAAgB,OAAO,CAAC,KAAK,EAAE,OAAO,EAAE,GAAG,GAAE,MAAM,EAAO,EAAE,MAAM,GAAE;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,OAAO,CAAA;CAAuB,GAAG,MAAM,EAAE,CAgBzI;AAKD,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,EAAE,CAExD;AAGD,wBAAgB,OAAO,CAAC,KAAK,EAAE,SAAS,MAAM,EAAE,GAAG,MAAM,EAAE,CAM1D"}
@@ -0,0 +1,46 @@
1
+ /** Flow guard: the text a call carries or a result returns, and the hosts named in it. */
2
+ export const MAX_TEXT = 1_048_576;
3
+ export function strings(value, out = [], budget = { left: MAX_TEXT }) {
4
+ if (budget.left <= 0)
5
+ return out;
6
+ if (typeof value === 'string') {
7
+ out.push(value.slice(0, budget.left));
8
+ budget.left -= value.length;
9
+ }
10
+ else if (Array.isArray(value)) {
11
+ // Explicit numeric arrays are another spelling of character codes. Never stringify arbitrary objects.
12
+ if (value.length >= 5 && value.length <= 4096 && value.every(v => typeof v === 'number' && Number.isSafeInteger(v)))
13
+ strings(value.join(' '), out, budget);
14
+ else
15
+ for (const v of value)
16
+ strings(v, out, budget);
17
+ }
18
+ else if (value && typeof value === 'object') {
19
+ const o = value;
20
+ for (const [key, v] of Object.entries(o)) {
21
+ if (budget.omitBinary && key === 'data' && (o.type === 'image' || o.type === 'audio'))
22
+ continue;
23
+ strings(v, out, budget);
24
+ }
25
+ }
26
+ return out;
27
+ }
28
+ // MCP binary blocks are not text. Their base64 must not exhaust the text budget before a screen's labels,
29
+ // titles or JSON text blocks are read. Arguments still use strings() without this exemption: an outgoing
30
+ // credential disguised as an image's data is still a credential leaving the session.
31
+ export function responseStrings(value) {
32
+ return strings(value, [], { left: MAX_TEXT, omitBinary: true });
33
+ }
34
+ const URL_RE = /\b(?:https?|ftp|wss?):\/\/[^\s<>"']+/gi;
35
+ export function hostsIn(texts) {
36
+ const hosts = new Set();
37
+ for (const t of texts)
38
+ for (const m of t.matchAll(URL_RE)) {
39
+ try {
40
+ hosts.add(new URL(m[0]).hostname.toLowerCase().replace(/\.$/, ''));
41
+ }
42
+ catch { /* an invalid URL grants no host permission */ }
43
+ }
44
+ return [...hosts];
45
+ }
46
+ //# sourceMappingURL=flow-guard-text.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"flow-guard-text.js","sourceRoot":"","sources":["../src/flow-guard-text.ts"],"names":[],"mappings":"AAAA,0FAA0F;AAE1F,MAAM,CAAC,MAAM,QAAQ,GAAG,SAAS,CAAC;AAElC,MAAM,UAAU,OAAO,CAAC,KAAc,EAAE,GAAG,GAAa,EAAE,EAAE,MAAM,GAA2C,EAAE,IAAI,EAAE,QAAQ,EAAE;IAC7H,IAAI,MAAM,CAAC,IAAI,IAAI,CAAC;QAAE,OAAO,GAAG,CAAC;IACjC,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAAC,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;QAAC,MAAM,CAAC,IAAI,IAAI,KAAK,CAAC,MAAM,CAAC;IAAC,CAAC;SACjG,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QAC9B,sGAAsG;QACtG,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC,IAAI,KAAK,CAAC,MAAM,IAAI,IAAI,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,IAAI,MAAM,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC;YAAE,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;;YACtJ,KAAK,MAAM,CAAC,IAAI,KAAK;gBAAE,OAAO,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;IACtD,CAAC;SACI,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC5C,MAAM,CAAC,GAAG,KAAgC,CAAC;QAC3C,KAAK,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC;YACzC,IAAI,MAAM,CAAC,UAAU,IAAI,GAAG,KAAK,MAAM,IAAI,CAAC,CAAC,CAAC,IAAI,KAAK,OAAO,IAAI,CAAC,CAAC,IAAI,KAAK,OAAO,CAAC;gBAAE,SAAS;YAChG,OAAO,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;QAC1B,CAAC;IACH,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,0GAA0G;AAC1G,yGAAyG;AACzG,qFAAqF;AACrF,MAAM,UAAU,eAAe,CAAC,KAAc;IAC5C,OAAO,OAAO,CAAC,KAAK,EAAE,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC;AAClE,CAAC;AAED,MAAM,MAAM,GAAG,wCAAwC,CAAC;AACxD,MAAM,UAAU,OAAO,CAAC,KAAwB;IAC9C,MAAM,KAAK,GAAG,IAAI,GAAG,EAAU,CAAC;IAChC,KAAK,MAAM,CAAC,IAAI,KAAK;QAAE,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;YAC1D,IAAI,CAAC;gBAAC,KAAK,CAAC,GAAG,CAAC,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC;YAAC,CAAC;YAAC,MAAM,CAAC,CAAC,8CAA8C,CAAC,CAAC;QACtI,CAAC;IACD,OAAO,CAAC,GAAG,KAAK,CAAC,CAAC;AACpB,CAAC"}
@@ -0,0 +1,162 @@
1
+ /** Flow guard: the policy, per-session state and decision types every part shares. */
2
+ import type { ScreenView } from './flow-guard-screen.js';
3
+ export type FlowLabel = 'private' | 'untrusted' | 'outbound' | 'destructive';
4
+ export type FlowMode = 'ask' | 'deny' | 'audit' | 'off';
5
+ /** When the Stop hook tells the user that an answer drew on outside text. */
6
+ export type AnswerNote = 'always' | 'instruction' | 'off';
7
+ export interface GuiActionRule {
8
+ /** Exact MCP tool name; no globs. */
9
+ tool: string;
10
+ action: 'click' | 'type' | 'key';
11
+ target: {
12
+ role: string;
13
+ accessibilityId: string;
14
+ };
15
+ /** At least one scope is required; both, when present, must match. */
16
+ context: {
17
+ origin?: string;
18
+ application?: string;
19
+ };
20
+ /** One supported navigation chord, required for key rules. */
21
+ keys?: string;
22
+ /** Required for type rules, measured in UTF-16 code units. */
23
+ maxTextLength?: number;
24
+ }
25
+ export interface GuiPolicy {
26
+ mode: 'strict' | 'policy';
27
+ maxSnapshotAgeMs: number;
28
+ allow: GuiActionRule[];
29
+ /** Parser diagnostic, not a configurable field. */
30
+ invalid?: true;
31
+ }
32
+ export interface PublicRequestRule {
33
+ tool: string;
34
+ requestSha256: string;
35
+ }
36
+ export interface CredentialEgressPolicy {
37
+ allow: PublicRequestRule[];
38
+ invalid?: true;
39
+ }
40
+ export interface TaskAdapterPolicy {
41
+ mode: 'strict' | 'capabilities' | 'review';
42
+ /** Operator-controlled MCP server name, bound to WARDEN's built-in `task` command. */
43
+ server: string;
44
+ /** Pins <state dir>/task-manifest.json, never a page-supplied manifest. */
45
+ manifestSha256: string;
46
+ invalid?: true;
47
+ }
48
+ export interface FlowPolicy {
49
+ mode: FlowMode;
50
+ /** Opt-in first-use review of server-authored MCP annotations; never a permission grant. */
51
+ annotationReview?: 'off' | 'first-use';
52
+ /** Tool-name globs → the labels an operator assigns; replaces the built-in guess for that tool. */
53
+ labels: Record<string, FlowLabel[]>;
54
+ /** Hosts whose content does not taint the session (docs you trust). `*.example.com` covers subdomains. */
55
+ trustedSources: string[];
56
+ /** Hosts an outbound call may reach in a tainted session without asking. Fingerprint checks and the credential boundary still apply. */
57
+ allowedDestinations: string[];
58
+ /** Treat every local file the agent reads as outside text (strict). Default: only foreign paths. */
59
+ taintLocalFiles: boolean;
60
+ /** Tool-name globs → argument names whose values are destinations or targets (recipient, file id). */
61
+ destinationArgs: Record<string, string[]>;
62
+ /** Explicitly trusted, read-only contact lookup tools. Results must contain structured name/email records. */
63
+ contactTools?: string[];
64
+ /** Stop hook: name the outside text a turn read (always), only text that addressed the model (instruction), or stay silent. */
65
+ answerNote: AnswerNote;
66
+ /** Legacy schema, parsed for migration only. Untrusted GUI metadata never grants permission. */
67
+ gui?: GuiPolicy;
68
+ /** Reviewed exact public requests, each usable once per session after a credential read. */
69
+ credentialEgress?: CredentialEgressPolicy;
70
+ taskAdapter?: TaskAdapterPolicy;
71
+ }
72
+ export interface FlowSource {
73
+ tool: string;
74
+ src: string;
75
+ at: string; /** The text addressed the model as if instructing it. */
76
+ hint?: boolean; /** The user's prompt count when it was read. */
77
+ turn?: number;
78
+ }
79
+ /** The last characters each argument sent out this session, so a value split over several calls is seen whole. */
80
+ export interface OutTail {
81
+ t: string;
82
+ a: string;
83
+ }
84
+ export interface FragmentRecord {
85
+ group: string;
86
+ hash: string;
87
+ offset: number;
88
+ size?: number;
89
+ edge?: true;
90
+ }
91
+ export interface FlowState {
92
+ v: 1;
93
+ untrusted: FlowSource[];
94
+ private: Array<FlowSource & {
95
+ secret: boolean;
96
+ }>;
97
+ notified: boolean;
98
+ /** Fingerprint store reached its cap: later private reads are not fingerprinted. */
99
+ full: boolean;
100
+ /** What the user typed this session (normalized, capped): a destination named here is the user's choice. */
101
+ intent?: string[];
102
+ /** The same, lower-cased with spacing kept, for whole-word matches of short names and numbers. */
103
+ intentRaw?: string[];
104
+ /** Addresses resolved by explicitly trusted contact tools, bound to full display names. */
105
+ resolved?: Array<{
106
+ v: string;
107
+ names: string[];
108
+ }>;
109
+ resolvedVersion?: 2;
110
+ /** Per argument name: the tail of what outbound calls carried after outside text (see OutTail). */
111
+ tails?: Record<string, OutTail>;
112
+ /** Hash-only short-fragment index and observations, shared by every proxy in this session. */
113
+ fragments?: {
114
+ v: 1 | 2;
115
+ index: FragmentRecord[];
116
+ seen: FragmentRecord[];
117
+ full?: true;
118
+ };
119
+ /** How many prompts the user has sent: the Stop hook names only outside text read in the latest turn. */
120
+ turn?: number;
121
+ /** MCP tools seen without an operator label, with the labels the guard guessed (`warden-mcp flow-labels`). */
122
+ unlabeled?: Record<string, FlowLabel[]>;
123
+ /** Per MCP server: what its latest screen result showed, so a click is judged by its target (see ScreenView). */
124
+ screens?: Record<string, ScreenView>;
125
+ /** A forwarded input/paste may have populated an outbound form. Never reset within the session. */
126
+ guiInputSeen?: true;
127
+ /** Sticky even when the bounded private-source history rotates. */
128
+ credentialRead?: true;
129
+ /** Exact public-request grants already consumed; never reset by prompts. */
130
+ credentialGrants?: string[];
131
+ /** Guard-authored review receipt; sources are opaque IDs, never source-authored text. */
132
+ answerReview?: {
133
+ turn: number;
134
+ sources: string[];
135
+ discloseInstruction: boolean;
136
+ factsSha256?: string;
137
+ constraintViolations?: number;
138
+ };
139
+ }
140
+ export interface Classified {
141
+ labels: Set<FlowLabel>;
142
+ /** Hosts named in the call (URLs, ssh/scp targets). */
143
+ hosts: string[];
144
+ /** For results: a short description of where the text came from. */
145
+ src: string;
146
+ /** Private read of a credential path. */
147
+ secret: boolean;
148
+ /** The call writes WARDEN's policy/state or Claude Code's hook/MCP settings. */
149
+ protectedTouch: boolean;
150
+ /** Shell code that is not a small literal read-only command. Destination exemptions never apply. */
151
+ opaqueShell?: boolean;
152
+ /** An MCP tool without an operator label: its labels are the guard's guess. */
153
+ guessed?: boolean;
154
+ }
155
+ export interface FlowDecision {
156
+ permissionDecision: 'ask' | 'deny';
157
+ permissionDecisionReason: string;
158
+ }
159
+ /** Set by the integration, never by tool arguments. A proxy cannot display an approval dialog itself; `elicit` is
160
+ * `wrap` asking through the client's own form (MCP elicitation), whose answer it records with flowApproval. */
161
+ export type FlowPresentation = 'hook' | 'refuse' | 'audit' | 'elicit';
162
+ //# sourceMappingURL=flow-guard-types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"flow-guard-types.d.ts","sourceRoot":"","sources":["../src/flow-guard-types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=flow-guard-types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"flow-guard-types.js","sourceRoot":"","sources":["../src/flow-guard-types.ts"],"names":[],"mappings":""}