@bouncesecurity/aghast 0.1.0 → 0.3.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 (68) hide show
  1. package/README.md +14 -19
  2. package/config/prompts/false-positive-validation.md +58 -0
  3. package/config/prompts/general-vuln-discovery.md +94 -0
  4. package/config/prompts/generic-instructions.md +2 -0
  5. package/dist/check-library.d.ts.map +1 -1
  6. package/dist/check-library.js +57 -7
  7. package/dist/check-library.js.map +1 -1
  8. package/dist/check-types.d.ts +35 -0
  9. package/dist/check-types.d.ts.map +1 -0
  10. package/dist/check-types.js +66 -0
  11. package/dist/check-types.js.map +1 -0
  12. package/dist/claude-code-provider.d.ts +4 -1
  13. package/dist/claude-code-provider.d.ts.map +1 -1
  14. package/dist/claude-code-provider.js +18 -8
  15. package/dist/claude-code-provider.js.map +1 -1
  16. package/dist/discoveries/openant-discovery.d.ts +10 -0
  17. package/dist/discoveries/openant-discovery.d.ts.map +1 -0
  18. package/dist/discoveries/openant-discovery.js +44 -0
  19. package/dist/discoveries/openant-discovery.js.map +1 -0
  20. package/dist/discoveries/sarif-discovery.d.ts +9 -0
  21. package/dist/discoveries/sarif-discovery.d.ts.map +1 -0
  22. package/dist/discoveries/sarif-discovery.js +54 -0
  23. package/dist/discoveries/sarif-discovery.js.map +1 -0
  24. package/dist/discoveries/semgrep-discovery.d.ts +9 -0
  25. package/dist/discoveries/semgrep-discovery.d.ts.map +1 -0
  26. package/dist/discoveries/semgrep-discovery.js +51 -0
  27. package/dist/discoveries/semgrep-discovery.js.map +1 -0
  28. package/dist/discovery.d.ts +74 -0
  29. package/dist/discovery.d.ts.map +1 -0
  30. package/dist/discovery.js +41 -0
  31. package/dist/discovery.js.map +1 -0
  32. package/dist/error-codes.d.ts +3 -1
  33. package/dist/error-codes.d.ts.map +1 -1
  34. package/dist/error-codes.js +4 -1
  35. package/dist/error-codes.js.map +1 -1
  36. package/dist/index.d.ts.map +1 -1
  37. package/dist/index.js +124 -30
  38. package/dist/index.js.map +1 -1
  39. package/dist/logging.d.ts +108 -8
  40. package/dist/logging.d.ts.map +1 -1
  41. package/dist/logging.js +269 -43
  42. package/dist/logging.js.map +1 -1
  43. package/dist/mock-ai-provider.d.ts +4 -1
  44. package/dist/mock-ai-provider.d.ts.map +1 -1
  45. package/dist/mock-ai-provider.js +4 -1
  46. package/dist/mock-ai-provider.js.map +1 -1
  47. package/dist/new-check.d.ts +3 -3
  48. package/dist/new-check.d.ts.map +1 -1
  49. package/dist/new-check.js +161 -52
  50. package/dist/new-check.js.map +1 -1
  51. package/dist/openant-loader.d.ts +105 -0
  52. package/dist/openant-loader.d.ts.map +1 -0
  53. package/dist/openant-loader.js +135 -0
  54. package/dist/openant-loader.js.map +1 -0
  55. package/dist/openant-runner.d.ts +22 -0
  56. package/dist/openant-runner.d.ts.map +1 -0
  57. package/dist/openant-runner.js +102 -0
  58. package/dist/openant-runner.js.map +1 -0
  59. package/dist/runtime-config.d.ts.map +1 -1
  60. package/dist/runtime-config.js +15 -0
  61. package/dist/runtime-config.js.map +1 -1
  62. package/dist/scan-runner.d.ts.map +1 -1
  63. package/dist/scan-runner.js +181 -142
  64. package/dist/scan-runner.js.map +1 -1
  65. package/dist/types.d.ts +26 -2
  66. package/dist/types.d.ts.map +1 -1
  67. package/dist/types.js.map +1 -1
  68. package/package.json +9 -9
package/dist/index.js CHANGED
@@ -10,13 +10,15 @@ import { createProviderByName, getProviderNames, DEFAULT_PROVIDER_NAME } from '.
10
10
  import { loadCheckRegistry, discoverCheckFolders, resolveChecks, filterChecksForRepository, validateCheck, loadCheckDetails, } from './check-library.js';
11
11
  import { analyzeRepository } from './repository-analyzer.js';
12
12
  import { loadRuntimeConfig } from './runtime-config.js';
13
- import { logProgress, logDebug, setLogLevel, createTimer } from './logging.js';
13
+ import { logProgress, logDebug, setLogLevel, createTimer, isValidLogLevel, initFileHandler, closeAllHandlers, getAvailableLogTypes } from './logging.js';
14
14
  import { MOCK_MODEL_NAME, DEFAULT_AI_MODEL } from './types.js';
15
15
  import { getFormatter } from './formatters/index.js';
16
16
  import { verifySemgrepInstalled } from './semgrep-runner.js';
17
+ import { verifyOpenAntInstalled } from './openant-runner.js';
17
18
  import { MockAIProvider } from './mock-ai-provider.js';
18
19
  import { ERROR_CODES, formatError, formatFatalError } from './error-codes.js';
19
20
  import { colorStatus } from './colors.js';
21
+ import { getCheckType } from './check-types.js';
20
22
  import { createRequire } from 'node:module';
21
23
  const TAG = 'aghast';
22
24
  async function createMockProvider() {
@@ -42,7 +44,7 @@ Run security checks against a repository.
42
44
  Arguments:
43
45
  <repo-path> Path to the repository to scan
44
46
 
45
- Options:
47
+ General options:
46
48
  --config-dir <path> Config directory containing checks-config.json,
47
49
  checks/ folder, and optionally runtime-config.json.
48
50
  Required unless AGHAST_CONFIG_DIR is set.
@@ -50,13 +52,16 @@ Options:
50
52
  (default: <repo-path>/security_checks_results.<ext>)
51
53
  --output-format json|sarif Output format (default: json)
52
54
  --fail-on-check-failure Exit with code 1 if any check FAILs or ERRORs
53
- --debug Enable verbose debug output
55
+ --debug Shorthand for --log-level debug
56
+ --log-level <level> Console log level: error, warn, info, debug, trace
57
+ (default: info)
58
+ --log-file <path> Write all log output to a file (always at trace level
59
+ unless overridden by --log-type)
60
+ --log-type <type> Log file handler type (default: file).
61
+ Available types: file
54
62
  --model <model> AI model override (e.g. claude-sonnet-4-20250514)
55
63
  --ai-provider <name> AI provider name (default: claude-code)
56
64
  --generic-prompt <file> Generic prompt template filename in prompts/ dir
57
- --runtime-config <path> Path to runtime config file (replaces individual flags
58
- for persistent configuration)
59
- -h, --help Show this help message
60
65
 
61
66
  Environment variables:
62
67
  ANTHROPIC_API_KEY API key for Claude (required for AI-based checks)
@@ -64,28 +69,38 @@ Environment variables:
64
69
  AGHAST_AI_MODEL AI model override (CLI --model takes precedence)
65
70
  AGHAST_GENERIC_PROMPT Generic prompt template filename (CLI --generic-prompt takes precedence)
66
71
  AGHAST_DEBUG Set to "true" to enable debug output (same as --debug)
72
+ AGHAST_LOG_LEVEL Console log level (CLI --log-level takes precedence)
73
+ AGHAST_LOG_FILE Log file path (CLI --log-file takes precedence)
74
+ AGHAST_LOG_TYPE Log file handler type (CLI --log-type takes precedence)
67
75
 
68
76
  Examples:
69
77
  aghast scan ./my-repo --config-dir ./my-checks
70
78
  aghast scan ./my-repo --config-dir ./my-checks --output results.sarif --output-format sarif
71
79
  aghast scan ./my-repo --config-dir ./my-checks --fail-on-check-failure --debug
80
+ aghast scan ./my-repo --config-dir ./my-checks --log-file scan.log --log-level warn
72
81
  aghast scan ./my-repo --config-dir ./my-checks --model claude-sonnet-4-20250514`;
73
82
  function parseArgs(args) {
74
83
  if (args.length < 1 || args[0] === '--help' || args[0] === '-h') {
75
84
  console.log(SCAN_HELP);
76
85
  process.exit(0);
77
86
  }
78
- const repositoryPath = resolve(args[0]);
87
+ // First positional arg is repo-path
88
+ const firstArg = args[0];
89
+ const repositoryPath = firstArg && !firstArg.startsWith('--') ? resolve(firstArg) : undefined;
90
+ const startIdx = repositoryPath ? 1 : 0;
79
91
  let configDir;
80
92
  let outputFormat;
81
93
  let outputPath;
82
94
  const failOnCheckFailure = args.includes('--fail-on-check-failure');
83
95
  const debug = args.includes('--debug');
96
+ let logLevel;
97
+ let logFile;
98
+ let logType;
84
99
  let runtimeConfigPath;
85
100
  let model;
86
101
  let aiProvider;
87
102
  let genericPrompt;
88
- for (let i = 1; i < args.length; i++) {
103
+ for (let i = startIdx; i < args.length; i++) {
89
104
  switch (args[i]) {
90
105
  case '--config-dir': {
91
106
  configDir = args[i + 1];
@@ -153,13 +168,41 @@ function parseArgs(args) {
153
168
  i++;
154
169
  break;
155
170
  }
171
+ case '--log-level': {
172
+ logLevel = args[i + 1];
173
+ if (!logLevel) {
174
+ console.error(formatError(ERROR_CODES.E1001, '--log-level requires a level argument (error, warn, info, debug, trace)'));
175
+ process.exit(1);
176
+ }
177
+ i++;
178
+ break;
179
+ }
180
+ case '--log-file': {
181
+ logFile = args[i + 1];
182
+ if (!logFile) {
183
+ console.error(formatError(ERROR_CODES.E1001, '--log-file requires a path argument'));
184
+ process.exit(1);
185
+ }
186
+ logFile = resolve(logFile);
187
+ i++;
188
+ break;
189
+ }
190
+ case '--log-type': {
191
+ logType = args[i + 1];
192
+ if (!logType) {
193
+ console.error(formatError(ERROR_CODES.E1001, '--log-type requires a type argument'));
194
+ process.exit(1);
195
+ }
196
+ i++;
197
+ break;
198
+ }
156
199
  // --fail-on-check-failure and --debug are handled above via includes()
157
200
  }
158
201
  }
159
202
  return {
160
203
  repositoryPath, configDir, outputPath, outputFormat,
161
- failOnCheckFailure, debug, runtimeConfigPath, model, aiProvider,
162
- genericPrompt,
204
+ failOnCheckFailure, debug, logLevel, logFile, logType,
205
+ runtimeConfigPath, model, aiProvider, genericPrompt,
163
206
  };
164
207
  }
165
208
  async function createProvider(useMock, aiProviderName, modelOverride) {
@@ -233,9 +276,30 @@ export async function runScan(args) {
233
276
  console.error(formatError(ERROR_CODES.E2005, err instanceof Error ? err.message : String(err)));
234
277
  process.exit(1);
235
278
  }
236
- // Set log level: --debug flag or AGHAST_DEBUG env var enables debug
279
+ // Resolve log level: --log-level > AGHAST_LOG_LEVEL > runtime config > --debug/AGHAST_DEBUG > default
237
280
  const debug = parsed.debug || process.env.AGHAST_DEBUG === 'true';
238
- setLogLevel(debug ? 'debug' : 'info');
281
+ const resolvedLogLevel = parsed.logLevel ?? (process.env.AGHAST_LOG_LEVEL || undefined) ?? runtimeConfig.logging?.level ?? (debug ? 'debug' : 'info');
282
+ if (resolvedLogLevel !== 'silent' && !isValidLogLevel(resolvedLogLevel)) {
283
+ console.error(formatError(ERROR_CODES.E1001, `Invalid log level "${resolvedLogLevel}". Valid levels: error, warn, info, debug, trace`));
284
+ process.exit(1);
285
+ }
286
+ setLogLevel(resolvedLogLevel);
287
+ // Resolve log file: --log-file > AGHAST_LOG_FILE > runtime config
288
+ const resolvedLogFile = parsed.logFile ?? (process.env.AGHAST_LOG_FILE || undefined) ?? (runtimeConfig.logging?.logFile ? resolve(runtimeConfig.logging.logFile) : undefined);
289
+ if (resolvedLogFile) {
290
+ const resolvedLogType = parsed.logType ?? (process.env.AGHAST_LOG_TYPE || undefined) ?? runtimeConfig.logging?.logType ?? 'file';
291
+ const availableTypes = getAvailableLogTypes();
292
+ if (!availableTypes.includes(resolvedLogType)) {
293
+ console.error(formatError(ERROR_CODES.E1001, `Unknown log type "${resolvedLogType}". Available types: ${availableTypes.join(', ')}`));
294
+ process.exit(1);
295
+ }
296
+ initFileHandler(resolve(resolvedLogFile), resolvedLogType);
297
+ }
298
+ // Resolve repository path — required
299
+ if (!parsed.repositoryPath) {
300
+ console.error(formatError(ERROR_CODES.E1003, '<repo-path> is required'));
301
+ process.exit(1);
302
+ }
239
303
  // Validate repository path exists and is a directory
240
304
  try {
241
305
  const repoStat = await stat(parsed.repositoryPath);
@@ -273,8 +337,9 @@ export async function runScan(args) {
273
337
  }
274
338
  const allChecks = await resolveChecks(registry, checkFolders);
275
339
  // Analyze repository to get remote URL for check filtering
276
- const repoAnalysis = await analyzeRepository(parsed.repositoryPath);
277
- const repoUrl = repoAnalysis.repository.remoteUrl ?? parsed.repositoryPath;
340
+ const effectiveRepoPath = parsed.repositoryPath;
341
+ const repoAnalysis = await analyzeRepository(effectiveRepoPath);
342
+ const repoUrl = repoAnalysis?.repository.remoteUrl ?? effectiveRepoPath;
278
343
  const matchingChecks = filterChecksForRepository(allChecks, repoUrl);
279
344
  logProgress(TAG, `Found ${matchingChecks.length} matching checks (of ${allChecks.length} total)`);
280
345
  if (matchingChecks.length === 0) {
@@ -290,8 +355,11 @@ export async function runScan(args) {
290
355
  continue;
291
356
  }
292
357
  // checkTarget rules already resolved by resolveChecks — no additional path resolution needed
293
- // semgrep-only checks have no instructions markdown — use synthetic details
294
- if (check.checkTarget?.type === 'semgrep-only') {
358
+ // Checks that don't require instructions use synthetic details (unless they provided one optionally).
359
+ // Built-in analysis modes (false-positive-validation, general-vuln-discovery) also don't need instructions.
360
+ const builtInMode = check.checkTarget?.analysisMode === 'false-positive-validation'
361
+ || check.checkTarget?.analysisMode === 'general-vuln-discovery';
362
+ if ((!getCheckType(check.checkTarget?.type).needsInstructions || builtInMode) && !check.instructionsFile) {
295
363
  checksWithDetails.push({
296
364
  check,
297
365
  details: { id: check.id, name: check.name, overview: '', content: '' },
@@ -301,9 +369,23 @@ export async function runScan(args) {
301
369
  const details = await loadCheckDetails(check, '');
302
370
  checksWithDetails.push({ check, details });
303
371
  }
372
+ // ─── Validate --generic-prompt with mixed discovery types ───
373
+ if (genericPrompt) {
374
+ const discoveryTypes = new Set();
375
+ for (const c of checksWithDetails) {
376
+ const d = c.check.checkTarget?.discovery;
377
+ if (d)
378
+ discoveryTypes.add(d);
379
+ }
380
+ if (discoveryTypes.size > 1) {
381
+ console.error(formatError(ERROR_CODES.E2004, `--generic-prompt cannot be used when checks have different discovery types (found: ${[...discoveryTypes].join(', ')}). Each discovery type uses its own default generic prompt.`));
382
+ process.exit(1);
383
+ }
384
+ }
304
385
  // ─── Determine which prerequisites are needed ───
305
- const needsAI = checksWithDetails.some(c => c.check.checkTarget?.type !== 'semgrep-only');
306
- const needsSemgrep = checksWithDetails.some(c => c.check.checkTarget?.type === 'semgrep' || c.check.checkTarget?.type === 'semgrep-only');
386
+ const needsAI = checksWithDetails.some(c => getCheckType(c.check.checkTarget?.type).needsAI);
387
+ const needsSemgrep = checksWithDetails.some(c => c.check.checkTarget?.discovery === 'semgrep');
388
+ const needsOpenant = checksWithDetails.some(c => c.check.checkTarget?.discovery === 'openant');
307
389
  // ─── Conditional AI provider setup ───
308
390
  const aiProviderName = parsed.aiProvider ?? runtimeConfig.aiProvider?.name ?? DEFAULT_PROVIDER_NAME;
309
391
  if (needsAI && !useMock) {
@@ -324,7 +406,7 @@ export async function runScan(args) {
324
406
  let modelName;
325
407
  if (needsAI) {
326
408
  ({ provider, modelName } = await createProvider(useMock, aiProviderName, modelOverride));
327
- if (debug) {
409
+ if (resolvedLogLevel === 'debug' || resolvedLogLevel === 'trace') {
328
410
  provider.enableDebug?.();
329
411
  }
330
412
  logProgress(TAG, `Using model: ${modelName}`);
@@ -339,30 +421,40 @@ export async function runScan(args) {
339
421
  process.exit(1);
340
422
  }
341
423
  }
424
+ // ─── Conditional OpenAnt verification ───
425
+ if (needsOpenant && !process.env.AGHAST_MOCK_OPENANT) {
426
+ try {
427
+ await verifyOpenAntInstalled();
428
+ }
429
+ catch (err) {
430
+ console.error(formatError(ERROR_CODES.E6001, err instanceof Error ? err.message : String(err)));
431
+ process.exit(1);
432
+ }
433
+ }
342
434
  const results = await runMultiScan({
343
- repositoryPath: parsed.repositoryPath,
435
+ repositoryPath: effectiveRepoPath,
344
436
  checks: checksWithDetails,
345
437
  aiProvider: provider,
346
438
  aiModelName: needsAI ? modelName : undefined,
347
- repositoryInfo: repoAnalysis.repository,
439
+ repositoryInfo: repoAnalysis?.repository,
348
440
  aiProviderName: needsAI ? (useMock ? 'mock' : aiProviderName) : undefined,
349
441
  configDir,
350
442
  genericPrompt,
351
443
  });
352
444
  // Resolve output path: --output flag > runtime config dir > default
353
- let outputPath;
445
+ let resolvedOutputPath;
354
446
  if (parsed.outputPath) {
355
- outputPath = parsed.outputPath;
447
+ resolvedOutputPath = parsed.outputPath;
356
448
  }
357
449
  else if (runtimeConfig.reporting?.outputDirectory) {
358
450
  const dir = resolve(runtimeConfig.reporting.outputDirectory);
359
- outputPath = resolve(dir, 'security_checks_results' + formatter.fileExtension);
451
+ resolvedOutputPath = resolve(dir, 'security_checks_results' + formatter.fileExtension);
360
452
  }
361
453
  else {
362
- outputPath = resolve(parsed.repositoryPath, 'security_checks_results' + formatter.fileExtension);
454
+ resolvedOutputPath = resolve(effectiveRepoPath, 'security_checks_results' + formatter.fileExtension);
363
455
  }
364
- await mkdir(dirname(outputPath), { recursive: true });
365
- await writeFile(outputPath, formatter.format(results), 'utf-8');
456
+ await mkdir(dirname(resolvedOutputPath), { recursive: true });
457
+ await writeFile(resolvedOutputPath, formatter.format(results), 'utf-8');
366
458
  // Summary output
367
459
  const statusIcon = results.summary.failedChecks > 0
368
460
  ? 'FAIL'
@@ -385,21 +477,23 @@ export async function runScan(args) {
385
477
  console.log(` Tokens: ${results.tokenUsage.totalTokens.toLocaleString()} (in: ${results.tokenUsage.inputTokens.toLocaleString()}, out: ${results.tokenUsage.outputTokens.toLocaleString()})`);
386
478
  }
387
479
  console.log(` Duration: ${globalTimer.elapsedStr()}`);
388
- console.log(` Results: ${outputPath}`);
480
+ console.log(` Results: ${resolvedOutputPath}`);
389
481
  console.log('='.repeat(60));
390
482
  // Exit code based on --fail-on-check-failure flag or runtime config (spec Section 9.3)
391
483
  const failOnCheckFailure = parsed.failOnCheckFailure || runtimeConfig.failOnCheckFailure === true;
392
484
  const shouldFail = failOnCheckFailure && (results.summary.failedChecks > 0 || results.summary.errorChecks > 0);
485
+ await closeAllHandlers();
393
486
  process.exit(shouldFail ? 1 : 0);
394
487
  }
395
- // Auto-run when executed directly (pnpm scan / tsx src/index.ts), but not when imported by cli.ts.
488
+ // Auto-run when executed directly (npm run scan / tsx src/index.ts), but not when imported by cli.ts.
396
489
  if (!process.env._AGHAST_CLI) {
397
- runScan(process.argv.slice(2)).catch((err) => {
490
+ runScan(process.argv.slice(2)).catch(async (err) => {
398
491
  const require = createRequire(import.meta.url);
399
492
  const pkg = require('../package.json');
400
493
  console.error('');
401
494
  console.error(formatFatalError(err instanceof Error ? err.message : String(err), pkg.version));
402
495
  logDebug(TAG, 'Error details', err);
496
+ await closeAllHandlers();
403
497
  process.exit(1);
404
498
  });
405
499
  }
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/dist/logging.d.ts CHANGED
@@ -1,13 +1,111 @@
1
- export type LogLevel = 'silent' | 'info' | 'debug';
2
- export declare function getLogLevel(): LogLevel;
3
1
  /**
4
- * Programmatically set the log level (avoids env var race conditions with --debug flag).
2
+ * Pluggable logging system with standard log levels and handler-based architecture.
3
+ *
4
+ * Log levels (standard, syslog-inspired):
5
+ * error (0) > warn (1) > info (2) > debug (3) > trace (4)
6
+ *
7
+ * Handlers receive structured LogEntry objects and decide how to output them.
8
+ * A ConsoleHandler is registered by default. Additional handlers (e.g. FileHandler)
9
+ * can be added at runtime via addHandler().
5
10
  */
6
- export declare function setLogLevel(level: LogLevel): void;
11
+ export type LogLevel = 'error' | 'warn' | 'info' | 'debug' | 'trace';
12
+ /** Legacy log level names accepted by setLogLevel for backward compatibility. */
13
+ type LegacyLogLevel = 'silent' | 'info' | 'debug';
14
+ /**
15
+ * Check whether a string is a valid LogLevel.
16
+ */
17
+ export declare function isValidLogLevel(s: string): s is LogLevel;
18
+ export interface LogEntry {
19
+ timestamp: string;
20
+ level: LogLevel;
21
+ tag: string;
22
+ message: string;
23
+ /**
24
+ * Optional structured data attached to the log entry. Serialized via JSON.stringify()
25
+ * by handlers. Callers should avoid passing untrusted user input directly — log data
26
+ * may contain code snippets or AI responses that are written to log files.
27
+ */
28
+ data?: unknown;
29
+ }
30
+ export interface LogHandler {
31
+ readonly name: string;
32
+ level: LogLevel | 'silent';
33
+ handle(entry: LogEntry): void;
34
+ close?(): Promise<void>;
35
+ }
36
+ export declare class ConsoleHandler implements LogHandler {
37
+ readonly name = "console";
38
+ level: LogLevel | 'silent';
39
+ private priority;
40
+ constructor(level?: LogLevel | 'silent');
41
+ setLevel(level: LogLevel | 'silent'): void;
42
+ handle(entry: LogEntry): void;
43
+ }
44
+ export declare class FileHandler implements LogHandler {
45
+ readonly name: string;
46
+ level: LogLevel | 'silent';
47
+ private priority;
48
+ private stream;
49
+ constructor(filePath: string, level?: LogLevel | 'silent', name?: string);
50
+ handle(entry: LogEntry): void;
51
+ close(): Promise<void>;
52
+ }
53
+ /**
54
+ * Create a log handler by type name.
55
+ * @throws Error if the type is not registered
56
+ */
57
+ export declare function createHandlerByType(type: string, path: string, level?: LogLevel): LogHandler;
58
+ /**
59
+ * Get the list of available log type names.
60
+ */
61
+ export declare function getAvailableLogTypes(): string[];
62
+ /**
63
+ * Add a log handler to the registry.
64
+ */
65
+ export declare function addHandler(handler: LogHandler): void;
66
+ /**
67
+ * Remove a log handler by name.
68
+ */
69
+ export declare function removeHandler(name: string): void;
70
+ /**
71
+ * Close all handlers (flush file streams, etc.) and clear the registry.
72
+ * Re-initializes the console handler afterward.
73
+ */
74
+ export declare function closeAllHandlers(): Promise<void>;
75
+ /**
76
+ * Convenience: create a file handler via the type registry and add it.
77
+ */
78
+ export declare function initFileHandler(filePath: string, type?: string, level?: LogLevel): void;
79
+ /**
80
+ * Set the console handler's log level.
81
+ * Accepts both new standard levels and legacy 3-level names ('silent', 'info', 'debug').
82
+ */
83
+ export declare function setLogLevel(level: LogLevel | LegacyLogLevel | 'silent'): void;
84
+ /**
85
+ * Get the console handler's current log level.
86
+ */
87
+ export declare function getLogLevel(): LogLevel | 'silent';
88
+ export declare function formatTimestamp(): string;
7
89
  /**
8
90
  * Log a progress/activity message at info level.
9
91
  */
10
92
  export declare function logProgress(tag: string, message: string, details?: Record<string, unknown>): void;
93
+ /**
94
+ * Log debug information (single line, compact — console truncates at 200 chars).
95
+ */
96
+ export declare function logDebug(tag: string, message: string, data?: unknown): void;
97
+ /**
98
+ * Log debug information without truncation (for full prompts and responses).
99
+ */
100
+ export declare function logDebugFull(tag: string, message: string, data?: string): void;
101
+ /**
102
+ * Log a warning message.
103
+ */
104
+ export declare function logWarn(tag: string, message: string, data?: unknown): void;
105
+ /**
106
+ * Log an error message.
107
+ */
108
+ export declare function logError(tag: string, message: string, data?: unknown): void;
11
109
  /**
12
110
  * Create a timer for measuring elapsed time.
13
111
  */
@@ -16,11 +114,13 @@ export declare function createTimer(): {
16
114
  elapsedStr: () => string;
17
115
  };
18
116
  /**
19
- * Log debug information (single line, compact).
117
+ * Reset the handler registry to a clean state (for testing only).
118
+ * Removes all handlers and re-adds a fresh ConsoleHandler.
20
119
  */
21
- export declare function logDebug(tag: string, message: string, data?: unknown): void;
120
+ export declare function _resetHandlers(level?: LogLevel | 'silent'): Promise<void>;
22
121
  /**
23
- * Log debug information without truncation (for full prompts and responses).
122
+ * Get a snapshot of currently registered handler names (for testing only).
24
123
  */
25
- export declare function logDebugFull(tag: string, message: string, data?: string): void;
124
+ export declare function _getHandlerNames(): string[];
125
+ export {};
26
126
  //# sourceMappingURL=logging.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"logging.d.ts","sourceRoot":"","sources":["../src/logging.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,QAAQ,GAAG,QAAQ,GAAG,MAAM,GAAG,OAAO,CAAC;AAUnD,wBAAgB,WAAW,IAAI,QAAQ,CAItC;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,QAAQ,GAAG,IAAI,CAEjD;AAMD;;GAEG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAMjG;AAED;;GAEG;AACH,wBAAgB,WAAW,IAAI;IAAE,OAAO,EAAE,MAAM,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,MAAM,CAAA;CAAE,CAWjF;AAED;;GAEG;AACH,wBAAgB,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,IAAI,CAW3E;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAS9E"}
1
+ {"version":3,"file":"logging.d.ts","sourceRoot":"","sources":["../src/logging.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAOH,MAAM,MAAM,QAAQ,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,OAAO,CAAC;AAErE,iFAAiF;AACjF,KAAK,cAAc,GAAG,QAAQ,GAAG,MAAM,GAAG,OAAO,CAAC;AAYlD;;GAEG;AACH,wBAAgB,eAAe,CAAC,CAAC,EAAE,MAAM,GAAG,CAAC,IAAI,QAAQ,CAExD;AAUD,MAAM,WAAW,QAAQ;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,QAAQ,CAAC;IAChB,GAAG,EAAE,MAAM,CAAC;IACZ,OAAO,EAAE,MAAM,CAAC;IAChB;;;;OAIG;IACH,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB;AAID,MAAM,WAAW,UAAU;IACzB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,KAAK,EAAE,QAAQ,GAAG,QAAQ,CAAC;IAC3B,MAAM,CAAC,KAAK,EAAE,QAAQ,GAAG,IAAI,CAAC;IAC9B,KAAK,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACzB;AAID,qBAAa,cAAe,YAAW,UAAU;IAC/C,QAAQ,CAAC,IAAI,aAAa;IAC1B,KAAK,EAAE,QAAQ,GAAG,QAAQ,CAAC;IAC3B,OAAO,CAAC,QAAQ,CAAS;gBAEb,KAAK,GAAE,QAAQ,GAAG,QAAiB;IAK/C,QAAQ,CAAC,KAAK,EAAE,QAAQ,GAAG,QAAQ,GAAG,IAAI;IAK1C,MAAM,CAAC,KAAK,EAAE,QAAQ,GAAG,IAAI;CAqB9B;AAID,qBAAa,WAAY,YAAW,UAAU;IAC5C,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,KAAK,EAAE,QAAQ,GAAG,QAAQ,CAAC;IAC3B,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,MAAM,CAA4B;gBAE9B,QAAQ,EAAE,MAAM,EAAE,KAAK,GAAE,QAAQ,GAAG,QAAkB,EAAE,IAAI,SAAS;IAmBjF,MAAM,CAAC,KAAK,EAAE,QAAQ,GAAG,IAAI;IAgB7B,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAYvB;AAQD;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,GAAE,QAAkB,GAAG,UAAU,CAOrG;AAED;;GAEG;AACH,wBAAgB,oBAAoB,IAAI,MAAM,EAAE,CAE/C;AAkBD;;GAEG;AACH,wBAAgB,UAAU,CAAC,OAAO,EAAE,UAAU,GAAG,IAAI,CAEpD;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,GAAG,IAAI,CAGhD;AAED;;;GAGG;AACH,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,IAAI,CAAC,CAStD;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,SAAS,EAAE,KAAK,GAAE,QAAkB,GAAG,IAAI,CAGhG;AAUD;;;GAGG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,QAAQ,GAAG,cAAc,GAAG,QAAQ,GAAG,IAAI,CAM7E;AAED;;GAEG;AACH,wBAAgB,WAAW,IAAI,QAAQ,GAAG,QAAQ,CAEjD;AAID,wBAAgB,eAAe,IAAI,MAAM,CAExC;AAmBD;;GAEG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAEjG;AAED;;GAEG;AACH,wBAAgB,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,IAAI,CAE3E;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,MAAM,GAAG,IAAI,CAE9E;AAED;;GAEG;AACH,wBAAgB,OAAO,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,IAAI,CAE1E;AAED;;GAEG;AACH,wBAAgB,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,IAAI,CAE3E;AAID;;GAEG;AACH,wBAAgB,WAAW,IAAI;IAAE,OAAO,EAAE,MAAM,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,MAAM,CAAA;CAAE,CAWjF;AAID;;;GAGG;AACH,wBAAsB,cAAc,CAAC,KAAK,GAAE,QAAQ,GAAG,QAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CASvF;AAED;;GAEG;AACH,wBAAgB,gBAAgB,IAAI,MAAM,EAAE,CAE3C"}