jsfe 0.9.89 → 0.9.91
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/README.md +8 -2
- package/dist/index.d.ts +27 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +258 -16
- package/package.json +2 -1
package/README.md
CHANGED
|
@@ -619,6 +619,8 @@ The method returns an updated `EngineSessionContext` containing:
|
|
|
619
619
|
[Host Responsibilities](#host-responsibilities-tool-calls-cancellation-and-concurrency))
|
|
620
620
|
- **`lastFlowOutcome`**: the declared outcome of a flow that terminated during this call, if any
|
|
621
621
|
(see [Declared flow outcomes](#declared-flow-outcomes-lastflowoutcome))
|
|
622
|
+
- **`lastTurnDispatch`**: `{ fromFlow, matchedFlow }` when a `DISPATCH` step re-routed this call's
|
|
623
|
+
input (`matchedFlow` is `null` when no flow matched and the response is `null`); one-shot
|
|
622
624
|
|
|
623
625
|
### Integration Pattern
|
|
624
626
|
|
|
@@ -742,7 +744,8 @@ await persist(session);
|
|
|
742
744
|
|
|
743
745
|
A flow can say how it ended, not just that it ended. An optional `outcome` (and `reason`) on a step
|
|
744
746
|
is remembered on the flow and applied when the flow terminates. Put it on the step that ends the
|
|
745
|
-
flow: a `RETURN`, an `END` or a final `SAY
|
|
747
|
+
flow: a `RETURN`, an `END`, a `DISPATCH` or a final `SAY`. Both may use `{{…}}` interpolation with
|
|
748
|
+
the flow's variables; an `outcome` that interpolates to empty declares nothing:
|
|
746
749
|
|
|
747
750
|
```json
|
|
748
751
|
{ "id": "say_support_message", "type": "SAY", "value": "Sorry I couldn't help! ...",
|
|
@@ -763,10 +766,12 @@ interface FlowOutcome {
|
|
|
763
766
|
flowName: string;
|
|
764
767
|
outcome: string;
|
|
765
768
|
reason?: string;
|
|
766
|
-
endedBy: 'return' | 'completion'; // RETURN ended all flows; completion = ran out of steps (incl. after END)
|
|
769
|
+
endedBy: 'return' | 'completion' | 'dispatch'; // RETURN ended all flows; completion = ran out of steps (incl. after END); dispatch = a DISPATCH ended them and no flow matched
|
|
767
770
|
}
|
|
768
771
|
```
|
|
769
772
|
|
|
773
|
+
A `DISPATCH` that starts a flow swallows the ended flows' outcome; one that matches nothing keeps it.
|
|
774
|
+
|
|
770
775
|
It is **one-shot**: cleared at the start of every `updateActivity`, and set only when a flow that
|
|
771
776
|
declared an outcome terminated during that call. Hosts use it to run a recovery turn after an
|
|
772
777
|
`"unresolved"` ending. When a `RETURN` terminates several flows, only the flow that executed it
|
|
@@ -1022,6 +1027,7 @@ their original workflow seamlessly.
|
|
|
1022
1027
|
- ✅ **SWITCH** - Conditional branching based on single value matching
|
|
1023
1028
|
- ✅ **RETURN** - Terminate all flows and return evaluated expression value (an EXIT/abort)
|
|
1024
1029
|
- ✅ **END** - Return from the current flow only, resuming the parent flow — a functional `return` (no value; variables are shared with the parent)
|
|
1030
|
+
- ✅ **DISPATCH** - End all flows and route this turn's input through intent detection, as if no flow had been active (a matched flow starts in the same turn; no match → no response, the host answers). Resets everything; the ended flows' declared outcome is kept only when no flow matches. Takes `id`, `outcome`, `reason`. See the user guide's *DISPATCH Steps*
|
|
1025
1031
|
|
|
1026
1032
|
A terminal step (`RETURN`, `END` or a final `SAY`) may also carry `outcome` / `reason`; see
|
|
1027
1033
|
[Declared flow outcomes](#declared-flow-outcomes-lastflowoutcome).
|
package/dist/index.d.ts
CHANGED
|
@@ -126,7 +126,7 @@ export declare const GUIDANCE_CONFIG_EXAMPLES: {
|
|
|
126
126
|
};
|
|
127
127
|
export declare function getSystemMessage(engine: Engine, messageId: string, context?: Record<string, unknown>): string;
|
|
128
128
|
export declare function getFlowPrompt(engine: Engine, flowName: string): string;
|
|
129
|
-
export type StepType = 'SAY' | 'SAY-GET' | 'SET' | 'CALL-TOOL' | 'FLOW' | 'SWITCH' | 'CASE' | 'RETURN' | 'END';
|
|
129
|
+
export type StepType = 'SAY' | 'SAY-GET' | 'SET' | 'CALL-TOOL' | 'FLOW' | 'SWITCH' | 'CASE' | 'RETURN' | 'END' | 'DISPATCH';
|
|
130
130
|
export interface ContextEntry {
|
|
131
131
|
role: 'user' | 'assistant' | 'system' | 'tool';
|
|
132
132
|
content: string | Record<string, unknown> | unknown;
|
|
@@ -173,6 +173,7 @@ export type AiCallbackRequest = DetectFlowRequest;
|
|
|
173
173
|
* @property {TransactionData[]} [completedTransactions] - Completed transactions for host access
|
|
174
174
|
* @property {Record<string, unknown> | undefined} cargo - Additional session data for host use
|
|
175
175
|
* @property {FlowOutcome} [lastFlowOutcome] - Declared outcome of a flow that TERMINATED this turn (one-shot, cleared at the start of each updateActivity)
|
|
176
|
+
* @property {DispatchRecord} [lastTurnDispatch] - Set when a DISPATCH step re-routed this turn's input (one-shot, cleared at the start of each updateActivity)
|
|
176
177
|
*/
|
|
177
178
|
export interface EngineSessionContext {
|
|
178
179
|
sessionId: string;
|
|
@@ -193,6 +194,16 @@ export interface EngineSessionContext {
|
|
|
193
194
|
hasTentativeFlowInit?: boolean;
|
|
194
195
|
lastFlowOutcome?: FlowOutcome;
|
|
195
196
|
lastTurnToolCalls?: ToolCallRecord[];
|
|
197
|
+
lastTurnDispatch?: DispatchRecord;
|
|
198
|
+
}
|
|
199
|
+
/**
|
|
200
|
+
* Host-facing record of a DISPATCH: the flow whose DISPATCH step ended every flow, and the flow
|
|
201
|
+
* intent detection then started with the same input — or null when none matched, in which case
|
|
202
|
+
* the engine returned no response and the host answers the turn itself.
|
|
203
|
+
*/
|
|
204
|
+
export interface DispatchRecord {
|
|
205
|
+
fromFlow: string;
|
|
206
|
+
matchedFlow: string | null;
|
|
196
207
|
}
|
|
197
208
|
/**
|
|
198
209
|
* One tool call the engine ATTEMPTED during an updateActivity call — see
|
|
@@ -230,7 +241,7 @@ export interface FlowOutcome {
|
|
|
230
241
|
flowName: string;
|
|
231
242
|
outcome: string;
|
|
232
243
|
reason?: string;
|
|
233
|
-
endedBy: 'return' | 'completion';
|
|
244
|
+
endedBy: 'return' | 'completion' | 'dispatch';
|
|
234
245
|
}
|
|
235
246
|
export interface FlowStep {
|
|
236
247
|
id?: string;
|
|
@@ -548,6 +559,11 @@ export declare class WorkflowEngine implements Engine {
|
|
|
548
559
|
* warning on a mismatch. Diagnostic only — a result is never altered or withheld because of it.
|
|
549
560
|
*/
|
|
550
561
|
validateToolReturns: boolean;
|
|
562
|
+
/**
|
|
563
|
+
* Set by a DISPATCH step to the name of the flow that dispatched; processActivity consumes it
|
|
564
|
+
* within the same call and routes the turn's input to intent detection. Never persisted.
|
|
565
|
+
*/
|
|
566
|
+
pendingDispatchFrom: string | null;
|
|
551
567
|
private enabledCommands;
|
|
552
568
|
private commandsEnabled;
|
|
553
569
|
private sessionContext;
|
|
@@ -682,6 +698,9 @@ export declare class WorkflowEngine implements Engine {
|
|
|
682
698
|
stampFlowOutcome(outcome: FlowOutcome): void;
|
|
683
699
|
getTentativeFlowInit(): boolean;
|
|
684
700
|
initializeFlowStacks(): void;
|
|
701
|
+
resetFlowState(): void;
|
|
702
|
+
clearFlowOutcome(): void;
|
|
703
|
+
recordDispatch(record: DispatchRecord): void;
|
|
685
704
|
getCurrentStack(): FlowFrame[];
|
|
686
705
|
getCurrentStackLength(): number;
|
|
687
706
|
getCurrentFlowFrame(): FlowFrame;
|
|
@@ -709,6 +728,12 @@ export declare class WorkflowEngine implements Engine {
|
|
|
709
728
|
* @returns Validation result with errors, warnings, and flow graph
|
|
710
729
|
*/
|
|
711
730
|
validateFlow(flowName: string, options?: any): any;
|
|
731
|
+
/**
|
|
732
|
+
* Errors when a DISPATCH step is reachable from the start of `entryFlow` with no SAY-GET on the
|
|
733
|
+
* way. Follows call/replace/reboot FLOW steps (all run in the same turn) and onFail handlers;
|
|
734
|
+
* CASE/SWITCH branches are alternatives. A RETURN ends the turn; END returns to the caller.
|
|
735
|
+
*/
|
|
736
|
+
private _checkDispatchBeforeSayGet;
|
|
712
737
|
/**
|
|
713
738
|
* Recursively validates a flow and its sub-flows
|
|
714
739
|
*/
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -449,6 +449,29 @@ function finalizeFlowTransaction(engine, frame, endedBy) {
|
|
|
449
449
|
TransactionManager.complete(frame.transaction);
|
|
450
450
|
}
|
|
451
451
|
}
|
|
452
|
+
// A step's `outcome` / `reason`, interpolated with the frame's variables — so a flow can pass a
|
|
453
|
+
// caller's outcome along (e.g. a retry menu declaring the outcome its caller handed it). An outcome
|
|
454
|
+
// that interpolates to an empty string is no declaration. Literal values are returned unchanged.
|
|
455
|
+
function resolveDeclaredOutcome(step, frame, engine) {
|
|
456
|
+
const resolve = (value) => {
|
|
457
|
+
const text = String(value);
|
|
458
|
+
if (text.includes('{{')) {
|
|
459
|
+
return interpolateMessage(text, frame.contextStack, frame.variables, engine).trim();
|
|
460
|
+
}
|
|
461
|
+
else {
|
|
462
|
+
return text;
|
|
463
|
+
}
|
|
464
|
+
};
|
|
465
|
+
const outcome = resolve(step.outcome);
|
|
466
|
+
if (!outcome) {
|
|
467
|
+
logger.info(`Step ${step.id || step.type} in ${frame.flowName}: outcome interpolated to empty — no outcome declared`);
|
|
468
|
+
return undefined;
|
|
469
|
+
}
|
|
470
|
+
else {
|
|
471
|
+
const reason = step.reason !== undefined ? resolve(step.reason) : '';
|
|
472
|
+
return { outcome, reason: reason || undefined };
|
|
473
|
+
}
|
|
474
|
+
}
|
|
452
475
|
// Initialize JSON Schema validator (optional — skipped if ajv not available)
|
|
453
476
|
let ajv = null;
|
|
454
477
|
if (Ajv) {
|
|
@@ -2204,13 +2227,10 @@ async function playFlowFrame(engine) {
|
|
|
2204
2227
|
TransactionManager.addStep(currentFlowFrame.transaction, step, result, duration, 'success');
|
|
2205
2228
|
logger.info(`Step ${step.type} executed successfully, result: ${typeof result === 'object' ? '[object]' : result}`);
|
|
2206
2229
|
// Declared outcome (see FlowOutcome): remember it on the frame so the
|
|
2207
|
-
// termination paths (completion pop / RETURN) can apply it. RETURN
|
|
2208
|
-
// are handled inside
|
|
2209
|
-
if (step.outcome !== undefined && step.type !== 'RETURN') {
|
|
2210
|
-
currentFlowFrame.declaredOutcome =
|
|
2211
|
-
outcome: String(step.outcome),
|
|
2212
|
-
reason: step.reason !== undefined ? String(step.reason) : undefined,
|
|
2213
|
-
};
|
|
2230
|
+
// termination paths (completion pop / RETURN) can apply it. RETURN and
|
|
2231
|
+
// DISPATCH steps are handled inside their handlers (their frame is gone by now).
|
|
2232
|
+
if (step.outcome !== undefined && step.type !== 'RETURN' && step.type !== 'DISPATCH') {
|
|
2233
|
+
currentFlowFrame.declaredOutcome = resolveDeclaredOutcome(step, currentFlowFrame, engine);
|
|
2214
2234
|
}
|
|
2215
2235
|
// If this was a SAY-GET step, return and wait for user input
|
|
2216
2236
|
if (step.type === 'SAY-GET') {
|
|
@@ -2228,6 +2248,11 @@ async function playFlowFrame(engine) {
|
|
|
2228
2248
|
logger.info(`RETURN step executed, terminating all flows and returning value`);
|
|
2229
2249
|
return result;
|
|
2230
2250
|
}
|
|
2251
|
+
// DISPATCH ended every flow; processActivity routes this turn's input (see handleDispatchStep)
|
|
2252
|
+
if (step.type === 'DISPATCH') {
|
|
2253
|
+
logger.info(`DISPATCH step executed, all flows ended; handing this turn's input back to intent detection`);
|
|
2254
|
+
return result;
|
|
2255
|
+
}
|
|
2231
2256
|
// For SAY, CALL-TOOL, FLOW, and SET steps, continue processing automatically (non-blocking)
|
|
2232
2257
|
continue;
|
|
2233
2258
|
}
|
|
@@ -2309,6 +2334,8 @@ async function playStep(currentFlowFrame, engine) {
|
|
|
2309
2334
|
return handleReturnStep(currentFlowFrame, engine);
|
|
2310
2335
|
case 'END':
|
|
2311
2336
|
return handleEndStep(currentFlowFrame);
|
|
2337
|
+
case 'DISPATCH':
|
|
2338
|
+
return handleDispatchStep(currentFlowFrame, engine);
|
|
2312
2339
|
default:
|
|
2313
2340
|
throw new Error(`Unknown step type: ${step.type}`);
|
|
2314
2341
|
}
|
|
@@ -3536,10 +3563,7 @@ function handleReturnStep(currentFlowFrame, engine) {
|
|
|
3536
3563
|
// Declared outcome (see FlowOutcome) — applies to the flow executing this RETURN;
|
|
3537
3564
|
// parent flows it terminates finalize with their own (usually absent) declaration.
|
|
3538
3565
|
if (step.outcome !== undefined) {
|
|
3539
|
-
currentFlowFrame.declaredOutcome =
|
|
3540
|
-
outcome: String(step.outcome),
|
|
3541
|
-
reason: step.reason !== undefined ? String(step.reason) : undefined,
|
|
3542
|
-
};
|
|
3566
|
+
currentFlowFrame.declaredOutcome = resolveDeclaredOutcome(step, currentFlowFrame, engine);
|
|
3543
3567
|
}
|
|
3544
3568
|
// Evaluate the value expression if provided
|
|
3545
3569
|
let returnValue = '';
|
|
@@ -3573,6 +3597,44 @@ function handleReturnStep(currentFlowFrame, engine) {
|
|
|
3573
3597
|
// Return the evaluated value as string
|
|
3574
3598
|
return String(returnValue);
|
|
3575
3599
|
}
|
|
3600
|
+
function handleDispatchStep(currentFlowFrame, engine) {
|
|
3601
|
+
// DISPATCH = forget every flow and treat THIS turn's input as if no flow had been active:
|
|
3602
|
+
// processActivity runs intent detection on the input the turn started with (never a flow
|
|
3603
|
+
// variable a step may have rewritten). It resets ALL engine flow state — every stack, the
|
|
3604
|
+
// queued messages and the tentative flow_init flag — so nothing said by the ended flows is
|
|
3605
|
+
// delivered. The ended flows finalize as any terminating flow does, so an outcome they
|
|
3606
|
+
// declared — on this DISPATCH step itself or earlier — is stamped (endedBy 'dispatch').
|
|
3607
|
+
// processActivity keeps that outcome when intent detection matches no flow (the flows'
|
|
3608
|
+
// ending stands) and swallows it when a flow matches (the user is being served). Tool calls
|
|
3609
|
+
// already attempted this turn stay recorded (lastTurnToolCalls) — the host must still see them.
|
|
3610
|
+
const step = currentFlowFrame.flowStepsStack.pop(); // This handler pops its own step
|
|
3611
|
+
const fromFlow = currentFlowFrame.flowName;
|
|
3612
|
+
if (step.outcome !== undefined) {
|
|
3613
|
+
currentFlowFrame.declaredOutcome = resolveDeclaredOutcome(step, currentFlowFrame, engine);
|
|
3614
|
+
}
|
|
3615
|
+
else {
|
|
3616
|
+
// no outcome on the DISPATCH step — any earlier declaration on this frame stands
|
|
3617
|
+
}
|
|
3618
|
+
// Bottom frames first, the dispatching frame last: when several declared, the dispatching
|
|
3619
|
+
// flow's own declaration is the one the host sees (as RETURN's last-stamp-wins does).
|
|
3620
|
+
const exitedFlows = [];
|
|
3621
|
+
for (const stack of engine.flowStacks) {
|
|
3622
|
+
for (const flow of stack) {
|
|
3623
|
+
if (flow.declaredOutcome) {
|
|
3624
|
+
finalizeFlowTransaction(engine, flow, 'dispatch');
|
|
3625
|
+
}
|
|
3626
|
+
else {
|
|
3627
|
+
TransactionManager.fail(flow.transaction, `Dispatched: flow ended by DISPATCH in ${fromFlow}`);
|
|
3628
|
+
}
|
|
3629
|
+
exitedFlows.push(flow.flowName);
|
|
3630
|
+
auditLogger.logFlowExit(flow.flowName, currentFlowFrame.userId, flow.transaction.id, 'dispatch_step');
|
|
3631
|
+
}
|
|
3632
|
+
}
|
|
3633
|
+
engine.resetFlowState();
|
|
3634
|
+
engine.pendingDispatchFrom = fromFlow;
|
|
3635
|
+
logger.info(`DISPATCH step in '${fromFlow}': ended flows [${exitedFlows.join(', ')}]; this turn's input goes to intent detection.`);
|
|
3636
|
+
return '';
|
|
3637
|
+
}
|
|
3576
3638
|
function handleEndStep(currentFlowFrame) {
|
|
3577
3639
|
// END = return from the CURRENT flow only (a functional `return`), in contrast
|
|
3578
3640
|
// to RETURN which terminates ALL flows (effectively an EXIT). Clearing this
|
|
@@ -5282,6 +5344,8 @@ async function processActivity(input, userId, engine) {
|
|
|
5282
5344
|
// Debug logging
|
|
5283
5345
|
logger.info(`processActivity received input: ${JSON.stringify(input)}, sanitized: ${JSON.stringify(sanitizedInput)}`);
|
|
5284
5346
|
logger.debug(`Current stack length: ${getCurrentStackLength(engine)}`);
|
|
5347
|
+
// A DISPATCH is consumed within the call that raised it; never carry one into another turn.
|
|
5348
|
+
engine.pendingDispatchFrom = null;
|
|
5285
5349
|
// Check if we're already in a flow (using new stack-of-stacks)
|
|
5286
5350
|
if (getCurrentStackLength(engine) > 0) {
|
|
5287
5351
|
logger.info(`\n=== [${new Date().toISOString()}] Flow Handling query: ${input} ===`);
|
|
@@ -5328,8 +5392,15 @@ async function processActivity(input, userId, engine) {
|
|
|
5328
5392
|
logger.info(`Flow context updated. inputStack: ${JSON.stringify(currentFlowFrame.inputStack)}, contextStack length: ${currentFlowFrame.contextStack.length}`);
|
|
5329
5393
|
try {
|
|
5330
5394
|
const response = await playFlowFrame(engine);
|
|
5331
|
-
|
|
5332
|
-
|
|
5395
|
+
if (engine.pendingDispatchFrom === null) {
|
|
5396
|
+
logger.info(`Flow response: ${response}`);
|
|
5397
|
+
return response;
|
|
5398
|
+
}
|
|
5399
|
+
else {
|
|
5400
|
+
// DISPATCH ended every flow: fall through to the no-active-flow routing below with
|
|
5401
|
+
// this same input, exactly as if no flow had been active when the user spoke.
|
|
5402
|
+
logger.info(`DISPATCH from '${engine.pendingDispatchFrom}': routing ${JSON.stringify(sanitizedInput)} through intent detection`);
|
|
5403
|
+
}
|
|
5333
5404
|
}
|
|
5334
5405
|
catch (error) {
|
|
5335
5406
|
logger.error(`Flow execution error: ${error.message}`);
|
|
@@ -5344,8 +5415,26 @@ async function processActivity(input, userId, engine) {
|
|
|
5344
5415
|
}
|
|
5345
5416
|
// Check if input should activate a new flow
|
|
5346
5417
|
logger.debug(`No active flow, checking if input should activate new flow...`);
|
|
5418
|
+
// Set when we arrived here from a DISPATCH in the active-flow branch above.
|
|
5419
|
+
const dispatchedFrom = engine.pendingDispatchFrom;
|
|
5420
|
+
engine.pendingDispatchFrom = null;
|
|
5347
5421
|
try {
|
|
5348
5422
|
const activatedFlow = await isFlowActivated(String(sanitizedInput), engine, userId);
|
|
5423
|
+
if (dispatchedFrom !== null) {
|
|
5424
|
+
engine.recordDispatch({ fromFlow: dispatchedFrom, matchedFlow: activatedFlow ? activatedFlow.name : null });
|
|
5425
|
+
if (activatedFlow) {
|
|
5426
|
+
// A flow serves the user now: the ended flows' outcome is swallowed.
|
|
5427
|
+
engine.clearFlowOutcome();
|
|
5428
|
+
logger.info(`DISPATCH from '${dispatchedFrom}': intent detection started '${activatedFlow.name}'; the ended flows' outcome (if any) is swallowed`);
|
|
5429
|
+
}
|
|
5430
|
+
else {
|
|
5431
|
+
// Nothing matched: the ended flows' ending stands — their outcome (if any) reaches the host.
|
|
5432
|
+
logger.info(`DISPATCH from '${dispatchedFrom}': intent detection matched no flow; the host answers this turn, with the ended flows' outcome (if any)`);
|
|
5433
|
+
}
|
|
5434
|
+
}
|
|
5435
|
+
else {
|
|
5436
|
+
// ordinary turn with no active flow — nothing to record
|
|
5437
|
+
}
|
|
5349
5438
|
if (activatedFlow) {
|
|
5350
5439
|
logger.info(`Flow activated: ${activatedFlow.name}`);
|
|
5351
5440
|
// Clear lastChatTurn since we now have flow context
|
|
@@ -5357,8 +5446,18 @@ async function processActivity(input, userId, engine) {
|
|
|
5357
5446
|
}
|
|
5358
5447
|
logger.debug(`Cleared lastChatTurn - now using flow context for AI operations`);
|
|
5359
5448
|
const response = await playFlowFrame(engine);
|
|
5360
|
-
|
|
5361
|
-
|
|
5449
|
+
if (engine.pendingDispatchFrom === null) {
|
|
5450
|
+
logger.info(`Initial flow response: ${response}`);
|
|
5451
|
+
return response;
|
|
5452
|
+
}
|
|
5453
|
+
else {
|
|
5454
|
+
// An activated flow reached DISPATCH before any SAY-GET. The validator rejects such a
|
|
5455
|
+
// flow, so this is an invalid flow in production. The input is routed only once per
|
|
5456
|
+
// turn: everything is already reset, so the host answers this turn.
|
|
5457
|
+
logger.error(`DISPATCH in '${engine.pendingDispatchFrom}' was reached before any SAY-GET after '${activatedFlow.name}' was activated — invalid flow (see validateFlows); no second routing, the host answers this turn`);
|
|
5458
|
+
engine.pendingDispatchFrom = null;
|
|
5459
|
+
return null;
|
|
5460
|
+
}
|
|
5362
5461
|
}
|
|
5363
5462
|
}
|
|
5364
5463
|
catch (error) {
|
|
@@ -5397,6 +5496,11 @@ export class WorkflowEngine {
|
|
|
5397
5496
|
* warning on a mismatch. Diagnostic only — a result is never altered or withheld because of it.
|
|
5398
5497
|
*/
|
|
5399
5498
|
validateToolReturns = false;
|
|
5499
|
+
/**
|
|
5500
|
+
* Set by a DISPATCH step to the name of the flow that dispatched; processActivity consumes it
|
|
5501
|
+
* within the same call and routes the turn's input to intent detection. Never persisted.
|
|
5502
|
+
*/
|
|
5503
|
+
pendingDispatchFrom = null;
|
|
5400
5504
|
// Command management for different application types (chat vs voice vs automation)
|
|
5401
5505
|
enabledCommands;
|
|
5402
5506
|
commandsEnabled;
|
|
@@ -5547,6 +5651,8 @@ export class WorkflowEngine {
|
|
|
5547
5651
|
// host deciding whether this turn's session may be discarded is not misled by a tool
|
|
5548
5652
|
// that ran on an earlier turn. See recordToolCall and "Host Responsibilities".
|
|
5549
5653
|
this.sessionContext.lastTurnToolCalls = [];
|
|
5654
|
+
// Same one-shot semantics for a DISPATCH record (see recordDispatch).
|
|
5655
|
+
delete this.sessionContext.lastTurnDispatch;
|
|
5550
5656
|
// DIAGNOSTIC: Log flowStepsStack state from loaded session (before any processing)
|
|
5551
5657
|
if (engineSessionContext.flowStacks) {
|
|
5552
5658
|
for (let si = 0; si < engineSessionContext.flowStacks.length; si++) {
|
|
@@ -5921,6 +6027,37 @@ export class WorkflowEngine {
|
|
|
5921
6027
|
logger.warn('No session context available for initializeFlowStacks');
|
|
5922
6028
|
}
|
|
5923
6029
|
}
|
|
6030
|
+
// Start from scratch: every stack, the queued messages AND the tentative flow_init flag.
|
|
6031
|
+
// The flag must go with the queue: left set over an empty queue, handleSayGetStep would take
|
|
6032
|
+
// the next flow's first SAY for the "Processing…" placeholder and drop it.
|
|
6033
|
+
resetFlowState() {
|
|
6034
|
+
if (this.sessionContext) {
|
|
6035
|
+
this.sessionContext.flowStacks = [[]];
|
|
6036
|
+
this.sessionContext.globalAccumulatedMessages = [];
|
|
6037
|
+
this.sessionContext.hasTentativeFlowInit = false;
|
|
6038
|
+
}
|
|
6039
|
+
else {
|
|
6040
|
+
logger.warn('No session context available for resetFlowState');
|
|
6041
|
+
}
|
|
6042
|
+
}
|
|
6043
|
+
// Drop an outcome stamped earlier this turn (DISPATCH: the turn's result is the re-routing's).
|
|
6044
|
+
clearFlowOutcome() {
|
|
6045
|
+
if (this.sessionContext) {
|
|
6046
|
+
delete this.sessionContext.lastFlowOutcome;
|
|
6047
|
+
}
|
|
6048
|
+
else {
|
|
6049
|
+
logger.warn('No session context available for clearFlowOutcome');
|
|
6050
|
+
}
|
|
6051
|
+
}
|
|
6052
|
+
// Record this turn's DISPATCH for the host (one-shot, see EngineSessionContext.lastTurnDispatch).
|
|
6053
|
+
recordDispatch(record) {
|
|
6054
|
+
if (this.sessionContext) {
|
|
6055
|
+
this.sessionContext.lastTurnDispatch = record;
|
|
6056
|
+
}
|
|
6057
|
+
else {
|
|
6058
|
+
logger.warn(`recordDispatch: no sessionContext for DISPATCH from ${record.fromFlow}`);
|
|
6059
|
+
}
|
|
6060
|
+
}
|
|
5924
6061
|
getCurrentStack() {
|
|
5925
6062
|
return getCurrentStack(this);
|
|
5926
6063
|
}
|
|
@@ -6067,6 +6204,17 @@ export class WorkflowEngine {
|
|
|
6067
6204
|
};
|
|
6068
6205
|
try {
|
|
6069
6206
|
this._validateFlowRecursive(flowName, validationState, opts);
|
|
6207
|
+
// A flow intent detection can start must ask the user (SAY-GET) before any reachable
|
|
6208
|
+
// DISPATCH — the input is routed once per turn, so a DISPATCH before that would end
|
|
6209
|
+
// the turn with no flow. Applies to the flows detect_flow chooses from.
|
|
6210
|
+
const flowDef = this.flowsMenu.find((f) => f.id === flowName || f.name === flowName);
|
|
6211
|
+
const hasPrimaryFlows = this.flowsMenu.some((f) => f.primary === true);
|
|
6212
|
+
if (flowDef && (!hasPrimaryFlows || flowDef.primary === true)) {
|
|
6213
|
+
this._checkDispatchBeforeSayGet(flowDef, validationState);
|
|
6214
|
+
}
|
|
6215
|
+
else {
|
|
6216
|
+
// not a flow intent detection starts — nothing to check
|
|
6217
|
+
}
|
|
6070
6218
|
// Check for circular references if enabled
|
|
6071
6219
|
if (opts.checkCircularRefs) {
|
|
6072
6220
|
this._checkCircularReferences(validationState);
|
|
@@ -6089,6 +6237,88 @@ export class WorkflowEngine {
|
|
|
6089
6237
|
};
|
|
6090
6238
|
}
|
|
6091
6239
|
}
|
|
6240
|
+
/**
|
|
6241
|
+
* Errors when a DISPATCH step is reachable from the start of `entryFlow` with no SAY-GET on the
|
|
6242
|
+
* way. Follows call/replace/reboot FLOW steps (all run in the same turn) and onFail handlers;
|
|
6243
|
+
* CASE/SWITCH branches are alternatives. A RETURN ends the turn; END returns to the caller.
|
|
6244
|
+
*/
|
|
6245
|
+
_checkDispatchBeforeSayGet(entryFlow, state) {
|
|
6246
|
+
const reported = new Set();
|
|
6247
|
+
// 'open' = a path can leave these steps with no SAY-GET yet; 'closed' = every path stopped
|
|
6248
|
+
const walk = (steps, flowDef, visiting) => {
|
|
6249
|
+
for (const step of steps || []) {
|
|
6250
|
+
if (!step || typeof step !== 'object') {
|
|
6251
|
+
continue;
|
|
6252
|
+
}
|
|
6253
|
+
else if (step.type === 'SAY-GET' || step.type === 'RETURN') {
|
|
6254
|
+
return 'closed';
|
|
6255
|
+
}
|
|
6256
|
+
else if (step.type === 'END') {
|
|
6257
|
+
return 'open';
|
|
6258
|
+
}
|
|
6259
|
+
else if (step.type === 'DISPATCH') {
|
|
6260
|
+
const key = `${flowDef.name}:${step.id}`;
|
|
6261
|
+
if (!reported.has(key)) {
|
|
6262
|
+
reported.add(key);
|
|
6263
|
+
state.errors.push(`DISPATCH step "${step.id}" in flow "${flowDef.name}" can run before any SAY-GET when "${entryFlow.name}" is started by intent detection - a flow intent detection starts must ask the user (SAY-GET) before any reachable DISPATCH`);
|
|
6264
|
+
}
|
|
6265
|
+
else {
|
|
6266
|
+
// already reported for this entry flow
|
|
6267
|
+
}
|
|
6268
|
+
return 'closed';
|
|
6269
|
+
}
|
|
6270
|
+
else if (step.type === 'FLOW') {
|
|
6271
|
+
const target = String(step.value ?? step.name ?? '');
|
|
6272
|
+
const sub = this.flowsMenu.find((f) => f.id === target || f.name === target);
|
|
6273
|
+
if (sub && !visiting.has(sub.id || sub.name)) {
|
|
6274
|
+
const result = walk(sub.steps, sub, new Set([...visiting, sub.id || sub.name]));
|
|
6275
|
+
if (step.callType === 'reboot' || step.callType === 'replace') {
|
|
6276
|
+
return result; // the calling flow does not continue past a reboot/replace
|
|
6277
|
+
}
|
|
6278
|
+
else if (result === 'closed') {
|
|
6279
|
+
return 'closed';
|
|
6280
|
+
}
|
|
6281
|
+
else {
|
|
6282
|
+
// the sub-flow can return without asking — the caller continues
|
|
6283
|
+
}
|
|
6284
|
+
}
|
|
6285
|
+
else {
|
|
6286
|
+
// dynamic ({{…}}) or unknown target, or a cycle: nothing more to follow here
|
|
6287
|
+
}
|
|
6288
|
+
}
|
|
6289
|
+
else if (step.type === 'CASE' || step.type === 'SWITCH') {
|
|
6290
|
+
const branches = step.branches || step.cases || {};
|
|
6291
|
+
let anyOpen = !('default' in branches);
|
|
6292
|
+
for (const branch of Object.values(branches)) {
|
|
6293
|
+
const list = Array.isArray(branch) ? branch : [branch];
|
|
6294
|
+
if (walk(list, flowDef, visiting) === 'open') {
|
|
6295
|
+
anyOpen = true;
|
|
6296
|
+
}
|
|
6297
|
+
else {
|
|
6298
|
+
// this branch stops the path
|
|
6299
|
+
}
|
|
6300
|
+
}
|
|
6301
|
+
if (!anyOpen) {
|
|
6302
|
+
return 'closed';
|
|
6303
|
+
}
|
|
6304
|
+
else {
|
|
6305
|
+
// some path continues to the next step
|
|
6306
|
+
}
|
|
6307
|
+
}
|
|
6308
|
+
else {
|
|
6309
|
+
// SAY, SET, CALL-TOOL: the path continues
|
|
6310
|
+
}
|
|
6311
|
+
if (step.onFail) {
|
|
6312
|
+
walk(Array.isArray(step.onFail) ? step.onFail : [step.onFail], flowDef, visiting);
|
|
6313
|
+
}
|
|
6314
|
+
else {
|
|
6315
|
+
// no onFail path
|
|
6316
|
+
}
|
|
6317
|
+
}
|
|
6318
|
+
return 'open';
|
|
6319
|
+
};
|
|
6320
|
+
walk(entryFlow.steps, entryFlow, new Set([entryFlow.id || entryFlow.name]));
|
|
6321
|
+
}
|
|
6092
6322
|
/**
|
|
6093
6323
|
* Recursively validates a flow and its sub-flows
|
|
6094
6324
|
*/
|
|
@@ -6268,7 +6498,7 @@ export class WorkflowEngine {
|
|
|
6268
6498
|
return;
|
|
6269
6499
|
}
|
|
6270
6500
|
// Validate step type
|
|
6271
|
-
const validStepTypes = ['SAY', 'SAY-GET', 'SET', 'SWITCH', 'CASE', 'CALL-TOOL', 'FLOW', 'RETURN', 'END'];
|
|
6501
|
+
const validStepTypes = ['SAY', 'SAY-GET', 'SET', 'SWITCH', 'CASE', 'CALL-TOOL', 'FLOW', 'RETURN', 'END', 'DISPATCH'];
|
|
6272
6502
|
if (!validStepTypes.includes(step.type)) {
|
|
6273
6503
|
state.errors.push(`Step "${step.id}" in flow "${flowDef.name}" has invalid type: ${step.type}`);
|
|
6274
6504
|
return;
|
|
@@ -6296,6 +6526,18 @@ export class WorkflowEngine {
|
|
|
6296
6526
|
case 'FLOW':
|
|
6297
6527
|
this._validateSubFlowStep(step, flowDef, state, opts, currentScope);
|
|
6298
6528
|
break;
|
|
6529
|
+
case 'DISPATCH': {
|
|
6530
|
+
// DISPATCH always routes the turn's own input — no value. It may declare the ending of the
|
|
6531
|
+
// flows it ends (`outcome` / `reason`, kept only when no flow matches).
|
|
6532
|
+
const extra = Object.keys(step).filter(k => !['id', 'type', 'outcome', 'reason'].includes(k));
|
|
6533
|
+
if (extra.length > 0) {
|
|
6534
|
+
state.errors.push(`DISPATCH step "${step.id}" in flow "${flowDef.name}" has invalid attribute(s) ${extra.map(k => `"${k}"`).join(', ')} - DISPATCH takes only "id", "outcome" and "reason"`);
|
|
6535
|
+
}
|
|
6536
|
+
else {
|
|
6537
|
+
// well-formed
|
|
6538
|
+
}
|
|
6539
|
+
break;
|
|
6540
|
+
}
|
|
6299
6541
|
}
|
|
6300
6542
|
// Update scope with variables created by this step
|
|
6301
6543
|
this._updateScopeAfterStep(step, flowDef, state);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "jsfe",
|
|
3
|
-
"version": "0.9.
|
|
3
|
+
"version": "0.9.91",
|
|
4
4
|
"description": "TypeScript workflow engine for conversational/automation apps: multi-flow orchestration, interrupt/resume, stack-based control, robust errors, and flexible tool/REST integration.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"author": "Ron Pinkas",
|
|
@@ -31,6 +31,7 @@
|
|
|
31
31
|
"scripts": {
|
|
32
32
|
"build": "tsc -p tsconfig.json",
|
|
33
33
|
"clean": "rm -rf dist",
|
|
34
|
+
"test": "for t in tests/*.test.mjs; do node \"$t\" || exit 1; done",
|
|
34
35
|
"prepublishOnly": "npm run clean && npm run build"
|
|
35
36
|
},
|
|
36
37
|
"keywords": [
|