@shield-agent/kya 0.24.0 → 0.24.2

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 (45) hide show
  1. package/.cursor-plugin/plugin.json +1 -1
  2. package/.mcp.json +1 -1
  3. package/README.md +4 -4
  4. package/amp/settings.example.json +1 -1
  5. package/claude/claude_desktop_config.example.json +1 -1
  6. package/cline/cline_mcp_settings.example.json +1 -1
  7. package/copilot/mcp-config.example.json +1 -1
  8. package/dist/mcp-servers.d.ts +2 -0
  9. package/dist/mcp-servers.d.ts.map +1 -1
  10. package/dist/mcp-servers.js +50 -4
  11. package/dist/mcp-servers.js.map +1 -1
  12. package/dist/offline-evaluate.d.ts +2 -0
  13. package/dist/offline-evaluate.d.ts.map +1 -1
  14. package/dist/offline-evaluate.js +4 -1
  15. package/dist/offline-evaluate.js.map +1 -1
  16. package/dist/receipt/live-server.d.ts +18 -1
  17. package/dist/receipt/live-server.d.ts.map +1 -1
  18. package/dist/receipt/live-server.js +171 -3
  19. package/dist/receipt/live-server.js.map +1 -1
  20. package/dist/receipt/receipt-css.d.ts.map +1 -1
  21. package/dist/receipt/receipt-css.js +12 -0
  22. package/dist/receipt/receipt-css.js.map +1 -1
  23. package/dist/receipt/render-receipt.d.ts +1 -1
  24. package/dist/receipt/render-receipt.d.ts.map +1 -1
  25. package/dist/receipt/render-receipt.js +142 -23
  26. package/dist/receipt/render-receipt.js.map +1 -1
  27. package/dist/telemetry.d.ts +1 -1
  28. package/dist/telemetry.d.ts.map +1 -1
  29. package/dist/telemetry.js +8 -3
  30. package/dist/telemetry.js.map +1 -1
  31. package/droid/README.md +1 -1
  32. package/droid/mcp.example.json +1 -1
  33. package/gemini/settings.example.json +1 -1
  34. package/grok/README.md +1 -1
  35. package/kilo/kilo.example.json +1 -1
  36. package/kimi/mcp.example.json +1 -1
  37. package/kiro/mcp.example.json +1 -1
  38. package/manifest.json +1 -1
  39. package/mastracode/mcp.example.json +1 -1
  40. package/mcp.json +1 -1
  41. package/openai/codex.config.example.toml +1 -1
  42. package/opencode/opencode.example.json +1 -1
  43. package/package.json +2 -2
  44. package/qwen/settings.example.json +1 -1
  45. package/server.json +2 -2
@@ -884,6 +884,18 @@ export function receiptCss() {
884
884
  }
885
885
  .playground-form select { min-width: 8rem; }
886
886
  .playground-form input { flex: 1 1 10rem; min-width: 8rem; }
887
+ .inline-form {
888
+ display: flex; flex-wrap: wrap; gap: 0.5rem; align-items: stretch;
889
+ margin: 0.5rem 0;
890
+ }
891
+ .inline-form select,
892
+ .inline-form input {
893
+ font-family: inherit; font-size: 0.8rem; color: var(--fg); background: var(--bg);
894
+ border: 1px solid var(--line); border-radius: 8px; padding: 0.35rem 0.55rem;
895
+ appearance: none; -webkit-appearance: none;
896
+ }
897
+ .inline-form select { min-width: 8rem; }
898
+ .inline-form input { flex: 1 1 10rem; min-width: 8rem; }
887
899
  .quick-actions {
888
900
  display: flex; flex-wrap: wrap; gap: 0.5rem; align-items: center;
889
901
  margin: 0.5rem 0;
@@ -1 +1 @@
1
- {"version":3,"file":"receipt-css.js","sourceRoot":"","sources":["../../src/receipt/receipt-css.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AACH,MAAM,UAAU,UAAU;IACxB,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IA05BL,CAAA;AACJ,CAAC"}
1
+ {"version":3,"file":"receipt-css.js","sourceRoot":"","sources":["../../src/receipt/receipt-css.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AACH,MAAM,UAAU,UAAU;IACxB,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAs6BL,CAAA;AACJ,CAAC"}
@@ -108,7 +108,7 @@ export interface ImportCard {
108
108
  /**
109
109
  * Aggregate host "import" trail events (written by kya import; reasonCode
110
110
  * IMPORTED / IMPORTED_ERROR) per source format. Undefined when the trail has
111
- * no imported events - the report section stays hidden on fresh installs.
111
+ * no imported events - the report section renders its empty state instead.
112
112
  */
113
113
  export declare function aggregateImports(events: readonly TrailEvent[]): ImportCard | undefined;
114
114
  export declare function buildReceiptModel(sessionId: string, events: readonly TrailEvent[], extras?: Partial<Omit<ReceiptModel, "title" | "events" | "generatedAt" | "rangeLabel">>): ReceiptModel;
@@ -1 +1 @@
1
- {"version":3,"file":"render-receipt.d.ts","sourceRoot":"","sources":["../../src/receipt/render-receipt.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"render-receipt.d.ts","sourceRoot":"","sources":["../../src/receipt/render-receipt.ts"],"names":[],"mappings":"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"}
@@ -218,7 +218,7 @@ function legacyImportFormat(sessionId) {
218
218
  /**
219
219
  * Aggregate host "import" trail events (written by kya import; reasonCode
220
220
  * IMPORTED / IMPORTED_ERROR) per source format. Undefined when the trail has
221
- * no imported events - the report section stays hidden on fresh installs.
221
+ * no imported events - the report section renders its empty state instead.
222
222
  */
223
223
  export function aggregateImports(events) {
224
224
  const byFormat = new Map();
@@ -1362,12 +1362,36 @@ export function gatewayHeroCard(page, _nowMs) {
1362
1362
  </section>`;
1363
1363
  }
1364
1364
  /**
1365
- * Hero Import card: per-format rollup of imported trace events. Hidden when
1366
- * the trail has no host "import" events (fresh installs render unchanged).
1365
+ * Hero Import card: per-format rollup of imported trace events. With no
1366
+ * imported events the card still renders as an empty state (CLI hint plus,
1367
+ * on the live report, an inline import form) so the feature is discoverable.
1367
1368
  */
1368
- function importHeroCard(card, nowMs) {
1369
- if (!card)
1370
- return "";
1369
+ function importHeroCard(card, nowMs, live) {
1370
+ if (!card) {
1371
+ const form = live
1372
+ ? `<form class="inline-form" id="import-form">
1373
+ <label class="sr-only" for="import-from">Source</label>
1374
+ <select id="import-from" name="from" required>
1375
+ <option value="" disabled selected>Source</option>
1376
+ <option value="langsmith">LangSmith</option>
1377
+ <option value="langfuse">Langfuse</option>
1378
+ <option value="phoenix">Phoenix</option>
1379
+ <option value="otel">OTel JSON</option>
1380
+ <option value="agt">AGT audit log</option>
1381
+ </select>
1382
+ <label class="sr-only" for="import-file">File path</label>
1383
+ <input id="import-file" name="file" type="text" placeholder="/path/to/traces.json" />
1384
+ <button type="submit" class="stat">Import</button>
1385
+ </form>
1386
+ <div id="import-result"></div>`
1387
+ : "";
1388
+ return `<section class="panel" aria-label="Import">
1389
+ <h2>Import</h2>
1390
+ <p class="line">Nothing imported yet. Bring existing LangSmith, Langfuse, Phoenix, OTel, or AGT traces into the trail so they show up in this report and feed Certify.</p>
1391
+ <p class="mute small">CLI: <code>kya import --from langsmith|langfuse|phoenix|otel FILE</code> · <code>kya import --from agt</code> reads the AGT audit log</p>
1392
+ ${form}
1393
+ </section>`;
1394
+ }
1371
1395
  const chips = card.formats
1372
1396
  .map((f) => `<span class="chip"><code>${esc(f.format)}</code> × ${f.imported}${f.errors > 0 ? ` · ${f.errors} err` : ""}</span>`)
1373
1397
  .join("\n ");
@@ -1391,12 +1415,23 @@ function severityPill(severity) {
1391
1415
  }
1392
1416
  /**
1393
1417
  * Hero Investigations card: the persisted summary of the last kya investigate
1394
- * run. Hidden when no summary file exists; a clean run (zero findings) still
1418
+ * run. With no summary file the card still renders as an empty state (CLI hint
1419
+ * plus, on the live report, a run button); a clean run (zero findings) also
1395
1420
  * renders, since the run itself is the data.
1396
1421
  */
1397
- function investigateHeroCard(card, nowMs) {
1398
- if (!card)
1399
- return "";
1422
+ function investigateHeroCard(card, nowMs, live) {
1423
+ if (!card) {
1424
+ const run = live
1425
+ ? `<button type="button" class="stat" data-report-action="investigate">Run investigation now</button>
1426
+ <div id="report-action-result-investigate"></div>`
1427
+ : "";
1428
+ return `<section class="panel" aria-label="Investigations">
1429
+ <h2>Investigations</h2>
1430
+ <p class="line">No investigation has run yet. Deterministic detectors scan the trail for deny spikes, incidents, and risky patterns, then write fix briefs for your coding agent.</p>
1431
+ <p class="mute small">CLI: <code>kya investigate</code></p>
1432
+ ${run}
1433
+ </section>`;
1434
+ }
1400
1435
  const findingCount = card.findings.reduce((n, f) => n + f.count, 0);
1401
1436
  const rows = card.findings.length === 0
1402
1437
  ? `<p class="line">No findings - the trail looks clean for all detectors.</p>`
@@ -1421,11 +1456,22 @@ ${card.findings
1421
1456
  }
1422
1457
  /**
1423
1458
  * System-tab Alerts panel: per-target delivery rollup from the notify ledger.
1424
- * Hidden when no delivery has been attempted yet.
1459
+ * With no deliveries yet the panel still renders as an empty state (config
1460
+ * hint plus, on the live report, a test-alert button).
1425
1461
  */
1426
- function alertsPanel(card, nowMs) {
1427
- if (!card)
1428
- return "";
1462
+ function alertsPanel(card, nowMs, live) {
1463
+ if (!card) {
1464
+ const test = live
1465
+ ? `<button type="button" class="stat" data-report-action="notify-test">Send test alert</button>
1466
+ <div id="report-action-result-notify-test"></div>`
1467
+ : "";
1468
+ return `<section class="panel" aria-label="Alerts">
1469
+ <h2>Alerts</h2>
1470
+ <p class="line">No alert deliveries yet. kya fires webhooks for DENY and REQUIRE_APPROVE verdicts; every delivery attempt is logged here per target.</p>
1471
+ <p class="mute small">configure <code>notify.webhooks</code> in .kya/config.json or set <code>KYA_NOTIFY_WEBHOOK</code>, then send a test alert</p>
1472
+ ${test}
1473
+ </section>`;
1474
+ }
1429
1475
  const rows = card.targets
1430
1476
  .map((t) => {
1431
1477
  const status = t.lastOk
@@ -1453,12 +1499,23 @@ ${rows}
1453
1499
  </section>`;
1454
1500
  }
1455
1501
  /**
1456
- * System-tab OTel panel: persisted OTLP export counters. Hidden until the
1457
- * first export attempt lands in .kya/otel-stats.json.
1502
+ * System-tab OTel panel: persisted OTLP export counters. With no stats file
1503
+ * yet the panel still renders as an empty state (config hint plus, on the
1504
+ * live report, a self-test button).
1458
1505
  */
1459
- function otelPanel(stats, nowMs) {
1460
- if (!stats)
1461
- return "";
1506
+ function otelPanel(stats, nowMs, live) {
1507
+ if (!stats) {
1508
+ const test = live
1509
+ ? `<button type="button" class="stat" data-report-action="otel-test">Test export now</button>
1510
+ <div id="report-action-result-otel-test"></div>`
1511
+ : "";
1512
+ return `<section class="panel" aria-label="OTel export">
1513
+ <h2>OTel export</h2>
1514
+ <p class="line">No spans exported yet. kya can mirror verdict events to any OTLP/HTTP collector; sent and failed counts are tracked here.</p>
1515
+ <p class="mute small">configure <code>otlpExport.endpoint</code> in .kya/config.json or set <code>KYA_OTLP_EXPORT_ENDPOINT</code>, then test the export</p>
1516
+ ${test}
1517
+ </section>`;
1518
+ }
1462
1519
  const endpoint = stats.endpoint ? `<code>${esc(stats.endpoint)}</code>` : '<span class="mute">unknown endpoint</span>';
1463
1520
  const last = stats.lastExportAt
1464
1521
  ? `last export ${esc(relativeTime(stats.lastExportAt, nowMs))} · `
@@ -2049,6 +2106,68 @@ export function renderReceiptHtml(model) {
2049
2106
  });
2050
2107
  });
2051
2108
 
2109
+ document.querySelectorAll('[data-report-action]').forEach(function(btn){
2110
+ btn.addEventListener('click', function(){
2111
+ var action = btn.getAttribute('data-report-action');
2112
+ var resultEl = document.getElementById('report-action-result-' + action);
2113
+ btn.disabled = true;
2114
+ setResult(resultEl, 'Working...', false);
2115
+ post('/action/' + action, {})
2116
+ .then(parseJson)
2117
+ .then(function(data){
2118
+ if (data && data.ok) {
2119
+ var msg = action === 'investigate'
2120
+ ? 'Done: ' + data.findings + ' findings, ' + data.incidents + ' incidents'
2121
+ : action === 'notify-test'
2122
+ ? 'Test alert sent to ' + data.targets + ' target(s)'
2123
+ : String(data.detail || 'ok');
2124
+ setResult(resultEl, '<p>' + esc(msg) + '</p>', false);
2125
+ if (action === 'otel-test') {
2126
+ btn.disabled = false;
2127
+ } else {
2128
+ setTimeout(function(){ location.reload(); }, 800);
2129
+ }
2130
+ } else {
2131
+ setResult(resultEl, '<p>Error: ' + esc(data && (data.error || data.detail) ? (data.error || data.detail) : 'unknown') + '</p>', true);
2132
+ btn.disabled = false;
2133
+ }
2134
+ })
2135
+ .catch(function(err){
2136
+ setResult(resultEl, '<p>Error: ' + esc(err.message) + '</p>', true);
2137
+ btn.disabled = false;
2138
+ });
2139
+ });
2140
+ });
2141
+
2142
+ var importForm = document.getElementById('import-form');
2143
+ if (importForm) {
2144
+ importForm.addEventListener('submit', function(e){
2145
+ e.preventDefault();
2146
+ var from = importForm.elements.from.value;
2147
+ var file = importForm.elements.file.value.trim();
2148
+ var resultEl = document.getElementById('import-result');
2149
+ var btn = importForm.querySelector('button[type="submit"]');
2150
+ if (btn) btn.disabled = true;
2151
+ setResult(resultEl, 'Importing...', false);
2152
+ post('/action/import', { from: from, file: file })
2153
+ .then(parseJson)
2154
+ .then(function(data){
2155
+ if (data && data.ok) {
2156
+ var errs = data.errors && data.errors.length ? ' · ' + data.errors.length + ' error(s)' : '';
2157
+ setResult(resultEl, '<p>Imported ' + data.imported + ' event(s)' + errs + ' - reloading...</p>', false);
2158
+ setTimeout(function(){ location.reload(); }, 800);
2159
+ } else {
2160
+ setResult(resultEl, '<p>Error: ' + esc(data && data.error ? data.error : 'unknown') + '</p>', true);
2161
+ if (btn) btn.disabled = false;
2162
+ }
2163
+ })
2164
+ .catch(function(err){
2165
+ setResult(resultEl, '<p>Error: ' + esc(err.message) + '</p>', true);
2166
+ if (btn) btn.disabled = false;
2167
+ });
2168
+ });
2169
+ }
2170
+
2052
2171
  var stopLink = document.getElementById('stop-report');
2053
2172
  if (stopLink) {
2054
2173
  stopLink.addEventListener('click', function(e){
@@ -2087,8 +2206,8 @@ export function renderReceiptHtml(model) {
2087
2206
  wiredHostsPanel(model.wiredHosts),
2088
2207
  sandboxesPanel(model.sandboxes, nowMs),
2089
2208
  orrPanel(model.orr, nowMs),
2090
- alertsPanel(model.alerts, nowMs),
2091
- otelPanel(model.otel, nowMs),
2209
+ alertsPanel(model.alerts, nowMs, livePaged),
2210
+ otelPanel(model.otel, nowMs, livePaged),
2092
2211
  toolsHtml,
2093
2212
  ], "No system state yet - wire a host, configure a sandbox, or run an ORR.");
2094
2213
  const html = `<!DOCTYPE html>
@@ -2144,8 +2263,8 @@ ${model.liveToken ? '<main data-live-token="1">' : '<main>'}
2144
2263
  ${verdictsHeroCard(c, events.length)}
2145
2264
  ${activityHeroCard(agg, dashboard, events.length)}
2146
2265
  ${gatewayHeroCard(model.gate, nowMs)}
2147
- ${importHeroCard(model.imports, nowMs)}
2148
- ${investigateHeroCard(model.investigate, nowMs)}
2266
+ ${importHeroCard(model.imports, nowMs, livePaged)}
2267
+ ${investigateHeroCard(model.investigate, nowMs, livePaged)}
2149
2268
  ${showbackHeroCard(model.showback, model.events)}
2150
2269
  </div>
2151
2270
  </div>