@plune-ai/cli 0.19.0 → 0.20.0

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/cli.cjs CHANGED
@@ -5368,7 +5368,8 @@ async function defaultReadEvidence(dir) {
5368
5368
  if (!Array.isArray(raw)) return void 0;
5369
5369
  return raw.map((r) => {
5370
5370
  const rec = asRecord(r);
5371
- return { name: str(rec["name"]), passed: rec["passed"] === true };
5371
+ const error = str(rec["error"]);
5372
+ return { name: str(rec["name"]), passed: rec["passed"] === true, ...error !== "" ? { error } : {} };
5372
5373
  });
5373
5374
  }
5374
5375
  function casesFromDesign(report) {
@@ -5427,7 +5428,7 @@ async function readCairnRun(dir, deps = {}) {
5427
5428
  const verdicts = /* @__PURE__ */ new Map();
5428
5429
  for (const e of evidence ?? []) {
5429
5430
  if (verdicts.has(e.name)) throw new CairnEvidenceAmbiguousError(e.name);
5430
- verdicts.set(e.name, e.passed ? "passed" : "failed");
5431
+ verdicts.set(e.name, e.error !== void 0 ? "blocked" : e.passed ? "passed" : "failed");
5431
5432
  }
5432
5433
  cases = casesFromApi(report, verdicts);
5433
5434
  } else {
package/dist/index.cjs CHANGED
@@ -1910,7 +1910,8 @@ async function defaultReadEvidence(dir) {
1910
1910
  if (!Array.isArray(raw)) return void 0;
1911
1911
  return raw.map((r) => {
1912
1912
  const rec = asRecord(r);
1913
- return { name: str(rec["name"]), passed: rec["passed"] === true };
1913
+ const error = str(rec["error"]);
1914
+ return { name: str(rec["name"]), passed: rec["passed"] === true, ...error !== "" ? { error } : {} };
1914
1915
  });
1915
1916
  }
1916
1917
  function casesFromDesign(report) {
@@ -1969,7 +1970,7 @@ async function readCairnRun(dir, deps = {}) {
1969
1970
  const verdicts = /* @__PURE__ */ new Map();
1970
1971
  for (const e of evidence ?? []) {
1971
1972
  if (verdicts.has(e.name)) throw new CairnEvidenceAmbiguousError(e.name);
1972
- verdicts.set(e.name, e.passed ? "passed" : "failed");
1973
+ verdicts.set(e.name, e.error !== void 0 ? "blocked" : e.passed ? "passed" : "failed");
1973
1974
  }
1974
1975
  cases = casesFromApi(report, verdicts);
1975
1976
  } else {
package/dist/index.d.cts CHANGED
@@ -652,7 +652,12 @@ declare function formatIngestResult(r: IngestResult): string;
652
652
  declare const INGEST_SCHEMA_VERSION = 1;
653
653
  type CairnRunMode = 'explore' | 'design' | 'api';
654
654
  type CairnExecution = 'auto' | 'manual';
655
- type CairnVerdict = 'passed' | 'failed';
655
+ /**
656
+ * `blocked` (plune-ai/plune#1327): the case's request got no answer — Cairn's evidence records a transport error
657
+ * after the retries — so the product never said anything either way. Sent as `failed`, it blamed the product for an
658
+ * unreachable target. Needs a platform that accepts it (plune-ai/plune#1330); an older one refuses the payload.
659
+ */
660
+ type CairnVerdict = 'passed' | 'failed' | 'blocked';
656
661
  interface CairnIngestCase {
657
662
  stableId: string;
658
663
  title: string;
@@ -676,6 +681,8 @@ interface CairnIngestPayload {
676
681
  interface EvidenceRecord {
677
682
  name: string;
678
683
  passed: boolean;
684
+ /** Cairn's transport error, when the request got no response after the retries. */
685
+ error?: string;
679
686
  }
680
687
  interface ReadCairnRunDeps {
681
688
  /** Injected for tests; returns `undefined` when the run executed nothing and wrote no evidence. */
package/dist/index.d.ts CHANGED
@@ -652,7 +652,12 @@ declare function formatIngestResult(r: IngestResult): string;
652
652
  declare const INGEST_SCHEMA_VERSION = 1;
653
653
  type CairnRunMode = 'explore' | 'design' | 'api';
654
654
  type CairnExecution = 'auto' | 'manual';
655
- type CairnVerdict = 'passed' | 'failed';
655
+ /**
656
+ * `blocked` (plune-ai/plune#1327): the case's request got no answer — Cairn's evidence records a transport error
657
+ * after the retries — so the product never said anything either way. Sent as `failed`, it blamed the product for an
658
+ * unreachable target. Needs a platform that accepts it (plune-ai/plune#1330); an older one refuses the payload.
659
+ */
660
+ type CairnVerdict = 'passed' | 'failed' | 'blocked';
656
661
  interface CairnIngestCase {
657
662
  stableId: string;
658
663
  title: string;
@@ -676,6 +681,8 @@ interface CairnIngestPayload {
676
681
  interface EvidenceRecord {
677
682
  name: string;
678
683
  passed: boolean;
684
+ /** Cairn's transport error, when the request got no response after the retries. */
685
+ error?: string;
679
686
  }
680
687
  interface ReadCairnRunDeps {
681
688
  /** Injected for tests; returns `undefined` when the run executed nothing and wrote no evidence. */
package/dist/index.js CHANGED
@@ -1854,7 +1854,8 @@ async function defaultReadEvidence(dir) {
1854
1854
  if (!Array.isArray(raw)) return void 0;
1855
1855
  return raw.map((r) => {
1856
1856
  const rec = asRecord(r);
1857
- return { name: str(rec["name"]), passed: rec["passed"] === true };
1857
+ const error = str(rec["error"]);
1858
+ return { name: str(rec["name"]), passed: rec["passed"] === true, ...error !== "" ? { error } : {} };
1858
1859
  });
1859
1860
  }
1860
1861
  function casesFromDesign(report) {
@@ -1913,7 +1914,7 @@ async function readCairnRun(dir, deps = {}) {
1913
1914
  const verdicts = /* @__PURE__ */ new Map();
1914
1915
  for (const e of evidence ?? []) {
1915
1916
  if (verdicts.has(e.name)) throw new CairnEvidenceAmbiguousError(e.name);
1916
- verdicts.set(e.name, e.passed ? "passed" : "failed");
1917
+ verdicts.set(e.name, e.error !== void 0 ? "blocked" : e.passed ? "passed" : "failed");
1917
1918
  }
1918
1919
  cases = casesFromApi(report, verdicts);
1919
1920
  } else {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@plune-ai/cli",
3
- "version": "0.19.0",
3
+ "version": "0.20.0",
4
4
  "description": "AI-powered assertion testing for LLM apps — write assertions, run them against any provider, get a pass/fail report (local, CI, or diff).",
5
5
  "keywords": [
6
6
  "ai",