Commit Graph

23637 Commits

Author SHA1 Message Date
Peter Steinberger cbceb1db76
docs(i18n): sync zh-CN node exec wording 2026-03-30 00:57:27 +01:00
Peter Steinberger 6b8a1b77a0
refactor(nodes): split media and invoke handlers 2026-03-30 00:57:27 +01:00
Vincent Koc 475defdf82
Anthropic: wire explicit service tier params (#45453)
* Anthropic: add explicit service tier wrapper

* Runner: wire explicit Anthropic service tiers

* Tests: cover explicit Anthropic service tiers

* Changelog: note Anthropic service tier follow-up

* fix(agents): make Anthropic service tiers override fast mode

* fix(config): drop duplicate healed sourceConfig

* docs(anthropic): update fast mode service tier guidance

* fix(agents): remove dead Anthropic Bedrock exports

* fix(agents): avoid cross-provider Anthropic tier warnings

* fix(agents): avoid cross-provider OpenAI tier warnings
2026-03-30 08:54:56 +09:00
Peter Steinberger feed2c42dd
test: stabilize subagent spawn harnesses 2026-03-30 00:54:09 +01:00
Vincent Koc 170a3a39d4 fix(test): restore subagent announce timeout mocks 2026-03-30 08:52:04 +09:00
Gustavo Madeira Santana 188fcbfa34
Docs: add zh-CN Diffs page 2026-03-29 19:48:08 -04:00
Gustavo Madeira Santana c191dc9928
Control UI: preserve seq-gap reconnect state 2026-03-29 19:48:08 -04:00
Peter Steinberger cf84a03ecf
docs: clarify generic channel approval capabilities 2026-03-30 08:46:44 +09:00
Peter Steinberger 3b878e6b86
refactor: move approval auth and payload hooks to generic channel capabilities 2026-03-30 08:46:44 +09:00
Vincent Koc 7008379ff0 test(agents): restore cli runner test seams 2026-03-30 08:43:37 +09:00
Vincent Koc 408f6a5b0b test(matrix): stabilize file sync store persistence checks 2026-03-30 08:43:37 +09:00
Vincent Koc d6a3580347 fix(lint): clear current main lint blockers 2026-03-30 08:43:37 +09:00
Peter Steinberger 193f781fad
fix: stabilize ci and serial test gate 2026-03-30 00:43:01 +01:00
Vincent Koc 0da610a8ec fix(tasks): prefer ACP spawn metadata on merge 2026-03-30 08:42:31 +09:00
Peter Steinberger c1137ef00d
docs(nodes): remove nodes.run references 2026-03-30 00:41:06 +01:00
Peter Steinberger 2255e04b07
test(nodes): update coverage after exec consolidation 2026-03-30 00:41:06 +01:00
Peter Steinberger 5dae663ea4
refactor(nodes): remove nodes.run execution path 2026-03-30 00:41:06 +01:00
Peter Steinberger dd8d66fc44 refactor: inject subagent announce test seams 2026-03-30 00:40:32 +01:00
Peter Steinberger f914cd598a
refactor(gateway): dedupe self-write config reloads 2026-03-30 00:39:39 +01:00
Peter Steinberger a27ccee5d9
refactor(config): use source snapshots for config writes 2026-03-30 00:39:39 +01:00
Vincent Koc c5baf63fa5 docs: deep audit of memory section -- fix icons, beef up engine pages, restructure config reference 2026-03-30 08:39:18 +09:00
Gustavo Madeira Santana 1600c1726e
Control UI: reconnect on seq gaps 2026-03-29 19:31:01 -04:00
Peter Steinberger 15c3aa82bf
refactor: unify approval forwarding and rendering 2026-03-30 08:28:33 +09:00
Peter Steinberger 8720070fe0
refactor: rename channel approval capabilities 2026-03-30 08:28:33 +09:00
Vincent Koc 53bcd5769e
refactor(tasks): unify the shared task run registry (#57324)
* refactor(tasks): simplify shared task run registry

* refactor(tasks): remove legacy task registry aliases

* fix(cron): normalize timeout task status and harden ledger writes

* fix(cron): keep manual runs resilient to ledger failures
2026-03-30 08:28:17 +09:00
Peter Steinberger e4466c72a2 test: stabilize runner and acp mocks
- reuse the shared cli-runner harness in claude runner tests
- make ACP session metadata and startup tests use stable static mocks
2026-03-30 00:27:52 +01:00
Vincent Koc bf63264c62 docs: fix Honcho tool names and add CLI commands 2026-03-30 08:26:52 +09:00
Robin Waslander bdd9bc93f1
fix(cron): deliver full announce output instead of last chunk only (#57322)
resolveCronPayloadOutcome() collapsed announce delivery to the last
deliverable payload. Replace with pickDeliverablePayloads() that
preserves all successful text payloads. Error-only runs fall back to
the last error payload only.

Extract shared isDeliverablePayload() helper. Keep
deliveryPayloadHasStructuredContent scoped to the last payload
to preserve downstream finalizeTextDelivery safeguards.

Fixes #13812
2026-03-30 01:24:45 +02:00
Peter Steinberger 0a4c11061d test: stabilize targeted harnesses
- reduce module-reset mock churn in auth/acp tests
- simplify runtime web mock cleanup
- make canvas reload test use in-memory websocket tracking
2026-03-30 00:23:38 +01:00
Radek Sienkiewicz 4680335b2a
docs: fix English link audits (#57039)
Merged via squash.

Prepared head SHA: d20a3b620f
Co-authored-by: velvet-shark <126378+velvet-shark@users.noreply.github.com>
Reviewed-by: @velvet-shark
2026-03-30 01:21:00 +02:00
Gustavo Madeira Santana 6c91b27756
Docs: remove internal CLI metadata note 2026-03-29 19:20:43 -04:00
Gustavo Madeira Santana b0077904a7
Plugins: align CLI metadata loader behavior 2026-03-29 19:20:42 -04:00
Peter Steinberger 9a97c30fad
style(test): sort mutate helper imports 2026-03-30 00:17:23 +01:00
Peter Steinberger f928b81279
test(config): align snapshot fixtures and isolation 2026-03-30 00:17:23 +01:00
Peter Steinberger 89a4f2a34e
refactor(config): centralize runtime config state 2026-03-30 00:17:23 +01:00
Armand du Plessis b888741462
fix: QMD 1.1+ mcporter compatibility with legacy fallback [AI-assisted] (#54728)
* fix: QMD 2.0 mcporter compatibility with v1 fallback [AI-assisted]

QMD 2.0 unified all search modes under a single 'query' MCP tool
with typed sub-queries, replacing search/vector_search/deep_search.

- Default to QMD 2.0 'query' tool with {searches: [...]} format
- Auto-detect version on first call and cache for the session
- Fall back to v1 tool names if 'query' is not found
- Backwards compatible: v1 users get one retry then cached

AI-assisted: Built with Claude (Opus 4.6) via OpenClaw. Fully tested
against QMD 2.0 with mcporter 0.7.3 daemon. v1 fallback path not
live-tested (no v1 instance available). Code reviewed and understood.

* test: add QMD v2 tool format and v1 fallback tests

- Verify mcporter bridge uses 'query' tool with {searches: [...]} format (v2)
- Verify fallback to 'deep_search' with {query, limit} format when v2 not found
- Verify v1 fallback logs a warning for visibility

* fix: address review feedback — multi-collection v1 fallback + test cleanup

- Fix multi-collection v1 fallback: resolve effectiveTool at the top
  of runQmdSearchViaMcporter so stale 'query' tool names from the
  loop are corrected once qmdMcpToolVersion is set to 'v1'
- Assert callCount in v1 fallback test (one v2 attempt + one v1 retry)
- Remove spurious global state reset (qmdMcpToolVersion is per-instance)

* docs: correct version references — breaking change was QMD 1.5, not 2.0

The MCP tool removal (search/vector_search/deep_search → query) happened
in QMD 1.5, not 2.0. QMD 2.0 was the SDK/library refactor.
Updated all comments, test names, and documentation to reflect this.

* fix: respect searchMode when building v2 mcporter queries

When searchMode is 'search' (BM25), only send lex sub-query.
When 'vsearch', only send vec. Default 'query' sends all three
(lex + vec + hyde) for full hybrid search with reranking.

Previously all three sub-queries were always sent regardless of
the configured searchMode, which could trigger unnecessary vector
embedding and HyDE LLM work on setups explicitly requesting
lexical-only search.

Addresses Codex P2 review feedback.

* docs: correct to QMD 1.1.0 — that's the actual version that removed the tools

Per CHANGELOG.md, MCP tools search/vector_search/deep_search were removed
in QMD 1.1.0 (2026-02-20), not 1.5 (which doesn't exist). Versions go
1.0.7 → 1.1.0 → 1.1.1 → 1.1.2 → 1.1.5 → 1.1.6 → 2.0.0.

* fix: remove redundant v1 guard (race condition) + tighten error matching

1. Remove qmdMcpToolVersion !== 'v1' guard from catch block. It's
   redundant (effectiveTool === 'query' already prevents infinite retry)
   and introduces a race condition: concurrent searches that both probe
   with 'query' while version is null would fail after the first sets
   version to 'v1'.

2. Tighten isToolNotFoundError regex to require 'Tool' near 'not found'
   (within 40 chars, no sentence boundary). Prevents false-positives
   when user query text in the mcporter args contains both words.

Addresses Greptile P1 (concurrent-search race) and Codex P2
(overly broad error matching).

* fix: address claude code review — type safety, minScore docs, explicit switch

- Restore type union for tool param instead of bare string
- Add comment explaining minScore omission for v2 (QMD 1.1+ uses
  its own reranking pipeline, no minScore parameter)
- Make buildV2Searches switch exhaustive with explicit case 'query'

* fix: resolve CI failures — oxfmt formatting + TypeScript type errors

- Run oxfmt to fix formatting issues
- Add union return type to resolveQmdMcpTool() and
  runMcporterAcrossCollections() tool param to satisfy tsc
  (string was not assignable to the union type)

* fix(memory): align qmd query collection filters

* fix(memory): narrow qmd missing-tool fallback detection

* fix(memory): ignore qmd timeout text for v1 fallback

---------

Co-authored-by: Vincent Koc <vincentkoc@ieee.org>
2026-03-30 08:07:14 +09:00
Peter Steinberger 0fdf724125
test: trim stale extension boundary allowlist 2026-03-30 08:05:59 +09:00
Peter Steinberger 809833ef9d
fix(config): recover clobbered config and isolate test paths 2026-03-30 00:05:36 +01:00
Peter Steinberger d45b997ba9
docs: clarify shared approval delivery 2026-03-30 08:03:59 +09:00
Peter Steinberger 52fb4a149a
refactor: share approval interactive renderers 2026-03-30 08:03:59 +09:00
Peter Steinberger cfac0e8698
refactor: move plugin-owned test support into plugins 2026-03-30 08:03:04 +09:00
Vincent Koc 1ace91ee00 fix(bluebubbles): coalesce URL-only inbound shares 2026-03-30 08:00:25 +09:00
Cypher 924c264a74
fix: inject anthropic service_tier for OAuth auth (#55922)
* fix: inject anthropic service_tier for OAuth auth

Remove the OAuth-token exclusion from createAnthropicFastModeWrapper
so that sk-ant-oat-* requests receive service_tier injection, matching
Claude Code CLI behavior and reducing avoidable 529 overload cascades.

isAnthropicOAuthApiKey remains in use in createAnthropicBetaHeadersWrapper
for beta header selection — it is not dead code after this change.

Fixes #55758

* docs(changelog): note anthropic oauth service tier fix

* Update CHANGELOG.md

---------

Co-authored-by: Cypherm <28184436+Cypherm@users.noreply.github.com>
Co-authored-by: Vincent Koc <vincentkoc@ieee.org>
2026-03-30 07:54:24 +09:00
Gustavo Madeira Santana e5dac0c39e
CLI: keep root help plugin descriptors non-activating (#57294)
Merged via squash.

Prepared head SHA: c8da48f689
Co-authored-by: gumadeiras <5599352+gumadeiras@users.noreply.github.com>
Co-authored-by: gumadeiras <5599352+gumadeiras@users.noreply.github.com>
Reviewed-by: @gumadeiras
2026-03-29 18:49:57 -04:00
Peter Steinberger 1efef8205c
fix: stabilize extensions surface test gate 2026-03-30 07:47:58 +09:00
Peter Steinberger 07c6981c70
refactor: localize zalo test support 2026-03-30 07:47:28 +09:00
Vincent Koc ed2528e6fb docs: nest memory engine pages under Memory sub-group 2026-03-30 07:45:20 +09:00
Vincent Koc 92d4c62d59 style: format Honcho docs tables 2026-03-30 07:44:35 +09:00
Vincent Koc 70b7f32c7e docs: add Honcho memory engine page 2026-03-30 07:44:35 +09:00
Peter Steinberger 8861cdbb6f
refactor(plugin-sdk): untangle extension test seams 2026-03-29 23:43:53 +01:00