lemura 1.5.4 → 1.5.5

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
@@ -5,6 +5,12 @@ All notable changes to this project will be documented in this file.
5
5
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6
6
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
 
8
+ ## [1.5.5] - 2026-06-01
9
+
10
+ ### Fixed
11
+
12
+ - **Duplicated response in `stream()` during goal correction** (significant): `stream()` yielded the model's first answer to the caller *live*, then ran goal verification *afterwards*. When the verifier returned `achieved: false` and a correction re-entry followed, the corrected answer was streamed immediately after the already-emitted first answer — surfacing both as one duplicated response (contradicting the documented "delivers only the clean final response" contract). The final response is now **buffered** until verification settles; a rejected attempt is silently discarded and corrected, so the stream emits only the single approved answer. `run()` was unaffected (it already buffered).
13
+
8
14
  ## [1.5.4] - 2026-05-30
9
15
 
10
16
  ### Fixed
package/dist/index.js CHANGED
@@ -3633,7 +3633,6 @@ ${blocks.join("\n\n")}
3633
3633
  if (chunk.delta) {
3634
3634
  accumulated += chunk.delta;
3635
3635
  finalTokenCount += Math.ceil(chunk.delta.length / 4);
3636
- yield chunk.delta;
3637
3636
  }
3638
3637
  if (chunk.finished) {
3639
3638
  finalFinishReason = chunk.finishReason;
@@ -3694,11 +3693,11 @@ Still missing: ${verdict.missing}`;
3694
3693
  * **Missing:** ${verdict.missing ?? "Not specified"}
3695
3694
 
3696
3695
  `;
3697
- yield warningBlock;
3698
- const lastTurn = [...this.context.turns].reverse().find((t) => t.role === "assistant");
3699
- if (lastTurn) lastTurn.content = lastTurn.content + warningBlock;
3696
+ accumulated += warningBlock;
3697
+ finalTurn.content = accumulated;
3700
3698
  }
3701
3699
  }
3700
+ if (accumulated) yield accumulated;
3702
3701
  this.logger.info(`[stream] Streaming run completed`);
3703
3702
  return;
3704
3703
  }