Vincent Koc
80c187b866
fix(xai): preserve terminal realtime voice outcomes ( #117600 )
...
* fix(xai): preserve canonical realtime terminal outcomes
* fix(xai): bound terminal tool outcome state
* test(xai): bound realtime outcome harness payloads
---------
Co-authored-by: Peter Steinberger <steipete@macos.shared >
2026-08-02 04:13:58 +08:00
Peter Steinberger
a26df7153f
test(qa): deduplicate mock provider fixtures ( #117590 )
2026-08-01 13:05:21 -07:00
wangmiao0668000666
ebb301c32d
fix(moonshot): forward abort signal through Kimi web search provider ( #105125 )
2026-08-01 13:01:40 -07:00
Peter Steinberger
165c968f95
fix(memory): recover restored session freshness ( #117548 )
2026-08-01 12:39:24 -07:00
Peter Steinberger
7c9794b5c6
fix(whatsapp): normalize future-proof QA poll and video note ingress ( #117579 )
...
Co-authored-by: Peter Steinberger <steipete@macos.shared >
2026-08-01 12:30:49 -07:00
Vincent Koc
936c9c7e2d
fix(openai): copy queued realtime audio buffers ( #117028 )
...
* commit '7facf157e67d7902dd645f33026a253e006ed0e0':
test(openai): parse realtime websocket frames safely
fix(openai): own queued realtime audio buffer snapshots
2026-08-02 03:29:43 +08:00
zengLingbiao
1a0d3b5c40
fix(feishu): cancel unread streaming-card error bodies before release ( #117312 )
2026-08-01 12:26:27 -07:00
Peter Steinberger
c5090b9cf5
refactor(policy): centralize doctor health-check descriptors ( #117578 )
2026-08-01 12:09:52 -07:00
Vincent Koc
7facf157e6
test(openai): parse realtime websocket frames safely
2026-08-02 02:59:32 +08:00
Peter Steinberger
71b35c3e1d
fix(openai): keep embedding identity stable across upgrades ( #117557 )
...
Co-authored-by: Peter Steinberger <steipete@macos.shared >
2026-08-01 11:59:31 -07:00
Javier Ailbirt
7563e40e47
fix(googlechat): drop invalid thread resource names before send ( #108324 )
...
Reply routing can hand sendGoogleChatMessage a `thread` that is not a
valid `spaces/{space}/threads/{thread}` resource name — a bare id, a
`spaces/{space}/messages/{message}` name, or a thread from a different
(or wrongly-cased) space. The Chat API rejects the whole request with
`400 INVALID_ARGUMENT`, so the reply is never delivered even though the
agent already produced it (and did any side effects).
Guard the send so the `thread` field and the messageReplyOption fallback
are applied only when the thread is a well-formed name belonging to the
target space; otherwise post to the space as a new thread. Revives the
approach of #28153 (auto-closed as stale) and addresses the failure mode
behind #64313 .
2026-08-01 11:59:08 -07:00
RileyJJY
9a120f364f
fix(irc): strip markdown from outbound text ( #112961 )
2026-08-01 11:55:52 -07:00
Vincent Koc
3aa43c7fba
chore: merge main into realtime audio ownership fix
...
* origin/main: (491 commits)
feat(gateway): advertise chat attachment limits on hello-ok (#116188 )
fix(ui): preserve full graphemes in session owner initials (#117350 )
refactor(tui): consolidate runtime ownership (#117368 )
fix(update): return failure when dirty checkout blocks update (#117452 )
fix(auto-reply): apply mixed chat directives in one session transaction (#117542 )
refactor(ui): unify channel status and setup controls (#117499 )
fix(doctor): preserve surviving lint selections (#117543 )
fix(media): keep an unquoted MEDIA path with spaces as one media item (#112464 )
refactor(channels): consolidate lightweight plugin discovery (#117541 )
fix(imessage): prevent duplicate messages after delayed sends (#110853 )
refactor(memory): unify authoritative dreaming state and presentation (#117538 )
refactor(agents): consolidate main-session recovery ownership (#117383 )
fix(proxy-capture): make path-based session cleanup atomic (#98852 )
refactor(agents): consolidate compaction and context-engine ownership (#117482 )
fix(gateway): preserve Responses usage details (#117533 )
perf(gateway): skip empty session recovery stores (#117498 )
fix(ci): update canonical Kova performance pin (#117508 )
fix(system-agent): emit the wizard cancel hint once per message (#113731 )
refactor: dedupe secrets runtime snapshot fixtures (#117502 )
test(google): cover ready callback close precedence
...
2026-08-02 02:41:51 +08:00
Vincent Koc
7795d902f7
chore: merge main into memory test isolation fix
...
* origin/main: (35 commits)
fix(update): return failure when dirty checkout blocks update (#117452 )
fix(auto-reply): apply mixed chat directives in one session transaction (#117542 )
refactor(ui): unify channel status and setup controls (#117499 )
fix(doctor): preserve surviving lint selections (#117543 )
fix(media): keep an unquoted MEDIA path with spaces as one media item (#112464 )
refactor(channels): consolidate lightweight plugin discovery (#117541 )
fix(imessage): prevent duplicate messages after delayed sends (#110853 )
refactor(memory): unify authoritative dreaming state and presentation (#117538 )
refactor(agents): consolidate main-session recovery ownership (#117383 )
fix(proxy-capture): make path-based session cleanup atomic (#98852 )
refactor(agents): consolidate compaction and context-engine ownership (#117482 )
fix(gateway): preserve Responses usage details (#117533 )
perf(gateway): skip empty session recovery stores (#117498 )
fix(ci): update canonical Kova performance pin (#117508 )
fix(system-agent): emit the wizard cancel hint once per message (#113731 )
refactor: dedupe secrets runtime snapshot fixtures (#117502 )
test(google): cover ready callback close precedence
test(openai): dedupe realtime voice fixtures (#117503 )
fix(google): flush lazy prompts on provider readiness
fix(gateway): keep canonical hooks on pristine startup path (#117493 )
...
2026-08-02 02:21:19 +08:00
Vincent Koc
83e8033ac6
fix(google): preserve realtime prompts during startup ( #117529 )
...
* commit 'd60584ee2d1dc3755477b38234b37f8d11bc1b9c':
test(google): cover ready callback close precedence
fix(google): flush lazy prompts on provider readiness
test(google): prove lazy realtime prompt delivery
fix(google): bound lazy realtime user messages
2026-08-02 02:10:29 +08:00
Omar Shahine
b67fa6a2c4
fix(imessage): prevent duplicate messages after delayed sends ( #110853 )
...
* fix(imessage): outlive imsg send fallback
* test(imessage): prove delayed fallback resolves once
* fix(imessage): preserve the send timeout floor
---------
Co-authored-by: Omar Shahine <10343873+omarshahine@users.noreply.github.com >
2026-08-01 10:51:06 -07:00
Vincent Koc
d60584ee2d
test(google): cover ready callback close precedence
2026-08-02 01:25:41 +08:00
Peter Steinberger
b9bf34a3cd
test(openai): dedupe realtime voice fixtures ( #117503 )
2026-08-01 10:22:51 -07:00
Vincent Koc
814a2ebb61
fix(google): flush lazy prompts on provider readiness
2026-08-02 01:22:33 +08:00
Vincent Koc
6dcb95a947
test(memory): isolate mocked embedding providers
2026-08-02 01:18:43 +08:00
Peter Steinberger
17625e5cd2
fix(msteams): preserve thread targets for structured sends ( #117516 )
2026-08-01 10:07:22 -07:00
Vincent Koc
3a8afb2a71
Merge origin/main into fix/google-realtime-lazy-queue-bounds-20260801
...
* origin/main: (44 commits)
fix(plugins): compare authoring metadata by canonical JSON semantics (#117486 )
fix(doctor): reject contradictory lint check selectors (#117495 )
fix(anthropic): honor configured model pricing (#117275 )
refactor(plugins): reuse scoped loader for capability discovery (#117373 )
refactor(test): derive changed tooling routes (#117407 )
fix(kova): clarify extension memory attribution (#117500 )
fix(imessage): sanitize private context on every outbound path (#117501 )
fix(ci): align release validation fixtures (#117494 )
fix(talk): preserve owner authorization in realtime consults (#114163 )
fix(ui): surface aborted-run diagnostics (#117497 )
perf(models): skip Ollama row runtime loading (#117465 )
fix(cli): report user profile command outcomes (#117466 )
fix(active-memory): detect Chinese recall intent in escalate mode (#117338 ) (#117419 )
fix(workboard): ignore caller-supplied archivedAt when creating a card (#116412 )
fix(models): avoid waiting on promotions before listing models (#117322 )
refactor(plugins): inherit shared package boundary settings (#117474 )
fix(systemd): parse all inline environment assignments (#117484 )
feat(web-fetch): add tools.web.fetch.headers for operator request headers (#115545 )
fix(qa): Slack progress lane misses successful delivery (#117391 )
refactor: deduplicate Codex prompt snapshot fixtures (#117476 )
...
2026-08-02 01:02:06 +08:00
Vincent Koc
877843422e
fix(google): avoid dropping first realtime voice input ( #117450 )
...
* commit '2ccb11ac28daea1939e6666c1a0a3d346159d9fe':
test(google): satisfy realtime live lint
test(google): wait for realtime response drain
test(google): diagnose realtime live readiness
test(google): prove realtime ready owns live session
test(google): cover realtime setup activation ordering
fix(google): gate realtime readiness on session ownership
2026-08-02 00:59:02 +08:00
synth
0df66f6d63
fix(anthropic): honor configured model pricing ( #117275 )
2026-08-01 09:56:23 -07:00
Peter Steinberger
fdec6fe7d4
refactor(plugins): reuse scoped loader for capability discovery ( #117373 )
...
* refactor(plugins): reuse scoped loader for capabilities
* fix(plugins): retain channel capabilities during discovery
2026-08-01 09:50:34 -07:00
Peter Steinberger
ed5d046a58
fix(imessage): sanitize private context on every outbound path ( #117501 )
...
Co-authored-by: Peter Steinberger <steipete@macos.shared >
2026-08-01 09:40:02 -07:00
Vincent Koc
263741b1f0
fix(ci): align release validation fixtures ( #117494 )
...
* fix(release): align beta 6 e2e fixtures
* fix(doctor): preserve missing state startup signal
* test(release): align beta e2e contracts
* test(agents): use canonical empty auth store
* test(agents): isolate prompt cooldown scheduling
* test(release): align main validation fixtures
* test(release): accept Code Mode plugin tool evidence
* fix(test): repair release validation checks
* test(cron): assert structured session targets
2026-08-02 00:39:36 +08:00
Vincent Koc
e07d75dc09
perf(models): skip Ollama row runtime loading ( #117465 )
2026-08-02 00:30:21 +08:00
Qiong
a566ac23a0
fix(active-memory): detect Chinese recall intent in escalate mode ( #117338 ) ( #117419 )
...
* fix(active-memory): detect Chinese recall intent in escalate mode (#117338 )
* fix(active-memory): recognize formatted multilingual recall intent
---------
Co-authored-by: Peter Steinberger <steipete@macos.shared >
2026-08-01 09:21:45 -07:00
Vincent Koc
9cb647e735
test(google): prove lazy realtime prompt delivery
2026-08-02 00:15:41 +08:00
Koduri Mahesh Bhushan Chowdary
4cbbccd0a0
fix(workboard): ignore caller-supplied archivedAt when creating a card ( #116412 )
...
Archiving is a lifecycle transition owned by archive(), which routes through
updateCard and appends the matching `archived` event. createDirect had no such
guard: it passed input.metadata straight into normalizeMetadata, which treats
archivedAt as an ordinary caller-supplied field.
A card could therefore be created already archived. Archived cards are excluded
from dispatch at every status, so the card was unstartable from the instant it
existed, while its event log contained only `created` - no archive ever
happened, so no `archived` event was ever recorded. The board reported work that
could never start, and the missing event sent operators looking for a rogue
archiver that did not exist.
normalizeMetadata already carries an options bag for rules that are stricter on
create than on update (allowDependencyLinks). Add allowArchivedAt alongside it
and pass false from createDirect, so archivedAt falls back to the create
fallback (undefined) instead of the caller's value. The update path is
unchanged: patches that set archivedAt still archive the card and still emit the
event.
Fixes #116395
2026-08-01 09:15:07 -07:00
Peter Steinberger
568ea29d2e
refactor(plugins): inherit shared package boundary settings ( #117474 )
2026-08-01 09:11:09 -07:00
Dallin Romney
fa8774cc61
fix(qa): Slack progress lane misses successful delivery ( #117391 )
...
* fix(qa): verify Slack live delivery observations
* test(qa): update Slack scenario fixture contract
* fix: guard Slack QA proxy network boundary
* refactor: use shared capture for Slack QA observations
* refactor(qa): split Slack fallback evidence
* fix(qa): verify Slack commentary from native capture
* fix(slack): preserve debug capture with proxies
* fix(qa): narrow Slack commentary fallback
* fix(qa): observe successful Slack progress writes
2026-08-02 00:07:01 +08:00
Vincent Koc
5ae401d908
fix(models): reduce default model-list memory use ( #117323 )
...
* fix(models): scope default catalog discovery
* fix(models): split scoped catalog preparation
* perf(models): narrow model-list imports
* perf(auth): narrow provider id imports
* perf(plugins): narrow provider discovery imports
* perf(models): bypass runtime catalog facade for scoped lists
* perf(models): avoid runtime imports in default list
* fix(models): preserve scoped catalog coverage
* chore(models): remove obsolete auth exports
* perf(models): skip redundant configured-provider discovery
* perf(models): skip canonical row runtime loading
* fix(models): normalize configured fallback rows
* test(models): update registry list fixtures
* fix(models): separate catalog and runtime discovery scopes
* fix(models): break row projection import cycle
* fix(models): satisfy type and export checks
* fix(models): keep row projection bundled-only
* fix(models): preserve partial catalog visibility
* fix(models): avoid live discovery in default lists
* test(models): isolate auth-backed catalog coverage
* fix(models): retain OpenAI runtime normalization
* fix(models): skip canonical OpenAI row runtime loading
* test(models): keep provider policy fixtures typed
* fix(models): preserve configured OpenAI routes
2026-08-02 00:01:37 +08:00
Peter Steinberger
30972edaea
fix(discord): recover zero-valued DAVE transition ( #117381 )
...
Co-authored-by: Peter Steinberger <steipete@macos.shared >
2026-08-01 08:57:12 -07:00
Jesse Merhi
d3f4530ce8
feat(google): allow operator headers on Gemini web search ( #115549 )
...
* feat(google): support Gemini web search headers
* fix(google): validate Gemini search headers
* docs(changelog): credit Gemini headers
* test(secrets): route config contracts through collector
* chore: remove release-owned changelog entry
* test(google): cover resolved search headers
2026-08-02 01:41:09 +10:00
weiqinl
ba2827f706
fix(telegram): use Array.from instead of spread for code point length validation ( #111443 )
2026-08-01 08:33:12 -07:00
Vincent Koc
2ccb11ac28
Merge remote-tracking branch 'origin/main' into fix/google-live-startup-ownership-20260801
...
* origin/main:
fix(ci): repair full release validation regressions (#117447 )
2026-08-01 22:58:35 +08:00
Vincent Koc
85d959ee61
test(google): satisfy realtime live lint
2026-08-01 22:58:29 +08:00
Vincent Koc
7cc2e6d830
fix(ci): repair full release validation regressions ( #117447 )
...
* fix(worktrees): reject repositories without commits
* test(memory-wiki): allow agent isolation runtime
* test(ios): await queued approval retry
2026-08-01 14:55:13 +00:00
Vincent Koc
b1a0ee8539
test(google): wait for realtime response drain
2026-08-01 22:51:35 +08:00
Vincent Koc
b2320c84ee
fix(google): bound lazy realtime user messages
2026-08-01 22:47:12 +08:00
Vincent Koc
6f3f662a86
test(google): diagnose realtime live readiness
2026-08-01 22:46:14 +08:00
Vincent Koc
11d53bebfe
test(google): prove realtime ready owns live session
2026-08-01 22:36:06 +08:00
Vincent Koc
9ba8ffad5d
test(google): cover realtime setup activation ordering
2026-08-01 22:33:02 +08:00
Vincent Koc
ee61f725f1
fix(google): gate realtime readiness on session ownership
2026-08-01 22:33:02 +08:00
Vincent Koc
02c8e76d7f
fix(voice-call): keep replay caps production-owned
2026-08-01 22:12:12 +08:00
Vincent Koc
c90983d59d
test(voice-call): share replay cap constants
2026-08-01 22:07:05 +08:00
Vincent Koc
b7521fe7a5
merge: refresh voice-call replay bounds onto main
...
* origin/main:
docs: generate docs map at publish time (#117398 )
refactor(plugins): move plugin contributions into the registry bundle (#117372 )
fix(tui): keep PTY progress and lifecycle truthful (#117402 )
test(xai): type realtime sent item payloads
fix(qa): preserve Slack fallback evidence (#117420 )
fix(qa): satisfy update lane execution contracts (#117388 )
fix(qa): Matrix replies disappear after final replacement (#117390 )
test(xai): prove rejected tool call continuation
fix(xai): complete rejected realtime tool calls
test(xai): add live tool argument probe
test(xai): cover rejected realtime tool arguments
fix(xai): validate realtime tool arguments before dispatch
fix(xai): skip tool call when rawArgs JSON parse fails instead of silently falling back to empty args
2026-08-01 22:06:35 +08:00
Vincent Koc
94d6f1f6e1
fix(xai): reject invalid realtime tool arguments ( #111730 )
...
* origin/pr-111730-head:
test(xai): type realtime sent item payloads
test(xai): prove rejected tool call continuation
fix(xai): complete rejected realtime tool calls
test(xai): add live tool argument probe
test(xai): cover rejected realtime tool arguments
fix(xai): validate realtime tool arguments before dispatch
fix(xai): skip tool call when rawArgs JSON parse fails instead of silently falling back to empty args
2026-08-01 22:05:30 +08:00