Commit Graph

30943 Commits

Author SHA1 Message Date
Val Alexander
d0c83777fb Control UI: refresh slash commands from runtime command list (#65620)
* Refresh slash commands from runtime command list

- Load live slash commands into the chat UI and command palette
- Keep builtin fallback behavior when runtime commands are unavailable

* Apply suggestion from @greptile-apps[bot]

Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>

* Control UI: harden runtime slash command discovery

* Control UI: bound runtime slash command payloads

* Control UI: use default agent for plain session keys

* Control UI: guard malformed slash command payloads

---------

Co-authored-by: greptile-apps[bot] <165735046+greptile-apps[bot]@users.noreply.github.com>
2026-04-12 20:38:37 -05:00
joshavant
c4764095f8 Outbound: centralize payload normalization plan 2026-04-12 19:52:24 -05:00
Peter Steinberger
4fec8073b1 fix: gate startup history and model requests (#65365) 2026-04-13 01:41:53 +01:00
Peter Steinberger
6a7961736a fix: defer gateway scheduled services (#65365) (thanks @lml2468) 2026-04-13 01:41:53 +01:00
limenglin
92776b8d77 fix(gateway): defer cron AND heartbeat activation until sidecars are ready (#65322)
startGatewayRuntimeServices() previously started both the cron
scheduler AND heartbeat runner BEFORE gateway sidecars finished
initialising.  Because chat.history is marked unavailable until
sidecars complete, any cron job or heartbeat tick that called
chat.history during this window received a hard UNAVAILABLE error.

Fix: create a noop heartbeat placeholder in the early
startGatewayRuntimeServices() call, then activate the real
heartbeat runner, cron scheduler, and pending delivery recovery
in a new activateGatewayScheduledServices() function that runs
AFTER startGatewayPostAttachRuntime() completes.

channelHealthMonitor and model pricing refresh remain in the
early call since they do not depend on chat.history.

Root cause analysis by luban, cross-validated by tongluo.
Reviewer feedback addressed: heartbeat runner is now also
deferred (previously only cron was deferred).
2026-04-13 01:41:53 +01:00
Peter Steinberger
03d042d2b9 perf: mock hot agents import tests 2026-04-13 01:35:52 +01:00
Peter Steinberger
5b2ae49107 perf: reduce agents test import overhead 2026-04-13 01:26:44 +01:00
Vincent Koc
4c8337f27b test(agents): stabilize steer restart ordering 2026-04-13 01:25:45 +01:00
pashpashpash
de1b6abf94 test(memory-core): freeze dreaming session-ingest clocks (#65605) 2026-04-12 17:24:34 -07:00
EVA
26945ddb49 agents: GPT-5.4 runtime completion rollup (#65219)
* agents: auto-activate strict-agentic for GPT-5 and emit blocked-exit liveness

Closes two hard blockers on the GPT-5.4 parity completion gate:

1) Criterion 1 (no stalls after planning) is universal, but the pre-existing
   strict-agentic execution contract was opt-in only. Out-of-the-box GPT-5
   openai / openai-codex users who never set
   `agents.defaults.embeddedPi.executionContract` still got only 1
   planning-only retry and then fell through to the normal completion path
   with the plan-only text, i.e. they still stalled.

   Introduce `resolveEffectiveExecutionContract(...)` in
   src/agents/execution-contract.ts. Behavior:

   - supported provider/model (openai or openai-codex + gpt-5-family) AND
     explicit "strict-agentic" or unspecified → "strict-agentic"
   - supported provider/model AND explicit "default" → "default" (opt-out)
   - unsupported provider/model → "default" regardless of explicit value

   `isStrictAgenticExecutionContractActive` now delegates to the effective
   resolver so the 2-retry + blocked-state treatment applies by default to
   every GPT-5 openai/codex run. Explicit opt-out still works for users who
   intentionally want the pre-parity-program behavior.

2) Criterion 4 (replay/liveness failures are explicit, not silent
   disappearance) is violated by the strict-agentic blocked exit itself.
   Every other terminal return path in src/agents/pi-embedded-runner/run.ts
   sets `replayInvalid` + `livenessState` via `setTerminalLifecycleMeta`,
   but the strict-agentic exit at run.ts:1615 falls through without them.

   Add explicit `livenessState: "abandoned"` + `replayInvalid` (via the
   shared `resolveReplayInvalidForAttempt` helper) to that exit, plus a
   `setTerminalLifecycleMeta` call so downstream observers (lifecycle log,
   ACP bridge, telemetry) see the same explicit terminal state they see on
   every other exit branch.

Regressions added:

- `auto-enables update_plan for unconfigured GPT-5 openai runs`
- `respects explicit default contract opt-out on GPT-5 runs`
- `does not auto-enable update_plan for non-openai providers even when unconfigured`
- `emits explicit replayInvalid + abandoned liveness state at the strict-agentic blocked exit`
- `auto-activates strict-agentic for unconfigured GPT-5 openai runs and surfaces the blocked state`
- `respects explicit default contract opt-out on GPT-5 openai runs`

Local validation:

- pnpm test src/agents/openclaw-tools.update-plan.test.ts src/agents/pi-embedded-runner/run.incomplete-turn.test.ts src/agents/pi-embedded-runner.buildembeddedsandboxinfo.test.ts src/agents/system-prompt.test.ts src/agents/openclaw-tools.sessions.test.ts src/agents/pi-embedded-runner/run.overflow-compaction.test.ts

122/122 passing.

Refs #64227

* agents: address loop-6 review comments on strict-agentic contract

Triages all three loop-6 review comments on PR #64679:

1. Copilot: 'The strict-agentic blocked exit returns an error payload
   (isError: true) but sets livenessState to "abandoned". Elsewhere in
   the runner/lifecycle flow, error terminal states are treated as
   "blocked".' Verified: every other hardcoded error terminal branch in
   run.ts (role ordering at 1152, image size at 1206, schema error at
   1244, compaction timeout at 1128, aborted-with-no-payloads at 606)
   uses livenessState: "blocked". Match that convention at the
   strict-agentic blocked exit at 1634. Updated the 'emits explicit
   replayInvalid + abandoned liveness state' regression test to assert
   the new "blocked" value and renamed the assertion commentary.

2. Copilot: 'The JSDoc for resolveEffectiveExecutionContract says
   explicit "strict-agentic" in config always resolves to
   "strict-agentic", but the implementation collapses to "default"
   whenever the provider/mode is unsupported.' Rewrite the JSDoc to
   explicitly document the unsupported-provider collapse as the lead
   case (strict-agentic is a GPT-5-family openai/openai-codex-only
   runtime contract) before listing the supported-lane behavior matrix.
   No code change; this is a docstring-only clarification.

3. Greptile P2: 'Non-preferred Anthropic model constant. CLAUDE.md says
   to prefer sonnet-4.6 for Anthropic test constants.' Swap
   claude-opus-4-6 → claude-sonnet-4-6 in the two update_plan gating
   fixtures that assert non-openai providers don't auto-enable the
   planning tool. Behavior unchanged; model constant now matches repo
   testing guidance.

Local validation:

- pnpm test src/agents/openclaw-tools.update-plan.test.ts src/agents/pi-embedded-runner/run.incomplete-turn.test.ts

29/29 passing.

Refs #64227

* test: rename strict-agentic blocked-exit liveness regression to match blocked state

Addresses loop-7 Copilot finding on PR #64679: loop 6 changed the
assertion to livenessState === 'blocked' to match the rest of the
hard-error terminal branches in run.ts, but the test title still said
'abandoned liveness state', which made failures and test output
misleading. Rename the test title to match the asserted value. No
code change beyond the it(...) title.

Validation: pnpm test src/agents/pi-embedded-runner/run.incomplete-turn.test.ts
(19/19 pass).

Refs #64227

* agents: widen strict-agentic auto-activation to handle prefixed and variant GPT-5 model ids

* Align strict-agentic retry matching

* runtime: harden strict-agentic model matching

---------

Co-authored-by: Eva <eva@100yen.org>
2026-04-12 16:36:11 -07:00
Peter Steinberger
b42937908d chore(release): prepare 2026.4.12-beta.1 v2026.4.12-beta.1 2026-04-13 00:20:52 +01:00
Peter Steinberger
ad7f605a6d fix(plugins): tolerate bundled peer resolution 2026-04-13 00:20:52 +01:00
Peter Steinberger
feb8e1e81f fix(test): remove duplicate trace directive fixtures 2026-04-13 00:20:52 +01:00
Peter Steinberger
9dbbee8a02 fix(test): align trace directive type stubs 2026-04-13 00:20:52 +01:00
Peter Steinberger
d77360c076 fix(plugins): restore missing native runtime deps 2026-04-13 00:20:52 +01:00
Peter Steinberger
bb064d359a test(parallels): harden Windows npm smoke 2026-04-13 00:20:51 +01:00
Peter Steinberger
cfd5f9e4e3 test(e2e): repair OpenShell prerelease smoke 2026-04-13 00:20:51 +01:00
Onur Solmaz
afb28631a5 CI: allow 32vCPU Blacksmith label in actionlint 2026-04-13 01:00:47 +02:00
Marcus Castro
9af8288c05 fix(whatsapp): send group reactions with target participant (#65512) 2026-04-12 20:00:19 -03:00
Onur Solmaz
82865ad480 CI: use 32vCPU Blacksmith release runners 2026-04-13 00:52:45 +02:00
Marcus Castro
403783a3b1 fix(tts): correct tagged TTS syntax guidance (#65573) 2026-04-12 19:41:13 -03:00
Onur Solmaz
48a7014e6b Docs: refresh config baseline hash 2026-04-13 00:31:43 +02:00
Onur Solmaz
4503a43b90 Config: stabilize bundled channel metadata loading 2026-04-13 00:26:44 +02:00
Onur Solmaz
b2f94d9bb8 Config: refresh generated release baselines 2026-04-13 00:13:42 +02:00
Onur
cdcdb4bb93 Release: separate release checks workflow (#65552)
* Release: separate live cache validation

* Docs: restore live validation secret details

* Release: rename live validation to release checks

* Release: document release check split rationale

* Release: tone down workflow warning

* Release: require full sha for release checks

* CI: use larger runners for release checks

* CI: keep release promotion on github runner

* CI: document github-hosted release jobs

* Release: allow sha validation-only preflight
2026-04-12 23:58:56 +02:00
pashpashpash
f5447aab88 OpenAI: strengthen heartbeat overlay guidance (#65148) 2026-04-13 06:47:40 +09:00
scoootscooob
38ad06912b Changelog: note audio provider env fix 2026-04-12 14:24:14 -07:00
pashpashpash
383c854313 CI: fix mainline regression blockers (#65269)
* MSTeams: align logger test expectations

* Gateway: fix CI follow-up regressions

* Config: refresh generated schema baseline

* VoiceCall: type webhook test doubles

* CI: retrigger blocker workflow

* CI: retrigger retry workflow

* Agents: fix current mainline agentic regressions

* Agents: type auth controller test mock

* CI: retrigger blocker validation

* Agents: repair OpenAI replay pairing order
2026-04-13 06:18:37 +09:00
scoootscooob
94ef2f1b0d CLI: detect env-backed audio providers (#65491)
* CLI: detect env-backed audio providers

* fix(cli): trust audio provider env detection

* Secrets: keep default provider env lookups stable

* Plugins: harden env-backed auth defaults

* Plugins: tighten trusted env var lookups

---------

Co-authored-by: Vincent Koc <vincentkoc@ieee.org>
2026-04-12 14:04:44 -07:00
Peter Steinberger
0bca55acea fix: use installer baseline for windows parallels upgrade 2026-04-12 21:01:58 +01:00
Tak Hoffman
fdd6b9b525 Clarify Active Memory lexical fallback behavior 2026-04-12 14:27:38 -05:00
Tak Hoffman
598ee39527 Clarify Active Memory embedding provider setup 2026-04-12 14:23:02 -05:00
Peter Steinberger
f619368769 test: lazy-load auth and gateway fixtures 2026-04-12 20:17:42 +01:00
Peter Steinberger
c473b174c5 test: defer bundled plugin contract loads 2026-04-12 20:17:42 +01:00
Peter Steinberger
5d9a04d4c1 perf: lazy-load session store helpers 2026-04-12 20:17:42 +01:00
Peter Steinberger
fbaa7a34fa test: stabilize doctor streaming migration expectations 2026-04-12 12:17:20 -07:00
Peter Steinberger
1ea332a658 fix: repair CI type checks 2026-04-12 12:04:59 -07:00
Peter Steinberger
ca2d297c50 docs(qa): clarify markdown scenario contract 2026-04-12 11:59:50 -07:00
Peter Steinberger
fcee268373 feat(qa-lab): support scenario-defined plugin runs 2026-04-12 11:59:50 -07:00
Vincent Koc
ea71a59127 fix(imessage): repair monitor retry type checks 2026-04-12 19:57:37 +01:00
Peter Steinberger
e4841d767d test: stabilize loaded full-suite checks 2026-04-12 11:52:56 -07:00
Peter Steinberger
d35cc6ef86 fix(discord): declare gateway heartbeat timeout state 2026-04-12 11:52:56 -07:00
Peter Steinberger
cb5a25d8d8 fix(discord): normalize legacy streaming aliases 2026-04-12 11:52:56 -07:00
Peter Steinberger
2c590bdbc4 test(gateway): align sessions send auth token 2026-04-12 11:52:33 -07:00
Peter Steinberger
fa87c6334a fix(imessage): align monitor retry types 2026-04-12 11:52:33 -07:00
Vincent Koc
d696242f35 docs(changelog): expand plugin runtime release note 2026-04-12 19:48:16 +01:00
Peter Steinberger
35b0586cb1 build: update A2UI bundle hash 2026-04-12 11:41:24 -07:00
Peter Steinberger
512bf8d365 fix: make A2UI hash ordering deterministic 2026-04-12 11:41:24 -07:00
Peter Steinberger
903f771c93 fix: align trace protocol artifacts 2026-04-12 11:41:24 -07:00
saram ali
acdf2b1c8a fix(memory-core): match daily notes stored in memory/ subdirectories (#64682)
* fix(memory-core): match daily notes in memory/ subdirectories in isShortTermMemoryPath

* fix(memory-core): exclude dream reports from short-term recall

* fix(memory-core): widen short-term recall path matching

* docs(changelog): note short-term recall fix

---------

Co-authored-by: Vincent Koc <vincentkoc@ieee.org>
2026-04-12 19:40:59 +01:00