This commit is contained in:
@@ -8,6 +8,7 @@
|
|||||||
|
|
||||||
### Fixed
|
### Fixed
|
||||||
|
|
||||||
|
- Fixed compaction and branch-summary requests to use fresh routing session IDs with prompt caching disabled where supported.
|
||||||
- Fixed explicit self-updates when `PI_SKIP_VERSION_CHECK` is set ([#6977](https://github.com/earendil-works/pi/issues/6977)).
|
- Fixed explicit self-updates when `PI_SKIP_VERSION_CHECK` is set ([#6977](https://github.com/earendil-works/pi/issues/6977)).
|
||||||
|
|
||||||
## [0.81.1] - 2026-07-21
|
## [0.81.1] - 2026-07-21
|
||||||
|
|||||||
@@ -6,7 +6,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
import type { AgentMessage, StreamFn, ThinkingLevel } from "@earendil-works/pi-agent-core";
|
import type { AgentMessage, StreamFn, ThinkingLevel } from "@earendil-works/pi-agent-core";
|
||||||
import { contentText, type RetryCallbacks, type RetryPolicy, retryAssistantCall } from "@earendil-works/pi-ai";
|
import { contentText, type RetryCallbacks, type RetryPolicy, retryAssistantCall, uuidv7 } from "@earendil-works/pi-ai";
|
||||||
import type { AssistantMessage, Context, Model, SimpleStreamOptions, Usage } from "@earendil-works/pi-ai/compat";
|
import type { AssistantMessage, Context, Model, SimpleStreamOptions, Usage } from "@earendil-works/pi-ai/compat";
|
||||||
import { completeSimple } from "@earendil-works/pi-ai/compat";
|
import { completeSimple } from "@earendil-works/pi-ai/compat";
|
||||||
import { convertToLlm } from "../messages.ts";
|
import { convertToLlm } from "../messages.ts";
|
||||||
@@ -567,9 +567,17 @@ export async function completeSummarization(
|
|||||||
retry?: RetryPolicy,
|
retry?: RetryPolicy,
|
||||||
callbacks?: RetryCallbacks,
|
callbacks?: RetryCallbacks,
|
||||||
): Promise<AssistantMessage> {
|
): Promise<AssistantMessage> {
|
||||||
|
// Summaries are standalone requests, so isolate routing and avoid cache writes that cannot be reused.
|
||||||
|
const requestOptions: SimpleStreamOptions = {
|
||||||
|
...options,
|
||||||
|
cacheRetention: "none",
|
||||||
|
sessionId: uuidv7(),
|
||||||
|
};
|
||||||
const produce = async (): Promise<AssistantMessage> =>
|
const produce = async (): Promise<AssistantMessage> =>
|
||||||
streamFn ? (await streamFn(model, context, options)).result() : completeSimple(model, context, options);
|
streamFn
|
||||||
return retryAssistantCall(produce, retry, options.signal, callbacks);
|
? (await streamFn(model, context, requestOptions)).result()
|
||||||
|
: completeSimple(model, context, requestOptions);
|
||||||
|
return retryAssistantCall(produce, retry, requestOptions.signal, callbacks);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|||||||
@@ -90,6 +90,18 @@ describe("generateSummary reasoning options", () => {
|
|||||||
);
|
);
|
||||||
});
|
});
|
||||||
|
|
||||||
|
it("uses fresh routing sessions without prompt caching", async () => {
|
||||||
|
await generateSummary(messages, createModel(false), 2000, "test-key");
|
||||||
|
await generateSummary(messages, createModel(false), 2000, "test-key");
|
||||||
|
|
||||||
|
const requestOptions = completeSimpleMock.mock.calls.map((call) => call[2]);
|
||||||
|
expect(requestOptions).toHaveLength(2);
|
||||||
|
expect(requestOptions.every((options) => options?.cacheRetention === "none")).toBe(true);
|
||||||
|
|
||||||
|
const sessionIds = requestOptions.map((options) => options?.sessionId);
|
||||||
|
expect(sessionIds[0]).not.toBe(sessionIds[1]);
|
||||||
|
});
|
||||||
|
|
||||||
it("does not set reasoning when thinking is off", async () => {
|
it("does not set reasoning when thinking is off", async () => {
|
||||||
await generateSummary(
|
await generateSummary(
|
||||||
messages,
|
messages,
|
||||||
|
|||||||
Reference in New Issue
Block a user