@builderbot/manager 1.0.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.
- package/LICENSE.md +16 -0
- package/README.md +160 -0
- package/dist/api.d.ts +73 -0
- package/dist/api.d.ts.map +1 -0
- package/dist/bot-manager.d.ts +125 -0
- package/dist/bot-manager.d.ts.map +1 -0
- package/dist/flow-registry.d.ts +91 -0
- package/dist/flow-registry.d.ts.map +1 -0
- package/dist/index.cjs +41797 -0
- package/dist/index.d.ts +14 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/persistence.d.ts +90 -0
- package/dist/persistence.d.ts.map +1 -0
- package/dist/rate-limiter.d.ts +65 -0
- package/dist/rate-limiter.d.ts.map +1 -0
- package/dist/schemas.d.ts +213 -0
- package/dist/schemas.d.ts.map +1 -0
- package/dist/swagger.d.ts +968 -0
- package/dist/swagger.d.ts.map +1 -0
- package/dist/types.d.ts +116 -0
- package/dist/types.d.ts.map +1 -0
- package/package.json +70 -0
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @builderbot/manager
|
|
3
|
+
* Multi-tenant bot manager for BuilderBot
|
|
4
|
+
*/
|
|
5
|
+
export { BotManager } from './bot-manager';
|
|
6
|
+
export { BotManagerApi } from './api';
|
|
7
|
+
export { FlowRegistry, type FlowDefinition } from './flow-registry';
|
|
8
|
+
export { RateLimiter, type RateLimiterConfig } from './rate-limiter';
|
|
9
|
+
export { PersistenceManager, getDefaultPersistence, resetDefaultPersistence } from './persistence';
|
|
10
|
+
export { createBotSchema, updateBotSchema, sendMessageSchema, restartBotSchema, createFlowSchema, updateFlowSchema, validate } from './schemas';
|
|
11
|
+
export type { TenantConfig, BotInstance, BotManagerConfig, BotStatus, BotManagerEvent, BotManagerEventHandler, Flow, ProviderClass, DatabaseClass, ProviderFactory, DatabaseFactory, ReconnectState } from './types';
|
|
12
|
+
export type { CreateBotInput, UpdateBotInput, SendMessageInput, RestartBotInput, CreateFlowInput, UpdateFlowInput, FlowStep, ValidationResult } from './schemas';
|
|
13
|
+
export type { SerializableBotConfig, PersistenceConfig } from './persistence';
|
|
14
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAA;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAA;AACrC,OAAO,EAAE,YAAY,EAAE,KAAK,cAAc,EAAE,MAAM,iBAAiB,CAAA;AACnE,OAAO,EAAE,WAAW,EAAE,KAAK,iBAAiB,EAAE,MAAM,gBAAgB,CAAA;AACpE,OAAO,EACL,kBAAkB,EAClB,qBAAqB,EACrB,uBAAuB,EACxB,MAAM,eAAe,CAAA;AAGtB,OAAO,EACL,eAAe,EACf,eAAe,EACf,iBAAiB,EACjB,gBAAgB,EAChB,gBAAgB,EAChB,gBAAgB,EAChB,QAAQ,EACT,MAAM,WAAW,CAAA;AAGlB,YAAY,EACV,YAAY,EACZ,WAAW,EACX,gBAAgB,EAChB,SAAS,EACT,eAAe,EACf,sBAAsB,EACtB,IAAI,EACJ,aAAa,EACb,aAAa,EACb,eAAe,EACf,eAAe,EACf,cAAc,EACf,MAAM,SAAS,CAAA;AAGhB,YAAY,EACV,cAAc,EACd,cAAc,EACd,gBAAgB,EAChB,eAAe,EACf,eAAe,EACf,eAAe,EACf,QAAQ,EACR,gBAAgB,EACjB,MAAM,WAAW,CAAA;AAGlB,YAAY,EACV,qBAAqB,EACrB,iBAAiB,EAClB,MAAM,eAAe,CAAA"}
|
|
@@ -0,0 +1,90 @@
|
|
|
1
|
+
import type { TenantConfig } from './types';
|
|
2
|
+
/**
|
|
3
|
+
* Serializable bot configuration (without Flow objects)
|
|
4
|
+
*/
|
|
5
|
+
export interface SerializableBotConfig {
|
|
6
|
+
tenantId: string;
|
|
7
|
+
name?: string;
|
|
8
|
+
flowIds: string[];
|
|
9
|
+
port?: number;
|
|
10
|
+
providerOptions?: Record<string, any>;
|
|
11
|
+
databaseOptions?: Record<string, any>;
|
|
12
|
+
providerClassName?: string;
|
|
13
|
+
databaseClassName?: string;
|
|
14
|
+
createdAt: string;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Persistence configuration
|
|
18
|
+
*/
|
|
19
|
+
export interface PersistenceConfig {
|
|
20
|
+
/** Directory to store persistence files */
|
|
21
|
+
persistenceDir?: string;
|
|
22
|
+
/** File name for the persistence file */
|
|
23
|
+
fileName?: string;
|
|
24
|
+
/** Whether to auto-save on changes */
|
|
25
|
+
autoSave?: boolean;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Persistence manager for saving/loading bot configurations
|
|
29
|
+
*/
|
|
30
|
+
export declare class PersistenceManager {
|
|
31
|
+
private config;
|
|
32
|
+
private filePath;
|
|
33
|
+
private data;
|
|
34
|
+
constructor(config?: PersistenceConfig);
|
|
35
|
+
/**
|
|
36
|
+
* Save a bot configuration
|
|
37
|
+
*/
|
|
38
|
+
save(tenantId: string, config: Omit<TenantConfig, 'flows'> & {
|
|
39
|
+
flowIds: string[];
|
|
40
|
+
}, providerClassName?: string, databaseClassName?: string): void;
|
|
41
|
+
/**
|
|
42
|
+
* Remove a bot configuration
|
|
43
|
+
*/
|
|
44
|
+
remove(tenantId: string): boolean;
|
|
45
|
+
/**
|
|
46
|
+
* Get a bot configuration
|
|
47
|
+
*/
|
|
48
|
+
get(tenantId: string): SerializableBotConfig | undefined;
|
|
49
|
+
/**
|
|
50
|
+
* Get all bot configurations
|
|
51
|
+
*/
|
|
52
|
+
getAll(): SerializableBotConfig[];
|
|
53
|
+
/**
|
|
54
|
+
* Check if a bot configuration exists
|
|
55
|
+
*/
|
|
56
|
+
has(tenantId: string): boolean;
|
|
57
|
+
/**
|
|
58
|
+
* Clear all configurations
|
|
59
|
+
*/
|
|
60
|
+
clear(): void;
|
|
61
|
+
/**
|
|
62
|
+
* Get count of stored configurations
|
|
63
|
+
*/
|
|
64
|
+
count(): number;
|
|
65
|
+
/**
|
|
66
|
+
* Persist data to file
|
|
67
|
+
*/
|
|
68
|
+
persist(): void;
|
|
69
|
+
/**
|
|
70
|
+
* Load data from file
|
|
71
|
+
*/
|
|
72
|
+
load(): void;
|
|
73
|
+
/**
|
|
74
|
+
* Delete the persistence file
|
|
75
|
+
*/
|
|
76
|
+
deleteFile(): void;
|
|
77
|
+
/**
|
|
78
|
+
* Get the file path
|
|
79
|
+
*/
|
|
80
|
+
getFilePath(): string;
|
|
81
|
+
}
|
|
82
|
+
/**
|
|
83
|
+
* Get or create the default persistence manager
|
|
84
|
+
*/
|
|
85
|
+
export declare function getDefaultPersistence(config?: PersistenceConfig): PersistenceManager;
|
|
86
|
+
/**
|
|
87
|
+
* Reset the default persistence manager (useful for testing)
|
|
88
|
+
*/
|
|
89
|
+
export declare function resetDefaultPersistence(): void;
|
|
90
|
+
//# sourceMappingURL=persistence.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"persistence.d.ts","sourceRoot":"","sources":["../src/persistence.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,YAAY,EAAQ,MAAM,SAAS,CAAA;AAEjD;;GAEG;AACH,MAAM,WAAW,qBAAqB;IACpC,QAAQ,EAAE,MAAM,CAAA;IAChB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,OAAO,EAAE,MAAM,EAAE,CAAA;IACjB,IAAI,CAAC,EAAE,MAAM,CAAA;IACb,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IACrC,eAAe,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;IACrC,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,iBAAiB,CAAC,EAAE,MAAM,CAAA;IAC1B,SAAS,EAAE,MAAM,CAAA;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,2CAA2C;IAC3C,cAAc,CAAC,EAAE,MAAM,CAAA;IACvB,yCAAyC;IACzC,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,sCAAsC;IACtC,QAAQ,CAAC,EAAE,OAAO,CAAA;CACnB;AAED;;GAEG;AACH,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,MAAM,CAA6B;IAC3C,OAAO,CAAC,QAAQ,CAAQ;IACxB,OAAO,CAAC,IAAI,CAAgD;gBAEhD,MAAM,GAAE,iBAAsB;IAU1C;;OAEG;IACH,IAAI,CACF,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,IAAI,CAAC,YAAY,EAAE,OAAO,CAAC,GAAG;QAAE,OAAO,EAAE,MAAM,EAAE,CAAA;KAAE,EAC3D,iBAAiB,CAAC,EAAE,MAAM,EAC1B,iBAAiB,CAAC,EAAE,MAAM,GACzB,IAAI;IAoBP;;OAEG;IACH,MAAM,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;IAUjC;;OAEG;IACH,GAAG,CAAC,QAAQ,EAAE,MAAM,GAAG,qBAAqB,GAAG,SAAS;IAIxD;;OAEG;IACH,MAAM,IAAI,qBAAqB,EAAE;IAIjC;;OAEG;IACH,GAAG,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;IAI9B;;OAEG;IACH,KAAK,IAAI,IAAI;IAQb;;OAEG;IACH,KAAK,IAAI,MAAM;IAIf;;OAEG;IACH,OAAO,IAAI,IAAI;IAmBf;;OAEG;IACH,IAAI,IAAI,IAAI;IAkBZ;;OAEG;IACH,UAAU,IAAI,IAAI;IAWlB;;OAEG;IACH,WAAW,IAAI,MAAM;CAGtB;AAOD;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,MAAM,CAAC,EAAE,iBAAiB,GAAG,kBAAkB,CAKpF;AAED;;GAEG;AACH,wBAAgB,uBAAuB,IAAI,IAAI,CAE9C"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
import type { IncomingMessage, ServerResponse } from 'http';
|
|
2
|
+
/**
|
|
3
|
+
* Rate limiter configuration
|
|
4
|
+
*/
|
|
5
|
+
export interface RateLimiterConfig {
|
|
6
|
+
/** Maximum number of requests per window */
|
|
7
|
+
maxRequests?: number;
|
|
8
|
+
/** Window size in milliseconds */
|
|
9
|
+
windowMs?: number;
|
|
10
|
+
/** Message to return when rate limited */
|
|
11
|
+
message?: string;
|
|
12
|
+
/** Skip rate limiting for certain paths */
|
|
13
|
+
skipPaths?: string[];
|
|
14
|
+
/** Custom key extractor (default: IP address) */
|
|
15
|
+
keyExtractor?: (req: IncomingMessage) => string;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Simple in-memory rate limiter
|
|
19
|
+
*/
|
|
20
|
+
export declare class RateLimiter {
|
|
21
|
+
private config;
|
|
22
|
+
private store;
|
|
23
|
+
private cleanupInterval;
|
|
24
|
+
constructor(config?: RateLimiterConfig);
|
|
25
|
+
/**
|
|
26
|
+
* Default key extractor - uses IP address
|
|
27
|
+
*/
|
|
28
|
+
private defaultKeyExtractor;
|
|
29
|
+
/**
|
|
30
|
+
* Check if request should be rate limited
|
|
31
|
+
*/
|
|
32
|
+
isRateLimited(req: IncomingMessage): {
|
|
33
|
+
limited: boolean;
|
|
34
|
+
remaining: number;
|
|
35
|
+
resetTime: number;
|
|
36
|
+
};
|
|
37
|
+
/**
|
|
38
|
+
* Create middleware function
|
|
39
|
+
*/
|
|
40
|
+
middleware(): (req: IncomingMessage, res: ServerResponse, next: () => void) => void;
|
|
41
|
+
/**
|
|
42
|
+
* Reset rate limit for a specific key
|
|
43
|
+
*/
|
|
44
|
+
reset(key: string): void;
|
|
45
|
+
/**
|
|
46
|
+
* Clear all rate limit data
|
|
47
|
+
*/
|
|
48
|
+
clear(): void;
|
|
49
|
+
/**
|
|
50
|
+
* Cleanup expired entries
|
|
51
|
+
*/
|
|
52
|
+
private cleanup;
|
|
53
|
+
/**
|
|
54
|
+
* Stop the cleanup interval
|
|
55
|
+
*/
|
|
56
|
+
destroy(): void;
|
|
57
|
+
/**
|
|
58
|
+
* Get current stats
|
|
59
|
+
*/
|
|
60
|
+
getStats(): {
|
|
61
|
+
activeKeys: number;
|
|
62
|
+
config: RateLimiterConfig;
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
//# sourceMappingURL=rate-limiter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"rate-limiter.d.ts","sourceRoot":"","sources":["../src/rate-limiter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,MAAM,CAAA;AAE3D;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,4CAA4C;IAC5C,WAAW,CAAC,EAAE,MAAM,CAAA;IACpB,kCAAkC;IAClC,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB,0CAA0C;IAC1C,OAAO,CAAC,EAAE,MAAM,CAAA;IAChB,2CAA2C;IAC3C,SAAS,CAAC,EAAE,MAAM,EAAE,CAAA;IACpB,iDAAiD;IACjD,YAAY,CAAC,EAAE,CAAC,GAAG,EAAE,eAAe,KAAK,MAAM,CAAA;CAChD;AAUD;;GAEG;AACH,qBAAa,WAAW;IACtB,OAAO,CAAC,MAAM,CAA6B;IAC3C,OAAO,CAAC,KAAK,CAAyC;IACtD,OAAO,CAAC,eAAe,CAA8C;gBAEzD,MAAM,GAAE,iBAAsB;IAa1C;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAS3B;;OAEG;IACH,aAAa,CAAC,GAAG,EAAE,eAAe,GAAG;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAA;KAAE;IA8C/F;;OAEG;IACH,UAAU,KACA,KAAK,eAAe,EAAE,KAAK,cAAc,EAAE,MAAM,MAAM,IAAI;IAsBrE;;OAEG;IACH,KAAK,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI;IAIxB;;OAEG;IACH,KAAK,IAAI,IAAI;IAIb;;OAEG;IACH,OAAO,CAAC,OAAO;IASf;;OAEG;IACH,OAAO,IAAI,IAAI;IAQf;;OAEG;IACH,QAAQ,IAAI;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,iBAAiB,CAAA;KAAE;CAM9D"}
|
|
@@ -0,0 +1,213 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
/**
|
|
3
|
+
* Schema for creating a new bot
|
|
4
|
+
*/
|
|
5
|
+
export declare const createBotSchema: z.ZodObject<{
|
|
6
|
+
tenantId: z.ZodEffects<z.ZodString, string, string>;
|
|
7
|
+
name: z.ZodOptional<z.ZodString>;
|
|
8
|
+
flowIds: z.ZodArray<z.ZodString, "many">;
|
|
9
|
+
port: z.ZodOptional<z.ZodNumber>;
|
|
10
|
+
providerOptions: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodAny>>;
|
|
11
|
+
}, "strip", z.ZodTypeAny, {
|
|
12
|
+
tenantId?: string;
|
|
13
|
+
name?: string;
|
|
14
|
+
flowIds?: string[];
|
|
15
|
+
port?: number;
|
|
16
|
+
providerOptions?: Record<string, any>;
|
|
17
|
+
}, {
|
|
18
|
+
tenantId?: string;
|
|
19
|
+
name?: string;
|
|
20
|
+
flowIds?: string[];
|
|
21
|
+
port?: number;
|
|
22
|
+
providerOptions?: Record<string, any>;
|
|
23
|
+
}>;
|
|
24
|
+
/**
|
|
25
|
+
* Schema for updating a bot
|
|
26
|
+
*/
|
|
27
|
+
export declare const updateBotSchema: z.ZodObject<{
|
|
28
|
+
name: z.ZodOptional<z.ZodString>;
|
|
29
|
+
}, "strip", z.ZodTypeAny, {
|
|
30
|
+
name?: string;
|
|
31
|
+
}, {
|
|
32
|
+
name?: string;
|
|
33
|
+
}>;
|
|
34
|
+
/**
|
|
35
|
+
* Schema for sending a message
|
|
36
|
+
*/
|
|
37
|
+
export declare const sendMessageSchema: z.ZodObject<{
|
|
38
|
+
number: z.ZodString;
|
|
39
|
+
message: z.ZodString;
|
|
40
|
+
media: z.ZodOptional<z.ZodString>;
|
|
41
|
+
}, "strip", z.ZodTypeAny, {
|
|
42
|
+
number?: string;
|
|
43
|
+
message?: string;
|
|
44
|
+
media?: string;
|
|
45
|
+
}, {
|
|
46
|
+
number?: string;
|
|
47
|
+
message?: string;
|
|
48
|
+
media?: string;
|
|
49
|
+
}>;
|
|
50
|
+
/**
|
|
51
|
+
* Schema for restarting a bot
|
|
52
|
+
*/
|
|
53
|
+
export declare const restartBotSchema: z.ZodObject<{
|
|
54
|
+
flowIds: z.ZodArray<z.ZodString, "many">;
|
|
55
|
+
port: z.ZodOptional<z.ZodNumber>;
|
|
56
|
+
name: z.ZodOptional<z.ZodString>;
|
|
57
|
+
}, "strip", z.ZodTypeAny, {
|
|
58
|
+
name?: string;
|
|
59
|
+
flowIds?: string[];
|
|
60
|
+
port?: number;
|
|
61
|
+
}, {
|
|
62
|
+
name?: string;
|
|
63
|
+
flowIds?: string[];
|
|
64
|
+
port?: number;
|
|
65
|
+
}>;
|
|
66
|
+
/**
|
|
67
|
+
* Flow step schema - defines a single step in the flow
|
|
68
|
+
*/
|
|
69
|
+
declare const flowStepSchema: z.ZodObject<{
|
|
70
|
+
/** The message to send */
|
|
71
|
+
answer: z.ZodString;
|
|
72
|
+
/** Optional delay before sending (ms) */
|
|
73
|
+
delay: z.ZodOptional<z.ZodNumber>;
|
|
74
|
+
/** Optional media URL to attach */
|
|
75
|
+
media: z.ZodOptional<z.ZodString>;
|
|
76
|
+
/** Whether to capture user response */
|
|
77
|
+
capture: z.ZodOptional<z.ZodBoolean>;
|
|
78
|
+
}, "strip", z.ZodTypeAny, {
|
|
79
|
+
media?: string;
|
|
80
|
+
answer?: string;
|
|
81
|
+
delay?: number;
|
|
82
|
+
capture?: boolean;
|
|
83
|
+
}, {
|
|
84
|
+
media?: string;
|
|
85
|
+
answer?: string;
|
|
86
|
+
delay?: number;
|
|
87
|
+
capture?: boolean;
|
|
88
|
+
}>;
|
|
89
|
+
/**
|
|
90
|
+
* Schema for creating a dynamic flow
|
|
91
|
+
*/
|
|
92
|
+
export declare const createFlowSchema: z.ZodObject<{
|
|
93
|
+
/** Unique flow identifier */
|
|
94
|
+
id: z.ZodEffects<z.ZodString, string, string>;
|
|
95
|
+
/** Display name for the flow */
|
|
96
|
+
name: z.ZodString;
|
|
97
|
+
/** Keywords that trigger this flow */
|
|
98
|
+
keyword: z.ZodUnion<[z.ZodString, z.ZodArray<z.ZodString, "many">]>;
|
|
99
|
+
/** Steps/answers in the flow */
|
|
100
|
+
steps: z.ZodArray<z.ZodObject<{
|
|
101
|
+
/** The message to send */
|
|
102
|
+
answer: z.ZodString;
|
|
103
|
+
/** Optional delay before sending (ms) */
|
|
104
|
+
delay: z.ZodOptional<z.ZodNumber>;
|
|
105
|
+
/** Optional media URL to attach */
|
|
106
|
+
media: z.ZodOptional<z.ZodString>;
|
|
107
|
+
/** Whether to capture user response */
|
|
108
|
+
capture: z.ZodOptional<z.ZodBoolean>;
|
|
109
|
+
}, "strip", z.ZodTypeAny, {
|
|
110
|
+
media?: string;
|
|
111
|
+
answer?: string;
|
|
112
|
+
delay?: number;
|
|
113
|
+
capture?: boolean;
|
|
114
|
+
}, {
|
|
115
|
+
media?: string;
|
|
116
|
+
answer?: string;
|
|
117
|
+
delay?: number;
|
|
118
|
+
capture?: boolean;
|
|
119
|
+
}>, "many">;
|
|
120
|
+
}, "strip", z.ZodTypeAny, {
|
|
121
|
+
name?: string;
|
|
122
|
+
id?: string;
|
|
123
|
+
keyword?: string | string[];
|
|
124
|
+
steps?: {
|
|
125
|
+
media?: string;
|
|
126
|
+
answer?: string;
|
|
127
|
+
delay?: number;
|
|
128
|
+
capture?: boolean;
|
|
129
|
+
}[];
|
|
130
|
+
}, {
|
|
131
|
+
name?: string;
|
|
132
|
+
id?: string;
|
|
133
|
+
keyword?: string | string[];
|
|
134
|
+
steps?: {
|
|
135
|
+
media?: string;
|
|
136
|
+
answer?: string;
|
|
137
|
+
delay?: number;
|
|
138
|
+
capture?: boolean;
|
|
139
|
+
}[];
|
|
140
|
+
}>;
|
|
141
|
+
/**
|
|
142
|
+
* Schema for updating a flow
|
|
143
|
+
*/
|
|
144
|
+
export declare const updateFlowSchema: z.ZodObject<{
|
|
145
|
+
name: z.ZodOptional<z.ZodString>;
|
|
146
|
+
keyword: z.ZodOptional<z.ZodUnion<[z.ZodString, z.ZodArray<z.ZodString, "many">]>>;
|
|
147
|
+
steps: z.ZodOptional<z.ZodArray<z.ZodObject<{
|
|
148
|
+
/** The message to send */
|
|
149
|
+
answer: z.ZodString;
|
|
150
|
+
/** Optional delay before sending (ms) */
|
|
151
|
+
delay: z.ZodOptional<z.ZodNumber>;
|
|
152
|
+
/** Optional media URL to attach */
|
|
153
|
+
media: z.ZodOptional<z.ZodString>;
|
|
154
|
+
/** Whether to capture user response */
|
|
155
|
+
capture: z.ZodOptional<z.ZodBoolean>;
|
|
156
|
+
}, "strip", z.ZodTypeAny, {
|
|
157
|
+
media?: string;
|
|
158
|
+
answer?: string;
|
|
159
|
+
delay?: number;
|
|
160
|
+
capture?: boolean;
|
|
161
|
+
}, {
|
|
162
|
+
media?: string;
|
|
163
|
+
answer?: string;
|
|
164
|
+
delay?: number;
|
|
165
|
+
capture?: boolean;
|
|
166
|
+
}>, "many">>;
|
|
167
|
+
}, "strip", z.ZodTypeAny, {
|
|
168
|
+
name?: string;
|
|
169
|
+
keyword?: string | string[];
|
|
170
|
+
steps?: {
|
|
171
|
+
media?: string;
|
|
172
|
+
answer?: string;
|
|
173
|
+
delay?: number;
|
|
174
|
+
capture?: boolean;
|
|
175
|
+
}[];
|
|
176
|
+
}, {
|
|
177
|
+
name?: string;
|
|
178
|
+
keyword?: string | string[];
|
|
179
|
+
steps?: {
|
|
180
|
+
media?: string;
|
|
181
|
+
answer?: string;
|
|
182
|
+
delay?: number;
|
|
183
|
+
capture?: boolean;
|
|
184
|
+
}[];
|
|
185
|
+
}>;
|
|
186
|
+
/**
|
|
187
|
+
* Type exports inferred from schemas
|
|
188
|
+
*/
|
|
189
|
+
export type CreateBotInput = z.infer<typeof createBotSchema>;
|
|
190
|
+
export type UpdateBotInput = z.infer<typeof updateBotSchema>;
|
|
191
|
+
export type SendMessageInput = z.infer<typeof sendMessageSchema>;
|
|
192
|
+
export type RestartBotInput = z.infer<typeof restartBotSchema>;
|
|
193
|
+
export type CreateFlowInput = z.infer<typeof createFlowSchema>;
|
|
194
|
+
export type UpdateFlowInput = z.infer<typeof updateFlowSchema>;
|
|
195
|
+
export type FlowStep = z.infer<typeof flowStepSchema>;
|
|
196
|
+
/**
|
|
197
|
+
* Validation result type
|
|
198
|
+
*/
|
|
199
|
+
export interface ValidationResult<T> {
|
|
200
|
+
success: boolean;
|
|
201
|
+
data?: T;
|
|
202
|
+
error?: string;
|
|
203
|
+
errors?: Array<{
|
|
204
|
+
field: string;
|
|
205
|
+
message: string;
|
|
206
|
+
}>;
|
|
207
|
+
}
|
|
208
|
+
/**
|
|
209
|
+
* Validate data against a Zod schema
|
|
210
|
+
*/
|
|
211
|
+
export declare function validate<T>(schema: z.ZodSchema<T>, data: unknown): ValidationResult<T>;
|
|
212
|
+
export {};
|
|
213
|
+
//# sourceMappingURL=schemas.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schemas.d.ts","sourceRoot":"","sources":["../src/schemas.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAoBvB;;GAEG;AACH,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;EAiB1B,CAAA;AAEF;;GAEG;AACH,eAAO,MAAM,eAAe;;;;;;EAM1B,CAAA;AAEF;;GAEG;AACH,eAAO,MAAM,iBAAiB;;;;;;;;;;;;EAc5B,CAAA;AAEF;;GAEG;AACH,eAAO,MAAM,gBAAgB;;;;;;;;;;;;EAe3B,CAAA;AAOF;;GAEG;AACH,QAAA,MAAM,cAAc;IAClB,0BAA0B;;IAE1B,yCAAyC;;IAEzC,mCAAmC;;IAEnC,uCAAuC;;;;;;;;;;;;EAEvC,CAAA;AAEF;;GAEG;AACH,eAAO,MAAM,gBAAgB;IAC3B,6BAA6B;;IAU7B,gCAAgC;;IAEhC,sCAAsC;;IAKtC,gCAAgC;;QA/BhC,0BAA0B;;QAE1B,yCAAyC;;QAEzC,mCAAmC;;QAEnC,uCAAuC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA2BvC,CAAA;AAEF;;GAEG;AACH,eAAO,MAAM,gBAAgB;;;;QAtC3B,0BAA0B;;QAE1B,yCAAyC;;QAEzC,mCAAmC;;QAEnC,uCAAuC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAuCvC,CAAA;AAEF;;GAEG;AACH,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAA;AAC5D,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAA;AAC5D,MAAM,MAAM,gBAAgB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAA;AAChE,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAA;AAC9D,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAA;AAC9D,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,gBAAgB,CAAC,CAAA;AAC9D,MAAM,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAA;AAErD;;GAEG;AACH,MAAM,WAAW,gBAAgB,CAAC,CAAC;IACjC,OAAO,EAAE,OAAO,CAAA;IAChB,IAAI,CAAC,EAAE,CAAC,CAAA;IACR,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,MAAM,CAAC,EAAE,KAAK,CAAC;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CACnD;AAED;;GAEG;AACH,wBAAgB,QAAQ,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAoBtF"}
|