Files
SnowLuma/packages/sdk/tests/fixtures/action-contracts.ts
T
TanTan fa9c73363d
Dev Build / cleanup (push) Waiting to run
Dev Build / typecheck (push) Waiting to run
Publish MCP to npm / Build, test, and publish MCP (push) Waiting to run
Publish SDK to npm / Build, test, and publish SDK (push) Waiting to run
Sync action catalog to docs / sync (push) Waiting to run
Publish UI to npm / Build and publish UI (push) Waiting to run
Build and Release / preflight (push) Waiting to run
SnowLuma v2.4.2 source snapshot
2026-11-13 09:02:00 +08:00

580 lines
19 KiB
TypeScript

import type { ActionParams, ActionResult } from '@snowluma/sdk';
const album = { group_id: '10001', album_id: 'album' };
const mediaLike = { ...album, batch_id: '9007199254740993', lloc: 'photo' };
const mediaUpload = { ...album, album_name: 'Album', file: 'file:///fixture' };
const download = { file: 'https://example.com/file', file_id: 'cached', chunk_size: '65536' };
const fileset = { fileset_id: 'fileset' };
const flashFile = { ...fileset, file_name: 'file.txt', file_index: '0' };
const peer = { group_id: '10001', user_id: '10002', phone_number: '' };
const qzoneLike = { tid: 'post', target_uin: '10002', abstime: '1700000000' };
const qzonePublicFeed = {
cell_common: {
domain_type: 3,
union_id: { uf_key: '9007199254740993', unknown_identity: 'preserved' },
},
cell_feed_transfer: { opaque: 'fixture' },
unknown_cell: { decimal: '18446744073709551615' },
};
const qzonePublicComment = {
id: '9007199254740993',
user: { uid: 'public-reader' },
like: { id: 'comment-like-key' },
};
const qzonePublicReply = {
id: '18446744073709551615',
user: { uid: 'public-author' },
like: { id: 'reply-like-key' },
};
// The same examples are compiled against the published declarations and parsed
// by the real server action definitions. They never invoke QQ or perform I/O.
export const actionParams = {
get_friend_list: { with_profile: true },
get_friends_with_category: { with_profile: false },
get_group_admin_permissions: { group_id: '10001', user_id: '10002' },
set_group_admin_permissions: {
group_id: '10001',
user_id: '10002',
recall_member_message: false,
kick_member: true,
kick_member_per_day: '20',
},
set_group_admin_receive_verify: { group_id: '10001', user_id: '10002', enable: 'on' },
_get_friend_dress: { user_id: '10002' },
add_custom_face: { file: 'file:///fixture.png' },
cancel_group_album_media_like: mediaLike,
clean_stream_temp_file: {},
comment_qzone: {
tid: 'post',
content: 'Comment',
target_uin: '10002',
images: [],
comment_id: '0',
comment_uin: '10003',
reply_uin: '10004',
reply_name: 'Reader',
},
comment_qzone_public_feed: {
feed: qzonePublicFeed,
content: [{ type: 0, content: 'Comment', upstream_option: true }],
},
create_flash_task: {
files: ['file:///one', { file: 'file:///two', name: 'two.txt' }],
name: 'Files',
thumb_path: '',
},
del_group_album_media: { ...album, lloc: 'photo' },
delete_custom_face: { emoji_id: 'face' },
delete_flash_file: fileset,
delete_qzone_msg: { tid: 'post' },
delete_qzone_public_comment: { feed: qzonePublicFeed, comment: qzonePublicComment },
delete_qzone_public_reply: {
feed: qzonePublicFeed,
comment: qzonePublicComment,
reply: qzonePublicReply,
},
do_group_album_comment: { ...album, lloc: 'photo', content: 'Comment' },
download_file_image_stream: download,
download_file_record_stream: download,
download_file_stream: download,
download_fileset: flashFile,
fetch_custom_face_detail: { count: '48' },
fetch_ptt_text: { message_id: -42 },
forward_qzone_public_feed: { feed: qzonePublicFeed, reason: '' },
get_ptt_text: { message_id: '-42' },
get_record_text: { message_id: -42 },
get_doubt_friends_add_request: { count: '50' },
get_fileset_id: { share_code: 'share' },
get_fileset_info: fileset,
get_flash_file_list: fileset,
get_flash_file_url: flashFile,
get_group_album_list: { group_id: '10001' },
get_group_album_media_list: { ...album, attach_info: '' },
get_group_signed_list: { group_id: '10001' },
get_msg_emoji_likes: { message_id: '-42' },
get_qun_album_list: { group_id: '10001', attach_info: '' },
get_qzone_feeds: { page_num: '1', count: '10', cursor: 'cursor-from-previous-response' },
get_qzone_msg_list: { target_uin: '10002', pos: '0', num: '20' },
get_qzone_profile: { target_uin: '10002' },
get_qzone_public_capabilities: {},
get_qzone_home_feeds: { target_uin: '10001', cursor: 'home-feed-cursor' },
get_qzone_feed_detail: { tid: '1127000000f1536501000000' },
get_qzone_share_ark: { feed: qzonePublicFeed },
get_qzone_public_comments: { feed: qzonePublicFeed, cursor: 'comments-from-detail' },
get_qzone_public_feed_detail: { feed: qzonePublicFeed },
get_qzone_public_feeds: { cursor: 'public-feed-cursor' },
get_qzone_public_replies: {
feed: qzonePublicFeed,
comment: qzonePublicComment,
cursor: '',
page_size: '20',
},
get_rkey_server: {},
get_share_link: fileset,
like_qzone: qzoneLike,
list_filesets: {},
modify_custom_face: { emoji_id: 'face', desc: 'Description' },
move_custom_face_to_front: { emoji_id: 'face' },
rename_flash_file: { ...fileset, new_name: 'new.txt' },
reply_qzone_public_feed: {
feed: qzonePublicFeed,
comment: qzonePublicComment,
content: 'Reply',
reply: qzonePublicReply,
},
request_decrypt_key: { db_path: '/fixture.db' },
send_ark_share: peer,
send_flash_msg: { ...fileset, group_id: '10001', user_id: '10002' },
send_group_ark_share: { group_id: '10001' },
send_qzone_msg: {
content: 'Post',
images: [],
ugc_right: '16',
target_uins: ['10002'],
},
send_tuwen_ark: {
group_id: '10001',
user_id: '10002',
title: 'Title',
desc: 'Description',
summary: 'Summary',
preview_url: '',
jump_url: 'https://example.com/',
},
set_doubt_friends_add_request: { flag: 'u_fixture', approve: 'yes' },
set_group_album_media_like: mediaLike,
set_group_member_invite_policy: { group_id: '10001', policy: 'require_approval' },
set_group_member_permissions: {
group_id: '10001',
allow_member_upload_album: false,
allow_member_temporary_session: 'off',
allow_member_create_group: 1,
},
set_group_new_member_history_visibility: { group_id: '10001', visible: 'on' },
set_group_robot_add_option: {
group_id: '10001',
robot_member_switch: '1',
robot_member_examine: '0',
},
set_qzone_ban: { user_id: '10002', enable: false },
set_qzone_msg_right: { tid: 'post', ugc_right: '128', target_uins: ['10002'] },
set_qzone_profile: { name: 'Space', description: '' },
set_qzone_public_follow: { feed: qzonePublicFeed, enable: 'off' },
set_qzone_public_comment_like: {
feed: qzonePublicFeed,
comment: qzonePublicComment,
reply: qzonePublicReply,
enable: 'on',
},
set_qzone_public_like: { feed: qzonePublicFeed, enable: 0 },
set_qzone_public_upvote: { feed: qzonePublicFeed, enable: true },
share_group_ex: { group_id: '10001' },
share_peer: peer,
test_download_stream: { error: false },
unlike_qzone: qzoneLike,
upload_file_stream: {
stream_id: 'fixture',
chunk_data: 'YQ==',
chunk_index: '0',
total_chunks: '1',
file_size: '1',
expected_sha256: '',
is_complete: 'false',
filename: 'file.txt',
reset: false,
verify_only: 0,
file_retention: '0',
},
upload_image_to_qun_album: mediaUpload,
upload_video_to_qun_album: mediaUpload,
'.handle_quick_operation_async': { context: {}, operation: {} },
} satisfies { [K in CoveredAction]: ActionParams<K> };
// Keep this independent of SnowLumaActionMap: a missing map entry must fail the
// consumer's coverage check rather than silently remove that example.
export type CoveredAction =
| 'get_friend_list'
| 'get_friends_with_category'
| 'get_group_admin_permissions'
| 'set_group_admin_permissions'
| 'set_group_admin_receive_verify'
| '_get_friend_dress'
| 'add_custom_face'
| 'cancel_group_album_media_like'
| 'clean_stream_temp_file'
| 'comment_qzone'
| 'comment_qzone_public_feed'
| 'create_flash_task'
| 'del_group_album_media'
| 'delete_custom_face'
| 'delete_flash_file'
| 'delete_qzone_msg'
| 'delete_qzone_public_comment'
| 'delete_qzone_public_reply'
| 'do_group_album_comment'
| 'download_file_image_stream'
| 'download_file_record_stream'
| 'download_file_stream'
| 'download_fileset'
| 'fetch_custom_face_detail'
| 'fetch_ptt_text'
| 'forward_qzone_public_feed'
| 'get_ptt_text'
| 'get_record_text'
| 'get_doubt_friends_add_request'
| 'get_fileset_id'
| 'get_fileset_info'
| 'get_flash_file_list'
| 'get_flash_file_url'
| 'get_group_album_list'
| 'get_group_album_media_list'
| 'get_group_signed_list'
| 'get_msg_emoji_likes'
| 'get_qun_album_list'
| 'get_qzone_feeds'
| 'get_qzone_msg_list'
| 'get_qzone_profile'
| 'get_qzone_public_capabilities'
| 'get_qzone_home_feeds'
| 'get_qzone_feed_detail'
| 'get_qzone_share_ark'
| 'get_qzone_public_comments'
| 'get_qzone_public_feed_detail'
| 'get_qzone_public_feeds'
| 'get_qzone_public_replies'
| 'get_rkey_server'
| 'get_share_link'
| 'like_qzone'
| 'list_filesets'
| 'modify_custom_face'
| 'move_custom_face_to_front'
| 'rename_flash_file'
| 'reply_qzone_public_feed'
| 'request_decrypt_key'
| 'send_ark_share'
| 'send_flash_msg'
| 'send_group_ark_share'
| 'send_qzone_msg'
| 'send_tuwen_ark'
| 'set_doubt_friends_add_request'
| 'set_group_album_media_like'
| 'set_group_member_invite_policy'
| 'set_group_member_permissions'
| 'set_group_new_member_history_visibility'
| 'set_group_robot_add_option'
| 'set_qzone_ban'
| 'set_qzone_msg_right'
| 'set_qzone_profile'
| 'set_qzone_public_follow'
| 'set_qzone_public_comment_like'
| 'set_qzone_public_like'
| 'set_qzone_public_upvote'
| 'share_group_ex'
| 'share_peer'
| 'test_download_stream'
| 'unlike_qzone'
| 'upload_file_stream'
| 'upload_image_to_qun_album'
| 'upload_video_to_qun_album'
| '.handle_quick_operation_async';
const flashInfo = {
fileset_id: 'fileset',
file_name: 'file.txt',
orig_name: 'original.txt',
size: 42,
share_url: 'https://example.com/share',
file_id: 'file',
download_url: '',
};
export const actionResults = {
get_friend_list: [
{
user_id: 10001,
nickname: 'Friend',
remark: '',
category_id: 0,
long_nick: '',
age: 0,
is_qq_vip: false,
privilege_icons: {
open: [{ type: 1, icon_url: 'normal', deluxe_icon_url: 'deluxe' }],
closed: [],
},
},
],
get_friends_with_category: [
{
categoryId: 0,
categoryName: 'Friends',
categoryMbCount: 1,
buddyList: [{ user_id: 10001, nickname: 'Friend', remark: '', city: 'City' }],
},
],
get_group_admin_permissions: {
group_id: 10001,
user_id: 10002,
recall_member_message: null,
kick_member: true,
kick_member_per_day: 20,
receive_verify: false,
},
set_group_admin_permissions: null,
set_group_admin_receive_verify: null,
_get_friend_dress: {
target_uin: '10002',
is_svip: true,
avatar_url: '',
items: [
{
app_id: 15,
kind: 'card',
item_id: 1,
name: 'Card',
preview_url: '',
video_url: '',
price: 0,
},
],
},
add_custom_face: { emoji_id: 'face' },
cancel_group_album_media_like: {},
clean_stream_temp_file: { message: 'success', removed: 1, freed_bytes: 42, skipped_active: 1 },
comment_qzone: { comment_id: 'comment' },
comment_qzone_public_feed: { comment: qzonePublicComment },
create_flash_task: { fileset_id: 'fileset', task_id: 'fileset' },
del_group_album_media: { success: true },
delete_custom_face: null,
delete_flash_file: null,
delete_qzone_msg: null,
delete_qzone_public_comment: {},
delete_qzone_public_reply: {},
do_group_album_comment: {
id: 'comment',
user: { uin: '10002' },
content: [{ type: 0, content: 'Comment' }],
time: '1700000000',
clientKey: 'fixture',
},
download_file_image_stream: {
type: 'stream',
data_type: 'file_info',
file_name: 'image',
file_size: 1,
chunk_size: 1,
},
download_file_record_stream: {
type: 'stream',
data_type: 'file_chunk',
index: 0,
data: 'YQ==',
size: 1,
progress: 100,
base64_size: 4,
},
download_file_stream: {
type: 'response',
data_type: 'file_complete',
file_name: 'file',
total_chunks: 1,
total_bytes: 1,
message: 'Download completed',
},
download_fileset: { url: '', file_name: 'file.txt', file_size: 42 },
fetch_custom_face_detail: [{ emoji_id: 'face', resId: 'face', url: '', md5: '', desc: '' }],
fetch_ptt_text: { text: 'Speech' },
forward_qzone_public_feed: {},
get_ptt_text: { text: 'Speech' },
get_record_text: { text: 'Speech' },
get_doubt_friends_add_request: [
{
uid: 'u_fixture',
user_id: 10002,
nick: 'User',
source: '',
reason: '',
msg: '',
group_code: '',
reqTime: 0,
},
],
get_fileset_id: { fileset_id: 'fileset' },
get_fileset_info: { fileset_id: 'fileset', file_list: [flashInfo] },
get_flash_file_list: [flashInfo],
get_flash_file_url: { url: '' },
get_group_album_list: [
{
id: 'album',
name: 'Album',
picNum: 1,
createTime: 1,
desc: '',
owner: '10002',
createuin: '10002',
createnickname: 'User',
last_upload_time: 1,
cover: null,
},
],
get_group_album_media_list: {
mediaList: [
{
type: 2,
video: { id: 'video', videoTime: '1000' },
batchId: '9007199254740993',
uploadTime: '1',
},
],
nextAttachInfo: '',
},
get_group_signed_list: [{ user_id: 10002, nick: 'User', time: 1, rank: 1 }],
get_msg_emoji_likes: [
{
emoji_id: '1',
emoji_type: 1,
count: 1,
last_reaction_time: 1,
users: [{ user_id: 10002 }],
},
],
get_qun_album_list: {
album_list: [
{
album_id: 'album',
owner: '10002',
name: 'Album',
desc: '',
create_time: '1',
modify_time: '1',
last_upload_time: '1',
upload_number: '9007199254740993',
cover: {
type: 1,
image: {
name: '',
sloc: '',
lloc: '',
photoUrls: [],
defaultUrl: null,
isGif: false,
hasRaw: false,
},
},
top_flag: '0',
busi_type: 0,
status: 0,
allow_share: true,
is_subscribe: false,
bitmap: '',
is_share_album: false,
qz_album_type: 0,
cover_type: 0,
default_desc: '',
sort_type: 0,
},
],
attach_info: '',
has_more: false,
},
get_qzone_feeds: {
feeds: [{ uin: 10002, nickname: 'User', time: 1, appid: 311, key: 'post', html: '' }],
has_more: false,
},
get_qzone_msg_list: {
total: 1,
msglist: [
{
tid: 'post',
content: 'Post',
time: 1,
comment_num: 0,
is_private: false,
images: [],
},
],
},
get_qzone_profile: { name: 'Space', description: 'Description' },
get_qzone_public_capabilities: { public_qzone_entrance_switch: true, can_upvote: true },
get_qzone_home_feeds: { feeds: [qzonePublicFeed], has_more: false, next_cursor: null },
get_qzone_feed_detail: {
feed: {
cell_common: { domain_type: 1, union_id: { feed_id: '1127000000f1536501000000' } },
cell_pic: { future_image_field: true },
},
attach_info: 'comments-from-detail',
},
get_qzone_share_ark: {
ark: '{"app":"com.tencent.tuwen.lua"}',
requires_confirmation: false,
notice: null,
},
get_qzone_public_comments: {
cell_comment: { comments: [qzonePublicComment] },
attach_info: 'next-comments',
has_more: true,
},
get_qzone_public_feed_detail: {
feed: { feed: qzonePublicFeed },
attach_info: 'comments-from-detail',
has_more: true,
},
get_qzone_public_feeds: {
feeds: [qzonePublicFeed],
has_more: true,
next_cursor: 'public-feed-cursor',
unknown_page: { preserved: true },
},
get_qzone_public_replies: {
replys: [qzonePublicReply],
reply_attach_info: '',
has_more: false,
},
get_rkey_server: { expired_time: 1, name: 'SnowLuma', private_rkey: 'fixture' },
get_share_link: 'https://example.com/share',
like_qzone: null,
list_filesets: [flashInfo],
modify_custom_face: null,
move_custom_face_to_front: null,
rename_flash_file: null,
reply_qzone_public_feed: { reply: qzonePublicReply },
request_decrypt_key: { db_key: 'fixture' },
send_ark_share: { arkMsg: '{}' },
send_flash_msg: { message_id: 0 },
send_group_ark_share: '{}',
send_qzone_msg: { tid: 'post', time: 1 },
send_tuwen_ark: null,
set_doubt_friends_add_request: null,
set_group_album_media_like: { id: 'like', status: 1 },
set_group_member_invite_policy: null,
set_group_member_permissions: null,
set_group_new_member_history_visibility: null,
set_group_robot_add_option: null,
set_qzone_ban: null,
set_qzone_msg_right: { ugc_right: 128 },
set_qzone_profile: null,
set_qzone_public_follow: { ret_code: 0 },
set_qzone_public_comment_like: { like: { status: 1 } },
set_qzone_public_like: { like: { liked: true } },
set_qzone_public_upvote: { upvote: { upvoted: true } },
share_group_ex: '{}',
share_peer: { arkMsg: '{}' },
test_download_stream: {
type: 'response',
data_type: 'data_complete',
data: 'Stream transmission complete',
},
unlike_qzone: null,
upload_file_stream: {
type: 'stream',
stream_id: 'fixture',
status: 'chunk_received',
received_chunks: 1,
total_chunks: 1,
},
upload_image_to_qun_album: null,
upload_video_to_qun_album: { id: 'video' },
'.handle_quick_operation_async': null,
} satisfies { [K in CoveredAction]: ActionResult<K> };