Commit Graph

27668 Commits

Author SHA1 Message Date
Peter Steinberger
58f4099a4f refactor: share plugin runtime load context 2026-04-06 15:26:32 +01:00
Gustavo Madeira Santana
9568cceee3 docs: clarify Matrix invite and config guidance 2026-04-06 10:25:47 -04:00
Vincent Koc
01f3959a60 refactor(plugins): share extension oxlint runner 2026-04-06 15:25:34 +01:00
Peter Steinberger
3599ab2e56 fix(agents): honor verbose defaults and trim process setup 2026-04-06 15:24:59 +01:00
Peter Steinberger
cd5b1653f6 feat: declare explicit media provider capabilities 2026-04-06 15:24:38 +01:00
Peter Steinberger
29df67c491 test(acp): prove lazy reset re-ensures bound sessions 2026-04-06 15:24:16 +01:00
Onur
b34fa9c868 ACP: reset bound sessions lazily 2026-04-06 15:24:16 +01:00
Vincent Koc
d3a35d7e95 ci(plugins): add bundled extension lint lane 2026-04-06 15:24:03 +01:00
Peter Steinberger
0337a0d7f8 fix(memory): warn cleanly on degraded vector recall 2026-04-06 15:23:30 +01:00
mainstay22
a224f59fe3 fix(memory): surface warning when sqlite-vec unavailable during index
When chunks_vec cannot be updated (sqlite-vec extension not loaded),
the memory index now emits an error-level warning instead of silently
reporting success.

Before this change: 'Memory index updated (hull).' was emitted even
when the vector index (chunks_vec) was not updated due to sqlite-vec
being unavailable. This masked silent vector recall degradation.

After this change:
- If vector.enabled=true and vector.available=false: emits
  'Memory index WARNING (agentId): chunks_vec not updated — sqlite-vec
  unavailable: <reason>. Vector recall degraded.'
- If vector is healthy: emits normal success message unchanged
- Per-file warning also emitted in writeChunks when chunks are written
  without vector embeddings

Fixes: HELM-0251 (local dist patch — this makes it update-safe)
Related: HELM-0252 (this PR)
2026-04-06 15:23:30 +01:00
Peter Steinberger
987bbe6545 test(browser): assert remote CDP retry timeouts correctly 2026-04-06 15:22:23 +01:00
ThanhNguyxn07
2a1a49bd41 fix(browser): retry remote CDP websocket readiness before failing
Remote browser profiles can pass HTTP reachability while Browser.getVersion on the CDP websocket is still warming up right after restart. Add one retry in ensureBrowserAvailable for remote CDP profiles and cover it with a regression test.

Fixes #57397

Co-authored-by: ThanhNguyxn <thanhnguyentuan2007@gmail.com>
2026-04-06 15:22:23 +01:00
Vincent Koc
620537914b fix(plugins): clean bundled extension lint tail 2026-04-06 15:21:46 +01:00
Peter Steinberger
07b3ee813a fix: clean up rebase follow-up regressions 2026-04-06 15:20:03 +01:00
Peter Steinberger
94b8ab0325 fix: resolve rebase check regressions 2026-04-06 15:20:03 +01:00
Peter Steinberger
8d095147b4 fix: restore check gate 2026-04-06 15:20:03 +01:00
Peter Steinberger
979c81d9dd test(auth): cover readonly runtime auth inheritance 2026-04-06 15:19:34 +01:00
Peter Steinberger
adb750fa63 perf(test): trim secrets runtime snapshot lane 2026-04-06 15:19:34 +01:00
Peter Steinberger
f264c2c7e4 style: format routed command helper 2026-04-06 15:18:55 +01:00
Peter Steinberger
91749930d4 fix: restore check-time path inference 2026-04-06 15:18:55 +01:00
Vincent Koc
da14745f2e fix(check): clean up extension rename fallout 2026-04-06 15:18:24 +01:00
Vincent Koc
e6df924a34 fix(plugins): clean matrix lint types 2026-04-06 15:17:15 +01:00
Peter Steinberger
878c208844 perf(test): restore scoped vitest routing 2026-04-06 15:16:17 +01:00
Vincent Koc
ac6f696baa fix(check): repair typed test and cli drift 2026-04-06 15:14:37 +01:00
Vincent Koc
9502642f47 fix(plugins): clean xai and qqbot lint 2026-04-06 15:14:20 +01:00
biefan
0f075e1b8a fix: restore terminal keyboard state on tui exit (#49130) (thanks @biefan) (#49130)
Co-authored-by: Vincent Koc <vincentkoc@ieee.org>
2026-04-06 15:14:08 +01:00
Peter Steinberger
15114a9279 fix(matrix): preserve multi-paragraph list items 2026-04-06 15:13:16 +01:00
Jakub Rusz
be5eebd3d4 fix(matrix): compact loose list HTML for consistent Element rendering
Loose lists (blank lines between items) produce <li><p>...</p></li> via
markdown-it, causing Element to render list numbers on separate lines
from their content. Fix by setting hidden=true on paragraph tokens
inside list items before rendering, mirroring what markdown-it already
does for tight lists.

Closes #60997. Thanks @gucasbrg.

Co-Authored-By: Claude claude-opus-4-6 <noreply@anthropic.com>
Signed-off-by: Jakub Rusz <jrusz@proton.me>
2026-04-06 15:13:16 +01:00
Peter Steinberger
26a5ab1c6f fix(utils): harden directive block placeholders 2026-04-06 15:11:44 +01:00
szx007
af7c21f207 fix: preserve code block indentation in normalizeDirectiveWhitespace
## Summary

- Problem: `normalizeDirectiveWhitespace` applied whitespace-collapsing regexes globally, including inside fenced code blocks (` ``` ` / `~~~`) and indent-code-blocks (4-space / tab), corrupting indentation in assistant replies that contain code snippets
- Why it matters: Any language where indentation is significant (Python, Go, YAML, etc.) or visually meaningful would render incorrectly after stripping inline directive tags
- What changed: Stash code blocks under a Unicode private-use sentinel (`\uE000`) before normalization, run the existing prose regexes on the masked text, then restore the original blocks verbatim
- What did NOT change: All prose normalization rules are retained as-is (`\r\n`, multi-space collapse, leading blank-line strip, trailing whitespace, 3+ newline fold)

## Change Type

- [x] Bug fix

## Scope

- [ ] Gateway / orchestration

## Root Cause

- Root cause: Prose whitespace regexes were applied to the full text string with no awareness of Markdown code block boundaries
- Missing detection / guardrail: No tests covered indented content inside fenced blocks
- Contributing context: Directive tag stripping (`[[reply_to_current]]`, `[[audio_as_voice]]`) is applied before delivery, making the normalization step a silent corruption point for code-heavy replies

## Regression Test Plan

- Coverage level that should have caught this:
  - [x] Unit test
- Target test or file: `src/utils/directive-tags.test.ts`
- Scenario the test should lock in: `parseInlineDirectives` with fenced/indent code blocks must preserve all leading whitespace inside those blocks
- Why this is the smallest reliable guardrail: Pure function with deterministic string in/out; no mocks needed
- If no new test is added, why not: 7 new unit tests added

## User-visible / Behavior Changes

Code blocks in assistant replies containing `[[reply_to_current]]` or `[[audio_as_voice]]` directives now retain correct indentation after the directive is stripped.

## Security Impact

- New permissions/capabilities? No
- Secrets/tokens handling changed? No
- New/changed network calls? No
- Command/tool execution surface changed? No
- Data access scope changed? No

## Compatibility / Migration

- Backward compatible? Yes
- Config/env changes? No
- Migration needed? No

Co-Authored-By: Codemax <codemax@binance.com>
2026-04-06 15:11:44 +01:00
Vincent Koc
1b309fff71 fix(plugins): clean tlon lint types 2026-04-06 15:08:39 +01:00
Peter Steinberger
04e360e7e8 build(lockfile): sync proxy-agent dependency 2026-04-06 15:06:54 +01:00
Peter Steinberger
c7c0550dc9 fix: seed SSE history state from one snapshot (#61855) (thanks @100yenadmin) 2026-04-06 15:05:33 +01:00
Eva
d519f39c6e fix(gateway): eliminate SSE history double-read race — derive sanitized and raw views from single transcript snapshot 2026-04-06 15:05:33 +01:00
Peter Steinberger
732c18cd06 fix(check): repair latest type drift batch 2026-04-06 15:03:55 +01:00
Peter Steinberger
380a396266 refactor: share ambient proxy agent helpers 2026-04-06 15:03:30 +01:00
ToToKr
2da95ca191 fix(tui): strip inbound metadata from command messages before rendering (#59985) (thanks @MoerAI) (#59985)
Co-authored-by: Vincent Koc <vincentkoc@ieee.org>
2026-04-06 15:02:59 +01:00
Vincent Koc
c9e2fbef92 fix(plugins): clean bundled extension lint batch 2026-04-06 15:01:05 +01:00
Mariano
ebad21c94d plugins: add bundled webhooks TaskFlow bridge (#61892)
Merged via squash.

Prepared head SHA: ca58fb77a8
Co-authored-by: mbelinky <132747814+mbelinky@users.noreply.github.com>
Co-authored-by: mbelinky <132747814+mbelinky@users.noreply.github.com>
Reviewed-by: @mbelinky
2026-04-06 15:59:47 +02:00
Peter Steinberger
f3cc8d12d6 perf: speed up local heavy checks 2026-04-06 14:56:53 +01:00
Peter Steinberger
b16e0df5f8 fix(channels): cover pinned registry helper fallback 2026-04-06 14:56:10 +01:00
王淼0668000666
0b198b8d0b fix(channels): use pinned registry as primary in listRegisteredChannelPluginEntries
Fixes issue #61358 where isGatewayMessageChannel intermittently rejects valid third-party channel plugins (openclaw-weixin, qqbot).

The pinned registry contains authoritative channel configurations for delivery, so it should be checked first before falling back to the active plugin registry.
2026-04-06 14:56:10 +01:00
Peter Steinberger
c817e6d388 fix(check): repair monitor and message tool types 2026-04-06 14:55:01 +01:00
Peter Steinberger
9fa5b413f0 style: fix acpx runtime lint types 2026-04-06 14:53:55 +01:00
Peter Steinberger
bfbe1c149c style: fix preflight test rebase fallout 2026-04-06 14:53:55 +01:00
Peter Steinberger
b3f31dee80 style: resolve lint after rebase 2026-04-06 14:53:55 +01:00
Peter Steinberger
af62a2c2e4 style: fix extension lint violations 2026-04-06 14:53:55 +01:00
Peter Steinberger
e8141716b4 build: lint bundled extensions 2026-04-06 14:53:55 +01:00
Martin Garramon
eede8f945f fix(agents): replace .* with \S* in interpreter heuristic regexes to prevent ReDoS
The inner `.*\s+` in `(?:[A-Za-z_][A-Za-z0-9_]*=.*\s+)*` creates
catastrophic backtracking because both `.*` and `\s+` can match
whitespace. When the exec tool processes commands with `VAR=value`
assignments followed by whitespace-heavy text (e.g. HTML heredocs),
the regex engine hangs permanently at 100% CPU.

Replace `.*` with `\S*` in all three instances. Shell prefix variable
assignments cannot contain unquoted whitespace in the value, so `\S*`
is semantically correct and eliminates the ambiguity.

Fixes #61881
2026-04-06 14:53:44 +01:00
Peter Steinberger
c63a4f0f13 refactor: share assistant visible text sanitizer profiles 2026-04-06 14:52:52 +01:00