@agentguard-run/spend 0.15.7 → 0.15.8
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 +61 -1
- package/dist/anchor/index.d.ts +35 -0
- package/dist/anchor/index.d.ts.map +1 -0
- package/dist/anchor/index.js +80 -0
- package/dist/anchor/index.js.map +1 -0
- package/dist/anchor/opentimestamps.d.ts +55 -0
- package/dist/anchor/opentimestamps.d.ts.map +1 -0
- package/dist/anchor/opentimestamps.js +179 -0
- package/dist/anchor/opentimestamps.js.map +1 -0
- package/dist/anchor/store.d.ts +25 -0
- package/dist/anchor/store.d.ts.map +1 -0
- package/dist/anchor/store.js +112 -0
- package/dist/anchor/store.js.map +1 -0
- package/dist/anchor/types.d.ts +84 -0
- package/dist/anchor/types.d.ts.map +1 -0
- package/dist/anchor/types.js +28 -0
- package/dist/anchor/types.js.map +1 -0
- package/dist/cli/anchor.d.ts +10 -0
- package/dist/cli/anchor.d.ts.map +1 -0
- package/dist/cli/anchor.js +126 -0
- package/dist/cli/anchor.js.map +1 -0
- package/dist/cli/colors.d.ts +1 -0
- package/dist/cli/colors.d.ts.map +1 -1
- package/dist/cli/colors.js +4 -0
- package/dist/cli/colors.js.map +1 -1
- package/dist/cli/main.d.ts.map +1 -1
- package/dist/cli/main.js +10 -0
- package/dist/cli/main.js.map +1 -1
- package/dist/cli/sample.d.ts +43 -0
- package/dist/cli/sample.d.ts.map +1 -0
- package/dist/cli/sample.js +154 -0
- package/dist/cli/sample.js.map +1 -0
- package/dist/cli/serve.d.ts +1 -1
- package/dist/cli/serve.d.ts.map +1 -1
- package/dist/cli/serve.js +10 -4
- package/dist/cli/serve.js.map +1 -1
- package/dist/cli/verify.d.ts.map +1 -1
- package/dist/cli/verify.js +57 -0
- package/dist/cli/verify.js.map +1 -1
- package/dist/dashboard/aggregate.d.ts +2 -0
- package/dist/dashboard/aggregate.d.ts.map +1 -1
- package/dist/dashboard/aggregate.js.map +1 -1
- package/dist/decision-log.d.ts +28 -0
- package/dist/decision-log.d.ts.map +1 -1
- package/dist/decision-log.js +34 -0
- package/dist/decision-log.js.map +1 -1
- package/dist/index.d.ts +5 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +27 -4
- package/dist/index.js.map +1 -1
- package/dist/samples/flows.d.ts +28 -0
- package/dist/samples/flows.d.ts.map +1 -0
- package/dist/samples/flows.js +151 -0
- package/dist/samples/flows.js.map +1 -0
- package/dist/samples/verifier-html.d.ts +29 -0
- package/dist/samples/verifier-html.d.ts.map +1 -0
- package/dist/samples/verifier-html.js +188 -0
- package/dist/samples/verifier-html.js.map +1 -0
- package/package.json +1 -1
- package/src/bindings/bindings-enforce.test.ts +97 -0
- package/src/dashboard/aggregate.ts +8 -1
package/dist/cli/serve.d.ts
CHANGED
|
@@ -6,6 +6,6 @@
|
|
|
6
6
|
*
|
|
7
7
|
* No outbound network calls. Pure Node stdlib HTTP server.
|
|
8
8
|
*/
|
|
9
|
-
export declare const DASHBOARD_HTML = "<!doctype html>\n<html lang=\"en\"><head><meta charset=\"utf-8\" />\n<title>AgentGuard Spend \u00B7 Local Dashboard</title>\n<meta name=\"viewport\" content=\"width=device-width,initial-scale=1\" />\n<style>\n:root { --bg:#07101E; --surface:#0C1828; --surface-2:#0F1F35; --border:rgba(42,188,180,0.18); --border-dim:rgba(255,255,255,0.08); --teal:#2abcb4; --teal-glow:rgba(42,188,180,0.15); --text:#FFF; --text-2:#DCE8F0; --muted:#8AA0B3; --green:#4ade80; --amber:#F1C40F; --red:#FF6B6B; --code:#E6F0F5; }\n* { box-sizing: border-box; margin: 0; padding: 0; }\nhtml, body { background: var(--bg); color: var(--text-2); font-family: 'DM Sans', -apple-system, system-ui, sans-serif; font-size: 15px; min-height: 100vh; -webkit-font-smoothing: antialiased; }\na { color: var(--teal); text-decoration: none; } a:hover { text-decoration: underline; }\ncode, .mono { font-family: 'JetBrains Mono', monospace; font-size: 13px; }\n.topbar { display: flex; align-items: center; justify-content: space-between; padding: 16px 32px; border-bottom: 1px solid var(--border-dim); background: rgba(7,16,30,0.92); backdrop-filter: blur(10px); position: sticky; top: 0; z-index: 50; }\n.brand { display: inline-flex; align-items: center; gap: 12px; }\n.brand .hex { width: 22px; height: 22px; background: var(--teal); color: var(--bg); display: inline-flex; align-items: center; justify-content: center; font-weight: 800; font-size: 13px; border-radius: 4px; }\n.brand .name { font-family: 'Cormorant Garamond', Georgia, serif; font-size: 22px; color: var(--text); }\n.brand .name .accent { color: var(--teal); }\n.brand .tag { margin-left: 8px; font-family: 'JetBrains Mono', monospace; font-size: 10px; font-weight: 700; letter-spacing: 0.15em; text-transform: uppercase; color: var(--teal); padding: 3px 8px; border: 1px solid var(--border); border-radius: 3px; }\n.refresh-btn { font-family: 'JetBrains Mono', monospace; font-size: 12px; color: var(--teal); background: transparent; border: 1px solid var(--teal); border-radius: 4px; padding: 7px 14px; cursor: pointer; }\n.refresh-btn:hover { background: var(--teal-glow); }\n.shell { padding: 32px; max-width: 1280px; margin: 0 auto; }\n.stats-row { display: grid; grid-template-columns: repeat(4, 1fr); gap: 16px; margin-bottom: 28px; }\n@media (max-width: 800px) { .stats-row { grid-template-columns: repeat(2, 1fr); } }\n.stat-card { background: var(--surface); border: 1px solid var(--border); border-radius: 8px; padding: 18px 20px; }\n.stat-card .label { font-family: 'JetBrains Mono', monospace; font-size: 10px; font-weight: 700; letter-spacing: 0.15em; text-transform: uppercase; color: var(--muted); margin-bottom: 8px; }\n.stat-card .value { font-size: 28px; font-weight: 800; color: var(--text); font-variant-numeric: tabular-nums; letter-spacing: -0.02em; }\n.stat-card.green .value { color: var(--green); }\n.stat-card.red .value { color: var(--red); }\n.stat-card.amber .value { color: var(--amber); }\n.stat-card .sub { color: var(--muted); font-size: 12px; margin-top: 4px; }\n.section { background: var(--surface); border: 1px solid var(--border); border-radius: 8px; padding: 24px 26px; margin-bottom: 24px; }\n.section h2 { font-family: 'JetBrains Mono', monospace; font-size: 11px; font-weight: 700; letter-spacing: 0.15em; text-transform: uppercase; color: var(--teal); margin-bottom: 16px; }\n.two-col { display: grid; grid-template-columns: 1fr 1fr; gap: 24px; }\n@media (max-width: 800px) { .two-col { grid-template-columns: 1fr; } }\n.bar-row { display: flex; align-items: center; gap: 12px; padding: 8px 0; border-bottom: 1px solid var(--border-dim); font-size: 13.5px; }\n.bar-row:last-child { border-bottom: none; }\n.bar-row .name { width: 35%; color: var(--text); }\n.bar-row .bar { flex: 1; height: 10px; background: var(--surface-2); border-radius: 2px; overflow: hidden; }\n.bar-row .bar-fill { height: 100%; background: var(--teal); transition: width 0.4s; }\n.bar-row .amount { width: 80px; text-align: right; color: var(--green); font-weight: 700; font-family: 'JetBrains Mono', monospace; font-size: 13px; }\ntable { width: 100%; border-collapse: collapse; font-size: 13px; }\nth { text-align: left; padding: 10px 12px; font-family: 'JetBrains Mono', monospace; font-size: 10px; letter-spacing: 0.12em; text-transform: uppercase; color: var(--muted); border-bottom: 1px solid var(--border); }\ntd { padding: 12px; border-bottom: 1px solid var(--border-dim); vertical-align: top; }\ntd.action-block { color: var(--red); font-weight: 700; }\ntd.action-downgrade { color: var(--amber); font-weight: 700; }\ntd.action-allow { color: var(--green); }\ntd.action-shadow { color: var(--muted); }\ntd .mono { color: var(--code); }\n.pill { display: inline-block; padding: 2px 8px; border-radius: 3px; font-family: 'JetBrains Mono', monospace; font-size: 11px; background: var(--surface-2); color: var(--text-2); border: 1px solid var(--border-dim); }\n.empty { text-align: center; padding: 56px 20px; color: var(--muted); font-size: 14px; }\n.empty code { display: block; margin-top: 8px; font-size: 14px; color: var(--teal); }\n.usage-panel { display: flex; flex-direction: column; gap: 10px; }\n.usage-head { display: flex; align-items: baseline; justify-content: space-between; flex-wrap: wrap; gap: 8px; }\n.usage-head .primary { font-size: 15px; color: var(--text); }\n.usage-head .primary b { color: var(--green); font-variant-numeric: tabular-nums; }\n.usage-head .reset { font-family: 'JetBrains Mono', monospace; font-size: 11px; color: var(--muted); }\n.usage-track { height: 14px; background: var(--surface-2); border-radius: 3px; overflow: hidden; border: 1px solid var(--border-dim); }\n.usage-fill { height: 100%; background: linear-gradient(90deg, var(--teal), var(--green)); transition: width 0.4s; }\n.usage-fill.warn { background: linear-gradient(90deg, var(--amber), var(--red)); }\n.usage-foot { font-size: 12px; color: var(--muted); }\n.usage-foot .quota-note { color: var(--muted); }\n.usage-tenants { display: flex; flex-direction: column; gap: 2px; margin-top: 4px; }\n.usage-bonus { margin-top: 10px; padding: 12px 14px; border-left: 4px solid var(--green); background: rgba(74,222,128,0.08); border-radius: 4px; font-size: 13px; color: var(--text-2); }\n.usage-bonus b { color: var(--green); }\n.live-indicator { display: inline-block; width: 8px; height: 8px; border-radius: 50%; background: var(--green); margin-right: 6px; animation: pulse 2s ease-in-out infinite; }\n@keyframes pulse { 0%, 100% { opacity: 1; box-shadow: 0 0 0 0 rgba(74,222,128,0.4); } 50% { opacity: 0.7; box-shadow: 0 0 0 6px rgba(74,222,128,0); } }\n</style></head><body>\n<div class=\"topbar\">\n <div class=\"brand\"><span class=\"hex\">\u2B21</span><span class=\"name\">Agent<span class=\"accent\">Guard</span></span><span class=\"tag\">Spend \u00B7 Local Dashboard</span></div>\n <div><span class=\"mono\" id=\"tamper-badge\" title=\"hash-chain + Ed25519 signature verification of the local ledger\" style=\"margin-right:16px;padding:4px 10px;border-radius:3px;border:1px solid var(--border-dim);color:var(--muted);\">tamper-evidence: \u2026</span><span class=\"mono\" style=\"color: var(--muted); margin-right: 16px;\"><span class=\"live-indicator\"></span>v__VERSION__ \u00B7 localhost:__PORT__</span><button class=\"refresh-btn\" onclick=\"loadStats()\">Refresh</button></div>\n</div>\n<div class=\"shell\">\n <div class=\"stats-row\">\n <div class=\"stat-card green\"><div class=\"label\">Spent (all-time)</div><div class=\"value\" id=\"spent\">$0.00</div><div class=\"sub\" id=\"spent-sub\">across <span id=\"call-count\">0</span> calls</div></div>\n <div class=\"stat-card red\"><div class=\"label\">Saved by blocks</div><div class=\"value\" id=\"saved\">+$0.00</div><div class=\"sub\"><span id=\"blocked-count\">0</span> calls blocked</div></div>\n <div class=\"stat-card amber\"><div class=\"label\">Downgraded</div><div class=\"value\" id=\"downgraded\">0</div><div class=\"sub\">calls routed to cheaper model</div></div>\n <div class=\"stat-card\"><div class=\"label\">Allowed</div><div class=\"value\" id=\"allowed\">0</div><div class=\"sub\">policy-checked & passed</div></div>\n </div>\n <div class=\"section\" id=\"free-tier-section\">\n <h2>Free Tier \u00B7 Enforcement Calls This Month</h2>\n <div class=\"usage-panel\">\n <div class=\"usage-head\">\n <div class=\"primary\">Free tier: <b id=\"ft-used\">0</b> / <span id=\"ft-limit\">0</span> enforcement calls this month <span id=\"ft-pct\" style=\"color:var(--muted)\">(0%)</span></div>\n <div class=\"reset\" id=\"ft-reset\">resets \u2014</div>\n </div>\n <div class=\"usage-track\"><div class=\"usage-fill\" id=\"ft-fill\" style=\"width:0%\"></div></div>\n <div class=\"usage-foot\"><span class=\"quota-note\">This is AgentGuard's free-tier <b>call quota</b> (our generosity) \u2014 a separate concept from your <b>spend cap</b>, your hard money guardrail, which AgentGuard never auto-changes.</span></div>\n <div class=\"usage-tenants\" id=\"ft-tenants\"></div>\n <div class=\"usage-bonus\" id=\"ft-bonus\" style=\"display:none\"></div>\n </div>\n </div>\n <div class=\"two-col\">\n <div class=\"section\"><h2>Spend by Agent</h2><div id=\"by-agent\"></div></div>\n <div class=\"section\"><h2>Spend by Provider</h2><div id=\"by-provider\"></div></div>\n </div>\n <div class=\"section\">\n <h2>Recent Decisions</h2>\n <table><thead><tr><th style=\"width:80px\">Action</th><th>Agent</th><th>Provider \u00B7 Model</th><th style=\"width:120px;text-align:right\">Amount</th><th style=\"width:120px\">Receipt</th></tr></thead><tbody id=\"recent-rows\"></tbody></table>\n </div>\n <div style=\"text-align: center; color: var(--muted); font-size: 12px; margin-top: 32px;\">Local-only. No outbound network calls. Reads from <code class=\"mono\">~/.agentguard/*/decisions.ndjson</code>.<br/>Source: <a href=\"https://agentguard.run\">agentguard.run</a> \u00B7 <a href=\"https://www.npmjs.com/package/@agentguard-run/spend\">npm</a> \u00B7 <a href=\"https://pypi.org/project/agentguard-spend/\">pypi</a></div>\n</div>\n<script>\nfunction formatCents(cents) { const sign = cents < 0 ? '-' : ''; const abs = Math.abs(Math.round(cents)); const dollars = Math.floor(abs / 100); const remainder = abs % 100; return sign + '$' + dollars.toLocaleString() + '.' + String(remainder).padStart(2, '0'); }\nfunction escapeHtml(value) { return String(value == null ? '' : value).replace(/[&<>\"']/g, function(ch) { return ({ '&': '&', '<': '<', '>': '>', '\"': '"', \"'\": ''' })[ch]; }); }\nfunction safeClassToken(value) { const clean = String(value || 'allow').toLowerCase().replace(/[^a-z0-9_-]/g, '').slice(0, 24); return clean || 'allow'; }\nfunction safeHash(value) { return String(value || '').toLowerCase().replace(/[^0-9a-f]/g, '').slice(0, 128); }\nfunction renderBars(containerId, items, key) { const el = document.getElementById(containerId); if (!items.length) { el.innerHTML = '<div style=\"color:var(--muted);font-size:13px;padding:8px 0\">no data yet</div>'; return; } const max = Math.max(...items.map(i => Number(i.spent_cents) || 0)) || 1; el.innerHTML = items.slice(0, 8).map(i => '<div class=\"bar-row\"><span class=\"name\">' + escapeHtml(i[key]) + '</span><span class=\"bar\"><span class=\"bar-fill\" style=\"width:' + ((Number(i.spent_cents) || 0)/max*100).toFixed(1) + '%\"></span></span><span class=\"amount\">' + escapeHtml(formatCents(i.spent_cents)) + '</span></div>').join(''); }\nfunction renderRecent(items) { const tbody = document.getElementById('recent-rows'); if (!items.length) { tbody.innerHTML = '<tr><td colspan=\"5\"><div class=\"empty\">no decisions yet.<br>run <code>agentguard demo</code> to see a real signed receipt here.</div></td></tr>'; return; } tbody.innerHTML = items.map(d => { const dec = d.decision || {}; const scope = String(dec.triggeredScopeKey || ''); const agentMatch = scope.match(/agentId=([^|]+)/); const agent = agentMatch ? escapeHtml(agentMatch[1]) : '<span style=\"color:var(--muted)\">-</span>'; const action = safeClassToken(dec.action || 'allow'); const entryHash = safeHash(d.entryHash); const shortHash = entryHash ? escapeHtml(entryHash.slice(0, 12)) + '...' : 'missing'; return '<tr><td class=\"action-' + action + '\">' + escapeHtml(action.toUpperCase()) + '</td><td class=\"mono\">' + agent + '</td><td><span class=\"pill\">' + escapeHtml(dec.provider || '?') + '</span> ' + escapeHtml(dec.modelRequested || '') + '</td><td style=\"text-align:right\" class=\"mono\">' + escapeHtml(formatCents(dec.projectedCents || 0)) + '</td><td class=\"mono\"><a href=\"#\" data-entry-hash=\"' + entryHash + '\">' + shortHash + '</a></td></tr>'; }).join(''); tbody.querySelectorAll('a[data-entry-hash]').forEach(function(a) { a.addEventListener('click', function(event) { event.preventDefault(); verifyReceipt(a.getAttribute('data-entry-hash') || ''); }); }); }\nasync function verifyReceipt(hash) { try { const r = await fetch('/api/verify/' + hash); const d = await r.json(); alert(d.ok ? '\u2713 verified: full chain valid' : '\u2717 verification failed: ' + (d.reason || 'unknown')); } catch (e) { alert('verify error: ' + e); } return false; }\nfunction renderTamper(integrity) { const el = document.getElementById('tamper-badge'); if (!el) return; const i = integrity || {}; if (i.verified) { el.textContent = '\u2713 tamper-evidence: ' + (i.entries || 0) + ' entries verified'; el.style.color = 'var(--green)'; el.style.borderColor = 'var(--green)'; } else { el.textContent = '\u2717 tamper-evidence: ' + (i.reason || 'unverified'); el.style.color = 'var(--red)'; el.style.borderColor = 'var(--red)'; } }\nfunction renderFreeTier(ft) { if (!ft) return; const used = Number(ft.used) || 0; const limit = Number(ft.limit) || 0; const pct = Number(ft.pct_used) || 0; document.getElementById('ft-used').textContent = used.toLocaleString(); document.getElementById('ft-limit').textContent = limit.toLocaleString(); document.getElementById('ft-pct').textContent = '(' + pct + '%)'; const fill = document.getElementById('ft-fill'); fill.style.width = Math.max(0, Math.min(100, pct)) + '%'; fill.className = 'usage-fill' + (pct >= 80 ? ' warn' : ''); const reset = document.getElementById('ft-reset'); reset.textContent = ft.resets_at ? 'resets ' + String(ft.resets_at).slice(0, 10) : 'resets \u2014'; const tEl = document.getElementById('ft-tenants'); const tenants = ft.tenants || []; if (tenants.length > 1) { tEl.innerHTML = tenants.map(function(t) { const tp = Number(t.pct_used) || 0; return '<div class=\"bar-row\"><span class=\"name\">' + escapeHtml(t.tenant) + '</span><span class=\"bar\"><span class=\"bar-fill\" style=\"width:' + Math.max(0, Math.min(100, tp)).toFixed(1) + '%\"></span></span><span class=\"amount\">' + (Number(t.used)||0).toLocaleString() + '</span></div>'; }).join(''); } else { tEl.innerHTML = ''; } const bonus = document.getElementById('ft-bonus'); if (ft.bonus_message) { bonus.style.display = 'block'; bonus.innerHTML = '\uD83C\uDF81 <b>Bonus month, on us.</b> ' + escapeHtml(ft.bonus_message); } else { bonus.style.display = 'none'; } }\nasync function loadStats() { try { const r = await fetch('/api/stats'); const s = await r.json(); renderTamper(s.integrity); renderFreeTier(s.free_tier); document.getElementById('spent').textContent = formatCents(s.totals.spent_cents); document.getElementById('saved').textContent = '+' + formatCents(s.totals.saved_cents); document.getElementById('downgraded').textContent = s.totals.downgraded; document.getElementById('allowed').textContent = s.totals.allowed; document.getElementById('call-count').textContent = s.totals.calls; document.getElementById('blocked-count').textContent = s.totals.blocked; renderBars('by-agent', s.by_agent, 'agent'); renderBars('by-provider', s.by_provider, 'provider'); renderRecent(s.recent); } catch (e) { console.error('load failed:', e); } }\nloadStats();\nsetInterval(loadStats, 5000);\n</script></body></html>\n";
|
|
9
|
+
export declare const DASHBOARD_HTML = "<!doctype html>\n<html lang=\"en\"><head><meta charset=\"utf-8\" />\n<title>AgentGuard Spend \u00B7 Local Dashboard</title>\n<meta name=\"viewport\" content=\"width=device-width,initial-scale=1\" />\n<style>\n:root { --bg:#07101E; --surface:#0C1828; --surface-2:#0F1F35; --border:rgba(42,188,180,0.18); --border-dim:rgba(255,255,255,0.08); --teal:#2abcb4; --teal-glow:rgba(42,188,180,0.15); --text:#FFF; --text-2:#DCE8F0; --muted:#8AA0B3; --green:#4ade80; --amber:#F1C40F; --red:#FF6B6B; --code:#E6F0F5; }\n* { box-sizing: border-box; margin: 0; padding: 0; }\nhtml, body { background: var(--bg); color: var(--text-2); font-family: 'DM Sans', -apple-system, system-ui, sans-serif; font-size: 15px; min-height: 100vh; -webkit-font-smoothing: antialiased; }\na { color: var(--teal); text-decoration: none; } a:hover { text-decoration: underline; }\ncode, .mono { font-family: 'JetBrains Mono', monospace; font-size: 13px; }\n.topbar { display: flex; align-items: center; justify-content: space-between; padding: 16px 32px; border-bottom: 1px solid var(--border-dim); background: rgba(7,16,30,0.92); backdrop-filter: blur(10px); position: sticky; top: 0; z-index: 50; }\n.brand { display: inline-flex; align-items: center; gap: 12px; }\n.brand .hex { width: 22px; height: 22px; background: var(--teal); color: var(--bg); display: inline-flex; align-items: center; justify-content: center; font-weight: 800; font-size: 13px; border-radius: 4px; }\n.brand .name { font-family: 'Cormorant Garamond', Georgia, serif; font-size: 22px; color: var(--text); }\n.brand .name .accent { color: var(--teal); }\n.brand .tag { margin-left: 8px; font-family: 'JetBrains Mono', monospace; font-size: 10px; font-weight: 700; letter-spacing: 0.15em; text-transform: uppercase; color: var(--teal); padding: 3px 8px; border: 1px solid var(--border); border-radius: 3px; }\n.refresh-btn { font-family: 'JetBrains Mono', monospace; font-size: 12px; color: var(--teal); background: transparent; border: 1px solid var(--teal); border-radius: 4px; padding: 7px 14px; cursor: pointer; }\n.refresh-btn:hover { background: var(--teal-glow); }\n.shell { padding: 32px; max-width: 1280px; margin: 0 auto; }\n.stats-row { display: grid; grid-template-columns: repeat(4, 1fr); gap: 16px; margin-bottom: 28px; }\n@media (max-width: 800px) { .stats-row { grid-template-columns: repeat(2, 1fr); } }\n.stat-card { background: var(--surface); border: 1px solid var(--border); border-radius: 8px; padding: 18px 20px; }\n.stat-card .label { font-family: 'JetBrains Mono', monospace; font-size: 10px; font-weight: 700; letter-spacing: 0.15em; text-transform: uppercase; color: var(--muted); margin-bottom: 8px; }\n.stat-card .value { font-size: 28px; font-weight: 800; color: var(--text); font-variant-numeric: tabular-nums; letter-spacing: -0.02em; }\n.stat-card.green .value { color: var(--green); }\n.stat-card.red .value { color: var(--red); }\n.stat-card.amber .value { color: var(--amber); }\n.stat-card .sub { color: var(--muted); font-size: 12px; margin-top: 4px; }\n.section { background: var(--surface); border: 1px solid var(--border); border-radius: 8px; padding: 24px 26px; margin-bottom: 24px; }\n.section h2 { font-family: 'JetBrains Mono', monospace; font-size: 11px; font-weight: 700; letter-spacing: 0.15em; text-transform: uppercase; color: var(--teal); margin-bottom: 16px; }\n.two-col { display: grid; grid-template-columns: 1fr 1fr; gap: 24px; }\n@media (max-width: 800px) { .two-col { grid-template-columns: 1fr; } }\n.bar-row { display: flex; align-items: center; gap: 12px; padding: 8px 0; border-bottom: 1px solid var(--border-dim); font-size: 13.5px; }\n.bar-row:last-child { border-bottom: none; }\n.bar-row .name { width: 35%; color: var(--text); }\n.bar-row .bar { flex: 1; height: 10px; background: var(--surface-2); border-radius: 2px; overflow: hidden; }\n.bar-row .bar-fill { height: 100%; background: var(--teal); transition: width 0.4s; }\n.bar-row .amount { width: 80px; text-align: right; color: var(--green); font-weight: 700; font-family: 'JetBrains Mono', monospace; font-size: 13px; }\ntable { width: 100%; border-collapse: collapse; font-size: 13px; }\nth { text-align: left; padding: 10px 12px; font-family: 'JetBrains Mono', monospace; font-size: 10px; letter-spacing: 0.12em; text-transform: uppercase; color: var(--muted); border-bottom: 1px solid var(--border); }\ntd { padding: 12px; border-bottom: 1px solid var(--border-dim); vertical-align: top; }\ntd.action-block { color: var(--red); font-weight: 700; }\ntd.action-downgrade { color: var(--amber); font-weight: 700; }\ntd.action-allow { color: var(--green); }\ntd.action-shadow { color: var(--muted); }\ntd .mono { color: var(--code); }\n.pill { display: inline-block; padding: 2px 8px; border-radius: 3px; font-family: 'JetBrains Mono', monospace; font-size: 11px; background: var(--surface-2); color: var(--text-2); border: 1px solid var(--border-dim); }\n.empty { text-align: center; padding: 56px 20px; color: var(--muted); font-size: 14px; }\n.empty code { display: block; margin-top: 8px; font-size: 14px; color: var(--teal); }\n.usage-panel { display: flex; flex-direction: column; gap: 10px; }\n.usage-head { display: flex; align-items: baseline; justify-content: space-between; flex-wrap: wrap; gap: 8px; }\n.usage-head .primary { font-size: 15px; color: var(--text); }\n.usage-head .primary b { color: var(--green); font-variant-numeric: tabular-nums; }\n.usage-head .reset { font-family: 'JetBrains Mono', monospace; font-size: 11px; color: var(--muted); }\n.usage-track { height: 14px; background: var(--surface-2); border-radius: 3px; overflow: hidden; border: 1px solid var(--border-dim); }\n.usage-fill { height: 100%; background: linear-gradient(90deg, var(--teal), var(--green)); transition: width 0.4s; }\n.usage-fill.warn { background: linear-gradient(90deg, var(--amber), var(--red)); }\n.usage-foot { font-size: 12px; color: var(--muted); }\n.usage-foot .quota-note { color: var(--muted); }\n.usage-tenants { display: flex; flex-direction: column; gap: 2px; margin-top: 4px; }\n.usage-bonus { margin-top: 10px; padding: 12px 14px; border-left: 4px solid var(--green); background: rgba(74,222,128,0.08); border-radius: 4px; font-size: 13px; color: var(--text-2); }\n.usage-bonus b { color: var(--green); }\n.live-indicator { display: inline-block; width: 8px; height: 8px; border-radius: 50%; background: var(--green); margin-right: 6px; animation: pulse 2s ease-in-out infinite; }\n@keyframes pulse { 0%, 100% { opacity: 1; box-shadow: 0 0 0 0 rgba(74,222,128,0.4); } 50% { opacity: 0.7; box-shadow: 0 0 0 6px rgba(74,222,128,0); } }\n</style></head><body>\n<div class=\"topbar\">\n <div class=\"brand\"><span class=\"hex\">\u2B21</span><span class=\"name\">Agent<span class=\"accent\">Guard</span></span><span class=\"tag\">Spend \u00B7 Local Dashboard</span></div>\n <div><span class=\"mono\" id=\"tamper-badge\" title=\"hash-chain + Ed25519 signature verification of the local ledger\" style=\"margin-right:16px;padding:4px 10px;border-radius:3px;border:1px solid var(--border-dim);color:var(--muted);\">tamper-evidence: \u2026</span><span class=\"mono\" style=\"color: var(--muted); margin-right: 16px;\"><span class=\"live-indicator\"></span>v__VERSION__ \u00B7 localhost:__PORT__</span><button class=\"refresh-btn\" onclick=\"loadStats()\">Refresh</button></div>\n</div>\n<div class=\"shell\">\n <div class=\"stats-row\">\n <div class=\"stat-card green\"><div class=\"label\">Spent (all-time)</div><div class=\"value\" id=\"spent\">$0.00</div><div class=\"sub\" id=\"spent-sub\">across <span id=\"call-count\">0</span> calls</div></div>\n <div class=\"stat-card red\"><div class=\"label\">Saved by blocks</div><div class=\"value\" id=\"saved\">+$0.00</div><div class=\"sub\"><span id=\"blocked-count\">0</span> calls blocked</div></div>\n <div class=\"stat-card amber\"><div class=\"label\">Downgraded</div><div class=\"value\" id=\"downgraded\">0</div><div class=\"sub\">calls routed to cheaper model</div></div>\n <div class=\"stat-card\"><div class=\"label\">Allowed</div><div class=\"value\" id=\"allowed\">0</div><div class=\"sub\">policy-checked & passed</div></div>\n </div>\n <div class=\"section\" id=\"free-tier-section\">\n <h2>Free Tier \u00B7 Enforcement Calls This Month</h2>\n <div class=\"usage-panel\">\n <div class=\"usage-head\">\n <div class=\"primary\">Free tier: <b id=\"ft-used\">0</b> / <span id=\"ft-limit\">0</span> enforcement calls this month <span id=\"ft-pct\" style=\"color:var(--muted)\">(0%)</span></div>\n <div class=\"reset\" id=\"ft-reset\">resets \u2014</div>\n </div>\n <div class=\"usage-track\"><div class=\"usage-fill\" id=\"ft-fill\" style=\"width:0%\"></div></div>\n <div class=\"usage-foot\"><span class=\"quota-note\">This is AgentGuard's free-tier <b>call quota</b> (our generosity) \u2014 a separate concept from your <b>spend cap</b>, your hard money guardrail, which AgentGuard never auto-changes.</span></div>\n <div class=\"usage-tenants\" id=\"ft-tenants\"></div>\n <div class=\"usage-bonus\" id=\"ft-bonus\" style=\"display:none\"></div>\n </div>\n </div>\n <div class=\"two-col\">\n <div class=\"section\"><h2>Spend by Agent</h2><div id=\"by-agent\"></div></div>\n <div class=\"section\"><h2>Spend by Provider</h2><div id=\"by-provider\"></div></div>\n </div>\n <div class=\"section\">\n <h2>Recent Decisions</h2>\n <table><thead><tr><th style=\"width:80px\">Action</th><th>Agent</th><th>Provider \u00B7 Model</th><th style=\"width:120px;text-align:right\">Amount</th><th style=\"width:120px\">Receipt</th></tr></thead><tbody id=\"recent-rows\"></tbody></table>\n </div>\n <div style=\"text-align: center; color: var(--muted); font-size: 12px; margin-top: 32px;\">Local-only. No outbound network calls. Reads from <code class=\"mono\">~/.agentguard/*/decisions.ndjson</code>.<br/>Source: <a href=\"https://agentguard.run\">agentguard.run</a> \u00B7 <a href=\"https://www.npmjs.com/package/@agentguard-run/spend\">npm</a> \u00B7 <a href=\"https://pypi.org/project/agentguard-spend/\">pypi</a></div>\n</div>\n<script>\nfunction formatCents(cents) { const sign = cents < 0 ? '-' : ''; const abs = Math.abs(Math.round(cents)); const dollars = Math.floor(abs / 100); const remainder = abs % 100; return sign + '$' + dollars.toLocaleString() + '.' + String(remainder).padStart(2, '0'); }\nfunction escapeHtml(value) { return String(value == null ? '' : value).replace(/[&<>\"']/g, function(ch) { return ({ '&': '&', '<': '<', '>': '>', '\"': '"', \"'\": ''' })[ch]; }); }\nfunction safeClassToken(value) { const clean = String(value || 'allow').toLowerCase().replace(/[^a-z0-9_-]/g, '').slice(0, 24); return clean || 'allow'; }\nfunction safeHash(value) { return String(value || '').toLowerCase().replace(/[^0-9a-f]/g, '').slice(0, 128); }\nfunction renderBars(containerId, items, key) { const el = document.getElementById(containerId); if (!items.length) { el.innerHTML = '<div style=\"color:var(--muted);font-size:13px;padding:8px 0\">no data yet</div>'; return; } const max = Math.max(...items.map(i => Number(i.spent_cents) || 0)) || 1; el.innerHTML = items.slice(0, 8).map(i => '<div class=\"bar-row\"><span class=\"name\">' + escapeHtml(i[key]) + '</span><span class=\"bar\"><span class=\"bar-fill\" style=\"width:' + ((Number(i.spent_cents) || 0)/max*100).toFixed(1) + '%\"></span></span><span class=\"amount\">' + escapeHtml(formatCents(i.spent_cents)) + '</span></div>').join(''); }\nfunction renderRecent(items) { const tbody = document.getElementById('recent-rows'); if (!items.length) { tbody.innerHTML = '<tr><td colspan=\"5\"><div class=\"empty\">no decisions yet.<br>run <code>agentguard demo</code> to see a real signed receipt here.</div></td></tr>'; return; } tbody.innerHTML = items.map(d => { const dec = d.decision || {}; const scope = String(dec.triggeredScopeKey || ''); const agentMatch = scope.match(/agentId=([^|]+)/); const agent = agentMatch ? escapeHtml(agentMatch[1]) : '<span style=\"color:var(--muted)\">-</span>'; const action = safeClassToken(dec.action || 'allow'); const entryHash = safeHash(d.entryHash); const shortHash = entryHash ? escapeHtml(entryHash.slice(0, 12)) + '...' : 'missing'; return '<tr><td class=\"action-' + action + '\">' + escapeHtml(action.toUpperCase()) + '</td><td class=\"mono\">' + agent + '</td><td><span class=\"pill\">' + escapeHtml(dec.provider || '?') + '</span> ' + escapeHtml(dec.modelRequested || '') + '</td><td style=\"text-align:right\" class=\"mono\">' + escapeHtml(formatCents(dec.projectedCents || 0)) + '</td><td class=\"mono\"><a href=\"#\" data-entry-hash=\"' + entryHash + '\">' + shortHash + '</a></td></tr>'; }).join(''); tbody.querySelectorAll('a[data-entry-hash]').forEach(function(a) { a.addEventListener('click', function(event) { event.preventDefault(); verifyReceipt(a.getAttribute('data-entry-hash') || ''); }); }); }\nasync function verifyReceipt(hash) { try { const r = await fetch('/api/verify/' + hash); const d = await r.json(); alert(d.ok ? '\u2713 verified: full chain valid' : '\u2717 verification failed: ' + (d.reason || 'unknown')); } catch (e) { alert('verify error: ' + e); } return false; }\nfunction renderTamper(integrity) { const el = document.getElementById('tamper-badge'); if (!el) return; const i = integrity || {}; const gaps = Array.isArray(i.sequence_gaps) ? i.sequence_gaps : []; if (i.verified && gaps.length === 0) { el.textContent = '\u2713 tamper-evidence: ' + (i.entries || 0) + ' entries verified'; el.style.color = 'var(--green)'; el.style.borderColor = 'var(--green)'; } else if (gaps.length > 0) { el.textContent = '\u26A0 completeness: possible omitted actions \u2014 sequence gap at ' + gaps.slice(0, 6).join(', '); el.style.color = 'var(--amber)'; el.style.borderColor = 'var(--amber)'; el.title = 'A per-tenant sequence number is missing. An action may have been taken around the SDK and not logged, or a logged entry was deleted.'; } else { el.textContent = '\u2717 tamper-evidence: ' + (i.reason || 'unverified'); el.style.color = 'var(--red)'; el.style.borderColor = 'var(--red)'; } }\nfunction renderFreeTier(ft) { if (!ft) return; const used = Number(ft.used) || 0; const limit = Number(ft.limit) || 0; const pct = Number(ft.pct_used) || 0; document.getElementById('ft-used').textContent = used.toLocaleString(); document.getElementById('ft-limit').textContent = limit.toLocaleString(); document.getElementById('ft-pct').textContent = '(' + pct + '%)'; const fill = document.getElementById('ft-fill'); fill.style.width = Math.max(0, Math.min(100, pct)) + '%'; fill.className = 'usage-fill' + (pct >= 80 ? ' warn' : ''); const reset = document.getElementById('ft-reset'); reset.textContent = ft.resets_at ? 'resets ' + String(ft.resets_at).slice(0, 10) : 'resets \u2014'; const tEl = document.getElementById('ft-tenants'); const tenants = ft.tenants || []; if (tenants.length > 1) { tEl.innerHTML = tenants.map(function(t) { const tp = Number(t.pct_used) || 0; return '<div class=\"bar-row\"><span class=\"name\">' + escapeHtml(t.tenant) + '</span><span class=\"bar\"><span class=\"bar-fill\" style=\"width:' + Math.max(0, Math.min(100, tp)).toFixed(1) + '%\"></span></span><span class=\"amount\">' + (Number(t.used)||0).toLocaleString() + '</span></div>'; }).join(''); } else { tEl.innerHTML = ''; } const bonus = document.getElementById('ft-bonus'); if (ft.bonus_message) { bonus.style.display = 'block'; bonus.innerHTML = '\uD83C\uDF81 <b>Bonus month, on us.</b> ' + escapeHtml(ft.bonus_message); } else { bonus.style.display = 'none'; } }\nasync function loadStats() { try { const r = await fetch('/api/stats'); const s = await r.json(); renderTamper(s.integrity); renderFreeTier(s.free_tier); document.getElementById('spent').textContent = formatCents(s.totals.spent_cents); document.getElementById('saved').textContent = '+' + formatCents(s.totals.saved_cents); document.getElementById('downgraded').textContent = s.totals.downgraded; document.getElementById('allowed').textContent = s.totals.allowed; document.getElementById('call-count').textContent = s.totals.calls; document.getElementById('blocked-count').textContent = s.totals.blocked; renderBars('by-agent', s.by_agent, 'agent'); renderBars('by-provider', s.by_provider, 'provider'); renderRecent(s.recent); } catch (e) { console.error('load failed:', e); } }\nloadStats();\nsetInterval(loadStats, 5000);\n</script></body></html>\n";
|
|
10
10
|
export declare function runServe(argv: string[]): Promise<number>;
|
|
11
11
|
//# sourceMappingURL=serve.d.ts.map
|
package/dist/cli/serve.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"serve.d.ts","sourceRoot":"","sources":["../../src/cli/serve.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;
|
|
1
|
+
{"version":3,"file":"serve.d.ts","sourceRoot":"","sources":["../../src/cli/serve.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAmMH,eAAO,MAAM,cAAc,0lgBAiH1B,CAAC;AAEF,wBAAsB,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAmH9D"}
|
package/dist/cli/serve.js
CHANGED
|
@@ -118,10 +118,15 @@ async function computeIntegrity(decisions) {
|
|
|
118
118
|
if (bySigner.size === 0) {
|
|
119
119
|
return { verified: false, entries: decisions.length, reason: 'NO_SIGNED_ENTRIES' };
|
|
120
120
|
}
|
|
121
|
+
// Completeness check across every signer's per-tenant sequence stream.
|
|
122
|
+
const allGaps = [];
|
|
123
|
+
for (const [, group] of bySigner) {
|
|
124
|
+
allGaps.push(...(0, decision_log_1.detectSequenceGaps)(group).missing);
|
|
125
|
+
}
|
|
121
126
|
for (const [, group] of bySigner) {
|
|
122
127
|
const withKey = group.find((d) => d.publicKeyHex);
|
|
123
128
|
if (!withKey)
|
|
124
|
-
return { verified: false, entries: decisions.length, reason: 'NO_PUBLIC_KEY_IN_LEDGER' };
|
|
129
|
+
return { verified: false, entries: decisions.length, reason: 'NO_PUBLIC_KEY_IN_LEDGER', sequenceGaps: allGaps };
|
|
125
130
|
const publicKey = Uint8Array.from(Buffer.from(withKey.publicKeyHex, 'hex'));
|
|
126
131
|
const chain = group
|
|
127
132
|
.slice()
|
|
@@ -137,10 +142,10 @@ async function computeIntegrity(decisions) {
|
|
|
137
142
|
}));
|
|
138
143
|
const result = await (0, decision_log_1.verifyChain)(chain, publicKey);
|
|
139
144
|
if (!result.ok) {
|
|
140
|
-
return { verified: false, entries: decisions.length, reason: `seq ${result.sequence}: ${result.reason}
|
|
145
|
+
return { verified: false, entries: decisions.length, reason: `seq ${result.sequence}: ${result.reason}`, sequenceGaps: allGaps };
|
|
141
146
|
}
|
|
142
147
|
}
|
|
143
|
-
return { verified: true, entries: decisions.length };
|
|
148
|
+
return { verified: true, entries: decisions.length, sequenceGaps: allGaps };
|
|
144
149
|
}
|
|
145
150
|
/**
|
|
146
151
|
* Free-tier CALL QUOTA panel data (local-only). For every tenant with a ledger,
|
|
@@ -217,6 +222,7 @@ async function computeStats(decisions) {
|
|
|
217
222
|
verified: dash.integrity.verified,
|
|
218
223
|
entries: dash.integrity.entries,
|
|
219
224
|
reason: dash.integrity.reason,
|
|
225
|
+
sequence_gaps: integrity.sequenceGaps ?? [],
|
|
220
226
|
},
|
|
221
227
|
by_agent: Object.entries(byAgent).map(([k, v]) => ({ agent: k, spent_cents: v })).sort((a, b) => b.spent_cents - a.spent_cents),
|
|
222
228
|
by_provider: dash.byProvider.map((b) => ({ provider: b.key, spent_cents: b.cents })),
|
|
@@ -334,7 +340,7 @@ function safeHash(value) { return String(value || '').toLowerCase().replace(/[^0
|
|
|
334
340
|
function renderBars(containerId, items, key) { const el = document.getElementById(containerId); if (!items.length) { el.innerHTML = '<div style="color:var(--muted);font-size:13px;padding:8px 0">no data yet</div>'; return; } const max = Math.max(...items.map(i => Number(i.spent_cents) || 0)) || 1; el.innerHTML = items.slice(0, 8).map(i => '<div class="bar-row"><span class="name">' + escapeHtml(i[key]) + '</span><span class="bar"><span class="bar-fill" style="width:' + ((Number(i.spent_cents) || 0)/max*100).toFixed(1) + '%"></span></span><span class="amount">' + escapeHtml(formatCents(i.spent_cents)) + '</span></div>').join(''); }
|
|
335
341
|
function renderRecent(items) { const tbody = document.getElementById('recent-rows'); if (!items.length) { tbody.innerHTML = '<tr><td colspan="5"><div class="empty">no decisions yet.<br>run <code>agentguard demo</code> to see a real signed receipt here.</div></td></tr>'; return; } tbody.innerHTML = items.map(d => { const dec = d.decision || {}; const scope = String(dec.triggeredScopeKey || ''); const agentMatch = scope.match(/agentId=([^|]+)/); const agent = agentMatch ? escapeHtml(agentMatch[1]) : '<span style="color:var(--muted)">-</span>'; const action = safeClassToken(dec.action || 'allow'); const entryHash = safeHash(d.entryHash); const shortHash = entryHash ? escapeHtml(entryHash.slice(0, 12)) + '...' : 'missing'; return '<tr><td class="action-' + action + '">' + escapeHtml(action.toUpperCase()) + '</td><td class="mono">' + agent + '</td><td><span class="pill">' + escapeHtml(dec.provider || '?') + '</span> ' + escapeHtml(dec.modelRequested || '') + '</td><td style="text-align:right" class="mono">' + escapeHtml(formatCents(dec.projectedCents || 0)) + '</td><td class="mono"><a href="#" data-entry-hash="' + entryHash + '">' + shortHash + '</a></td></tr>'; }).join(''); tbody.querySelectorAll('a[data-entry-hash]').forEach(function(a) { a.addEventListener('click', function(event) { event.preventDefault(); verifyReceipt(a.getAttribute('data-entry-hash') || ''); }); }); }
|
|
336
342
|
async function verifyReceipt(hash) { try { const r = await fetch('/api/verify/' + hash); const d = await r.json(); alert(d.ok ? '✓ verified: full chain valid' : '✗ verification failed: ' + (d.reason || 'unknown')); } catch (e) { alert('verify error: ' + e); } return false; }
|
|
337
|
-
function renderTamper(integrity) { const el = document.getElementById('tamper-badge'); if (!el) return; const i = integrity || {}; if (i.verified) { el.textContent = '✓ tamper-evidence: ' + (i.entries || 0) + ' entries verified'; el.style.color = 'var(--green)'; el.style.borderColor = 'var(--green)'; } else { el.textContent = '✗ tamper-evidence: ' + (i.reason || 'unverified'); el.style.color = 'var(--red)'; el.style.borderColor = 'var(--red)'; } }
|
|
343
|
+
function renderTamper(integrity) { const el = document.getElementById('tamper-badge'); if (!el) return; const i = integrity || {}; const gaps = Array.isArray(i.sequence_gaps) ? i.sequence_gaps : []; if (i.verified && gaps.length === 0) { el.textContent = '✓ tamper-evidence: ' + (i.entries || 0) + ' entries verified'; el.style.color = 'var(--green)'; el.style.borderColor = 'var(--green)'; } else if (gaps.length > 0) { el.textContent = '⚠ completeness: possible omitted actions — sequence gap at ' + gaps.slice(0, 6).join(', '); el.style.color = 'var(--amber)'; el.style.borderColor = 'var(--amber)'; el.title = 'A per-tenant sequence number is missing. An action may have been taken around the SDK and not logged, or a logged entry was deleted.'; } else { el.textContent = '✗ tamper-evidence: ' + (i.reason || 'unverified'); el.style.color = 'var(--red)'; el.style.borderColor = 'var(--red)'; } }
|
|
338
344
|
function renderFreeTier(ft) { if (!ft) return; const used = Number(ft.used) || 0; const limit = Number(ft.limit) || 0; const pct = Number(ft.pct_used) || 0; document.getElementById('ft-used').textContent = used.toLocaleString(); document.getElementById('ft-limit').textContent = limit.toLocaleString(); document.getElementById('ft-pct').textContent = '(' + pct + '%)'; const fill = document.getElementById('ft-fill'); fill.style.width = Math.max(0, Math.min(100, pct)) + '%'; fill.className = 'usage-fill' + (pct >= 80 ? ' warn' : ''); const reset = document.getElementById('ft-reset'); reset.textContent = ft.resets_at ? 'resets ' + String(ft.resets_at).slice(0, 10) : 'resets —'; const tEl = document.getElementById('ft-tenants'); const tenants = ft.tenants || []; if (tenants.length > 1) { tEl.innerHTML = tenants.map(function(t) { const tp = Number(t.pct_used) || 0; return '<div class="bar-row"><span class="name">' + escapeHtml(t.tenant) + '</span><span class="bar"><span class="bar-fill" style="width:' + Math.max(0, Math.min(100, tp)).toFixed(1) + '%"></span></span><span class="amount">' + (Number(t.used)||0).toLocaleString() + '</span></div>'; }).join(''); } else { tEl.innerHTML = ''; } const bonus = document.getElementById('ft-bonus'); if (ft.bonus_message) { bonus.style.display = 'block'; bonus.innerHTML = '🎁 <b>Bonus month, on us.</b> ' + escapeHtml(ft.bonus_message); } else { bonus.style.display = 'none'; } }
|
|
339
345
|
async function loadStats() { try { const r = await fetch('/api/stats'); const s = await r.json(); renderTamper(s.integrity); renderFreeTier(s.free_tier); document.getElementById('spent').textContent = formatCents(s.totals.spent_cents); document.getElementById('saved').textContent = '+' + formatCents(s.totals.saved_cents); document.getElementById('downgraded').textContent = s.totals.downgraded; document.getElementById('allowed').textContent = s.totals.allowed; document.getElementById('call-count').textContent = s.totals.calls; document.getElementById('blocked-count').textContent = s.totals.blocked; renderBars('by-agent', s.by_agent, 'agent'); renderBars('by-provider', s.by_provider, 'provider'); renderRecent(s.recent); } catch (e) { console.error('load failed:', e); } }
|
|
340
346
|
loadStats();
|
package/dist/cli/serve.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"serve.js","sourceRoot":"","sources":["../../src/cli/serve.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"serve.js","sourceRoot":"","sources":["../../src/cli/serve.ts"],"names":[],"mappings":";AAAA;;;;;;;GAOG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAsTH,4BAmHC;AAvaD,uCAAyB;AACzB,2CAA6B;AAC7B,uCAAyB;AACzB,2CAA6B;AAC7B,oCAAoD;AACpD,kDAAkE;AAClE,sDAAyD;AACzD,8CAA+E;AAE/E,qCAAmE;AAEnE,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,OAAO,EAAE,EAAE,aAAa,CAAC,CAAC;AAE/D,SAAS,YAAY;IACnB,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,eAAe,CAAC;QAAE,OAAO,EAAE,CAAC;IAC/C,MAAM,GAAG,GAAa,EAAE,CAAC;IACzB,KAAK,MAAM,KAAK,IAAI,EAAE,CAAC,WAAW,CAAC,eAAe,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,EAAE,CAAC;QAC7E,IAAI,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;YACxB,MAAM,SAAS,GAAG,IAAI,CAAC,IAAI,CAAC,eAAe,EAAE,KAAK,CAAC,IAAI,EAAE,kBAAkB,CAAC,CAAC;YAC7E,IAAI,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC;gBAAE,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;QACpD,CAAC;IACH,CAAC;IACD,OAAO,GAAG,CAAC,IAAI,EAAE,CAAC;AACpB,CAAC;AAED,SAAS,gBAAgB;IACvB,MAAM,GAAG,GAAU,EAAE,CAAC;IACtB,KAAK,MAAM,OAAO,IAAI,YAAY,EAAE,EAAE,CAAC;QACrC,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;QACpD,IAAI,CAAC;YACH,MAAM,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;YAClD,KAAK,MAAM,IAAI,IAAI,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;gBACvC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;oBAAE,SAAS;gBAC3B,IAAI,CAAC;oBACH,MAAM,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;oBAC3B,CAAC,CAAC,OAAO,GAAG,MAAM,CAAC;oBACnB,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBACd,CAAC;gBAAC,MAAM,CAAC;oBACP,sBAAsB;gBACxB,CAAC;YACH,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,uBAAuB;QACzB,CAAC;IACH,CAAC;IACD,OAAO,GAAG,CAAC;AACb,CAAC;AAED,iFAAiF;AACjF,SAAS,iBAAiB,CAAC,QAAgB;IACzC,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,QAAQ,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;QACrD,IAAI,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC;YAAE,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,SAAS,CAAC;IACrE,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;;;;GAKG;AACH,KAAK,UAAU,gBAAgB,CAAC,SAAgB;IAC9C,MAAM,QAAQ,GAAG,IAAI,GAAG,EAAiB,CAAC;IAC1C,KAAK,MAAM,CAAC,IAAI,SAAS,EAAE,CAAC;QAC1B,MAAM,MAAM,GAAG,CAAC,CAAC,iBAAiB,CAAC;QACnC,IAAI,CAAC,MAAM;YAAE,SAAS;QACtB,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC;YAAE,QAAQ,CAAC,GAAG,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;QACpD,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAE,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAChC,CAAC;IACD,IAAI,QAAQ,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;QACxB,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,mBAAmB,EAAE,CAAC;IACrF,CAAC;IACD,uEAAuE;IACvE,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,KAAK,MAAM,CAAC,EAAE,KAAK,CAAC,IAAI,QAAQ,EAAE,CAAC;QACjC,OAAO,CAAC,IAAI,CAAC,GAAG,IAAA,iCAAkB,EAAC,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC;IACrD,CAAC;IACD,KAAK,MAAM,CAAC,EAAE,KAAK,CAAC,IAAI,QAAQ,EAAE,CAAC;QACjC,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC,CAAC;QAClD,IAAI,CAAC,OAAO;YAAE,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,yBAAyB,EAAE,YAAY,EAAE,OAAO,EAAE,CAAC;QAC9H,MAAM,SAAS,GAAG,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC,CAAC;QAC5E,MAAM,KAAK,GAAG,KAAK;aAChB,KAAK,EAAE;aACP,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,CAAC;aACrD,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;YACX,QAAQ,EAAE,CAAC,CAAC,QAAQ;YACpB,SAAS,EAAE,CAAC,CAAC,SAAS;YACtB,YAAY,EAAE,CAAC,CAAC,YAAY;YAC5B,SAAS,EAAE,CAAC,CAAC,SAAS;YACtB,iBAAiB,EAAE,CAAC,CAAC,iBAAiB;YACtC,QAAQ,EAAE,CAAC,CAAC,QAAQ;YACpB,GAAG,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SAC9B,CAAA,CAAC,CAAC;QAChC,MAAM,MAAM,GAAG,MAAM,IAAA,0BAAW,EAAC,KAAK,EAAE,SAAS,CAAC,CAAC;QACnD,IAAI,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC;YACf,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,MAAM,CAAC,QAAQ,KAAK,MAAM,CAAC,MAAM,EAAE,EAAE,YAAY,EAAE,OAAO,EAAE,CAAC;QACnI,CAAC;IACH,CAAC;IACD,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,OAAO,EAAE,SAAS,CAAC,MAAM,EAAE,YAAY,EAAE,OAAO,EAAE,CAAC;AAC9E,CAAC;AAED;;;;;GAKG;AACH,SAAS,eAAe;IACtB,MAAM,OAAO,GAAU,EAAE,CAAC;IAC1B,IAAI,SAAS,GAAG,CAAC,CAAC;IAClB,IAAI,UAAU,GAAG,CAAC,CAAC;IACnB,IAAI,YAAgC,CAAC;IACrC,IAAI,QAAQ,GAAkB,IAAI,CAAC;IAEnC,KAAK,MAAM,OAAO,IAAI,YAAY,EAAE,EAAE,CAAC;QACrC,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC;QACpD,4EAA4E;QAC5E,MAAM,MAAM,GAAG,IAAA,gCAAwB,EAAC,MAAM,CAAC,CAAC;QAChD,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,IAAA,uBAAe,EAAC,MAAM,CAAC,CAAC;QACtE,IAAI,MAAM,CAAC,OAAO,IAAI,CAAC,YAAY;YAAE,YAAY,GAAG,MAAM,CAAC,OAAO,CAAC;QACnE,QAAQ,GAAG,KAAK,CAAC,QAAQ,CAAC;QAC1B,SAAS,IAAI,KAAK,CAAC,IAAI,CAAC;QACxB,UAAU,IAAI,KAAK,CAAC,KAAK,CAAC;QAC1B,OAAO,CAAC,IAAI,CAAC;YACX,MAAM;YACN,IAAI,EAAE,KAAK,CAAC,IAAI;YAChB,KAAK,EAAE,KAAK,CAAC,KAAK;YAClB,QAAQ,EAAE,KAAK,CAAC,OAAO;YACvB,WAAW,EAAE,KAAK,CAAC,UAAU;SAC9B,CAAC,CAAC;IACL,CAAC;IAED,MAAM,OAAO,GAAG,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,SAAS,GAAG,UAAU,CAAC,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IACtF,OAAO;QACL,IAAI,EAAE,SAAS;QACf,KAAK,EAAE,UAAU;QACjB,QAAQ,EAAE,OAAO;QACjB,SAAS,EAAE,QAAQ;QACnB,OAAO,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC;QAChD,aAAa,EAAE,YAAY;KAC5B,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,YAAY,CAAC,SAAgB;IAC1C,MAAM,OAAO,GAA6B,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAC9D,QAAQ,EAAE,CAAC,CAAC,QAAQ;QACpB,SAAS,EAAE,CAAC,CAAC,SAAS;QACtB,YAAY,EAAE,CAAC,CAAC,YAAY;QAC5B,SAAS,EAAE,CAAC,CAAC,SAAS;QACtB,iBAAiB,EAAE,CAAC,CAAC,iBAAiB;QACtC,QAAQ,EAAE,CAAC,CAAC,QAAQ;QACpB,GAAG,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACzD,CAAC,CAAC,CAAC;IAEJ,MAAM,SAAS,GAAG,MAAM,gBAAgB,CAAC,SAAS,CAAC,CAAC;IACpD,MAAM,IAAI,GAAG,IAAA,2BAAe,EAAC,OAAO,EAAE,SAAS,CAAC,CAAC;IAEjD,qFAAqF;IACrF,MAAM,OAAO,GAA2B,EAAE,CAAC;IAC3C,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;QACxB,MAAM,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC;QACrB,IAAI,CAAC,CAAC,MAAM,KAAK,OAAO,IAAI,CAAC,CAAC,MAAM,KAAK,WAAW;YAAE,SAAS;QAC/D,MAAM,OAAO,GAAG,iBAAiB,CAAC,CAAC,CAAC,iBAAiB,IAAI,EAAE,CAAC,CAAC;QAC7D,MAAM,KAAK,GAAG,OAAO,CAAC,CAAC,WAAW,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,IAAI,CAAC,CAAC,CAAC;QAC1F,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,KAAK,CAAC;IACrD,CAAC;IAED,OAAO;QACL,MAAM,EAAE;YACN,WAAW,EAAE,IAAI,CAAC,MAAM,CAAC,UAAU;YACnC,WAAW,EAAE,IAAI,CAAC,WAAW,CAAC,mBAAmB;YACjD,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK;YACxB,OAAO,EAAE,IAAI,CAAC,WAAW,CAAC,OAAO;YACjC,UAAU,EAAE,IAAI,CAAC,WAAW,CAAC,UAAU;YACvC,OAAO,EAAE,IAAI,CAAC,WAAW,CAAC,OAAO;SAClC;QACD,SAAS,EAAE;YACT,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,QAAQ;YACjC,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,OAAO;YAC/B,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM;YAC7B,aAAa,EAAE,SAAS,CAAC,YAAY,IAAI,EAAE;SAC5C;QACD,QAAQ,EAAE,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,WAAW,GAAG,CAAC,CAAC,WAAW,CAAC;QAC/H,WAAW,EAAE,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,GAAG,EAAE,WAAW,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;QACpF,SAAS,EAAE,eAAe,EAAE;QAC5B,MAAM,EAAE,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,EAAE;QACtC,OAAO,EAAE,gCAAwB;KAClC,CAAC;AACJ,CAAC;AAED,2EAA2E;AAC3E,uEAAuE;AAC1D,QAAA,cAAc,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAiH7B,CAAC;AAEK,KAAK,UAAU,QAAQ,CAAC,IAAc;IAC3C,IAAI,IAAI,GAAG,IAAI,CAAC;IAChB,IAAI,IAAI,GAAG,WAAW,CAAC;IACvB,IAAI,MAAM,GAAG,KAAK,CAAC;IACnB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACrC,MAAM,CAAC,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,IAAI,CAAC,KAAK,QAAQ;YAAE,IAAI,GAAG,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,EAAE,EAAE,CAAC,CAAC;aACxD,IAAI,CAAC,KAAK,QAAQ;YAAE,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC,CAAC,IAAI,WAAW,CAAC;aACpD,IAAI,CAAC,KAAK,WAAW;YAAE,MAAM,GAAG,IAAI,CAAC;aACrC,IAAI,CAAC,KAAK,QAAQ,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC;YACtC,OAAO,CAAC,GAAG,CAAC,+DAA+D,CAAC,CAAC;YAC7E,OAAO,CAAC,CAAC;QACX,CAAC;IACH,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,IAAI,GAAG,IAAA,eAAM,EAAC,gCAAwB,CAAC,CAAC,CAAC;IACrD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAChB,OAAO,CAAC,GAAG,CAAC,IAAI,GAAG,IAAA,iBAAQ,EAAC,kBAAkB,CAAC,GAAG,IAAA,YAAG,EAAC,sBAAsB,CAAC,CAAC,CAAC;IAC/E,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAEhB,MAAM,QAAQ,GAAG,YAAY,EAAE,CAAC;IAChC,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC1B,OAAO,CAAC,GAAG,CAAC,KAAK,IAAA,YAAG,EAAC,gEAAgE,CAAC,EAAE,CAAC,CAAC;QAC1F,OAAO,CAAC,GAAG,CAAC,KAAK,IAAA,YAAG,EAAC,KAAK,CAAC,IAAI,IAAA,kBAAS,EAAC,iBAAiB,CAAC,IAAI,IAAA,YAAG,EAAC,+BAA+B,CAAC,EAAE,CAAC,CAAC;QACvG,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,KAAK,EAAE,GAAG,EAAE,GAAG,EAAE,EAAE;QAClD,MAAM,GAAG,GAAG,CAAC,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QAC3C,MAAM,QAAQ,GAAG,CAAC,MAAc,EAAE,OAAY,EAAE,EAAE;YAChD,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;YACrC,GAAG,CAAC,SAAS,CAAC,MAAM,EAAE;gBACpB,cAAc,EAAE,kBAAkB;gBAClC,gBAAgB,EAAE,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE;gBACpD,eAAe,EAAE,UAAU;aAC5B,CAAC,CAAC;YACH,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAChB,CAAC,CAAC;QACF,MAAM,QAAQ,GAAG,CAAC,IAAY,EAAE,EAAE;YAChC,GAAG,CAAC,SAAS,CAAC,GAAG,EAAE,EAAE,cAAc,EAAE,0BAA0B,EAAE,eAAe,EAAE,UAAU,EAAE,CAAC,CAAC;YAChG,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QAChB,CAAC,CAAC;QAEF,IAAI,GAAG,KAAK,GAAG,IAAI,GAAG,KAAK,aAAa,EAAE,CAAC;YACzC,QAAQ,CAAC,sBAAc,CAAC,OAAO,CAAC,aAAa,EAAE,gCAAwB,CAAC,CAAC,OAAO,CAAC,UAAU,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;YAC5G,OAAO;QACT,CAAC;QACD,IAAI,GAAG,KAAK,YAAY,EAAE,CAAC;YACzB,QAAQ,CAAC,GAAG,EAAE,MAAM,YAAY,CAAC,gBAAgB,EAAE,CAAC,CAAC,CAAC;YACtD,OAAO;QACT,CAAC;QACD,IAAI,GAAG,CAAC,UAAU,CAAC,cAAc,CAAC,EAAE,CAAC;YACnC,MAAM,SAAS,GAAG,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,EAAG,CAAC;YACxC,MAAM,SAAS,GAAG,gBAAgB,EAAE,CAAC;YACrC,MAAM,KAAK,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC;YAC/D,IAAI,CAAC,KAAK,EAAE,CAAC;gBAAC,QAAQ,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,mBAAmB,EAAE,CAAC,CAAC;gBAAC,OAAO;YAAC,CAAC;YAClF,IAAI,CAAC;gBACH,MAAM,YAAY,GAAG,KAAK,CAAC,YAAY,CAAC;gBACxC,IAAI,CAAC,YAAY,EAAE,CAAC;oBAAC,QAAQ,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,iCAAiC,EAAE,CAAC,CAAC;oBAAC,OAAO;gBAAC,CAAC;gBACvG,MAAM,SAAS,GAAG,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,YAAY,EAAE,KAAK,CAAC,CAAC,CAAC;gBACpE,MAAM,MAAM,GAAG,KAAK,CAAC,iBAAiB,CAAC;gBACvC,MAAM,KAAK,GAAG,SAAS;qBACpB,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,iBAAiB,KAAK,MAAM,CAAC;qBAC7C,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,CAAC;qBACrD,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,IAAI,KAAK,CAAC,QAAQ,CAAC;qBAC3C,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;oBACX,QAAQ,EAAE,CAAC,CAAC,QAAQ;oBACpB,SAAS,EAAE,CAAC,CAAC,SAAS;oBACtB,YAAY,EAAE,CAAC,CAAC,YAAY;oBAC5B,SAAS,EAAE,CAAC,CAAC,SAAS;oBACtB,iBAAiB,EAAE,CAAC,CAAC,iBAAiB;oBACtC,QAAQ,EAAE,CAAC,CAAC,QAAQ;iBACM,CAAA,CAAC,CAAC;gBAChC,MAAM,MAAM,GAAG,MAAM,IAAA,0BAAW,EAAC,KAAK,EAAE,SAAS,CAAC,CAAC;gBACnD,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;YACjF,CAAC;YAAC,OAAO,CAAM,EAAE,CAAC;gBAChB,QAAQ,CAAC,GAAG,EAAE,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC,EAAE,OAAO,IAAI,CAAC,CAAC,EAAE,CAAC,CAAC;YAChE,CAAC;YACD,OAAO;QACT,CAAC;QACD,QAAQ,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC,CAAC;IACxC,CAAC,CAAC,CAAC;IAEH,MAAM,GAAG,GAAG,UAAU,IAAI,IAAI,IAAI,EAAE,CAAC;IACrC,MAAM,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,EAAE,GAAG,EAAE;QAC7B,OAAO,CAAC,GAAG,CAAC,KAAK,IAAA,cAAK,EAAC,GAAG,CAAC,gBAAgB,IAAA,kBAAS,EAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAC7D,OAAO,CAAC,GAAG,CAAC,KAAK,IAAA,YAAG,EAAC,gDAAgD,CAAC,EAAE,CAAC,CAAC;QAC1E,OAAO,CAAC,GAAG,CAAC,KAAK,IAAA,YAAG,EAAC,wBAAwB,CAAC,EAAE,CAAC,CAAC;QAClD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,UAAU,CAAC,GAAG,EAAE;gBACd,IAAI,CAAC;oBACH,MAAM,EAAE,IAAI,EAAE,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;oBAC1C,MAAM,GAAG,GAAG,OAAO,CAAC,QAAQ,KAAK,QAAQ;wBACvC,CAAC,CAAC,SAAS,GAAG,GAAG;wBACjB,CAAC,CAAC,OAAO,CAAC,QAAQ,KAAK,OAAO;4BAC5B,CAAC,CAAC,aAAa,GAAG,GAAG;4BACrB,CAAC,CAAC,aAAa,GAAG,GAAG,CAAC;oBAC1B,IAAI,CAAC,GAAG,CAAC,CAAC;gBACZ,CAAC;gBAAC,MAAM,CAAC,CAAC,iBAAiB,CAAC,CAAC;YAC/B,CAAC,EAAE,GAAG,CAAC,CAAC;QACV,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE;QACxB,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,KAAK,IAAA,cAAK,EAAC,GAAG,CAAC,oBAAoB,CAAC,CAAC;QACjD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,MAAM,CAAC,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC,CAAC;IAEH,aAAa;IACb,OAAO,IAAI,OAAO,CAAS,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;AACvC,CAAC"}
|
package/dist/cli/verify.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"verify.d.ts","sourceRoot":"","sources":["../../src/cli/verify.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;
|
|
1
|
+
{"version":3,"file":"verify.d.ts","sourceRoot":"","sources":["../../src/cli/verify.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAeH,wBAAsB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAsE/D"}
|
package/dist/cli/verify.js
CHANGED
|
@@ -45,6 +45,8 @@ const os = __importStar(require("os"));
|
|
|
45
45
|
const path = __importStar(require("path"));
|
|
46
46
|
const decision_log_1 = require("../decision-log");
|
|
47
47
|
const index_1 = require("../index");
|
|
48
|
+
const anchor_1 = require("../anchor");
|
|
49
|
+
const crypto_1 = require("crypto");
|
|
48
50
|
const colors_1 = require("./colors");
|
|
49
51
|
const DEMO_RECEIPT = path.join(os.homedir(), '.agentguard', 'demo', 'latest-receipt.json');
|
|
50
52
|
async function runVerify(argv) {
|
|
@@ -80,6 +82,7 @@ async function runVerify(argv) {
|
|
|
80
82
|
}
|
|
81
83
|
const publicKey = Uint8Array.from(Buffer.from(pubHex, 'hex'));
|
|
82
84
|
const result = await (0, decision_log_1.verifyChain)(loaded.entries, publicKey);
|
|
85
|
+
const gaps = (0, decision_log_1.detectSequenceGaps)(loaded.entries);
|
|
83
86
|
const head = loaded.entries[loaded.entries.length - 1];
|
|
84
87
|
console.log('');
|
|
85
88
|
console.log(' ' + (0, colors_1.banner)(index_1.AGENTGUARD_SPEND_VERSION));
|
|
@@ -100,15 +103,65 @@ async function runVerify(argv) {
|
|
|
100
103
|
console.log(' ' + (0, colors_1.greenBold)('✓ full chain valid'));
|
|
101
104
|
console.log(' ' + (0, colors_1.green)('✓ entry hashes match canonical JSON'));
|
|
102
105
|
console.log(' ' + (0, colors_1.green)('✓ signatures match supplied public key'));
|
|
106
|
+
if (gaps.missing.length === 0) {
|
|
107
|
+
console.log(' ' + (0, colors_1.green)('✓ no sequence gaps (ledger appears complete)'));
|
|
108
|
+
}
|
|
109
|
+
printGapWarning(gaps);
|
|
110
|
+
await printAnchorStatus(source, head?.entryHash);
|
|
103
111
|
console.log('');
|
|
104
112
|
return 0;
|
|
105
113
|
}
|
|
106
114
|
console.log(' ' + (0, colors_1.redBold)('✗ verification FAILED'));
|
|
107
115
|
console.log('');
|
|
108
116
|
console.log((0, colors_1.dim)(` sequence ${result.sequence}: ${result.reason}`));
|
|
117
|
+
printGapWarning(gaps);
|
|
109
118
|
console.log('');
|
|
110
119
|
return 1;
|
|
111
120
|
}
|
|
121
|
+
function printGapWarning(gaps) {
|
|
122
|
+
if (gaps.notes.length === 0)
|
|
123
|
+
return;
|
|
124
|
+
for (const note of gaps.notes) {
|
|
125
|
+
console.log(' ' + (0, colors_1.amberBold)('⚠ ' + note));
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
/**
|
|
129
|
+
* If an anchor index (anchor.json) sits beside the verified trace, verify the
|
|
130
|
+
* external timestamp proof against the current chain-head hash and report it.
|
|
131
|
+
* The anchored digest is SHA-256(head.entryHash) — see chainHeadDigestHex.
|
|
132
|
+
*/
|
|
133
|
+
async function printAnchorStatus(tracePath, headEntryHash) {
|
|
134
|
+
if (!headEntryHash)
|
|
135
|
+
return;
|
|
136
|
+
const indexPath = path.join(path.dirname(tracePath), 'anchor.json');
|
|
137
|
+
if (!fs.existsSync(indexPath))
|
|
138
|
+
return;
|
|
139
|
+
const proofs = (0, anchor_1.readAnchorIndexAt)(indexPath);
|
|
140
|
+
if (proofs.length === 0)
|
|
141
|
+
return;
|
|
142
|
+
const headDigest = (0, crypto_1.createHash)('sha256').update(headEntryHash, 'utf8').digest('hex');
|
|
143
|
+
const proof = (0, anchor_1.findAnchorForHead)(proofs, headDigest);
|
|
144
|
+
if (!proof) {
|
|
145
|
+
console.log(' ' + (0, colors_1.amberBold)('⚠ anchor found but none binds the current chain head'));
|
|
146
|
+
return;
|
|
147
|
+
}
|
|
148
|
+
const anchor = (0, anchor_1.createAnchor)(proof.anchorType);
|
|
149
|
+
if (!anchor) {
|
|
150
|
+
console.log(' ' + (0, colors_1.dim)(` anchor type '${proof.anchorType}' not supported by this build`));
|
|
151
|
+
return;
|
|
152
|
+
}
|
|
153
|
+
const v = await anchor.verify(headDigest, proof);
|
|
154
|
+
if (v.status === 'complete' && v.attested && v.when) {
|
|
155
|
+
console.log(' ' + (0, colors_1.greenBold)(`✓ chain head externally timestamped at ${v.when}`) + (0, colors_1.dim)(` (${proof.anchorType})`));
|
|
156
|
+
}
|
|
157
|
+
else if (v.status === 'pending' && v.when) {
|
|
158
|
+
console.log(' ' + (0, colors_1.green)(`✓ chain head submitted to external timestamp calendar at ${v.when}`));
|
|
159
|
+
console.log(' ' + (0, colors_1.dim)(` (${proof.anchorType}; external attestation pending — not yet an attested time)`));
|
|
160
|
+
}
|
|
161
|
+
else {
|
|
162
|
+
console.log(' ' + (0, colors_1.amberBold)(`⚠ anchor present but not verifiable: ${v.detail ?? v.status}`));
|
|
163
|
+
}
|
|
164
|
+
}
|
|
112
165
|
function resolveTracePath(trace) {
|
|
113
166
|
if (trace === 'latest')
|
|
114
167
|
return DEMO_RECEIPT;
|
|
@@ -120,6 +173,10 @@ function loadEntries(source) {
|
|
|
120
173
|
const parsed = JSON.parse(raw);
|
|
121
174
|
if (Array.isArray(parsed))
|
|
122
175
|
return { entries: parsed.map(toEntry), publicKeyHex: parsed[0]?.publicKeyHex };
|
|
176
|
+
// Sample-artifact / emitted-verifier shape nests the signed entry under `entry`.
|
|
177
|
+
if (parsed && typeof parsed === 'object' && parsed.entry && typeof parsed.entry === 'object') {
|
|
178
|
+
return { entries: [toEntry(parsed.entry)], publicKeyHex: parsed.publicKeyHex ?? parsed.entry.publicKeyHex };
|
|
179
|
+
}
|
|
123
180
|
return { entries: [toEntry(parsed)], publicKeyHex: parsed.publicKeyHex };
|
|
124
181
|
}
|
|
125
182
|
catch {
|
package/dist/cli/verify.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"verify.js","sourceRoot":"","sources":["../../src/cli/verify.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
1
|
+
{"version":3,"file":"verify.js","sourceRoot":"","sources":["../../src/cli/verify.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"aggregate.d.ts","sourceRoot":"","sources":["../../src/dashboard/aggregate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,OAAO,KAAK,EAAY,sBAAsB,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAUhF,MAAM,MAAM,WAAW,GAAG,UAAU,GAAG,MAAM,GAAG,SAAS,CAAC;AAE1D;;yEAEyE;AACzE,wBAAgB,cAAc,CAAC,QAAQ,EAAE,aAAa,GAAG;IAAE,MAAM,EAAE,WAAW,CAAC;IAAC,QAAQ,EAAE,OAAO,CAAA;CAAE,CAalG;AAED;wDACwD;AACxD,wBAAgB,aAAa,CAAC,QAAQ,EAAE,aAAa,GAAG,MAAM,CAI7D;AAED,MAAM,WAAW,WAAW;IAC1B,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;CACf;AACD,MAAM,WAAW,YAAY;IAC3B,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,MAAM,EAAE;QACN,KAAK,EAAE,MAAM,CAAC;QACd,UAAU,EAAE,MAAM,CAAC;QACnB,aAAa,EAAE,MAAM,CAAC;QACtB,SAAS,EAAE,MAAM,CAAC;QAClB,YAAY,EAAE,MAAM,CAAC;QACrB,aAAa,EAAE,MAAM,CAAC;KACvB,CAAC;IACF,WAAW,EAAE;QACX,OAAO,EAAE,MAAM,CAAC;QAChB,UAAU,EAAE,MAAM,CAAC;QACnB,OAAO,EAAE,MAAM,CAAC;QAChB,MAAM,EAAE,MAAM,CAAC;QACf,+EAA+E;QAC/E,mBAAmB,EAAE,MAAM,CAAC;KAC7B,CAAC;IACF,MAAM,EAAE;QACN,aAAa,EAAE,MAAM,CAAC;QACtB,YAAY,EAAE,MAAM,CAAC;QACrB,UAAU,EAAE,MAAM,CAAC;KACpB,CAAC;IACF,MAAM,EAAE,WAAW,EAAE,CAAC;IACtB,OAAO,EAAE,WAAW,EAAE,CAAC;IACvB,UAAU,EAAE,WAAW,EAAE,CAAC;IAC1B,aAAa,EAAE,WAAW,EAAE,CAAC;IAC7B,iBAAiB,EAAE,WAAW,EAAE,CAAC;IACjC,SAAS,EAAE;
|
|
1
|
+
{"version":3,"file":"aggregate.d.ts","sourceRoot":"","sources":["../../src/dashboard/aggregate.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AACH,OAAO,KAAK,EAAY,sBAAsB,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAUhF,MAAM,MAAM,WAAW,GAAG,UAAU,GAAG,MAAM,GAAG,SAAS,CAAC;AAE1D;;yEAEyE;AACzE,wBAAgB,cAAc,CAAC,QAAQ,EAAE,aAAa,GAAG;IAAE,MAAM,EAAE,WAAW,CAAC;IAAC,QAAQ,EAAE,OAAO,CAAA;CAAE,CAalG;AAED;wDACwD;AACxD,wBAAgB,aAAa,CAAC,QAAQ,EAAE,aAAa,GAAG,MAAM,CAI7D;AAED,MAAM,WAAW,WAAW;IAC1B,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;CACf;AACD,MAAM,WAAW,YAAY;IAC3B,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,MAAM,EAAE;QACN,KAAK,EAAE,MAAM,CAAC;QACd,UAAU,EAAE,MAAM,CAAC;QACnB,aAAa,EAAE,MAAM,CAAC;QACtB,SAAS,EAAE,MAAM,CAAC;QAClB,YAAY,EAAE,MAAM,CAAC;QACrB,aAAa,EAAE,MAAM,CAAC;KACvB,CAAC;IACF,WAAW,EAAE;QACX,OAAO,EAAE,MAAM,CAAC;QAChB,UAAU,EAAE,MAAM,CAAC;QACnB,OAAO,EAAE,MAAM,CAAC;QAChB,MAAM,EAAE,MAAM,CAAC;QACf,+EAA+E;QAC/E,mBAAmB,EAAE,MAAM,CAAC;KAC7B,CAAC;IACF,MAAM,EAAE;QACN,aAAa,EAAE,MAAM,CAAC;QACtB,YAAY,EAAE,MAAM,CAAC;QACrB,UAAU,EAAE,MAAM,CAAC;KACpB,CAAC;IACF,MAAM,EAAE,WAAW,EAAE,CAAC;IACtB,OAAO,EAAE,WAAW,EAAE,CAAC;IACvB,UAAU,EAAE,WAAW,EAAE,CAAC;IAC1B,aAAa,EAAE,WAAW,EAAE,CAAC;IAC7B,iBAAiB,EAAE,WAAW,EAAE,CAAC;IACjC,SAAS,EAAE;QACT,QAAQ,EAAE,OAAO,CAAC;QAClB,OAAO,EAAE,MAAM,CAAC;QAChB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,2FAA2F;QAC3F,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;KACzB,CAAC;CACH;AAaD;;;;GAIG;AACH,wBAAgB,eAAe,CAC7B,OAAO,EAAE,sBAAsB,EAAE,EACjC,SAAS,GAAE,YAAY,CAAC,WAAW,CAAC,GAAG,IAAW,EAClD,GAAG,GAAE,MAAiC,GACrC,YAAY,CA0Ed;AAED,eAAO,MAAM,UAAU,GAAI,GAAG,MAAM,KAAG,MAAoC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"aggregate.js","sourceRoot":"","sources":["../../src/dashboard/aggregate.ts"],"names":[],"mappings":";;;AA2CA,wCAaC;AAID,sCAIC;
|
|
1
|
+
{"version":3,"file":"aggregate.js","sourceRoot":"","sources":["../../src/dashboard/aggregate.ts"],"names":[],"mappings":"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"}
|
package/dist/decision-log.d.ts
CHANGED
|
@@ -85,6 +85,34 @@ export declare function verifyChain(entries: SignedDecisionLogEntry[], publicKey
|
|
|
85
85
|
sequence: number;
|
|
86
86
|
reason: string;
|
|
87
87
|
}>;
|
|
88
|
+
/**
|
|
89
|
+
* Completeness / sequence-gap detection.
|
|
90
|
+
*
|
|
91
|
+
* Each signed entry carries a monotonic per-signer (per-tenant) `sequence`
|
|
92
|
+
* starting at 0. A missing sequence number between the lowest and highest
|
|
93
|
+
* observed sequence is evidence that an action MAY have been taken around the
|
|
94
|
+
* SDK and never logged (or that a logged entry was later deleted). This is a
|
|
95
|
+
* DETECTION/REPORTING signal only — it never changes spend-cap enforcement.
|
|
96
|
+
*
|
|
97
|
+
* Returns the list of missing sequence numbers (gaps) for a single signer's
|
|
98
|
+
* entries. Duplicate sequences are also surfaced (a duplicate implies the chain
|
|
99
|
+
* was rewritten). Entries from multiple signers must be grouped by
|
|
100
|
+
* `signerFingerprint` before calling this; mixed signers are treated as one
|
|
101
|
+
* logical stream only if you have already filtered them.
|
|
102
|
+
*/
|
|
103
|
+
export interface SequenceGapReport {
|
|
104
|
+
/** Sorted list of missing sequence numbers between min and max observed. */
|
|
105
|
+
missing: number[];
|
|
106
|
+
/** Sequence numbers that appeared more than once. */
|
|
107
|
+
duplicates: number[];
|
|
108
|
+
/** Lowest observed sequence, or null when there are no entries. */
|
|
109
|
+
min: number | null;
|
|
110
|
+
/** Highest observed sequence, or null when there are no entries. */
|
|
111
|
+
max: number | null;
|
|
112
|
+
/** Human-readable summary lines, e.g. "possible omitted actions: sequence gap at 4". */
|
|
113
|
+
notes: string[];
|
|
114
|
+
}
|
|
115
|
+
export declare function detectSequenceGaps(entries: ReadonlyArray<Pick<SignedDecisionLogEntry, 'sequence'>>): SequenceGapReport;
|
|
88
116
|
/**
|
|
89
117
|
* In-memory decision log store. Useful for tests, examples, and short-lived
|
|
90
118
|
* shadow deployments. Production callers will typically supply their own
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"decision-log.d.ts","sourceRoot":"","sources":["../src/decision-log.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAIH,OAAO,KAAK,EACV,sBAAsB,EACtB,aAAa,EACb,gBAAgB,EACjB,MAAM,SAAS,CAAC;AAKjB,yEAAyE;AACzE,eAAO,MAAM,qBAAqB,QAAiB,CAAC;AAEpD;;;GAGG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAcpD;AAED,sDAAsD;AACtD,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAE/C;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE;IACrC,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,aAAa,CAAC;IACxB,YAAY,EAAE,MAAM,CAAC;IACrB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,GAAG,MAAM,CAST;AAED;;;GAGG;AACH,wBAAgB,wBAAwB,CAAC,SAAS,EAAE,UAAU,GAAG,MAAM,CAGtE;AAED;;;;;GAKG;AACH,wBAAsB,YAAY,CAAC,IAAI,EAAE;IACvC,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,aAAa,CAAC;IACxB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,UAAU,CAAC;IACvB,SAAS,EAAE,UAAU,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,GAAG,OAAO,CAAC,sBAAsB,CAAC,CAoBlC;AAED;;;;;GAKG;AACH,wBAAsB,WAAW,CAC/B,KAAK,EAAE,sBAAsB,EAC7B,SAAS,EAAE,UAAU,GACpB,OAAO,CAAC,OAAO,CAAC,CAuBlB;AAED;;;;;;;;GAQG;AACH,wBAAsB,WAAW,CAC/B,OAAO,EAAE,sBAAsB,EAAE,EACjC,SAAS,EAAE,UAAU,GACpB,OAAO,CAAC;IAAE,EAAE,EAAE,IAAI,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,CA2CzE;AAED;;;;GAIG;AACH,qBAAa,wBAAyB,YAAW,gBAAgB;IAC/D,OAAO,CAAC,OAAO,CAAgC;IAEzC,MAAM,CAAC,KAAK,EAAE,sBAAsB,GAAG,OAAO,CAAC,IAAI,CAAC;IAIpD,SAAS,CAAC,iBAAiB,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,sBAAsB,GAAG,IAAI,CAAC;IAQ7E,IAAI,CAAC,YAAY,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,iBAAiB,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,sBAAsB,EAAE,CAAC;IAS9G,mEAAmE;IACnE,QAAQ,IAAI,sBAAsB,EAAE;CAGrC"}
|
|
1
|
+
{"version":3,"file":"decision-log.d.ts","sourceRoot":"","sources":["../src/decision-log.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;AAIH,OAAO,KAAK,EACV,sBAAsB,EACtB,aAAa,EACb,gBAAgB,EACjB,MAAM,SAAS,CAAC;AAKjB,yEAAyE;AACzE,eAAO,MAAM,qBAAqB,QAAiB,CAAC;AAEpD;;;GAGG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAcpD;AAED,sDAAsD;AACtD,wBAAgB,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAE/C;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAAC,IAAI,EAAE;IACrC,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,aAAa,CAAC;IACxB,YAAY,EAAE,MAAM,CAAC;IACrB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,GAAG,MAAM,CAST;AAED;;;GAGG;AACH,wBAAgB,wBAAwB,CAAC,SAAS,EAAE,UAAU,GAAG,MAAM,CAGtE;AAED;;;;;GAKG;AACH,wBAAsB,YAAY,CAAC,IAAI,EAAE;IACvC,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,aAAa,CAAC;IACxB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,UAAU,CAAC;IACvB,SAAS,EAAE,UAAU,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,GAAG,OAAO,CAAC,sBAAsB,CAAC,CAoBlC;AAED;;;;;GAKG;AACH,wBAAsB,WAAW,CAC/B,KAAK,EAAE,sBAAsB,EAC7B,SAAS,EAAE,UAAU,GACpB,OAAO,CAAC,OAAO,CAAC,CAuBlB;AAED;;;;;;;;GAQG;AACH,wBAAsB,WAAW,CAC/B,OAAO,EAAE,sBAAsB,EAAE,EACjC,SAAS,EAAE,UAAU,GACpB,OAAO,CAAC;IAAE,EAAE,EAAE,IAAI,CAAA;CAAE,GAAG;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,CA2CzE;AAED;;;;;;;;;;;;;;GAcG;AACH,MAAM,WAAW,iBAAiB;IAChC,4EAA4E;IAC5E,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,qDAAqD;IACrD,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,mEAAmE;IACnE,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IACnB,oEAAoE;IACpE,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IACnB,wFAAwF;IACxF,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB;AAED,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,aAAa,CAAC,IAAI,CAAC,sBAAsB,EAAE,UAAU,CAAC,CAAC,GAC/D,iBAAiB,CA0BnB;AAED;;;;GAIG;AACH,qBAAa,wBAAyB,YAAW,gBAAgB;IAC/D,OAAO,CAAC,OAAO,CAAgC;IAEzC,MAAM,CAAC,KAAK,EAAE,sBAAsB,GAAG,OAAO,CAAC,IAAI,CAAC;IAIpD,SAAS,CAAC,iBAAiB,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,sBAAsB,GAAG,IAAI,CAAC;IAQ7E,IAAI,CAAC,YAAY,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,iBAAiB,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,sBAAsB,EAAE,CAAC;IAS9G,mEAAmE;IACnE,QAAQ,IAAI,sBAAsB,EAAE;CAGrC"}
|
package/dist/decision-log.js
CHANGED
|
@@ -65,6 +65,7 @@ exports.computeSignerFingerprint = computeSignerFingerprint;
|
|
|
65
65
|
exports.signDecision = signDecision;
|
|
66
66
|
exports.verifyEntry = verifyEntry;
|
|
67
67
|
exports.verifyChain = verifyChain;
|
|
68
|
+
exports.detectSequenceGaps = detectSequenceGaps;
|
|
68
69
|
const crypto_1 = require("crypto");
|
|
69
70
|
const ed = __importStar(require("@noble/ed25519"));
|
|
70
71
|
// @noble/ed25519 v2.3+ has sha512Async wired internally. The signAsync /
|
|
@@ -230,6 +231,39 @@ async function verifyChain(entries, publicKey) {
|
|
|
230
231
|
}
|
|
231
232
|
return { ok: true };
|
|
232
233
|
}
|
|
234
|
+
function detectSequenceGaps(entries) {
|
|
235
|
+
if (entries.length === 0) {
|
|
236
|
+
return { missing: [], duplicates: [], min: null, max: null, notes: [] };
|
|
237
|
+
}
|
|
238
|
+
const counts = new Map();
|
|
239
|
+
let min = Infinity;
|
|
240
|
+
let max = -Infinity;
|
|
241
|
+
for (const entry of entries) {
|
|
242
|
+
const seq = entry.sequence;
|
|
243
|
+
if (!Number.isSafeInteger(seq) || seq < 0)
|
|
244
|
+
continue;
|
|
245
|
+
counts.set(seq, (counts.get(seq) ?? 0) + 1);
|
|
246
|
+
if (seq < min)
|
|
247
|
+
min = seq;
|
|
248
|
+
if (seq > max)
|
|
249
|
+
max = seq;
|
|
250
|
+
}
|
|
251
|
+
if (!Number.isFinite(min) || !Number.isFinite(max)) {
|
|
252
|
+
return { missing: [], duplicates: [], min: null, max: null, notes: [] };
|
|
253
|
+
}
|
|
254
|
+
const missing = [];
|
|
255
|
+
for (let s = min; s <= max; s++) {
|
|
256
|
+
if (!counts.has(s))
|
|
257
|
+
missing.push(s);
|
|
258
|
+
}
|
|
259
|
+
const duplicates = [...counts.entries()].filter(([, n]) => n > 1).map(([s]) => s).sort((a, b) => a - b);
|
|
260
|
+
const notes = [];
|
|
261
|
+
for (const s of missing)
|
|
262
|
+
notes.push(`possible omitted actions: sequence gap at ${s}`);
|
|
263
|
+
for (const s of duplicates)
|
|
264
|
+
notes.push(`possible chain rewrite: duplicate sequence ${s}`);
|
|
265
|
+
return { missing, duplicates, min, max, notes };
|
|
266
|
+
}
|
|
233
267
|
/**
|
|
234
268
|
* In-memory decision log store. Useful for tests, examples, and short-lived
|
|
235
269
|
* shadow deployments. Production callers will typically supply their own
|
package/dist/decision-log.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"decision-log.js","sourceRoot":"","sources":["../src/decision-log.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;GAuBG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAoBH,sCAcC;AAGD,8BAEC;AAMD,4CAeC;AAMD,4DAGC;AAQD,oCA2BC;AAQD,kCA0BC;AAWD,kCA8CC;
|
|
1
|
+
{"version":3,"file":"decision-log.js","sourceRoot":"","sources":["../src/decision-log.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -9,7 +9,7 @@ import { workflow as runWorkflow } from './workflow/context';
|
|
|
9
9
|
export type { SpendAction, SpendWindow, Provider, EnforcementMode, CapabilityTier, SpendCap, SpendScope, SpendPolicy, CallContext, SpendDecision, SignedDecisionLogEntry, SpendStore, DecisionLogStore, } from './types';
|
|
10
10
|
export { getModelCost, setCostOverride, clearCostOverrides, computeCallCents, inferProvider, listCostOverrides, loadPersistedCostOverrides, persistCostOverrides, knownModelCosts, type ModelCost, } from './cost-table';
|
|
11
11
|
export { evaluatePolicy, buildScopeKey, adjustPolicyWindowSpend, enforcePolicyLicenseGates, findCustomKeywordWatchlists, BUILT_IN_KEYWORD_WATCHLISTS } from './policy';
|
|
12
|
-
export { canonicalJson, sha256Hex, computeEntryHash, computeSignerFingerprint, signDecision, verifyEntry, verifyChain, GENESIS_PREVIOUS_HASH, InMemoryDecisionLogStore, } from './decision-log';
|
|
12
|
+
export { canonicalJson, sha256Hex, computeEntryHash, computeSignerFingerprint, signDecision, verifyEntry, verifyChain, detectSequenceGaps, GENESIS_PREVIOUS_HASH, InMemoryDecisionLogStore, type SequenceGapReport, } from './decision-log';
|
|
13
13
|
export { InMemorySpendStore } from './store-memory';
|
|
14
14
|
export { NdjsonDecisionLogStore, type NdjsonStoreOptions } from './adapters/ndjson-store';
|
|
15
15
|
export { AgentGuardLicenseRequiredError, validateLicenseKey, validateAndRegisterLicense, readConfiguredLicenseKey, writeConfiguredLicenseKey, clearConfiguredLicenseKey, licenseKeyFingerprint, type AgentGuardLicenseStatus, type AgentGuardLicenseFeatures, type AgentGuardTier, } from './license';
|
|
@@ -34,7 +34,7 @@ export { withSpendGuardAnthropic, type AnthropicBindingOptions } from './binding
|
|
|
34
34
|
export { withSpendGuardBedrock, type BedrockBindingOptions } from './bindings/bedrock';
|
|
35
35
|
export { recommend, defaultKey, type ModelRouteRecommendation, type RecommendOptions } from './router';
|
|
36
36
|
export { DEFAULT_LOCALE, SUPPORTED_LOCALES, TRANSLATIONS, type SupportedLocale, resolveLocale, t, formatBlockedTrace, type BlockedTraceArgs, } from './i18n';
|
|
37
|
-
export declare const AGENTGUARD_SPEND_VERSION = "0.15.
|
|
37
|
+
export declare const AGENTGUARD_SPEND_VERSION = "0.15.8";
|
|
38
38
|
export declare const agentguard: {
|
|
39
39
|
workflow: typeof runWorkflow;
|
|
40
40
|
};
|
|
@@ -48,5 +48,8 @@ export * from './frameworks';
|
|
|
48
48
|
export * from './operating-pack';
|
|
49
49
|
export { aggregateLedger, classifyOrigin, decisionCents, centsToUsd, type CfoDashboard, type BucketSpend, type TokenOrigin, } from './dashboard/aggregate';
|
|
50
50
|
export { getMonthlyUsage, maybeGrantFirstTimeBonus, readFreeTierState, bonusMessage, DEFAULT_FREE_LIMIT, BONUS_THRESHOLD_PCT, type FreeTierOptions, type FreeTierState, type MonthlyUsage, type BonusResult, } from './free-tier/usage';
|
|
51
|
+
export { createAnchor, createAnchorFromEnv, chainHeadDigestHex, merkleRootHex, OpenTimestampsAnchor, DEFAULT_OTS_CALENDARS, writeAnchorProof, readAnchorIndex, readAnchorIndexAt, findAnchorForHead, anchorIndexPath, anchorProofPath, anchorDir, type AnchorProof, type AnchorStatus, type AnchorVerification, type TimestampAnchor, type OtsSubmit, type OpenTimestampsAnchorOptions, } from './anchor';
|
|
52
|
+
export { buildSampleReceipt, isSampleFlow, SAMPLE_FLOWS, type SampleFlow, type SampleReceiptSpec, } from './samples/flows';
|
|
53
|
+
export { buildSampleVerifierHtml, type SampleVerifierData } from './samples/verifier-html';
|
|
51
54
|
export { workloadProvenance, formatLineage, type WorkloadProvenance, type WorkloadProvenanceReport, type ModelUse, type ModelSwap, } from './receipts/portability';
|
|
52
55
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,QAAQ,IAAI,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAG7D,YAAY,EACV,WAAW,EACX,WAAW,EACX,QAAQ,EACR,eAAe,EACf,cAAc,EACd,QAAQ,EACR,UAAU,EACV,WAAW,EACX,WAAW,EACX,aAAa,EACb,sBAAsB,EACtB,UAAU,EACV,gBAAgB,GACjB,MAAM,SAAS,CAAC;AAGjB,OAAO,EACL,YAAY,EACZ,eAAe,EACf,kBAAkB,EAClB,gBAAgB,EAChB,aAAa,EACb,iBAAiB,EACjB,0BAA0B,EAC1B,oBAAoB,EACpB,eAAe,EACf,KAAK,SAAS,GACf,MAAM,cAAc,CAAC;AAGtB,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,uBAAuB,EAAE,yBAAyB,EAAE,2BAA2B,EAAE,2BAA2B,EAAE,MAAM,UAAU,CAAC;AAGvK,OAAO,EACL,aAAa,EACb,SAAS,EACT,gBAAgB,EAChB,wBAAwB,EACxB,YAAY,EACZ,WAAW,EACX,WAAW,EACX,qBAAqB,EACrB,wBAAwB,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|