agentaudit 3.9.23 → 3.9.25

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 (2) hide show
  1. package/cli.mjs +35 -5
  2. package/package.json +1 -1
package/cli.mjs CHANGED
@@ -52,11 +52,18 @@ function resolveProvider(flagOverride, keys) {
52
52
  return p;
53
53
  }
54
54
 
55
- // Smart inference: if model override looks like "provider/model" (e.g. z-ai/glm-5, anthropic/claude-sonnet-4)
56
- // → auto-select OpenRouter (which uses that format)
55
+ // Smart inference: if model is set, try to match it to a provider
57
56
  const activeModel = globalModelOverride || process.env.AGENTAUDIT_MODEL || loadConfig()?.preferred_model;
58
- if (activeModel && activeModel.includes('/') && providers.openrouter) {
59
- return providers.openrouter;
57
+ if (activeModel) {
58
+ const lm = activeModel.toLowerCase();
59
+ // Direct provider models (no slash = native format)
60
+ if (!lm.includes('/')) {
61
+ if (lm.startsWith('claude') && providers.anthropic) return providers.anthropic;
62
+ if ((lm.startsWith('gpt') || lm.startsWith('o3') || lm.startsWith('o4') || lm.startsWith('o1')) && providers.openai) return providers.openai;
63
+ if (providers.ollama && (process.env.OLLAMA_MODEL || process.env.OLLAMA_HOST)) return providers.ollama;
64
+ }
65
+ // Slash format = OpenRouter convention (provider/model)
66
+ if (lm.includes('/') && providers.openrouter) return providers.openrouter;
60
67
  }
61
68
 
62
69
  // Auto-detect priority: Anthropic > OpenAI > OpenRouter > Custom > Ollama (local last — usually weaker)
@@ -1499,6 +1506,7 @@ async function auditRepo(url) {
1499
1506
 
1500
1507
  let report = null;
1501
1508
  let _lastLlmText = '';
1509
+ let providerMeta = {}; // Collect provider metadata for attestation
1502
1510
 
1503
1511
  try {
1504
1512
  if (resolvedProvider.id === 'anthropic') {
@@ -1527,6 +1535,12 @@ async function auditRepo(url) {
1527
1535
  const text = data.content?.[0]?.text || '';
1528
1536
  _lastLlmText = text;
1529
1537
  report = extractJSON(text);
1538
+ providerMeta = {
1539
+ provider_msg_id: data.id || null,
1540
+ input_tokens: data.usage?.input_tokens || null,
1541
+ output_tokens: data.usage?.output_tokens || null,
1542
+ reported_model: data.model || null,
1543
+ };
1530
1544
  } else {
1531
1545
  // OpenAI, OpenRouter, Ollama, or Custom (all use OpenAI-compatible chat completions API)
1532
1546
  let apiUrl, modelName, authHeaders;
@@ -1575,6 +1589,13 @@ async function auditRepo(url) {
1575
1589
  const text = data.choices?.[0]?.message?.content || '';
1576
1590
  _lastLlmText = text;
1577
1591
  report = extractJSON(text);
1592
+ providerMeta = {
1593
+ provider_msg_id: data.id || null,
1594
+ provider_fingerprint: data.system_fingerprint || null,
1595
+ input_tokens: data.usage?.prompt_tokens || null,
1596
+ output_tokens: data.usage?.completion_tokens || null,
1597
+ reported_model: data.model || null,
1598
+ };
1578
1599
  }
1579
1600
 
1580
1601
  console.log(` ${c.green}done${c.reset} ${c.dim}(${elapsed(start)})${c.reset}`);
@@ -1635,7 +1656,16 @@ async function auditRepo(url) {
1635
1656
  'Authorization': `Bearer ${creds.api_key}`,
1636
1657
  'Content-Type': 'application/json',
1637
1658
  },
1638
- body: JSON.stringify({ ...report, audit_model: actualModel, audit_provider: resolvedProvider.id }),
1659
+ body: JSON.stringify({
1660
+ ...report,
1661
+ audit_model: providerMeta.reported_model || actualModel,
1662
+ audit_provider: resolvedProvider.id,
1663
+ provider_msg_id: providerMeta.provider_msg_id || undefined,
1664
+ provider_fingerprint: providerMeta.provider_fingerprint || undefined,
1665
+ input_tokens: providerMeta.input_tokens || undefined,
1666
+ output_tokens: providerMeta.output_tokens || undefined,
1667
+ audit_duration_ms: Date.now() - start,
1668
+ }),
1639
1669
  signal: AbortSignal.timeout(15_000),
1640
1670
  });
1641
1671
  if (res.ok) {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "agentaudit",
3
- "version": "3.9.23",
3
+ "version": "3.9.25",
4
4
  "description": "Security scanner for AI packages — MCP server + CLI",
5
5
  "type": "module",
6
6
  "bin": {