skillvault-publisher 0.1.9 → 0.1.10

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.
@@ -1 +1 @@
1
- {"version":3,"file":"investigate.d.ts","sourceRoot":"","sources":["../../src/commands/investigate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAoVpC,eAAO,MAAM,kBAAkB,SA0J5B,CAAC"}
1
+ {"version":3,"file":"investigate.d.ts","sourceRoot":"","sources":["../../src/commands/investigate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAmcpC,eAAO,MAAM,kBAAkB,SAyK5B,CAAC"}
@@ -145,92 +145,197 @@ function buildHtmlReport(report, auditEvents, metadata) {
145
145
  <td>${new Date(e.created_at).toLocaleString()}</td>
146
146
  </tr>`)
147
147
  .join('\n');
148
+ const hasHighConfidence = report.heartbeat_matches.some((m) => m.confidence >= 0.9);
149
+ const alertBanner = hasHighConfidence
150
+ ? `<div class="alert-banner"><div class="alert-icon">!</div><div><strong>High-confidence heartbeat match detected.</strong> Forensic heartbeat values in the leaked content match a specific decryption event with &ge;99% confidence.</div></div>`
151
+ : '';
148
152
  return `<!DOCTYPE html>
149
153
  <html lang="en">
150
154
  <head>
151
155
  <meta charset="UTF-8">
152
156
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
153
- <title>SkillVault Leak Investigation Report</title>
157
+ <title>Leak Investigation Report \u2014 ${escapeHtml(metadata.skill_name)} | SkillVault</title>
154
158
  <style>
155
159
  * { margin: 0; padding: 0; box-sizing: border-box; }
156
160
  body {
157
161
  font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
158
- background: #111827;
162
+ background: #0a0a0a;
159
163
  color: #e5e7eb;
160
- padding: 2rem;
161
164
  line-height: 1.6;
162
165
  }
163
- h1 {
164
- color: #f9fafb;
165
- font-size: 1.75rem;
166
- margin-bottom: 0.5rem;
167
- border-bottom: 2px solid #374151;
168
- padding-bottom: 0.75rem;
166
+ .container { max-width: 960px; margin: 0 auto; padding: 32px 24px; }
167
+ .report-header {
168
+ background: linear-gradient(135deg, #1e1b4b, #0f172a);
169
+ border-radius: 12px;
170
+ padding: 40px 32px;
171
+ margin-bottom: 32px;
172
+ border: 1px solid #1e293b;
173
+ position: relative;
174
+ overflow: hidden;
175
+ }
176
+ .report-header::before {
177
+ content: '';
178
+ position: absolute;
179
+ top: -50%;
180
+ right: -10%;
181
+ width: 300px;
182
+ height: 300px;
183
+ background: radial-gradient(circle, rgba(99,102,241,0.08) 0%, transparent 70%);
184
+ pointer-events: none;
185
+ }
186
+ .brand {
187
+ display: flex;
188
+ align-items: center;
189
+ gap: 12px;
190
+ margin-bottom: 20px;
169
191
  }
170
- h2 {
171
- color: #d1d5db;
172
- font-size: 1.25rem;
173
- margin-top: 2rem;
174
- margin-bottom: 0.75rem;
192
+ .brand-mark {
193
+ width: 36px;
194
+ height: 36px;
195
+ background: linear-gradient(135deg, #6366f1, #4f46e5);
196
+ border-radius: 8px;
197
+ display: flex;
198
+ align-items: center;
199
+ justify-content: center;
200
+ font-weight: 800;
201
+ font-size: 16px;
202
+ color: #fff;
203
+ letter-spacing: -1px;
204
+ box-shadow: 0 0 20px rgba(99,102,241,0.3);
175
205
  }
176
- .metadata {
177
- background: #1f2937;
206
+ .brand-name { font-size: 18px; font-weight: 700; color: #e2e8f0; letter-spacing: -0.3px; }
207
+ .report-header h1 { font-size: 26px; color: #fff; margin-bottom: 4px; }
208
+ .report-header .subtitle { color: #94a3b8; font-size: 14px; }
209
+ .report-header .report-id { position: absolute; top: 20px; right: 24px; color: #475569; font-size: 11px; font-family: monospace; }
210
+ .alert-banner {
211
+ background: #450a0a;
212
+ border: 1px solid #dc2626;
178
213
  border-radius: 8px;
179
- padding: 1rem 1.25rem;
180
- margin: 1rem 0 2rem;
214
+ padding: 16px 20px;
215
+ margin-bottom: 24px;
216
+ display: flex;
217
+ align-items: flex-start;
218
+ gap: 12px;
219
+ color: #fca5a5;
220
+ font-size: 14px;
221
+ line-height: 1.5;
222
+ }
223
+ .alert-banner strong { color: #fff; }
224
+ .alert-icon {
225
+ width: 24px;
226
+ height: 24px;
227
+ background: #dc2626;
228
+ border-radius: 50%;
229
+ display: flex;
230
+ align-items: center;
231
+ justify-content: center;
232
+ font-weight: 800;
233
+ font-size: 14px;
234
+ color: #fff;
235
+ flex-shrink: 0;
236
+ margin-top: 1px;
237
+ }
238
+ .section {
239
+ background: #111827;
240
+ border-radius: 12px;
241
+ padding: 24px;
242
+ margin-bottom: 24px;
243
+ border: 1px solid #1e293b;
244
+ }
245
+ .section h2 {
246
+ font-size: 16px;
247
+ color: #f1f5f9;
248
+ margin-bottom: 4px;
249
+ }
250
+ .section .section-desc {
251
+ color: #64748b;
252
+ font-size: 13px;
253
+ margin-bottom: 16px;
254
+ }
255
+ .meta-grid {
181
256
  display: grid;
182
- grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
183
- gap: 0.5rem;
257
+ grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
258
+ gap: 12px;
184
259
  }
185
- .metadata span { color: #9ca3af; font-size: 0.875rem; }
186
- .metadata strong { color: #f3f4f6; }
260
+ .meta-item {
261
+ background: #0f172a;
262
+ padding: 14px 16px;
263
+ border-radius: 8px;
264
+ border: 1px solid #1e293b;
265
+ }
266
+ .meta-item .label { font-size: 11px; color: #64748b; text-transform: uppercase; letter-spacing: 0.5px; }
267
+ .meta-item .value { font-size: 20px; color: #fff; font-weight: 700; margin-top: 2px; }
268
+ .meta-item .value.sm { font-size: 13px; font-weight: 500; word-break: break-all; }
187
269
  table {
188
270
  width: 100%;
189
271
  border-collapse: collapse;
190
- margin-top: 0.5rem;
191
- font-size: 0.875rem;
272
+ font-size: 13px;
192
273
  }
193
274
  th {
194
275
  text-align: left;
195
- padding: 0.5rem 0.75rem;
196
- background: #1f2937;
197
- color: #9ca3af;
276
+ padding: 8px 12px;
277
+ color: #64748b;
278
+ font-size: 11px;
279
+ text-transform: uppercase;
280
+ letter-spacing: 0.5px;
281
+ border-bottom: 1px solid #1e293b;
198
282
  font-weight: 600;
199
- border-bottom: 1px solid #374151;
200
- }
201
- td {
202
- padding: 0.5rem 0.75rem;
203
- border-bottom: 1px solid #1f2937;
204
283
  }
205
- tr:hover td { background: rgba(55, 65, 81, 0.3); }
284
+ td { padding: 10px 12px; border-bottom: 1px solid rgba(30,41,59,0.5); }
285
+ tr:hover td { background: rgba(30,41,59,0.3); }
286
+ code { background: #0f172a; padding: 2px 6px; border-radius: 3px; font-size: 12px; color: #94a3b8; }
206
287
  .badge {
207
288
  display: inline-block;
208
- padding: 0.15rem 0.5rem;
289
+ padding: 2px 10px;
209
290
  border-radius: 9999px;
210
- font-size: 0.75rem;
291
+ font-size: 11px;
211
292
  font-weight: 600;
212
293
  color: #fff;
213
294
  }
214
- .empty { color: #6b7280; font-style: italic; padding: 1rem 0; }
215
- footer {
216
- margin-top: 3rem;
217
- padding-top: 1rem;
218
- border-top: 1px solid #374151;
219
- color: #6b7280;
220
- font-size: 0.75rem;
221
- text-align: center;
295
+ .empty { color: #475569; font-style: italic; padding: 1rem 0; }
296
+ .report-footer {
297
+ margin-top: 32px;
298
+ padding: 20px 0;
299
+ border-top: 1px solid #1e293b;
300
+ display: flex;
301
+ align-items: center;
302
+ justify-content: space-between;
303
+ color: #475569;
304
+ font-size: 11px;
222
305
  }
306
+ .report-footer .brand-sm { display: flex; align-items: center; gap: 6px; }
307
+ .report-footer .brand-sm .mark {
308
+ width: 16px; height: 16px; background: #4f46e5; border-radius: 3px;
309
+ display: inline-flex; align-items: center; justify-content: center;
310
+ font-size: 8px; font-weight: 800; color: #fff;
311
+ }
312
+ .confidential { color: #374151; font-size: 10px; text-align: center; margin-top: 8px; }
223
313
  </style>
224
314
  </head>
225
315
  <body>
316
+ <div class="container">
317
+
318
+ <div class="report-header">
319
+ <div class="brand"><div class="brand-mark">SV</div><div class="brand-name">SkillVault</div></div>
320
+ <p style="color:#818cf8;font-size:12px;letter-spacing:0.5px;margin-bottom:16px;">Built by you. Protected by us.</p>
321
+ <h1>Leak Investigation Report</h1>
322
+ <p class="subtitle">skill/${escapeHtml(metadata.skill_name)} \u2014 ${new Date(metadata.investigated_at).toLocaleDateString('en-US', { weekday: 'long', year: 'numeric', month: 'long', day: 'numeric' })}</p>
323
+ <div class="report-id">Report ${Date.now().toString(36).toUpperCase()}</div>
324
+ </div>
226
325
 
227
- <h1>SkillVault Leak Investigation Report</h1>
326
+ ${alertBanner}
228
327
 
229
- <div class="metadata">
230
- <div><span>Skill</span><br><strong>${escapeHtml(metadata.skill_name)}</strong></div>
231
- <div><span>Date</span><br><strong>${new Date(metadata.investigated_at).toLocaleString()}</strong></div>
232
- <div><span>Source</span><br><strong>${escapeHtml(metadata.source)}</strong></div>
233
- <div><span>Total Licensees</span><br><strong>${report.total_licensees}</strong></div>
328
+ <div class="section">
329
+ <h2>Investigation Summary</h2>
330
+ <div class="section-desc">Overview of the investigation parameters and findings.</div>
331
+ <div class="meta-grid">
332
+ <div class="meta-item"><div class="label">Skill</div><div class="value">${escapeHtml(metadata.skill_name)}</div></div>
333
+ <div class="meta-item"><div class="label">Total Licensees</div><div class="value">${report.total_licensees}</div></div>
334
+ <div class="meta-item"><div class="label">Heartbeat Matches</div><div class="value" style="color:${report.heartbeat_matches.length > 0 ? '#22c55e' : '#64748b'}">${report.heartbeat_matches.length}</div></div>
335
+ <div class="meta-item"><div class="label">Suspects Flagged</div><div class="value" style="color:${report.suspects.filter((s) => s.risk_level !== 'low').length > 0 ? '#f97316' : '#64748b'}">${report.suspects.filter((s) => s.risk_level !== 'low').length}</div></div>
336
+ <div class="meta-item"><div class="label">Source</div><div class="value sm">${escapeHtml(metadata.source)}</div></div>
337
+ <div class="meta-item"><div class="label">Investigated</div><div class="value sm">${new Date(metadata.investigated_at).toLocaleString()}</div></div>
338
+ </div>
234
339
  </div>
235
340
 
236
341
  <h2>Heartbeat Matches</h2>
@@ -257,7 +362,12 @@ ${auditEvents.length > 0
257
362
  </table>`
258
363
  : '<p class="empty">No audit events found.</p>'}
259
364
 
260
- <footer>Generated by SkillVault CLI v0.1.9</footer>
365
+ <div class="report-footer">
366
+ <div class="brand-sm"><span class="mark">SV</span> SkillVault</div>
367
+ <div>Generated by SkillVault CLI v${metadata.cli_version} \u2014 ${new Date(metadata.investigated_at).toISOString()}</div>
368
+ <div><a href="https://getskillvault.com" style="color:#4f46e5;text-decoration:none;">getskillvault.com</a></div>
369
+ </div>
370
+ <p class="confidential">This report is confidential and intended for the publisher\u2019s internal investigation use only.</p>
261
371
 
262
372
  </body>
263
373
  </html>`;
@@ -336,25 +446,40 @@ export const investigateCommand = new Command('investigate')
336
446
  // Fetch customer list
337
447
  const customersData = await sessionFetch(ctx, '/customers');
338
448
  const metadata = {
449
+ generated_by: 'SkillVault CLI',
450
+ product: 'SkillVault — Encrypted Skill Distribution Platform',
451
+ website: 'https://getskillvault.com',
452
+ cli_version: '0.1.9',
339
453
  skill_name: skill.name,
340
454
  skill_id: skill.id,
341
455
  publisher_id: ctx.publisherId,
342
456
  investigated_at: report.created_at,
343
- cli_version: '0.1.9',
344
457
  source: sourceLabel,
458
+ notice: 'This report was generated by SkillVault and is confidential.',
345
459
  };
346
460
  // Write metadata.json
347
461
  writeFileSync(join(dir, 'metadata.json'), JSON.stringify(metadata, null, 2) + '\n');
348
462
  // Write summary.json
349
- writeFileSync(join(dir, 'summary.json'), JSON.stringify(report, null, 2) + '\n');
463
+ const summaryWithBranding = {
464
+ _generated_by: 'SkillVault (https://getskillvault.com)',
465
+ ...report,
466
+ };
467
+ writeFileSync(join(dir, 'summary.json'), JSON.stringify(summaryWithBranding, null, 2) + '\n');
350
468
  // Write evidence/leaked-content.txt
351
469
  writeFileSync(join(evidenceDir, 'leaked-content.txt'), leakedContent);
352
470
  // Write evidence/audit-trail.json
353
- writeFileSync(join(evidenceDir, 'audit-trail.json'), JSON.stringify(auditData.events, null, 2) + '\n');
471
+ const auditWithBranding = {
472
+ _generated_by: 'SkillVault Leak Investigation',
473
+ _investigated_at: report.created_at,
474
+ _skill: skill.name,
475
+ events: auditData.events,
476
+ };
477
+ writeFileSync(join(evidenceDir, 'audit-trail.json'), JSON.stringify(auditWithBranding, null, 2) + '\n');
354
478
  // Write suspects.csv
479
+ const csvComment = '# SkillVault Leak Investigation Report — https://getskillvault.com\n# Generated: ' + report.created_at + '\n';
355
480
  const csvHeader = 'licensee_id,agent_id,risk_score,risk_level,anomaly_events,strike_count,composite_score';
356
481
  const csvRows = report.suspects.map((s) => `${s.licensee_id},${s.agent_id},${s.risk_score},${s.risk_level},${s.anomaly_events},${s.strike_count},${s.composite_score}`);
357
- writeFileSync(join(dir, 'suspects.csv'), [csvHeader, ...csvRows].join('\n') + '\n');
482
+ writeFileSync(join(dir, 'suspects.csv'), csvComment + [csvHeader, ...csvRows].join('\n') + '\n');
358
483
  // Write report.html
359
484
  const html = buildHtmlReport(report, auditData.events, metadata);
360
485
  writeFileSync(join(dir, 'report.html'), html);
@@ -1 +1 @@
1
- {"version":3,"file":"investigate.js","sourceRoot":"","sources":["../../src/commands/investigate.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"investigate.js","sourceRoot":"","sources":["../../src/commands/investigate.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -3652,92 +3652,195 @@ function buildHtmlReport(report, auditEvents, metadata) {
3652
3652
  <td>${escapeHtml(e.agent_id ? e.agent_id.slice(0, 16) + "..." : "-")}</td>
3653
3653
  <td>${new Date(e.created_at).toLocaleString()}</td>
3654
3654
  </tr>`).join("\n");
3655
+ const hasHighConfidence = report.heartbeat_matches.some((m) => m.confidence >= 0.9);
3656
+ const alertBanner = hasHighConfidence ? `<div class="alert-banner"><div class="alert-icon">!</div><div><strong>High-confidence heartbeat match detected.</strong> Forensic heartbeat values in the leaked content match a specific decryption event with &ge;99% confidence.</div></div>` : "";
3655
3657
  return `<!DOCTYPE html>
3656
3658
  <html lang="en">
3657
3659
  <head>
3658
3660
  <meta charset="UTF-8">
3659
3661
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
3660
- <title>SkillVault Leak Investigation Report</title>
3662
+ <title>Leak Investigation Report \u2014 ${escapeHtml(metadata.skill_name)} | SkillVault</title>
3661
3663
  <style>
3662
3664
  * { margin: 0; padding: 0; box-sizing: border-box; }
3663
3665
  body {
3664
3666
  font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif;
3665
- background: #111827;
3667
+ background: #0a0a0a;
3666
3668
  color: #e5e7eb;
3667
- padding: 2rem;
3668
3669
  line-height: 1.6;
3669
3670
  }
3670
- h1 {
3671
- color: #f9fafb;
3672
- font-size: 1.75rem;
3673
- margin-bottom: 0.5rem;
3674
- border-bottom: 2px solid #374151;
3675
- padding-bottom: 0.75rem;
3676
- }
3677
- h2 {
3678
- color: #d1d5db;
3679
- font-size: 1.25rem;
3680
- margin-top: 2rem;
3681
- margin-bottom: 0.75rem;
3682
- }
3683
- .metadata {
3684
- background: #1f2937;
3671
+ .container { max-width: 960px; margin: 0 auto; padding: 32px 24px; }
3672
+ .report-header {
3673
+ background: linear-gradient(135deg, #1e1b4b, #0f172a);
3674
+ border-radius: 12px;
3675
+ padding: 40px 32px;
3676
+ margin-bottom: 32px;
3677
+ border: 1px solid #1e293b;
3678
+ position: relative;
3679
+ overflow: hidden;
3680
+ }
3681
+ .report-header::before {
3682
+ content: '';
3683
+ position: absolute;
3684
+ top: -50%;
3685
+ right: -10%;
3686
+ width: 300px;
3687
+ height: 300px;
3688
+ background: radial-gradient(circle, rgba(99,102,241,0.08) 0%, transparent 70%);
3689
+ pointer-events: none;
3690
+ }
3691
+ .brand {
3692
+ display: flex;
3693
+ align-items: center;
3694
+ gap: 12px;
3695
+ margin-bottom: 20px;
3696
+ }
3697
+ .brand-mark {
3698
+ width: 36px;
3699
+ height: 36px;
3700
+ background: linear-gradient(135deg, #6366f1, #4f46e5);
3701
+ border-radius: 8px;
3702
+ display: flex;
3703
+ align-items: center;
3704
+ justify-content: center;
3705
+ font-weight: 800;
3706
+ font-size: 16px;
3707
+ color: #fff;
3708
+ letter-spacing: -1px;
3709
+ box-shadow: 0 0 20px rgba(99,102,241,0.3);
3710
+ }
3711
+ .brand-name { font-size: 18px; font-weight: 700; color: #e2e8f0; letter-spacing: -0.3px; }
3712
+ .report-header h1 { font-size: 26px; color: #fff; margin-bottom: 4px; }
3713
+ .report-header .subtitle { color: #94a3b8; font-size: 14px; }
3714
+ .report-header .report-id { position: absolute; top: 20px; right: 24px; color: #475569; font-size: 11px; font-family: monospace; }
3715
+ .alert-banner {
3716
+ background: #450a0a;
3717
+ border: 1px solid #dc2626;
3685
3718
  border-radius: 8px;
3686
- padding: 1rem 1.25rem;
3687
- margin: 1rem 0 2rem;
3719
+ padding: 16px 20px;
3720
+ margin-bottom: 24px;
3721
+ display: flex;
3722
+ align-items: flex-start;
3723
+ gap: 12px;
3724
+ color: #fca5a5;
3725
+ font-size: 14px;
3726
+ line-height: 1.5;
3727
+ }
3728
+ .alert-banner strong { color: #fff; }
3729
+ .alert-icon {
3730
+ width: 24px;
3731
+ height: 24px;
3732
+ background: #dc2626;
3733
+ border-radius: 50%;
3734
+ display: flex;
3735
+ align-items: center;
3736
+ justify-content: center;
3737
+ font-weight: 800;
3738
+ font-size: 14px;
3739
+ color: #fff;
3740
+ flex-shrink: 0;
3741
+ margin-top: 1px;
3742
+ }
3743
+ .section {
3744
+ background: #111827;
3745
+ border-radius: 12px;
3746
+ padding: 24px;
3747
+ margin-bottom: 24px;
3748
+ border: 1px solid #1e293b;
3749
+ }
3750
+ .section h2 {
3751
+ font-size: 16px;
3752
+ color: #f1f5f9;
3753
+ margin-bottom: 4px;
3754
+ }
3755
+ .section .section-desc {
3756
+ color: #64748b;
3757
+ font-size: 13px;
3758
+ margin-bottom: 16px;
3759
+ }
3760
+ .meta-grid {
3688
3761
  display: grid;
3689
- grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
3690
- gap: 0.5rem;
3762
+ grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
3763
+ gap: 12px;
3764
+ }
3765
+ .meta-item {
3766
+ background: #0f172a;
3767
+ padding: 14px 16px;
3768
+ border-radius: 8px;
3769
+ border: 1px solid #1e293b;
3691
3770
  }
3692
- .metadata span { color: #9ca3af; font-size: 0.875rem; }
3693
- .metadata strong { color: #f3f4f6; }
3771
+ .meta-item .label { font-size: 11px; color: #64748b; text-transform: uppercase; letter-spacing: 0.5px; }
3772
+ .meta-item .value { font-size: 20px; color: #fff; font-weight: 700; margin-top: 2px; }
3773
+ .meta-item .value.sm { font-size: 13px; font-weight: 500; word-break: break-all; }
3694
3774
  table {
3695
3775
  width: 100%;
3696
3776
  border-collapse: collapse;
3697
- margin-top: 0.5rem;
3698
- font-size: 0.875rem;
3777
+ font-size: 13px;
3699
3778
  }
3700
3779
  th {
3701
3780
  text-align: left;
3702
- padding: 0.5rem 0.75rem;
3703
- background: #1f2937;
3704
- color: #9ca3af;
3781
+ padding: 8px 12px;
3782
+ color: #64748b;
3783
+ font-size: 11px;
3784
+ text-transform: uppercase;
3785
+ letter-spacing: 0.5px;
3786
+ border-bottom: 1px solid #1e293b;
3705
3787
  font-weight: 600;
3706
- border-bottom: 1px solid #374151;
3707
3788
  }
3708
- td {
3709
- padding: 0.5rem 0.75rem;
3710
- border-bottom: 1px solid #1f2937;
3711
- }
3712
- tr:hover td { background: rgba(55, 65, 81, 0.3); }
3789
+ td { padding: 10px 12px; border-bottom: 1px solid rgba(30,41,59,0.5); }
3790
+ tr:hover td { background: rgba(30,41,59,0.3); }
3791
+ code { background: #0f172a; padding: 2px 6px; border-radius: 3px; font-size: 12px; color: #94a3b8; }
3713
3792
  .badge {
3714
3793
  display: inline-block;
3715
- padding: 0.15rem 0.5rem;
3794
+ padding: 2px 10px;
3716
3795
  border-radius: 9999px;
3717
- font-size: 0.75rem;
3796
+ font-size: 11px;
3718
3797
  font-weight: 600;
3719
3798
  color: #fff;
3720
3799
  }
3721
- .empty { color: #6b7280; font-style: italic; padding: 1rem 0; }
3722
- footer {
3723
- margin-top: 3rem;
3724
- padding-top: 1rem;
3725
- border-top: 1px solid #374151;
3726
- color: #6b7280;
3727
- font-size: 0.75rem;
3728
- text-align: center;
3800
+ .empty { color: #475569; font-style: italic; padding: 1rem 0; }
3801
+ .report-footer {
3802
+ margin-top: 32px;
3803
+ padding: 20px 0;
3804
+ border-top: 1px solid #1e293b;
3805
+ display: flex;
3806
+ align-items: center;
3807
+ justify-content: space-between;
3808
+ color: #475569;
3809
+ font-size: 11px;
3810
+ }
3811
+ .report-footer .brand-sm { display: flex; align-items: center; gap: 6px; }
3812
+ .report-footer .brand-sm .mark {
3813
+ width: 16px; height: 16px; background: #4f46e5; border-radius: 3px;
3814
+ display: inline-flex; align-items: center; justify-content: center;
3815
+ font-size: 8px; font-weight: 800; color: #fff;
3729
3816
  }
3817
+ .confidential { color: #374151; font-size: 10px; text-align: center; margin-top: 8px; }
3730
3818
  </style>
3731
3819
  </head>
3732
3820
  <body>
3821
+ <div class="container">
3822
+
3823
+ <div class="report-header">
3824
+ <div class="brand"><div class="brand-mark">SV</div><div class="brand-name">SkillVault</div></div>
3825
+ <p style="color:#818cf8;font-size:12px;letter-spacing:0.5px;margin-bottom:16px;">Built by you. Protected by us.</p>
3826
+ <h1>Leak Investigation Report</h1>
3827
+ <p class="subtitle">skill/${escapeHtml(metadata.skill_name)} \u2014 ${new Date(metadata.investigated_at).toLocaleDateString("en-US", { weekday: "long", year: "numeric", month: "long", day: "numeric" })}</p>
3828
+ <div class="report-id">Report ${Date.now().toString(36).toUpperCase()}</div>
3829
+ </div>
3733
3830
 
3734
- <h1>SkillVault Leak Investigation Report</h1>
3831
+ ${alertBanner}
3735
3832
 
3736
- <div class="metadata">
3737
- <div><span>Skill</span><br><strong>${escapeHtml(metadata.skill_name)}</strong></div>
3738
- <div><span>Date</span><br><strong>${new Date(metadata.investigated_at).toLocaleString()}</strong></div>
3739
- <div><span>Source</span><br><strong>${escapeHtml(metadata.source)}</strong></div>
3740
- <div><span>Total Licensees</span><br><strong>${report.total_licensees}</strong></div>
3833
+ <div class="section">
3834
+ <h2>Investigation Summary</h2>
3835
+ <div class="section-desc">Overview of the investigation parameters and findings.</div>
3836
+ <div class="meta-grid">
3837
+ <div class="meta-item"><div class="label">Skill</div><div class="value">${escapeHtml(metadata.skill_name)}</div></div>
3838
+ <div class="meta-item"><div class="label">Total Licensees</div><div class="value">${report.total_licensees}</div></div>
3839
+ <div class="meta-item"><div class="label">Heartbeat Matches</div><div class="value" style="color:${report.heartbeat_matches.length > 0 ? "#22c55e" : "#64748b"}">${report.heartbeat_matches.length}</div></div>
3840
+ <div class="meta-item"><div class="label">Suspects Flagged</div><div class="value" style="color:${report.suspects.filter((s) => s.risk_level !== "low").length > 0 ? "#f97316" : "#64748b"}">${report.suspects.filter((s) => s.risk_level !== "low").length}</div></div>
3841
+ <div class="meta-item"><div class="label">Source</div><div class="value sm">${escapeHtml(metadata.source)}</div></div>
3842
+ <div class="meta-item"><div class="label">Investigated</div><div class="value sm">${new Date(metadata.investigated_at).toLocaleString()}</div></div>
3843
+ </div>
3741
3844
  </div>
3742
3845
 
3743
3846
  <h2>Heartbeat Matches</h2>
@@ -3758,7 +3861,12 @@ ${auditEvents.length > 0 ? `<table>
3758
3861
  <tbody>${auditRows}</tbody>
3759
3862
  </table>` : '<p class="empty">No audit events found.</p>'}
3760
3863
 
3761
- <footer>Generated by SkillVault CLI v0.1.9</footer>
3864
+ <div class="report-footer">
3865
+ <div class="brand-sm"><span class="mark">SV</span> SkillVault</div>
3866
+ <div>Generated by SkillVault CLI v${metadata.cli_version} \u2014 ${new Date(metadata.investigated_at).toISOString()}</div>
3867
+ <div><a href="https://getskillvault.com" style="color:#4f46e5;text-decoration:none;">getskillvault.com</a></div>
3868
+ </div>
3869
+ <p class="confidential">This report is confidential and intended for the publisher\u2019s internal investigation use only.</p>
3762
3870
 
3763
3871
  </body>
3764
3872
  </html>`;
@@ -3821,20 +3929,35 @@ var investigateCommand = new Command29("investigate").description("Investigate a
3821
3929
  const auditData = await sessionFetch(ctx, `/audit/events?capability=skill/${encodeURIComponent(skillName)}&limit=500`);
3822
3930
  const customersData = await sessionFetch(ctx, "/customers");
3823
3931
  const metadata = {
3932
+ generated_by: "SkillVault CLI",
3933
+ product: "SkillVault \u2014 Encrypted Skill Distribution Platform",
3934
+ website: "https://getskillvault.com",
3935
+ cli_version: "0.1.9",
3824
3936
  skill_name: skill.name,
3825
3937
  skill_id: skill.id,
3826
3938
  publisher_id: ctx.publisherId,
3827
3939
  investigated_at: report.created_at,
3828
- cli_version: "0.1.9",
3829
- source: sourceLabel
3940
+ source: sourceLabel,
3941
+ notice: "This report was generated by SkillVault and is confidential."
3830
3942
  };
3831
3943
  writeFileSync8(join12(dir, "metadata.json"), JSON.stringify(metadata, null, 2) + "\n");
3832
- writeFileSync8(join12(dir, "summary.json"), JSON.stringify(report, null, 2) + "\n");
3944
+ const summaryWithBranding = {
3945
+ _generated_by: "SkillVault (https://getskillvault.com)",
3946
+ ...report
3947
+ };
3948
+ writeFileSync8(join12(dir, "summary.json"), JSON.stringify(summaryWithBranding, null, 2) + "\n");
3833
3949
  writeFileSync8(join12(evidenceDir, "leaked-content.txt"), leakedContent);
3834
- writeFileSync8(join12(evidenceDir, "audit-trail.json"), JSON.stringify(auditData.events, null, 2) + "\n");
3950
+ const auditWithBranding = {
3951
+ _generated_by: "SkillVault Leak Investigation",
3952
+ _investigated_at: report.created_at,
3953
+ _skill: skill.name,
3954
+ events: auditData.events
3955
+ };
3956
+ writeFileSync8(join12(evidenceDir, "audit-trail.json"), JSON.stringify(auditWithBranding, null, 2) + "\n");
3957
+ const csvComment = "# SkillVault Leak Investigation Report \u2014 https://getskillvault.com\n# Generated: " + report.created_at + "\n";
3835
3958
  const csvHeader = "licensee_id,agent_id,risk_score,risk_level,anomaly_events,strike_count,composite_score";
3836
3959
  const csvRows = report.suspects.map((s) => `${s.licensee_id},${s.agent_id},${s.risk_score},${s.risk_level},${s.anomaly_events},${s.strike_count},${s.composite_score}`);
3837
- writeFileSync8(join12(dir, "suspects.csv"), [csvHeader, ...csvRows].join("\n") + "\n");
3960
+ writeFileSync8(join12(dir, "suspects.csv"), csvComment + [csvHeader, ...csvRows].join("\n") + "\n");
3838
3961
  const html = buildHtmlReport(report, auditData.events, metadata);
3839
3962
  writeFileSync8(join12(dir, "report.html"), html);
3840
3963
  const fileCount = 6;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "skillvault-publisher",
3
- "version": "0.1.9",
3
+ "version": "0.1.10",
4
4
  "description": "SkillVault publisher CLI — publish, manage, and distribute encrypted skills",
5
5
  "type": "module",
6
6
  "bin": {