惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
WordPress大学
WordPress大学
量子位
M
Microsoft Research Blog - Microsoft Research
Microsoft Azure Blog
Microsoft Azure Blog
Jina AI
Jina AI
罗磊的独立博客
V
Visual Studio Blog
Last Week in AI
Last Week in AI
阮一峰的网络日志
阮一峰的网络日志
IT之家
IT之家
aimingoo的专栏
aimingoo的专栏
雷峰网
雷峰网
酷 壳 – CoolShell
酷 壳 – CoolShell
美团技术团队
博客园 - 三生石上(FineUI控件)
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
MongoDB | Blog
MongoDB | Blog
小众软件
小众软件
IntelliJ IDEA : IntelliJ IDEA – the Leading IDE for Professional Development in Java and Kotlin | The JetBrains Blog
IntelliJ IDEA : IntelliJ IDEA – the Leading IDE for Professional Development in Java and Kotlin | The JetBrains Blog

Recent Commits to openclaw:main

fix: avoid duplicate media source reply transcripts · openclaw/openclaw@a10e152 test: cover source reply media transcript backing · openclaw/openclaw@321d98b fix: preserve reply payload metadata · openclaw/openclaw@bfcd801 fix: ignore replayed empty TUI finals · openclaw/openclaw@17fc1d1 fix: keep long Codex source replies alive · openclaw/openclaw@c93dda9 fix: preserve source reply metadata through TTS test: narrow transcript rewrite message content access · openclaw/openclaw@81dee15 fix: avoid double terminal chat events for source replies · openclaw/openclaw@6a0e030 test: cover control ui source reply final retention · openclaw/openclaw@5534cad fix: keep source reply finals live in control ui · openclaw/openclaw@5e28574 fix: guard transcript source reply rewrites · openclaw/openclaw@b074dc5 fix: render late source reply finals in TUI · openclaw/openclaw@59b8aea docs: add TUI source reply changelog · openclaw/openclaw@589fd92 fix: broadcast source reply finals for chat runs · openclaw/openclaw@84ac31b fix: keep TUI watchdog runs active · openclaw/openclaw@84d278a fix: bound Codex post-reasoning source reply waits · openclaw/openclaw@f5b415f fix: back source reply media in transcripts · openclaw/openclaw@39226ea fix: gracefully escalate process supervisor cancellations (#85865) fix: preserve internal handoff status attribution [AI-assisted] (#85726) · openclaw/openclaw@f55e986 fix(browser): thread snapshot timeoutMs through agent tool and helper… · openclaw/openclaw@069c7b8 Disable Chrome MCP telemetry watchdog by default (#85886) · openclaw/openclaw@d581415 perf: cache stable gateway metadata · openclaw/openclaw@12f8227 chore(release): update appcast for 2026.5.22 · openclaw/openclaw@fc3c979 fix(codex): ensure codex subagent bootstrap parity with pi subagents … · openclaw/openclaw@7b3be04 fix(update): escape systemd update handoffs (#85414) · openclaw/openclaw@1f28c3e fix(media-understanding): restore image description token default · openclaw/openclaw@5dcbd38 chore: bump version to 2026.5.24 · openclaw/openclaw@0cba872 fix(ui): delay WebChat done indicator until reply renders docs: note WebChat done ordering fix · openclaw/openclaw@6c21066 feat(talk): add realtime active-run control · openclaw/openclaw@bbf9c45 feat(ui): control active realtime talk runs docs(talk): document realtime active-run control · openclaw/openclaw@40d36b5 feat(gateway): steer realtime relay agent runs feat(discord): control active realtime voice runs fix(tui): handle German AltGr input (#83947) · openclaw/openclaw@ee09481 docs: clarify commit fallback provenance · openclaw/openclaw@6e03d1c fix(pdf): move MiniMax PDF fallback policy to metadata · openclaw/openclaw@d92501d fix(pdf): use MiniMax text model fallback · openclaw/openclaw@89bb62e fix(pdf): preserve image fallback precedence fix(ui): preserve source config for Control UI saves (#85879) · openclaw/openclaw@1a60c19 fix(doctor): repair stale contextWindow for DeepSeek V4 Flash (#85840) · openclaw/openclaw@aa050a6 Feat/fix dashboard timeout error display (#85815) · openclaw/openclaw@a668982 fix(memory): write fallback dream diary on narrative timeout (#85821) · openclaw/openclaw@27a3290 fix(twitch): fail fast when auth provider cannot bind user (#85794) · openclaw/openclaw@72744fd docs: clarify PR provenance roles · openclaw/openclaw@9a73ddc fix(scripts): harden Windows QA runners · openclaw/openclaw@32f9150 docs(skills): prefer latest Parallels snapshots fix(telegram): normalize durable group retry targets (#85656) · openclaw/openclaw@f05f243 fix #84857: skip CLI runtime harness preflight during compaction (#85… · openclaw/openclaw@fa39bef docs(policy): add policy rule reference tables (#85795) · openclaw/openclaw@4ffbd07 Policy: add tool posture conformance checks (#85482) · openclaw/openclaw@1e2e614 fix(session-lock): enforce maxHoldMs in shouldReclaim during lock acq… · openclaw/openclaw@a1eb765 refactor: simplify channel catalog cache · openclaw/openclaw@a1c2d09 docs: codify gateway plugin metadata stability · openclaw/openclaw@d4299dc perf: reduce gateway benchmark filesystem churn · openclaw/openclaw@e5534dd fix: order meeting notes startup around channels · openclaw/openclaw@e2249d8 fix(sandbox): block bridge writes to workspace skills · openclaw/openclaw@9e5b416 fix(sandbox): mount workspace skills read-only · openclaw/openclaw@1b7bf4a fix: guard remote sandbox skill roots (#85591) · openclaw/openclaw@a8f6887 fix(sandbox): block remote bridge writes to skills fix: harden sandbox skill mounts (#85591) · openclaw/openclaw@a352678 test(sandbox): resolve skill roots read-only · openclaw/openclaw@07abb19 fix: close remote sandbox skill symlink aliases (#85591) · openclaw/openclaw@68487f4 fix(sandbox): filter remote skill mounts by existing roots · openclaw/openclaw@dd5fb1e test(sandbox): allow remote writes under absent skill roots · openclaw/openclaw@1094210 fix: preserve sandbox skill overlay precedence (#85591) fix(cli-runner): keep recent tail when reseed history exceeds maxHist… · openclaw/openclaw@5c4a733 docs: thank backup hardlink contributor (#83938) · openclaw/openclaw@846f566 test: drain Codex app-server attempts · openclaw/openclaw@a705a9c feat(agents): expose estimated context budget status · openclaw/openclaw@05c6e7a test: isolate Codex native item release guard · openclaw/openclaw@cd102ef fix: route Codex image API keys through OpenAI · openclaw/openclaw@38e1654 feat(whatsapp): support thumb approval reactions (#85477) test: isolate Codex terminal batch scheduler · openclaw/openclaw@6a3781d Adapt image compression quality by model (#85742) · openclaw/openclaw@4c210e2 test: isolate Codex terminal release decision · openclaw/openclaw@0038813 refactor: use channel target resolution APIs (#85814) · openclaw/openclaw@c4f0da0 fix(ollama): bypass managed proxy for loopback embeddings (#85707) · openclaw/openclaw@fd2a9ad test: make Codex diagnostic test deterministic · openclaw/openclaw@f6b332c fix(image): hint safe provider timeout (#85812) · openclaw/openclaw@8ede81a docs(skills): require autoreview before bug sweep URLs · openclaw/openclaw@2656f13 test: bound Codex app-server cleanup waits · openclaw/openclaw@6fc9d7b fix(web-ui): improve light theme visibility for select arrows and bub… · openclaw/openclaw@ae79e6e fix(control-ui): restore light select arrows · openclaw/openclaw@266f38b test: align full release dispatch assertion fix(scripts): route check stages through managed runner · openclaw/openclaw@353d132 test: clean up Codex app-server run failures · openclaw/openclaw@9cef99f ci: retry release child workflow dispatch · openclaw/openclaw@ee61f79 test: isolate Codex report snapshot tests perf(gateway): reduce startup filesystem probes · openclaw/openclaw@edbd833 ci: retry GHCR docker login · openclaw/openclaw@fcb9c46 ci: harden manual checkout auth · openclaw/openclaw@d42bc0b fix(scripts): avoid Windows shell argv warnings · openclaw/openclaw@208a067 ci: fix release reachability auth · openclaw/openclaw@02b1c8c docs: note docs publishing routing · openclaw/openclaw@388b24a ci: harden release package validation · openclaw/openclaw@41f4605 ci(testbox): expose stable pnpm through corepack · openclaw/openclaw@3e14f54 ci(testbox): avoid ready raw runners after hydration failure perf(gateway): defer startup-idle runtime work · openclaw/openclaw@f1226ae ci: harden beta release validation flakes · openclaw/openclaw@391f29b
fix: preserve reply metadata through media normalization · openclaw/openclaw@a238f03
shakkernerd · 2026-05-24 · via Recent Commits to openclaw:main

@@ -2,6 +2,7 @@ import fs from "node:fs/promises";

22

import os from "node:os";

33

import path from "node:path";

44

import { beforeEach, describe, expect, it, vi } from "vitest";

5+

import { getReplyPayloadMetadata, setReplyPayloadMetadata } from "../reply-payload.js";

5667

const ensureSandboxWorkspaceForSession = vi.hoisted(() => vi.fn());

78

const resolveOutboundAttachmentFromUrl = vi.hoisted(() => vi.fn());

@@ -108,6 +109,39 @@ describe("createReplyMediaPathNormalizer", () => {

108109

expect(mediaAccess.workspaceDir).toBe("/tmp/agent-workspace");

109110

});

110111112+

it("preserves reply metadata when media normalization clones the payload", async () => {

113+

const normalize = createReplyMediaPathNormalizer({

114+

cfg: {},

115+

sessionKey: "session-key",

116+

workspaceDir: "/tmp/agent-workspace",

117+

});

118+

const payload = setReplyPayloadMetadata(

119+

{

120+

text: "Here is the image",

121+

mediaUrls: ["./out/photo.png"],

122+

},

123+

{

124+

sourceReplyTranscriptMirror: {

125+

sessionKey: "main",

126+

text: "Here is the image",

127+

mediaUrls: ["./out/photo.png"],

128+

idempotencyKey: "source-reply:0",

129+

},

130+

},

131+

);

132+133+

const result = await normalize(payload);

134+135+

expect(result).not.toBe(payload);

136+

expectMedia(result, "/tmp/outbound-media/photo.png", ["/tmp/outbound-media/photo.png"]);

137+

expect(getReplyPayloadMetadata(result)?.sourceReplyTranscriptMirror).toEqual({

138+

sessionKey: "main",

139+

text: "Here is the image",

140+

mediaUrls: ["./out/photo.png"],

141+

idempotencyKey: "source-reply:0",

142+

});

143+

});

144+111145

it("maps sandbox-relative media back to the host sandbox workspace before staging", async () => {

112146

ensureSandboxWorkspaceForSession.mockResolvedValue({

113147

workspaceDir: "/tmp/sandboxes/session-1",