Commit Graph

9183 Commits

Author SHA1 Message Date
Peter Steinberger
0d7fbfeee1 build(canvas): refresh A2UI bundle hash 2026-05-09 10:05:07 +01:00
Peter Steinberger
0a960da506 fix(matrix): preserve presentation fallback body 2026-05-09 04:41:45 -04:00
Peter Steinberger
e582cebf2d fix(matrix): wire presentation metadata delivery 2026-05-09 04:41:45 -04:00
kakahu
ad39262604 fix(matrix): avoid explicit undefined reply fanout options 2026-05-09 04:41:45 -04:00
kakahu
4a3abb78eb fix(matrix): consume implicit reply once in payload media fanout 2026-05-09 04:41:45 -04:00
kakahu
4f2c7c7eec Test Matrix presentation metadata schema marker 2026-05-09 04:41:45 -04:00
kakahu
9b912ec70a Harden Matrix presentation metadata schema 2026-05-09 04:41:45 -04:00
OpenClaw Agent
90908cdf71 fix(matrix): preserve payload audioAsVoice in presentation sends 2026-05-09 04:41:45 -04:00
OpenClaw Agent
13cfb846ae test: regression guard — mediaUrls must never be dropped by sendPayload 2026-05-09 04:41:45 -04:00
OpenClaw Agent
d1645c04fd fix: version last in buildMatrixPresentationContent so it always wins 2026-05-09 04:41:45 -04:00
OpenClaw Agent
c5ff4d40ae fix: sendPayload now handles payload.mediaUrls (iterate all items, extraContent only on first) 2026-05-09 04:41:45 -04:00
OpenClaw Agent
ada2ff35c0 fix: test type error (await renderPresentation) and lint (remove ?? {} in spread) 2026-05-09 04:41:45 -04:00
OpenClaw Agent
2f826ce188 feat(matrix): expose MessagePresentation metadata in Matrix events 2026-05-09 04:41:45 -04:00
Peter Steinberger
21970c9ac9 fix(openai): log realtime voice interruptions 2026-05-09 09:36:09 +01:00
Peter Steinberger
ba2b033774 fix(plugin-sdk): parse harmony text tool calls 2026-05-09 09:25:19 +01:00
Peter Steinberger
a436547642 test: tighten discord proxy abort assertions 2026-05-09 09:24:45 +01:00
Peter Steinberger
b62166301e fix: annotate message-tool-only replies in Codex tool spec
Thread sourceReplyDeliveryMode into Codex/OpenClaw tool construction and annotate the message tool description for message-tool-only turns so visible replies use message(action=send).\n\nAlso adds focused regression coverage and a changelog entry.
2026-05-09 04:24:40 -04:00
Peter Steinberger
308006ad5e test: tighten voice-call config assertions 2026-05-09 09:20:41 +01:00
Peter Steinberger
14ce958eaf test: tighten deepinfra onboard assertions 2026-05-09 09:18:58 +01:00
Peter Steinberger
7541b8f4b6 fix: harden openai realtime response create 2026-05-09 09:18:04 +01:00
Peter Steinberger
3b0dafae1e test: tighten deepinfra model discovery assertions 2026-05-09 09:17:27 +01:00
Peter Steinberger
2c4ec93245 test: tighten deepinfra image assertions 2026-05-09 09:15:52 +01:00
Peter Steinberger
918ba58fe9 test: tighten deepinfra video assertions 2026-05-09 09:14:08 +01:00
Peter Steinberger
d3ac73c55a test: tighten deepinfra speech request assertions 2026-05-09 09:12:30 +01:00
Peter Steinberger
03b067ed8b test: tighten deepinfra embedding adapter assertions 2026-05-09 09:11:00 +01:00
Peter Steinberger
67b844860f test: tighten deepinfra media assertions 2026-05-09 09:08:56 +01:00
Peter Steinberger
fe9a89a2d2 fix: interrupt active discord realtime voice 2026-05-09 08:51:41 +01:00
Peter Steinberger
c605a0e6e8 test: tighten telephony tts override assertion 2026-05-09 08:41:53 +01:00
Peter Steinberger
17f03566d8 test: tighten irc setup config assertions 2026-05-09 08:33:03 +01:00
Peter Steinberger
47bf21a798 test: tighten qianfan provider assertions 2026-05-09 08:12:28 +01:00
Peter Steinberger
9385eaaf88 chore(release): prepare 2026.5.8 2026-05-09 08:05:17 +01:00
Shakker
2e29090c37 test: wire qa channel turn fixture 2026-05-09 08:01:50 +01:00
Shakker
dbb62f21f4 test: isolate ollama discovery catalog cache 2026-05-09 07:55:00 +01:00
Shakker
1d36ab8cb0 test: fix nvidia plugin registration stub 2026-05-09 07:51:46 +01:00
Ruben Cuevas
86c28c84c9 fix(codex): keep native hook relay alive for long turns 2026-05-09 02:47:26 -04:00
Peter Steinberger
311e4608d1 feat: unify model catalog registration 2026-05-09 02:34:56 -04:00
TheArchitectit
80a3d48b99 feat(acpx): support structured agent args
Summary:
- Add optional ACPX agent args config support while preserving command-only configs.
- Quote flattened args before passing the command string to the ACP client so spaces and single quotes preserve argv boundaries.
- Document the config shape and add changelog attribution.

Verification:
- pnpm test extensions/acpx/src/config.test.ts
- pnpm exec oxfmt --check --threads=1 extensions/acpx/src/config.ts extensions/acpx/src/config.test.ts docs/tools/acp-agents-setup.md CHANGELOG.md
- git diff --check
- pnpm check:changed
- isolated openclaw config patch/validate/get real behavior proof for ACPX args.
2026-05-09 01:26:17 -05:00
Shakker
730b0bea71 test: fix discord voice route mock type 2026-05-09 07:24:17 +01:00
Peter Steinberger
2e5ab0ae91 feat: improve discord realtime voice routing 2026-05-09 07:15:40 +01:00
Shakker
56ab8d56ee test: fix message delivery contract assertions 2026-05-09 07:11:22 +01:00
Peter Steinberger
a4b17d65a8 refactor: consolidate message delivery API 2026-05-09 07:04:04 +01:00
Josh Avant
3af81481b4 fix(google): retry stalled Gemini first response (#79668)
* fix(google): retry stalled gemini first response

* docs(changelog): note gemini first-response retry

* fix(google): clear gemini first-response deadline
2026-05-09 00:52:44 -05:00
Peter Steinberger
b972e207cf test: tighten voice continue operation id 2026-05-09 06:51:43 +01:00
Peter Steinberger
9162d547a5 test: tighten voice tailscale spawn assertions 2026-05-09 06:50:17 +01:00
Gio Della-Libera
8f26422840 fix(oc-path): tighten path contracts 2026-05-09 01:48:35 -04:00
Gio Della-Libera
457c29b36a docs(path): scrub references to dropped grammar features 2026-05-09 01:48:35 -04:00
Gio Della-Libera
7ad33c05b1 lint(oc-path): satisfy CI's stricter consistent-return + type-param rules 2026-05-09 01:48:35 -04:00
Gio Della-Libera
080e34a2c2 lint(oc-path): satisfy curly + unused-import rules 2026-05-09 01:48:35 -04:00
Gio Della-Libera
ac9418d206 refactor(oc-path): drop YAGNI grammar features
Removes four path-syntax features that added complexity without
enough real-world use:

- **Quoted-segment escape sequences**: kept quoted segments themselves
  (still needed for keys with `/` or `.`) but dropped `\"` and `\`
  escapes. Quoted content is now byte-literal, refused if it contains
  `"` or `\`. Simplifies scanBracketAware (drops the `escaped` state),
  unquoteSeg (no decode loop), quoteSeg (no escape encoding).

- **CSS-style predicate operators**: removed `*=` (substring), `^=`
  (prefix), `$=` (suffix). Predicate set is now `=`, `!=`, and the
  numeric `<` / `<=` / `>` / `>=`. Lint rules needing substring
  matching can use `findOcPaths(*)` + JS filter.

- **`$first` positional**: alias for index 0 (or first-declared key).
  Use the literal `0` instead.

- **`-N` negative index**: rarely useful beyond `-1`, which is already
  covered by `$last`. The "negative numeric key on object" case
  (Telegram supergroup IDs) still works — non-indexable containers
  fall through to literal-key lookup.

Behavior loss: zero in observed real workspace files. Tests for the
dropped features removed (15 tests).

Net: -22 LoC src + 15 fewer tests. Total package: 10,570 → 10,275 LoC.
2026-05-09 01:48:35 -04:00
Gio Della-Libera
71c855f244 refactor(oc-path): consolidate dispatch and trim comment surface
Substrate simplifications and broad comment cleanup:

**Walker collapse (find.ts)**: three near-parallel walkers
(walkJsonc, walkJsonl + walkJsonlInsideLine, walkMd + walkMdInsideBlock
+ walkMdInsideItem) shared the same segment-shape dispatch — union /
predicate / `*` / `**` / positional / literal — with different child
types. Extracted as a single `dispatchSeg<T>(ops, ...)` that takes a
per-kind `WalkOps<T>` table; each walker is a thin wrapper. The three
md walkers fold into one `walkMd(level, ...)` polymorphic on a
`MdLevel` discriminated union. JSONL routes the post-line-slot
descent through walkJsonc via a WeakMap-tagged ast holder.

**CLI (cli.ts)**: each command duplicated four times the same
try/catch/emit/exit dance — missing-arg check, parseOcPath try/catch,
OcEmitSentinelError catch. Extracted as `requireArg`, `tryParse`,
`catchSentinel`. Folded `RawPathOptions` into `PathCommandOptions`
(identical shape) and collapsed `.option(...)` chains via
`withCommonOpts`.

**universal.ts**: setJsoncLeaf and setJsonlLeaf were near-identical
(resolve, refuse root, coerce, set, wrap). Extracted as
`setStructuredLeaf<A, M>` with optional `onLine` for jsonl's
whole-line replacement. Inlined setMdLeaf (7-line passthrough) into
setOcPath. Dropped four `throw new Error("unreachable")` statements
TS exhaustive checking already covers.

**oc-path.ts**: 35 `throw new OcPathError(...)` sites compress through
a `fail()` helper. File-slot containment check (absolute, parent-dir,
control chars) extracted as `validateFileSlot` so parse + format share
the same defense. Three structural-nesting throws in formatOcPath
collapse into two. Three near-parallel string scanners
(`indexOfTopLevel`, `splitRespectingBrackets`, `validateBrackets`) fold
through one `scanBracketAware(s, onChar, onUnbalanced)` helper.

**jsonl/edit.ts**: pickLineIndex compressed; line-address dispatch
shares the value-line filter as a small helper.

**Internal review codes stripped**: P-NNN, F-NN, I-NN, H2-NN, OP-NN,
R-NN, T-NN, S-NN, BFJ-NN, RJC-NN, RJL-NN, FM-NN, A-NN, B-NN, CC-NN,
wave-NN — these were review-process artifacts (sprint identifiers,
finding IDs, pitfall taxonomy IDs) that mean nothing to a reader who
didn't participate in the originating review. Test names rewritten
human-readable; comments lose their P-NNN bookmarks; describe blocks
drop the wave-NN prefix.

**Pitfalls test consolidated**: `tests/scenarios/pitfalls.test.ts`
(637 LoC, organized by P-NNN) replaced by `security-and-limits.test.ts`
(288 LoC) — unique coverage migrates over with descriptive names;
duplicates of OP-/R-/etc. tests are dropped.

**Comment cleanup**: per CLAUDE.md "default to writing no comments;
add one only when the WHY is non-obvious", trimmed multi-paragraph
WHY-prose on every public export, running prose inside function
bodies that restated what the next line of code said, section-divider
comments in test files, and module-level doc-comments that paraphrased
the file name. Kept load-bearing context: NFC re-check after grow,
quote-aware split symmetry, multi-char operator precedence, sentinel
guard catch routes, WeakMap holder rationale.

**MdAst slimmed**: `tables` and `codeBlocks` fields removed — substrate
addressing doesn't go inside them, and markdown-it's tokenizer
already excludes them from heading/item misparse without
first-class AST modeling.

Net reduction across the 10 consolidation/cleanup commits: ~3,800 LoC.
2026-05-09 01:48:35 -04:00