auditreach-cli 0.1.1 → 0.1.3

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 CHANGED
@@ -163,8 +163,10 @@ Search a platform using its official API only.
163
163
  | `--before <fullname>` | page results before this Reddit fullname cursor, e.g. `t3_abc123` (Reddit only) |
164
164
  | `--after <fullname>` | page results after this Reddit fullname cursor, e.g. `t3_abc123` (Reddit only) |
165
165
  | `--output <path>` | write full results JSON to this path |
166
+ | `--json` | print structured JSON to stdout instead of human-readable output, for scripts and agent callers |
166
167
 
167
168
  node dist/cli.js search --platform reddit --query "agent memory poisoning" --subreddit MachineLearning --max-results 50
169
+ node dist/cli.js search --platform reddit --query "agent memory poisoning" --json | jq '.results | length'
168
170
 
169
171
  ### `auditreach auth`
170
172
 
@@ -175,6 +177,7 @@ Set up, verify, or clear BYOK credentials for a platform (stored in your OS keyc
175
177
  | `--platform <platform>` | `reddit` \| `youtube` (required) |
176
178
  | `--clear` | delete stored credentials for this platform |
177
179
  | `--verify` | verify stored credentials are valid without running a search (no results file, no audit-log entry) |
180
+ | `--json` | print structured JSON to stdout instead of human-readable output |
178
181
 
179
182
  node dist/cli.js auth --platform reddit --verify
180
183
 
@@ -272,7 +275,7 @@ No generated API docs site exists yet (no TypeDoc build wired into CI) -- the ex
272
275
  | Reddit | 25 | 100 |
273
276
  | YouTube | 25 | 50 |
274
277
 
275
- Values above the cap are silently clamped to it. For Reddit, `--before`/`--after` let you page past a single call's results using the real cursor Reddit's own response returns (see [Success stories](#success-stories)); YouTube has no equivalent yet. Whenever the number of items returned equals the limit that was actually applied, whether that is the silent default or an explicit `--max-results` value, auditreach prints a warning to stderr telling you more results may exist and how to raise `--max-results` (up to the platform cap).
278
+ Values above the cap are silently clamped to it. For Reddit, `--before`/`--after` let you page through a search's result set using the real cursor Reddit's own response returns, up to Reddit's own ~1,000-item search cap (see [Success stories](#success-stories) for why cursor pagination alone can't go further than that); YouTube has no equivalent yet. Whenever the number of items returned equals the limit that was actually applied, whether that is the silent default or an explicit `--max-results` value, auditreach prints a warning to stderr telling you more results may exist and how to raise `--max-results` (up to the platform cap).
276
279
 
277
280
  ## What is a "consent basis," honestly
278
281
 
@@ -287,7 +290,7 @@ No. Credentials go straight into your OS keychain through `@napi-rs/keyring` (`s
287
290
  25, silently, unless you pass `--max-results` -- see [Result limits](#result-limits). The hard cap is 100 for Reddit and 50 for YouTube. A stderr warning fires whenever a search actually hits the applied limit, whether that's the silent default or an explicit value you passed.
288
291
 
289
292
  **Can I page past Reddit's result cap?**
290
- Yes, for Reddit: `search()` reads the real `after`/`before` cursor out of Reddit's own response and exposes `--before`/`--after` flags to page in either direction. See the [praw#614 success story](#success-stories) for why this exists.
293
+ Yes, for Reddit, up to a point: `search()` reads the real `after`/`before` cursor out of Reddit's own response and exposes `--before`/`--after` flags to page in either direction through a search's result set. It does not get you past Reddit's own ~1,000-item search cap -- see the [praw#614 success story](#success-stories) for what that fix actually covers and doesn't.
291
294
 
292
295
  **Does auditreach support X (Twitter)?**
293
296
  Not yet. X API v2's pricing and post-volume caps have been prohibitive for small teams doing real research since the 2023 changes. See [Platform coverage](#platform-coverage) for the full reasoning.
@@ -330,10 +333,14 @@ auditreach's own source and used to close genuine gaps in this tool before it ha
330
333
  single outside user. Each line below is tied to the actual report that prompted it.
331
334
 
332
335
  - **[praw#614](https://github.com/praw-dev/praw/issues/614)** (@mananwason) -- asked how
333
- to read the before/after pagination cursor off Reddit's search response to page past
334
- its ~1,000-result cap; PRAW itself never solved this. `search()` now extracts the real
335
- cursor from Reddit's response and returns it as `SearchOutcome.nextCursor`, plus
336
- `--before`/`--after` flags to page in either direction.
336
+ to page past Reddit's ~1,000-result search cap. The real fix is narrower than that:
337
+ Reddit's own API returns no before/after cursor at all once you're past that cap,
338
+ cursor-based paging or not -- confirmed directly in the issue thread. What `search()`
339
+ actually does now is extract the real cursor from Reddit's response
340
+ (`SearchOutcome.nextCursor`) and expose `--before`/`--after` flags so you can page
341
+ through the results within a single search's capped result set, instead of only ever
342
+ seeing the first page. Going past the 1,000-item cap itself needs cloudsearch
343
+ timestamp-window re-querying, which isn't built yet.
337
344
  - **[praw#1939](https://github.com/praw-dev/praw/issues/1939)** (@Auditormadness9) -- hit
338
345
  an undiagnosed 400 error caused by a subreddit name that still carried a leading `r/`
339
346
  prefix. Search errors now name that specific cause when it's the likely culprit:
package/dist/cli.js CHANGED
@@ -1,11 +1,17 @@
1
1
  #!/usr/bin/env node
2
+ import { readFileSync } from "node:fs";
3
+ import { fileURLToPath } from "node:url";
4
+ import { dirname, join } from "node:path";
2
5
  import { Command } from "commander";
3
6
  import { runSearchCommand } from "./commands/search.js";
4
7
  import { runAuthCommand } from "./commands/auth.js";
5
8
  import { runVerifyLogCommand } from "./commands/verify-log.js";
6
9
  import { DEFAULT_LIMIT as REDDIT_DEFAULT_LIMIT, MAX_LIMIT as REDDIT_MAX_LIMIT, } from "./clients/reddit-client.js";
7
10
  import { MAX_MAX_RESULTS as YOUTUBE_MAX_MAX_RESULTS } from "./clients/youtube-client.js";
8
- const VERSION = "0.1.0";
11
+ // Read the real published version from package.json instead of a hand-maintained
12
+ // literal, which previously drifted out of sync with every release after 0.1.0.
13
+ const __dirname = dirname(fileURLToPath(import.meta.url));
14
+ const { version: VERSION } = JSON.parse(readFileSync(join(__dirname, "..", "package.json"), "utf8"));
9
15
  function assertPlatform(value) {
10
16
  if (value !== "reddit" && value !== "youtube") {
11
17
  console.error(`Unsupported platform "${value}". Supported in v0.1: reddit, youtube.`);
@@ -36,6 +42,7 @@ program
36
42
  .option("--before <fullname>", "page results before this Reddit fullname cursor, e.g. t3_abc123 (reddit only)")
37
43
  .option("--after <fullname>", "page results after this Reddit fullname cursor, e.g. t3_abc123 (reddit only)")
38
44
  .option("--output <path>", "write full results JSON to this path")
45
+ .option("--json", "print a single structured JSON object to stdout instead of human-readable text (for scripts and agents)")
39
46
  .action(async (opts) => {
40
47
  assertPlatform(opts.platform);
41
48
  await runSearchCommand({
@@ -48,6 +55,7 @@ program
48
55
  before: opts.before,
49
56
  after: opts.after,
50
57
  output: opts.output,
58
+ json: opts.json,
51
59
  });
52
60
  });
53
61
  program
@@ -56,16 +64,23 @@ program
56
64
  .requiredOption("--platform <platform>", "reddit | youtube")
57
65
  .option("--clear", "delete stored credentials for this platform")
58
66
  .option("--verify", "verify stored credentials are valid without running a search (no results file, no audit-log entry)")
67
+ .option("--json", "with --verify, print a structured JSON result instead of human-readable text (for scripts and agents)")
59
68
  .action(async (opts) => {
60
69
  assertPlatform(opts.platform);
61
- await runAuthCommand({ platform: opts.platform, clear: opts.clear, verify: opts.verify });
70
+ await runAuthCommand({
71
+ platform: opts.platform,
72
+ clear: opts.clear,
73
+ verify: opts.verify,
74
+ json: opts.json,
75
+ });
62
76
  });
63
77
  program
64
78
  .command("verify-log")
65
79
  .description("Verify the local hash-chained audit log has not been tampered with")
66
80
  .option("--path <path>", "path to the audit log file")
81
+ .option("--json", "print a structured JSON result instead of human-readable text (for scripts and agents)")
67
82
  .action(async (opts) => {
68
- await runVerifyLogCommand({ path: opts.path });
83
+ await runVerifyLogCommand({ path: opts.path, json: opts.json });
69
84
  });
70
85
  program.parseAsync(process.argv).catch((error) => {
71
86
  console.error(error instanceof Error ? error.message : String(error));
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"reddit-client.d.ts","sourceRoot":"","sources":["../../src/clients/reddit-client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AACrE,OAAO,KAAK,EAAE,mBAAmB,EAAE,aAAa,EAAoB,MAAM,aAAa,CAAC;AAQxF,eAAO,MAAM,aAAa,KAAK,CAAC;AAChC,eAAO,MAAM,SAAS,MAAM,CAAC;AA0C7B;;;;GAIG;AACH,qBAAa,YAAY;IACvB,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAoB;IAChD,OAAO,CAAC,WAAW,CAAuB;IAC1C,OAAO,CAAC,cAAc,CAAK;gBAEf,WAAW,EAAE,iBAAiB;YAI5B,cAAc;IAoC5B;;;;;OAKG;IACH,OAAO,CAAC,qBAAqB;IAQ7B;;;;;;OAMG;IACG,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC;IAMlC,MAAM,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,aAAa,CAAC;CAiFnE"}
1
+ {"version":3,"file":"reddit-client.d.ts","sourceRoot":"","sources":["../../src/clients/reddit-client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,6BAA6B,CAAC;AACrE,OAAO,KAAK,EAAE,mBAAmB,EAAE,aAAa,EAAoB,MAAM,aAAa,CAAC;AAQxF,eAAO,MAAM,aAAa,KAAK,CAAC;AAChC,eAAO,MAAM,SAAS,MAAM,CAAC;AA0C7B;;;;GAIG;AACH,qBAAa,YAAY;IACvB,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAoB;IAChD,OAAO,CAAC,WAAW,CAAuB;IAC1C,OAAO,CAAC,cAAc,CAAK;gBAEf,WAAW,EAAE,iBAAiB;YAI5B,cAAc;IAoC5B;;;;;OAKG;IACH,OAAO,CAAC,qBAAqB;IAQ7B;;;;;;OAMG;IACG,iBAAiB,IAAI,OAAO,CAAC,IAAI,CAAC;IAMlC,MAAM,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,aAAa,CAAC;CAsFnE"}
@@ -91,9 +91,13 @@ export class RedditClient {
91
91
  }
92
92
  // Reddit's search listing endpoint accepts standard Listing pagination
93
93
  // cursors (before/after, Reddit "fullname" ids e.g. "t3_abc123"). These
94
- // let a caller page past the ~1000-result search cap by walking the
95
- // listing forward/backward from a known item instead of relying on
96
- // offset-based paging, which Reddit's search API does not support.
94
+ // walk forward/backward through a search's result set instead of relying
95
+ // on offset-based paging, which Reddit's search API does not support.
96
+ // They do NOT let a caller retrieve results beyond Reddit's ~1,000-item
97
+ // search cap -- past that point Reddit's API returns no before/after
98
+ // cursor at all, cursor-based paging or not (confirmed directly in the
99
+ // praw#614 thread this fix is based on). Getting past the 1,000-item cap
100
+ // requires cloudsearch timestamp-window re-querying, not implemented yet.
97
101
  if (options.before) {
98
102
  params.set("before", options.before);
99
103
  }
@@ -140,9 +144,10 @@ export class RedditClient {
140
144
  items,
141
145
  // Cursors read back from Reddit's own response (not an echo of the
142
146
  // request params above) -- feed `nextCursor.after` into the next
143
- // call's `--after`/`options.after` to walk forward through results
144
- // past the ~1000-result search cap, and `nextCursor.before` to walk
145
- // backward. This is the piece praw#614 was actually stuck on.
147
+ // call's `--after`/`options.after` to walk forward through the
148
+ // current search's result set, and `nextCursor.before` to walk
149
+ // backward. This does not extend past Reddit's ~1,000-item search
150
+ // cap -- see the note above search() for why.
146
151
  nextCursor: {
147
152
  after: listing.data.after ?? null,
148
153
  before: listing.data.before ?? null,
@@ -1 +1 @@
1
- {"version":3,"file":"reddit-client.js","sourceRoot":"","sources":["../../src/clients/reddit-client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"reddit-client.js","sourceRoot":"","sources":["../../src/clients/reddit-client.ts"],"names":[],"mappings":"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"}
@@ -3,6 +3,7 @@ export interface AuthCommandArgs {
3
3
  platform: Platform;
4
4
  clear?: boolean;
5
5
  verify?: boolean;
6
+ json?: boolean;
6
7
  }
7
8
  export declare function runAuthCommand(args: AuthCommandArgs): Promise<void>;
8
9
  //# sourceMappingURL=auth.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../src/commands/auth.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAE5C,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,QAAQ,CAAC;IACnB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;AAED,wBAAsB,cAAc,CAAC,IAAI,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CAqCzE"}
1
+ {"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../src/commands/auth.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AAE5C,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,QAAQ,CAAC;IACnB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,wBAAsB,cAAc,CAAC,IAAI,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC,CAqCzE"}
@@ -8,7 +8,7 @@ export async function runAuthCommand(args) {
8
8
  return;
9
9
  }
10
10
  if (args.verify) {
11
- await verifyCredentials(args.platform);
11
+ await verifyCredentials(args.platform, Boolean(args.json));
12
12
  return;
13
13
  }
14
14
  if (args.platform === "reddit") {
@@ -53,38 +53,47 @@ async function clearCredentials(platform) {
53
53
  * requires --query, never writes a results file, and never appends an
54
54
  * audit-log entry -- it only reports whether the stored credentials work.
55
55
  */
56
- async function verifyCredentials(platform) {
57
- if (platform === "reddit") {
58
- const credentials = getRedditCredentials();
59
- if (!credentials) {
60
- console.error('No Reddit credentials found. Run "auditreach auth --platform reddit" first.');
61
- process.exitCode = 1;
62
- return;
63
- }
64
- try {
56
+ async function verifyCredentials(platform, json) {
57
+ try {
58
+ if (platform === "reddit") {
59
+ const credentials = getRedditCredentials();
60
+ if (!credentials) {
61
+ report(json, platform, false, 'No Reddit credentials found. Run "auditreach auth --platform reddit" first.');
62
+ process.exitCode = 1;
63
+ return;
64
+ }
65
65
  await new RedditClient(credentials).verifyCredentials();
66
- console.log("Reddit credentials are valid.");
67
66
  }
68
- catch (error) {
69
- console.error(`Reddit credential check failed: ${error instanceof Error ? error.message : String(error)}`);
70
- process.exitCode = 1;
67
+ else {
68
+ const credentials = getYoutubeCredentials();
69
+ if (!credentials) {
70
+ report(json, platform, false, 'No YouTube credentials found. Run "auditreach auth --platform youtube" first.');
71
+ process.exitCode = 1;
72
+ return;
73
+ }
74
+ await new YoutubeClient(credentials).verifyCredentials();
71
75
  }
76
+ report(json, platform, true);
77
+ }
78
+ catch (error) {
79
+ const message = error instanceof Error ? error.message : String(error);
80
+ report(json, platform, false, `${capitalize(platform)} credential check failed: ${message}`);
81
+ process.exitCode = 1;
82
+ }
83
+ }
84
+ function report(json, platform, valid, error) {
85
+ if (json) {
86
+ process.stdout.write(`${JSON.stringify({ platform, valid, error: error ?? null }, null, 2)}\n`);
87
+ return;
88
+ }
89
+ if (valid) {
90
+ console.log(`${capitalize(platform)} credentials are valid.`);
72
91
  }
73
92
  else {
74
- const credentials = getYoutubeCredentials();
75
- if (!credentials) {
76
- console.error('No YouTube credentials found. Run "auditreach auth --platform youtube" first.');
77
- process.exitCode = 1;
78
- return;
79
- }
80
- try {
81
- await new YoutubeClient(credentials).verifyCredentials();
82
- console.log("YouTube credentials are valid.");
83
- }
84
- catch (error) {
85
- console.error(`YouTube credential check failed: ${error instanceof Error ? error.message : String(error)}`);
86
- process.exitCode = 1;
87
- }
93
+ console.error(error);
88
94
  }
89
95
  }
96
+ function capitalize(value) {
97
+ return value.charAt(0).toUpperCase() + value.slice(1);
98
+ }
90
99
  //# sourceMappingURL=auth.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/commands/auth.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"auth.js","sourceRoot":"","sources":["../../src/commands/auth.ts"],"names":[],"mappings":"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"}
@@ -9,6 +9,7 @@ export interface SearchCommandArgs {
9
9
  before?: string;
10
10
  after?: string;
11
11
  output?: string;
12
+ json?: boolean;
12
13
  }
13
14
  export declare function runSearchCommand(args: SearchCommandArgs): Promise<void>;
14
15
  //# sourceMappingURL=search.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../src/commands/search.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,QAAQ,EAAiB,MAAM,aAAa,CAAC;AAE3D,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,QAAQ,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CAmE7E"}
1
+ {"version":3,"file":"search.d.ts","sourceRoot":"","sources":["../../src/commands/search.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,QAAQ,EAAiB,MAAM,aAAa,CAAC;AAE3D,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,QAAQ,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CA4F7E"}
@@ -45,7 +45,9 @@ export async function runSearchCommand(args) {
45
45
  });
46
46
  fingerprintSource = credentials.apiKey;
47
47
  }
48
- printResults(outcome);
48
+ if (!args.json) {
49
+ printResults(outcome);
50
+ }
49
51
  const outputPath = args.output ?? defaultOutputPath();
50
52
  await writeFile(outputPath, JSON.stringify(outcome.items, null, 2), "utf8");
51
53
  const prevHash = await getLastEntryHash();
@@ -61,6 +63,22 @@ export async function runSearchCommand(args) {
61
63
  results_returned: outcome.items.length,
62
64
  prev_entry_hash: prevHash,
63
65
  });
66
+ if (args.json) {
67
+ process.stdout.write(`${JSON.stringify({
68
+ platform: outcome.platform,
69
+ endpoint: outcome.endpoint,
70
+ queryParams: outcome.queryParams,
71
+ authScope: outcome.authScope,
72
+ consentBasis: outcome.consentBasis,
73
+ items: outcome.items,
74
+ nextCursor: outcome.nextCursor ?? null,
75
+ truncated: isTruncated(outcome),
76
+ auditLogEntryId: entry.entry_id,
77
+ resultsFile: outputPath,
78
+ auditLogFile: "./auditreach.log.jsonl",
79
+ }, null, 2)}\n`);
80
+ return;
81
+ }
64
82
  console.log(`\nAudit log entry written: ${entry.entry_id}`);
65
83
  console.log(`Consent basis: ${entry.consent_basis}`);
66
84
  console.log(`Full results: ${outputPath}`);
@@ -93,19 +111,24 @@ function printResults(outcome) {
93
111
  warnIfTruncated(outcome);
94
112
  }
95
113
  function warnIfTruncated(outcome) {
96
- const appliedLimit = outcome.platform === "reddit" ? outcome.queryParams.limit : outcome.queryParams.maxResults;
97
- if (typeof appliedLimit !== "number" || outcome.items.length < appliedLimit) {
114
+ if (!isTruncated(outcome)) {
98
115
  return;
99
116
  }
117
+ const appliedLimit = outcome.platform === "reddit" ? outcome.queryParams.limit : outcome.queryParams.maxResults;
100
118
  const cap = outcome.platform === "reddit" ? REDDIT_MAX_LIMIT : YOUTUBE_MAX_MAX_RESULTS;
101
119
  const platformName = capitalize(outcome.platform);
102
- if (appliedLimit < cap) {
120
+ if (typeof appliedLimit === "number" && appliedLimit < cap) {
103
121
  console.error(`\nWarning: returned exactly ${outcome.items.length} results, the limit applied for this search -- more results may exist. Pass --max-results <n> (up to ${cap} for ${platformName}) to request more.`);
104
122
  }
105
123
  else {
106
124
  console.error(`\nWarning: returned exactly ${outcome.items.length} results, ${platformName}'s per-request maximum -- more results may exist beyond what a single search call can return.`);
107
125
  }
108
126
  }
127
+ /** True when the result count exactly hits the applied limit, meaning more results may exist beyond what this single call returned. Shared by the human-readable warning and the --json `truncated` field so both reflect the same signal. */
128
+ function isTruncated(outcome) {
129
+ const appliedLimit = outcome.platform === "reddit" ? outcome.queryParams.limit : outcome.queryParams.maxResults;
130
+ return typeof appliedLimit === "number" && outcome.items.length >= appliedLimit;
131
+ }
109
132
  function capitalize(value) {
110
133
  return value.charAt(0).toUpperCase() + value.slice(1);
111
134
  }
@@ -1 +1 @@
1
- {"version":3,"file":"search.js","sourceRoot":"","sources":["../../src/commands/search.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"search.js","sourceRoot":"","sources":["../../src/commands/search.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,6 @@
1
1
  export interface VerifyLogCommandArgs {
2
2
  path?: string;
3
+ json?: boolean;
3
4
  }
4
5
  export declare function runVerifyLogCommand(args: VerifyLogCommandArgs): Promise<void>;
5
6
  //# sourceMappingURL=verify-log.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"verify-log.d.ts","sourceRoot":"","sources":["../../src/commands/verify-log.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,oBAAoB;IACnC,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,wBAAsB,mBAAmB,CAAC,IAAI,EAAE,oBAAoB,GAAG,OAAO,CAAC,IAAI,CAAC,CAmBnF"}
1
+ {"version":3,"file":"verify-log.d.ts","sourceRoot":"","sources":["../../src/commands/verify-log.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,oBAAoB;IACnC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAED,wBAAsB,mBAAmB,CAAC,IAAI,EAAE,oBAAoB,GAAG,OAAO,CAAC,IAAI,CAAC,CA6BnF"}
@@ -2,8 +2,17 @@ import { verifyAuditLogChain } from "../audit-log/chain-verifier.js";
2
2
  import { DEFAULT_AUDIT_LOG_PATH } from "../audit-log/hash-chain-writer.js";
3
3
  export async function runVerifyLogCommand(args) {
4
4
  const logPath = args.path ?? DEFAULT_AUDIT_LOG_PATH;
5
- console.log(`Verifying ${logPath}...`);
5
+ if (!args.json) {
6
+ console.log(`Verifying ${logPath}...`);
7
+ }
6
8
  const result = await verifyAuditLogChain(logPath);
9
+ if (!result.valid) {
10
+ process.exitCode = 1;
11
+ }
12
+ if (args.json) {
13
+ process.stdout.write(`${JSON.stringify({ logPath, ...result }, null, 2)}\n`);
14
+ return;
15
+ }
7
16
  if (result.totalEntries === 0) {
8
17
  console.log("No entries yet -- nothing to verify.");
9
18
  return;
@@ -13,7 +22,6 @@ export async function runVerifyLogCommand(args) {
13
22
  }
14
23
  else {
15
24
  console.error(`✗ Chain broken at entry ${result.brokenAtIndex} (${result.brokenAtEntryId ?? "unknown"}): ${result.reason}`);
16
- process.exitCode = 1;
17
25
  }
18
26
  }
19
27
  //# sourceMappingURL=verify-log.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"verify-log.js","sourceRoot":"","sources":["../../src/commands/verify-log.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AACrE,OAAO,EAAE,sBAAsB,EAAE,MAAM,mCAAmC,CAAC;AAM3E,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,IAA0B;IAClE,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,IAAI,sBAAsB,CAAC;IACpD,OAAO,CAAC,GAAG,CAAC,aAAa,OAAO,KAAK,CAAC,CAAC;IAEvC,MAAM,MAAM,GAAG,MAAM,mBAAmB,CAAC,OAAO,CAAC,CAAC;IAElD,IAAI,MAAM,CAAC,YAAY,KAAK,CAAC,EAAE,CAAC;QAC9B,OAAO,CAAC,GAAG,CAAC,sCAAsC,CAAC,CAAC;QACpD,OAAO;IACT,CAAC;IAED,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;QACjB,OAAO,CAAC,GAAG,CAAC,mBAAmB,MAAM,CAAC,YAAY,2CAA2C,CAAC,CAAC;IACjG,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,KAAK,CACX,2BAA2B,MAAM,CAAC,aAAa,KAAK,MAAM,CAAC,eAAe,IAAI,SAAS,MAAM,MAAM,CAAC,MAAM,EAAE,CAC7G,CAAC;QACF,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;IACvB,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"verify-log.js","sourceRoot":"","sources":["../../src/commands/verify-log.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,gCAAgC,CAAC;AACrE,OAAO,EAAE,sBAAsB,EAAE,MAAM,mCAAmC,CAAC;AAO3E,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,IAA0B;IAClE,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,IAAI,sBAAsB,CAAC;IACpD,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;QACf,OAAO,CAAC,GAAG,CAAC,aAAa,OAAO,KAAK,CAAC,CAAC;IACzC,CAAC;IAED,MAAM,MAAM,GAAG,MAAM,mBAAmB,CAAC,OAAO,CAAC,CAAC;IAElD,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;QAClB,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;IACvB,CAAC;IAED,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC;QACd,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,GAAG,MAAM,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;QAC7E,OAAO;IACT,CAAC;IAED,IAAI,MAAM,CAAC,YAAY,KAAK,CAAC,EAAE,CAAC;QAC9B,OAAO,CAAC,GAAG,CAAC,sCAAsC,CAAC,CAAC;QACpD,OAAO;IACT,CAAC;IAED,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;QACjB,OAAO,CAAC,GAAG,CAAC,mBAAmB,MAAM,CAAC,YAAY,2CAA2C,CAAC,CAAC;IACjG,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,KAAK,CACX,2BAA2B,MAAM,CAAC,aAAa,KAAK,MAAM,CAAC,eAAe,IAAI,SAAS,MAAM,MAAM,CAAC,MAAM,EAAE,CAC7G,CAAC;IACJ,CAAC;AACH,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "auditreach-cli",
3
- "version": "0.1.1",
3
+ "version": "0.1.3",
4
4
  "description": "Official-API-only, BYOK CLI for researching Reddit and YouTube with your own API keys and a tamper-evident, hash-chained audit log -- built for AI agents and compliance teams that can't rely on cookie-based scraping or shared credential pools.",
5
5
  "type": "module",
6
6
  "bin": {