jsfe 0.1.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.
@@ -0,0 +1,605 @@
1
+ /**
2
+ * Copyright (c) 2025 InstantAIguru.com
3
+
4
+ Permission is hereby granted, free of charge, to any person obtaining a copy of this software
5
+ and associated documentation files (the “Software”), to deal in the Software without restriction,
6
+ including without limitation the rights to use, copy, modify, merge, publish, distribute,
7
+ sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is
8
+ furnished to do so, subject to the following conditions:
9
+
10
+ The above copyright notice and this permission notice shall be included in all copies or
11
+ substantial portions of the Software.
12
+
13
+ THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING
14
+ BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
15
+ NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
16
+ DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
17
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
18
+ **/
19
+ /**
20
+ * Pure JS parser for .tools file content (string or object)
21
+ * @param input JSON string or parsed object
22
+ * @returns tools array
23
+ */
24
+ export declare function parseTools(input: string | object): any[];
25
+ /**
26
+ * Pure JS parser for .flows file content (string or object)
27
+ * @param input JSON string or parsed object
28
+ * @returns flows array
29
+ */
30
+ export declare function parseFlows(input: string | object): any[];
31
+ /**
32
+ * Logger interface for use with WorkflowEngine.
33
+ *
34
+ * Any logger passed to initSession must implement these four methods.
35
+ *
36
+ * @example
37
+ * class MyLogger implements Logger {
38
+ * info(msg: string) { ... }
39
+ * warn(msg: string) { ... }
40
+ * error(msg: string) { ... }
41
+ * debug(msg: string) { ... }
42
+ * }
43
+ */
44
+ export interface Logger {
45
+ info(message: string, ...args: unknown[]): void;
46
+ warn(message: string, ...args: unknown[]): void;
47
+ error(message: string, ...args: unknown[]): void;
48
+ debug(message: string, ...args: unknown[]): void;
49
+ }
50
+ export type MessageTemplates = Record<string, string>;
51
+ export type MessageRegistry = Record<string, MessageTemplates>;
52
+ export interface GuidanceConfig {
53
+ enabled: boolean;
54
+ mode: 'append' | 'prepend' | 'template' | 'none';
55
+ template?: string;
56
+ separator?: string;
57
+ contextSelector?: 'general' | 'payment' | 'auto';
58
+ guidanceMessages?: {
59
+ general?: string;
60
+ payment?: string;
61
+ } | MessageRegistry;
62
+ }
63
+ export declare const GUIDANCE_CONFIG_EXAMPLES: {
64
+ append: {
65
+ enabled: boolean;
66
+ mode: "append";
67
+ separator: string;
68
+ contextSelector: "auto";
69
+ };
70
+ elegant: {
71
+ enabled: boolean;
72
+ mode: "template";
73
+ template: string;
74
+ contextSelector: "auto";
75
+ };
76
+ integrated: {
77
+ enabled: boolean;
78
+ mode: "template";
79
+ template: string;
80
+ separator: string;
81
+ contextSelector: "auto";
82
+ guidanceMessages: {
83
+ general: string;
84
+ payment: string;
85
+ };
86
+ };
87
+ compact: {
88
+ enabled: boolean;
89
+ mode: "template";
90
+ template: string;
91
+ contextSelector: "auto";
92
+ };
93
+ disabled: {
94
+ enabled: boolean;
95
+ mode: "none";
96
+ };
97
+ multilingual: {
98
+ enabled: boolean;
99
+ mode: "template";
100
+ template: string;
101
+ contextSelector: "auto";
102
+ guidanceMessages: {
103
+ en: {
104
+ general: string;
105
+ payment: string;
106
+ };
107
+ es: {
108
+ general: string;
109
+ payment: string;
110
+ };
111
+ };
112
+ };
113
+ };
114
+ export declare function getSystemMessage(engine: Engine, messageId: string, context?: Record<string, unknown>): string;
115
+ export declare function getFlowPrompt(engine: Engine, flowName: string): string;
116
+ export type StepType = 'SAY' | 'SAY-GET' | 'SET' | 'CALL-TOOL' | 'FLOW' | 'SWITCH' | 'CASE';
117
+ export interface ContextEntry {
118
+ role: 'user' | 'assistant' | 'system' | 'tool';
119
+ content: string | Record<string, unknown> | unknown;
120
+ timestamp: number;
121
+ stepId?: string;
122
+ toolName?: string;
123
+ metadata?: Record<string, unknown>;
124
+ }
125
+ export type AiCallbackFunction = ((systemInstruction: string, userMessage: string) => Promise<string>) | null;
126
+ export interface EngineSessionContext {
127
+ hostLogger: Logger;
128
+ sessionId: string;
129
+ userId: string;
130
+ createdAt: Date;
131
+ lastActivity: Date;
132
+ flowStacks: FlowFrame[][];
133
+ globalAccumulatedMessages: string[];
134
+ lastChatTurn: {
135
+ user?: ContextEntry;
136
+ assistant?: ContextEntry;
137
+ };
138
+ globalVariables: Record<string, unknown>;
139
+ }
140
+ export interface FlowStep {
141
+ id?: string;
142
+ type: StepType;
143
+ tool?: string;
144
+ args?: Record<string, unknown>;
145
+ variable?: string;
146
+ value?: string;
147
+ [key: string]: unknown;
148
+ name?: string;
149
+ nextFlow?: string;
150
+ callType?: 'call' | 'replace' | 'reboot';
151
+ branches?: Record<string, FlowStep>;
152
+ onFail?: FlowStep;
153
+ retryCount?: number;
154
+ maxRetries?: number;
155
+ retryDelay?: number;
156
+ retryStrategy?: 'immediate' | 'exponential' | 'linear' | 'manual';
157
+ retryOnConditions?: Array<{
158
+ errorPattern: string;
159
+ action: 'retry' | 'skip' | 'ask_user' | 'fallback';
160
+ fallbackStep?: FlowStep;
161
+ }>;
162
+ inputValidation?: {
163
+ patterns?: Array<{
164
+ field: string;
165
+ pattern: string;
166
+ message: string;
167
+ }>;
168
+ customValidator?: string;
169
+ };
170
+ retryBehavior?: {
171
+ preserveData?: boolean;
172
+ askUserBeforeRetry?: boolean;
173
+ escalateAfterMaxRetries?: FlowStep;
174
+ showProgressiveHelp?: boolean;
175
+ };
176
+ }
177
+ export interface TransactionStep {
178
+ stepId: string;
179
+ stepType: StepType;
180
+ tool?: string;
181
+ result?: unknown;
182
+ error?: string;
183
+ duration: number;
184
+ status: 'success' | 'error';
185
+ timestamp: Date;
186
+ retryCount?: number;
187
+ }
188
+ export interface TransactionObj {
189
+ id: string;
190
+ flowName: string;
191
+ initiator: string;
192
+ userId: string;
193
+ steps: TransactionStep[];
194
+ state: 'active' | 'completed' | 'failed' | 'rolled_back';
195
+ createdAt: Date;
196
+ completedAt?: Date;
197
+ failedAt?: Date;
198
+ rolledBackAt?: Date;
199
+ failureReason?: string;
200
+ metadata: Record<string, unknown>;
201
+ addStep: (step: FlowStep, result: unknown, duration: number, status?: 'success' | 'error') => void;
202
+ addError: (step: FlowStep, error: Error, duration: number) => void;
203
+ sanitizeForLog: (data: unknown) => unknown;
204
+ rollback: () => void;
205
+ complete: () => void;
206
+ fail: (reason: string) => void;
207
+ }
208
+ export interface FlowFrame {
209
+ flowName: string;
210
+ flowId: string;
211
+ flowVersion: string;
212
+ flowStepsStack: FlowStep[];
213
+ contextStack: ContextEntry[];
214
+ inputStack: unknown[];
215
+ variables: Record<string, unknown>;
216
+ transaction: TransactionObj;
217
+ userId: string;
218
+ startTime: number;
219
+ pendingVariable?: string;
220
+ lastSayMessage?: string;
221
+ pendingInterruption?: Record<string, unknown>;
222
+ accumulatedMessages?: string[];
223
+ parentTransaction?: string;
224
+ justResumed?: boolean;
225
+ }
226
+ export interface Engine {
227
+ flowStacks: FlowFrame[][];
228
+ flowsMenu?: FlowDefinition[];
229
+ toolsRegistry?: ToolDefinition[];
230
+ language?: string;
231
+ messageRegistry?: MessageRegistry;
232
+ guidanceConfig?: GuidanceConfig;
233
+ globalVariables?: Record<string, unknown>;
234
+ hasAccumulatedMessages: () => boolean;
235
+ getAndClearAccumulatedMessages?: (engineSessionContext?: EngineSessionContext) => string[];
236
+ addAccumulatedMessage?: (message: string, engineSessionContext?: EngineSessionContext) => void;
237
+ sessionId?: string;
238
+ APPROVED_FUNCTIONS?: ApprovedFunctions;
239
+ aiCallback: AiCallbackFunction;
240
+ lastChatTurn: {
241
+ user?: ContextEntry;
242
+ assistant?: ContextEntry;
243
+ };
244
+ initSession?: (hostLogger: Logger | null, userId: string, sessionId: string) => EngineSessionContext;
245
+ updateActivity?: (contextEntry: ContextEntry, engineSessionContext?: EngineSessionContext) => Promise<string | null>;
246
+ }
247
+ export interface FlowDefinition {
248
+ id: string;
249
+ name: string;
250
+ prompt?: string;
251
+ prompt_en?: string;
252
+ prompt_es?: string;
253
+ prompt_pt?: string;
254
+ prompt_fr?: string;
255
+ prompt_de?: string;
256
+ [key: `prompt_${string}`]: string | undefined;
257
+ description: string;
258
+ version: string;
259
+ steps: FlowStep[];
260
+ variables?: Record<string, {
261
+ type: string;
262
+ scope: string;
263
+ value?: unknown;
264
+ }>;
265
+ metadata?: {
266
+ riskLevel?: string;
267
+ category?: string;
268
+ [key: string]: unknown;
269
+ };
270
+ }
271
+ export type ArgsType = Record<string, unknown>;
272
+ export interface ToolDefinition {
273
+ id: string;
274
+ name: string;
275
+ description: string;
276
+ schema?: {
277
+ required?: string[];
278
+ properties?: Record<string, PropertySchema>;
279
+ };
280
+ parameters?: {
281
+ type: string;
282
+ properties?: Record<string, PropertySchema>;
283
+ required?: string[];
284
+ additionalProperties?: boolean;
285
+ };
286
+ implementation?: {
287
+ type: 'local' | 'http';
288
+ function?: string;
289
+ url?: string;
290
+ method?: HttpMethod;
291
+ contentType?: string;
292
+ pathParams?: string[];
293
+ queryParams?: string[];
294
+ headers?: Record<string, string>;
295
+ responseMapping?: MappingConfig;
296
+ timeout?: number;
297
+ retries?: number;
298
+ authentication?: AuthConfig;
299
+ };
300
+ security?: {
301
+ rateLimit?: {
302
+ requests: number;
303
+ window: number;
304
+ };
305
+ };
306
+ apiKey?: string;
307
+ riskLevel?: 'low' | 'medium' | 'high';
308
+ category?: string;
309
+ }
310
+ export interface PropertySchema {
311
+ type: 'string' | 'number' | 'boolean' | 'object' | 'array';
312
+ description?: string;
313
+ enum?: (string | number)[];
314
+ minimum?: number;
315
+ maximum?: number;
316
+ minLength?: number;
317
+ maxLength?: number;
318
+ pattern?: string;
319
+ items?: PropertySchema;
320
+ properties?: Record<string, PropertySchema>;
321
+ required?: string[];
322
+ default?: unknown;
323
+ }
324
+ export type HttpMethod = 'GET' | 'POST' | 'PUT' | 'PATCH' | 'DELETE' | 'HEAD' | 'OPTIONS';
325
+ export interface AuthConfig {
326
+ type: 'bearer' | 'basic' | 'apikey' | 'hmac';
327
+ token?: string;
328
+ username?: string;
329
+ password?: string;
330
+ key?: string;
331
+ secret?: string;
332
+ header?: string;
333
+ }
334
+ export interface ApprovedFunctions {
335
+ get(functionName: string): ((...args: unknown[]) => unknown) | undefined;
336
+ [functionName: string]: unknown;
337
+ }
338
+ export interface SystemContext {
339
+ [key: string]: string | number | boolean | null | undefined;
340
+ }
341
+ export interface ValidationResult {
342
+ isValid: boolean;
343
+ errors: string[];
344
+ warnings: string[];
345
+ }
346
+ export type JsonPathMappingConfig = {
347
+ type: 'jsonPath';
348
+ mappings: Record<string, {
349
+ path: string;
350
+ transform?: ValueTransformConfig;
351
+ fallback?: unknown;
352
+ }>;
353
+ strict?: boolean;
354
+ };
355
+ export type ObjectMappingConfig = {
356
+ type: 'object';
357
+ mappings: Record<string, string | PathConfig | MappingConfig | object>;
358
+ strict?: boolean;
359
+ };
360
+ export type ArrayMappingConfig = {
361
+ type: 'array';
362
+ source?: string;
363
+ filter?: ConditionConfig;
364
+ itemMapping?: MappingConfig;
365
+ sort?: {
366
+ field: string;
367
+ order?: 'asc' | 'desc';
368
+ };
369
+ offset?: number;
370
+ limit?: number;
371
+ fallback?: unknown[];
372
+ };
373
+ export type TemplateMappingConfig = {
374
+ type: 'template';
375
+ template: string;
376
+ dataPath?: string;
377
+ };
378
+ export type ConditionalMappingConfig = {
379
+ type: 'conditional';
380
+ conditions: Array<{
381
+ if: ConditionConfig;
382
+ then: MappingConfig;
383
+ }>;
384
+ else?: MappingConfig;
385
+ };
386
+ export type PathConfig = {
387
+ path: string;
388
+ transform?: ValueTransformConfig;
389
+ fallback?: unknown;
390
+ };
391
+ export interface ValueTransformConfig {
392
+ type: 'parseInt' | 'parseFloat' | 'toLowerCase' | 'toUpperCase' | 'trim' | 'replace' | 'concat' | 'regex' | 'date' | 'default' | 'conditional' | 'substring' | 'split' | 'join' | 'abs' | 'round' | 'floor' | 'ceil' | 'template' | 'sum' | 'average' | 'count' | 'min' | 'max' | 'multiply' | 'divide' | 'percentage' | 'add' | 'subtract' | 'currentYear' | 'yearDifference' | 'handlebars' | 'custom';
393
+ fallback?: unknown;
394
+ prefix?: string;
395
+ suffix?: string;
396
+ pattern?: string;
397
+ replacement?: string;
398
+ group?: number;
399
+ start?: number;
400
+ end?: number;
401
+ delimiter?: string;
402
+ index?: number;
403
+ template?: string;
404
+ calculation?: string;
405
+ condition?: ConditionConfig;
406
+ conditions?: Array<{
407
+ if: ConditionConfig;
408
+ then: unknown;
409
+ }>;
410
+ trueValue?: unknown;
411
+ falseValue?: unknown;
412
+ value?: unknown;
413
+ flags?: string;
414
+ else?: unknown;
415
+ field?: string;
416
+ precision?: number;
417
+ divisor?: number;
418
+ multiplier?: number;
419
+ addend?: number;
420
+ subtrahend?: number;
421
+ fromYear?: number;
422
+ dataPath?: string;
423
+ }
424
+ export interface ConditionConfig {
425
+ field: string;
426
+ operator: 'equals' | 'eq' | 'notEquals' | 'ne' | 'contains' | 'exists' | 'notExists' | 'greaterThan' | 'gt' | 'lessThan' | 'lt' | 'greaterThanOrEqual' | 'gte' | 'lessThanOrEqual' | 'lte' | 'startsWith' | 'endsWith' | 'matches' | 'in' | 'hasLength' | 'isArray' | 'isObject' | 'isString' | 'isNumber';
427
+ value?: unknown;
428
+ }
429
+ export type MappingConfig = JsonPathMappingConfig | ObjectMappingConfig | ArrayMappingConfig | TemplateMappingConfig | ConditionalMappingConfig | PathConfig | string | Record<string, unknown>;
430
+ /**
431
+ * Represents any object that can be traversed by path
432
+ * Object with string keys for safe path traversal
433
+ */
434
+ export interface PathTraversableObject {
435
+ [key: string]: unknown;
436
+ }
437
+ /**
438
+ * Portable hash/HMAC utility for Node.js and browser/Cloudflare Worker environments.
439
+ * Supports SHA-256 and HMAC-SHA256.
440
+ * Usage: await portableHash('data', 'secret')
441
+ */
442
+ export declare function portableHash(data: string | Uint8Array, secret?: string, algorithm?: string, encoding?: 'hex' | 'base64'): Promise<string>;
443
+ export declare class WorkflowEngine implements Engine {
444
+ flowsMenu: FlowDefinition[];
445
+ toolsRegistry: ToolDefinition[];
446
+ APPROVED_FUNCTIONS: ApprovedFunctions;
447
+ flowStacks: FlowFrame[][];
448
+ globalAccumulatedMessages: string[];
449
+ sessionId: string;
450
+ createdAt: Date;
451
+ lastActivity: Date;
452
+ language?: string;
453
+ messageRegistry?: MessageRegistry;
454
+ guidanceConfig?: GuidanceConfig;
455
+ globalVariables?: Record<string, unknown>;
456
+ aiCallback: AiCallbackFunction;
457
+ lastChatTurn: {
458
+ user?: ContextEntry;
459
+ assistant?: ContextEntry;
460
+ };
461
+ /**
462
+ * Initialize a new EngineSessionContext for a user session.
463
+ * If hostLogger is null, uses the global default logger.
464
+ * @param hostLogger - Logger instance for this session. Must implement info, warn, error, and debug methods.
465
+ * @param aiCallback - Callback function for AI operations
466
+ * @param flowsMenu - List of available flow definitions
467
+ * @param toolsRegistry - List of available tool definitions
468
+ * @param APPROVED_FUNCTIONS - Approved functions for the engine
469
+ * @param globalVariables - Optional global variables shared across all new flows
470
+ * @param validateOnInit - Whether to perform validation on initialization (default: true)
471
+ * @param language - Optional language code for localization
472
+ * @param messageRegistry - Optional message registry for custom messages
473
+ * @param guidanceConfig - Optional guidance configuration for AI interactions
474
+ */
475
+ constructor(hostLogger: Logger, aiCallback: AiCallbackFunction, flowsMenu: FlowDefinition[], toolsRegistry: ToolDefinition[], APPROVED_FUNCTIONS: ApprovedFunctions, globalVariables?: Record<string, unknown>, // Optional global variables shared across all new flows
476
+ validateOnInit?: boolean, language?: string, messageRegistry?: MessageRegistry, guidanceConfig?: GuidanceConfig);
477
+ /**
478
+ * Initialize a new session context for a user session.
479
+ *
480
+ * @param hostLogger - Logger instance for this session. Must implement info, warn, error, and debug methods.
481
+ * @param userId - User identifier for this session
482
+ * @param sessionId - Unique identifier for the session
483
+ * @returns EngineSessionContext object that should be persisted by the host
484
+ * @throws Error if logger does not implement all required methods
485
+ *
486
+ * @example
487
+ * const engine = new WorkflowEngine(...);
488
+ * const session = engine.initSession(yourLogger, 'user-123', 'session-456');
489
+ */
490
+ initSession(hostLogger: Logger | null, userId: string, sessionId: string): EngineSessionContext;
491
+ updateActivity(contextEntry: ContextEntry, engineSessionContext?: EngineSessionContext): Promise<string | null>;
492
+ addAccumulatedMessage(message: string, engineSessionContext?: EngineSessionContext): void;
493
+ getAndClearAccumulatedMessages(engineSessionContext?: EngineSessionContext): string[];
494
+ hasAccumulatedMessages(): boolean;
495
+ initializeFlowStacks(): void;
496
+ getCurrentStack(): FlowFrame[];
497
+ getCurrentStackLength(): number;
498
+ getCurrentFlowFrame(): FlowFrame;
499
+ createNewStack(): void;
500
+ pushToCurrentStack(flowFrame: FlowFrame): void;
501
+ popFromCurrentStack(): FlowFrame | undefined;
502
+ getFlowForInput(input: string): Promise<FlowDefinition | null>;
503
+ /**
504
+ * Performs comprehensive validation of all flows during engine initialization
505
+ * This catches configuration errors early and provides immediate feedback
506
+ */
507
+ performInitializationValidation(): void;
508
+ /**
509
+ * Validates a single flow and all its dependencies recursively
510
+ * @param flowName - Name of the flow to validate
511
+ * @param options - Validation options
512
+ * @returns Validation result with errors, warnings, and flow graph
513
+ */
514
+ validateFlow(flowName: string, options?: any): any;
515
+ /**
516
+ * Recursively validates a flow and its sub-flows
517
+ */
518
+ private _validateFlowRecursive;
519
+ /**
520
+ * Validates flow metadata and basic structure
521
+ */
522
+ private _validateFlowMetadata;
523
+ /**
524
+ * Validates flow variable definitions
525
+ */
526
+ private _validateFlowVariables;
527
+ /**
528
+ * Validates a single step within a flow
529
+ */
530
+ private _validateFlowStep;
531
+ /**
532
+ * Validates SAY and SAY-GET steps
533
+ */
534
+ private _validateSayStep;
535
+ /**
536
+ * Validates SET steps
537
+ */
538
+ private _validateSetStep;
539
+ /**
540
+ * Validates SWITCH steps
541
+ */
542
+ private _validateSwitchStep;
543
+ /**
544
+ * Validates CASE steps
545
+ */
546
+ private _validateCaseStep;
547
+ /**
548
+ * Validates CALL-TOOL steps
549
+ */
550
+ private _validateCallToolStep;
551
+ /**
552
+ * Validates FLOW steps (sub-flow calls)
553
+ */
554
+ private _validateSubFlowStep;
555
+ /**
556
+ * Validates onFail handlers
557
+ */
558
+ private _validateOnFailHandler;
559
+ /**
560
+ * Checks for circular references in the flow call graph
561
+ */
562
+ private _checkCircularReferences;
563
+ /**
564
+ * Validates all flows in the flowsMenu
565
+ * @param options - Validation options
566
+ * @returns Summary of validation results
567
+ */
568
+ validateAllFlows(options?: any): any;
569
+ /**
570
+ * Gets the current variable scope available at a specific step
571
+ * This includes variables defined in flow definition + variables created by previous steps
572
+ */
573
+ private _getCurrentStepScope;
574
+ /**
575
+ * Updates the variable scope after a step executes
576
+ * This tracks what variables a step creates for subsequent validation
577
+ */
578
+ private _updateScopeAfterStep;
579
+ /**
580
+ * Determines what variables a step creates/defines
581
+ */
582
+ private _addStepVariablesToScope;
583
+ /**
584
+ * Validates tool arguments against tool schema
585
+ */
586
+ private _validateToolArguments;
587
+ /**
588
+ * Validates variable references in arguments, values, etc.
589
+ */
590
+ private _validateVariableReferences;
591
+ /**
592
+ * Validates response mapping configurations
593
+ */
594
+ private _validateResponseMapping;
595
+ /**
596
+ * Validates argument type against schema
597
+ */
598
+ private _validateArgumentType;
599
+ private _validateJsonPathMapping;
600
+ private _validateObjectMapping;
601
+ private _validateArrayMapping;
602
+ private _validateTemplateMapping;
603
+ private _validateConditionalMapping;
604
+ }
605
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}