Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
100 commits
Select commit Hold shift + click to select a range
f6bfa9c
fix(skill): reduce watcher inotify usage
May 22, 2026
bff62db
fix(workflow): isolate LLM provider from shared singleton (#316)
xiami762 May 25, 2026
5144011
feat(web2cli,agent): remove agent-browser from web2cli, add planner a…
xiami762 May 25, 2026
39580cd
fix(webui): narrow uploaded document attachment type
May 25, 2026
1d60c17
Merge pull request #318 from AgentFlocks/fix/sessionchat-uploaded-doc…
stephamie7 May 25, 2026
ab3b702
feat(skills): migrate browser workflows to flocks browser (#320)
xiami762 May 25, 2026
23ac8f6
fix(storage): prevent and recover from SQLite "file is not a database…
xiami762 May 25, 2026
18162dc
fix(mcp): accept legacy env alias for local server config (#317)
xiami762 May 25, 2026
782749d
feat(compaction): overhaul context compaction with hermes-style pre-p…
duguwanglong May 25, 2026
1b097a2
fix(channel): reliably parse and dispatch slash commands from group-m…
duguwanglong May 25, 2026
8630224
Merge branch 'dev' of github.com:AgentFlocks/flocks into feat/context…
duguwanglong May 25, 2026
74aad64
chore: remove docs/design directory
duguwanglong May 25, 2026
bb43e79
Merge pull request #310 from AgentFlocks/fix/reduce-skill-watcher-ino…
xiami762 May 26, 2026
db32305
feat(tool): make read tool output limits configurable via flocks.json
duguwanglong May 26, 2026
52bf110
fix(device): support host+port providers in connectivity test
duguwanglong May 26, 2026
87dcc72
fix(tool): restore tools when their API service is re-enabled
duguwanglong May 26, 2026
27fc4bd
fix(mcp): connect on first enable when server is absent from runtime
duguwanglong May 26, 2026
cde8046
fix(device-startup): skip api-type integrations during _sync_all
duguwanglong May 26, 2026
f077980
test(tool): cover bi-directional sync and api-type exclusion
duguwanglong May 26, 2026
bb15a9e
fix(pr321): address three pre-merge issues from code review
duguwanglong May 26, 2026
28af9f9
fix(pr321): follow-up cleanup after self-review
duguwanglong May 26, 2026
11b4d71
test(pr321): cover the three review fixes with focused unit tests
duguwanglong May 26, 2026
47ffd57
Merge pull request #321 from AgentFlocks/feat/context-compaction-v2
xiami762 May 26, 2026
0a4ac64
fix(mcp): reconnect after previous FAILED/DISCONNECTED state too
duguwanglong May 26, 2026
87a36e3
test(device): cover host+port fallback for connectivity probe
duguwanglong May 26, 2026
b3fc90c
docs(tool): document the pair-with-apply contract for sync helper
duguwanglong May 26, 2026
049173e
fix(skills): require device_context lookup before calling device tools
duguwanglong May 26, 2026
5b4ef42
Merge pull request #323 from AgentFlocks/fix/device-mcp-tool-visibility
xiami762 May 26, 2026
78d2c48
perf(webui,session): code-split routes/modals; per-message parts pers…
xiami762 May 26, 2026
fb5cbb1
Merge branch 'dev' of github.com:AgentFlocks/flocks into fix/device-r…
duguwanglong May 26, 2026
7f4add6
Merge pull request #325 from AgentFlocks/fix/device-resolution-in-use…
xiami762 May 26, 2026
4a92675
feat(web2cli,browser): improve cookie scoping and payload handling (#…
xiami762 May 26, 2026
ff1ffe3
feat(web2cli,session): multipart payloads, manual auth headers, tool-…
xiami762 May 26, 2026
f301bb8
refactor(session): use offline chars/4 token estimate (#327)
xiami762 May 27, 2026
53d0da2
fix(session): persist text placeholder on start to preserve part orde…
xiami762 May 27, 2026
8787a6b
feat(tdp_alert_triage): replace HTTP analysis nodes with unified 5-st…
duguwanglong May 27, 2026
4f4301e
feat(device): improve tool targeting, discovery, and WebUI source lab…
xiami762 May 27, 2026
874a46d
Merge pull request #330 from AgentFlocks/feat/sync-tdp-http-prompt
xiami762 May 27, 2026
21ee000
Update version to v2026.5.27 in pyproject.toml and uv.lock (#332)
stephamie7 May 27, 2026
4973f1f
fix(session): reject tool-call title payloads
May 27, 2026
6b497ef
feat(agent,webui): device-inspector agent and workflow session naviga…
xiami762 May 28, 2026
edc0a0c
fix(webui): enforce workflow session cap on all localStorage writes (…
xiami762 May 28, 2026
c97aa59
Merge pull request #335 from AgentFlocks/fix/session-title-tool-call-…
xiami762 May 28, 2026
876dadd
fix(device): per-device tool enable/disable isolation
duguwanglong May 28, 2026
fddc836
Merge pull request #339 from AgentFlocks/fix/device-tool-isolation
xiami762 May 28, 2026
965f133
feat(webui): add agent picker and mentions
chenjie-booker May 28, 2026
1ec9895
fix(tool): force-close HTTP tool sockets to prevent CLOSE_WAIT buildu…
xiami762 Jun 1, 2026
d44bbbd
fix(channel): archive previous session on IM /new command (#344)
xiami762 Jun 1, 2026
e70d598
fix(logs): bound local log growth (#331)
JohnYin-hub Jun 1, 2026
7674a8e
feat(workflow): add Kafka ingest consumer with WebUI integration (#342)
xiami762 Jun 1, 2026
ba116a4
fix(webui): remove stale workflow detail session sync (#346)
xiami762 Jun 1, 2026
1f8e794
feat(session): add non-blocking prompt queue (#334)
stephamie7 Jun 1, 2026
1306920
Squashed commit of the following:
chenjie-booker May 22, 2026
41baa23
removed github push artifacts to console.
chenjie-booker May 22, 2026
aedf47d
feat: support console pro bundle updates
chenjie-booker May 22, 2026
48c7ac6
debug license display
chenjie-booker May 22, 2026
70996c7
fix pro bundle update checks
chenjie-booker May 22, 2026
06000ae
add linux tar packaging workflow
chenjie-booker May 22, 2026
7a27f75
minor change
chenjie-booker May 22, 2026
7da560b
upload linux tar workflow artifact
chenjie-booker May 22, 2026
e3058cc
modify tar name
chenjie-booker May 22, 2026
655dbd6
fix pro bundle update version checks
chenjie-booker May 22, 2026
b977454
fix pro bundle version display
chenjie-booker May 22, 2026
86bb6cb
fix: refine pro bundle upgrade handling
chenjie-booker May 24, 2026
77fa279
fix: remove trial license upgrade paths
chenjie-booker May 24, 2026
1961f1a
debug pro-download
chenjie-booker May 25, 2026
b8a5916
add process bar for downloading
chenjie-booker May 25, 2026
baefc86
set default portal env vars for service startup
chenjie-booker May 26, 2026
38b7bf3
fix: set default console base url for backend startup
chenjie-booker May 26, 2026
c5fd8be
pro application form includes sales name
chenjie-booker May 26, 2026
c5183dd
fix license quota sync for account management
chenjie-booker May 27, 2026
db7b585
fix license sync timestamp display
chenjie-booker May 27, 2026
13a0d3c
fix pro branding and upgrade permissions
chenjie-booker May 27, 2026
91f16d6
update default console portal host
chenjie-booker May 27, 2026
4d75823
fix http middleware hook registration
chenjie-booker Jun 1, 2026
0ae0282
feat(workflow): add generic background poller with API and WebUI (#347)
xiami762 Jun 1, 2026
05738d7
Fix/provider base url required (#348)
JohnYin-hub Jun 1, 2026
f10f747
feat(device): add 360 WAF v5.5 adapter (#343)
magicmagicspider Jun 2, 2026
53290ad
feat(provider): add MiniMax M3 catalog support (#351)
xiami762 Jun 2, 2026
4aff5d6
fix(session): clear history and surface Feishu websocket disconnects …
xiami762 Jun 2, 2026
cb66323
fix: eliminate OOM in execution history trim under syslog load
duguwanglong Jun 2, 2026
9c9c0d0
fix(kafka): tighten ingest backpressure and compact execution storage…
xiami762 Jun 2, 2026
a7f9b33
Merge pull request #354 from AgentFlocks/fix/execution-trim-oom-json-…
xiami762 Jun 2, 2026
eeee46a
update pro upgrade form fields and validation
chenjie-booker Jun 3, 2026
81c5c24
remove eslint disable comment for exhaustive-deps in AuditLogsPage us…
stephamie7 Jun 3, 2026
26a644b
fix: secure pro upgrade status reporting
chenjie-booker Jun 3, 2026
c9f0773
Merge remote-tracking branch 'origin/feat/talk_to_subagent' into dev
stephamie7 Jun 3, 2026
9eb5cb6
Merge remote-tracking branch 'origin/feat/auth_hook3' into merge/auth…
stephamie7 Jun 3, 2026
792f444
Merge pull request #358 from AgentFlocks/merge/auth-hook3-into-dev
xiami762 Jun 3, 2026
2b7488c
Merge main into dev after auth_hook3
stephamie7 Jun 3, 2026
954dbd3
Merge pull request #360 from AgentFlocks/sync/main-into-dev-after-aut…
xiami762 Jun 3, 2026
4907423
fix(session): normalize legacy stored messages and parts on cache loa…
xiami762 Jun 3, 2026
341fa88
fix(channel): support /clear slash command in channel sessions (#356)
xiami762 Jun 3, 2026
4773de2
docs(readme): update remote access and proxy guidance (#359)
xiami762 Jun 3, 2026
68df754
fix(session): keep mention agent routing in queued sends
chenjie-booker Jun 3, 2026
124b325
feat(provider): add minimax-m3 and update model limits in catalog
duguwanglong Jun 3, 2026
644b9a2
Feat/device huorong hwwaf (#362)
duguwanglong Jun 3, 2026
22943b4
feat(workflow): merge Kafka configured inputs with consumed messages …
xiami762 Jun 3, 2026
4ff737f
Merge pull request #363 from AgentFlocks/feat/catalog-minimax-m3
xiami762 Jun 3, 2026
170c675
chore: update project version to v2026.6.3 in pyproject.toml and uv.l…
stephamie7 Jun 3, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1,689 changes: 1,689 additions & 0 deletions .flocks/flockshub/plugins/tools/device/360_waf_v5_5/360_waf.handler.py

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
@@ -0,0 +1,37 @@
name: 360_waf_api_mutation
description: >
360 WAF v5.5 官方 REST 变更调用工具。该工具通过 Flocks requires_confirmation 触发确认;
重启、升级、配置导入、部署模式、License、网络接口和安全域等 WAF 本体修改接口会直接拒绝。
category: custom
enabled: true
requires_confirmation: true
provider: 360_waf
inputSchema:
type: object
properties:
action:
type: string
description: REST 变更操作名称。
enum:
- waf_call_mutation
- waf_call_api
- test
method:
type: string
enum: [GET, POST, PUT, DELETE]
description: HTTP 方法。
path:
type: string
description: 已收录的 /rest/api/... 路径。
query:
type: object
description: 可选的 WAF 查询对象,会编码为 query= JSON。
body:
type: string
description: POST、PUT 或 DELETE 调用使用的 JSON 请求体,传入对象或数组的 JSON 字符串。
required:
- action
handler:
type: script
script_file: 360_waf.handler.py
function: api_mutation
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
name: 360_waf_api_readonly
description: >
360 WAF v5.5 官方 REST 只读调用工具。可用 waf_api_catalog 查看已收录接口,
或用 waf_call_raw_readonly 调用已收录的 GET 接口。
category: custom
enabled: true
requires_confirmation: false
provider: 360_waf
inputSchema:
type: object
properties:
action:
type: string
description: REST 只读操作名称。
enum:
- waf_api_catalog
- waf_call_raw_readonly
- test
path:
type: string
description: 已收录的 /rest/api/... GET 路径。
query:
type: object
description: 可选的 WAF 查询对象,会编码为 query= JSON。
required:
- action
handler:
type: script
script_file: 360_waf.handler.py
function: api_readonly
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
name: 360_waf_file
description: >
360 WAF v5.5 文件操作工具。用于调用已收录的上传、文件请求和下载接口;
上传和删除类操作通过 Flocks requires_confirmation 触发确认,升级、配置导入和临时文件删除相关接口会直接拒绝。
category: custom
enabled: true
requires_confirmation: true
provider: 360_waf
inputSchema:
type: object
properties:
action:
type: string
description: 文件操作名称。
enum:
- waf_file_upload
- waf_file_request
- waf_download_file
- test
method:
type: string
enum: [DELETE]
description: waf_file_request 使用的方法。
path:
type: string
description: /rest/file... 上传或删除路径,或 /download/... 下载路径。
file_path:
type: string
description: 需要上传的本地文件路径。
fields:
type: object
description: 上传时附加的 multipart 表单字段。
save_path:
type: string
description: 下载文件保存到本地的路径。
required:
- action
handler:
type: script
script_file: 360_waf.handler.py
function: file_ops
Original file line number Diff line number Diff line change
@@ -0,0 +1,83 @@
name: 360_waf_observability
description: >
360 WAF v5.5 观测与日志工具。用于检索 Web 安全日志和查询仪表盘统计数据。
category: custom
enabled: true
requires_confirmation: false
provider: 360_waf
inputSchema:
type: object
properties:
action:
type: string
description: 观测类操作名称。
enum:
- waf_security_log_search
- waf_configuration_log_search
- waf_dashboard_stats
- test
interval:
type: string
enum: [realtime, hour, day, week, month]
description: 日志或仪表盘数据的时间范围。
severity:
type: integer
description: 严重级别过滤,1 严重、2 高危、3 中危、4 低危。
start:
type: integer
description: 分页起始偏移量。
limit:
type: integer
description: 分页条数,最大 500。
client_ip:
type: string
description: 客户端 IP 过滤条件。
time_start:
type: string
description: 自定义开始时间,格式示例 2026/05/29 08:00:00。
time_end:
type: string
description: 自定义结束时间,格式示例 2026/05/29 09:00:00。
http_url:
type: string
description: Web 安全日志 URL 过滤条件。
action_filter:
type: string
description: Web 安全日志防护动作过滤条件,例如 deny、pass、allow。
msg:
type: string
description: 配置日志消息内容过滤条件。
server_ip:
type: string
description: 服务器 IP 过滤条件。
site_name:
type: string
description: 站点名称过滤条件。
policy_name:
type: string
description: 策略名称过滤条件。
domain_name:
type: string
description: 域名过滤条件。
http_method:
type: string
description: HTTP 方法过滤条件。
rule_id:
type: string
description: 规则 ID 过滤条件。
protection_type:
type: string
description: 防护类型过滤条件。
protection_sub_type:
type: string
description: 防护子类型过滤条件。
kind:
type: string
enum: [attack_source_ip, attack_source_country, threat_category, site_attack]
description: 仪表盘统计类型。
required:
- action
handler:
type: script
script_file: 360_waf.handler.py
function: observability
Original file line number Diff line number Diff line change
@@ -0,0 +1,133 @@
name: 360_waf_policy_ops
description: >
360 WAF v5.5 安全策略与访问控制操作工具。只读操作用于查询 WAF 策略,
变更操作通过 Flocks requires_confirmation 触发确认。
category: custom
enabled: true
requires_confirmation: true
provider: 360_waf
inputSchema:
type: object
properties:
action:
type: string
description: 策略操作名称。
enum:
- waf_policy_list
- waf_ac_policy_list
- waf_ac_policy_create_deny_uri
- waf_site_bind_ac_policy
- waf_site_unbind_ac_policy
- waf_ac_policy_delete
- waf_blacklist_create
- waf_blacklist_delete
- waf_site_global_blacklist_create
- waf_site_global_blacklist_delete
- waf_whitelist_create
- waf_whitelist_delete
- waf_site_global_whitelist_create
- waf_site_global_whitelist_delete
- waf_exception_rule_create
- waf_exception_rule_update
- waf_exception_rule_delete
- waf_uri_block_on_site
- waf_uri_unblock_on_site
- test
name:
type: string
description: 创建 URI 拦截策略时使用的访问控制策略名称。
site_id:
type: string
description: 绑定、解绑、拦截和解除拦截操作使用的站点 ID。
id:
type: integer
description: 站点白名单操作使用的站点 ID。
siteId:
type: integer
description: 站点黑名单操作使用的站点 ID。
site_name:
type: string
description: 绑定、解绑、拦截和解除拦截操作使用的站点名称,默认 default。
policy_id:
type: string
description: 访问控制策略 ID。
position:
type: string
description: 绑定策略时插入策略 ID 的位置。
enum: [append, prepend]
uri_path:
type: string
description: 以斜杠开头的 URI 路径,用于 URI 拦截或解除拦截。
policy_name:
type: string
description: URI 拦截或解除拦截使用的已有或自动生成策略名称。
reuse_existing:
type: boolean
description: 拦截 URI 时是否复用已有匹配的拒绝策略。
delete_policy:
type: boolean
description: 解除拦截并解绑后是否删除访问控制策略。
type:
type: integer
description: 名单类型。黑名单中 1 单 IP、3 IP 范围、4 IP/掩码;白名单中 0 单 IP、1 IP/掩码、2 IP 范围。
content:
type: string
description: 黑名单内容,通常是客户端 IP、IP 范围或 IP/掩码。
is_permanent:
type: integer
enum: [0, 1]
description: 黑名单是否永久阻断,1 为永久,0 为临时。
block_time:
type: integer
description: 临时黑名单阻断时间,单位分钟,范围 1-1440。
ip_ver:
type: integer
enum: [0, 1]
description: 白名单 IP 版本,0 为 IPv4,1 为 IPv6。
ip_start:
type: string
description: 白名单起始 IP 或单个 IP。
ip_end:
type: string
description: 白名单 IP 范围结束 IP。
netmask:
type: integer
description: 白名单 IP/掩码的掩码长度。
desc:
type: string
description: 白名单描述。
status_code:
type: integer
enum: [400, 403, 404, 405, 500, 501, 505]
description: URI 拒绝策略返回的 HTTP 状态码。
description:
type: string
description: 策略描述。
operator:
type: string
enum: [location, rx]
description: URI 匹配方式。
no_case:
type: integer
enum: [0, 1]
description: URI 匹配是否忽略大小写。
http_method:
type: string
description: 可选的 HTTP 方法过滤条件。
capture_pkt:
type: integer
enum: [0, 1]
description: 是否抓包。
log:
type: integer
enum: [0, 1]
description: 是否记录拒绝规则日志。
body:
type: string
description: 规则例外 create/update/delete 使用的完整 JSON payload,传入对象或数组的 JSON 字符串。
required:
- action
handler:
type: script
script_file: 360_waf.handler.py
function: policy_ops
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
name: 360_waf_site
description: >
360 WAF v5.5 站点工具。通过 action 查询受保护站点列表、站点黑名单
或站点白名单记录。
category: custom
enabled: true
requires_confirmation: false
provider: 360_waf
inputSchema:
type: object
properties:
action:
type: string
description: 站点类操作名称。
enum:
- waf_site_list
- waf_blacklist_list
- waf_whitelist_list
- waf_whitelist_check_ip
- test
id:
type: string
description: 站点或白名单查询使用的站点 ID。
name:
type: string
description: 站点名称模糊过滤条件。
siteId:
type: integer
description: 查询黑名单使用的站点 ID。
type:
type: integer
description: 名单类型,通常 1 表示 IP,2 表示 URL 或域名。
enum: [1, 2]
ip:
type: string
description: 检查是否命中白名单的客户端 IP。
required:
- action
handler:
type: script
script_file: 360_waf.handler.py
function: site
Loading
Loading