@nopaque/sdk 0.6.0 → 0.7.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/CHANGELOG.md CHANGED
@@ -4,6 +4,30 @@ All notable changes to this project will be documented in this file.
4
4
  The format follows [Keep a Changelog](https://keepachangelog.com/en/1.1.0/),
5
5
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
6
6
 
7
+ ## [0.7.0] - 2026-08-19
8
+
9
+ ### Fixed
10
+
11
+ - `waitForRun()` could return before the run's verdict was written, giving
12
+ `outcome: undefined` and no step results on a run that had actually passed.
13
+ A re-fetch of the same id moments later returned the real verdict. The
14
+ container emits `run_status_changed{status:'completed'}` and
15
+ `run_completed{outcome}` as separate SQS messages with no ordering
16
+ guarantee, and the API skips undefined fields on write, so a status-only
17
+ message marks the run terminal with no outcome. Polling keyed on `status`
18
+ alone, so it returned that intermediate row. `completed` now also requires a
19
+ decided verdict; `failed` and `cancelled` still settle immediately, since
20
+ neither carries one.
21
+
22
+ ### Added
23
+
24
+ - `TestStepResult` and `TestRunDetails`. `testing.runs.get()` and
25
+ `waitForRun()` return `TestRunDetails` — the run row plus `stepResults`,
26
+ `fullTranscript` and an inline `config` snapshot, all of which the API has
27
+ always sent and neither SDK declared.
28
+ - Named `TestStepResult`, not `StepResult`: the latter is already exported
29
+ for mapping and is an unrelated shape.
30
+
7
31
  ## [0.6.0] - 2026-08-19
8
32
 
9
33
  ### Fixed
package/dist/index.cjs CHANGED
@@ -133,7 +133,7 @@ function resolveConfig(opts) {
133
133
  }
134
134
 
135
135
  // src/version.ts
136
- var VERSION = true ? "0.6.0" : "0.0.0-dev";
136
+ var VERSION = true ? "0.7.0" : "0.0.0-dev";
137
137
 
138
138
  // src/userAgent.ts
139
139
  function composeUserAgent() {
@@ -1388,6 +1388,11 @@ var SweepsResource = class extends Resource {
1388
1388
 
1389
1389
  // src/resources/testing.ts
1390
1390
  var RUN_TERMINAL_STATUSES3 = /* @__PURE__ */ new Set(["completed", "failed", "cancelled"]);
1391
+ function isRunSettled(run) {
1392
+ if (run.status === void 0 || !RUN_TERMINAL_STATUSES3.has(run.status)) return false;
1393
+ if (run.status !== "completed") return true;
1394
+ return run.outcome != null && run.outcome !== "pending";
1395
+ }
1391
1396
  var TestingConfigsResource = class extends Resource {
1392
1397
  async create(body, requestOptions) {
1393
1398
  return await this.transport.request("POST", "/testing/configs", { body, requestOptions });
@@ -1488,7 +1493,7 @@ var TestingRunsResource = class extends Resource {
1488
1493
  async waitForRun(runId, opts = {}) {
1489
1494
  return await waitFor({
1490
1495
  fetch: () => this.get(runId, opts.requestOptions),
1491
- isTerminal: (run) => run.status !== void 0 && RUN_TERMINAL_STATUSES3.has(run.status),
1496
+ isTerminal: isRunSettled,
1492
1497
  timeout: opts.timeout,
1493
1498
  initialInterval: opts.pollInterval,
1494
1499
  intervalCap: opts.intervalCap,