chore(changelog): normalized changelogs after merged fixes
This commit is contained in:
@@ -16,27 +16,16 @@
|
||||
- Classified Cursor HTTP/2 `NGHTTP2_INTERNAL_ERROR` / `NGHTTP2_REFUSED_STREAM` stream closes as transient so session recovery can continue instead of treating the RST as a hard stop.
|
||||
- Fixed OpenAI-compatible streams that close without a `finish_reason` chunk (connection dropped mid-generation, e.g. DeepSeek's `insufficient_system_resource` interruption) being silently finalized as a clean `stop`; the truncated turn now surfaces as a retryable incomplete-stream error instead of halting mid-sentence.
|
||||
- Fixed DeepSeek's `insufficient_system_resource` finish reason mapping to a non-retryable error; it now matches the session retry classifier's transient-transport pattern so the turn is auto-retried.
|
||||
- Preserved opaque Chat Completions tool-call IDs during same-model replay so custom gateways retain provider correlation state ([#8641](https://github.com/can1357/oh-my-pi/issues/8641)).
|
||||
- Fixed Kimi Code multi-account routing to rank OAuth credentials by 5-hour and 7-day quota headroom, retain usage-limit blocks until reset, and preserve JWT account identity across token refreshes for stable usage labels and history ([#8630](https://github.com/can1357/oh-my-pi/issues/8630)).
|
||||
- Fixed Anthropic custom signing-proxy continuations dropping native tool-search call/result blocks from signed assistant history, preserving interleaved thinking for byte-identical replay ([#8559](https://github.com/can1357/oh-my-pi/issues/8559)).
|
||||
- Stopped runaway exact response cycles across model providers and kept persistent loops fail-closed after bounded guarded retries ([#8669](https://github.com/can1357/oh-my-pi/pull/8669) by [@pstarkgit](https://github.com/pstarkgit)).
|
||||
- Fixed xAI 400ing the whole turn on MCP schemas whose tool root is an object plus a typeless exclusive-required `anyOf` (e.g. codebase-memory `check_index_coverage`). Flatten only that root fragment — nested unions and branch property/`additionalProperties` constraints stay intact. Leftover object-root unions quarantine that one tool on paid xAI Completions and xAI OAuth Responses, not on OpenAI/Azure/Codex.
|
||||
|
||||
### Removed
|
||||
|
||||
- Fixed Alibaba DashScope/Bailian per-minute token throttle (`429 Throttling.AllocationQuota`, "You exceeded your current quota, please check your plan and billing details. … error-code#token-limit", `type=insufficient_quota`) being misclassified as `QUOTA_EXHAUSTED`. The OpenAI-compatible billing wording (and the `insufficient_quota` payload code) matched the usage-limit classifier, so a transient TPM/TPS cap — which Bailian's docs document as clearing within the minute window — blocked the credential and stalled the session for the 30-minute quota backoff instead of retrying with a short backoff on the same credential. Bodies linking the `error-code#token-limit` anchor now classify as `RATE_LIMIT_EXCEEDED` and stay in the transient lane; the identical wording without the anchor (OpenAI's real account-quota error) is unchanged.
|
||||
- Fixed Anthropic-compatible streams dropping thinking bytes supplied by `content_block_start`, which invalidated signed-thinking replay ([#8319](https://github.com/can1357/oh-my-pi/pull/8319) by [@max12525k](https://github.com/max12525k)).
|
||||
### Fixed
|
||||
|
||||
- Preserved opaque Chat Completions tool-call IDs during same-model replay so custom gateways retain provider correlation state ([#8641](https://github.com/can1357/oh-my-pi/issues/8641)).
|
||||
### Fixed
|
||||
|
||||
- Fixed Kimi Code multi-account routing to rank OAuth credentials by 5-hour and 7-day quota headroom, retain usage-limit blocks until reset, and preserve JWT account identity across token refreshes for stable usage labels and history ([#8630](https://github.com/can1357/oh-my-pi/issues/8630)).
|
||||
### Fixed
|
||||
|
||||
- Fixed Anthropic custom signing-proxy continuations dropping native tool-search call/result blocks from signed assistant history, preserving interleaved thinking for byte-identical replay ([#8559](https://github.com/can1357/oh-my-pi/issues/8559)).
|
||||
### Fixed
|
||||
|
||||
- Stopped runaway exact response cycles across model providers and kept persistent loops fail-closed after bounded guarded retries ([#8669](https://github.com/can1357/oh-my-pi/pull/8669) by [@pstarkgit](https://github.com/pstarkgit)).
|
||||
### Fixed
|
||||
|
||||
- Fixed xAI 400ing the whole turn on MCP schemas whose tool root is an object plus a typeless exclusive-required `anyOf` (e.g. codebase-memory `check_index_coverage`). Flatten only that root fragment — nested unions and branch property/`additionalProperties` constraints stay intact. Leftover object-root unions quarantine that one tool on paid xAI Completions and xAI OAuth Responses, not on OpenAI/Azure/Codex.
|
||||
|
||||
|
||||
## [17.3.4] - 2026-08-14
|
||||
|
||||
|
||||
@@ -1421,9 +1421,7 @@ export function convertTools(
|
||||
// subschemas ("property schema … must be an object"), so the Moonshot
|
||||
// pass re-coerces them last.
|
||||
const sanitized = sanitizeSchemaForOpenAIResponses(baseParameters);
|
||||
const providerParameters = rejectXaiRootObjectUnion
|
||||
? flattenExclusiveRequiredRootUnion(sanitized)
|
||||
: sanitized;
|
||||
const providerParameters = rejectXaiRootObjectUnion ? flattenExclusiveRequiredRootUnion(sanitized) : sanitized;
|
||||
const responseParameters =
|
||||
model.compat.toolSchemaFlavor === "moonshot-mfjs"
|
||||
? (normalizeSchemaForMoonshot(providerParameters) as Record<string, unknown>)
|
||||
|
||||
@@ -1584,7 +1584,6 @@ function normalizeOpenAIResponsesSchemaNode(value: unknown, cache: WeakMap<JsonO
|
||||
return result;
|
||||
}
|
||||
|
||||
|
||||
function declaresObjectType(type: unknown): boolean {
|
||||
if (type === "object") return true;
|
||||
if (!Array.isArray(type)) return false;
|
||||
|
||||
@@ -124,10 +124,7 @@ function makeModel(baseUrl: string): Model<"cursor-agent"> {
|
||||
const context: Context = { messages: [{ role: "user", content: "hello", timestamp: 1 }] };
|
||||
|
||||
/** Drain a stream and return its terminal event (done / error). */
|
||||
async function runToEnd(
|
||||
baseUrl: string,
|
||||
sessionId: string,
|
||||
): Promise<{ type: "done" | "error"; message?: string }> {
|
||||
async function runToEnd(baseUrl: string, sessionId: string): Promise<{ type: "done" | "error"; message?: string }> {
|
||||
const stream = streamCursor(makeModel(baseUrl), context, { apiKey: "test-token", sessionId });
|
||||
let terminal: { type: "done" | "error"; message?: string } = { type: "done" };
|
||||
for await (const event of stream) {
|
||||
@@ -190,7 +187,12 @@ describe("Cursor conversationId rotation (issue #8345)", () => {
|
||||
const r1 = await runToEnd(baseUrl, "sess-sticky");
|
||||
const r2 = await runToEnd(baseUrl, "sess-sticky");
|
||||
const r3 = await runToEnd(baseUrl, "sess-sticky");
|
||||
console.log("[test] results:", JSON.stringify([r1.type, r1.message, r2.type, r2.message, r3.type, r3.message]), "seen:", JSON.stringify(seenConversationIds));
|
||||
console.log(
|
||||
"[test] results:",
|
||||
JSON.stringify([r1.type, r1.message, r2.type, r2.message, r3.type, r3.message]),
|
||||
"seen:",
|
||||
JSON.stringify(seenConversationIds),
|
||||
);
|
||||
|
||||
expect(seenConversationIds).toHaveLength(3);
|
||||
expect(seenConversationIds[0]).toBe("sess-sticky");
|
||||
|
||||
@@ -27,6 +27,7 @@
|
||||
- Stopped baking `reasoningEffortMap` on first-party xAI catalog rows that omit `reasoning.effort` (`omitReasoningEffort: true`).
|
||||
- Suppressed presence/frequency penalties on every first-party xAI Responses model, including non-reasoning ids such as `grok-2`; xAI's `/v1/responses` marks those fields unsupported.
|
||||
- Routed `grok-4.6` (added on main) through first-party xAI Responses and advertised its documented `xhigh` effort tier (4.5 stays 4-tier).
|
||||
- Fixed `opencode-go/deepseek-v4-flash` Responses requests sending forced named `tool_choice` selectors that Console Go rejects while thinking mode is active.
|
||||
|
||||
## [17.3.4] - 2026-08-14
|
||||
|
||||
@@ -104,9 +105,6 @@
|
||||
|
||||
- Marked `meta/muse-spark-1.2` and `muse-spark-1.2-contributor` as image-capable (`input: ["text", "image"]`) with the same Responses reasoning, thinking, and cost metadata as `muse-spark-1.1` (contributor uses its discounted 0.1/0.2 pricing), so `omp models` no longer lists them as text-only.
|
||||
- Fixed GLM-5.2 thinking levels across Baseten, CoreWeave, HuggingFace, and other uppercase-ID resellers, which were getting the generic `xhigh` effort ladder instead of the GLM-5.2-specific tiers. Also added Baseten `zai-org/GLM-5.2-Fast` and Fireworks `glm-5.2-fast` as reasoning models ([#8200](https://github.com/can1357/oh-my-pi/pull/8200) by [@jcfrancisco](https://github.com/jcfrancisco)).
|
||||
### Fixed
|
||||
|
||||
- Fixed `opencode-go/deepseek-v4-flash` Responses requests sending forced named `tool_choice` selectors that Console Go rejects while thinking mode is active.
|
||||
|
||||
## [17.2.12] - 2026-08-08
|
||||
|
||||
|
||||
@@ -45,54 +45,27 @@
|
||||
- Fixed transient Anthropic failures (`overloaded_error`, `rate_limit_error`, 429/500/502/503/529) aborting or silently degrading side-effect-free oneshot LLM calls. Session title generation, TTS speech enhancement, commit-message generation, the auto-thinking and unexpected-stop classifiers, memory extraction/consolidation, the commit analysis/summary/changelog/map/reduce passes, and the mnemopi LLM callback now retry with backoff that honors `retry-after`, instead of failing on the first blip or returning `null` — which made a transient overload indistinguishable from a legitimate empty result.
|
||||
- Fixed the commit analysis, summary, changelog and reduce passes feeding a provider error message straight into their response parsers: they never checked `stopReason`, so a failed request produced garbage output instead of surfacing the error.
|
||||
- Fixed the commit map phase never retrying transient failures: its retry helper only caught thrown errors, so a `stopReason: "error"` response bypassed it entirely.
|
||||
### Fixed
|
||||
|
||||
- Fixed the shared headless browser daemon launching from the macOS system Google Chrome bundle (`com.google.Chrome`), which let macOS LaunchServices route the user's link clicks to the automation daemon and silently swallow them; the daemon now prefers the isolated Chrome for Testing binary (`com.google.chrome.for.testing`) on macOS and falls back to system Chrome only when Chrome for Testing cannot be obtained ([#8673](https://github.com/can1357/oh-my-pi/issues/8673)).
|
||||
### Fixed
|
||||
|
||||
- Reclaimed abandoned daemon runtime directories under `~/.omp/run/daemons/`: each broker now prunes sibling scopes with a dead/absent `broker.pid`, no live client presence, and past a short stale grace on startup, removing the leftover Chromium profiles and broker state that grew unbounded from short-lived project directories ([#8674](https://github.com/can1357/oh-my-pi/issues/8674)).
|
||||
### Fixed
|
||||
|
||||
- Kept the welcome screen's Tips, LSP Servers, and Recent sessions visible when a long model name still leaves enough terminal width for both columns ([#8657](https://github.com/can1357/oh-my-pi/issues/8657)).
|
||||
### Fixed
|
||||
|
||||
- Fixed focused `ultrathink`, `orchestrate`, and `workflowz` shimmer frames repainting the full TUI every 70 ms, causing high CPU usage while composing prompts on WSL2 ([#8646](https://github.com/can1357/oh-my-pi/issues/8646)).
|
||||
### Fixed
|
||||
|
||||
- Fixed the `/debug` report bundle including unrelated historic sessions: subagent transcripts were collected by scanning the entire sessions directory, leaking other sessions' `.jsonl` files and bloating archives to tens of MB. The bundle now captures only the current session's own artifacts subtree ([#8648](https://github.com/can1357/oh-my-pi/issues/8648)).
|
||||
### Fixed
|
||||
|
||||
- Fixed adopted keep-alive agents remaining `running` in the registry after deferred turn settlement, and prevented stale detached or non-streaming refs from sustaining bare `hub wait` calls indefinitely ([#8634](https://github.com/can1357/oh-my-pi/issues/8634)).
|
||||
### Fixed
|
||||
|
||||
- Expanded home-relative marketplace catalog paths before cache access, preventing updates from writing into a literal `~` directory under the process working directory ([#8627](https://github.com/can1357/oh-my-pi/issues/8627)).
|
||||
### Fixed
|
||||
|
||||
- Fixed broker-owned headless Chromium opening and retaining an unowned blank foreground window on Windows ([#8615](https://github.com/can1357/oh-my-pi/issues/8615)).
|
||||
### Fixed
|
||||
|
||||
- Fixed the `auto` thinking classifier failing every turn on Anthropic models served through LiteLLM/Vertex with `max_tokens must be greater than thinking.budget_tokens`. The classifier's disabled-reasoning request is downgraded to the lowest reasoning effort on the `openai-completions` transport, which the proxy translates to an Anthropic thinking budget of at least 1024 tokens; the classifier now reserves enough output room (4096) to clear that budget instead of capping at exactly 1024 ([#8610](https://github.com/can1357/oh-my-pi/issues/8610)).
|
||||
### Fixed
|
||||
|
||||
- Fixed `always-ask` approval prompts bypassing edit preview readiness when a built-in tool executes under its wire-level alias, such as `edit` running as `apply_patch` ([#8607](https://github.com/can1357/oh-my-pi/issues/8607)).
|
||||
### Fixed
|
||||
|
||||
- Fixed `lsp reload` crashing non-rust-analyzer language servers (e.g. Roslyn/`roslyn-language-server`) by sending the rust-analyzer-specific `rust-analyzer/reloadWorkspace` request to every server; the request is now gated on the server being rust-analyzer, and all other servers reload via `workspace/didChangeConfiguration` directly ([#8571](https://github.com/can1357/oh-my-pi/issues/8571)).
|
||||
### Fixed
|
||||
|
||||
- Fixed `browser open` failing with "Shared browser daemon unavailable" when `HTTP_PROXY`/`HTTPS_PROXY` is set (e.g. a local Clash proxy), because the shared-browser CDP liveness probes routed loopback `127.0.0.1` requests through the proxy, which 502'd them and killed the healthy daemon. The probes now talk to the endpoint over raw TCP and never touch a proxy ([#8567](https://github.com/can1357/oh-my-pi/issues/8567)).
|
||||
### Fixed
|
||||
|
||||
- Fixed `defaultThinkingLevel: auto` skipping classification for user-invoked `/skill:<name>` turns, which left the effort stuck on pending `auto`; user-attributed skill prompts now classify like any user turn while agent/autoload injections stay excluded ([#8554](https://github.com/can1357/oh-my-pi/issues/8554)).
|
||||
### Fixed
|
||||
|
||||
- Fixed custom-tool and other directory discovery recursing into subtrees despite a non-recursive default: `loadFilesFromDir` built a top-level-only glob pattern but never forwarded its `recursive` flag to the native glob (which defaults to recursive), so `~/.codex/tools` scans descended into a Python venv's `site-packages` and imported browser-only frontend assets as tools, crashing startup on an unhandled `window` rejection ([#8552](https://github.com/can1357/oh-my-pi/issues/8552)).
|
||||
### Fixed
|
||||
|
||||
- Repaired torn session JSONL appends after disk-write failures, rewrote malformed resumed files before their next append, retried transient persistence failures, and surfaced failures in the TUI ([#8596](https://github.com/can1357/oh-my-pi/issues/8596)).
|
||||
### Fixed
|
||||
|
||||
- Prevented Anthropic model fallback from replaying model-bound thinking blocks across models, and surfaced immutable-thinking `invalid_request_error` responses without retrying the unchanged invalid turn ([#8558](https://github.com/can1357/oh-my-pi/issues/8558)).
|
||||
- Fixed the capped empty-stop failure always naming the context/`/shake images` hint even when the provider billed output tokens. A zero-block `stop` (no content blocks) with billed output beyond any provider-reported reasoning usage means content was generated and dropped downstream (a filter/refusal flattened to `finish_reason: "stop"` by a proxy, or a lossy API translation), so the message now reports the billed output-token count and points at a provider-side filter/translation instead of a context problem, and logs `outputTokens` alongside the existing warning fields. Thinking-only and known reasoning-only stops retain the context hint ([#8511](https://github.com/can1357/oh-my-pi/issues/8511)).
|
||||
- Fixed a parked, session-less agent-registry entry with no reviver permanently poisoning its agent id for the process lifetime: a fresh subagent spawn reusing that id died post-registration with `already owned by another session generation`, and messages to it failed with `is parked and cannot be revived`. Such dead corpses (left by an isolated run's park or an interrupted construction) are now reclaimed on a fresh-spawn collision so the id becomes reusable; the corpse's transcript remains readable at `history://<id>` ([#8490](https://github.com/can1357/oh-my-pi/issues/8490)).
|
||||
- Made extension tool-call timeouts configurable and paused them during user dialogs.
|
||||
- Fixed `/vibe` cancellation leaving an in-flight model turn unaware that Vibe mode and its tools were removed ([#8326](https://github.com/can1357/oh-my-pi/issues/8326)).
|
||||
- Fixed empty local-model stops lingering on the persisted active branch after retries; discarded turns now durably select their parent, preserve safe metadata children, and cannot resurface after reload or a mid-retry process kill. ([#5179](https://github.com/can1357/oh-my-pi/issues/5179))
|
||||
|
||||
## [17.3.4] - 2026-08-14
|
||||
|
||||
@@ -106,9 +79,6 @@
|
||||
- Fixed Streamable HTTP MCP sessions being invalidated by opening the optional GET SSE stream before sending `notifications/initialized`, which prevented Figma Dev Mode MCP from connecting ([#8514](https://github.com/can1357/oh-my-pi/issues/8514)).
|
||||
- Fixed the `/hotkeys` table describing Ctrl+D (`app.exit`) as "Exit (when editor is empty)" when it actually exits unconditionally and saves the current prompt as a resumable draft ([#8530](https://github.com/can1357/oh-my-pi/issues/8530)).
|
||||
- Fixed Ctrl+G external editors failing to launch on Windows because Bun re-quoted the embedded `cmd.exe /c` command line ([#8544](https://github.com/can1357/oh-my-pi/issues/8544)).
|
||||
### Fixed
|
||||
|
||||
- Fixed the capped empty-stop failure always naming the context/`/shake images` hint even when the provider billed output tokens. A zero-block `stop` (no content blocks) with billed output beyond any provider-reported reasoning usage means content was generated and dropped downstream (a filter/refusal flattened to `finish_reason: "stop"` by a proxy, or a lossy API translation), so the message now reports the billed output-token count and points at a provider-side filter/translation instead of a context problem, and logs `outputTokens` alongside the existing warning fields. Thinking-only and known reasoning-only stops retain the context hint ([#8511](https://github.com/can1357/oh-my-pi/issues/8511)).
|
||||
|
||||
## [17.3.3] - 2026-08-14
|
||||
|
||||
@@ -117,9 +87,6 @@
|
||||
- Automatically continued Gemini turns that stopped after thinking without final output, using a bounded final-answer reminder instead of exhausting generic retries.
|
||||
- Retried Gemini `MALFORMED_FUNCTION_CALL` failures when every emitted tool call was proven unexecuted, while preserving real tool-result and visible-output replay guards.
|
||||
- Kept current terminal retry errors in one pinned banner with attempt context while surfacing local continuation failures instead of stale provider errors.
|
||||
### Fixed
|
||||
|
||||
- Fixed a parked, session-less agent-registry entry with no reviver permanently poisoning its agent id for the process lifetime: a fresh subagent spawn reusing that id died post-registration with `already owned by another session generation`, and messages to it failed with `is parked and cannot be revived`. Such dead corpses (left by an isolated run's park or an interrupted construction) are now reclaimed on a fresh-spawn collision so the id becomes reusable; the corpse's transcript remains readable at `history://<id>` ([#8490](https://github.com/can1357/oh-my-pi/issues/8490)).
|
||||
|
||||
## [17.3.2] - 2026-08-13
|
||||
|
||||
@@ -140,9 +107,6 @@
|
||||
- Fixed omp plugin install failing with cloning errors for legacy Pi extensions whose tool schemas use legacy-typebox builders.
|
||||
- Fixed omp update aborting with chmod ENOENT when concurrent update runs overlapped by using unique download temporary paths.
|
||||
- Fixed the browser tool executable probe launching the user's installed GUI Chromium on Windows: the `--version` version probe from ecb22957 was Linux-scoped but ran for every platform candidate, so on Windows it could hand off to a running `chrome.exe`, open a normal browser window, then reject the candidate and fall back to cached Chrome for Testing. The probe is now confined to Linux ([#8445](https://github.com/can1357/oh-my-pi/issues/8445)).
|
||||
### Fixed
|
||||
|
||||
- Made extension tool-call timeouts configurable and paused them during user dialogs.
|
||||
|
||||
## [17.3.0] - 2026-08-13
|
||||
|
||||
@@ -185,9 +149,6 @@
|
||||
- Fixed retry-fallback selection switching to a fallback model with a context window too small to hold the current session context.
|
||||
- Fixed OpenCode discovery ignoring `opencode.jsonc` files and rejecting comments in `opencode.json`.
|
||||
- Fixed WSL2 startup hanging forever when the Windows interop pipe is wedged: the WSL host-home discovery probes (`cmd.exe`, `wslpath`) now run under a 500ms hard timeout and fall back to the Linux `$HOME`/`~/.omp` candidates ([#8402](https://github.com/can1357/oh-my-pi/issues/8402)).
|
||||
### Fixed
|
||||
|
||||
- Fixed `/vibe` cancellation leaving an in-flight model turn unaware that Vibe mode and its tools were removed ([#8326](https://github.com/can1357/oh-my-pi/issues/8326)).
|
||||
|
||||
## [17.2.15] - 2026-08-12
|
||||
|
||||
@@ -1797,9 +1758,6 @@
|
||||
- Fixed agents getting stuck waiting for messages from peers that have already stopped running.
|
||||
- Fixed compiled Linux binary extension loading when bundled web-search header generation cannot read `header-generator` data files from the build-time path. ([#5178](https://github.com/can1357/oh-my-pi/issues/5178))
|
||||
- Fixed plugin custom tool loading to skip and report invalid feature entries instead of crashing startup when a plugin dependency tree leaves one feature unresolved. ([#5189](https://github.com/can1357/oh-my-pi/issues/5189))
|
||||
### Fixed
|
||||
|
||||
- Fixed empty local-model stops lingering on the persisted active branch after retries; discarded turns now durably select their parent, preserve safe metadata children, and cannot resurface after reload or a mid-retry process kill. ([#5179](https://github.com/can1357/oh-my-pi/issues/5179))
|
||||
|
||||
## [16.4.4] - 2026-07-11
|
||||
|
||||
|
||||
@@ -776,12 +776,7 @@ export class AgentSession {
|
||||
* the agent responds to the peer. Skip only when a queued steer/follow-up will itself drive a
|
||||
* resume turn whose aside poll already consumes these (no double-wake). */
|
||||
#resumeStrandedIrcAsides(): void {
|
||||
if (
|
||||
this.#modeExitDrainSuppressionDepth > 0 ||
|
||||
this.#isDisposed ||
|
||||
this.isStreaming ||
|
||||
!this.#irc.hasPending()
|
||||
) {
|
||||
if (this.#modeExitDrainSuppressionDepth > 0 || this.#isDisposed || this.isStreaming || !this.#irc.hasPending()) {
|
||||
return;
|
||||
}
|
||||
if (this.#canAutoContinueForFollowUp() && this.agent.hasQueuedMessages()) return;
|
||||
@@ -7094,7 +7089,6 @@ export class AgentSession {
|
||||
return undefined;
|
||||
}
|
||||
|
||||
|
||||
#enforceRewindBeforeYield(): boolean {
|
||||
if (!this.#checkpointState || this.#pendingRewindReport) {
|
||||
return false;
|
||||
|
||||
@@ -47,7 +47,14 @@ describe("discarded entry branch replication", () => {
|
||||
api: "mock",
|
||||
provider: "mock",
|
||||
model: "mock",
|
||||
usage: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0, totalTokens: 0, cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0, total: 0 } },
|
||||
usage: {
|
||||
input: 0,
|
||||
output: 0,
|
||||
cacheRead: 0,
|
||||
cacheWrite: 0,
|
||||
totalTokens: 0,
|
||||
cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0, total: 0 },
|
||||
},
|
||||
stopReason: "stop",
|
||||
timestamp: Date.now(),
|
||||
});
|
||||
|
||||
@@ -1762,9 +1762,7 @@ describe("ExtensionRunner", () => {
|
||||
const notify: ExtensionUIContext["notify"] = message => {
|
||||
if (message === "Factory started") factoryStarted.resolve();
|
||||
};
|
||||
const custom: ExtensionUIContext["custom"] = async <T>(
|
||||
...args: Parameters<ExtensionUIContext["custom"]>
|
||||
) => {
|
||||
const custom: ExtensionUIContext["custom"] = async <T>(...args: Parameters<ExtensionUIContext["custom"]>) => {
|
||||
await args[0](undefined as never, undefined as never, undefined as never, () => {});
|
||||
return undefined as T;
|
||||
};
|
||||
|
||||
@@ -12,8 +12,8 @@ import { AgentLifecycleManager } from "@oh-my-pi/pi-coding-agent/registry/agent-
|
||||
import { AgentRegistry } from "@oh-my-pi/pi-coding-agent/registry/agent-registry";
|
||||
import { createAgentSession } from "@oh-my-pi/pi-coding-agent/sdk";
|
||||
import * as secrets from "@oh-my-pi/pi-coding-agent/secrets";
|
||||
import { AuthStorage } from "@oh-my-pi/pi-coding-agent/session/auth-storage";
|
||||
import type { AgentSession } from "@oh-my-pi/pi-coding-agent/session/agent-session";
|
||||
import { AuthStorage } from "@oh-my-pi/pi-coding-agent/session/auth-storage";
|
||||
import { SessionManager } from "@oh-my-pi/pi-coding-agent/session/session-manager";
|
||||
import { VibeSessionRegistry } from "@oh-my-pi/pi-coding-agent/vibe/runtime";
|
||||
import { getSessionsDir, removeSyncWithRetries, Snowflake } from "@oh-my-pi/pi-utils";
|
||||
|
||||
Reference in New Issue
Block a user