@sendbird/cli 0.0.0-stage → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (182) hide show
  1. package/.claude-plugin/plugin.json +11 -0
  2. package/.codex-plugin/plugin.json +39 -0
  3. package/LICENSE +13 -0
  4. package/NOTICE.md +1105 -0
  5. package/PROVENANCE.md +15 -0
  6. package/README.md +44 -2
  7. package/dist/acl.d.ts +2 -0
  8. package/dist/acl.js +12 -0
  9. package/dist/acl.js.map +1 -0
  10. package/dist/billing-plan.d.ts +68 -0
  11. package/dist/billing-plan.js +235 -0
  12. package/dist/billing-plan.js.map +1 -0
  13. package/dist/browser.d.ts +1 -0
  14. package/dist/browser.js +20 -0
  15. package/dist/browser.js.map +1 -0
  16. package/dist/calls-catalog.d.ts +79 -0
  17. package/dist/calls-catalog.js +322 -0
  18. package/dist/calls-catalog.js.map +1 -0
  19. package/dist/calls-credits.d.ts +31 -0
  20. package/dist/calls-credits.js +224 -0
  21. package/dist/calls-credits.js.map +1 -0
  22. package/dist/calls-trial.d.ts +45 -0
  23. package/dist/calls-trial.js +77 -0
  24. package/dist/calls-trial.js.map +1 -0
  25. package/dist/calls.d.ts +10 -0
  26. package/dist/calls.js +470 -0
  27. package/dist/calls.js.map +1 -0
  28. package/dist/catalog.d.ts +67 -0
  29. package/dist/catalog.js +784 -0
  30. package/dist/catalog.js.map +1 -0
  31. package/dist/cli.d.ts +6 -0
  32. package/dist/cli.js +502 -0
  33. package/dist/cli.js.map +1 -0
  34. package/dist/core.d.ts +86 -0
  35. package/dist/core.js +531 -0
  36. package/dist/core.js.map +1 -0
  37. package/dist/diagnostics.d.ts +206 -0
  38. package/dist/diagnostics.js +664 -0
  39. package/dist/diagnostics.js.map +1 -0
  40. package/dist/discovery.d.ts +703 -0
  41. package/dist/discovery.js +846 -0
  42. package/dist/discovery.js.map +1 -0
  43. package/dist/docs.d.ts +31 -0
  44. package/dist/docs.js +139 -0
  45. package/dist/docs.js.map +1 -0
  46. package/dist/features.d.ts +131 -0
  47. package/dist/features.js +227 -0
  48. package/dist/features.js.map +1 -0
  49. package/dist/generated-api.d.ts +116 -0
  50. package/dist/generated-api.js +118 -0
  51. package/dist/generated-api.js.map +1 -0
  52. package/dist/human-format.d.ts +40 -0
  53. package/dist/human-format.js +205 -0
  54. package/dist/human-format.js.map +1 -0
  55. package/dist/human-list.d.ts +2 -0
  56. package/dist/human-list.js +368 -0
  57. package/dist/human-list.js.map +1 -0
  58. package/dist/human-output.d.ts +10 -0
  59. package/dist/human-output.js +1351 -0
  60. package/dist/human-output.js.map +1 -0
  61. package/dist/human-pro.d.ts +3 -0
  62. package/dist/human-pro.js +201 -0
  63. package/dist/human-pro.js.map +1 -0
  64. package/dist/human-progress.d.ts +5 -0
  65. package/dist/human-progress.js +49 -0
  66. package/dist/human-progress.js.map +1 -0
  67. package/dist/local.d.ts +42 -0
  68. package/dist/local.js +707 -0
  69. package/dist/local.js.map +1 -0
  70. package/dist/oauth-callback.d.ts +3 -0
  71. package/dist/oauth-callback.js +66 -0
  72. package/dist/oauth-callback.js.map +1 -0
  73. package/dist/oauth-lock.d.ts +6 -0
  74. package/dist/oauth-lock.js +212 -0
  75. package/dist/oauth-lock.js.map +1 -0
  76. package/dist/oauth.d.ts +32 -0
  77. package/dist/oauth.js +493 -0
  78. package/dist/oauth.js.map +1 -0
  79. package/dist/presentation.d.ts +208 -0
  80. package/dist/presentation.js +156 -0
  81. package/dist/presentation.js.map +1 -0
  82. package/dist/pro-api-catalog.d.ts +24 -0
  83. package/dist/pro-api-catalog.js +619 -0
  84. package/dist/pro-api-catalog.js.map +1 -0
  85. package/dist/pro-api.d.ts +10 -0
  86. package/dist/pro-api.js +338 -0
  87. package/dist/pro-api.js.map +1 -0
  88. package/dist/project.d.ts +34 -0
  89. package/dist/project.js +62 -0
  90. package/dist/project.js.map +1 -0
  91. package/dist/recovery.d.ts +41 -0
  92. package/dist/recovery.js +417 -0
  93. package/dist/recovery.js.map +1 -0
  94. package/dist/runner.d.ts +47 -0
  95. package/dist/runner.js +603 -0
  96. package/dist/runner.js.map +1 -0
  97. package/dist/sdk-catalog.d.ts +69 -0
  98. package/dist/sdk-catalog.js +527 -0
  99. package/dist/sdk-catalog.js.map +1 -0
  100. package/dist/sdk-config.d.ts +19 -0
  101. package/dist/sdk-config.js +85 -0
  102. package/dist/sdk-config.js.map +1 -0
  103. package/dist/sdk-dto.d.ts +244 -0
  104. package/dist/sdk-dto.js +98 -0
  105. package/dist/sdk-dto.js.map +1 -0
  106. package/dist/sdk-limits.d.ts +2 -0
  107. package/dist/sdk-limits.js +3 -0
  108. package/dist/sdk-limits.js.map +1 -0
  109. package/dist/sdk-node-file-reader.d.ts +6 -0
  110. package/dist/sdk-node-file-reader.js +38 -0
  111. package/dist/sdk-node-file-reader.js.map +1 -0
  112. package/dist/sdk-pro-catalog.d.ts +22 -0
  113. package/dist/sdk-pro-catalog.js +234 -0
  114. package/dist/sdk-pro-catalog.js.map +1 -0
  115. package/dist/sdk-pro-runtime.d.ts +31 -0
  116. package/dist/sdk-pro-runtime.js +293 -0
  117. package/dist/sdk-pro-runtime.js.map +1 -0
  118. package/dist/sdk-query.d.ts +10 -0
  119. package/dist/sdk-query.js +29 -0
  120. package/dist/sdk-query.js.map +1 -0
  121. package/dist/sdk-runtime.d.ts +15 -0
  122. package/dist/sdk-runtime.js +685 -0
  123. package/dist/sdk-runtime.js.map +1 -0
  124. package/dist/sdk-worker.d.ts +1 -0
  125. package/dist/sdk-worker.js +26 -0
  126. package/dist/sdk-worker.js.map +1 -0
  127. package/dist/sdk.d.ts +29 -0
  128. package/dist/sdk.js +346 -0
  129. package/dist/sdk.js.map +1 -0
  130. package/dist/search-engine.d.ts +17 -0
  131. package/dist/search-engine.js +54 -0
  132. package/dist/search-engine.js.map +1 -0
  133. package/dist/search-intents.d.ts +2 -0
  134. package/dist/search-intents.js +106 -0
  135. package/dist/search-intents.js.map +1 -0
  136. package/dist/search.d.ts +7 -0
  137. package/dist/search.js +58 -0
  138. package/dist/search.js.map +1 -0
  139. package/dist/secret-output.d.ts +2 -0
  140. package/dist/secret-output.js +108 -0
  141. package/dist/secret-output.js.map +1 -0
  142. package/dist/shell.d.ts +3 -0
  143. package/dist/shell.js +14 -0
  144. package/dist/shell.js.map +1 -0
  145. package/dist/skills.d.ts +210 -0
  146. package/dist/skills.js +374 -0
  147. package/dist/skills.js.map +1 -0
  148. package/dist/value-semantics.d.ts +70 -0
  149. package/dist/value-semantics.js +173 -0
  150. package/dist/value-semantics.js.map +1 -0
  151. package/dist/version.d.ts +1 -0
  152. package/dist/version.js +3 -0
  153. package/dist/version.js.map +1 -0
  154. package/dist/windows.d.ts +4 -0
  155. package/dist/windows.js +136 -0
  156. package/dist/windows.js.map +1 -0
  157. package/dist/workflows.d.ts +228 -0
  158. package/dist/workflows.js +1207 -0
  159. package/dist/workflows.js.map +1 -0
  160. package/package.json +90 -4
  161. package/plugin.json +25 -0
  162. package/references/agent-guide.json +199 -0
  163. package/references/commands.md +247 -0
  164. package/references/dashboard-inventory.json +14796 -0
  165. package/references/docs-index.json +5329 -0
  166. package/references/sdk-commands.json +15065 -0
  167. package/references/workflows.json +1246 -0
  168. package/skills/sendbird/SKILL.md +96 -0
  169. package/skills/sendbird/agents/openai.yaml +4 -0
  170. package/skills/sendbird/references/build-chat-app.md +50 -0
  171. package/skills/sendbird/references/client-guide.md +34 -0
  172. package/skills/sendbird/references/client-plugin-bridge.md +77 -0
  173. package/skills/sendbird/references/client-plugin-install.md +39 -0
  174. package/skills/sendbird/references/operational-checks.md +35 -0
  175. package/skills/sendbird/references/pro-capabilities.md +52 -0
  176. package/skills/sendbird/scripts/client-guide.mjs +283 -0
  177. package/skills/sendbird/scripts/client-plugin-bridge.mjs +703 -0
  178. package/skills/sendbird-setup/SKILL.md +18 -0
  179. package/skills/sendbird-setup/agents/openai.yaml +4 -0
  180. package/skills/sendbird-setup/references/onboarding.md +73 -0
  181. package/skills/sendbird-setup/scripts/install-cli.mjs +447 -0
  182. package/skills/sendbird-setup/scripts/npm-run.mjs +34 -0
@@ -0,0 +1,234 @@
1
+ /** Pro SDK operations retain Chat-user permissions; none use management keys. */
2
+ import { z } from "zod";
3
+ import { SDK_QUERY_PAGE_LIMIT } from "./sdk-limits.js";
4
+ const text = z.string().min(1);
5
+ const id = z.number().int().positive().max(Number.MAX_SAFE_INTEGER);
6
+ const timestamp = z.number().int().nonnegative().max(Number.MAX_SAFE_INTEGER);
7
+ const channel = { type: z.enum(["open", "group", "supergroup"]), id: text };
8
+ const group = { ...channel, type: z.enum(["group", "supergroup"]) };
9
+ const paging = {
10
+ limit: z.number().int().min(1).max(100).default(20),
11
+ page: z.number().int().min(1).max(SDK_QUERY_PAGE_LIMIT).default(1),
12
+ };
13
+ const pageResult = {
14
+ has_more: z.boolean(),
15
+ page: id,
16
+ next_page: id.nullable(),
17
+ pagination: text,
18
+ };
19
+ export const metaArray = z
20
+ .object({ key: text.max(128), value: z.array(z.string()).max(100) })
21
+ .strict();
22
+ export const expressiveFields = {
23
+ mention_type: z.enum(["users", "channel"]).optional(),
24
+ mentioned_user_ids: z.array(text).max(10).optional(),
25
+ meta_arrays: z.array(metaArray).max(100).optional(),
26
+ };
27
+ export const translationFields = {
28
+ translation_target_languages: z.array(text.max(16)).max(10).optional(),
29
+ };
30
+ const poll = z.object({
31
+ poll_id: id,
32
+ title: z.string().nullable(),
33
+ status: text,
34
+ message_id: z.number(),
35
+ close_at: z.number(),
36
+ voter_count: z.number(),
37
+ options: z.array(z.object({
38
+ option_id: id,
39
+ text: z.string().nullable(),
40
+ vote_count: z.number(),
41
+ })),
42
+ voted_option_ids: z.array(id),
43
+ allow_multiple_votes: z.boolean(),
44
+ allow_user_suggestion: z.boolean(),
45
+ });
46
+ const pollFields = {
47
+ title: text.max(1000).optional(),
48
+ allow_multiple_votes: z.boolean().optional(),
49
+ allow_user_suggestion: z.boolean().optional(),
50
+ close_at: z.number().int().min(-1).optional(),
51
+ };
52
+ const window = z
53
+ .object({
54
+ start_hour: z.number().int().min(0).max(23),
55
+ start_minute: z.number().int().min(0).max(59),
56
+ end_hour: z.number().int().min(0).max(23),
57
+ end_minute: z.number().int().min(0).max(59),
58
+ })
59
+ .strict();
60
+ const schedules = z
61
+ .object(Object.fromEntries([
62
+ "sunday",
63
+ "monday",
64
+ "tuesday",
65
+ "wednesday",
66
+ "thursday",
67
+ "friday",
68
+ "saturday",
69
+ ].map((day) => [day, z.array(window).max(10).optional()])))
70
+ .strict();
71
+ export function proSdkDefinitions(message, user) {
72
+ const definitions = [];
73
+ const add = (name, action, description, api, params, body, response, mutates = false, danger = false) => definitions.push({
74
+ name,
75
+ action,
76
+ description,
77
+ method: "SDK",
78
+ path: api,
79
+ scope: "app",
80
+ params,
81
+ body,
82
+ response,
83
+ mutates,
84
+ danger,
85
+ source: ["@sendbird/chat", api],
86
+ ...(action === "dnd-set"
87
+ ? { example: { timezone: "Asia/Seoul", schedules: {} } }
88
+ : {}),
89
+ });
90
+ const empty = z.object({});
91
+ add("chat message search", "message-search", "Search indexed messages visible to the connected user; index delay and authorization apply", "SendbirdChat.createMessageSearchQuery", empty, z
92
+ .object({
93
+ ...paging,
94
+ keyword: text,
95
+ channel_url: text.optional(),
96
+ channel_custom_type: z.string().optional(),
97
+ from: timestamp.optional(),
98
+ to: timestamp.optional(),
99
+ order: z.enum(["score", "ts"]).default("score"),
100
+ reverse: z.boolean().default(false),
101
+ exact_match: z.boolean().default(false),
102
+ advanced_query: z.boolean().default(false),
103
+ })
104
+ .strict(), z.object({
105
+ ...pageResult,
106
+ messages: z.array(message),
107
+ total_count: z.number(),
108
+ }));
109
+ add("chat sdk user search", "user-search", "Search SDK-visible users by nickname prefix, IDs or metadata", "SendbirdChat.createApplicationUserListQuery", empty, z
110
+ .object({
111
+ ...paging,
112
+ nickname_prefix: text.optional(),
113
+ user_ids: z.array(text).max(100).optional(),
114
+ metadata_key: text.optional(),
115
+ metadata_values: z.array(z.string()).max(100).optional(),
116
+ })
117
+ .strict(), z.object({ ...pageResult, users: z.array(user) }));
118
+ for (const operation of ["block", "unblock"])
119
+ add(`chat sdk user ${operation}`, `user-${operation}`, `${operation} a user for the connected Chat user; this is not a channel ban`, `SendbirdChat.${operation}UserWithUserId`, z.object({ user_id: text }), undefined, z.object({ user_id: text, blocked: z.boolean() }), true, true);
120
+ add("chat sdk user blocked list", "user-blocked", "List the connected user's blocked users", "SendbirdChat.createBlockedUserListQuery", empty, z.object(paging).strict(), z.object({ ...pageResult, users: z.array(user) }));
121
+ for (const operation of ["get", "set"]) {
122
+ add(`chat sdk user languages ${operation}`, `languages-${operation}`, `${operation} the connected user's preferred languages for translated Push`, operation === "get"
123
+ ? "SendbirdChat.connect"
124
+ : "SendbirdChat.updateCurrentUserInfoWithPreferredLanguages", empty, operation === "set"
125
+ ? z.object({ languages: z.array(text.max(16)).max(10) }).strict()
126
+ : undefined, z.object({ user_id: text, languages: z.array(z.string()).nullable() }), operation === "set");
127
+ add(`chat sdk user dnd ${operation}`, `dnd-${operation}`, `${operation} the connected user's weekly Do Not Disturb schedule; empty schedules disable DND`, operation === "get"
128
+ ? "SendbirdChat.getWeeklyDoNotDisturb"
129
+ : "SendbirdChat.setWeeklyDoNotDisturb", empty, operation === "set"
130
+ ? z.object({ schedules, timezone: text }).strict()
131
+ : undefined, z.object({
132
+ enabled: z.boolean(),
133
+ timezone: z.string().nullable(),
134
+ schedules: z.record(z.string(), z.array(window)),
135
+ }), operation === "set");
136
+ }
137
+ add("chat sdk poll create", "poll-create", "Create an unattached poll; attach explicitly with chat message send --poll-id", "PollModule.create", empty, z
138
+ .object({
139
+ ...pollFields,
140
+ title: text.max(1000),
141
+ options: z.array(text.max(1000)).min(1).max(100),
142
+ })
143
+ .strict(), poll, true);
144
+ for (const operation of ["get", "update", "close", "delete"])
145
+ add(`chat sdk poll ${operation}`, `poll-${operation}`, `${operation} a poll in the selected Group/Supergroup`, operation === "get" ? "PollModule.get" : `BaseChannel.${operation}Poll`, z.object({ ...group, poll_id: id }), operation === "update" ? z.object(pollFields).strict() : undefined, operation === "delete"
146
+ ? z.object({ poll_id: id, deleted: z.literal(true) })
147
+ : poll, operation !== "get", operation === "close" || operation === "delete");
148
+ for (const operation of ["update", "delete"])
149
+ add(`chat sdk poll option ${operation}`, `poll-option-${operation}`, `${operation} a poll option subject to creator/operator permissions`, `BaseChannel.${operation}PollOption`, z.object({ ...group, poll_id: id, option_id: id }), operation === "update" ? z.object({ text }).strict() : undefined, operation === "delete"
150
+ ? z.object({ poll_id: id, option_id: id, deleted: z.literal(true) })
151
+ : poll, true, operation === "delete");
152
+ add("chat sdk poll voters list", "poll-voters", "List one bounded page of voters for a poll option", "BaseChannel.createPollVoterListQuery", z.object({ ...group, poll_id: id, option_id: id }), z.object(paging).strict(), z.object({ ...pageResult, users: z.array(user) }));
153
+ for (const operation of [
154
+ "keys-create",
155
+ "keys-delete",
156
+ "values-add",
157
+ "values-remove",
158
+ ]) {
159
+ const [kind, verb] = operation.split("-");
160
+ const api = kind === "keys"
161
+ ? `${verb === "create" ? "create" : "delete"}MessageMetaArrayKeys`
162
+ : `${verb === "add" ? "add" : "remove"}MessageMetaArrayValues`;
163
+ add(`chat message meta ${kind} ${verb}`, `meta-${operation}`, `${verb} message meta-array ${kind}; not channel metadata`, `BaseChannel.${api}`, z.object({ ...channel, message_id: id }), z
164
+ .object(kind === "keys"
165
+ ? { keys: z.array(text).min(1).max(100) }
166
+ : { meta_arrays: z.array(metaArray).min(1).max(100) })
167
+ .strict(), message, true, verb === "delete" || verb === "remove");
168
+ }
169
+ for (const [noun, action, api] of [
170
+ ["banned", "banned-list", "createBannedUserListQuery"],
171
+ ["muted", "muted-list", "createMutedUserListQuery"],
172
+ ["operators", "operators-list", "createOperatorListQuery"],
173
+ ])
174
+ add(`chat sdk channel ${noun} list`, action, `List one bounded page of ${noun} users under SDK permission`, `BaseChannel.${api}`, z.object(channel), z.object(paging).strict(), z.object({ ...pageResult, users: z.array(user) }));
175
+ for (const subject of ["channel", "user", "message"])
176
+ add(`chat sdk report ${subject}`, `report-${subject}`, `Submit a ${subject} report as the connected user; this is a real moderation submission`, subject === "channel"
177
+ ? "BaseChannel.report"
178
+ : `BaseChannel.report${subject === "user" ? "User" : "Message"}`, z.object({
179
+ ...channel,
180
+ ...(subject === "user"
181
+ ? { user_id: text }
182
+ : subject === "message"
183
+ ? { message_id: id }
184
+ : {}),
185
+ }), z
186
+ .object({
187
+ category: z.enum([
188
+ "spam",
189
+ "harassing",
190
+ "suspicious",
191
+ "inappropriate",
192
+ ]),
193
+ description: text.max(4000),
194
+ })
195
+ .strict(), z.object({
196
+ reported: z.literal(true),
197
+ subject: z.enum(["channel", "user", "message"]),
198
+ }), true, true);
199
+ for (const operation of ["register", "unregister"]) {
200
+ add(`chat sdk user device ${operation}`, `device-${operation}`, `${operation} one authorized device Push token for the current user; no other devices are removed`, "SendbirdChat." +
201
+ (operation === "register"
202
+ ? "registerFCMPushTokenForCurrentUser"
203
+ : "unregisterFCMPushTokenForCurrentUser"), z.object({ provider: z.enum(["fcm", "apns"]) }), z.object({ device_token: text }).strict(), z.object({
204
+ provider: z.enum(["fcm", "apns"]),
205
+ registration_state: z.enum(["success", "pending", "error"]),
206
+ }), true, true);
207
+ definitions.at(-1).privateFields = ["device_token"];
208
+ }
209
+ for (const operation of ["get", "set"])
210
+ add(`chat sdk user push-template ${operation}`, `push-template-${operation}`, `${operation} the current user's Push template choice`, operation === "get"
211
+ ? "SendbirdChat.getPushTemplate"
212
+ : "SendbirdChat.setPushTemplate", empty, operation === "set"
213
+ ? z.object({ template: z.enum(["default", "alternative"]) }).strict()
214
+ : undefined, z.object({ template: z.enum(["default", "alternative"]) }), operation === "set");
215
+ add("chat sdk channel search", "public-channel-search", "Search public Group/Supergroup channels visible to the connected user", "GroupChannelModule.createPublicGroupChannelListQuery", empty, z
216
+ .object({
217
+ ...paging,
218
+ name_contains: text.optional(),
219
+ channel_urls: z.array(text).max(100).optional(),
220
+ custom_types: z.array(z.string()).max(100).optional(),
221
+ type: z.enum(["all", "group", "supergroup"]).default("all"),
222
+ })
223
+ .strict(), z.object({
224
+ ...pageResult,
225
+ channels: z.array(z.object({
226
+ channel_url: text,
227
+ name: z.string(),
228
+ type: z.enum(["group", "supergroup"]),
229
+ member_count: z.number(),
230
+ })),
231
+ }));
232
+ return definitions;
233
+ }
234
+ //# sourceMappingURL=sdk-pro-catalog.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sdk-pro-catalog.js","sourceRoot":"","sources":["../src/sdk-pro-catalog.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,31 @@
1
+ /** Typed SDK adapters for Pro commands. No retries, implicit joins or key issuance. */
2
+ import type { User } from "@sendbird/chat";
3
+ import { type BaseMessage, type MentionType } from "@sendbird/chat/message";
4
+ import type { BaseChannel } from "@sendbird/chat";
5
+ import type { Poll } from "@sendbird/chat/poll";
6
+ import type { SdkClient, SdkJob } from "./sdk-runtime.js";
7
+ export declare function messageOptions(body: Record<string, unknown>): Promise<{
8
+ pollId?: number | undefined;
9
+ translationTargetLanguages?: string[] | undefined;
10
+ metaArrays?: import("@sendbird/chat/message").MessageMetaArray[] | undefined;
11
+ mentionedUserIds?: string[] | undefined;
12
+ mentionType?: MentionType | undefined;
13
+ }>;
14
+ export declare function pollResult(p: Poll): {
15
+ poll_id: number;
16
+ title: string | null;
17
+ status: import("@sendbird/chat/poll").PollStatus;
18
+ message_id: number;
19
+ close_at: number;
20
+ voter_count: number;
21
+ allow_multiple_votes: boolean;
22
+ allow_user_suggestion: boolean;
23
+ voted_option_ids: number[];
24
+ options: {
25
+ option_id: number;
26
+ text: string | null;
27
+ vote_count: number;
28
+ }[];
29
+ };
30
+ export declare function runProUser(job: SdkJob, sb: SdkClient, who: User, check: () => void): Promise<unknown | undefined>;
31
+ export declare function runProChannel(job: SdkJob, sb: SdkClient, c: BaseChannel, check: () => void, currentMessage: () => Promise<BaseMessage>): Promise<unknown | undefined>;
@@ -0,0 +1,293 @@
1
+ import { CliError } from "./core.js";
2
+ import { message, user } from "./sdk-dto.js";
3
+ import { readQueryPage } from "./sdk-query.js";
4
+ async function metaArrays(values) {
5
+ // Load SDK classes only after makeSdk installed the Node adapter.
6
+ const { MessageMetaArray } = await import("@sendbird/chat/message");
7
+ return values.map((value) => new MessageMetaArray(value));
8
+ }
9
+ export async function messageOptions(body) {
10
+ return {
11
+ // The SDK validates present properties, including explicit undefined.
12
+ // Absence must remain absence so its own defaults can apply.
13
+ ...(body.mention_type !== undefined
14
+ ? { mentionType: body.mention_type }
15
+ : {}),
16
+ ...(body.mentioned_user_ids !== undefined
17
+ ? { mentionedUserIds: body.mentioned_user_ids }
18
+ : {}),
19
+ ...(body.meta_arrays !== undefined
20
+ ? {
21
+ metaArrays: await metaArrays(body.meta_arrays),
22
+ }
23
+ : {}),
24
+ ...(body.translation_target_languages !== undefined
25
+ ? {
26
+ translationTargetLanguages: body.translation_target_languages,
27
+ }
28
+ : {}),
29
+ ...(body.poll_id !== undefined ? { pollId: body.poll_id } : {}),
30
+ };
31
+ }
32
+ export function pollResult(p) {
33
+ return {
34
+ poll_id: p.id,
35
+ title: p.title,
36
+ status: p.status,
37
+ message_id: p.messageId,
38
+ close_at: p.closeAt,
39
+ voter_count: p.voterCount,
40
+ allow_multiple_votes: p.allowMultipleVotes,
41
+ allow_user_suggestion: p.allowUserSuggestion,
42
+ voted_option_ids: p.votedPollOptionIds,
43
+ options: p.options.map((o) => ({
44
+ option_id: o.id,
45
+ text: o.text,
46
+ vote_count: o.voteCount,
47
+ })),
48
+ };
49
+ }
50
+ function pollOptions(b) {
51
+ return {
52
+ title: b.title,
53
+ closeAt: b.close_at,
54
+ allowMultipleVotes: b.allow_multiple_votes,
55
+ allowUserSuggestion: b.allow_user_suggestion,
56
+ };
57
+ }
58
+ function dndResult(p) {
59
+ return {
60
+ enabled: p.doNotDisturbOn,
61
+ timezone: p.timezone ?? null,
62
+ schedules: Object.fromEntries(Object.entries(p.dndSchedules?.getDndSchedules() ?? {}).map(([day, windows]) => [
63
+ day,
64
+ windows?.map((w) => ({
65
+ start_hour: w.startHour,
66
+ start_minute: w.startMin,
67
+ end_hour: w.endHour,
68
+ end_minute: w.endMin,
69
+ })) ?? [],
70
+ ])),
71
+ };
72
+ }
73
+ export async function runProUser(job, sb, who, check) {
74
+ const b = job.body, p = job.params;
75
+ if (job.action === "public-channel-search") {
76
+ const q = sb.groupChannel.createPublicGroupChannelListQuery({
77
+ limit: Number(b.limit),
78
+ includeEmpty: true,
79
+ channelNameContainsFilter: b.name_contains,
80
+ channelUrlsFilter: b.channel_urls,
81
+ customTypesFilter: b.custom_types,
82
+ superChannelFilter: (b.type === "group"
83
+ ? "nonsuper"
84
+ : b.type === "supergroup"
85
+ ? "super"
86
+ : "all"),
87
+ });
88
+ const page = await readQueryPage(q, Number(b.page), check);
89
+ return {
90
+ ...page,
91
+ items: undefined,
92
+ channels: page.items.map((c) => ({
93
+ channel_url: c.url,
94
+ name: c.name,
95
+ type: c.isSuper ? "supergroup" : "group",
96
+ member_count: c.memberCount,
97
+ })),
98
+ };
99
+ }
100
+ if (job.action === "message-search") {
101
+ const q = sb.createMessageSearchQuery({
102
+ keyword: String(b.keyword),
103
+ limit: Number(b.limit),
104
+ channelUrl: b.channel_url,
105
+ channelCustomType: b.channel_custom_type,
106
+ messageTimestampFrom: b.from,
107
+ messageTimestampTo: b.to,
108
+ order: b.order,
109
+ reverse: Boolean(b.reverse),
110
+ exactMatch: Boolean(b.exact_match),
111
+ advancedQuery: Boolean(b.advanced_query),
112
+ });
113
+ const page = await readQueryPage(q, Number(b.page), check);
114
+ return {
115
+ ...page,
116
+ messages: page.items.map(message),
117
+ items: undefined,
118
+ total_count: q.totalCount,
119
+ };
120
+ }
121
+ if (job.action === "user-search" || job.action === "user-blocked") {
122
+ const q = job.action === "user-search"
123
+ ? sb.createApplicationUserListQuery({
124
+ limit: Number(b.limit),
125
+ nicknameStartsWithFilter: b.nickname_prefix,
126
+ userIdsFilter: b.user_ids,
127
+ metaDataKeyFilter: b.metadata_key,
128
+ metaDataValuesFilter: b.metadata_values,
129
+ })
130
+ : sb.createBlockedUserListQuery({ limit: Number(b.limit) });
131
+ const page = await readQueryPage(q, Number(b.page), check);
132
+ return { ...page, users: page.items.map(user), items: undefined };
133
+ }
134
+ if (job.action === "user-block" || job.action === "user-unblock") {
135
+ if (job.action === "user-block")
136
+ await sb.blockUserWithUserId(String(p.user_id));
137
+ else
138
+ await sb.unblockUserWithUserId(String(p.user_id));
139
+ return { user_id: p.user_id, blocked: job.action === "user-block" };
140
+ }
141
+ if (job.action === "languages-get" || job.action === "languages-set") {
142
+ const u = job.action === "languages-set"
143
+ ? await sb.updateCurrentUserInfoWithPreferredLanguages(b.languages)
144
+ : who;
145
+ return { user_id: u.userId, languages: u.preferredLanguages };
146
+ }
147
+ if (job.action === "dnd-get")
148
+ return dndResult(await sb.getWeeklyDoNotDisturb());
149
+ if (job.action === "dnd-set") {
150
+ if (Object.values(b.schedules).every((windows) => windows.length === 0)) {
151
+ await sb.clearWeeklyDoNotDisturb();
152
+ check();
153
+ return dndResult(await sb.getWeeklyDoNotDisturb());
154
+ }
155
+ const { DndSchedule } = await import("@sendbird/chat");
156
+ check();
157
+ const schedules = Object.fromEntries(Object.entries(b.schedules).map(([day, windows]) => [
158
+ day,
159
+ windows.map((w) => ({
160
+ startHour: w.start_hour,
161
+ startMin: w.start_minute,
162
+ endHour: w.end_hour,
163
+ endMin: w.end_minute,
164
+ })),
165
+ ]));
166
+ return dndResult(await sb.setWeeklyDoNotDisturb(new DndSchedule(schedules), String(b.timezone)));
167
+ }
168
+ if (job.action === "device-register" || job.action === "device-unregister") {
169
+ const token = String(b.device_token);
170
+ let state;
171
+ if (job.action === "device-register") {
172
+ if (p.provider === "fcm")
173
+ state = await sb.registerFCMPushTokenForCurrentUser(token, {
174
+ unique: false,
175
+ });
176
+ else
177
+ state = await sb.registerAPNSPushTokenForCurrentUser(token, {
178
+ unique: false,
179
+ });
180
+ }
181
+ else {
182
+ if (p.provider === "fcm")
183
+ state = await sb.unregisterFCMPushTokenForCurrentUser(token);
184
+ else
185
+ state = await sb.unregisterAPNSPushTokenForCurrentUser(token);
186
+ }
187
+ if (state === "error")
188
+ throw new CliError("E_SDK_PUSH", "SDK reported a Push token registration failure; inspect device state before retrying", 8);
189
+ return { provider: p.provider, registration_state: state };
190
+ }
191
+ if (job.action === "push-template-get" || job.action === "push-template-set")
192
+ return {
193
+ template: job.action === "push-template-get"
194
+ ? await sb.getPushTemplate()
195
+ : await sb.setPushTemplate(b.template),
196
+ };
197
+ if (job.action === "poll-create")
198
+ return pollResult(await sb.poll.create({
199
+ ...pollOptions(b),
200
+ title: String(b.title),
201
+ optionTexts: b.options,
202
+ }));
203
+ return undefined;
204
+ }
205
+ export async function runProChannel(job, sb, c, check, currentMessage) {
206
+ const b = job.body, p = job.params, pid = Number(p.poll_id);
207
+ switch (job.action) {
208
+ case "poll-get":
209
+ return pollResult(await sb.poll.get({
210
+ channelUrl: c.url,
211
+ channelType: c.channelType,
212
+ pollId: pid,
213
+ }));
214
+ case "poll-update":
215
+ return pollResult(await c.updatePoll(pid, pollOptions(b)));
216
+ case "poll-close":
217
+ return pollResult(await c.closePoll(pid));
218
+ case "poll-delete":
219
+ await c.deletePoll(pid);
220
+ return { poll_id: pid, deleted: true };
221
+ case "poll-option-update":
222
+ return pollResult(await c.updatePollOption(pid, Number(p.option_id), String(b.text)));
223
+ case "poll-option-delete":
224
+ await c.deletePollOption(pid, Number(p.option_id));
225
+ return { poll_id: pid, option_id: p.option_id, deleted: true };
226
+ case "poll-voters": {
227
+ const page = await readQueryPage(c.createPollVoterListQuery(pid, Number(p.option_id), Number(b.limit)), Number(b.page), check);
228
+ return { ...page, users: page.items.map(user), items: undefined };
229
+ }
230
+ case "meta-keys-create":
231
+ return message(await c.createMessageMetaArrayKeys(await currentMessage(), b.keys));
232
+ case "meta-keys-delete":
233
+ return message(await c.deleteMessageMetaArrayKeys(await currentMessage(), b.keys));
234
+ case "meta-values-add":
235
+ case "meta-values-remove": {
236
+ const m = await currentMessage();
237
+ const arrays = await metaArrays(b.meta_arrays);
238
+ check();
239
+ return message(job.action === "meta-values-add"
240
+ ? await c.addMessageMetaArrayValues(m, arrays)
241
+ : await c.removeMessageMetaArrayValues(m, arrays));
242
+ }
243
+ case "banned-list":
244
+ case "muted-list":
245
+ case "operators-list": {
246
+ const query = job.action === "banned-list"
247
+ ? c.createBannedUserListQuery({ limit: Number(b.limit) })
248
+ : job.action === "muted-list"
249
+ ? c.createMutedUserListQuery({ limit: Number(b.limit) })
250
+ : c.createOperatorListQuery({ limit: Number(b.limit) });
251
+ const page = await readQueryPage(query, Number(b.page), check);
252
+ return { ...page, users: page.items.map(user), items: undefined };
253
+ }
254
+ case "report-channel":
255
+ await c.report(b.category, String(b.description));
256
+ return { reported: true, subject: "channel" };
257
+ case "report-user": {
258
+ // Prefer a visible channel member; reporting must not gratuitously need
259
+ // the application's global user-directory feature.
260
+ const known = c.isGroupChannel()
261
+ ? c.members?.find((u) => u.userId === p.user_id)
262
+ : c.isOpenChannel()
263
+ ? c.operators?.find((u) => u.userId === p.user_id)
264
+ : undefined;
265
+ const users = known
266
+ ? [known]
267
+ : await sb
268
+ .createApplicationUserListQuery({
269
+ userIdsFilter: [String(p.user_id)],
270
+ limit: 1,
271
+ })
272
+ .next();
273
+ check();
274
+ const target = users.find((u) => u.userId === p.user_id);
275
+ if (!target)
276
+ throw new CliError("E_NOT_FOUND", "Reported user is not visible to the connected user", 3);
277
+ await c.reportUser(target, b.category, String(b.description));
278
+ return { reported: true, subject: "user" };
279
+ }
280
+ case "report-message": {
281
+ const m = await currentMessage();
282
+ if (!m.isUserMessage() &&
283
+ !m.isFileMessage() &&
284
+ !m.isMultipleFilesMessage())
285
+ throw new CliError("E_VALIDATION", "Only user or file messages can be reported", 2);
286
+ await c.reportMessage(m, b.category, String(b.description));
287
+ return { reported: true, subject: "message" };
288
+ }
289
+ default:
290
+ return undefined;
291
+ }
292
+ }
293
+ //# sourceMappingURL=sdk-pro-runtime.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sdk-pro-runtime.js","sourceRoot":"","sources":["../src/sdk-pro-runtime.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ export declare function readQueryPage<T>(query: {
2
+ next(): Promise<T[]>;
3
+ hasNext: boolean;
4
+ }, requestedPage: number, checkAbort: () => void): Promise<{
5
+ items: T[];
6
+ has_more: boolean;
7
+ page: number;
8
+ next_page: number | null;
9
+ pagination: string;
10
+ }>;
@@ -0,0 +1,29 @@
1
+ import { SDK_QUERY_PAGE_LIMIT } from "./sdk-limits.js";
2
+ const pageDescription = "1-based SDK query page; later pages replay earlier pages and may shift if data changes";
3
+ export async function readQueryPage(query, requestedPage, checkAbort) {
4
+ let items = [];
5
+ for (let current = 1; current <= requestedPage; current++) {
6
+ if (current > 1 && !query.hasNext)
7
+ return {
8
+ items: [],
9
+ has_more: false,
10
+ page: requestedPage,
11
+ next_page: null,
12
+ pagination: pageDescription,
13
+ };
14
+ items = await query.next();
15
+ checkAbort();
16
+ }
17
+ return {
18
+ items,
19
+ has_more: query.hasNext,
20
+ page: requestedPage,
21
+ next_page: query.hasNext && requestedPage < SDK_QUERY_PAGE_LIMIT
22
+ ? requestedPage + 1
23
+ : null,
24
+ pagination: query.hasNext && requestedPage >= SDK_QUERY_PAGE_LIMIT
25
+ ? "SDK page limit reached; more results exist. Refine the query where filters are supported. This is not a complete export."
26
+ : pageDescription,
27
+ };
28
+ }
29
+ //# sourceMappingURL=sdk-query.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sdk-query.js","sourceRoot":"","sources":["../src/sdk-query.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,oBAAoB,EAAE,MAAM,iBAAiB,CAAC;AACvD,MAAM,eAAe,GACnB,wFAAwF,CAAC;AAC3F,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,KAAiD,EACjD,aAAqB,EACrB,UAAsB;IAEtB,IAAI,KAAK,GAAQ,EAAE,CAAC;IACpB,KAAK,IAAI,OAAO,GAAG,CAAC,EAAE,OAAO,IAAI,aAAa,EAAE,OAAO,EAAE,EAAE,CAAC;QAC1D,IAAI,OAAO,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO;YAC/B,OAAO;gBACL,KAAK,EAAE,EAAE;gBACT,QAAQ,EAAE,KAAK;gBACf,IAAI,EAAE,aAAa;gBACnB,SAAS,EAAE,IAAI;gBACf,UAAU,EAAE,eAAe;aAC5B,CAAC;QACJ,KAAK,GAAG,MAAM,KAAK,CAAC,IAAI,EAAE,CAAC;QAC3B,UAAU,EAAE,CAAC;IACf,CAAC;IACD,OAAO;QACL,KAAK;QACL,QAAQ,EAAE,KAAK,CAAC,OAAO;QACvB,IAAI,EAAE,aAAa;QACnB,SAAS,EACP,KAAK,CAAC,OAAO,IAAI,aAAa,GAAG,oBAAoB;YACnD,CAAC,CAAC,aAAa,GAAG,CAAC;YACnB,CAAC,CAAC,IAAI;QACV,UAAU,EACR,KAAK,CAAC,OAAO,IAAI,aAAa,IAAI,oBAAoB;YACpD,CAAC,CAAC,0HAA0H;YAC5H,CAAC,CAAC,eAAe;KACtB,CAAC;AACJ,CAAC"}