@stacklink/sdk 0.2.2 → 0.3.8

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 (37) hide show
  1. package/README.md +50 -1
  2. package/compatibility.json +3 -1
  3. package/dist/src/domain/bot-contract.d.ts +4336 -0
  4. package/dist/src/domain/bot-contract.d.ts.map +1 -0
  5. package/dist/src/domain/bot-contract.js +382 -0
  6. package/dist/src/domain/bot-contract.js.map +1 -0
  7. package/dist/src/domain/memory-contract.d.ts +452 -452
  8. package/dist/src/domain/memory-contract.js +1 -1
  9. package/dist/src/domain/memory-contract.js.map +1 -1
  10. package/dist/src/domain/platform-approval-contract.d.ts +508 -0
  11. package/dist/src/domain/platform-approval-contract.d.ts.map +1 -0
  12. package/dist/src/domain/platform-approval-contract.js +77 -0
  13. package/dist/src/domain/platform-approval-contract.js.map +1 -0
  14. package/dist/src/domain/provider-branding.d.ts.map +1 -1
  15. package/dist/src/domain/provider-branding.js +17 -0
  16. package/dist/src/domain/provider-branding.js.map +1 -1
  17. package/dist/src/domain/stacklink-meta-tools.d.ts +2 -2
  18. package/dist/src/domain/stacklink-meta-tools.d.ts.map +1 -1
  19. package/dist/src/domain/stacklink-meta-tools.js +15 -4
  20. package/dist/src/domain/stacklink-meta-tools.js.map +1 -1
  21. package/dist/src/sdk/framework-tools.d.ts +21 -0
  22. package/dist/src/sdk/framework-tools.d.ts.map +1 -1
  23. package/dist/src/sdk/framework-tools.js +49 -0
  24. package/dist/src/sdk/framework-tools.js.map +1 -1
  25. package/dist/src/sdk/index.d.ts +225 -6
  26. package/dist/src/sdk/index.d.ts.map +1 -1
  27. package/dist/src/sdk/index.js +215 -21
  28. package/dist/src/sdk/index.js.map +1 -1
  29. package/dist/src/sdk/vercel-ai.d.ts +4 -0
  30. package/dist/src/sdk/vercel-ai.d.ts.map +1 -1
  31. package/dist/src/sdk/vercel-ai.js +13 -4
  32. package/dist/src/sdk/vercel-ai.js.map +1 -1
  33. package/dist/src/sdk/x-chat.d.ts +143 -0
  34. package/dist/src/sdk/x-chat.d.ts.map +1 -0
  35. package/dist/src/sdk/x-chat.js +160 -0
  36. package/dist/src/sdk/x-chat.js.map +1 -0
  37. package/package.json +15 -3
@@ -0,0 +1,508 @@
1
+ import { z } from 'zod';
2
+ /** One contract for portal, notifications, SDK and MCP. No presentation-derived decisions. */
3
+ export declare const approvalAudienceSchema: z.ZodEnum<["approvers", "customer", "customer-approvers"]>;
4
+ export type ApprovalAudience = z.infer<typeof approvalAudienceSchema>;
5
+ export declare const approvalStatusSchema: z.ZodEnum<["pending", "approved", "applying", "applied", "apply_failed", "denied", "cancelled", "expired"]>;
6
+ export type ApprovalStatus = z.infer<typeof approvalStatusSchema>;
7
+ export declare const approvalExecutionStatusSchema: z.ZodEnum<["waiting", "queued", "running", "succeeded", "failed", "unknown", "cancelled"]>;
8
+ export declare const approvalChannelSchema: z.ZodEnum<["email", "slack", "teams", "whatsapp"]>;
9
+ export type ApprovalChannel = z.infer<typeof approvalChannelSchema>;
10
+ export declare const approvalActorSchema: z.ZodObject<{
11
+ kind: z.ZodEnum<["dashboard_user", "customer", "external", "api_key", "mcp_grant"]>;
12
+ id: z.ZodString;
13
+ tenantId: z.ZodOptional<z.ZodString>;
14
+ }, "strict", z.ZodTypeAny, {
15
+ kind: "customer" | "dashboard_user" | "external" | "api_key" | "mcp_grant";
16
+ id: string;
17
+ tenantId?: string | undefined;
18
+ }, {
19
+ kind: "customer" | "dashboard_user" | "external" | "api_key" | "mcp_grant";
20
+ id: string;
21
+ tenantId?: string | undefined;
22
+ }>;
23
+ export type ApprovalActor = z.infer<typeof approvalActorSchema>;
24
+ export declare const approvalRequirementSchema: z.ZodObject<{
25
+ kind: z.ZodEnum<["customer", "company"]>;
26
+ status: z.ZodEnum<["pending", "approved", "denied"]>;
27
+ actor: z.ZodDefault<z.ZodNullable<z.ZodObject<{
28
+ kind: z.ZodEnum<["dashboard_user", "customer", "external", "api_key", "mcp_grant"]>;
29
+ id: z.ZodString;
30
+ tenantId: z.ZodOptional<z.ZodString>;
31
+ }, "strict", z.ZodTypeAny, {
32
+ kind: "customer" | "dashboard_user" | "external" | "api_key" | "mcp_grant";
33
+ id: string;
34
+ tenantId?: string | undefined;
35
+ }, {
36
+ kind: "customer" | "dashboard_user" | "external" | "api_key" | "mcp_grant";
37
+ id: string;
38
+ tenantId?: string | undefined;
39
+ }>>>;
40
+ decidedAt: z.ZodDefault<z.ZodNullable<z.ZodString>>;
41
+ reason: z.ZodDefault<z.ZodNullable<z.ZodString>>;
42
+ }, "strict", z.ZodTypeAny, {
43
+ status: "pending" | "approved" | "denied";
44
+ kind: "customer" | "company";
45
+ actor: {
46
+ kind: "customer" | "dashboard_user" | "external" | "api_key" | "mcp_grant";
47
+ id: string;
48
+ tenantId?: string | undefined;
49
+ } | null;
50
+ decidedAt: string | null;
51
+ reason: string | null;
52
+ }, {
53
+ status: "pending" | "approved" | "denied";
54
+ kind: "customer" | "company";
55
+ actor?: {
56
+ kind: "customer" | "dashboard_user" | "external" | "api_key" | "mcp_grant";
57
+ id: string;
58
+ tenantId?: string | undefined;
59
+ } | null | undefined;
60
+ decidedAt?: string | null | undefined;
61
+ reason?: string | null | undefined;
62
+ }>;
63
+ export type ApprovalRequirement = z.infer<typeof approvalRequirementSchema>;
64
+ export declare const approvalDecisionSchema: z.ZodObject<{
65
+ requirement: z.ZodEnum<["customer", "company"]>;
66
+ decision: z.ZodEnum<["approve", "decline"]>;
67
+ expectedRevision: z.ZodNumber;
68
+ reason: z.ZodOptional<z.ZodString>;
69
+ }, "strict", z.ZodTypeAny, {
70
+ requirement: "customer" | "company";
71
+ decision: "approve" | "decline";
72
+ expectedRevision: number;
73
+ reason?: string | undefined;
74
+ }, {
75
+ requirement: "customer" | "company";
76
+ decision: "approve" | "decline";
77
+ expectedRevision: number;
78
+ reason?: string | undefined;
79
+ }>;
80
+ export type ApprovalDecision = z.infer<typeof approvalDecisionSchema>;
81
+ export declare const approvalChangeSchema: z.ZodObject<{
82
+ expectedRevision: z.ZodNumber;
83
+ message: z.ZodString;
84
+ }, "strict", z.ZodTypeAny, {
85
+ message: string;
86
+ expectedRevision: number;
87
+ }, {
88
+ message: string;
89
+ expectedRevision: number;
90
+ }>;
91
+ export type ApprovalChange = z.infer<typeof approvalChangeSchema>;
92
+ export declare const approvalChannelConfigSchema: z.ZodObject<{
93
+ kind: z.ZodEnum<["email", "slack", "teams", "whatsapp"]>;
94
+ enabled: z.ZodBoolean;
95
+ accountId: z.ZodNullable<z.ZodString>;
96
+ destinationId: z.ZodNullable<z.ZodString>;
97
+ templateId: z.ZodNullable<z.ZodString>;
98
+ templateLanguage: z.ZodNullable<z.ZodString>;
99
+ }, "strict", z.ZodTypeAny, {
100
+ kind: "email" | "slack" | "teams" | "whatsapp";
101
+ enabled: boolean;
102
+ accountId: string | null;
103
+ destinationId: string | null;
104
+ templateId: string | null;
105
+ templateLanguage: string | null;
106
+ }, {
107
+ kind: "email" | "slack" | "teams" | "whatsapp";
108
+ enabled: boolean;
109
+ accountId: string | null;
110
+ destinationId: string | null;
111
+ templateId: string | null;
112
+ templateLanguage: string | null;
113
+ }>;
114
+ export type ApprovalChannelConfig = z.infer<typeof approvalChannelConfigSchema>;
115
+ export declare const approvalSettingsSchema: z.ZodEffects<z.ZodObject<{
116
+ revision: z.ZodNumber;
117
+ expiryHours: z.ZodNumber;
118
+ codeApprovalRequired: z.ZodBoolean;
119
+ channels: z.ZodArray<z.ZodObject<{
120
+ kind: z.ZodEnum<["email", "slack", "teams", "whatsapp"]>;
121
+ enabled: z.ZodBoolean;
122
+ accountId: z.ZodNullable<z.ZodString>;
123
+ destinationId: z.ZodNullable<z.ZodString>;
124
+ templateId: z.ZodNullable<z.ZodString>;
125
+ templateLanguage: z.ZodNullable<z.ZodString>;
126
+ }, "strict", z.ZodTypeAny, {
127
+ kind: "email" | "slack" | "teams" | "whatsapp";
128
+ enabled: boolean;
129
+ accountId: string | null;
130
+ destinationId: string | null;
131
+ templateId: string | null;
132
+ templateLanguage: string | null;
133
+ }, {
134
+ kind: "email" | "slack" | "teams" | "whatsapp";
135
+ enabled: boolean;
136
+ accountId: string | null;
137
+ destinationId: string | null;
138
+ templateId: string | null;
139
+ templateLanguage: string | null;
140
+ }>, "many">;
141
+ }, "strict", z.ZodTypeAny, {
142
+ revision: number;
143
+ expiryHours: number;
144
+ codeApprovalRequired: boolean;
145
+ channels: {
146
+ kind: "email" | "slack" | "teams" | "whatsapp";
147
+ enabled: boolean;
148
+ accountId: string | null;
149
+ destinationId: string | null;
150
+ templateId: string | null;
151
+ templateLanguage: string | null;
152
+ }[];
153
+ }, {
154
+ revision: number;
155
+ expiryHours: number;
156
+ codeApprovalRequired: boolean;
157
+ channels: {
158
+ kind: "email" | "slack" | "teams" | "whatsapp";
159
+ enabled: boolean;
160
+ accountId: string | null;
161
+ destinationId: string | null;
162
+ templateId: string | null;
163
+ templateLanguage: string | null;
164
+ }[];
165
+ }>, {
166
+ revision: number;
167
+ expiryHours: number;
168
+ codeApprovalRequired: boolean;
169
+ channels: {
170
+ kind: "email" | "slack" | "teams" | "whatsapp";
171
+ enabled: boolean;
172
+ accountId: string | null;
173
+ destinationId: string | null;
174
+ templateId: string | null;
175
+ templateLanguage: string | null;
176
+ }[];
177
+ }, {
178
+ revision: number;
179
+ expiryHours: number;
180
+ codeApprovalRequired: boolean;
181
+ channels: {
182
+ kind: "email" | "slack" | "teams" | "whatsapp";
183
+ enabled: boolean;
184
+ accountId: string | null;
185
+ destinationId: string | null;
186
+ templateId: string | null;
187
+ templateLanguage: string | null;
188
+ }[];
189
+ }>;
190
+ export type ApprovalSettings = z.infer<typeof approvalSettingsSchema>;
191
+ export declare const approvalGrantSchema: z.ZodEffects<z.ZodObject<{
192
+ id: z.ZodOptional<z.ZodString>;
193
+ kind: z.ZodEnum<["dashboard_user", "external", "customer"]>;
194
+ subjectId: z.ZodString;
195
+ name: z.ZodString;
196
+ tenantId: z.ZodDefault<z.ZodNullable<z.ZodString>>;
197
+ toolKeys: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
198
+ accountIds: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
199
+ /** Exact JSON pointer/value restrictions, checked against the stored request, never its title. */
200
+ resources: z.ZodDefault<z.ZodArray<z.ZodObject<{
201
+ pointer: z.ZodString;
202
+ value: z.ZodUnion<[z.ZodString, z.ZodNumber, z.ZodBoolean]>;
203
+ }, "strict", z.ZodTypeAny, {
204
+ value: string | number | boolean;
205
+ pointer: string;
206
+ }, {
207
+ value: string | number | boolean;
208
+ pointer: string;
209
+ }>, "many">>;
210
+ }, "strict", z.ZodTypeAny, {
211
+ kind: "customer" | "dashboard_user" | "external";
212
+ tenantId: string | null;
213
+ subjectId: string;
214
+ name: string;
215
+ toolKeys: string[];
216
+ accountIds: string[];
217
+ resources: {
218
+ value: string | number | boolean;
219
+ pointer: string;
220
+ }[];
221
+ id?: string | undefined;
222
+ }, {
223
+ kind: "customer" | "dashboard_user" | "external";
224
+ subjectId: string;
225
+ name: string;
226
+ id?: string | undefined;
227
+ tenantId?: string | null | undefined;
228
+ toolKeys?: string[] | undefined;
229
+ accountIds?: string[] | undefined;
230
+ resources?: {
231
+ value: string | number | boolean;
232
+ pointer: string;
233
+ }[] | undefined;
234
+ }>, {
235
+ kind: "customer" | "dashboard_user" | "external";
236
+ tenantId: string | null;
237
+ subjectId: string;
238
+ name: string;
239
+ toolKeys: string[];
240
+ accountIds: string[];
241
+ resources: {
242
+ value: string | number | boolean;
243
+ pointer: string;
244
+ }[];
245
+ id?: string | undefined;
246
+ }, {
247
+ kind: "customer" | "dashboard_user" | "external";
248
+ subjectId: string;
249
+ name: string;
250
+ id?: string | undefined;
251
+ tenantId?: string | null | undefined;
252
+ toolKeys?: string[] | undefined;
253
+ accountIds?: string[] | undefined;
254
+ resources?: {
255
+ value: string | number | boolean;
256
+ pointer: string;
257
+ }[] | undefined;
258
+ }>;
259
+ export type ApprovalGrantInput = z.infer<typeof approvalGrantSchema>;
260
+ /** The session supplies identity. Server clients may grant only exact customer actions/resources. */
261
+ export declare const customerApprovalGrantSchema: z.ZodObject<{
262
+ revision: z.ZodNumber;
263
+ name: z.ZodString;
264
+ toolKeys: z.ZodArray<z.ZodString, "many">;
265
+ accountIds: z.ZodDefault<z.ZodArray<z.ZodString, "many">>;
266
+ resources: z.ZodArray<z.ZodObject<{
267
+ pointer: z.ZodString;
268
+ value: z.ZodUnion<[z.ZodString, z.ZodNumber, z.ZodBoolean]>;
269
+ }, "strict", z.ZodTypeAny, {
270
+ value: string | number | boolean;
271
+ pointer: string;
272
+ }, {
273
+ value: string | number | boolean;
274
+ pointer: string;
275
+ }>, "many">;
276
+ }, "strict", z.ZodTypeAny, {
277
+ revision: number;
278
+ name: string;
279
+ toolKeys: string[];
280
+ accountIds: string[];
281
+ resources: {
282
+ value: string | number | boolean;
283
+ pointer: string;
284
+ }[];
285
+ }, {
286
+ revision: number;
287
+ name: string;
288
+ toolKeys: string[];
289
+ resources: {
290
+ value: string | number | boolean;
291
+ pointer: string;
292
+ }[];
293
+ accountIds?: string[] | undefined;
294
+ }>;
295
+ export type CustomerApprovalGrantInput = z.infer<typeof customerApprovalGrantSchema>;
296
+ export interface CustomerApprovalGrantResponse {
297
+ revision: number;
298
+ grant: (ApprovalGrantInput & {
299
+ id: string;
300
+ kind: 'customer';
301
+ active: boolean;
302
+ }) | null;
303
+ }
304
+ export declare const approvalGroupSchema: z.ZodObject<{
305
+ id: z.ZodOptional<z.ZodString>;
306
+ name: z.ZodString;
307
+ memberIds: z.ZodArray<z.ZodString, "many">;
308
+ }, "strict", z.ZodTypeAny, {
309
+ name: string;
310
+ memberIds: string[];
311
+ id?: string | undefined;
312
+ }, {
313
+ name: string;
314
+ memberIds: string[];
315
+ id?: string | undefined;
316
+ }>;
317
+ export declare const approvalIdentitySchema: z.ZodObject<{
318
+ grantId: z.ZodString;
319
+ channel: z.ZodEnum<["email", "slack", "teams", "whatsapp"]>;
320
+ accountId: z.ZodString;
321
+ externalId: z.ZodString;
322
+ tenantExternalId: z.ZodDefault<z.ZodNullable<z.ZodString>>;
323
+ }, "strict", z.ZodTypeAny, {
324
+ accountId: string;
325
+ grantId: string;
326
+ channel: "email" | "slack" | "teams" | "whatsapp";
327
+ externalId: string;
328
+ tenantExternalId: string | null;
329
+ }, {
330
+ accountId: string;
331
+ grantId: string;
332
+ channel: "email" | "slack" | "teams" | "whatsapp";
333
+ externalId: string;
334
+ tenantExternalId?: string | null | undefined;
335
+ }>;
336
+ export declare const approvalListSchema: z.ZodObject<{
337
+ view: z.ZodDefault<z.ZodEnum<["inbox", "history"]>>;
338
+ outcome: z.ZodDefault<z.ZodEnum<["all", "approved", "denied", "expired", "cancelled", "failed", "unknown"]>>;
339
+ source: z.ZodOptional<z.ZodEnum<["bot", "studio", "workbench", "sdk", "mcp"]>>;
340
+ sourceId: z.ZodOptional<z.ZodString>;
341
+ sessionId: z.ZodOptional<z.ZodString>;
342
+ sessionIds: z.ZodOptional<z.ZodEffects<z.ZodArray<z.ZodString, "many">, string[], unknown>>;
343
+ search: z.ZodOptional<z.ZodString>;
344
+ cursor: z.ZodOptional<z.ZodString>;
345
+ limit: z.ZodDefault<z.ZodNumber>;
346
+ }, "strip", z.ZodTypeAny, {
347
+ view: "inbox" | "history";
348
+ outcome: "approved" | "denied" | "cancelled" | "expired" | "failed" | "unknown" | "all";
349
+ limit: number;
350
+ source?: "bot" | "studio" | "workbench" | "sdk" | "mcp" | undefined;
351
+ sourceId?: string | undefined;
352
+ sessionId?: string | undefined;
353
+ sessionIds?: string[] | undefined;
354
+ search?: string | undefined;
355
+ cursor?: string | undefined;
356
+ }, {
357
+ view?: "inbox" | "history" | undefined;
358
+ outcome?: "approved" | "denied" | "cancelled" | "expired" | "failed" | "unknown" | "all" | undefined;
359
+ source?: "bot" | "studio" | "workbench" | "sdk" | "mcp" | undefined;
360
+ sourceId?: string | undefined;
361
+ sessionId?: string | undefined;
362
+ sessionIds?: unknown;
363
+ search?: string | undefined;
364
+ cursor?: string | undefined;
365
+ limit?: number | undefined;
366
+ }>;
367
+ export type ApprovalListQuery = z.infer<typeof approvalListSchema>;
368
+ export type ApprovalDeliveryStatus = 'queued' | 'sending' | 'sent' | 'delivered' | 'failed' | 'cancelled' | 'unknown';
369
+ export interface ApprovalRecord {
370
+ id: string;
371
+ projectId: string;
372
+ sessionId: string | null;
373
+ revision: number;
374
+ status: ApprovalStatus;
375
+ audience: ApprovalAudience;
376
+ requirements: ApprovalRequirement[];
377
+ actors: Array<{
378
+ kind: ApprovalActor['kind'];
379
+ id: string;
380
+ name: string;
381
+ }>;
382
+ display: {
383
+ title: string;
384
+ actionLabel: string | null;
385
+ providerKey: string | null;
386
+ providerName: string | null;
387
+ accountName: string | null;
388
+ values: Array<{
389
+ key: string;
390
+ label: string;
391
+ value: unknown;
392
+ }>;
393
+ };
394
+ source: {
395
+ kind: 'bot' | 'studio' | 'workbench' | 'sdk' | 'mcp';
396
+ id: string | null;
397
+ name: string | null;
398
+ botId?: string | null;
399
+ };
400
+ customer: {
401
+ id: string;
402
+ tenantId: string;
403
+ name: string | null;
404
+ } | null;
405
+ action: string;
406
+ request: unknown;
407
+ reason: string | null;
408
+ denialReason: string | null;
409
+ execution: {
410
+ kind: string | null;
411
+ id: string | null;
412
+ status: 'waiting' | 'queued' | 'running' | 'succeeded' | 'failed' | 'unknown' | 'cancelled';
413
+ error: string | null;
414
+ startedAt: string | null;
415
+ completedAt: string | null;
416
+ };
417
+ deliveries: Array<{
418
+ id: string;
419
+ channel: ApprovalChannel;
420
+ destination: string;
421
+ destinationLabel: string;
422
+ status: ApprovalDeliveryStatus;
423
+ error: string | null;
424
+ sentAt: string | null;
425
+ }>;
426
+ permissions: {
427
+ canDecide: boolean;
428
+ canRevise?: boolean;
429
+ requirement: 'customer' | 'company' | null;
430
+ canManage: boolean;
431
+ reason: string | null;
432
+ };
433
+ expiresAt: string;
434
+ createdAt: string;
435
+ updatedAt: string;
436
+ replacedById: string | null;
437
+ }
438
+ export interface ApprovalListResponse {
439
+ items: ApprovalRecord[];
440
+ total: number;
441
+ pendingCount: number;
442
+ nextCursor: string | null;
443
+ }
444
+ export interface ApprovalSettingsResponse extends ApprovalSettings {
445
+ canManage: boolean;
446
+ people: Array<ApprovalGrantInput & {
447
+ id: string;
448
+ active: boolean;
449
+ email: string | null;
450
+ openRequestCount: number;
451
+ identities: Array<{
452
+ id: string;
453
+ channel: ApprovalChannel;
454
+ accountId: string;
455
+ externalId: string;
456
+ verified: boolean;
457
+ optedIn: boolean;
458
+ }>;
459
+ }>;
460
+ groups: Array<{
461
+ id: string;
462
+ name: string;
463
+ memberIds: string[];
464
+ }>;
465
+ members: Array<{
466
+ id: string;
467
+ name: string;
468
+ email: string;
469
+ role: string;
470
+ }>;
471
+ }
472
+ export interface ApprovalChannelSetup {
473
+ config: ApprovalChannelConfig;
474
+ revision: number;
475
+ installationUrl: string | null;
476
+ accounts: Array<{
477
+ id: string;
478
+ label: string;
479
+ providerKey: string;
480
+ status: string;
481
+ }>;
482
+ destinations: Array<{
483
+ id: string;
484
+ label: string;
485
+ }>;
486
+ members: Array<{
487
+ id: string;
488
+ name: string;
489
+ email: string | null;
490
+ tenantExternalId: string | null;
491
+ }>;
492
+ templates: Array<{
493
+ id: string;
494
+ label: string;
495
+ language: string;
496
+ status: string;
497
+ }>;
498
+ checks: Array<{
499
+ code: string;
500
+ status: 'ready' | 'missing' | 'error';
501
+ message: string;
502
+ }>;
503
+ ready: boolean;
504
+ }
505
+ export declare function requirementsForAudience(audience: ApprovalAudience): ApprovalRequirement[];
506
+ /** Only the first outstanding requirement is actionable. */
507
+ export declare function activeApprovalRequirement(requirements: ApprovalRequirement[]): ApprovalRequirement | null;
508
+ //# sourceMappingURL=platform-approval-contract.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"platform-approval-contract.d.ts","sourceRoot":"","sources":["../../../../../src/domain/platform-approval-contract.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,77 @@
1
+ import { z } from 'zod';
2
+ /** One contract for portal, notifications, SDK and MCP. No presentation-derived decisions. */
3
+ export const approvalAudienceSchema = z.enum(['approvers', 'customer', 'customer-approvers']);
4
+ export const approvalStatusSchema = z.enum(['pending', 'approved', 'applying', 'applied', 'apply_failed', 'denied', 'cancelled', 'expired']);
5
+ export const approvalExecutionStatusSchema = z.enum(['waiting', 'queued', 'running', 'succeeded', 'failed', 'unknown', 'cancelled']);
6
+ export const approvalChannelSchema = z.enum(['email', 'slack', 'teams', 'whatsapp']);
7
+ export const approvalActorSchema = z.object({ kind: z.enum(['dashboard_user', 'customer', 'external', 'api_key', 'mcp_grant']), id: z.string(), tenantId: z.string().optional() }).strict();
8
+ export const approvalRequirementSchema = z.object({
9
+ kind: z.enum(['customer', 'company']), status: z.enum(['pending', 'approved', 'denied']),
10
+ actor: approvalActorSchema.nullable().default(null), decidedAt: z.string().datetime().nullable().default(null),
11
+ reason: z.string().max(2000).nullable().default(null),
12
+ }).strict();
13
+ export const approvalDecisionSchema = z.object({
14
+ requirement: z.enum(['customer', 'company']), decision: z.enum(['approve', 'decline']),
15
+ expectedRevision: z.number().int().positive(), reason: z.string().trim().max(2000).optional(),
16
+ }).strict();
17
+ export const approvalChangeSchema = z.object({ expectedRevision: z.number().int().positive(), message: z.string().trim().min(1).max(8000) }).strict();
18
+ export const approvalChannelConfigSchema = z.object({
19
+ kind: approvalChannelSchema, enabled: z.boolean(), accountId: z.string().uuid().nullable(),
20
+ destinationId: z.string().max(500).nullable(), templateId: z.string().max(500).nullable(),
21
+ templateLanguage: z.string().max(40).nullable(),
22
+ }).strict();
23
+ export const approvalSettingsSchema = z.object({
24
+ revision: z.number().int().nonnegative(), expiryHours: z.number().int().min(1).max(168),
25
+ codeApprovalRequired: z.boolean(), channels: z.array(approvalChannelConfigSchema).max(4),
26
+ }).strict().superRefine((value, ctx) => {
27
+ if (new Set(value.channels.map(c => c.kind)).size !== value.channels.length)
28
+ ctx.addIssue({ code: 'custom', path: ['channels'], message: 'Configure each channel once.' });
29
+ for (const [index, channel] of value.channels.entries())
30
+ if (channel.enabled && !channel.accountId)
31
+ ctx.addIssue({ code: 'custom', path: ['channels', index, 'accountId'], message: 'Choose a connected account.' });
32
+ });
33
+ export const approvalGrantSchema = z.object({
34
+ id: z.string().uuid().optional(), kind: z.enum(['dashboard_user', 'external', 'customer']),
35
+ subjectId: z.string().min(1).max(320), name: z.string().trim().min(1).max(200),
36
+ tenantId: z.string().uuid().nullable().default(null),
37
+ toolKeys: z.array(z.string().min(1).max(300)).max(200).default([]),
38
+ accountIds: z.array(z.string().uuid()).max(200).default([]),
39
+ /** Exact JSON pointer/value restrictions, checked against the stored request, never its title. */
40
+ resources: z.array(z.object({ pointer: z.string().max(500).startsWith('/'), value: z.union([z.string(), z.number(), z.boolean()]) }).strict()).max(50).default([]),
41
+ }).strict().superRefine((grant, ctx) => {
42
+ if (grant.kind === 'customer' && (!grant.tenantId || !grant.toolKeys.length || !grant.resources.length))
43
+ ctx.addIssue({ code: 'custom', message: 'Customer grants require a tenant, explicit actions and exact resource restrictions.' });
44
+ });
45
+ /** The session supplies identity. Server clients may grant only exact customer actions/resources. */
46
+ export const customerApprovalGrantSchema = z.object({
47
+ revision: z.number().int().nonnegative(),
48
+ name: z.string().trim().min(1).max(200),
49
+ toolKeys: z.array(z.string().min(1).max(300)).min(1).max(200),
50
+ accountIds: z.array(z.string().uuid()).max(200).default([]),
51
+ resources: z.array(z.object({ pointer: z.string().max(500).startsWith('/'), value: z.union([z.string(), z.number(), z.boolean()]) }).strict()).min(1).max(50),
52
+ }).strict();
53
+ export const approvalGroupSchema = z.object({ id: z.string().uuid().optional(), name: z.string().trim().min(1).max(100), memberIds: z.array(z.string().uuid()).max(200) }).strict();
54
+ export const approvalIdentitySchema = z.object({
55
+ grantId: z.string().uuid(), channel: approvalChannelSchema, accountId: z.string().uuid(),
56
+ externalId: z.string().min(1).max(500), tenantExternalId: z.string().max(500).nullable().default(null),
57
+ }).strict();
58
+ export const approvalListSchema = z.object({
59
+ view: z.enum(['inbox', 'history']).default('inbox'),
60
+ outcome: z.enum(['all', 'approved', 'denied', 'expired', 'cancelled', 'failed', 'unknown']).default('all'),
61
+ source: z.enum(['bot', 'studio', 'workbench', 'sdk', 'mcp']).optional(),
62
+ sourceId: z.string().uuid().optional(), sessionId: z.string().uuid().optional(),
63
+ sessionIds: z.preprocess(value => typeof value === 'string' ? value.split(',') : value, z.array(z.string().uuid()).min(1).max(50)).optional(),
64
+ search: z.string().trim().max(200).optional(), cursor: z.string().uuid().optional(),
65
+ limit: z.coerce.number().int().min(1).max(100).default(30),
66
+ });
67
+ export function requirementsForAudience(audience) {
68
+ return (audience === 'customer-approvers' ? ['customer', 'company'] : audience === 'customer' ? ['customer'] : ['company'])
69
+ .map(kind => ({ kind, status: 'pending', actor: null, decidedAt: null, reason: null }));
70
+ }
71
+ /** Only the first outstanding requirement is actionable. */
72
+ export function activeApprovalRequirement(requirements) {
73
+ if (requirements.some(r => r.status === 'denied'))
74
+ return null;
75
+ return requirements.find(r => r.status === 'pending') ?? null;
76
+ }
77
+ //# sourceMappingURL=platform-approval-contract.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"platform-approval-contract.js","sourceRoot":"","sources":["../../../../../src/domain/platform-approval-contract.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"provider-branding.d.ts","sourceRoot":"","sources":["../../../../../src/domain/provider-branding.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,uBAAuB,GAAG,UAAU,GAAG,UAAU,GAAG,SAAS,CAAC;AAE1E,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,eAAe,GAAG,YAAY,GAAG,WAAW,GAAG,YAAY,CAAC;CACvE;AAED,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,uBAAuB,CAAC;IAC9B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,uBAAuB;IACtC,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,gBAAgB,EAAE,MAAM,CAAC;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,kBAAkB,CAAC;IACzB,IAAI,EAAE,kBAAkB,CAAC;IACzB,MAAM,EAAE,mBAAmB,CAAC;CAC7B;AAueD,wBAAgB,kBAAkB,IAAI,uBAAuB,EAAE,CAE9D;AAED,wBAAgB,gBAAgB,CAAC,WAAW,EAAE,MAAM,GAAG,uBAAuB,CAE7E;AAED,wBAAgB,uBAAuB,CAAC,SAAS,EAAE,MAAM,GAAG;IAC1D,IAAI,EAAE,kBAAkB,CAAC;IACzB,IAAI,EAAE,kBAAkB,CAAC;CAC1B,CAWA"}
1
+ {"version":3,"file":"provider-branding.d.ts","sourceRoot":"","sources":["../../../../../src/domain/provider-branding.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,uBAAuB,GAAG,UAAU,GAAG,UAAU,GAAG,SAAS,CAAC;AAE1E,MAAM,WAAW,kBAAkB;IACjC,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,eAAe,GAAG,YAAY,GAAG,WAAW,GAAG,YAAY,CAAC;CACvE;AAED,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,uBAAuB,CAAC;IAC9B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,uBAAuB;IACtC,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,gBAAgB,EAAE,MAAM,CAAC;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,kBAAkB,CAAC;IACzB,IAAI,EAAE,kBAAkB,CAAC;IACzB,MAAM,EAAE,mBAAmB,CAAC;CAC7B;AAwfD,wBAAgB,kBAAkB,IAAI,uBAAuB,EAAE,CAE9D;AAED,wBAAgB,gBAAgB,CAAC,WAAW,EAAE,MAAM,GAAG,uBAAuB,CAE7E;AAED,wBAAgB,uBAAuB,CAAC,SAAS,EAAE,MAAM,GAAG;IAC1D,IAAI,EAAE,kBAAkB,CAAC;IACzB,IAAI,EAAE,kBAAkB,CAAC;CAC1B,CAWA"}
@@ -1,4 +1,21 @@
1
1
  const providerBrands = [
2
+ providerBrand({
3
+ providerKey: 'x', displayName: 'X (Twitter)', assetName: 'x', fallbackInitials: 'X', brandColor: '#000000',
4
+ icon: { path: '/provider-icons/x.svg', mimeType: 'image/svg+xml' },
5
+ logo: { path: '/provider-icons/x.svg', mimeType: 'image/svg+xml' },
6
+ source: { kind: 'official', url: 'https://about.x.com/en/who-we-are/brand-toolkit' },
7
+ }),
8
+ { providerKey: 'square', displayName: 'Square', assetName: 'square', fallbackInitials: 'SQ', brandColor: '#006aff', icon: { path: '/provider-icons/square.svg', mimeType: 'image/svg+xml' }, logo: { path: '/provider-icons/square.svg', mimeType: 'image/svg+xml' }, source: { kind: 'official', url: 'https://squareup.com/' } },
9
+ {
10
+ providerKey: 'woocommerce', displayName: 'WooCommerce', assetName: 'woocommerce', fallbackInitials: 'WC', brandColor: '#96588a',
11
+ icon: { path: '/provider-icons/woocommerce.svg', mimeType: 'image/svg+xml' },
12
+ logo: { path: '/provider-icons/woocommerce.svg', mimeType: 'image/svg+xml' },
13
+ source: { kind: 'official', url: 'https://woocommerce.com/brand/' },
14
+ },
15
+ providerBrand({
16
+ providerKey: 'mercury', displayName: 'Mercury', assetName: 'mercury', fallbackInitials: 'M', brandColor: '#5266eb',
17
+ source: { kind: 'official', url: 'https://mercury.com/', note: 'Official Mercury icon supplied for this connector.' },
18
+ }),
2
19
  providerBrand({
3
20
  providerKey: 'platform',
4
21
  displayName: 'Stacklink',