Commit Graph

6225 Commits

Author SHA1 Message Date
Peter Steinberger
25bb1da3a7 fix(packaging): keep tracked skills visible without a brittle global ignore list (#116766)
* fix(ci): keep tracked repository skills visible without allowlists

* style(skills): format newly visible issue sweep skill

---------

Co-authored-by: Peter Steinberger <steipete@macos.shared>
2026-07-31 04:05:04 -07:00
Vincent Koc
33fd59a4bb fix(release): skip unavailable Buzz QA runner (#116753) 2026-07-31 18:51:00 +08:00
Vincent Koc
6830820755 feat(plugins): externalize DuckDuckGo search (#116740) 2026-07-31 18:49:07 +08:00
Vincent Koc
44ce19821f fix(ci): retire Kova runtime deps coverage (#116760) 2026-07-31 18:09:17 +08:00
Vincent Koc
a550827dad feat(plugins): externalize Synthetic provider (#116720) 2026-07-31 17:19:43 +08:00
Vincent Koc
5540f0c7f8 test(testing): guard realtime relay smoke module path 2026-07-31 16:37:05 +08:00
Vincent Koc
37b1a71654 fix(release): unblock beta validation workflows (#116708)
* fix(release): repair beta validation workflow state

* fix(qa): dispatch yielded fanout runs without task tracking

* fix(test): honor GPT-Live shard opt-in
2026-07-31 15:47:11 +08:00
Dallin Romney
640b4ac599 fix(ci): discover frozen target startup benchmark cases (#116711) 2026-07-31 15:35:33 +08:00
Dallin Romney
1e45f7ed9f improve(ci): rebalance embedded agent test configs (#116436)
* improve(ci): rebalance embedded agent test configs

* fix(ci): satisfy compact planner lint

* refactor(ci): simplify compact shard rebalancing
2026-07-31 15:15:13 +08:00
Vincent Koc
8d7ff3c04c fix(test): keep memory FD repro config valid (#116698) 2026-07-31 14:44:09 +08:00
Dallin Romney
d24cdea7ec fix(release): omit unavailable candidate Docker scripts (#116432)
* fix(release): omit unavailable candidate Docker scripts

* fix(docker): fail on unreadable candidate manifest

* fix(docker): expose candidate planner option
2026-07-31 14:18:18 +08:00
Dallin Romney
bd5daad79a fix(release): accept legacy zero skipped runtime summaries (#116429) 2026-07-31 14:13:53 +08:00
Vincent Koc
fa4cc51a87 feat(plugins): externalize Teams and Zoom meetings (#116682) 2026-07-31 14:10:46 +08:00
Vincent Koc
c45c318848 fix(plugins): enforce conformance probe diagnostics (#116676) 2026-07-31 13:20:33 +08:00
Vincent Koc
c892a712e6 feat(plugins): externalize Cohere and Meta providers (#116662)
* feat(plugins): externalize Cohere and Meta providers

* docs(changelog): note provider externalization

* chore: keep changelog release-owned
2026-07-31 12:53:01 +08:00
Vincent Koc
b3ce00b480 refactor(schema): share config validation runtime (#116622) 2026-07-31 12:40:48 +08:00
Vincent Koc
c3bb8fc265 fix(perf): make Kova startup diagnostics actionable (#116319)
* fix(perf): rank startup duration hotspots correctly

* ci(perf): exercise prepared runtime startup cases
2026-07-31 10:23:32 +08:00
Vincent Koc
d5ab7d7d03 fix(ci): run fs-safe removal Windows coverage (#116510)
* test(ci): run fs-safe remove suite on Windows

* test(infra): correct Windows rebind race expectation

* test(infra): exercise Windows rebind hook
2026-07-31 09:58:34 +08:00
Vincent Koc
88876f780b fix(android): preserve device work across lifecycle changes (#116593)
* fix(android): use configured SDK for screenshot AVDs

* fix(android): keep chat jump control clear of messages

* fix(wear): ignore stale control completions

* fix(android): advertise node permission changes

* fix(android): select play flavor for benchmarks

* test(android): decouple cron benchmark from copy

* fix(android): install play variant in perf scripts

* fix(wear): clear gateway control busy state

* fix(android): surface voice e2e connection errors

* test(android): cover common live node commands

* fix(android): retain share parsing across recreation

* fix(android): retain permission requests across recreation

* fix(wear): bind realtime audio to talk attempts

* fix(android): track active permission host

* fix(wear): own gateway control busy state

* fix(wear): admit realtime channels by attempt

* fix(android): refresh permissions on top resume

* fix(wear): serialize reconnect retirement with writes

* chore(i18n): refresh native source inventory

* fix(wear): retain pending audio through start RPC

* fix(wear): negotiate realtime channel compatibility

* test(wear): assert reconnect outcome without owner churn

* fix(android): move settings prompt with active host

* fix(wear): reject stale relay starts

* chore(changelog): leave notes to release generation
2026-07-31 09:49:11 +08:00
Vincent Koc
39156a99cd fix(ci): restore beta release harnesses (#116596)
* test(release): model systemd ownership probes

* fix(ci): restore release Docker package probes

* fix(release): preserve Windows setup-node runtime

* fix(release): isolate Windows service validation

* fix(release): strip isolated Windows service identity
2026-07-31 09:17:35 +08:00
Patrick Erichsen
61cf4b9246 test(buzz): add live QA Lab channel lane (#116298)
* feat(buzz): add live QA runner

* ci(qa): add gated Buzz live lane

* docs(qa): document Buzz live testing

* fix(buzz): keep QA relay type private

* test(buzz): type QA suite mock

* fix(buzz): preserve racing QA reply relations

* fix(qa): harden Buzz credential redaction

* fix(buzz): ignore retained QA relay events

* fix(buzz): clean up observer setup failures

* test(buzz): return complete racing messages

* fix(buzz): default QA credentials to file

* fix(qa): validate pooled Buzz secrets

* fix(qa): redact structured Buzz auth tags

* fix(buzz): preserve QA credential env override

* fix(qa): redact inspected Buzz auth tags

* test(buzz): limit live QA to supported scenarios

* ci(qa): run Buzz lane in release checks

* fix(qa): require secure remote Buzz relays

* fix(qa): satisfy Buzz QA validation gates

* fix(qa): inject credential leasing into transport adapters
2026-07-30 17:44:27 -07:00
Vincent Koc
a473fc6f3e fix(ci): extend OpenAI live profile setup budget (#116580) 2026-07-30 23:40:02 +00:00
Vincent Koc
3b355879b8 test(infra): run exec allowlist suite on Windows (#116492) 2026-07-31 01:46:19 +08:00
Vincent Koc
26f107071e test(agents): run exec preflight suite on Windows (#116469) 2026-07-31 00:57:04 +08:00
Vincent Koc
ee7425d8fa test(openai): cover live audio smoke controls 2026-07-31 00:42:04 +08:00
Vincent Koc
85466bd89e test(mxc): run Windows-only suites in CI (#116451) 2026-07-31 00:10:22 +08:00
Omar Shahine
6f9da38401 feat(agents): rename model- and user-facing scheduler strings to automations (#114852)
* fix(agents): teach canonical automations tool in fallback guidance and reuse the identity source

Review follow-ups: the structured-list fallback still taught models the cron
tool; the cron-scope test echoed its own stub; MCP serve allowlist and voice
confirmation hardcoded the name instead of the canonical constant.

* fix(mcp): place automations identity import outside the header comment

* feat(agents): rename model- and user-facing scheduler strings to automations

Rewrites every string the model or user sees that names the feature:
tool label and terminal presentation, display-summary preset, subagents
catalog description, heartbeat guidance, subagent prompt, session labels
(Cron: -> Automation:), default job name, unattended-run preamble, delivery
awareness text, task-ledger progress summary, failure alerts, auto-disable
notification, model preflight diagnostics, validation errors, and the
shipped workspace AGENTS.md template. Adds a system-prompt backstop rule on
the automations tool line: the feature is called automations, never cron.

Cron stays only where it names the schedule syntax ({kind:"cron"}, cron
expressions), config keys (cron.triggers.enabled), RPC method names, and
session-key namespaces. Test fixtures with legacy labels are kept as
stored-data coverage. Part of RFC openclaw/rfcs#50 Phase 1 (PR B).

* docs(templates): keep workspace template on the live docs anchor until the docs PR renames it

* fix(cron): rename remaining failure-notification producers and stale test expectations

Codex review follow-ups: the per-run failure notification (server-cron-
notifications) and the doctor legacy-notify advisory still said Cron job;
failure-alert and incomplete-turn suites still asserted the old wording.

* chore(plugin-sdk): re-emit plugin-state test runtime dts

CI's extension-boundary runner holds stale tsgo incremental state whose
cached plugin-state-test-runtime.d.ts predates the keyed-store re-exports;
the freshness stamp validates it and reruns reuse the same sticky disk.
Touching the module forces incremental emit to regenerate the declaration.
Fresh builds of this head (local exact CI command and a forced Testbox
rebuild) both emit the exports correctly.

* fix(agents): rename residual model- and operator-facing cron prose

Found in combined dev-gateway E2E: fallback tool line still told models the
scheduler tool is cron; heartbeat scratch description, cron model preflight
rejection, doctor and Claw prose still said cron jobs.

* fix(agents): finish model-facing scheduler strings flagged in review

Loop work-order prompts, subagents tool description, cron-tool write errors,
and the headless exec denial label now say automations; loop builders covered
by prompt assertions; snapshots regenerated.

* chore(agents): refresh generated baselines and live docs anchor after rebase onto main

* fix(agents): rename new main-side cron tool error expectations to automations

* fix(gateway): rename main-side cron notification test expectations to automations

* chore(agents): apply review moves - automations commands in workspace template, drop unrelated sdk comment

---------

Co-authored-by: Omar Shahine <10343873+omarshahine@users.noreply.github.com>
2026-07-30 08:54:55 -07:00
Dallin Romney
c06191e6fb fix(ci): pass OpenAI credentials to Matrix live frontier (#116434) 2026-07-30 23:40:06 +08:00
Vincent Koc
90a22b4f50 chore(test): run browser copilot E2E in CI (#116407)
* test(browser): run copilot E2E in CI

* test(browser): stabilize copilot E2E synchronization

* test(browser): wake extension workers deterministically

* test(ci): route browser copilot command changes
2026-07-30 23:20:34 +08:00
Omar Shahine
364d8be010 feat(agents): rename scheduler agent tool cron -> automations (#114841)
* refactor(agents): route scheduler tool-name consumers through canonical identity

Introduce AUTOMATIONS_TOOL_NAME + isAutomationsToolName() in
src/agents/tools/automations-tool-name.ts as the single source of truth for
the scheduler agent tool's name, and convert every exact-name consumer:
factory descriptors, deferred-followup availability detection, add-counting,
policy deny lists, mutation classification, trusted media set, tool catalog
id, system-prompt tool order and tool-line map, sandbox deny defaults,
delegation capability map, MCP loopback probes, and local-model lean deny.

Behavior-neutral: the constant still resolves to "cron". Prepares the
rename in RFC openclaw/rfcs#50 so the flip is a one-line change with no
scattered literals.

* feat(agents): rename scheduler agent tool cron -> automations

Flip AUTOMATIONS_TOOL_NAME to "automations" and register the legacy name:

- TOOL_NAME_ALIASES gains cron -> automations, so persisted toolsAllow/
  toolsDeny lists, tool groups, and creator allowlists written before the
  rename keep matching through the same shipped mechanism as bash -> exec.
  No doctor rewrite needed.
- isAutomationsToolName() accepts legacy names so saved transcripts keep
  their mutation/replay-safety classification; MUTATING_TOOL_NAMES retains
  the legacy entry for the same reason.
- Tool label, catalog label, and tool-search keywords follow the rename
  ("cron" kept as a search synonym).
- Regression tests cover old-name policy matching (allow and deny), legacy
  transcript replay classification, and legacy creator allowlists
  normalizing to the canonical id.

Model-facing description strings still say cron; those move in the
follow-up strings PR. Part of RFC openclaw/rfcs#50 Phase 1.

* test(agents): update creator-cap expectations for canonical automations id

The creator tool surface derives from normalized live tool names, so derived
toolsAllow outputs now emit "automations". Passthrough paths without a
creator cap keep storing user input verbatim; those expectations stay on the
legacy name as stored-data coverage.

* fix(gateway): canonicalize legacy cron tool calls and restore scheduler deny protection

Review follow-ups from ClawSweeper and Codex on the rename (RFC 0026):

- MCP loopback tools/call resolves legacy "cron" names to the published
  automations tool without re-advertising the old name in tools/list.
- Gateway /tools/invoke canonicalizes legacy names before core-id checks and
  exact-name dispatch, so pre-rename integrations keep working.
- Security fix: dangerous-tools deny lists (owner-only HTTP deny and
  control-plane set) were keyed on the literal "cron", so the renamed tool
  silently lost default-deny and owner-only protection on the HTTP invoke
  surface. Lists now use the canonical constant, and the gateway.tools.allow
  un-deny filter normalizes both sides so legacy allow entries still lift it.
- Voice high-impact confirmation list and MCP serve creator allowlist follow
  the canonical name.

Existing cron-regression suite now proves the legacy path end to end:
default deny 404 for both names, legacy allow entry lifts the deny, and
non-owner protection holds.

* fix(agents): cover stdio MCP legacy calls, probe prompts, and prompt snapshots for the rename

- stdio MCP servers (openclaw-tools-serve / plugin tools handlers) resolve
  legacy "cron" callTool names to the published canonical tool, matching
  the HTTP loopback behavior; listTools stays canonical-only.
- Live probe prompts instruct harnesses to load/call the automations MCP
  tool (mcp__openclaw__automations) instead of the retired name.
- Prompt snapshot fixture filter follows the canonical name (the renamed
  tool had silently dropped out of the Codex dynamic-tools snapshots);
  snapshots regenerated as a clean rename.
- Type-cast the new mcp-http handler test payloads for check-test-types.

* test(agents): update tool-surface expectations for the automations rename

CI-surfaced fallout in shards not covered by the focused local runs: tool
availability, agent-config filtering, coding-tools construction,
model-provider lean policy, and skill dispatch all assert the scheduler
tool's surface name. Mock fixtures and expectations follow the canonical
id; legacy-name coverage stays in the dedicated policy/creator-cap/invoke
regression suites.

* test(gateway): update tool-resolution exclude expectations for automations rename

* test(security): update trust-model audit expectations for automations rename

* docs(agents): declare cron a permanent scheduler-tool alias per owner decision

Maintainer decision (Omar): cron is not being retired anywhere — config keys,
RPC methods, schedule syntax, and the CLI token all keep it, and the tool
alias follows the same permanent contract as bash -> exec. No doctor rewrite
and no removal window; comments updated to state the contract instead of a
deprecation plan.

* chore(agents): regen prompt snapshots after rebase onto main

* fix(agents): teach canonical automations tool in fallback guidance and reuse the identity source

Review follow-ups: the structured-list fallback still taught models the cron
tool; the cron-scope test echoed its own stub; MCP serve allowlist and voice
confirmation hardcoded the name instead of the canonical constant.

* fix(mcp): place automations identity import outside the header comment

---------

Co-authored-by: Omar Shahine <10343873+omarshahine@users.noreply.github.com>
2026-07-30 07:16:13 -07:00
Peter Steinberger
e604cf5b77 fix(release): trust update restart harness (#116301)
* fix(release): trust update restart harness

* fix(release): preserve candidate harness root
2026-07-30 05:19:16 -07:00
Vincent Koc
fb65457385 test: remove redundant extension boundary wrapper (#116385) 2026-07-30 19:36:54 +08:00
Vincent Koc
dac0ef6f0e fix(test): bound Testbox agentic and extension suites (#115696)
* fix(test): split Testbox extension processes

* fix(test): split Testbox agentic processes
2026-07-30 19:26:47 +08:00
Dallin Romney
c854a04696 fix(ci): validate frozen release candidates faithfully (#116357) 2026-07-30 18:57:32 +08:00
Dallin Romney
bf8da2537c improve(ci): fail_fast option for release validation, off by default (#116352)
* ci: make release validation fail-fast optional

* ci: pass release QA fail-fast as boolean

* test: format release validation helper test
2026-07-30 18:53:41 +08:00
Vincent Koc
ea894bba8a fix(test): preserve failed shard diagnostics (#116289) 2026-07-30 17:17:17 +08:00
Jason (Json)
a67ad03eea perf(gateway): bound prepared runtime startup work (#116261) 2026-07-30 01:41:35 -06:00
Dallin Romney
c8f0db2c24 fix(ci): load frozen shard runner without repository fetch (#116273)
* fix(ci): load frozen shard runner without repository fetch

* test(ci): preserve workflow expression delimiters

* fix(ci): use non-cone frozen runner checkout
2026-07-30 15:37:44 +08:00
Peter Steinberger
2c436594de fix: clean npm preflight cache restore targets (#116276) 2026-07-30 00:33:55 -07:00
Peter Steinberger
3e67671d92 fix(e2e): apply default service identity per flow (#116265) 2026-07-30 00:00:14 -07:00
Peter Steinberger
62cbbcc800 fix(e2e): align service account state (#116254) 2026-07-29 23:00:16 -07:00
Vincent Koc
16baaff90f fix(e2e): align doctor switch with service ownership (#116209) 2026-07-30 12:31:39 +08:00
Peter Steinberger
4430f8ecfd fix(e2e): use account home for daemon switch (#116217) 2026-07-29 21:06:38 -07:00
Peter Steinberger
9c3503a443 fix(e2e): use default state for daemon switch (#116190) 2026-07-29 20:02:19 -07:00
Peter Steinberger
5a3c3b3f4f fix(ci): explicitly serialize hosted Swift tests (#116167) 2026-07-29 18:55:37 -07:00
Vincent Koc
ffa99ca81d fix(docker): validate timezone in runtime image (#116153) 2026-07-30 09:19:01 +08:00
Vincent Koc
1065c1d697 fix(ui): identify source builds in settings footer (#116134)
* fix(ui): identify source builds in settings footer

* fix(release): classify all official Control UI builds
2026-07-30 08:58:34 +08:00
Peter Steinberger
1165be39ff ci: serialize hosted macOS Swift tests (#116137) 2026-07-29 17:40:41 -07:00
Vincent Koc
54e273e695 fix(agents): keep date reasoning current in long-running sessions (#116090)
* fix(agents): ground date reasoning below cache boundary

Co-authored-by: Deepak Jain <406777+deepujain@users.noreply.github.com>

* docs: refresh temporal context map

* chore: leave release notes to release curation

* test(agents): keep compaction date mock complete

---------

Co-authored-by: Deepak Jain <406777+deepujain@users.noreply.github.com>
2026-07-29 22:12:47 +00:00
xingzhou
b5c0878777 fix(build): bound bundled plugin asset generators (#111366)
Fail build and copy generators with ETIMEDOUT after 600000ms and terminate the complete managed process tree. Keep the timeout policy in the bundled-assets caller while preserving the shared helper for distinct callers such as #111349.

Co-authored-by: Vincent Koc <vincentkoc@ieee.org>
2026-07-30 04:56:21 +08:00