mirror of
https://github.com/hansjone/oclaw.git
synced 2026-10-14 11:10:47 +08:00
feat(channel): deliver generated files on WhatsApp and honor user tool policy
Add save_deliverable_attachment for explicit document outbound, pass channel user_id into tool risk gating so write_file/run_command respect per-user allow_high settings, and document the workflow in channel-file-delivery skill. Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
parent
61d54b10fd
commit
19f4d285ce
9 changed files with 346 additions and 37 deletions
|
|
@ -188,6 +188,37 @@ def test_collect_recent_tool_attachments_ignores_text_ref_from_lookup_tools() ->
|
|||
assert out == []
|
||||
|
||||
|
||||
def test_collect_recent_tool_attachments_includes_deliverable_binary_ref() -> None:
|
||||
rows = [
|
||||
_Row(role="user", content="export", attachments=None),
|
||||
_Row(
|
||||
role="tool",
|
||||
content="{}",
|
||||
attachments='[{"type":"binary_ref","attachment_id":"gen-xlsx","name":"report.xlsx","mime":"application/vnd.openxmlformats-officedocument.spreadsheetml.sheet","deliverable":true}]',
|
||||
),
|
||||
_Row(role="assistant", content="done", attachments=None),
|
||||
]
|
||||
out = _collect_recent_tool_attachments(store=_FakeStore(rows), session_id="s1")
|
||||
assert len(out) == 1
|
||||
assert out[0].get("attachment_id") == "gen-xlsx"
|
||||
assert out[0].get("deliverable") is True
|
||||
|
||||
|
||||
def test_collect_recent_tool_attachments_includes_deliverable_text_ref() -> None:
|
||||
rows = [
|
||||
_Row(role="user", content="export", attachments=None),
|
||||
_Row(
|
||||
role="tool",
|
||||
content="{}",
|
||||
attachments='[{"type":"text_ref","attachment_id":"gen-txt","name":"out.txt","mime":"text/plain","deliverable":true}]',
|
||||
),
|
||||
_Row(role="assistant", content="done", attachments=None),
|
||||
]
|
||||
out = _collect_recent_tool_attachments(store=_FakeStore(rows), session_id="s1")
|
||||
assert len(out) == 1
|
||||
assert out[0].get("attachment_id") == "gen-txt"
|
||||
|
||||
|
||||
def test_maybe_add_media_path_for_wechat_reply_sets_media_path(monkeypatch) -> None:
|
||||
# Avoid touching disk: stub AttachmentAssetStore.get_local_path.
|
||||
from pathlib import Path
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue