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
580 lines
19 KiB
TypeScript
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> };
|