@bouncesecurity/aghast 0.5.0 → 0.6.1

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 (61) hide show
  1. package/README.md +8 -3
  2. package/config/pricing.json +42 -0
  3. package/config/prompts/false-positive-validation.md +1 -0
  4. package/config/prompts/general-vuln-discovery.md +1 -0
  5. package/config/prompts/generic-instructions.md +3 -2
  6. package/dist/budget.d.ts +62 -0
  7. package/dist/budget.d.ts.map +1 -0
  8. package/dist/budget.js +137 -0
  9. package/dist/budget.js.map +1 -0
  10. package/dist/check-library.d.ts +1 -0
  11. package/dist/check-library.d.ts.map +1 -1
  12. package/dist/check-library.js +22 -6
  13. package/dist/check-library.js.map +1 -1
  14. package/dist/claude-code-provider.d.ts +0 -2
  15. package/dist/claude-code-provider.d.ts.map +1 -1
  16. package/dist/claude-code-provider.js +66 -16
  17. package/dist/claude-code-provider.js.map +1 -1
  18. package/dist/cli.js +11 -1
  19. package/dist/cli.js.map +1 -1
  20. package/dist/cost-calculator.d.ts +80 -0
  21. package/dist/cost-calculator.d.ts.map +1 -0
  22. package/dist/cost-calculator.js +226 -0
  23. package/dist/cost-calculator.js.map +1 -0
  24. package/dist/error-codes.d.ts +1 -0
  25. package/dist/error-codes.d.ts.map +1 -1
  26. package/dist/error-codes.js +2 -0
  27. package/dist/error-codes.js.map +1 -1
  28. package/dist/index.d.ts.map +1 -1
  29. package/dist/index.js +172 -10
  30. package/dist/index.js.map +1 -1
  31. package/dist/logging.d.ts +1 -1
  32. package/dist/logging.d.ts.map +1 -1
  33. package/dist/logging.js +25 -33
  34. package/dist/logging.js.map +1 -1
  35. package/dist/mock-agent-provider.d.ts +6 -3
  36. package/dist/mock-agent-provider.d.ts.map +1 -1
  37. package/dist/mock-agent-provider.js +12 -5
  38. package/dist/mock-agent-provider.js.map +1 -1
  39. package/dist/opencode-provider.d.ts +0 -2
  40. package/dist/opencode-provider.d.ts.map +1 -1
  41. package/dist/opencode-provider.js +90 -17
  42. package/dist/opencode-provider.js.map +1 -1
  43. package/dist/runtime-config.d.ts.map +1 -1
  44. package/dist/runtime-config.js +92 -0
  45. package/dist/runtime-config.js.map +1 -1
  46. package/dist/scan-history.d.ts +82 -0
  47. package/dist/scan-history.d.ts.map +1 -0
  48. package/dist/scan-history.js +127 -0
  49. package/dist/scan-history.js.map +1 -0
  50. package/dist/scan-runner.d.ts +64 -1
  51. package/dist/scan-runner.d.ts.map +1 -1
  52. package/dist/scan-runner.js +173 -14
  53. package/dist/scan-runner.js.map +1 -1
  54. package/dist/stats.d.ts +11 -0
  55. package/dist/stats.d.ts.map +1 -0
  56. package/dist/stats.js +197 -0
  57. package/dist/stats.js.map +1 -0
  58. package/dist/types.d.ts +40 -1
  59. package/dist/types.d.ts.map +1 -1
  60. package/dist/types.js.map +1 -1
  61. package/package.json +2 -2
@@ -17,7 +17,6 @@ export declare class OpenCodeProvider implements AgentProvider {
17
17
  private modelID;
18
18
  private _client;
19
19
  private _server;
20
- private debugEnabled;
21
20
  private cleanedUp;
22
21
  private signalHandler;
23
22
  /** Refcount of project markers we created, keyed by absolute repositoryPath.
@@ -35,7 +34,6 @@ export declare class OpenCodeProvider implements AgentProvider {
35
34
  listModels(): Promise<readonly ProviderModelInfo[]>;
36
35
  getModelName(): string;
37
36
  setModel(model: string): void;
38
- enableDebug(): void;
39
37
  /** Run `fn` under an async FIFO mutex so refcount mutations and fs ops don't race. */
40
38
  private withMarkerLock;
41
39
  /** Ensure `.git` exists at repositoryPath so OpenCode treats it as the project root.
@@ -1 +1 @@
1
- {"version":3,"file":"opencode-provider.d.ts","sourceRoot":"","sources":["../src/opencode-provider.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAOH,OAAO,KAAK,EAAE,aAAa,EAAE,aAAa,EAAE,cAAc,EAAiB,iBAAiB,EAAc,MAAM,YAAY,CAAC;AA0D7H,KAAK,cAAc,GAAG,YAAY,CAAC,CAAC,cAAc,qBAAqB,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC;AAE7F,8DAA8D;AAC9D,MAAM,WAAW,uBAAuB;IACtC,8DAA8D;IAC9D,OAAO,CAAC,EAAE,cAAc,CAAC;CAC1B;AAED,qBAAa,gBAAiB,YAAW,aAAa;IACpD,OAAO,CAAC,UAAU,CAAc;IAChC,OAAO,CAAC,OAAO,CAAc;IAC7B,OAAO,CAAC,OAAO,CAA6B;IAC5C,OAAO,CAAC,OAAO,CAA6C;IAC5D,OAAO,CAAC,YAAY,CAAkB;IACtC,OAAO,CAAC,SAAS,CAAkB;IACnC,OAAO,CAAC,aAAa,CAA2B;IAChD;gGAC4F;IAC5F,OAAO,CAAC,cAAc,CAA6B;IACnD;mFAC+E;IAC/E,OAAO,CAAC,WAAW,CAAoC;IACvD,wFAAwF;IACxF,OAAO,CAAC,iBAAiB,CAAU;gBAEvB,OAAO,CAAC,EAAE,uBAAuB;IAO7C,kBAAkB,IAAI,IAAI;IAIpB,UAAU,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;YAkDzC,aAAa;IAyBrB,UAAU,IAAI,OAAO,CAAC,SAAS,iBAAiB,EAAE,CAAC;IAwBzD,YAAY,IAAI,MAAM;IAItB,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAM7B,WAAW,IAAI,IAAI;IAInB,sFAAsF;YACxE,cAAc;IAY5B;;;;;sDAKkD;YACpC,mBAAmB;IAwCjC;uDACmD;YACrC,oBAAoB;IA0BlC;;6EAEyE;IACzE,OAAO,CAAC,kBAAkB;IAWpB,YAAY,CAChB,YAAY,EAAE,MAAM,EACpB,cAAc,EAAE,MAAM,EACtB,SAAS,CAAC,EAAE,MAAM,EAClB,QAAQ,CAAC,EAAE;QAAE,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,GAC/B,OAAO,CAAC,aAAa,CAAC;YAkBX,iBAAiB;IA0LzB,cAAc,IAAI,OAAO,CAAC,OAAO,CAAC;IAIxC,6DAA6D;IAC7D,OAAO,CAAC,WAAW;IAyBb,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;CA4C/B"}
1
+ {"version":3,"file":"opencode-provider.d.ts","sourceRoot":"","sources":["../src/opencode-provider.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAOH,OAAO,KAAK,EAAE,aAAa,EAAE,aAAa,EAAE,cAAc,EAAiB,iBAAiB,EAAc,MAAM,YAAY,CAAC;AA6D7H,KAAK,cAAc,GAAG,YAAY,CAAC,CAAC,cAAc,qBAAqB,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAC;AAE7F,8DAA8D;AAC9D,MAAM,WAAW,uBAAuB;IACtC,8DAA8D;IAC9D,OAAO,CAAC,EAAE,cAAc,CAAC;CAC1B;AAED,qBAAa,gBAAiB,YAAW,aAAa;IACpD,OAAO,CAAC,UAAU,CAAc;IAChC,OAAO,CAAC,OAAO,CAAc;IAC7B,OAAO,CAAC,OAAO,CAA6B;IAC5C,OAAO,CAAC,OAAO,CAA6C;IAC5D,OAAO,CAAC,SAAS,CAAkB;IACnC,OAAO,CAAC,aAAa,CAA2B;IAChD;gGAC4F;IAC5F,OAAO,CAAC,cAAc,CAA6B;IACnD;mFAC+E;IAC/E,OAAO,CAAC,WAAW,CAAoC;IACvD,wFAAwF;IACxF,OAAO,CAAC,iBAAiB,CAAU;gBAEvB,OAAO,CAAC,EAAE,uBAAuB;IAO7C,kBAAkB,IAAI,IAAI;IAIpB,UAAU,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC;YAkDzC,aAAa;IA0BrB,UAAU,IAAI,OAAO,CAAC,SAAS,iBAAiB,EAAE,CAAC;IAwBzD,YAAY,IAAI,MAAM;IAItB,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI;IAM7B,sFAAsF;YACxE,cAAc;IAY5B;;;;;sDAKkD;YACpC,mBAAmB;IAwCjC;uDACmD;YACrC,oBAAoB;IA0BlC;;6EAEyE;IACzE,OAAO,CAAC,kBAAkB;IAWpB,YAAY,CAChB,YAAY,EAAE,MAAM,EACpB,cAAc,EAAE,MAAM,EACtB,SAAS,CAAC,EAAE,MAAM,EAClB,QAAQ,CAAC,EAAE;QAAE,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,GAC/B,OAAO,CAAC,aAAa,CAAC;YAkBX,iBAAiB;IAqQzB,cAAc,IAAI,OAAO,CAAC,OAAO,CAAC;IAIxC,6DAA6D;IAC7D,OAAO,CAAC,WAAW;IAyBb,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;CA4C/B"}
@@ -16,7 +16,9 @@ import { OUTPUT_SCHEMA } from './provider-utils.js';
16
16
  import { logProgress, logDebug, logDebugFull, createTimer, getLogLevel } from './logging.js';
17
17
  const execAsync = promisify(exec);
18
18
  const TAG = 'opencode-provider';
19
- const DEFAULT_OPENCODE_MODEL = 'opencode/big-pickle';
19
+ const DEFAULT_OPENCODE_MODEL = 'opencode/hy3-preview-free';
20
+ // Tools the agent is permitted to use — everything else is denied.
21
+ const ALLOWED_TOOL_PERMISSIONS = new Set(['read', 'glob', 'grep', 'list']);
20
22
  const HEARTBEAT_INTERVAL_MS = 15000;
21
23
  const TRACE_POLL_MS = 1000;
22
24
  const CLOSE_TIMEOUT_MS = 5000;
@@ -62,7 +64,6 @@ export class OpenCodeProvider {
62
64
  modelID = '';
63
65
  _client;
64
66
  _server;
65
- debugEnabled = false;
66
67
  cleanedUp = false;
67
68
  signalHandler;
68
69
  /** Refcount of project markers we created, keyed by absolute repositoryPath.
@@ -138,8 +139,9 @@ export class OpenCodeProvider {
138
139
  }
139
140
  const models = provider.models ? Object.keys(provider.models) : [];
140
141
  if (models.length > 0 && !models.includes(this.modelID)) {
141
- const available = models.map(m => `${this.providerID}/${m}`).join(', ');
142
- throw new FatalProviderError(`Model "${this.modelID}" not found for provider "${this.providerID}". Available models: ${available}`);
142
+ const availableModels = models.map(m => `${this.providerID}/${m}`).join(', ');
143
+ const availableProviders = providers.map(p => p.id).join(', ') || '(none)';
144
+ throw new FatalProviderError(`Model "${this.modelID}" not found for provider "${this.providerID}". Available models: ${availableModels}. Available providers: ${availableProviders}.`);
143
145
  }
144
146
  }
145
147
  async listModels() {
@@ -170,9 +172,6 @@ export class OpenCodeProvider {
170
172
  this.providerID = parsed.providerID;
171
173
  this.modelID = parsed.modelID;
172
174
  }
173
- enableDebug() {
174
- this.debugEnabled = true;
175
- }
176
175
  /** Run `fn` under an async FIFO mutex so refcount mutations and fs ops don't race. */
177
176
  async withMarkerLock(fn) {
178
177
  const prev = this.markerMutex;
@@ -289,11 +288,29 @@ export class OpenCodeProvider {
289
288
  const client = this._client;
290
289
  const timer = createTimer();
291
290
  const prefix = logPrefix ? `${logPrefix} ` : '';
291
+ // Build a virtual allowlist: fetch all available tool IDs and deny everything
292
+ // not in ALLOWED_TOOL_PERMISSIONS. This adapts automatically to new or MCP tools
293
+ // rather than relying on a static blocklist that could miss future additions.
294
+ const permission = [];
295
+ try {
296
+ const toolIdsResult = await client.tool.ids({ directory: repositoryPath });
297
+ const allToolIds = toolIdsResult.data ?? [];
298
+ for (const id of allToolIds) {
299
+ if (!ALLOWED_TOOL_PERMISSIONS.has(id.toLowerCase())) {
300
+ permission.push({ permission: id, pattern: '*', action: 'deny' });
301
+ }
302
+ }
303
+ logDebug(TAG, `${prefix}Permission ruleset: allowing ${[...ALLOWED_TOOL_PERMISSIONS].join(', ')}; denying ${permission.length} other tools`);
304
+ }
305
+ catch (err) {
306
+ logDebug(TAG, `${prefix}Could not fetch tool IDs, skipping permission ruleset: ${err instanceof Error ? err.message : String(err)}`);
307
+ }
292
308
  // Create an isolated session for this check
293
309
  logDebug(TAG, `${prefix}Creating session for check (cwd=${repositoryPath})`);
294
310
  const sessionResult = await client.session.create({
295
311
  title: 'aghast security check',
296
312
  directory: repositoryPath,
313
+ ...(permission.length > 0 ? { permission } : {}),
297
314
  });
298
315
  const sessionId = sessionResult.data?.id;
299
316
  if (!sessionId) {
@@ -301,9 +318,7 @@ export class OpenCodeProvider {
301
318
  }
302
319
  logDebug(TAG, `${prefix}Session created: ${sessionId}`);
303
320
  logDebug(TAG, `${prefix}Starting query: model=${this.providerID}/${this.modelID}, promptLen=${instructions.length}`);
304
- if (this.debugEnabled) {
305
- logDebugFull(TAG, `${prefix}Full prompt sent to AI`, instructions);
306
- }
321
+ logDebugFull(TAG, `${prefix}Full prompt sent to AI`, instructions);
307
322
  // At trace level, poll session messages every second for real-time progress.
308
323
  // session.prompt() blocks, but setInterval callbacks run during the await.
309
324
  let toolCallCount = 0;
@@ -311,6 +326,7 @@ export class OpenCodeProvider {
311
326
  let lastActivityTime = Date.now();
312
327
  const logLevel = getLogLevel();
313
328
  const isDebugOrTrace = logLevel === 'debug' || logLevel === 'trace';
329
+ const trace = logLevel === 'trace';
314
330
  const progressInterval = isDebugOrTrace ? setInterval(async () => {
315
331
  try {
316
332
  const messagesResult = await client.session.messages({
@@ -334,9 +350,15 @@ export class OpenCodeProvider {
334
350
  if (state?.status === 'running') {
335
351
  toolCallCount++;
336
352
  logDebug(TAG, `${prefix}Tool[${toolCallCount}]: ${toolName} ${inputPreview} (${timer.elapsedStr()})`);
353
+ if (trace && JSON.stringify(state?.input).length > 200) {
354
+ logDebugFull(TAG, `${prefix}Full tool call input`, JSON.stringify(state?.input));
355
+ }
337
356
  }
338
357
  else if (state?.status === 'completed') {
339
358
  logDebug(TAG, `${prefix}Tool done: ${toolName} (${timer.elapsedStr()})`);
359
+ const toolOutput = state?.output ?? '';
360
+ if (trace && toolOutput.length > 200)
361
+ logDebugFull(TAG, `${prefix}Full tool output (${toolOutput.length} chars)`, toolOutput);
340
362
  }
341
363
  else if (state?.status === 'error') {
342
364
  // Tools can transition running → error between polls, so the "running" log
@@ -350,6 +372,8 @@ export class OpenCodeProvider {
350
372
  else if (part.type === 'text' && part.text) {
351
373
  const preview = part.text.length > 150 ? part.text.slice(0, 150) + '...' : part.text;
352
374
  logDebug(TAG, `${prefix}Text: ${preview}`);
375
+ if (trace && part.text.length > 150)
376
+ logDebugFull(TAG, `${prefix}Full assistant text`, part.text);
353
377
  }
354
378
  }
355
379
  lastLoggedPartCount = parts.length;
@@ -383,8 +407,38 @@ export class OpenCodeProvider {
383
407
  clearInterval(progressInterval);
384
408
  clearInterval(heartbeatInterval);
385
409
  }
386
- const info = promptResult.data?.info;
387
- const parts = promptResult.data?.parts;
410
+ let info = promptResult.data?.info;
411
+ let parts = promptResult.data?.parts;
412
+ // Some providers (e.g. OpenRouter routing) reject requests when tool_choice is set,
413
+ // which is how OpenCode enforces the permission denylist. Detect this and retry once
414
+ // without restrictions so the scan can still complete (security mitigation won't apply).
415
+ if (permission.length > 0 &&
416
+ info?.error?.name === 'APIError') {
417
+ const rawErrMsg = 'data' in info.error && info.error.data && typeof info.error.data === 'object' && 'message' in info.error.data
418
+ ? String(info.error.data.message)
419
+ : info.error.name;
420
+ if (/tool.?choice/i.test(rawErrMsg)) {
421
+ logProgress(TAG, `${prefix}Warning: provider does not support tool restrictions (tool_choice unsupported) — retrying without permission ruleset. The prompt injection security mitigation will not apply for this check.`);
422
+ const retrySession = await client.session.create({
423
+ title: 'aghast security check',
424
+ directory: repositoryPath,
425
+ });
426
+ const retrySessionId = retrySession.data?.id;
427
+ if (!retrySessionId) {
428
+ throw new Error('Failed to create OpenCode retry session — no session ID returned');
429
+ }
430
+ // Omit json_schema format — OpenCode also uses tool_choice to enforce structured
431
+ // output, which would trigger the same error. Text parsing handles the response instead.
432
+ const retryResult = await client.session.prompt({
433
+ sessionID: retrySessionId,
434
+ model: { providerID: this.providerID, modelID: this.modelID },
435
+ parts: [{ type: 'text', text: instructions }],
436
+ directory: repositoryPath,
437
+ });
438
+ info = retryResult.data?.info;
439
+ parts = retryResult.data?.parts;
440
+ }
441
+ }
388
442
  // Check for errors on the assistant message
389
443
  if (info?.error) {
390
444
  const err = info.error;
@@ -416,13 +470,34 @@ export class OpenCodeProvider {
416
470
  const tokens = info.tokens;
417
471
  const inputTokens = tokens.input ?? 0;
418
472
  const outputTokens = tokens.output ?? 0;
419
- tokenUsage = { inputTokens, outputTokens, totalTokens: inputTokens + outputTokens };
420
- logDebug(TAG, `${prefix}Token usage: ${tokenUsage.inputTokens} in, ${tokenUsage.outputTokens} out`);
473
+ const reasoningTokens = tokens.reasoning !== undefined && tokens.reasoning > 0
474
+ ? tokens.reasoning
475
+ : undefined;
476
+ const cacheReadInputTokens = tokens.cache?.read !== undefined && tokens.cache.read > 0
477
+ ? tokens.cache.read
478
+ : undefined;
479
+ const cacheCreationInputTokens = tokens.cache?.write !== undefined && tokens.cache.write > 0
480
+ ? tokens.cache.write
481
+ : undefined;
482
+ const reportedCost = typeof info.cost === 'number'
483
+ ? { amountUsd: info.cost, source: 'opencode' }
484
+ : undefined;
485
+ tokenUsage = {
486
+ inputTokens,
487
+ outputTokens,
488
+ ...(reasoningTokens !== undefined ? { reasoningTokens } : {}),
489
+ ...(cacheReadInputTokens !== undefined ? { cacheReadInputTokens } : {}),
490
+ ...(cacheCreationInputTokens !== undefined ? { cacheCreationInputTokens } : {}),
491
+ totalTokens: inputTokens + outputTokens,
492
+ ...(reportedCost !== undefined ? { reportedCost } : {}),
493
+ };
494
+ logDebug(TAG, `${prefix}Token usage: ${inputTokens} in, ${outputTokens} out${reasoningTokens !== undefined ? `, ${reasoningTokens} reasoning` : ''}${cacheReadInputTokens !== undefined ? `, ${cacheReadInputTokens} cache-read` : ''}${cacheCreationInputTokens !== undefined ? `, ${cacheCreationInputTokens} cache-write` : ''}${reportedCost !== undefined ? `, $${reportedCost.amountUsd} reported` : ''}`);
421
495
  }
422
496
  // Try structured output first (v2 API: info.structured)
423
497
  if (info?.structured) {
424
498
  const structuredOutput = info.structured;
425
499
  logDebug(TAG, `${prefix}Structured output: ${structuredOutput.issues?.length ?? 0} issues`);
500
+ logDebugFull(TAG, `${prefix}Full AI response (structured)`, JSON.stringify(structuredOutput, null, 2));
426
501
  logProgress(TAG, `${prefix}Completed in ${timer.elapsedStr()} (${toolCallCount} tool calls)`);
427
502
  const rawText = extractTextFromParts(parts);
428
503
  return { raw: rawText, parsed: structuredOutput, tokenUsage };
@@ -430,9 +505,7 @@ export class OpenCodeProvider {
430
505
  // Fallback: extract text from response parts and parse with response-parser
431
506
  const rawText = extractTextFromParts(parts);
432
507
  logDebug(TAG, `${prefix}No structured output — falling back to text parsing (${rawText.length} chars)`);
433
- if (this.debugEnabled) {
434
- logDebugFull(TAG, `${prefix}Full AI response`, rawText);
435
- }
508
+ logDebugFull(TAG, `${prefix}Full AI response`, rawText);
436
509
  if (!rawText) {
437
510
  throw new Error('OpenCode AI returned no text response');
438
511
  }
@@ -1 +1 @@
1
- {"version":3,"file":"opencode-provider.js","sourceRoot":"","sources":["../src/opencode-provider.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"opencode-provider.js","sourceRoot":"","sources":["../src/opencode-provider.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"runtime-config.d.ts","sourceRoot":"","sources":["../src/runtime-config.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAEhD;;;;;;GAMG;AACH,wBAAsB,iBAAiB,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,CAmFzG"}
1
+ {"version":3,"file":"runtime-config.d.ts","sourceRoot":"","sources":["../src/runtime-config.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAEhD;;;;;;GAMG;AACH,wBAAsB,iBAAiB,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,YAAY,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,CA+KzG"}
@@ -75,6 +75,98 @@ export async function loadRuntimeConfig(configDir, explicitPath) {
75
75
  if (obj.failOnCheckFailure !== undefined && typeof obj.failOnCheckFailure !== 'boolean') {
76
76
  throw new Error(`Runtime config "${pathToLoad}": "failOnCheckFailure" must be a boolean`);
77
77
  }
78
+ if (obj.budget !== undefined) {
79
+ if (typeof obj.budget !== 'object' || obj.budget === null || Array.isArray(obj.budget)) {
80
+ throw new Error(`Runtime config "${pathToLoad}": "budget" must be an object`);
81
+ }
82
+ const budget = obj.budget;
83
+ if (budget.perScan !== undefined) {
84
+ if (typeof budget.perScan !== 'object' || budget.perScan === null || Array.isArray(budget.perScan)) {
85
+ throw new Error(`Runtime config "${pathToLoad}": "budget.perScan" must be an object`);
86
+ }
87
+ const ps = budget.perScan;
88
+ if (ps.maxTokens !== undefined) {
89
+ if (typeof ps.maxTokens !== 'number' || !Number.isFinite(ps.maxTokens) || ps.maxTokens < 0) {
90
+ throw new Error(`Runtime config "${pathToLoad}": "budget.perScan.maxTokens" must be a non-negative number`);
91
+ }
92
+ }
93
+ if (ps.maxCostUsd !== undefined) {
94
+ if (typeof ps.maxCostUsd !== 'number' || !Number.isFinite(ps.maxCostUsd) || ps.maxCostUsd < 0) {
95
+ throw new Error(`Runtime config "${pathToLoad}": "budget.perScan.maxCostUsd" must be a non-negative number`);
96
+ }
97
+ }
98
+ }
99
+ if (budget.perPeriod !== undefined) {
100
+ if (typeof budget.perPeriod !== 'object' || budget.perPeriod === null || Array.isArray(budget.perPeriod)) {
101
+ throw new Error(`Runtime config "${pathToLoad}": "budget.perPeriod" must be an object`);
102
+ }
103
+ const pp = budget.perPeriod;
104
+ if (pp.window !== undefined && pp.window !== 'day' && pp.window !== 'week' && pp.window !== 'month') {
105
+ throw new Error(`Runtime config "${pathToLoad}": "budget.perPeriod.window" must be "day", "week", or "month"`);
106
+ }
107
+ if (pp.maxCostUsd !== undefined) {
108
+ if (typeof pp.maxCostUsd !== 'number' || !Number.isFinite(pp.maxCostUsd) || pp.maxCostUsd < 0) {
109
+ throw new Error(`Runtime config "${pathToLoad}": "budget.perPeriod.maxCostUsd" must be a non-negative number`);
110
+ }
111
+ }
112
+ // perPeriod requires both window and maxCostUsd to be functional. Reject
113
+ // partial config so misconfiguration is loud, not silently dropped at
114
+ // runtime. (The dual-undefined case is naturally caught by either
115
+ // single-field check below — they fire in source order, the window check
116
+ // wins. No separate guard needed.)
117
+ if (pp.window === undefined) {
118
+ throw new Error(`Runtime config "${pathToLoad}": "budget.perPeriod.window" is required when "budget.perPeriod" is set (must be "day", "week", or "month")`);
119
+ }
120
+ if (pp.maxCostUsd === undefined) {
121
+ throw new Error(`Runtime config "${pathToLoad}": "budget.perPeriod.maxCostUsd" is required when "budget.perPeriod" is set`);
122
+ }
123
+ }
124
+ if (budget.thresholds !== undefined) {
125
+ if (typeof budget.thresholds !== 'object' || budget.thresholds === null || Array.isArray(budget.thresholds)) {
126
+ throw new Error(`Runtime config "${pathToLoad}": "budget.thresholds" must be an object`);
127
+ }
128
+ const th = budget.thresholds;
129
+ if (th.warnAt !== undefined) {
130
+ if (typeof th.warnAt !== 'number' || !Number.isFinite(th.warnAt) || th.warnAt < 0) {
131
+ throw new Error(`Runtime config "${pathToLoad}": "budget.thresholds.warnAt" must be a non-negative number`);
132
+ }
133
+ }
134
+ if (th.abortAt !== undefined) {
135
+ if (typeof th.abortAt !== 'number' || !Number.isFinite(th.abortAt) || th.abortAt < 0) {
136
+ throw new Error(`Runtime config "${pathToLoad}": "budget.thresholds.abortAt" must be a non-negative number`);
137
+ }
138
+ }
139
+ }
140
+ }
141
+ if (obj.pricing !== undefined) {
142
+ if (typeof obj.pricing !== 'object' || obj.pricing === null || Array.isArray(obj.pricing)) {
143
+ throw new Error(`Runtime config "${pathToLoad}": "pricing" must be an object`);
144
+ }
145
+ const pricing = obj.pricing;
146
+ if (pricing.currency !== undefined && typeof pricing.currency !== 'string') {
147
+ throw new Error(`Runtime config "${pathToLoad}": "pricing.currency" must be a string`);
148
+ }
149
+ if (pricing.models !== undefined) {
150
+ if (typeof pricing.models !== 'object' || pricing.models === null || Array.isArray(pricing.models)) {
151
+ throw new Error(`Runtime config "${pathToLoad}": "pricing.models" must be an object`);
152
+ }
153
+ for (const [modelName, def] of Object.entries(pricing.models)) {
154
+ if (!def || typeof def !== 'object' || Array.isArray(def)) {
155
+ throw new Error(`Runtime config "${pathToLoad}": "pricing.models.${modelName}" must be an object`);
156
+ }
157
+ const d = def;
158
+ if (typeof d.inputPerMillion !== 'number' || typeof d.outputPerMillion !== 'number') {
159
+ throw new Error(`Runtime config "${pathToLoad}": "pricing.models.${modelName}" must have numeric "inputPerMillion" and "outputPerMillion"`);
160
+ }
161
+ if (!Number.isFinite(d.inputPerMillion) || d.inputPerMillion < 0) {
162
+ throw new Error(`Runtime config "${pathToLoad}": "pricing.models.${modelName}.inputPerMillion" must be a non-negative number`);
163
+ }
164
+ if (!Number.isFinite(d.outputPerMillion) || d.outputPerMillion < 0) {
165
+ throw new Error(`Runtime config "${pathToLoad}": "pricing.models.${modelName}.outputPerMillion" must be a non-negative number`);
166
+ }
167
+ }
168
+ }
169
+ }
78
170
  if (obj.logging !== undefined) {
79
171
  if (typeof obj.logging !== 'object' || obj.logging === null || Array.isArray(obj.logging)) {
80
172
  throw new Error(`Runtime config "${pathToLoad}": "logging" must be an object`);
@@ -1 +1 @@
1
- {"version":3,"file":"runtime-config.js","sourceRoot":"","sources":["../src/runtime-config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"runtime-config.js","sourceRoot":"","sources":["../src/runtime-config.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,82 @@
1
+ /**
2
+ * Scan history: persisted record of completed scans for cost dashboards
3
+ * and budget controls.
4
+ *
5
+ * Storage: `~/.aghast/history.json` by default (one file per user). When the
6
+ * home directory cannot be resolved, falls back to project-local
7
+ * `.aghast-history.json`. The path can be overridden in tests via the
8
+ * `AGHAST_HISTORY_FILE` env var or by passing `historyFile` to the helpers.
9
+ *
10
+ * Format: a single JSON document `{ "records": [...] }`. We keep this simple
11
+ * (no SQLite) so the file is human-readable and can be edited / pruned by
12
+ * hand. Corrupt files are logged and rebuilt to avoid blocking scans on a
13
+ * malformed history file.
14
+ */
15
+ import type { TokenUsage } from './types.js';
16
+ /** A single completed-scan record. */
17
+ export interface ScanRecord {
18
+ scanId: string;
19
+ /** ISO timestamp of scan start. */
20
+ startedAt: string;
21
+ /** ISO timestamp of scan end. */
22
+ endedAt: string;
23
+ /** Wall-clock duration in milliseconds. */
24
+ durationMs: number;
25
+ /** Repository path or remote URL. */
26
+ repository: string;
27
+ /** Repository remote URL when known. */
28
+ repositoryUrl?: string;
29
+ /** Models used during the scan. */
30
+ models: string[];
31
+ /** Aggregate token usage across the scan. */
32
+ tokenUsage?: TokenUsage;
33
+ /** Estimated total cost (in `currency`). */
34
+ totalCost: number;
35
+ /** ISO 4217 currency code. */
36
+ currency: string;
37
+ /** How the cost was determined. Absent on records written before this feature. */
38
+ costSource?: 'reported' | 'estimated' | 'estimated-unpriced' | 'legacy';
39
+ /** Which provider reported the cost when costSource === 'reported'. */
40
+ costReportedBy?: 'claude-agent-sdk' | 'opencode';
41
+ /** true when the scan ran with AGHAST_LOCAL_CLAUDE=true */
42
+ costCoveredBySubscription?: boolean;
43
+ /** Number of checks executed. */
44
+ checks: number;
45
+ /** Number of issues reported. */
46
+ issues: number;
47
+ }
48
+ /** Filters for queryScanHistory(). */
49
+ export interface HistoryFilters {
50
+ repository?: string;
51
+ /** Substring match against any element of `models`. */
52
+ model?: string;
53
+ /** Inclusive ISO timestamp lower bound on `startedAt`. */
54
+ since?: string;
55
+ /** Inclusive ISO timestamp upper bound on `startedAt`. */
56
+ until?: string;
57
+ }
58
+ /**
59
+ * Resolve the history file path.
60
+ *
61
+ * Precedence:
62
+ * 1. explicit `historyFile` argument
63
+ * 2. AGHAST_HISTORY_FILE env var
64
+ * 3. ~/.aghast/history.json when homedir is available
65
+ * 4. project-local `.aghast-history.json`
66
+ */
67
+ export declare function resolveHistoryFilePath(historyFile?: string): string;
68
+ /**
69
+ * Append a record to the scan history, deduplicating by scanId.
70
+ * If a record with the same scanId already exists, it is replaced.
71
+ */
72
+ export declare function saveScanRecord(record: ScanRecord, options?: {
73
+ historyFile?: string;
74
+ }): Promise<void>;
75
+ /**
76
+ * Load all scan records, applying optional filters.
77
+ * Records are returned newest-first (descending startedAt).
78
+ */
79
+ export declare function queryScanHistory(filters?: HistoryFilters, options?: {
80
+ historyFile?: string;
81
+ }): Promise<ScanRecord[]>;
82
+ //# sourceMappingURL=scan-history.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scan-history.d.ts","sourceRoot":"","sources":["../src/scan-history.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AAMH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAO7C,sCAAsC;AACtC,MAAM,WAAW,UAAU;IACzB,MAAM,EAAE,MAAM,CAAC;IACf,mCAAmC;IACnC,SAAS,EAAE,MAAM,CAAC;IAClB,iCAAiC;IACjC,OAAO,EAAE,MAAM,CAAC;IAChB,2CAA2C;IAC3C,UAAU,EAAE,MAAM,CAAC;IACnB,qCAAqC;IACrC,UAAU,EAAE,MAAM,CAAC;IACnB,wCAAwC;IACxC,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,mCAAmC;IACnC,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,6CAA6C;IAC7C,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,4CAA4C;IAC5C,SAAS,EAAE,MAAM,CAAC;IAClB,8BAA8B;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,kFAAkF;IAClF,UAAU,CAAC,EAAE,UAAU,GAAG,WAAW,GAAG,oBAAoB,GAAG,QAAQ,CAAC;IACxE,uEAAuE;IACvE,cAAc,CAAC,EAAE,kBAAkB,GAAG,UAAU,CAAC;IACjD,2DAA2D;IAC3D,yBAAyB,CAAC,EAAE,OAAO,CAAC;IACpC,iCAAiC;IACjC,MAAM,EAAE,MAAM,CAAC;IACf,iCAAiC;IACjC,MAAM,EAAE,MAAM,CAAC;CAChB;AAOD,sCAAsC;AACtC,MAAM,WAAW,cAAc;IAC7B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,uDAAuD;IACvD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,0DAA0D;IAC1D,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,0DAA0D;IAC1D,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;;;;;;;GAQG;AACH,wBAAgB,sBAAsB,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,MAAM,CAcnE;AAiCD;;;GAGG;AACH,wBAAsB,cAAc,CAAC,MAAM,EAAE,UAAU,EAAE,OAAO,GAAE;IAAE,WAAW,CAAC,EAAE,MAAM,CAAA;CAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAU9G;AAED;;;GAGG;AACH,wBAAsB,gBAAgB,CACpC,OAAO,GAAE,cAAmB,EAC5B,OAAO,GAAE;IAAE,WAAW,CAAC,EAAE,MAAM,CAAA;CAAO,GACrC,OAAO,CAAC,UAAU,EAAE,CAAC,CA8BvB"}