whatileaked 0.3.1 → 0.4.0

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 (3) hide show
  1. package/README.md +11 -0
  2. package/dist/cli.js +17 -0
  3. package/package.json +1 -1
package/README.md CHANGED
@@ -105,6 +105,17 @@ same credential always produces the same code, so two rows sharing a code are
105
105
  one key you reused in two places, and two different codes are two different
106
106
  keys.
107
107
 
108
+ ### Sharing it
109
+
110
+ The last line of every scan is made only of counts — no project, path, rule or
111
+ fingerprint — so it is the part you can paste or screenshot anywhere:
112
+
113
+ ```
114
+ whatileaked: 3 credentials sent to a model provider, across 561 transcripts.
115
+ ```
116
+
117
+ A clean scan ends the same way, with `no credentials`.
118
+
108
119
  ---
109
120
 
110
121
  ## Is it a real key, or just a test fixture?
package/dist/cli.js CHANGED
@@ -162,6 +162,7 @@ var TerminalReporter = class {
162
162
  this.#write(green("No credentials found."));
163
163
  this.#write("");
164
164
  this.#write(dim(DISCLOSURE));
165
+ this.#share(sent, stats);
165
166
  return;
166
167
  }
167
168
  for (const total of totals) {
@@ -196,6 +197,22 @@ var TerminalReporter = class {
196
197
  this.#write(dim("Some findings will be test fixtures \u2014 open the file to tell."));
197
198
  this.#write("");
198
199
  this.#write(dim(DISCLOSURE));
200
+ this.#share(sent, stats);
201
+ }
202
+ /**
203
+ * The one line meant to be pasted somewhere public. Everything above it names
204
+ * projects, paths and fingerprints, so nobody shares it; this is counts only,
205
+ * and stays that way. It is last so a screenshot can crop to it, unstyled so
206
+ * a copy carries nothing but the words, and it repeats the headline's
207
+ * transmitted-only count for the same reason the headline keeps memory files
208
+ * out of it.
209
+ */
210
+ #share(sent, stats) {
211
+ const credentials = sent === 0 ? "no credentials" : plural(sent, "credential");
212
+ this.#write("");
213
+ this.#write(
214
+ `whatileaked: ${credentials} sent to a model provider, across ${plural(stats.transcripts, "transcript")}.`
215
+ );
199
216
  }
200
217
  };
201
218
  function count(value) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "whatileaked",
3
- "version": "0.3.1",
3
+ "version": "0.4.0",
4
4
  "description": "Scan your local Claude Code, Codex and Cursor transcripts for credentials you already sent to a model provider.",
5
5
  "type": "module",
6
6
  "imports": {