opencroc 1.6.3 → 1.6.4

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/dist/index.d.ts CHANGED
@@ -220,6 +220,12 @@ interface PipelineRunResult {
220
220
  validationErrors: ValidationError[];
221
221
  duration: number;
222
222
  }
223
+ interface ExecutionMetrics$1 {
224
+ passed: number;
225
+ failed: number;
226
+ skipped: number;
227
+ timedOut: number;
228
+ }
223
229
  interface ChainFailureResult {
224
230
  chain: string;
225
231
  failedStep: number;
@@ -1226,6 +1232,19 @@ declare function listCiPlatforms(): string[];
1226
1232
  */
1227
1233
  declare function generateCiTemplate(platform: string, opts?: CiTemplateOptions): string;
1228
1234
 
1235
+ type AuthStatus = 'skipped' | 'ready' | 'failed';
1236
+ type BackendStatus = 'reused' | 'started' | 'skipped' | 'failed';
1237
+ interface ExecutionQualityGateResult {
1238
+ setupFail: boolean;
1239
+ skipRatio: number;
1240
+ authFailRatio: number;
1241
+ effectiveExecutionRate: number;
1242
+ level: 'pass' | 'warn' | 'fail';
1243
+ reasons: string[];
1244
+ authStatus: AuthStatus;
1245
+ backendStatus: BackendStatus;
1246
+ }
1247
+
1229
1248
  /**
1230
1249
  * Checklist Reporter — generates backend fix checklists from test results.
1231
1250
  *
@@ -1282,13 +1301,17 @@ interface ReportOutput {
1282
1301
  content: string;
1283
1302
  filename: string;
1284
1303
  }
1285
- declare function generateJsonReport(result: PipelineRunResult): ReportOutput;
1286
- declare function generateMarkdownReport(result: PipelineRunResult): ReportOutput;
1287
- declare function generateHtmlReport(result: PipelineRunResult): ReportOutput;
1304
+ interface ReportExecutionContext {
1305
+ metrics?: ExecutionMetrics$1 | null;
1306
+ quality?: ExecutionQualityGateResult | null;
1307
+ }
1308
+ declare function generateJsonReport(result: PipelineRunResult, context?: ReportExecutionContext): ReportOutput;
1309
+ declare function generateMarkdownReport(result: PipelineRunResult, context?: ReportExecutionContext): ReportOutput;
1310
+ declare function generateHtmlReport(result: PipelineRunResult, context?: ReportExecutionContext): ReportOutput;
1288
1311
  /**
1289
1312
  * Generate reports in the specified formats.
1290
1313
  */
1291
- declare function generateReports(result: PipelineRunResult, formats?: ('html' | 'json' | 'markdown')[]): ReportOutput[];
1314
+ declare function generateReports(result: PipelineRunResult, formats?: ('html' | 'json' | 'markdown')[], context?: ReportExecutionContext): ReportOutput[];
1292
1315
 
1293
1316
  interface DashboardData {
1294
1317
  generatedAt: string;
package/dist/index.js CHANGED
@@ -5398,7 +5398,7 @@ function renderTokenReportMarkdown(summary) {
5398
5398
  }
5399
5399
 
5400
5400
  // src/reporters/index.ts
5401
- function generateJsonReport(result) {
5401
+ function generateJsonReport(result, context) {
5402
5402
  const serializable = {
5403
5403
  modules: result.modules,
5404
5404
  erDiagrams: Object.fromEntries(
@@ -5418,6 +5418,10 @@ function generateJsonReport(result) {
5418
5418
  module: f.module,
5419
5419
  chain: f.chain
5420
5420
  })),
5421
+ execution: context ? {
5422
+ metrics: context.metrics ?? null,
5423
+ quality: context.quality ?? null
5424
+ } : void 0,
5421
5425
  validationErrors: result.validationErrors,
5422
5426
  duration: result.duration
5423
5427
  };
@@ -5427,7 +5431,7 @@ function generateJsonReport(result) {
5427
5431
  filename: "opencroc-report.json"
5428
5432
  };
5429
5433
  }
5430
- function generateMarkdownReport(result) {
5434
+ function generateMarkdownReport(result, context) {
5431
5435
  const lines = [
5432
5436
  "# OpenCroc Report",
5433
5437
  "",
@@ -5471,6 +5475,31 @@ function generateMarkdownReport(result) {
5471
5475
  }
5472
5476
  }
5473
5477
  }
5478
+ if (context?.metrics || context?.quality) {
5479
+ lines.push("", "## Execution Quality", "");
5480
+ if (context.metrics) {
5481
+ lines.push(
5482
+ `- Passed: ${context.metrics.passed}`,
5483
+ `- Failed: ${context.metrics.failed}`,
5484
+ `- Skipped: ${context.metrics.skipped}`,
5485
+ `- TimedOut: ${context.metrics.timedOut}`
5486
+ );
5487
+ }
5488
+ if (context.quality) {
5489
+ lines.push(
5490
+ `- Gate Level: ${context.quality.level}`,
5491
+ `- Setup Fail: ${context.quality.setupFail}`,
5492
+ `- Skip Ratio: ${(context.quality.skipRatio * 100).toFixed(2)}%`,
5493
+ `- Auth Fail Ratio: ${(context.quality.authFailRatio * 100).toFixed(2)}%`,
5494
+ `- Effective Execution Rate: ${(context.quality.effectiveExecutionRate * 100).toFixed(2)}%`,
5495
+ `- Auth Status: ${context.quality.authStatus}`,
5496
+ `- Backend Status: ${context.quality.backendStatus}`
5497
+ );
5498
+ if (context.quality.reasons.length > 0) {
5499
+ lines.push(`- Reasons: ${context.quality.reasons.join(", ")}`);
5500
+ }
5501
+ }
5502
+ }
5474
5503
  lines.push("", "---", "*Generated by [OpenCroc](https://github.com/opencroc/opencroc)*");
5475
5504
  return {
5476
5505
  format: "markdown",
@@ -5503,7 +5532,7 @@ function validationRows(errors) {
5503
5532
  (e) => `<tr class="${e.severity}"><td><span class="badge ${e.severity}">${e.severity}</span></td><td>${escapeHtml(e.module)}</td><td>${escapeHtml(e.field)}</td><td>${escapeHtml(e.message)}</td></tr>`
5504
5533
  ).join("\n");
5505
5534
  }
5506
- function generateHtmlReport(result) {
5535
+ function generateHtmlReport(result, context) {
5507
5536
  const totalTables = Array.from(result.erDiagrams.values()).reduce((s, e) => s + e.tables.length, 0);
5508
5537
  const totalRelations = Array.from(result.erDiagrams.values()).reduce((s, e) => s + e.relations.length, 0);
5509
5538
  const totalChains = Array.from(result.chainPlans.values()).reduce((s, p) => s + p.chains.length, 0);
@@ -5582,6 +5611,17 @@ function generateHtmlReport(result) {
5582
5611
  </table>
5583
5612
  </section>
5584
5613
 
5614
+ ${context?.quality || context?.metrics ? `<section>
5615
+ <h2>Execution Quality</h2>
5616
+ <table>
5617
+ <thead><tr><th>Item</th><th>Value</th></tr></thead>
5618
+ <tbody>
5619
+ ${context.metrics ? `<tr><td>Passed</td><td>${context.metrics.passed}</td></tr><tr><td>Failed</td><td>${context.metrics.failed}</td></tr><tr><td>Skipped</td><td>${context.metrics.skipped}</td></tr><tr><td>TimedOut</td><td>${context.metrics.timedOut}</td></tr>` : ""}
5620
+ ${context.quality ? `<tr><td>Gate Level</td><td>${escapeHtml(context.quality.level)}</td></tr><tr><td>Setup Fail</td><td>${String(context.quality.setupFail)}</td></tr><tr><td>Skip Ratio</td><td>${(context.quality.skipRatio * 100).toFixed(2)}%</td></tr><tr><td>Auth Fail Ratio</td><td>${(context.quality.authFailRatio * 100).toFixed(2)}%</td></tr><tr><td>Effective Execution Rate</td><td>${(context.quality.effectiveExecutionRate * 100).toFixed(2)}%</td></tr><tr><td>Auth Status</td><td>${escapeHtml(context.quality.authStatus)}</td></tr><tr><td>Backend Status</td><td>${escapeHtml(context.quality.backendStatus)}</td></tr><tr><td>Reasons</td><td>${escapeHtml(context.quality.reasons.join(", ") || "-")}</td></tr>` : ""}
5621
+ </tbody>
5622
+ </table>
5623
+ </section>` : ""}
5624
+
5585
5625
  ${result.validationErrors.length > 0 ? `<section>
5586
5626
  <h2>Validation Issues (${result.validationErrors.length})</h2>
5587
5627
  <table>
@@ -5606,11 +5646,11 @@ var REPORTERS = {
5606
5646
  json: generateJsonReport,
5607
5647
  markdown: generateMarkdownReport
5608
5648
  };
5609
- function generateReports(result, formats = ["html"]) {
5649
+ function generateReports(result, formats = ["html"], context) {
5610
5650
  return formats.map((fmt) => {
5611
5651
  const gen = REPORTERS[fmt];
5612
5652
  if (!gen) throw new Error(`Unknown report format: "${fmt}". Available: ${Object.keys(REPORTERS).join(", ")}`);
5613
- return gen(result);
5653
+ return gen(result, context);
5614
5654
  });
5615
5655
  }
5616
5656