@bouncesecurity/aghast 0.0.13 → 0.2.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 (67) hide show
  1. package/README.md +8 -6
  2. package/config/prompts/generic-instructions.md +2 -0
  3. package/config/prompts/openant-security-instructions.md +94 -0
  4. package/config/prompts/sarif-validation-instructions.md +58 -0
  5. package/dist/check-library.d.ts.map +1 -1
  6. package/dist/check-library.js +61 -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 +23 -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 +55 -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 +123 -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.map +1 -1
  48. package/dist/new-check.js +81 -33
  49. package/dist/new-check.js.map +1 -1
  50. package/dist/openant-loader.d.ts +105 -0
  51. package/dist/openant-loader.d.ts.map +1 -0
  52. package/dist/openant-loader.js +135 -0
  53. package/dist/openant-loader.js.map +1 -0
  54. package/dist/openant-runner.d.ts +22 -0
  55. package/dist/openant-runner.d.ts.map +1 -0
  56. package/dist/openant-runner.js +102 -0
  57. package/dist/openant-runner.js.map +1 -0
  58. package/dist/runtime-config.d.ts.map +1 -1
  59. package/dist/runtime-config.js +15 -0
  60. package/dist/runtime-config.js.map +1 -1
  61. package/dist/scan-runner.d.ts.map +1 -1
  62. package/dist/scan-runner.js +175 -143
  63. package/dist/scan-runner.js.map +1 -1
  64. package/dist/types.d.ts +24 -2
  65. package/dist/types.d.ts.map +1 -1
  66. package/dist/types.js.map +1 -1
  67. package/package.json +4 -3
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,10 @@ 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
+ // Discovery types with self-contained prompts (openant, sarif) also don't need instructions.
360
+ const selfContainedDiscovery = check.checkTarget?.discovery === 'openant' || check.checkTarget?.discovery === 'sarif';
361
+ if ((!getCheckType(check.checkTarget?.type).needsInstructions || selfContainedDiscovery) && !check.instructionsFile) {
295
362
  checksWithDetails.push({
296
363
  check,
297
364
  details: { id: check.id, name: check.name, overview: '', content: '' },
@@ -301,9 +368,23 @@ export async function runScan(args) {
301
368
  const details = await loadCheckDetails(check, '');
302
369
  checksWithDetails.push({ check, details });
303
370
  }
371
+ // ─── Validate --generic-prompt with mixed discovery types ───
372
+ if (genericPrompt) {
373
+ const discoveryTypes = new Set();
374
+ for (const c of checksWithDetails) {
375
+ const d = c.check.checkTarget?.discovery;
376
+ if (d)
377
+ discoveryTypes.add(d);
378
+ }
379
+ if (discoveryTypes.size > 1) {
380
+ 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.`));
381
+ process.exit(1);
382
+ }
383
+ }
304
384
  // ─── 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');
385
+ const needsAI = checksWithDetails.some(c => getCheckType(c.check.checkTarget?.type).needsAI);
386
+ const needsSemgrep = checksWithDetails.some(c => c.check.checkTarget?.discovery === 'semgrep');
387
+ const needsOpenant = checksWithDetails.some(c => c.check.checkTarget?.discovery === 'openant');
307
388
  // ─── Conditional AI provider setup ───
308
389
  const aiProviderName = parsed.aiProvider ?? runtimeConfig.aiProvider?.name ?? DEFAULT_PROVIDER_NAME;
309
390
  if (needsAI && !useMock) {
@@ -314,7 +395,7 @@ export async function runScan(args) {
314
395
  }
315
396
  // Validate ANTHROPIC_API_KEY (not needed when using mock or local Claude)
316
397
  if (!process.env.ANTHROPIC_API_KEY && process.env.AGHAST_LOCAL_CLAUDE !== 'true') {
317
- console.error(formatError(ERROR_CODES.E3001, 'ANTHROPIC_API_KEY environment variable is required (or set AGHAST_LOCAL_CLAUDE=true)'));
398
+ console.error(formatError(ERROR_CODES.E3001, 'ANTHROPIC_API_KEY environment variable is required'));
318
399
  process.exit(1);
319
400
  }
320
401
  }
@@ -324,7 +405,7 @@ export async function runScan(args) {
324
405
  let modelName;
325
406
  if (needsAI) {
326
407
  ({ provider, modelName } = await createProvider(useMock, aiProviderName, modelOverride));
327
- if (debug) {
408
+ if (resolvedLogLevel === 'debug' || resolvedLogLevel === 'trace') {
328
409
  provider.enableDebug?.();
329
410
  }
330
411
  logProgress(TAG, `Using model: ${modelName}`);
@@ -339,30 +420,40 @@ export async function runScan(args) {
339
420
  process.exit(1);
340
421
  }
341
422
  }
423
+ // ─── Conditional OpenAnt verification ───
424
+ if (needsOpenant && !process.env.AGHAST_MOCK_OPENANT) {
425
+ try {
426
+ await verifyOpenAntInstalled();
427
+ }
428
+ catch (err) {
429
+ console.error(formatError(ERROR_CODES.E6001, err instanceof Error ? err.message : String(err)));
430
+ process.exit(1);
431
+ }
432
+ }
342
433
  const results = await runMultiScan({
343
- repositoryPath: parsed.repositoryPath,
434
+ repositoryPath: effectiveRepoPath,
344
435
  checks: checksWithDetails,
345
436
  aiProvider: provider,
346
437
  aiModelName: needsAI ? modelName : undefined,
347
- repositoryInfo: repoAnalysis.repository,
438
+ repositoryInfo: repoAnalysis?.repository,
348
439
  aiProviderName: needsAI ? (useMock ? 'mock' : aiProviderName) : undefined,
349
440
  configDir,
350
441
  genericPrompt,
351
442
  });
352
443
  // Resolve output path: --output flag > runtime config dir > default
353
- let outputPath;
444
+ let resolvedOutputPath;
354
445
  if (parsed.outputPath) {
355
- outputPath = parsed.outputPath;
446
+ resolvedOutputPath = parsed.outputPath;
356
447
  }
357
448
  else if (runtimeConfig.reporting?.outputDirectory) {
358
449
  const dir = resolve(runtimeConfig.reporting.outputDirectory);
359
- outputPath = resolve(dir, 'security_checks_results' + formatter.fileExtension);
450
+ resolvedOutputPath = resolve(dir, 'security_checks_results' + formatter.fileExtension);
360
451
  }
361
452
  else {
362
- outputPath = resolve(parsed.repositoryPath, 'security_checks_results' + formatter.fileExtension);
453
+ resolvedOutputPath = resolve(effectiveRepoPath, 'security_checks_results' + formatter.fileExtension);
363
454
  }
364
- await mkdir(dirname(outputPath), { recursive: true });
365
- await writeFile(outputPath, formatter.format(results), 'utf-8');
455
+ await mkdir(dirname(resolvedOutputPath), { recursive: true });
456
+ await writeFile(resolvedOutputPath, formatter.format(results), 'utf-8');
366
457
  // Summary output
367
458
  const statusIcon = results.summary.failedChecks > 0
368
459
  ? 'FAIL'
@@ -385,21 +476,23 @@ export async function runScan(args) {
385
476
  console.log(` Tokens: ${results.tokenUsage.totalTokens.toLocaleString()} (in: ${results.tokenUsage.inputTokens.toLocaleString()}, out: ${results.tokenUsage.outputTokens.toLocaleString()})`);
386
477
  }
387
478
  console.log(` Duration: ${globalTimer.elapsedStr()}`);
388
- console.log(` Results: ${outputPath}`);
479
+ console.log(` Results: ${resolvedOutputPath}`);
389
480
  console.log('='.repeat(60));
390
481
  // Exit code based on --fail-on-check-failure flag or runtime config (spec Section 9.3)
391
482
  const failOnCheckFailure = parsed.failOnCheckFailure || runtimeConfig.failOnCheckFailure === true;
392
483
  const shouldFail = failOnCheckFailure && (results.summary.failedChecks > 0 || results.summary.errorChecks > 0);
484
+ await closeAllHandlers();
393
485
  process.exit(shouldFail ? 1 : 0);
394
486
  }
395
487
  // Auto-run when executed directly (pnpm scan / tsx src/index.ts), but not when imported by cli.ts.
396
488
  if (!process.env._AGHAST_CLI) {
397
- runScan(process.argv.slice(2)).catch((err) => {
489
+ runScan(process.argv.slice(2)).catch(async (err) => {
398
490
  const require = createRequire(import.meta.url);
399
491
  const pkg = require('../package.json');
400
492
  console.error('');
401
493
  console.error(formatFatalError(err instanceof Error ? err.message : String(err), pkg.version));
402
494
  logDebug(TAG, 'Error details', err);
495
+ await closeAllHandlers();
403
496
  process.exit(1);
404
497
  });
405
498
  }
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":"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"}