{"version":3,"file":"fingerprint.d.ts","sourceRoot":"","sources":["../../../src/core/storm/fingerprint.ts"],"names":[],"mappings":"AAEA;;;;;;;;;;;GAWG;AACH,MAAM,WAAW,oBAAoB;IACpC,QAAQ,EAAE,MAAM,CAAC;IACjB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,8CAA8C;AAC9C,wBAAgB,eAAe,CAAC,KAAK,EAAE,oBAAoB,GAAG,MAAM,CAOnE","sourcesContent":["import { stableHash } from \"../tool-call/canonicalize.js\";\n\n/**\n * Canonical call fingerprint for storm detection.\n *\n * Fingerprint basis:\n *  - tool identity\n *  - normalized canonical arguments (stable hash)\n *  - a relevant fixed execution context (workspace id / run scope)\n *\n * Deliberately EXCLUDES volatile ids (provider tool-call ids, timestamps) that\n * would defeat duplicate detection. The fingerprint is NOT consulted when the\n * authoritative context changed (see StormBreaker#classify).\n */\nexport interface CallFingerprintInput {\n\ttoolName: string;\n\tcanonicalArgsHash: string;\n\tworkspaceScope?: string;\n\trunScope?: string;\n}\n\n/** Stable, replay-safe fingerprint string. */\nexport function fingerprintCall(input: CallFingerprintInput): string {\n\treturn stableHash({\n\t\tt: input.toolName,\n\t\ta: input.canonicalArgsHash,\n\t\tw: input.workspaceScope ?? \"\",\n\t\tr: input.runScope ?? \"\",\n\t});\n}\n"]}