Commit graph

4 commits

Author SHA1 Message Date
顾盼
aeeb2976d6
feat(web-search): remove built-in web_search tool, replace with MCP-based approach (#3502)
* feat(web-search): add GLM (ZhipuAI) web search provider

- Add GlmProvider class implementing BaseWebSearchProvider using the
  ZhipuAI Web Search API (https://open.bigmodel.cn/api/paas/v4/web_search)
- Support multiple search engines: search_std, search_pro, search_pro_sogou,
  search_pro_quark
- Support optional config: maxResults, searchIntent, searchRecencyFilter,
  contentSize, searchDomainFilter
- Truncate query to 70 characters per API limit
- Register 'glm' in the provider discriminated union (types.ts) and
  createProvider() switch (index.ts)
- Add GlmProviderConfig to settingsSchema, ConfigParams, and Config class
- Add --glm-api-key CLI flag and GLM_API_KEY env var support in webSearch.ts
- Forward GLM_API_KEY in sandbox environment
- Update provider priority list: Tavily > Google > GLM > DashScope
- Add 17 unit tests for GlmProvider and 4 integration tests in index.test.ts
- Update docs/developers/tools/web-search.md with GLM configuration,
  env vars, CLI args, pricing, and corrected DashScope billing info
- Fix stale OAuth/free-tier references in web-search.md

Closes #3496

* docs(web-search): fix DashScope note and add GLM server-side limitations

* fix(web-search): make DashScope provider work with standard API key, remove qwen-oauth dependency

- DashScopeProvider.isAvailable() now checks config.apiKey instead of authType
- Remove OAuth credential file reading and resource_url requirement
- Use standard DashScope endpoint: dashscope.aliyuncs.com/api/v1/indices/plugin/web_search
- Read DASHSCOPE_API_KEY env var and --dashscope-api-key CLI flag
- Forward DASHSCOPE_API_KEY into sandbox environment
- Update integration test to detect DASHSCOPE_API_KEY
- Update docs to reflect new API key based configuration

* feat(web-search): remove built-in web search tool

The web_search tool and all related provider implementations are removed.
Web search functionality will be provided via MCP integrations instead,
which is the direction the broader agent ecosystem is moving.

Removed:
- packages/core/src/tools/web-search/ (entire directory)
- packages/cli/src/config/webSearch.ts
- integration-tests/cli/web_search.test.ts
- ToolNames.WEB_SEARCH, ToolErrorCode.WEB_SEARCH_FAILED
- webSearch config in ConfigParams, Config class, settingsSchema
- CLI options: --tavily-api-key, --google-api-key, --google-search-engine-id,
  --glm-api-key, --dashscope-api-key, --web-search-default
- Sandbox env forwarding for TAVILY/GLM/DASHSCOPE/GOOGLE search keys
- web_search from rule-parser, permission-manager, speculation gate,
  microcompact tool set, and builtin-agents tool list

* fix: remove websearch reference

* docs: remove websearch tool

* docs: add break change guide

* fix review
2026-04-24 11:29:02 +08:00
qqqys
00896f8605
feat(webui): render markdown in generic and web-fetch tool outputs (#3469)
Some checks are pending
Qwen Code CI / Lint (push) Waiting to run
Qwen Code CI / Test (push) Blocked by required conditions
Qwen Code CI / Test-1 (push) Blocked by required conditions
Qwen Code CI / Test-2 (push) Blocked by required conditions
Qwen Code CI / Test-3 (push) Blocked by required conditions
Qwen Code CI / Test-4 (push) Blocked by required conditions
Qwen Code CI / Test-5 (push) Blocked by required conditions
Qwen Code CI / Test-6 (push) Blocked by required conditions
Qwen Code CI / Test-7 (push) Blocked by required conditions
Qwen Code CI / Test-8 (push) Blocked by required conditions
Qwen Code CI / Post Coverage Comment (push) Blocked by required conditions
Qwen Code CI / CodeQL (push) Waiting to run
E2E Tests / E2E Test (Linux) - sandbox:docker (push) Waiting to run
E2E Tests / E2E Test (Linux) - sandbox:none (push) Waiting to run
E2E Tests / E2E Test - macOS (push) Waiting to run
* feat(webui): render markdown in generic and web-fetch tool outputs

Agent and other tool call outputs were wrapped in raw <pre> blocks,
leaving markdown-formatted text (code blocks, lists, bold) as unrendered
characters in HTML exports. Route long GenericToolCall output and
WebFetchToolCall success output through MarkdownRenderer, and add
collapse/expand affordance to long generic output for readability.

Closes #2520

Co-Authored-By: Qwen-Coder <noreply@alibabacloud.com>

* fix(webui): move tool-output mask-image to inline style, disable file-link in webfetch

Tailwind's static scanner can't emit classes built from template-string
interpolation (max-h-[${n}px], [mask-image:...] with runtime values),
so the collapsed-state fade on GenericToolCall and WebFetchToolCall
output cards was not actually applied at runtime — only the inline
maxHeight was collapsing content. Move both max-height and mask-image
to inline style, and add -webkit-mask-image for Safari.

Also pass enableFileLinks={false} to MarkdownRenderer for WebFetch
output so raw fetched text keeps file-like strings (README.md, URLs
ending in .md, etc.) as literal output instead of converting them to
local workspace links.

Co-Authored-By: Qwen-Coder <noreply@alibabacloud.com>

* fix(webui): disable file-link in generic tool-call output

Align GenericToolCall markdown rendering with WebFetchToolCall by
passing enableFileLinks={false}. Without a click handler wired, file-like
strings (e.g. README.md) would render as clickable links that do nothing,
which is a misleading affordance in the tool-call display/export context.

Co-Authored-By: Qwen-Coder <noreply@alibabacloud.com>

---------

Co-authored-by: Qwen-Coder <noreply@alibabacloud.com>
2026-04-21 15:53:32 +08:00
yiliang114
2490a03fe4 feat(webui): unify remaining tool display labels
Refs #1367
2026-03-23 00:47:19 +08:00
yiliang114
71cae2fa1e feat(webui): add WebFetchToolCall component for web search/fetch
- Add WebFetchToolCall component to display web fetch and search operations
- Support URL/query display with output card
- Add expand/collapse for long output content
- Export WebFetchToolCall from toolcalls index
- Integrate WebFetchToolCall in ChatViewer component

Co-authored-by: Qwen-Coder <qwen-coder@alibabacloud.com>
2026-01-29 01:39:46 +08:00