Commit Graph

24985 Commits

Author SHA1 Message Date
Peter Steinberger d2dae50a75
test: trim telegram bot import graph 2026-04-03 13:10:43 +01:00
Vincent Koc 9245b9e2f4 test(zalo): use narrow registry helpers in lifecycle tests 2026-04-03 21:10:33 +09:00
Peter Steinberger f59d0eac68
refactor(plugin-runtime): remove plugin-specific core seams 2026-04-03 13:08:39 +01:00
Vincent Koc 4846ebce12
fix(test): serialize local heavy checks (#60273) 2026-04-03 21:07:56 +09:00
Vincent Koc feca4aa49e test(feishu): replace heavy runtime mock helper in bot tests 2026-04-03 21:07:43 +09:00
Peter Steinberger fbb2537774
refactor: clarify tool schema normalization 2026-04-03 21:07:19 +09:00
Peter Steinberger 1118d032ca
refactor: split extension test helpers 2026-04-03 13:06:11 +01:00
Peter Steinberger 87abcfd6a6 fix: harden ollama tool-call replay (#52253) (thanks @Adam-Researchh) 2026-04-03 21:06:06 +09:00
Vincent Koc e116e7d584 test(feishu): slim comment monitor runtime fixtures 2026-04-03 21:05:54 +09:00
Vincent Koc dc312a4c76 test(feishu): slim reaction monitor runtime fixtures 2026-04-03 21:02:26 +09:00
Peter Steinberger 685ef52284
refactor: simplify test workflow helpers 2026-04-03 13:00:00 +01:00
Peter Steinberger 71a54d0c95
fix(ci): forward bluebubbles barrel and node env fixes 2026-04-03 12:58:10 +01:00
Vincent Koc 688eb8435b test(bluebubbles): split webhook ingress seam 2026-04-03 20:58:03 +09:00
Vincent Koc 2734d06ade test(matrix): avoid loading send module in thread binding tests 2026-04-03 20:56:58 +09:00
Vincent Koc a8040ab9d9 test(matrix): avoid loading action modules in tool tests 2026-04-03 20:55:47 +09:00
Vincent Koc b925f6d46c test(zalo): avoid loading monitor and probe modules in startup test 2026-04-03 20:55:09 +09:00
Vincent Koc fbc4fa6ac3 test(feishu): avoid loading streaming card module in dispatcher tests 2026-04-03 20:54:24 +09:00
Vincent Koc d888ce242b test(bluebubbles): split monitor processing seam 2026-04-03 20:54:08 +09:00
Peter Steinberger 0d938748a5
refactor(sessions): clarify duplicate session resolution 2026-04-03 20:53:17 +09:00
Vincent Koc a0c6ea5aba test(feishu): avoid loading bot and send modules in menu tests 2026-04-03 20:52:26 +09:00
Peter Steinberger a2077b28ef
refactor: trim vitest wrapper layers 2026-04-03 12:52:14 +01:00
Vincent Koc bd1e78ea34 test(msteams): avoid loading graph upload module in messenger tests 2026-04-03 20:50:00 +09:00
Vincent Koc 82fca281b6 test(msteams): avoid loading graph module in message tests 2026-04-03 20:50:00 +09:00
Vincent Koc b410c5434c test(msteams): avoid loading graph module in member tests 2026-04-03 20:50:00 +09:00
Vincent Koc d9aa88dd6c test(bluebubbles): split channel status seam 2026-04-03 20:46:42 +09:00
Vincent Koc 9bd05d3841 test(browser): stop reloading auth server module 2026-04-03 20:45:45 +09:00
Peter Steinberger 57999f9965 fix: narrow empty MCP tool schema normalization (#60176) (thanks @Bartok9) 2026-04-03 20:45:33 +09:00
Bartok Moltbot 19dbe00763 fix(tools): normalize truly empty MCP tool schemas for OpenAI
Fixes #60158

MCP tools with parameter-free schemas may return truly empty objects
`{}` without a `type` field. The existing normalization handled
`{ type: "object" }` → `{ type: "object", properties: {} }` but
missed the truly empty case.

OpenAI gpt-5.4 rejects tool schemas without `type: "object"` and
`properties`, causing HTTP 400 errors:

```
Invalid schema for function 'flux-mcp__get_flux_instance':
In context=(), object schema missing properties.
```

This change catches empty schemas (no type, no properties, no unions)
before the final pass-through and converts them to the required format.

Added test case for parameter-free MCP tool schemas.
2026-04-03 20:45:33 +09:00
Peter Steinberger 6845b8061c
docs: simplify vitest workflow guidance 2026-04-03 12:45:13 +01:00
Peter Steinberger 9ef5d85e40
refactor: remove custom test planner runtime 2026-04-03 12:45:13 +01:00
Peter Steinberger c80c1cf56f
test: drop planner fixtures and coverage 2026-04-03 12:45:13 +01:00
Vincent Koc d21d859ded test(browser): stop reloading cdp screenshot module 2026-04-03 20:44:53 +09:00
Vincent Koc 11c6202ec0 test(bluebubbles): split action metadata seam 2026-04-03 20:44:23 +09:00
Vincent Koc 9a53c3d772 test(browser): drop redundant module resets 2026-04-03 20:43:49 +09:00
Vincent Koc 6e3eb34a90 test(bluebubbles): narrow action helper imports 2026-04-03 20:42:29 +09:00
Peter Steinberger 36a233ff98
fix(config): honor isolated state-dir config writes 2026-04-03 12:42:08 +01:00
Vincent Koc 51d6d7013f
fix(tui): preserve pending sends and busy-state visibility (#59800)
* fix(tui): preserve pending messages across refreshes

* fix(tui): keep fallback runs visibly active

* fix(tui): expose full verbose mode and reclaim width

* refactor(tui): drop stale optimistic-send state

* test(tui): drop unused state binding

* docs(changelog): add tui beta note

* fix(tui): bound fallback wait and dedupe pending restore

* fix(tui): preserve queued sends and busy-state visibility

* chore(changelog): align tui pending-send note

* chore(changelog): refine tui release note
2026-04-03 20:39:55 +09:00
Vincent Koc 79da4a46b4 fix(feishu): annotate send target return 2026-04-03 20:36:24 +09:00
Vincent Koc dc6e041cfe test(bluebubbles): narrow monitor normalize number parsing 2026-04-03 20:36:24 +09:00
Vincent Koc 2ec9d3d58b test(bluebubbles): narrow request-url export 2026-04-03 20:36:24 +09:00
Vincent Koc 69e0fbd95e test(bluebubbles): narrow media-send limit import 2026-04-03 20:36:24 +09:00
Vincent Koc 13412c0c50 test(bluebubbles): narrow send markdown import 2026-04-03 20:36:24 +09:00
Peter Steinberger afa78a5b13
test: trim telegram testing barrel imports 2026-04-03 12:36:07 +01:00
Peter Steinberger de1d0f4fae
fix(ci): restore telegram real registry test support 2026-04-03 12:31:28 +01:00
samzong 37ab4b7fdc
[Feat] Add ClawHub skill search and detail in Control UI (#60134)
* feat(gateway): add skills.search and skills.detail RPC methods

Expose ClawHub search and detail capabilities through the Gateway protocol,
enabling desktop/web clients to browse and inspect skills from the registry.

New RPCs:
- skills.search: search ClawHub skills by query with optional limit
- skills.detail: fetch full detail for a single skill by slug

Both methods delegate to existing agent-layer functions
(searchSkillsFromClawHub, fetchSkillDetailFromClawHub) which wrap
the ClawHub HTTP client. No new external dependencies.

Signed-off-by: samzong <samzong.lu@gmail.com>

* feat(skills): add ClawHub skill search and detail in Control UI

Add skills.search and skills.detail Gateway RPC methods with typed
protocol schemas, AJV validators, and handler implementations. Wire
the new RPCs into the Control UI Skills panel with a debounced search
input, results list, detail dialog, and one-click install from ClawHub.

Gateway:
- SkillsSearchParams/ResultSchema and SkillsDetailParams/ResultSchema
- Handler calls searchClawHubSkills and fetchClawHubSkillDetail directly
- Remove zero-logic fetchSkillDetailFromClawHub wrapper
- 9 handler tests including boundary validation

Control UI:
- searchClawHub, loadClawHubDetail, installFromClawHub controllers
- 300ms debounced search input to avoid 429 rate limits
- Dedicated install busy state (clawhubInstallSlug) with success/error feedback
- Install buttons disabled during install with progress text
- Detail dialog with owner, version, changelog, platform metadata

Part of #43301

Signed-off-by: samzong <samzong.lu@gmail.com>

* fix(skills): guard search and detail responses against stale writes

Signed-off-by: samzong <samzong.lu@gmail.com>

* fix(skills): reset loading flags on query clear and detail close

Signed-off-by: samzong <samzong.lu@gmail.com>

* fix(gateway): register skills.search/detail in read scope and method list

Add skills.search and skills.detail to the operator READ scope group
and the server methods list. Without this, unclassified methods default
to operator.admin, blocking read-only operator sessions.

Also guard the detail loading reset in the finally block by the active
slug to prevent a transient flash when rapidly switching skills.

Signed-off-by: samzong <samzong.lu@gmail.com>

* fix(skills): guard search loading reset by active query

Signed-off-by: samzong <samzong.lu@gmail.com>

* test: cover ClawHub skills UI flow

* fix: clear stale ClawHub search results

---------

Signed-off-by: samzong <samzong.lu@gmail.com>
Co-authored-by: Frank Yang <frank.ekn@gmail.com>
2026-04-03 19:30:44 +08:00
Peter Steinberger d39e4dff6a
test: make planner lanes explicit 2026-04-03 12:29:29 +01:00
Peter Steinberger f4393791eb
test: split vitest setup for projects 2026-04-03 12:29:29 +01:00
Peter Steinberger 1dd88c6288
fix(sessions): harden session id resolution 2026-04-03 20:29:20 +09:00
Peter Steinberger 1337be3063
refactor: narrow telegram native command test seams 2026-04-03 12:25:47 +01:00
Peter Steinberger db6d149f75
test: route telegram plugin tests through extensions 2026-04-03 12:25:47 +01:00