Peter Steinberger
1ca60fbc3a
refactor(agents): make multi-agent ownership explicit (H2-1 core) ( #114388 )
...
* refactor(agents): make roster ownership explicit
* feat(config): materialize legacy agent roles
* fix(cron): migrate legacy owners at startup
* feat(gateway): expose agent selection contracts
* fix(gateway): enforce agent-scoped authorization
* docs(config): document explicit agent ownership
* fix(config): pin retained owner workspace
* fix(gateway): target hook wakes at effective agent
* fix(sessions): preserve fixed-store ownership
* fix: preserve retained agent ownership
* fix: preserve legacy agent ownership across runtime surfaces
* fix: fail closed on ambiguous session ownership
* fix: preserve compatibility owners across dispatch and writes
* fix: preserve retained agent projections
* fix: preserve agent ownership compatibility
* fix: preserve per-agent heartbeat guidance
* fix: preserve compatibility owners in generic paths
* fix: enforce configured ownership in session paths
* fix: defer remote roster selection
* fix: preserve ownership across session and config writes
* fix: fail closed on ambiguous restored ownership
* fix: preserve explicit ACP and legacy ownership
* fix: honor durable fixed-store ownership
* fix: enforce fixed-store owner authority
* fix: preserve ownership evidence boundaries
* fix: honor resolved session ownership
* fix: align compatibility ownership paths
* fix: persist legacy main store ownership
* fix: close ownership fallback gaps
* fix(agents): close retained owner compatibility gaps
* fix(agents): enforce session owner resolution
* fix(agents): complete session owner resolution sweep
* fix(agents): preserve durable session ownership
* fix: complete persisted session owner routing
* fix: thread prepared session owners
* fix: preserve stable session ownership
* fix: enforce session ownership boundaries
* fix: close session ownership delta gaps
* fix: reconcile session ownership after rebase
* fix: reconcile ownership with current main
* fix: align session store path imports
* fix: align session store config path import
* fix: reconcile explicit ownership CI
* fix: reconcile ownership rebase checks
* fix: align ownership ci contracts
* fix: align ownership rebase checks
* fix: preserve compatibility owner during setup
* fix(doctor): migrate ownerless heartbeat monitors
* fix(gateway): preserve explicit session ownership
* test: align ownership fixtures after rebase
* test: complete plugin manifest fixture
* test: align runtime context mocks
* fix(gateway): preserve alias routing for existing sessions
* style: format agent routing update
* fix(gateway): preserve selected owner during alias routing
* style: normalize rebased ownership files
* fix(gateway): preserve owner through global alias routing
* fix(gateway): preserve explicit ownership at HTTP boundaries
* fix(gateway): validate compatibility model ownership
* fix(agents): reconcile strict session ownership
* fix(agents): contain media yield callback failures
* fix(agents): avoid eager bare-key owner resolution
* chore: refresh rebased ownership baselines
* chore: align hosted plugin SDK baseline
* chore: refresh ownership baselines after main sync
* chore: refresh ownership baselines after main sync
* test: align routed event owner fixtures
* chore: retrigger CI after runner startup failure
* chore: refresh ownership SDK budgets after main sync
* fix(tasks): require agent identity for bare owners
* chore: align Linux plugin SDK baseline
* chore: remove release-owned changelog entry
2026-08-12 15:55:16 -07:00
Vincent Koc
aa52ebaef3
fix(test): serialize default e2e runner ( #122203 )
...
* fix(test): serialize default e2e runner
* docs(test): document serial e2e default
2026-08-12 05:01:04 +08:00
Peter Steinberger
8c567306ba
fix(openai): remove duplicate GPT-5.6 picker entry ( #122178 )
...
* fix(openai): remove duplicate GPT-5.6 picker entry
* test(gateway): split OpenAI model picker coverage
* test(openai): align canonical model fixtures
* chore(plugin-sdk): refresh agent harness API baseline
2026-08-11 12:29:36 -07:00
Peter Steinberger
a0ad38e71a
feat(docs-ci): validate docs config examples against the schema ( #121336 )
...
* feat(docs-ci): validate config examples against schema
* docs: teach canonical agent roster configuration
* docs: nest inline environment variables under vars
* docs: update canonical media model keys
* docs: remove retired config keys from examples
* fix(docs-ci): keep audit internals private
* feat(docs-ci): validate plugin-owned config examples
* fix(docs-ci): validate indented config fences
* fix(ci): route manifest changes through docs audit
* chore(docs): refresh generated config baselines
2026-08-10 07:57:56 -07:00
Vincent Koc
1f591bba56
fix(release): bound validation retries and soak
2026-08-10 22:31:32 +08:00
Peter Steinberger
914f73ac99
docs: replace retired config keys with canonical schema keys ( #121330 )
2026-08-09 20:30:43 -07:00
Peter Steinberger
c70aee247e
refactor(scripts): migrate JavaScript tools to TypeScript ( #121005 )
...
* refactor(scripts): migrate JavaScript tools to TypeScript
* fix(ci): keep changed-scope preflight zero-install
* fix(ci): preserve zero-install script owners
* fix(ci): complete script migration follow-through
* fix(release): keep stable closeout zero-install
* fix(scripts): preserve standalone execution boundaries
* fix(scripts): repair standalone loader boundaries
* fix(scripts): normalize gateway observation ids
* fix(scripts): keep Docker packager standalone
* test(scripts): preserve rebase cleanup helpers
* test(sessions): use tracked temp directory
2026-08-09 07:21:35 -07:00
Dallin Romney
33ea7ffa54
fix(ci): isolate package Telegram QA harness ( #120193 )
...
* fix(qa): isolate package Telegram harness
Keep private QA source, dependencies, taxonomy, and SDK dist in the trusted harness while the installed candidate owns its CLI, Gateway runtime, and persisted mock auth. Preserve the documented package RTT canary after taxonomy selection.
Co-authored-by: Dallin Romney <dallinromney@gmail.com >
Co-authored-by: Vincent Koc <vincentkoc@ieee.org >
* fix(qa): export private QA harness SDK entries
Canonicalize the QA-only plugin SDK entries shared by the private build and package Telegram harness manifest so qa-runtime and qa-lab resolve from trusted dist.
* fix(qa): expose private runtime to package harness
* fix(qa): surface Telegram observer conflicts
* fix(qa): accept separate preview and final messages
* test(qa): exercise Telegram poll delay contract
---------
Co-authored-by: Peter Steinberger <steipete@gmail.com >
Co-authored-by: Vincent Koc <vincentkoc@ieee.org >
2026-08-08 15:11:03 -07:00
Peter Steinberger
47f78a32eb
fix(ai): preserve long Responses sessions after server compaction ( #120457 )
...
* fix(ai): preserve Responses server compaction state
Persist opaque Responses compaction items as fenced provider replay state so long stateless sessions can resume authoritative compressed history without exposing it in display or diagnostics. Carry state through worker transcripts and prune replay prefixes without splitting tool pairs.
Release note: Preserve long OpenAI Responses sessions across server-side compaction and worker restarts.
Related: #95788
* test(ai): align long-context fixtures with CI contracts
Make tool-result fixtures type-complete, use the canonical model selector helper, remove unused test-helper exports, and route the paid long-context live probe through the dedicated Gateway profile shard.
* test(ai): type mocked Responses terminal events
Give the mock SSE event collection an explicit open event shape so terminal response events coexist with output-item events under the root test typecheck.
* fix(ai): suppress rejected compaction replay
Persist a route-fenced suppression tombstone when encrypted-content recovery rejects a compaction item, so later turns do not retry the same opaque state. Preserve the tombstone through transcript redaction and cover successful fallback followed by the next turn.
* fix(ai): keep compaction suppression transport-private
Keep the suppression contract local to its sole Responses transport owner and make the regression fixture satisfy root type and lint checks without widening the Plugin SDK surface.
* refactor(ai): remove compaction suppression re-export
* fix(ai): scope compaction suppression to replay route
Keep foreign-route rejection tombstones from hiding the newest compatible Responses compaction while preserving same-route suppression.
* fix(ai): harden Responses replay recovery
Stage encrypted replay recovery so compaction is only suppressed after an attributable rejection. Preserve terminal ordering and keep provider replay within worker frame budgets without truncating opaque state.
* refactor(ai): centralize Responses output indexes
Keep normalized output identity tracking in the stream-slot owner, move response failure state to its diagnostic owner, and remove the obsolete replay clone export so exact-head static gates remain shrink-only.
* fix(ai): retain idless terminal tool identity
Use the canonical empty identity only when a provider supplies neither call nor item id, preventing terminal recovery from duplicating a done-only tool call while preserving stronger identities when available.
* fix(sessions): hide provider replay from public events
* fix(ai): stage encrypted replay recovery
* fix(ai): keep replay attempt kind internal
* fix(ai): route Azure through replay recovery
Use the shared encrypted-content retry owner for Azure Responses so compaction suppression and prompt-observer variants stay coherent across transports.
* fix(ai): harden replay persistence boundaries
Fence Azure replay by the resolved request endpoint, drop invalid replay during transcript sanitization, and surface worker-launch replay omissions through the existing redacted diagnostic path.
2026-08-08 11:55:26 -07:00
Peter Steinberger
dcb125d202
fix: remove retired insecure auth guidance ( #120295 )
2026-08-07 09:45:48 -07:00
Sally O'Malley
4cbbfc2159
fix(systemd): apply dotenv changes on gateway restart ( #119441 )
...
* fix(systemd): load state dotenv at gateway startup
Signed-off-by: sallyom <somalley@redhat.com >
* fix(systemd): refresh managed dotenv values on restart
Signed-off-by: sallyom <somalley@redhat.com >
* fix(gateway): clear removed managed dotenv values
Signed-off-by: sallyom <somalley@redhat.com >
* fix(dotenv): canonicalize managed override keys
Signed-off-by: sallyom <somalley@redhat.com >
* fix(secrets): preserve providerless env refs
Signed-off-by: sallyom <somalley@redhat.com >
---------
Signed-off-by: sallyom <somalley@redhat.com >
2026-08-07 10:04:04 -04:00
Vito Cappello
5621979a46
fix(models): preserve session selection across fallback turns ( #119325 )
...
* feat(models): add session-only model selection
* fix(models): use trailing session scope option
* test(models): satisfy session scope lint
* fix(models): reject duplicate model options
* fix(models): clarify default and session scope
* fix(models): require complete session option tokens
* fix(models): report configured default dispatch
* fix(models): keep directive handler within lint limit
* fix(models): parse model options in either order
* fix(models): apply session scope to aliases
* fix(models): align alias scope with reply routing
* fix(discord): surface model selection scope in picker
* fix(models): preserve mixed-text model selection
* fix(models): centralize command selection ownership
* fix(models): align session scope lifecycle
* fix(models): preserve command and auth ownership
* fixup! fix(models): preserve command and auth ownership
* fix(auth): preserve scoped CLI provider discovery
* test(models): align result and cron fixtures
* test(models): nest result timing metadata
* fix(discord): narrow silent dispatch results
* fix(transcript): preserve admitted turn identity
* fix(context-engine): fence the admitted transcript turn
* fix(context-engine): stabilize plugin compatibility contract
* chore(plugin-sdk): refresh context engine API baseline
* chore(plugin-sdk): use Linux context engine API baseline
* fix(context-engine): align fallback ownership
* fix(fallback): scope auth skip cache by profile
* fix(context-engine): settle only accepted fallback turns
* refactor(sessions): issue canonical turn admissions
* refactor(context-engine): own logical turn advancement
* fix(context-engine): settle cron fallback winners
* fix(models): align picker and fallback transactions
* fix(delivery): notify block admission after queueing
* fix(sessions): preserve canonical admission receipts
* chore(plugin-sdk): refresh API baseline hash
* fix(context-engine): commit accepted turns durably
* fix(context-engine): validate durable host transitions
* fix(context-engine): preserve fallback turn ownership
* fix(context-engine): preserve queued turn order
* fix(models): preserve fallback retry ownership
* fix(context-engine): enforce durable transcript anchors
* fix(runtime): close fallback persistence gaps
* fix(context-engine): preflight fallback harnesses
* chore(plugin-sdk): use Linux API baseline
* fix(context-engine): drain durable commits before reads
* fix(models): scope harness auth failures by profile
* fix(codex): fence legacy transcript history
* fix(commands): honor suppressed directive interpretation
* chore(runtime): remove unused branch exports
* test(context-engine): derive private outbox payload type
* fix(context-engine): apply durable drain degradation
* fix(context-engine): recover durable turn intents
* fix(context-engine): settle durable turn intents
* refactor(context-engine): satisfy branch quality gates
* fix(context-engine): close durable recovery gaps
* fix(discord): preserve dropped model command outcome
* test(copilot): keep journal fixture types local
* fix(auto-reply): preserve model alias provenance
* fix: close model scope review gaps
* fix(models): close review-found scope leaks
* fix(review): satisfy branch line budgets
* fix(agents): preserve context engine turn facts
* fix(agents): finalize silent context turns
* fix(context-engine): preserve compatibility window
* test(agents): cover both harness preparations
* fix(context-engine): retain blocked turn advancements
* fix(models): parse compact runtime options
* fix(telegram): report runtime resets accurately
* fix(models): isolate automatic auth failure skips
* fix(context-engine): project commit turn host params
---------
Co-authored-by: VACInc <3279061+VACInc@users.noreply.github.com >
Co-authored-by: Vincent Koc <vincentkoc@ieee.org >
2026-08-07 16:19:12 +08:00
Vincent Koc
2844876be3
fix(google): align unsupported CLI auth paths ( #118034 )
2026-08-03 00:13:19 +08:00
Sasan
6938f7dddb
fix: allow gateway service commands for named profiles ( #116314 )
...
* fix: gateway service commands refuse a named profile or relocated OPENCLAW_HOME
- Resolve the default install identity against the canonical state directory
for the active OpenClaw home and profile instead of the unprofiled OS
account default.
- `--profile <name>` / `--dev` project `.openclaw-<profile>` state and config
paths, so every named profile was classified as isolated state and refused
`install`, `start`, `stop`, `restart`, `uninstall`, Doctor service repair,
and self-update service handling.
- `OPENCLAW_HOME` relocates all OpenClaw path defaults and is documented for
running as a dedicated service user; a relocated home is now an install
identity. `HOME` alone still is not.
- An `OPENCLAW_STATE_DIR` or `OPENCLAW_CONFIG_PATH` pointing outside those
canonical paths is still treated as isolated state.
- Recovery guidance in the refusal message now names the paths that must match.
Verified: focused vitest shards for the changed suites plus the daemon, CLI,
and doctor suites that consume the identity check; tsgo core and core-test
lanes; oxlint; docs format, MDX, link, and map checks.
* fix(gateway): keep relocated homes isolated
* fix(config): validate service profile identity
* fix(daemon): enforce named-profile service ownership
* fix(update): reject drifted service selectors before probes
* test(windows): prove scheduled task lifecycle
* test(windows): harden scheduled task proof cleanup
* test(windows): bind lifecycle proof to checkout
* test(windows): normalize cleanup exit status
* test(windows): verify effective task privilege
* test(windows): protect scheduled task proof roots
* test(windows): prove listener-owned task lifecycle
* test(windows): fix scheduled task proof contracts
* test(windows): remove redundant mock coercions
* test(windows): measure fallback before task probes
* test(windows): prove scheduled task process origin
* fix(gateway): preserve unmanaged restart fallback
* test(gateway): cover denied restart ownership
* test(gateway): keep restart helper types private
* test(gateway): classify lifecycle helpers as test code
---------
Co-authored-by: Vincent Koc <vincentkoc@ieee.org >
2026-08-01 11:28:39 +08:00
Koduri Mahesh Bhushan Chowdary
9878bfc8e5
docs: drop retired gateway.reload keys and modes from config docs ( #116975 )
...
The gateway.reload documentation advertised four settings the shipped
build rejects. gateway.reload is a strictObject accepting only `mode`,
and `mode` is a union of "off" | "hybrid", so a config written from the
docs fails validation and the gateway fails closed on the unknown keys.
Retired but still documented:
- `debounceMs` and `deferralTimeoutMs` (RETIRED_TUNING_PATHS; stripped by
`openclaw doctor --fix` via stripRetiredTuningKnobs)
- `mode: "restart"` and `mode: "hot"` (mapped to "hybrid" by
`openclaw doctor --fix`)
Correct all four docs pages that still describe them, and say what
replaced them: debounce and active-work deferral now run behind built-in
defaults rather than config keys.
Refs #116973
2026-07-31 15:35:16 -07:00
Vincent Koc
61fb29e90a
feat(plugins): externalize OpenCode Go provider ( #117064 )
2026-08-01 06:31:19 +08:00
Vincent Koc
a4faeae9df
Merge pull request #101358 from mrunalp/podman-sandbox-backend
...
Add Podman sandbox backend
2026-08-01 00:00:18 +08:00
Vincent Koc
a1026663ae
feat(plugins): externalize ComfyUI provider ( #116888 )
2026-07-31 23:26:51 +08:00
sallyom
4ba02b83e8
refactor(sandbox): share container backend with Podman
...
Signed-off-by: sallyom <somalley@redhat.com >
2026-07-31 00:06:33 -04:00
Vincent Koc
9e965073e5
Merge remote-tracking branch 'origin/main' into experiment/google-cli-supported-paths
...
* origin/main: (168 commits)
fix(plugins): keep registry sqlite root consistent (#116427 )
fix(cli): keep Gateway auth failures parseable in JSON (#116597 )
fix(trajectory): preserve prompts in oversized events (#116220 )
test(buzz): add live QA Lab channel lane (#116298 )
chore(i18n): refresh native locales (#116567 )
feat: add OpenClaw TUI prototype skill (#116583 )
fix(update): accept concrete versions selected by ranges (#116585 )
fix(agents): preserve locked session model routes
test(qa-lab): preserve Matrix fault proxy identity
fix(ci): extend OpenAI live profile setup budget (#116580 )
fix: prevent configured models from stalling startup (#116553 )
fix(cli): close MCP listener after one-shot commands
fix(auto-reply): keep explicit NO_REPLY silent (#116548 )
test(discord): cover deferred backpressure terminals
fix(discord): cancel backpressured realtime playback
test(discord): cover realtime output backpressure
fix(codex): add remote WebSocket heartbeat and reconnect (#116135 )
fix(macos): wait for the current reconnect snapshot (#116550 )
fix(outbound): recognize current-source message-tool sends (#116560 )
fix(voice-call): type cancelled consult outcomes
...
# Conflicts:
# extensions/google/setup-api.test.ts
# ui/src/e2e/model-setup.e2e.test.ts
2026-07-31 09:30:03 +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
d540255ce7
docs(google): document supported auth paths
2026-07-30 22:56:26 +08:00
Omar Shahine
944cf08f94
docs(automation): rename scheduled-tasks feature wording to Automations ( #114855 )
...
* docs(automation): rename scheduled-tasks feature wording to Automations
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com >
Claude-Session: https://claude.ai/code/session_01WhJ8EiMXue6ADLmHfb7FL6
* docs: regenerate docs map and add Automations glossary entries
* docs(templates): follow renamed automations-vs-heartbeat anchor
* docs(automation): fix markdown formatting drift
* docs(automation): teach the canonical automations tool and sync the copied heartbeat default
Review follow-ups: normal instructions use the automations tool with cron as
an explicit compatibility alias; every verbatim copy of the default heartbeat
prompt matches the new shipped text from the strings PR.
---------
Co-authored-by: Omar Shahine <10343873+omarshahine@users.noreply.github.com >
Co-authored-by: Claude Fable 5 <noreply@anthropic.com >
2026-07-30 07:21:56 -07:00
Dallin Romney
f027d7bcf6
refactor(qa): make Matrix sharding execution-owned ( #115589 )
...
* refactor(qa): make sharding execution-owned
* test(qa): simplify transport selection coverage
2026-07-29 15:23:37 +08:00
Vincent Koc
0f41b401fd
docs(browser): correct Docker sandbox setup ( #115254 )
2026-07-28 23:18:40 +08:00
Dallin Romney
9feb6ad161
refactor(qa): make scenario selection taxonomy-owned ( #114055 )
...
* refactor(qa): remove scenario execution profiles
* fix(qa): preserve smoke CI membership
* test(qa): drop redundant smoke pack order check
* refactor(qa): remove Matrix runner profiles
* refactor(qa): simplify Matrix CI orchestration
* refactor(qa): derive execution sets from taxonomy
* fix(qa): keep Matrix shard helper private
* refactor(qa): derive profile scenarios from taxonomy
* refactor(qa): reconcile taxonomy selection
* refactor(qa): use canonical profile planning
* refactor(qa): select canonical coverage owners
* fix(qa): keep profile selector internal
* refactor(qa): remove representative coverage owners
2026-07-28 22:23:41 +08:00
Peter Steinberger
fd0fdcc458
chore(docs): audit external links without gating PRs ( #114643 )
...
* docs: repair audited external links
* ci(docs): add advisory external link audit
2026-07-27 14:02:09 -04:00
Peter Steinberger
abfe7c64a7
docs(install): recommend Node 26 as the OpenClaw runtime ( #114399 )
...
* docs(install): recommend Node 26; CI/installer stay on Node 24 for now
* feat(cli): point unsupported-runtime nvm hint at Node 26
* feat(install): provision Node 26 by default (brew mainline node formula, NodeSource 26.x, portable win zip)
* test(install): align installer tests with Node 26 provisioning defaults
* docs(install): state per-platform Node provisioning accurately
2026-07-27 04:32:21 -04:00
Peter Steinberger
669db2968f
refactor(agents): retire TOOLS.md into an AGENTS.md section with a doctor migration ( #113966 )
...
* fix(agents): stop retired attestation hashes from faking a vanished workspace
* feat(agents): migrate TOOLS.md content into the AGENTS.md tools section
* refactor(agents): drop TOOLS.md from the workspace bootstrap set
* refactor(policy): read tool policy entries from AGENTS.md
* docs: describe local tool notes as an AGENTS.md section
* test(codex): drop TOOLS.md developer-instruction coverage with the removed path
* test(agents): cover the TOOLS.md doctor migration behaviors
* refactor(doctor): satisfy TOOLS.md migration lint
* test(agents): split workspace attestation survival coverage
* refactor(codex): simplify workspace context basenames
* refactor(doctor): keep TOOLS.md migration helpers module-local
* docs: regenerate docs map
* fix(doctor): keep migration claims fresh
* fix(doctor): preserve nested tool notes
* refactor(doctor): split tools migration helpers
* refactor(doctor): limit TOOLS.md migration to workspace root
* style(doctor): keep migration under line limit
* fix(doctor): recover interrupted AGENTS publish
* docs(hooks): describe root-only TOOLS.md migration accurately
* fix(doctor): preserve migrated tool guidance visibility
* test(agents): regenerate prompt snapshots after rebase
* fix(policy): block evaluation while TOOLS.md is unmigrated
* fix(doctor): check merged bootstrap budget per agent
* fix(doctor): keep budget helper internal
* refactor(doctor): keep migration budget helpers to their consumers
2026-07-27 03:56:30 -04:00
Peter Steinberger
3a4f337802
fix(gateway): connect first-boot loopback agents after readiness ( #114380 )
...
* fix(gateway): pair local CLI before runtime-token readiness
* docs(gateway): explain first-boot loopback CLI auth
* fix(gateway): keep startup pairing result internal
* chore(gateway): leave release note to release process
2026-07-27 03:15:12 -04:00
Peter Steinberger
f43fac21c7
fix(gateway): stop showing retired HEARTBEAT.md in the agent files editor ( #113621 )
...
* fix(gateway): drop retired HEARTBEAT.md from agent core files
* fix(ci): stop asserting retired HEARTBEAT.md in docker release smoke
* docs: align HEARTBEAT.md references with cron scratch
* docs(agents): drop retired HEARTBEAT.md from workspace read comment
2026-07-25 04:58:31 -07:00
Peter Steinberger
5bea268128
feat(anthropic): complete Claude Opus 5 rollout ( #113392 )
...
* feat(models): add Claude Opus 5 support
* test(models): align Opus 5 setup fixtures
* test(models): update ambient Opus 5 detection
* fix(models): reconcile Opus 5 support with main
2026-07-24 14:55:36 -07:00
Peter Steinberger
b23c7bd0f8
feat(cron): convert heartbeat tasks: entries into independent cron jobs ( #113165 )
...
Each legacy heartbeat tasks: entry becomes an editable system-created cron
job (declaration key heartbeat-task:<agentId>:<hash>, per-occurrence
identity for duplicate names) that fires a guarded heartbeat wake carrying
the task prompt plus current monitor scratch context. Task cadence is now
independent of the base heartbeat interval; active-hours, busy-retry,
min-spacing, and flood guards are preserved, deferred payload-carrying
wakes are retained and retried after the spacing floor, and colliding
task/event wakes cannot starve each other.
openclaw doctor --fix migrates existing blocks: async parse/plan, then one
synchronous SQLite transaction that rereads the pinned scratch revision,
upserts job rows, and strips the tasks: block atomically — concurrent
doctors serialize on the database and a losing run aborts untouched.
Orphan fields, invalid intervals, and incomplete entries block migration
of their block with a clear finding instead of silent text loss. The
runtime tasks: parser is deleted; leftover text is ordinary scratch prose.
Nine Codex gpt-5.6-sol xhigh autoreview cycles; final verdict clean.
2026-07-23 16:13:08 -07:00
Peter Steinberger
9f13f9b140
feat(openai): make million-token context an explicit opt-in ( #112916 )
...
* feat(openai): add safe long-context opt-in
* fix(ci): keep long-context checks within gates
* fix(ci): keep Codex usage helpers internal
2026-07-23 05:34:54 -04:00
Peter Steinberger
f5562748de
fix(logging): give non-default profiles their own gateway log file ( #112777 )
...
* fix(logging): give non-default profiles their own gateway log file
* chore: defer profile log release note
2026-07-22 19:08:41 -04:00
Peter Steinberger
edecdbd05e
refactor(config): config-surface reduction tranche 3 — product consolidations (review request) ( #111527 )
...
* refactor(config): consolidate media model lists
* refactor(config): unify memory configuration
* refactor(config): consolidate TTS ownership
* refactor(config): move typing policy to agents
* refactor(config): retire product-level config surfaces
* refactor(config): share scoped tool policy type
* chore(config): refresh generated baselines
* fix(config): honor agent typing overrides
* fix(config): migrate sibling config consumers
* refactor(infra): keep base64url decoder private
* fix(config): strip invalid legacy TTS values
* chore(config): refresh rebased baseline hash
* fix(doctor): route legacy messages.tts.realtime voice to talk during tts move
* refactor(config): polish final layout names
* refactor(config): freeze retired tuning defaults
* feat(config): add fast mode default symmetry
* refactor(config): key agent entries by id
* docs(config): update final layout reference
* test(config): cover final layout migrations
* chore(config): refresh final layout baselines
* fix(config): align final layout runtime readers
* fix(config): align remaining readers
* fix(config): stabilize final layout migrations
* fix(config): finalize config projection proof
* fix(config): address final layout review
* docs(release): preserve historical config names
* fix(config): complete keyed agent migration
* fix(config): close final migration gaps
* fix(config): finish full-branch review
* fix(config): complete runtime secret detection
* fix(config): close final review findings
* fix(config): finish canonical docs and heartbeat migration
* fix(config): integrate latest main after rebase
* refactor(env): isolate test-only controls
* refactor(env): isolate build and development controls
* refactor(env): collapse process identity indirection
* refactor(env): remove duplicate config and temp aliases
* docs(env): define the operator-facing allowlist
* ci(env): ratchet production variable count
* fix(env): remove stale provider helper import
* fix(env): make ratchet sorting explicit
* test(env): keep test seam in dead-code audit
* test(env): cover ratchet growth and boundary; document surface budgets
* docs(config): document tier-eval consolidations
* docs(config): clarify speech preference ownership
* test(memory): align retired tuning fixtures
* refactor(memory): freeze engine heuristics
* refactor(config): apply tier-eval tranche
* refactor(tts): move persona shaping to providers
* refactor(compaction): move prompt policy to providers
* test(config): align hookified prompt fixtures
* chore(deadcode): classify test-only exports
* chore(github): remove unused spawn helper
* chore(deadcode): classify queue diagnostics
* chore(deadcode): remove unused lane snapshot export
* chore(plugin-sdk): ratchet consolidated surface
* fix(config): integrate latest main after rebase
2026-07-21 20:28:43 -07:00
Peter Steinberger
2bb6b870aa
fix: preserve Codex-bound conversation history across session rotation ( #112016 )
...
* fix: preserve Codex conversation bindings
* test: harden Codex live gateway stress
* chore: refresh plugin SDK API baseline
* test: tighten restart recovery fixtures
* test: complete restart recovery recorder fixture
* fix: keep plugin command authorization fail closed
* fix: restore private queue source imports
* fix: keep private SDK imports inside core
* fix: keep speech core on private SDK paths
* fix: stage private SDK exports for live tests
* fix: preserve plugin-bound gateway history
* fix: block transcript writes after binding races
* test: complete live stage helper contracts
* test: align binding mocks with current types
* fix: preserve compiler OOM diagnostics
* chore: move release notes to PR context
2026-07-20 19:42:56 -07:00
Peter Steinberger
b61619e03c
fix(gateway): dev mode suppresses ambient channel env auto-configuration ( #112011 )
...
Channel plugins declare package env triggers in manifests, and ambient
environment variables count as "channel configured". A dev gateway
(gateway run --dev) inherits the operator's shell, so real channel
credentials silently configured channels and could connect development
instances to live services (observed with reef and a Telegram-range
connection during isolated stress testing).
Dev mode now drops presence signals whose only sources are env or
manifest-env across activation planning, auto-enable, autostart, health
recovery, readiness, reloads, and startup warnings. Explicit
channels.<id> config still works, --dev-ambient-channels restores the
old behavior, and startup logs the suppressed channel ids once. Non-dev
gateways are unchanged.
2026-07-20 19:28:07 -07:00
Peter Steinberger
783a5d21cf
refactor(config): purge numeric tuning knobs behind built-in defaults ( #111382 )
2026-07-19 07:35:45 -07:00
Peter Steinberger
e23dde3de5
feat: disable automatic session resets by default ( #111140 )
...
* feat(config): disable automatic session resets by default
* fix(sessions): honor pending reset tombstones
* test(sessions): align reset coverage with disabled default
* fix(sessions): preserve explicit reset override fallback
* fix(sessions): inherit active mode in partial type resets
2026-07-18 21:50:48 -07:00
Peter Steinberger
09a64f7ab0
feat(models): make per-agent allowlists explicit ( #110888 )
2026-07-18 21:42:05 +01:00
Peter Steinberger
f14947d256
fix(codex): persist automatic compaction history ( #110587 )
...
* fix(codex): persist automatic compaction counts
* test(codex): stress compaction and restart recovery
* test(codex): bind compaction waves to fresh counts
* chore: keep Codex release note in PR
2026-07-18 10:37:25 +01:00
Peter Steinberger
b5fb47e283
test(codex): stress resume across gateway restarts ( #110486 )
2026-07-18 07:50:17 +01:00
Peter Steinberger
2ca4d92f1a
docs: live-test gateway isolation policy (session-owned dev gateway, operator approval for real instances)
2026-07-17 17:55:33 -07:00
Peter Steinberger
b0a2d02427
fix(ci): make plugin SDK API manifest mergeable ( #110228 )
2026-07-18 00:16:39 +01:00
Peter Steinberger
349f78776d
fix(models): refresh bundled provider catalogs ( #109410 )
...
* fix(models): refresh bundled provider catalogs
* docs(models): refresh generated docs map
* fix(xiaomi): keep provider helper private
* chore(release): defer catalog release note
2026-07-16 16:47:25 -07:00
NianJiu
42ff5ec754
feat(kimi): add Kimi K3 support ( #109202 )
...
* feat(moonshot): add Kimi K3 support
* feat(kimi): add K3 subscription models
---------
Co-authored-by: NianJiuZst <180004567+NianJiuZst@users.noreply.github.com >
Co-authored-by: Peter Steinberger <steipete@gmail.com >
2026-07-16 11:41:12 -07:00
Peter Steinberger
4432016f7f
refactor: prune redundant OpenClaw env controls ( #109211 )
...
* refactor: prune redundant OpenClaw env controls
* docs: refresh environment reference map
2026-07-16 10:06:39 -07:00
Peter Steinberger
46c3dba537
chore: gate releases on Codex progress follow-through ( #108828 )
...
* test(release): gate Codex progress follow-through
* test(release): register Codex follow-through entry
* test(release): harden Codex follow-through proof
* test(release): preserve legacy Codex follow-through proof
2026-07-16 09:01:00 -07:00
Peter Steinberger
a7d5386896
improve: speed up ring-zero QA smoke ( #108694 )
...
* ci: speed up ring-zero QA smoke
* ci: scope QA sticky cache to Docker lane
* ci: keep QA dependency setup on actions cache
* test: restore modern Docker QA proof
2026-07-16 01:12:40 -07:00