memax-sdk 0.1.14 → 0.3.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 (43) hide show
  1. package/dist/client.d.ts +2 -2
  2. package/dist/client.d.ts.map +1 -1
  3. package/dist/client.js +8 -4
  4. package/dist/client.js.map +1 -1
  5. package/dist/errors.d.ts +129 -2
  6. package/dist/errors.d.ts.map +1 -1
  7. package/dist/errors.js +177 -3
  8. package/dist/errors.js.map +1 -1
  9. package/dist/index.d.ts +1 -2
  10. package/dist/index.d.ts.map +1 -1
  11. package/dist/index.js +2 -0
  12. package/dist/index.js.map +1 -1
  13. package/dist/resources/bar.d.ts +18 -0
  14. package/dist/resources/bar.d.ts.map +1 -0
  15. package/dist/resources/bar.js +19 -0
  16. package/dist/resources/bar.js.map +1 -0
  17. package/dist/resources/dreams.d.ts +16 -2
  18. package/dist/resources/dreams.d.ts.map +1 -1
  19. package/dist/resources/dreams.js +23 -5
  20. package/dist/resources/dreams.js.map +1 -1
  21. package/dist/resources/memories.d.ts +9 -4
  22. package/dist/resources/memories.d.ts.map +1 -1
  23. package/dist/resources/memories.js +10 -5
  24. package/dist/resources/memories.js.map +1 -1
  25. package/dist/transport.d.ts +1 -1
  26. package/dist/transport.d.ts.map +1 -1
  27. package/dist/transport.js +34 -3
  28. package/dist/transport.js.map +1 -1
  29. package/dist/types.d.ts +141 -5
  30. package/dist/types.d.ts.map +1 -1
  31. package/package.json +3 -2
  32. package/dist/client.test.d.ts +0 -2
  33. package/dist/client.test.d.ts.map +0 -1
  34. package/dist/client.test.js +0 -290
  35. package/dist/client.test.js.map +0 -1
  36. package/dist/resources/admin.d.ts +0 -357
  37. package/dist/resources/admin.d.ts.map +0 -1
  38. package/dist/resources/admin.js +0 -168
  39. package/dist/resources/admin.js.map +0 -1
  40. package/dist/transport.test.d.ts +0 -2
  41. package/dist/transport.test.d.ts.map +0 -1
  42. package/dist/transport.test.js +0 -95
  43. package/dist/transport.test.js.map +0 -1
@@ -1,290 +0,0 @@
1
- import { describe, expect, it } from "vitest";
2
- import { Memax } from "./client.js";
3
- describe("Memax client resources", () => {
4
- it("exposes shared API resources", () => {
5
- const client = new Memax({
6
- apiUrl: "https://api.memax.test",
7
- fetch: async () => new Response(JSON.stringify({ data: {} }), {
8
- status: 200,
9
- headers: { "Content-Type": "application/json" },
10
- }),
11
- });
12
- expect(client.memories).toBeDefined();
13
- expect(client.configs).toBeDefined();
14
- expect(client.agentSessions).toBeDefined();
15
- expect(client.uploads).toBeDefined();
16
- expect(client.account).toBeDefined();
17
- expect(client.dreams).toBeDefined();
18
- expect(client.notifications).toBeDefined();
19
- expect(client.agents).toBeDefined();
20
- expect(client.invites).toBeDefined();
21
- });
22
- it("builds provider auth URLs", () => {
23
- const client = new Memax({
24
- apiUrl: "https://api.memax.test/",
25
- fetch: async () => new Response(JSON.stringify({ data: {} })),
26
- });
27
- expect(client.auth.providerLoginURL("github", "http://localhost/cb")).toBe("https://api.memax.test/v1/auth/github?redirect_uri=http%3A%2F%2Flocalhost%2Fcb");
28
- expect(client.auth.providerLoginURL("google", "http://localhost/cb")).toBe("https://api.memax.test/v1/auth/google?redirect_uri=http%3A%2F%2Flocalhost%2Fcb");
29
- expect(client.auth.linkProviderURL("google", "https://memax.app/settings")).toBe("https://api.memax.test/v1/auth/link/google?redirect_uri=https%3A%2F%2Fmemax.app%2Fsettings");
30
- });
31
- it("lists and unlinks auth identities", async () => {
32
- const calls = [];
33
- const client = new Memax({
34
- apiUrl: "https://api.memax.test",
35
- fetch: async (input, init) => {
36
- calls.push([String(input), init]);
37
- if (String(input).endsWith("/v1/auth/identities")) {
38
- return new Response(JSON.stringify({
39
- data: [
40
- {
41
- id: "identity-1",
42
- user_id: "user-1",
43
- provider: "google",
44
- provider_id: "google-1",
45
- provider_email: "user@example.com",
46
- provider_name: "User",
47
- created_at: "2026-04-13T00:00:00Z",
48
- },
49
- ],
50
- }));
51
- }
52
- return new Response(JSON.stringify({ data: { status: "unlinked" } }));
53
- },
54
- });
55
- await expect(client.auth.listIdentities()).resolves.toHaveLength(1);
56
- await expect(client.auth.unlinkProvider("google")).resolves.toEqual({
57
- status: "unlinked",
58
- });
59
- expect(calls.map(([url, init]) => [url, init?.method])).toEqual([
60
- ["https://api.memax.test/v1/auth/identities", "GET"],
61
- ["https://api.memax.test/v1/auth/link/google", "DELETE"],
62
- ]);
63
- });
64
- it("sends notifications hub scope as a query param on list", async () => {
65
- const calls = [];
66
- const client = new Memax({
67
- apiUrl: "https://api.memax.test",
68
- fetch: async (input, init) => {
69
- calls.push([String(input), init]);
70
- return new Response(JSON.stringify({
71
- data: {
72
- notifications: [],
73
- has_more: false,
74
- },
75
- }), { headers: { "Content-Type": "application/json" } });
76
- },
77
- });
78
- await client.notifications.list({ hub: "hub-alpha", status: "pending" });
79
- expect(calls).toHaveLength(1);
80
- expect(calls[0][0]).toBe("https://api.memax.test/v1/notifications?hub=hub-alpha&status=pending");
81
- const headers = new Headers(calls[0][1]?.headers);
82
- expect(headers.get("X-Hub-ID")).toBeNull();
83
- });
84
- it("sends notifications hub scope as a query param on summary", async () => {
85
- const calls = [];
86
- const client = new Memax({
87
- apiUrl: "https://api.memax.test",
88
- fetch: async (input, init) => {
89
- calls.push([String(input), init]);
90
- return new Response(JSON.stringify({
91
- data: {
92
- needs_action_pending: 0,
93
- updates_pending: 0,
94
- updates_unseen: 0,
95
- by_kind: {},
96
- },
97
- }), { headers: { "Content-Type": "application/json" } });
98
- },
99
- });
100
- await client.notifications.summary("hub-beta");
101
- expect(calls).toHaveLength(1);
102
- expect(calls[0][0]).toBe("https://api.memax.test/v1/notifications/summary?hub=hub-beta");
103
- const headers = new Headers(calls[0][1]?.headers);
104
- expect(headers.get("X-Hub-ID")).toBeNull();
105
- });
106
- // ── Batch result normalization (Bug 2 regression) ────────────────────────
107
- //
108
- // The SDK guarantees `skipped` is always a real array on BatchMoveResult /
109
- // BatchDeleteResult, even if the server response omits the field, encodes
110
- // an empty slice as JSON null, or sends only the count field. This matches
111
- // the compile-time type contract (`skipped: BatchMoveSkippedMemory[]`) and
112
- // lets callers read `.skipped.length` / `.skipped.map(...)` without a
113
- // defensive guard at every callsite.
114
- //
115
- // Caught live: Derek's drag-to-topic move crashed with
116
- // "Cannot read properties of undefined (reading 'length')" at
117
- // use-memory-move.ts:759 when the response arrived without a `skipped`
118
- // field. The fix normalizes at the SDK boundary so every downstream
119
- // consumer benefits.
120
- it("normalizes batchMove response when skipped is missing", async () => {
121
- const client = new Memax({
122
- apiUrl: "https://api.memax.test",
123
- fetch: async () => new Response(JSON.stringify({ data: { moved: 3 } }), {
124
- headers: { "Content-Type": "application/json" },
125
- }),
126
- });
127
- const result = await client.memories.batchMove(["a", "b", "c"], {
128
- topicId: "topic-1",
129
- });
130
- expect(result.moved).toBe(3);
131
- expect(result.skipped).toEqual([]);
132
- expect(Array.isArray(result.skipped)).toBe(true);
133
- });
134
- it("normalizes batchMove response when skipped is JSON null", async () => {
135
- const client = new Memax({
136
- apiUrl: "https://api.memax.test",
137
- fetch: async () => new Response(JSON.stringify({ data: { moved: 1, skipped: null } }), {
138
- headers: { "Content-Type": "application/json" },
139
- }),
140
- });
141
- const result = await client.memories.batchMove(["a"], {
142
- topicId: "topic-1",
143
- });
144
- expect(result.moved).toBe(1);
145
- expect(result.skipped).toEqual([]);
146
- });
147
- it("preserves batchMove skipped entries when the server populates them", async () => {
148
- const client = new Memax({
149
- apiUrl: "https://api.memax.test",
150
- fetch: async () => new Response(JSON.stringify({
151
- data: {
152
- moved: 2,
153
- skipped: [
154
- { id: "a", reason: "not_owned" },
155
- { id: "b", reason: "already_at_target" },
156
- ],
157
- },
158
- }), { headers: { "Content-Type": "application/json" } }),
159
- });
160
- const result = await client.memories.batchMove(["a", "b", "c", "d"], {
161
- topicId: "topic-1",
162
- });
163
- expect(result.moved).toBe(2);
164
- expect(result.skipped).toHaveLength(2);
165
- expect(result.skipped[0]).toEqual({ id: "a", reason: "not_owned" });
166
- expect(result.skipped[1]).toEqual({
167
- id: "b",
168
- reason: "already_at_target",
169
- });
170
- });
171
- it("normalizes batchMove response when moved is missing", async () => {
172
- const client = new Memax({
173
- apiUrl: "https://api.memax.test",
174
- fetch: async () => new Response(JSON.stringify({ data: {} }), {
175
- headers: { "Content-Type": "application/json" },
176
- }),
177
- });
178
- const result = await client.memories.batchMove(["a"], {
179
- topicId: "topic-1",
180
- });
181
- expect(result.moved).toBe(0);
182
- expect(result.skipped).toEqual([]);
183
- });
184
- it("normalizes batchDelete response when skipped is missing", async () => {
185
- const client = new Memax({
186
- apiUrl: "https://api.memax.test",
187
- fetch: async () => new Response(JSON.stringify({ data: { deleted: 5 } }), {
188
- headers: { "Content-Type": "application/json" },
189
- }),
190
- });
191
- const result = await client.memories.batchDelete(["a", "b", "c", "d", "e"]);
192
- expect(result.deleted).toBe(5);
193
- expect(result.skipped).toEqual([]);
194
- expect(Array.isArray(result.skipped)).toBe(true);
195
- });
196
- it("preserves batchDelete skipped entries when the server populates them", async () => {
197
- const client = new Memax({
198
- apiUrl: "https://api.memax.test",
199
- fetch: async () => new Response(JSON.stringify({
200
- data: {
201
- deleted: 1,
202
- skipped: [
203
- { id: "b", reason: "not_owned" },
204
- { id: "c", reason: "not_found" },
205
- ],
206
- },
207
- }), { headers: { "Content-Type": "application/json" } }),
208
- });
209
- const result = await client.memories.batchDelete(["a", "b", "c"]);
210
- expect(result.deleted).toBe(1);
211
- expect(result.skipped).toHaveLength(2);
212
- expect(result.skipped.map((s) => s.reason)).toEqual([
213
- "not_owned",
214
- "not_found",
215
- ]);
216
- });
217
- // ── Agent config batch-delete normalization ─────────────────────────────
218
- //
219
- // `configs.batchDelete` is a greenfield endpoint introduced in the agent
220
- // delete hardening work. It shares the normalization contract with
221
- // `memories.batchDelete`: `skipped` is always a real array, `deleted` is
222
- // always a number, even when the server response is partial. The web
223
- // hook's rollback rule (throw on full-skip with real failures) depends
224
- // on this shape — if the SDK leaked `undefined` through, the hook's
225
- // `result.skipped.filter(...)` would crash before reaching the throw.
226
- it("normalizes configs.batchDelete response when skipped is missing", async () => {
227
- const client = new Memax({
228
- apiUrl: "https://api.memax.test",
229
- fetch: async () => new Response(JSON.stringify({ data: { deleted: 3 } }), {
230
- headers: { "Content-Type": "application/json" },
231
- }),
232
- });
233
- const result = await client.configs.batchDelete([
234
- "cfg-1",
235
- "cfg-2",
236
- "cfg-3",
237
- ]);
238
- expect(result.deleted).toBe(3);
239
- expect(result.skipped).toEqual([]);
240
- expect(Array.isArray(result.skipped)).toBe(true);
241
- });
242
- it("normalizes configs.batchDelete response when skipped is JSON null", async () => {
243
- const client = new Memax({
244
- apiUrl: "https://api.memax.test",
245
- fetch: async () => new Response(JSON.stringify({ data: { deleted: 1, skipped: null } }), {
246
- headers: { "Content-Type": "application/json" },
247
- }),
248
- });
249
- const result = await client.configs.batchDelete(["cfg-1"]);
250
- expect(result.deleted).toBe(1);
251
- expect(result.skipped).toEqual([]);
252
- });
253
- it("preserves configs.batchDelete skipped entries when the server populates them", async () => {
254
- const client = new Memax({
255
- apiUrl: "https://api.memax.test",
256
- fetch: async () => new Response(JSON.stringify({
257
- data: {
258
- deleted: 1,
259
- skipped: [
260
- { id: "cfg-2", reason: "not_found" },
261
- { id: "cfg-3", reason: "delete_failed" },
262
- ],
263
- },
264
- }), { headers: { "Content-Type": "application/json" } }),
265
- });
266
- const result = await client.configs.batchDelete([
267
- "cfg-1",
268
- "cfg-2",
269
- "cfg-3",
270
- ]);
271
- expect(result.deleted).toBe(1);
272
- expect(result.skipped).toHaveLength(2);
273
- expect(result.skipped.map((s) => s.reason)).toEqual([
274
- "not_found",
275
- "delete_failed",
276
- ]);
277
- });
278
- it("normalizes configs.batchDelete response when deleted is missing", async () => {
279
- const client = new Memax({
280
- apiUrl: "https://api.memax.test",
281
- fetch: async () => new Response(JSON.stringify({ data: {} }), {
282
- headers: { "Content-Type": "application/json" },
283
- }),
284
- });
285
- const result = await client.configs.batchDelete(["cfg-1"]);
286
- expect(result.deleted).toBe(0);
287
- expect(result.skipped).toEqual([]);
288
- });
289
- });
290
- //# sourceMappingURL=client.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"client.test.js","sourceRoot":"","sources":["../src/client.test.ts"],"names":[],"mappings":"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"}
@@ -1,357 +0,0 @@
1
- import type { PlanDefinition, PlanScope, User, Usage, UserLimits, SystemNoticePayload, GiftInviteLinkPayload } from "../types.js";
2
- import type { RequestFn } from "../transport.js";
3
- export interface AdminUserListParams {
4
- q?: string;
5
- plan?: string;
6
- cursor?: string;
7
- limit?: number;
8
- }
9
- export interface AdminUserListResponse {
10
- users: User[];
11
- next_cursor: string;
12
- total: number;
13
- }
14
- export interface AdminUserDetail {
15
- user: User;
16
- plan: PlanDefinition | null;
17
- effective_plan?: {
18
- plan_id: string;
19
- source: string;
20
- computed_at: string;
21
- } | null;
22
- override?: {
23
- overrides: Record<string, unknown>;
24
- reason: string;
25
- } | null;
26
- usage?: Usage | null;
27
- limits?: UserLimits | null;
28
- hubs?: Array<{
29
- hub: {
30
- id: string;
31
- name: string;
32
- hub_type: string;
33
- };
34
- role: string;
35
- }>;
36
- hub_subscriptions?: HubSubscription[];
37
- memory_count: number;
38
- }
39
- export interface SystemStats {
40
- total_users: number;
41
- users_by_plan: Record<string, number>;
42
- total_memories: number;
43
- active_today: number;
44
- }
45
- export interface AdminTeamHub {
46
- id: string;
47
- name: string;
48
- slug: string;
49
- hub_type: string;
50
- plan: string;
51
- owner_id: string;
52
- created_at: string;
53
- subscription?: HubSubscription | null;
54
- member_count: number;
55
- }
56
- export interface HubSubscription {
57
- id: string;
58
- hub_id: string;
59
- plan_id: string;
60
- seat_count: number;
61
- provider: string;
62
- status: string;
63
- billing_user_id: string;
64
- current_period_start?: string;
65
- current_period_end?: string;
66
- cancelled_at?: string;
67
- created_at: string;
68
- updated_at: string;
69
- }
70
- export interface AdminEmailTemplateVariable {
71
- key: string;
72
- description: string;
73
- example: string;
74
- }
75
- export interface AdminEmailTemplateSummary {
76
- name: string;
77
- category: string;
78
- description: string;
79
- subject: string;
80
- has_override: boolean;
81
- updated_at?: string;
82
- updated_by?: string;
83
- variable_count: number;
84
- }
85
- export interface AdminEmailTemplatePreview {
86
- subject: string;
87
- html: string;
88
- text: string;
89
- data: Record<string, string>;
90
- }
91
- export interface AdminEmailTemplateSendResult {
92
- status: string;
93
- name: string;
94
- to: string;
95
- subject: string;
96
- queued_at: string;
97
- }
98
- export interface AdminEmailTemplateOverride {
99
- name: string;
100
- subject: string;
101
- html: string;
102
- text: string;
103
- notes: string;
104
- editor_kind: string;
105
- editor_state?: Record<string, unknown>;
106
- updated_by?: string;
107
- created_at: string;
108
- updated_at: string;
109
- }
110
- export interface AdminEmailTemplateRevision {
111
- id: string;
112
- name: string;
113
- action: string;
114
- subject: string;
115
- html: string;
116
- text: string;
117
- notes: string;
118
- editor_kind: string;
119
- editor_state?: Record<string, unknown>;
120
- created_by?: string;
121
- created_at: string;
122
- }
123
- export interface AdminEmailTemplateDetail {
124
- name: string;
125
- category: string;
126
- description: string;
127
- variables: AdminEmailTemplateVariable[];
128
- sample_data: Record<string, string>;
129
- default_subject: string;
130
- default_html: string;
131
- default_text: string;
132
- effective_subject: string;
133
- effective_html: string;
134
- effective_text: string;
135
- effective_editor_kind: string;
136
- override?: AdminEmailTemplateOverride | null;
137
- revisions: AdminEmailTemplateRevision[];
138
- preview: AdminEmailTemplatePreview;
139
- }
140
- export declare class AdminResource {
141
- private readonly req;
142
- constructor(req: RequestFn);
143
- listUsers(params?: AdminUserListParams): Promise<AdminUserListResponse>;
144
- getUser(userId: string): Promise<AdminUserDetail>;
145
- setUserPlan(userId: string, planId: string): Promise<{
146
- status: string;
147
- plan_id: string;
148
- }>;
149
- setUserOverrides(userId: string, overrides: Record<string, unknown>, reason: string): Promise<{
150
- status: string;
151
- }>;
152
- deleteUserOverrides(userId: string): Promise<{
153
- status: string;
154
- }>;
155
- listPlans(): Promise<PlanDefinition[]>;
156
- /** Returns active plans filtered by scope. */
157
- listPlansByScope(scope: PlanScope): Promise<PlanDefinition[]>;
158
- updatePlan(planId: string, patch: Partial<PlanDefinition>): Promise<PlanDefinition>;
159
- listTeamHubs(): Promise<AdminTeamHub[]>;
160
- getHubSubscription(hubId: string): Promise<HubSubscription | null>;
161
- setHubPlan(hubId: string, planId: string): Promise<{
162
- status: string;
163
- hub_id: string;
164
- plan_id: string;
165
- }>;
166
- listBillingHubs(userId: string): Promise<HubSubscription[]>;
167
- listEmailTemplates(): Promise<{
168
- templates: AdminEmailTemplateSummary[];
169
- }>;
170
- getEmailTemplate(name: string): Promise<AdminEmailTemplateDetail>;
171
- previewEmailTemplate(name: string, params: {
172
- subject?: string;
173
- html?: string;
174
- text?: string;
175
- sample_data?: Record<string, string>;
176
- }): Promise<AdminEmailTemplatePreview>;
177
- updateEmailTemplate(name: string, params: {
178
- subject: string;
179
- html: string;
180
- text: string;
181
- notes?: string;
182
- editor_kind?: string;
183
- editor_state?: Record<string, unknown>;
184
- }): Promise<AdminEmailTemplateDetail>;
185
- resetEmailTemplate(name: string): Promise<{
186
- status: string;
187
- name: string;
188
- }>;
189
- sendEmailTemplate(name: string, params: {
190
- to: string;
191
- subject: string;
192
- html: string;
193
- text: string;
194
- sample_data?: Record<string, string>;
195
- }): Promise<AdminEmailTemplateSendResult>;
196
- getStats(): Promise<SystemStats>;
197
- sendNotification(params: AdminSendNotificationParams): Promise<AdminSendNotificationResult>;
198
- listSentNotifications(params?: AdminSentNotificationsParams): Promise<AdminSentNotificationsResponse>;
199
- listAudiences(): Promise<{
200
- audiences: AdminAudience[];
201
- }>;
202
- getAudience(id: string): Promise<AdminAudience>;
203
- createAudience(params: AdminAudienceCreateParams): Promise<AdminAudience>;
204
- updateAudience(id: string, params: AdminAudienceUpdateParams): Promise<AdminAudience>;
205
- deleteAudience(id: string): Promise<{
206
- status: string;
207
- id: string;
208
- }>;
209
- estimateAudience(params: AdminAudienceEstimateParams): Promise<AdminAudienceEstimate>;
210
- listCampaigns(params?: AdminCampaignListParams): Promise<AdminCampaignListResponse>;
211
- getCampaign(id: string): Promise<AdminCampaignDetail>;
212
- createCampaign(params: AdminCampaignCreateParams): Promise<AdminCampaign>;
213
- updateCampaignDraft(id: string, params: AdminCampaignUpdateParams): Promise<AdminCampaign>;
214
- deleteCampaign(id: string): Promise<{
215
- status: string;
216
- id: string;
217
- }>;
218
- sendCampaign(id: string): Promise<AdminCampaign>;
219
- scheduleCampaign(id: string, params: AdminCampaignScheduleParams): Promise<AdminCampaign>;
220
- cancelCampaign(id: string): Promise<AdminCampaign>;
221
- listCampaignAudit(id: string): Promise<{
222
- entries: AdminCommsAuditEntry[];
223
- }>;
224
- }
225
- export interface AdminNotificationTargeting {
226
- mode: "users" | "hub" | "all";
227
- user_ids?: string[];
228
- emails?: string[];
229
- hub_id?: string;
230
- hub_member_role?: string;
231
- }
232
- export interface AdminSendNotificationParams {
233
- kind: "system_notice" | "gift_invite_link";
234
- targeting: AdminNotificationTargeting;
235
- payload: SystemNoticePayload | GiftInviteLinkPayload;
236
- }
237
- export interface AdminSendNotificationResult {
238
- batch_id: string;
239
- sent_count: number;
240
- failed_emails: string[];
241
- }
242
- export interface AdminSentNotificationsParams {
243
- kind?: string;
244
- cursor?: string;
245
- limit?: number;
246
- }
247
- export interface AdminNotificationBatch {
248
- batch_id: string;
249
- kind: string;
250
- payload_preview: string;
251
- recipient_count: number;
252
- created_at: string;
253
- }
254
- export interface AdminSentNotificationsResponse {
255
- batches: AdminNotificationBatch[];
256
- next_cursor: string;
257
- }
258
- export type AdminAudienceRuleType = "all" | "users" | "hub";
259
- export interface AdminAudienceRule {
260
- user_ids?: string[];
261
- emails?: string[];
262
- hub_id?: string;
263
- hub_member_role?: string;
264
- }
265
- export interface AdminAudience {
266
- id: string;
267
- name: string;
268
- description: string;
269
- rule_type: AdminAudienceRuleType;
270
- rule: AdminAudienceRule;
271
- created_by: string;
272
- created_at: string;
273
- updated_at: string;
274
- }
275
- export interface AdminAudienceSnapshot {
276
- audience_id?: string;
277
- rule_type: AdminAudienceRuleType;
278
- rule: AdminAudienceRule;
279
- }
280
- export interface AdminAudienceEstimate {
281
- count: number;
282
- sample: string[];
283
- }
284
- export interface AdminAudienceCreateParams {
285
- name: string;
286
- description?: string;
287
- rule_type: AdminAudienceRuleType;
288
- rule: AdminAudienceRule;
289
- }
290
- export type AdminAudienceUpdateParams = AdminAudienceCreateParams;
291
- export interface AdminAudienceEstimateParams {
292
- audience_id?: string;
293
- snapshot?: AdminAudienceSnapshot;
294
- }
295
- export type AdminCampaignStatus = "draft" | "scheduled" | "sending" | "sent" | "cancelled" | "failed";
296
- export interface AdminCampaign {
297
- id: string;
298
- name: string;
299
- channel: "inapp";
300
- kind: "system_notice" | "gift_invite_link";
301
- status: AdminCampaignStatus;
302
- audience_id?: string;
303
- audience_snapshot?: AdminAudienceSnapshot;
304
- content: unknown;
305
- scheduled_at?: string;
306
- send_started_at?: string;
307
- send_finished_at?: string;
308
- sent_count: number;
309
- failed_count: number;
310
- batch_id?: string;
311
- error_message?: string;
312
- created_by: string;
313
- updated_by?: string;
314
- cancelled_by?: string;
315
- created_at: string;
316
- updated_at: string;
317
- }
318
- export interface AdminCommsAuditEntry {
319
- id: string;
320
- resource_type: "campaign" | "audience";
321
- resource_id: string;
322
- action: string;
323
- actor_id?: string;
324
- metadata: Record<string, unknown>;
325
- created_at: string;
326
- }
327
- export interface AdminCampaignListParams {
328
- status?: AdminCampaignStatus;
329
- cursor?: string;
330
- limit?: number;
331
- }
332
- export interface AdminCampaignListResponse {
333
- campaigns: AdminCampaign[];
334
- next_cursor: string;
335
- }
336
- export interface AdminCampaignCreateParams {
337
- name: string;
338
- kind: "system_notice" | "gift_invite_link";
339
- channel?: "inapp";
340
- audience_id?: string;
341
- audience_snapshot?: AdminAudienceSnapshot;
342
- content: unknown;
343
- }
344
- export interface AdminCampaignUpdateParams {
345
- name?: string;
346
- audience_id?: string;
347
- audience_snapshot?: AdminAudienceSnapshot;
348
- content?: unknown;
349
- }
350
- export interface AdminCampaignScheduleParams {
351
- scheduled_at: string;
352
- }
353
- export interface AdminCampaignDetail {
354
- campaign: AdminCampaign;
355
- audit: AdminCommsAuditEntry[];
356
- }
357
- //# sourceMappingURL=admin.d.ts.map