Files
zclaw_openfang/hands/slideshow.HAND.toml
iven 3ff08faa56 release(v0.2.0): streaming, MCP protocol, Browser Hand, security enhancements
## Major Features

### Streaming Response System
- Implement LlmDriver trait with `stream()` method returning async Stream
- Add SSE parsing for Anthropic and OpenAI API streaming
- Integrate Tauri event system for frontend streaming (`stream:chunk` events)
- Add StreamChunk types: Delta, ToolStart, ToolEnd, Complete, Error

### MCP Protocol Implementation
- Add MCP JSON-RPC 2.0 types (mcp_types.rs)
- Implement stdio-based MCP transport (mcp_transport.rs)
- Support tool discovery, execution, and resource operations

### Browser Hand Implementation
- Complete browser automation with Playwright-style actions
- Support Navigate, Click, Type, Scrape, Screenshot, Wait actions
- Add educational Hands: Whiteboard, Slideshow, Speech, Quiz

### Security Enhancements
- Implement command whitelist/blacklist for shell_exec tool
- Add SSRF protection with private IP blocking
- Create security.toml configuration file

## Test Improvements
- Fix test import paths (security-utils, setup)
- Fix vi.mock hoisting issues with vi.hoisted()
- Update test expectations for validateUrl and sanitizeFilename
- Add getUnsupportedLocalGatewayStatus mock

## Documentation Updates
- Update architecture documentation
- Improve configuration reference
- Add quick-start guide updates

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
2026-03-24 03:24:24 +08:00

120 lines
2.5 KiB
TOML
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Slideshow Hand - 幻灯片控制能力包
#
# ZCLAW Hand 配置
# 提供幻灯片演示控制能力,支持翻页、聚焦、激光笔等
[hand]
name = "slideshow"
version = "1.0.0"
description = "幻灯片控制能力包 - 控制演示文稿的播放、导航和标注"
author = "ZCLAW Team"
type = "presentation"
requires_approval = false
timeout = 30
max_concurrent = 1
tags = ["slideshow", "presentation", "slides", "education", "teaching"]
[hand.config]
# 支持的幻灯片格式
supported_formats = ["pptx", "pdf", "html", "markdown"]
# 自动翻页间隔0 表示禁用
auto_advance_interval = 0
# 是否显示进度条
show_progress = true
# 是否显示页码
show_page_number = true
# 激光笔颜色
laser_color = "#ff0000"
# 聚焦框颜色
spotlight_color = "#ffcc00"
[hand.triggers]
manual = true
schedule = false
webhook = false
[[hand.triggers.events]]
type = "chat.intent"
pattern = "幻灯片|演示|翻页|下一页|上一页|slide|presentation|next|prev"
priority = 5
[hand.permissions]
requires = [
"slideshow.navigate",
"slideshow.annotate",
"slideshow.control"
]
roles = ["operator.read"]
[hand.rate_limit]
max_requests = 200
window_seconds = 3600
[hand.audit]
log_inputs = true
log_outputs = false
retention_days = 7
# 幻灯片动作定义
[[hand.actions]]
id = "next_slide"
name = "下一页"
description = "切换到下一张幻灯片"
params = {}
[[hand.actions]]
id = "prev_slide"
name = "上一页"
description = "切换到上一张幻灯片"
params = {}
[[hand.actions]]
id = "goto_slide"
name = "跳转到指定页"
description = "跳转到指定编号的幻灯片"
params = { slide_number = "number" }
[[hand.actions]]
id = "spotlight"
name = "聚焦元素"
description = "用高亮框聚焦指定元素"
params = { element_id = "string", duration = "number?" }
[[hand.actions]]
id = "laser"
name = "激光笔"
description = "在幻灯片上显示激光笔指示"
params = { x = "number", y = "number", duration = "number?" }
[[hand.actions]]
id = "highlight"
name = "高亮区域"
description = "高亮显示幻灯片上的区域"
params = { x = "number", y = "number", width = "number", height = "number", color = "string?" }
[[hand.actions]]
id = "play_animation"
name = "播放动画"
description = "触发幻灯片上的动画效果"
params = { animation_id = "string" }
[[hand.actions]]
id = "pause"
name = "暂停"
description = "暂停自动播放"
params = {}
[[hand.actions]]
id = "resume"
name = "继续"
description = "继续自动播放"
params = {}