Commit Graph

19383 Commits

Author SHA1 Message Date
Peter Steinberger 447393dc32 test(core): remove residual duplicate assertions (#124116) 2026-08-15 02:06:44 -07:00
Peter Steinberger 11bcc0eb49 fix(memory): stop cancelled searches before returning results (#124118)
* fix(memory): stop vector scan after search cancellation

* fix(memory): preserve cancellation through hybrid search
2026-08-15 02:00:33 -07:00
Peter Steinberger ee65561410 perf(test): speed up Mattermost send suite (#124114) 2026-08-15 01:57:07 -07:00
Peter Steinberger af99d1ac7b test(computer-use): security closure across the v2 action surface (#124112) 2026-08-15 01:54:06 -07:00
Peter Steinberger 5d601233df refactor(types): remove chained type assertions in extensions (#124079)
* refactor(types): remove chained assertions in extensions

* fix(codex): preserve canonical binding identity
2026-08-15 01:39:26 -07:00
Peter Steinberger 250b1e68be refactor(channels): centralize ingress lifecycle fan-out (#124096) 2026-08-15 01:03:16 -07:00
Ilya Kuprov f21d34d71d fix(slack): upload-file silently drops a caption (#121047)
The Slack `upload-file` action accepts `media` as an alias for `filePath`, so
a caller can reach it with the same vocabulary used for a media `send`. That
vocabulary carries its accompanying text in `caption`, but the upload path
read only `initialComment` and `message`, so the text was dropped and the file
arrived in the channel with no comment at all.

Accept `caption` as the lowest-precedence alias. Explicit `initialComment`
still wins, `message` still comes next, and an explicitly empty
higher-precedence value stays empty.
2026-08-15 10:58:55 +03:00
Peter Steinberger cf57cbf39a perf(test): avoid DeepInfra auth graph import (#124085) 2026-08-15 00:58:03 -07:00
Peter Steinberger 9e911d5601 test(cua): remove stale provider parity fixtures (#124066) 2026-08-15 00:28:55 -07:00
Peter Steinberger 079bb34196 feat(cua-computer): recording family with host-owned resource handles (#124035)
* feat(cua-computer): add recording resource handles

* test(agents): split computer tool coverage
2026-08-15 00:14:13 -07:00
Peter Steinberger 28f10c00b4 fix(codex): keep yolo approvals disabled (#124069)
Keep routine Codex commands from pausing for approval in default and team YOLO sessions. The default exec policy omitted its full mode, so a generic tool hook could promote approvalPolicy from never to untrusted.
2026-08-14 23:57:49 -07:00
Peter Steinberger 056184bccc fix(browser): preserve closed tab ownership (#124064) 2026-08-14 23:55:07 -07:00
Peter Steinberger a8f1a0d345 test(computer-use): live end-to-end gate for both macOS providers (#123991)
* fix(computer-use): preserve semantic click observations

* fix(cua-computer): isolate desktop and window sessions

* fix(cua-computer): route cursor reads through desktop scope

* test(computer-use): add isolated macOS live proof rig

* style(cua-computer): format driver sessions

* fix(cua-computer): forward lazy desktop tools

* fix(computer-use): narrow live proof artifact path

* test(computer-use): split schema contract coverage

* refactor(cua-computer): unify session start state

* build(computer-use): register live proof entrypoint

* style(computer-use): satisfy full lint contract

* fix(computer-use): harden live proof authority

* fix(cua-computer): keep window authority immutable

* fix(computer-use): close partial sessions safely
2026-08-14 23:37:53 -07:00
Peter Steinberger 3f6bf166b6 fix(memory): preserve provider on cancelled search (#124051) 2026-08-14 23:28:16 -07:00
Ayaan Zaidi 2e806ef0e2 fix(codex): keep the real answer when a trailing coda follows (#123993)
* fix(codex): keep prior finals when a coda follows without tool work

Live persist last-won a single assistant slot, so a trailing final_answer
replaced the real summary. Keep explicit finals after the last native tool;
phase-less coordination text stays last-wins.

* fix(codex): record the native-work barrier from item notifications

turn/completed.items is a last_agent_message Summary, so result-time
tool scans cannot see intervening work. Invalidate persistable finals
when native tools arrive, drop trailing silent tokens, and let a later
unphased message replace earlier finals.

* fix(codex): make the persistable-text barrier once-per-handoff

Delayed native completions must not move the barrier past an answer that
arrived while that tool was already active. Dynamic tool calls are the
same handoff. If no audible text exists after the barrier, recover the
last persistable answer instead of dropping it.

* fix(codex): keep a post-handoff silent final authoritative

A tool after an audible final starts a new answer segment. If that
segment is NO_REPLY, do not revive the pre-tool text. Recover a prior
answer only when the post-handoff segment is empty.

* fix(codex): classify silent finals with the delivery payload predicate

Token-only matching missed JSON and reasoning-wrapped NO_REPLY
payloads, so a trailing control envelope could join into the visible
answer. Use the shared payload-level predicate.

* fix(codex): honor unphased replacement and sleep handoffs

A later unphased item must invalidate older finals even when a later
final skips it, and sleep is a native answer barrier.
2026-08-15 11:36:33 +05:30
Jason (Json) a02ed2cfda fix(plugin-sdk): installed llama providers fail to load after upgrade (#124041)
* fix(plugin-sdk): let installed llama providers load after upgrade

* test(tooling): include new memory race importer
2026-08-14 23:57:24 -06:00
Peter Steinberger 49e783da74 perf(test): narrow Tlon monitor SDK mocks (#124036) 2026-08-14 22:37:02 -07:00
Peter Steinberger 3f7c8522b7 fix(discord): stop stale voice playback after leave (#124030)
Discard TTS that settles after a Discord voice session stops, release queued streams, and remove file-backed playback artifacts after use.
2026-08-14 22:31:11 -07:00
Peter Steinberger 2e90d67312 test(cua): trim generic browser transport replays (#124011) 2026-08-14 22:24:41 -07:00
Peter Steinberger 2ee5c2f6ca fix(memory): queue transcript updates during active sync (#124024) 2026-08-14 22:20:53 -07:00
Bek 5a5bf4d524 fix(codex): preserve native child continuation on yield (#124004) 2026-08-15 01:13:09 -04:00
Peter Steinberger 1320a0bff9 feat(lint): reject widen-then-assert type laundering (#124003)
* feat(lint): add no-widen-then-assert guard

* refactor: preserve typed boundary evidence

* refactor(types): remove redundant unknown aliases

* fix(agent): preserve replay sanitizer fallback

* fix(lint): close widen-then-assert nested-chain and const-alias bypasses
2026-08-14 22:10:19 -07:00
Peter Steinberger 6e5bf3ec55 fix(doctor): stop false failures on multi-agent profiles (#124010)
* fix(doctor): resolve multi-agent health owners

* fix(doctor): keep bare json exit advisory
2026-08-14 21:45:55 -07:00
Peter Steinberger f0d277277b test(perf): assert live duplicate tombstones (#124012) 2026-08-14 21:45:48 -07:00
Vyctor H. Brzezowski 82efd1f0ee fix: generate session and thread titles in sentence case (#123389)
Generated titles came back in Title Case because none of the title prompts stated a capitalization style; asked for a "title" with no case rule, models default to Title Case and nothing downstream corrects it. The tool-call purpose titles already ask for sentence case, so session titles, Discord auto-thread titles, and Telegram DM topic labels were the outliers.

Sets sentence case in each title prompt rather than post-processing: the titles follow the user's language, and sentence-case rules are language-specific, so a mechanical normalizer would mangle German nouns and proper nouns like OpenClaw or GitHub.
2026-08-15 01:38:41 -03:00
TUARAN d30c036b68 fix(channels): bound errored ingress settlements (#120104)
Route error-bearing fan-in abandonment through the existing failure policy so deterministic pre-adoption failures cannot exceed retry limits and starve same-lane messages.

Co-authored-by: Peter Steinberger <steipete@gmail.com>
2026-08-14 21:17:17 -07:00
Peter Steinberger e26bae5b2a fix(xai): fence cancelled x_search cache writes (#123996)
Prevent a completed standalone x_search request from building or caching a result after caller cancellation. Preserve the exact abort reason and force identical retries back through the provider request path.\n\nFixes #123964
2026-08-14 21:10:10 -07:00
Peter Steinberger a32a7ae9af feat(cua-computer): verify the managed driver artifact on Windows and Linux node hosts (#123986) 2026-08-14 21:08:13 -07:00
Peter Steinberger 81e0cf0d1d test: replace ingress waits with stop barriers (#123990) 2026-08-14 20:59:52 -07:00
Peter Steinberger aa7a2fbe0d feat(cua-computer): browser action family over v2 (#123960)
* feat(cua-computer): add browser action family

* refactor(cua-computer): split browser action files

* refactor(cua-computer): move the shared act-params type to the leaf module

* fix(cua-computer): carry the contract params import with the moved type
2026-08-14 20:59:46 -07:00
Peter Steinberger 52cf4db826 fix(synology-chat): prevent duplicate sends after custody loss (#123953)
* fix(synology-chat): preserve durable send custody

* fix(synology-chat): clean rejected media custody
2026-08-14 20:38:56 -07:00
Peter Steinberger 8e79622777 fix(web-search): fence cancelled provider cache writes (#123951) 2026-08-14 20:29:23 -07:00
Peter Steinberger 6ef6d4d466 fix(google-meet): preserve exports on write failure (#123959) 2026-08-14 20:28:59 -07:00
Jason (Json) e382fa7979 fix(codex): keep task lists active across compaction (#123921)
* fix(codex): restore plan state after compaction

* fix(codex): bound restored plan context
2026-08-14 21:27:42 -06:00
Peter Steinberger c6bf10c27d perf(test): reuse Quicksilver peer module graph (#123947) 2026-08-14 20:08:23 -07:00
Peter Steinberger d7d059c7e6 perf(test): move direct import smoke to test fixtures (#123923) 2026-08-14 19:07:48 -07:00
Peter Steinberger 156af00a78 fix(memory): report truthful index outcomes (#123863) 2026-08-14 17:17:16 -07:00
Peter Steinberger 0a6b95a3df feat: cloud workers for the codex runtime (remote-exec placements) (#123743)
* feat(gateway): add remote-exec cloud placements

* feat(codex): run cloud turns through remote exec

* fix(sandbox): quote ssh_config path directives containing whitespace

Crabbox lease keys default to ~/Library/Application Support/... on macOS;
unquoted IdentityFile/UserKnownHostsFile/CertificateFile arguments tokenize
on the space and fail as 'extra arguments'. Found via live remote-exec
cloud-worker proof.

* test: consolidate gateway maintenance schedule coverage

* fix(ci): invalidate plugin sdk declarations on state changes
2026-08-14 16:46:56 -07:00
Peter Steinberger bd1814bede fix(policy): require --agent for explicit workspaces (#123880)
* fix(policy): require explicit CLI agent owner

* chore(policy): leave release notes to release flow
2026-08-14 16:15:17 -07:00
Peter Steinberger 98a8e0d63f fix(macos): prevent mismatched CUA driver endpoints (#123845)
* fix(macos): make CUA driver endpoint handoff atomic

* ci: record approved CUA env budget increase

* test: satisfy changed-gate hygiene

* style(macos): use failable endpoint string conversion

* fix(macos): strip retired CUA worker environment

* ci: constrain CUA env budget approval

* test(macos): isolate inherited CUA environment
2026-08-14 16:04:43 -07:00
Sarah Fortune f2e5d2054d feat(slack): include observed away duration in presence events (#123805)
* feat(slack): include observed away duration in presence events

* style(slack): format presence observation type

* test(slack): type presence enqueue mock

* fix(slack): preserve presence event prompting

---------

Co-authored-by: Sarah Fortune <sarah.fortune@gmail.com>
2026-08-14 22:46:00 +00:00
Pavan Kumar Gondhi d5e89de906 fix(synology-chat): deliver attachments without forwarding source URLs [AI] (#119941)
* fix(synology-chat): host outbound attachments

* fix(synology-chat): isolate hosted media routes

* fix(synology-chat): harden hosted media limits

* fix(synology-chat): inspect hosted media content

* fix(synology-chat): reject ambiguous media routes

* fix(synology-chat): retain indeterminate media capabilities

* fix(synology-chat): mask public callback URLs

* fix(synology-chat): align callback sensitivity metadata

* fix(synology-chat): reserve media capability query keys

* fix(synology-chat): release rejected staged media

* fix(synology-chat): preserve ambiguous media handoffs

* fix(synology-chat): scan complete active media preamble

* fix(synology-chat): report validated attachment readiness

* fix(synology-chat): bound public media capability probes

* fix(synology-chat): bound hosted media responses

* test(synology-chat): model response headers read-only

* fix(synology-chat): bound hosted media reads

* fix(synology-chat): bound hosted media delivery

* fix(synology-chat): retain media through active serves

* fix(plugin-sdk): lease hosted media readers atomically

* fix(synology-chat): close hosted media review gaps

* test(synology-chat): clean up hosted media state

* fix(system-agent): canonicalize sensitive config paths

* fix(system-agent): honor runtime config sensitivity hints

* fix(config): inherit sensitive metadata

* fix(synology-chat): close latest review findings

* test(system-agent): keep config recovery checks lint-clean

* fix(system-agent): redact structured config secrets

* fix(synology-chat): harden active-content sniffing

* fix(security): close hosted media review gaps

* fix(security): close remaining hosted media review findings

* fix(system-agent): narrow dynamic owner ids safely

* fix(system-agent): narrow dynamic channel ids safely

* test(channels): isolate hosted media proofs

* fix(security): close config and hosted media review gaps

* test(plugin-sdk): split outbound media retention coverage

* test(plugin-sdk): isolate capacity store fixtures

* test(system-agent): assert config secrecy invariant
2026-08-14 17:05:20 -05:00
Peter Steinberger 6072a838a1 fix(anthropic): read keychain auth during non-interactive setup (#123839) 2026-08-14 14:31:15 -07:00
Peter Steinberger 8cd749f2ed fix(matrix): authenticate channel probes (#123766) 2026-08-14 13:32:16 -07:00
Peter Steinberger 13fee42c08 fix(cua): keep driver endpoint env private (#123798) 2026-08-14 12:52:33 -07:00
Peter Steinberger 17eb646bb3 refactor(ai): consolidate Responses replay paths (#123762)
* refactor(ai): consolidate Responses replay ownership

* refactor(codex): consolidate completion plumbing

* refactor(agents): centralize replay pairing repair

* refactor: preserve replay static contracts
2026-08-14 11:20:57 -07:00
Ayaan Zaidi a8a986af1d fix(qa): preserve Telegram reply defaults in live canary (#123662)
Make Telegram live QA inherit the production reply default instead of forcing threaded replies. Keep the portable one-visible-reply canary invariant while removing Telegram-specific policy.

Co-authored-by: Ayaan Zaidi <hi@obviy.us>
2026-08-14 23:15:35 +05:30
Peter Steinberger 19ace6830b feat(macos): add embedded CUA computer provider (#123635)
* feat(macos): embed CUA computer provider

* fix(macos): clarify embedded CUA trust posture

* fix(macos): contain embedded CUA daemon lifecycle

* fix(macos): reap orphaned CUA daemons

* fix(macos): record the spawned CUA daemon pid so reaping can terminate orphans

* chore(macos): refresh native i18n baseline for the computer control provider picker

* style(macos): satisfy swiftlint on the embedded CUA host and connect params

* refactor(gateway): move optional connect params to GatewayConnectOptions
2026-08-14 10:24:08 -07:00
Peter Steinberger 1306ec805d fix(llama-cpp): fully persist verified downloads (#123738) 2026-08-14 09:59:25 -07:00
Peter Steinberger 8885be4756 fix(codex): refresh session meters after /codex compact (#123640)
* fix(codex): route compact through session pipeline

Route /codex compact through host-owned manual compaction so native completion and token snapshots update session meters, and report the terminal outcome to the user.

* test(codex): cover unavailable compact outcome

* fix(plugins): fence command compaction capability

Bind compactCurrent to one command invocation and captured session generation so retained or stale callbacks fail closed without running compaction.

* fix(plugins): lazy-load command session revalidation

Keep compaction session freshness checks at the auto-reply owner without pulling the session accessor into generic plugin command module initialization.

* fix(plugins): keep session revalidation lazy

Avoid loading the session accessor through generic plugin command initialization while preserving pre-compaction session-generation checks.

* fix(compaction): fence session lifecycle admission

Revalidate the exact session id and lifecycle revision immediately before native compaction and again before accounting so resets and rebinds fail closed across awaited work.

* fix(commands): fence plugin compaction authority

* fix(compaction): require accounting commit

* test(compaction): keep regression under lint cap

* fix(codex): preserve compact admission

* fix(codex): preserve compaction target identity

* fix(compaction): bind admitted target

* fix(compaction): fence accounting commit
2026-08-14 09:47:43 -07:00