@nexalab/agent-sdk 0.1.7 → 0.1.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.
- package/dist/guided-flows/runtime.d.ts +25 -0
- package/dist/guided-flows/runtime.d.ts.map +1 -1
- package/dist/guided-flows/runtime.js +584 -75
- package/dist/guided-flows/runtime.js.map +1 -1
- package/dist/guided-flows/types.d.ts +23 -0
- package/dist/guided-flows/types.d.ts.map +1 -1
- package/dist/mcp.d.ts.map +1 -1
- package/dist/mcp.js +16 -1
- package/dist/mcp.js.map +1 -1
- package/dist/structured-output.d.ts +13 -1
- package/dist/structured-output.d.ts.map +1 -1
- package/dist/structured-output.js +24 -2
- package/dist/structured-output.js.map +1 -1
- package/package.json +1 -1
|
@@ -92,6 +92,31 @@ export declare class GuidedFlowRuntime {
|
|
|
92
92
|
}): Promise<GuidedFlow | undefined>;
|
|
93
93
|
runTurn(input: GuidedFlowTurnInput): Promise<GuidedFlowTurnOutcome>;
|
|
94
94
|
private driveFlow;
|
|
95
|
+
/** The model-driven reply pass: composes text and may call the active step's tools. Only reached when a step has no `prompt`, or does but still has tools available (e.g. a validation step, which needs the model to react to a tool result/error dynamically). */
|
|
96
|
+
private runReplyPass;
|
|
97
|
+
/**
|
|
98
|
+
* Deterministically calls a step's single applicable tool when its arguments are fully
|
|
99
|
+
* resolvable without asking a model to decide anything. Covers two shapes:
|
|
100
|
+
*
|
|
101
|
+
* 1. A silent tool-only step (no `collect`, exactly one required tool) where every input
|
|
102
|
+
* property already resolves to a known value in `state` (matched by property name,
|
|
103
|
+
* case-insensitively — the generator's convention of lowercase-flattened field names makes
|
|
104
|
+
* this a reliable match in practice).
|
|
105
|
+
* 2. A `collect` step whose only useful action is resolving the user's free text against a
|
|
106
|
+
* dynamic list (an address, a product, a time slot): exactly one tool in `tools.allowed`
|
|
107
|
+
* has a `verbatimTextArg` mapping configured. Which tool to call isn't ambiguous and the
|
|
108
|
+
* argument that matters most — the user's own words — is already pinned to the raw turn
|
|
109
|
+
* text, so there's nothing left for a model to compose either. (Caught live: asked to do
|
|
110
|
+
* the exact same thing, a model sometimes narrates — "voy a consultar..." — instead of
|
|
111
|
+
* actually emitting the tool call, leaving the user with a blank reply.)
|
|
112
|
+
*
|
|
113
|
+
* Returns `undefined` — never partially constructed input — the moment any other required
|
|
114
|
+
* property can't be confidently resolved, so the caller falls back to the model-driven
|
|
115
|
+
* `runReplyPass` exactly as before. Bypasses the harness too: this never asks a model
|
|
116
|
+
* anything, so a custom `ModelHarness` has nothing to intercept here (same reasoning as the
|
|
117
|
+
* `step.prompt` verbatim path).
|
|
118
|
+
*/
|
|
119
|
+
private tryAutoInvokeRequiredTool;
|
|
95
120
|
private applyPatch;
|
|
96
121
|
private announceStepChange;
|
|
97
122
|
private forwardNativeEvent;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../../src/guided-flows/runtime.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,0BAA0B,EAAE,MAAM,yBAAyB,CAAC;AACvF,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAChE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAExD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,EAAgB,KAAK,aAAa,EAAE,MAAM,eAAe,CAAC;AAEjE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../../src/guided-flows/runtime.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,0BAA0B,EAAE,MAAM,yBAAyB,CAAC;AACvF,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAChE,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAExD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,EAAgB,KAAK,aAAa,EAAE,MAAM,eAAe,CAAC;AAEjE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAQ9C,OAAO,EAAoB,KAAK,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAC3E,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAC7D,OAAO,KAAK,EAEV,cAAc,EACd,UAAU,EAEV,iBAAiB,EACjB,kBAAkB,EAGnB,MAAM,YAAY,CAAC;AAEpB,MAAM,MAAM,wBAAwB,GAAG;IACrC,KAAK,EAAE,UAAU,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC;IAC9B,MAAM,EAAE,0BAA0B,CAAC;IACnC,UAAU,EAAE,MAAM,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,iBAAiB,EAAE,qBAAqB,EAAE,CAAC;IAC3C,MAAM,EAAE,eAAe,EAAE,CAAC;IAC1B,KAAK,EAAE,cAAc,CAAC;IACtB,MAAM,EAAE,QAAQ,CAAC;IACjB,OAAO,CAAC,EAAE,YAAY,CAAC;IACvB,KAAK,EAAE,oBAAoB,CAAC;IAC5B,YAAY,CAAC,EAAE,CAAC,KAAK,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,UAAU,CAAC,GAAG,EAAE,GAAG,CAAC,EAAE,CAAA;KAAE,KAAK,MAAM,GAAG,SAAS,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;CAC7H,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,WAAW,EAAE,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,aAAa,CAAC;IACvB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB;;;;;;;;;;;;;OAaG;IACH,YAAY,CAAC,EAAE,UAAU,CAAC;IAC1B,mMAAmM;IACnM,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB;;;;;;;;OAQG;IACH,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,qBAAqB,KAAK,IAAI,CAAC;CAClD,CAAC;AAEF,MAAM,MAAM,qBAAqB,GAC7B;IAAE,OAAO,EAAE,KAAK,CAAA;CAAE,GAClB;IAAE,OAAO,EAAE,IAAI,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,UAAU,CAAC;IAAC,IAAI,EAAE,iBAAiB,CAAA;CAAE,CAAC;AAelG;;;;;;GAMG;AACH,qBAAa,iBAAiB;IAChB,OAAO,CAAC,QAAQ,CAAC,OAAO;gBAAP,OAAO,EAAE,wBAAwB;IAE9D,OAAO,CAAC,QAAQ;IAIhB,OAAO,CAAC,WAAW;IAMnB,OAAO,CAAC,QAAQ;IAOhB,OAAO,CAAC,GAAG;IAIX,6JAA6J;YAC/I,QAAQ;IAKhB,UAAU,CAAC,KAAK,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,MAAM,CAAC,EAAE,aAAa,CAAC;QAAC,YAAY,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,OAAO,CAAC,UAAU,GAAG,SAAS,CAAC;IA4BtI,OAAO,CAAC,KAAK,EAAE,mBAAmB,GAAG,OAAO,CAAC,qBAAqB,CAAC;YAO3D,SAAS;IA4VvB,oQAAoQ;YACtP,YAAY;IAwC1B;;;;;;;;;;;;;;;;;;;;;OAqBG;YACW,yBAAyB;YA2EzB,UAAU;YA0CV,kBAAkB;IAoBhC,OAAO,CAAC,kBAAkB;IAuBpB,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;IAUjF,MAAM,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,kBAAkB,GAAG,SAAS,CAAC;IAW3G,KAAK,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;IAkBhF,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,cAAc,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,kBAAkB,CAAC;IAkClJ,QAAQ,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC,kBAAkB,GAAG,SAAS,CAAC;CAKpH"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { randomUUID } from "node:crypto";
|
|
2
|
+
import { z } from "zod";
|
|
2
3
|
import { runNativeToolLoop } from "../native-tool-loop.js";
|
|
3
4
|
import { namespaceKey } from "../tenancy.js";
|
|
4
5
|
import { parseStructuredOutput, structuredOutputInstruction } from "../structured-output.js";
|
|
@@ -8,6 +9,9 @@ import { diffRequirements, evaluateRequirements } from "./requirements.js";
|
|
|
8
9
|
import { missingCollectFields, resolveActiveStep } from "./steps.js";
|
|
9
10
|
import { missingRequiredBeforeExitTools, missingRequiredTools, resolveStepTools } from "./tool-policy.js";
|
|
10
11
|
import { publishFlowEvent } from "./events.js";
|
|
12
|
+
const MAX_REPLY_ROUNDS = 6;
|
|
13
|
+
/** Safety cap on how many consecutive silent tool-only steps a single turn can auto-chain through (see the loop in `driveFlow`). Prevents a misconfigured flow (e.g. two tool-only steps whose `when`/`exit` bounce between each other) from looping forever within one turn. */
|
|
14
|
+
const MAX_CHAIN_STEPS = 8;
|
|
11
15
|
const ONGOING_STATUSES = ["active", "waiting_for_user", "waiting_for_tool", "waiting_for_approval"];
|
|
12
16
|
function isOngoing(status) {
|
|
13
17
|
return ONGOING_STATUSES.includes(status);
|
|
@@ -88,6 +92,15 @@ export class GuidedFlowRuntime {
|
|
|
88
92
|
const runId = randomUUID();
|
|
89
93
|
const now = () => new Date().toISOString();
|
|
90
94
|
const existing = await this.options.store.getFlowState(key, flow.id);
|
|
95
|
+
// In a multi-flow agent, a flow with no prior state was necessarily just picked THIS turn by
|
|
96
|
+
// `selectFlow`'s trigger/flowSelector match (an already-ongoing flow always has `existing`
|
|
97
|
+
// state — see `selectFlow`, which returns any ongoing flow before ever consulting triggers).
|
|
98
|
+
// That means `input.text` is the phrase that CAUSED the routing, not an answer to whatever
|
|
99
|
+
// the newly-entered flow's first step asks. Reproduced live: a billing flow whose first step
|
|
100
|
+
// is a bare single-field `collect: ["idTicket"]` swallowed "quiero hacer una factura" itself
|
|
101
|
+
// as the ticket id. Single-flow agents are exempt: there's nothing else the message could be
|
|
102
|
+
// routing to, so treating turn one as a direct answer (no preceding question) is intentional.
|
|
103
|
+
const flowJustSelectedThisTurn = !existing && this.options.flows.length > 1;
|
|
91
104
|
let record = existing ?? {
|
|
92
105
|
flowId: flow.id,
|
|
93
106
|
flowVersion: flow.version,
|
|
@@ -121,93 +134,195 @@ export class GuidedFlowRuntime {
|
|
|
121
134
|
// --- Extraction sub-call: pull a Zod-validated partial state patch out of free text ---
|
|
122
135
|
const modelPatchSchema = buildModelPatchSchema(config.stateSchema, config.protectedFields);
|
|
123
136
|
let modelPatch = {};
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
137
|
+
// A step collecting a single enum field (a numbered choice, per `step.prompt`) has an
|
|
138
|
+
// unambiguous, mechanically checkable answer space — try matching the user's raw text
|
|
139
|
+
// against it (by list index, exact label, or an unambiguous partial match) before ever
|
|
140
|
+
// asking a model to "extract" it. Short colloquial answers ("si", "sip", a bare "1") are
|
|
141
|
+
// exactly where free-text extraction is least reliable — a model call can still say yes
|
|
142
|
+
// but then fail to produce the exact enum literal, or need several attempts. This can't
|
|
143
|
+
// drift that way because there's no free-text interpretation step to drift in; it either
|
|
144
|
+
// finds an unambiguous match or leaves `modelPatch` empty and falls through to the
|
|
145
|
+
// existing extraction call, unchanged from before.
|
|
146
|
+
// A step collecting a single PLAIN free-text field (a name, a comment — no enum, no tool
|
|
147
|
+
// that would need to compose or validate it) has nothing for a model to decide either: the
|
|
148
|
+
// only thing that could ever go there is exactly what the user just typed. Caught live: a
|
|
149
|
+
// model asked to extract a bare "Juan" into a single obvious `firstname` field sometimes
|
|
150
|
+
// just didn't — silently leaving it unset and re-showing the same prompt, for a case with no
|
|
151
|
+
// real ambiguity to weigh. See `singlePlainTextCollectField`'s doc comment for the (narrow)
|
|
152
|
+
// conditions this only ever applies under.
|
|
153
|
+
const deterministicChoice = flowJustSelectedThisTurn
|
|
154
|
+
? undefined
|
|
155
|
+
: (matchSingleEnumChoice(config.stateSchema, step, input.text) ?? matchSinglePlainTextCollect(config.stateSchema, step, input.text));
|
|
156
|
+
if (deterministicChoice) {
|
|
157
|
+
modelPatch = deterministicChoice;
|
|
158
|
+
}
|
|
159
|
+
else {
|
|
160
|
+
// The current step's single enum `collect` field already went through every
|
|
161
|
+
// deterministic matching strategy above (index, exact label, unambiguous partial) and
|
|
162
|
+
// still found nothing — that's a bounded, mechanically-checkable answer space, so a
|
|
163
|
+
// model guessing at it afterwards can only do worse: it has no new information the
|
|
164
|
+
// deterministic pass didn't already have, just more room to hallucinate a plausible-
|
|
165
|
+
// sounding option the user never actually picked. Caught live: an unrelated word ("pedido")
|
|
166
|
+
// got the extraction call to silently invent a menu choice, skipping straight past the
|
|
167
|
+
// step that was supposed to show the menu at all. Excluding the field from the schema —
|
|
168
|
+
// rather than trusting "Only include fields explicitly provided" to hold — makes it
|
|
169
|
+
// structurally impossible for this one call to set it.
|
|
170
|
+
const enumCollectField = singleEnumCollectField(config.stateSchema, step);
|
|
171
|
+
const extractionSchema = enumCollectField ? modelPatchSchema.omit({ [enumCollectField]: true }) : modelPatchSchema;
|
|
172
|
+
try {
|
|
173
|
+
const extraction = await this.options.client.complete({
|
|
174
|
+
providerId: this.options.providerId,
|
|
175
|
+
model: this.options.model,
|
|
176
|
+
messages: [
|
|
177
|
+
{
|
|
178
|
+
role: "system",
|
|
179
|
+
content: `${buildGuidedInstructions(config, step, state, this.options.skills)}\n\n${structuredOutputInstruction(extractionSchema, "StatePatch")}\nOnly include fields the user explicitly provided in their latest message. Omit fields that are unknown, already known, or not mentioned.`
|
|
180
|
+
},
|
|
181
|
+
...input.messages,
|
|
182
|
+
{ role: "user", content: input.text }
|
|
183
|
+
],
|
|
184
|
+
...(input.signal ? { signal: input.signal } : {})
|
|
185
|
+
});
|
|
186
|
+
const parsed = parseStructuredOutput(extractionSchema, extraction.text, "StatePatch");
|
|
187
|
+
if (parsed.ok)
|
|
188
|
+
modelPatch = parsed.data;
|
|
189
|
+
else {
|
|
190
|
+
await this.announce(input.onEvent, {
|
|
191
|
+
type: "flow.validation.failed",
|
|
192
|
+
flowId: flow.id,
|
|
193
|
+
sessionId: key,
|
|
194
|
+
taskId,
|
|
195
|
+
runId,
|
|
196
|
+
payload: { stage: "extraction", reason: parsed.error }
|
|
197
|
+
});
|
|
198
|
+
}
|
|
199
|
+
}
|
|
200
|
+
catch (error) {
|
|
142
201
|
await this.announce(input.onEvent, {
|
|
143
202
|
type: "flow.validation.failed",
|
|
144
203
|
flowId: flow.id,
|
|
145
204
|
sessionId: key,
|
|
146
205
|
taskId,
|
|
147
206
|
runId,
|
|
148
|
-
payload: { stage: "extraction", reason:
|
|
207
|
+
payload: { stage: "extraction", reason: error instanceof Error ? error.message : String(error) }
|
|
149
208
|
});
|
|
150
209
|
}
|
|
151
210
|
}
|
|
152
|
-
catch (error) {
|
|
153
|
-
await this.announce(input.onEvent, {
|
|
154
|
-
type: "flow.validation.failed",
|
|
155
|
-
flowId: flow.id,
|
|
156
|
-
sessionId: key,
|
|
157
|
-
taskId,
|
|
158
|
-
runId,
|
|
159
|
-
payload: { stage: "extraction", reason: error instanceof Error ? error.message : String(error) }
|
|
160
|
-
});
|
|
161
|
-
}
|
|
162
211
|
({ state, requirements, step } = await this.applyPatch(flow, key, taskId, runId, config, state, { set: modelPatch, source: "model" }, requirements, input.onEvent));
|
|
163
|
-
// --- Tool-scoped reply pass
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
runId,
|
|
178
|
-
maxRounds,
|
|
179
|
-
onEvent: (event) => this.forwardNativeEvent(flow, key, taskId, runId, event, input.onEvent),
|
|
180
|
-
...(input.signal ? { signal: input.signal } : {})
|
|
181
|
-
};
|
|
182
|
-
const native = this.options.harness ? await this.options.harness.run(loopInput) : await runNativeToolLoop(loopInput);
|
|
183
|
-
const activeStepId = step?.id;
|
|
184
|
-
if (activeStepId)
|
|
185
|
-
stepToolLog[activeStepId] = stepToolLog[activeStepId] ?? [];
|
|
212
|
+
// --- Tool-scoped reply pass, auto-chaining through consecutive silent tool-only steps ---
|
|
213
|
+
// A step whose only job is "run this required tool — nothing to ask the user" (no
|
|
214
|
+
// `collect`, no `prompt`, has `tools.required`) has no real turn boundary in the source
|
|
215
|
+
// flow: a Typebot conversion commonly chains e.g. `search-client` straight into
|
|
216
|
+
// `search-client-addresses` with no user input between them. Stopping the turn there
|
|
217
|
+
// anyway forces the model to invent SOME reply for a step it has nothing to say about
|
|
218
|
+
// (seen live: after finding the customer record, "¿qué te gustaría ordenar? 🍽️" instead of
|
|
219
|
+
// silently continuing to look up their addresses, like the original bot does). So keep
|
|
220
|
+
// resolving steps within this same turn — invisibly to the caller — until landing on one
|
|
221
|
+
// that actually needs the user (has `collect` fields or a literal `prompt`), a tool
|
|
222
|
+
// requests approval, a step fails to advance, or a safety cap is hit. Only the final
|
|
223
|
+
// step's reply is ever shown; every silent step in between never surfaces its own text.
|
|
224
|
+
let currentStep = step;
|
|
225
|
+
let native = { text: "", messages: [], toolCalls: [], toolResults: [], rounds: 0 };
|
|
186
226
|
let pendingApproval = false;
|
|
187
|
-
|
|
188
|
-
|
|
227
|
+
let activeStepId;
|
|
228
|
+
// Whether the very first step this turn resolves to (before any tool ran) is one the user
|
|
229
|
+
// was ALREADY sitting on — as opposed to one this turn's own extraction patch just walked
|
|
230
|
+
// them into (e.g. a single-enum step whose exit condition the deterministic matcher just
|
|
231
|
+
// satisfied). Matters only for the collect+verbatimTextArg auto-invoke path below: `rawText`
|
|
232
|
+
// is this turn's message, which was addressed to whatever step was active BEFORE this turn
|
|
233
|
+
// started — feeding it into a step reached for the first time this same turn (which hasn't
|
|
234
|
+
// even had a chance to ask its own question yet) would resolve a free-text tool against
|
|
235
|
+
// words that were never an answer to it. Reproduced live: confirming a previous step with
|
|
236
|
+
// "si" landed on a fresh date-collection step and immediately fed that same "si" into
|
|
237
|
+
// `delivery.validate_date`, which understandably found no date in it and left a blank reply.
|
|
238
|
+
// A brand new session (no prior turn at all — `previousStepId` undefined) is the one
|
|
239
|
+
// exception: there's no earlier step this message could have been misdirected from, so its
|
|
240
|
+
// very first step is fair game even on turn one. That exception does NOT hold when this flow
|
|
241
|
+
// was just entered THIS turn via multi-flow routing (`flowJustSelectedThisTurn`) — there
|
|
242
|
+
// `input.text` is the phrase that caused the routing, not an answer to this flow's own first
|
|
243
|
+
// question, same root cause as the `matchSinglePlainTextCollect` guard above.
|
|
244
|
+
const rawTextBelongsToStep = (previousStepId === undefined && !flowJustSelectedThisTurn) || step?.id === previousStepId;
|
|
245
|
+
for (let chainLength = 1; chainLength <= MAX_CHAIN_STEPS; chainLength += 1) {
|
|
246
|
+
activeStepId = currentStep?.id;
|
|
247
|
+
if (activeStepId)
|
|
248
|
+
stepToolLog[activeStepId] = stepToolLog[activeStepId] ?? [];
|
|
249
|
+
const effectiveTools = resolveStepTools(this.options.toolRegistrations, currentStep?.tools);
|
|
250
|
+
// A step with a literal `prompt` and zero available tools has nothing for the model to
|
|
251
|
+
// decide: there's no tool call it could make, and the only thing left to say is the
|
|
252
|
+
// step's own scripted text. Skip the reply-composition call entirely instead of trusting
|
|
253
|
+
// a model (any model, of any size) to faithfully reproduce that text rather than drift
|
|
254
|
+
// toward something plausible-sounding but off-script.
|
|
255
|
+
// A silent tool-only step (no `collect`, no `prompt`, exactly one required tool) has
|
|
256
|
+
// nothing for a model to decide either: which tool to call isn't ambiguous, and if every
|
|
257
|
+
// one of that tool's input properties already has a same-named value in `state` (most of
|
|
258
|
+
// them do — they're typically the previous step's own tool-output fields), the call can
|
|
259
|
+
// be constructed and executed directly. A model asked to do the exact same thing will
|
|
260
|
+
// sometimes narrate ("let me check that for you") instead of actually emitting the tool
|
|
261
|
+
// call, silently stalling the chain — this path can't drift that way because there's no
|
|
262
|
+
// free-text composition step to drift in. Falls back to the model when an argument can't
|
|
263
|
+
// be confidently resolved from state, so this only ever fires when it's safe to.
|
|
264
|
+
const canUseRawTextForAutoInvoke = chainLength > 1 || rawTextBelongsToStep;
|
|
265
|
+
const autoInvoked = await this.tryAutoInvokeRequiredTool(currentStep, effectiveTools, state, canUseRawTextForAutoInvoke ? input.text : undefined, taskId, runId);
|
|
266
|
+
native =
|
|
267
|
+
autoInvoked ??
|
|
268
|
+
(currentStep?.prompt && effectiveTools.length === 0
|
|
269
|
+
? { text: interpolatePrompt(currentStep.prompt, state), messages: [], toolCalls: [], toolResults: [], rounds: 0 }
|
|
270
|
+
: await this.runReplyPass(config, currentStep, state, input, effectiveTools, taskId, runId, flow, key, canUseRawTextForAutoInvoke));
|
|
271
|
+
let roundPendingApproval = false;
|
|
272
|
+
for (const toolResult of native.toolResults) {
|
|
273
|
+
if (toolResult.result.status === "pending_approval")
|
|
274
|
+
roundPendingApproval = true;
|
|
275
|
+
if (toolResult.result.status === "ok" && activeStepId) {
|
|
276
|
+
stepToolLog[activeStepId] = [...(stepToolLog[activeStepId] ?? []), toolResult.tool.id];
|
|
277
|
+
}
|
|
278
|
+
const binding = config.tools?.bindings?.[toolResult.tool.id];
|
|
279
|
+
if (binding) {
|
|
280
|
+
const patch = binding.applyResult({ result: toolResult.result, state });
|
|
281
|
+
if (patch) {
|
|
282
|
+
({ state, requirements, step: currentStep } = await this.applyPatch(flow, key, taskId, runId, config, state, patch, requirements, input.onEvent));
|
|
283
|
+
}
|
|
284
|
+
}
|
|
285
|
+
}
|
|
286
|
+
if (roundPendingApproval)
|
|
189
287
|
pendingApproval = true;
|
|
190
|
-
|
|
191
|
-
|
|
288
|
+
// Don't let the resolved step silently skip past one whose requiredBeforeExit tools haven't run yet.
|
|
289
|
+
let finalStep = resolveActiveStep(config, state);
|
|
290
|
+
if (activeStepId && finalStep?.id !== activeStepId) {
|
|
291
|
+
const previousStepDef = config.steps.find((candidate) => candidate.id === activeStepId);
|
|
292
|
+
const stillMissing = missingRequiredBeforeExitTools(previousStepDef?.tools, stepToolLog[activeStepId] ?? []);
|
|
293
|
+
if (stillMissing.length)
|
|
294
|
+
finalStep = previousStepDef;
|
|
192
295
|
}
|
|
193
|
-
const
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
296
|
+
const stepChanged = Boolean(activeStepId) && finalStep?.id !== activeStepId;
|
|
297
|
+
// The reply pass's system prompt reflected the step this round STARTED on — not
|
|
298
|
+
// necessarily this one. A tool call inside this round can advance the flow past that
|
|
299
|
+
// step before the reply is even composed, but the model was never told what the NEW
|
|
300
|
+
// step asks, so it improvises. When the step actually changed and the new step has a
|
|
301
|
+
// literal `prompt`, use that instead of the improvised text — the same model-agnostic
|
|
302
|
+
// guarantee as the pre-round verbatim path, just applied to a transition that only
|
|
303
|
+
// became knowable mid-round. Unlike the pre-round check, this doesn't require the new
|
|
304
|
+
// step to have zero available tools: the user's message this round was about the step
|
|
305
|
+
// we're LEAVING, not the one we just landed on, so nothing has denied that step's own
|
|
306
|
+
// tool a fair chance yet — it gets one on the next external turn, once the user actually
|
|
307
|
+
// responds to what `prompt` is now asking.
|
|
308
|
+
if (stepChanged && finalStep?.prompt) {
|
|
309
|
+
native = { ...native, text: interpolatePrompt(finalStep.prompt, state) };
|
|
199
310
|
}
|
|
311
|
+
await this.announceStepChange(flow, key, activeStepId, finalStep?.id, taskId, runId, input.onEvent);
|
|
312
|
+
currentStep = finalStep;
|
|
313
|
+
const isSilentToolOnlyStep = Boolean(currentStep &&
|
|
314
|
+
(!currentStep.collect || currentStep.collect.length === 0) &&
|
|
315
|
+
!currentStep.prompt &&
|
|
316
|
+
(currentStep.tools?.required?.length ?? 0) > 0);
|
|
317
|
+
if (roundPendingApproval || !stepChanged || !isSilentToolOnlyStep)
|
|
318
|
+
break;
|
|
200
319
|
}
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
finalStep = previousStepDef;
|
|
208
|
-
}
|
|
209
|
-
step = finalStep;
|
|
210
|
-
await this.announceStepChange(flow, key, activeStepId, step?.id, taskId, runId, input.onEvent);
|
|
320
|
+
step = currentStep;
|
|
321
|
+
// Last-resort safety net: an auto-invoked tool that didn't advance the step (no `message`
|
|
322
|
+
// on its output, or the step's own prompt wasn't already substituted above) should still
|
|
323
|
+
// never leave the user looking at a blank reply — fall back to the step's own literal
|
|
324
|
+
// prompt, interpolated against the now-current state, if it has one.
|
|
325
|
+
const replyText = native.text || (step?.prompt ? interpolatePrompt(step.prompt, state) : native.text);
|
|
211
326
|
requirements = evaluateRequirements(config, state);
|
|
212
327
|
const missingRequirementIds = requirements.filter((requirement) => !requirement.satisfied).map((requirement) => requirement.id);
|
|
213
328
|
const completedRequirementIds = requirements.filter((requirement) => requirement.satisfied).map((requirement) => requirement.id);
|
|
@@ -242,7 +357,7 @@ export class GuidedFlowRuntime {
|
|
|
242
357
|
status = "waiting_for_approval";
|
|
243
358
|
await this.announce(input.onEvent, { type: "flow.waiting_for_approval", flowId: flow.id, sessionId: key, taskId, runId, payload: {} });
|
|
244
359
|
}
|
|
245
|
-
else if (native.rounds >=
|
|
360
|
+
else if (native.rounds >= MAX_REPLY_ROUNDS && native.toolCalls.length > 0) {
|
|
246
361
|
status = "waiting_for_tool";
|
|
247
362
|
}
|
|
248
363
|
else {
|
|
@@ -266,7 +381,7 @@ export class GuidedFlowRuntime {
|
|
|
266
381
|
};
|
|
267
382
|
await this.options.store.saveFlowState(updated);
|
|
268
383
|
return {
|
|
269
|
-
text:
|
|
384
|
+
text: replyText,
|
|
270
385
|
...(output !== undefined ? { output } : {}),
|
|
271
386
|
state: state,
|
|
272
387
|
flow: {
|
|
@@ -282,6 +397,123 @@ export class GuidedFlowRuntime {
|
|
|
282
397
|
}
|
|
283
398
|
};
|
|
284
399
|
}
|
|
400
|
+
/** The model-driven reply pass: composes text and may call the active step's tools. Only reached when a step has no `prompt`, or does but still has tools available (e.g. a validation step, which needs the model to react to a tool result/error dynamically). */
|
|
401
|
+
async runReplyPass(config, step, state, input, effectiveTools, taskId, runId, flow, key, allowVerbatimTextArg = true) {
|
|
402
|
+
// `verbatimTextArg` forces whatever the model composes to be overwritten with this turn's
|
|
403
|
+
// raw text — the right call when the text is actually the user's answer to `step`'s own
|
|
404
|
+
// question, but wrong the moment `step` was only just reached this same turn (e.g. a "sí"
|
|
405
|
+
// confirming the PREVIOUS step landed here via the deterministic enum patch, before the
|
|
406
|
+
// user ever saw this step's own prompt). Forcing it there doesn't just risk a bad guess —
|
|
407
|
+
// it guarantees one, since whatever the model supplies gets discarded either way. Caught
|
|
408
|
+
// live: that exact "sí" got forced into `customer.validate_email_2`'s phone argument,
|
|
409
|
+
// failing validation for a phone number the user never got a chance to type.
|
|
410
|
+
const verbatimMapping = allowVerbatimTextArg ? step?.tools?.verbatimTextArg : undefined;
|
|
411
|
+
const loopInput = {
|
|
412
|
+
client: this.options.client,
|
|
413
|
+
providerId: this.options.providerId,
|
|
414
|
+
model: this.options.model,
|
|
415
|
+
messages: [
|
|
416
|
+
{ role: "system", content: buildGuidedInstructions(config, step, state, this.options.skills) },
|
|
417
|
+
...input.messages,
|
|
418
|
+
{ role: "user", content: input.text }
|
|
419
|
+
],
|
|
420
|
+
tools: applyVerbatimTextArgs(effectiveTools, verbatimMapping, input.text),
|
|
421
|
+
taskId,
|
|
422
|
+
runId,
|
|
423
|
+
maxRounds: MAX_REPLY_ROUNDS,
|
|
424
|
+
onEvent: (event) => this.forwardNativeEvent(flow, key, taskId, runId, event, input.onEvent),
|
|
425
|
+
...(input.signal ? { signal: input.signal } : {})
|
|
426
|
+
};
|
|
427
|
+
return this.options.harness ? await this.options.harness.run(loopInput) : await runNativeToolLoop(loopInput);
|
|
428
|
+
}
|
|
429
|
+
/**
|
|
430
|
+
* Deterministically calls a step's single applicable tool when its arguments are fully
|
|
431
|
+
* resolvable without asking a model to decide anything. Covers two shapes:
|
|
432
|
+
*
|
|
433
|
+
* 1. A silent tool-only step (no `collect`, exactly one required tool) where every input
|
|
434
|
+
* property already resolves to a known value in `state` (matched by property name,
|
|
435
|
+
* case-insensitively — the generator's convention of lowercase-flattened field names makes
|
|
436
|
+
* this a reliable match in practice).
|
|
437
|
+
* 2. A `collect` step whose only useful action is resolving the user's free text against a
|
|
438
|
+
* dynamic list (an address, a product, a time slot): exactly one tool in `tools.allowed`
|
|
439
|
+
* has a `verbatimTextArg` mapping configured. Which tool to call isn't ambiguous and the
|
|
440
|
+
* argument that matters most — the user's own words — is already pinned to the raw turn
|
|
441
|
+
* text, so there's nothing left for a model to compose either. (Caught live: asked to do
|
|
442
|
+
* the exact same thing, a model sometimes narrates — "voy a consultar..." — instead of
|
|
443
|
+
* actually emitting the tool call, leaving the user with a blank reply.)
|
|
444
|
+
*
|
|
445
|
+
* Returns `undefined` — never partially constructed input — the moment any other required
|
|
446
|
+
* property can't be confidently resolved, so the caller falls back to the model-driven
|
|
447
|
+
* `runReplyPass` exactly as before. Bypasses the harness too: this never asks a model
|
|
448
|
+
* anything, so a custom `ModelHarness` has nothing to intercept here (same reasoning as the
|
|
449
|
+
* `step.prompt` verbatim path).
|
|
450
|
+
*/
|
|
451
|
+
async tryAutoInvokeRequiredTool(step, effectiveTools, state, rawText, taskId, runId) {
|
|
452
|
+
const requiredIds = step?.tools?.required ?? [];
|
|
453
|
+
const hasCollect = (step?.collect?.length ?? 0) > 0;
|
|
454
|
+
let toolId;
|
|
455
|
+
let verbatimArgName;
|
|
456
|
+
if (!hasCollect && requiredIds.length === 1) {
|
|
457
|
+
toolId = requiredIds[0];
|
|
458
|
+
}
|
|
459
|
+
else if (hasCollect && rawText !== undefined) {
|
|
460
|
+
const verbatimMapping = step?.tools?.verbatimTextArg;
|
|
461
|
+
const allowedIds = step?.tools?.allowed ?? [];
|
|
462
|
+
const verbatimIds = verbatimMapping ? allowedIds.filter((id) => verbatimMapping[id]) : [];
|
|
463
|
+
const soleVerbatimId = verbatimIds.length === 1 ? verbatimIds[0] : undefined;
|
|
464
|
+
if (soleVerbatimId) {
|
|
465
|
+
toolId = soleVerbatimId;
|
|
466
|
+
verbatimArgName = verbatimMapping?.[soleVerbatimId];
|
|
467
|
+
}
|
|
468
|
+
}
|
|
469
|
+
if (!toolId)
|
|
470
|
+
return undefined;
|
|
471
|
+
const registration = effectiveTools.find((candidate) => candidate.tool.id === toolId);
|
|
472
|
+
if (!registration)
|
|
473
|
+
return undefined;
|
|
474
|
+
const schema = registration.tool.inputSchema;
|
|
475
|
+
const propertyNames = Object.keys(schema?.properties ?? {});
|
|
476
|
+
const requiredPropertyNames = schema?.required ?? propertyNames;
|
|
477
|
+
const stateEntries = Object.entries(state);
|
|
478
|
+
const args = {};
|
|
479
|
+
for (const propertyName of propertyNames) {
|
|
480
|
+
// `verbatimArgName` is only ever set above once `rawText !== undefined` was confirmed —
|
|
481
|
+
// this narrows what TypeScript can't infer across the two functions.
|
|
482
|
+
if (propertyName === verbatimArgName && rawText !== undefined) {
|
|
483
|
+
args[propertyName] = rawText;
|
|
484
|
+
continue;
|
|
485
|
+
}
|
|
486
|
+
const value = resolveArgFromState(propertyName, stateEntries);
|
|
487
|
+
if (value === undefined || value === null || value === "") {
|
|
488
|
+
if (requiredPropertyNames.includes(propertyName))
|
|
489
|
+
return undefined;
|
|
490
|
+
continue;
|
|
491
|
+
}
|
|
492
|
+
// A loosely-typed state field (the generator emits `z.unknown()` for plenty of collected
|
|
493
|
+
// values) commonly holds a JS type its own tool argument didn't expect — not because
|
|
494
|
+
// anything drifted, but because the extraction call itself just returns valid JSON for
|
|
495
|
+
// whatever the user said: "1" comes back as the NUMBER 1, not the string "1", when the
|
|
496
|
+
// field has no type constraint to anchor it. A tool argument typed `z.string()` then
|
|
497
|
+
// rejects that number outright. Caught live: `numberOfCilinders` silently failing to
|
|
498
|
+
// resolve this way left `order.call` invoked with the count missing entirely, and the
|
|
499
|
+
// real API rejected the whole order with a generic, unhelpful error. Coercing between
|
|
500
|
+
// closely-related primitives (number/boolean → string, numeric string → number) covers
|
|
501
|
+
// this safely; anything further off (an object where a string was expected, say) still
|
|
502
|
+
// bails rather than guessing.
|
|
503
|
+
const coerced = coerceToJsonSchemaType(value, schema?.properties?.[propertyName]?.type);
|
|
504
|
+
if (!coerced.ok)
|
|
505
|
+
return undefined;
|
|
506
|
+
args[propertyName] = coerced.value;
|
|
507
|
+
}
|
|
508
|
+
const result = await registration.handler(args, { taskId, runId, stepId: `auto-chain-${registration.tool.id}-${randomUUID()}` });
|
|
509
|
+
return {
|
|
510
|
+
text: extractResultMessage(result),
|
|
511
|
+
messages: [],
|
|
512
|
+
toolCalls: [],
|
|
513
|
+
toolResults: [{ tool: registration.tool, result, toolCallId: `auto-${randomUUID()}` }],
|
|
514
|
+
rounds: 0
|
|
515
|
+
};
|
|
516
|
+
}
|
|
285
517
|
async applyPatch(flow, key, taskId, runId, config, state, patch, previousRequirements, onEvent) {
|
|
286
518
|
await this.options.hooks.fire("beforeFlowStatePatch", { flowId: flow.id, sessionId: key, patch, context: { taskId, runId } });
|
|
287
519
|
const applied = applyStatePatch(config, state, patch);
|
|
@@ -413,6 +645,266 @@ export class GuidedFlowRuntime {
|
|
|
413
645
|
return this.options.store.getFlowState(key, flow.id);
|
|
414
646
|
}
|
|
415
647
|
}
|
|
648
|
+
/**
|
|
649
|
+
* Substitutes `{{fieldName}}` placeholders in a step's literal `prompt` with the live value of
|
|
650
|
+
* that field in `state` — e.g. a Typebot bubble that's literally `{{addressesListMessage}}`
|
|
651
|
+
* (a previous tool's own output, meant to be shown to the user verbatim) becomes the real
|
|
652
|
+
* address list text instead of vanishing or showing raw template syntax. An unresolved or
|
|
653
|
+
* still-empty field renders as `""` rather than leaking `{{...}}` to the user — this can only
|
|
654
|
+
* happen if `prompt` is reached before the tool that was supposed to populate it has actually
|
|
655
|
+
* run, which the `denied`-tools-by-default step policy is what prevents in practice.
|
|
656
|
+
*/
|
|
657
|
+
/**
|
|
658
|
+
* Best-effort text for an auto-invoked tool's result, so a step that doesn't advance (a failed
|
|
659
|
+
* free-text match, a validation rejection) doesn't leave the user staring at a blank reply — the
|
|
660
|
+
* same failure mode `resolveArgFromState`'s auto-invoke path is meant to eliminate, just on the
|
|
661
|
+
* output side instead of the input side. Purely additive: when the tool's output has no string
|
|
662
|
+
* `message` field, this returns "" exactly as before, and a later step-change in the same turn
|
|
663
|
+
* (see the `stepChanged && finalStep?.prompt` override) still takes priority over this text.
|
|
664
|
+
*/
|
|
665
|
+
function extractResultMessage(result) {
|
|
666
|
+
if (result.status !== "ok")
|
|
667
|
+
return "";
|
|
668
|
+
const output = result.output;
|
|
669
|
+
if (output && typeof output === "object" && !Array.isArray(output) && "message" in output) {
|
|
670
|
+
const message = output.message;
|
|
671
|
+
return typeof message === "string" ? message : "";
|
|
672
|
+
}
|
|
673
|
+
return "";
|
|
674
|
+
}
|
|
675
|
+
function interpolatePrompt(prompt, state) {
|
|
676
|
+
return prompt.replace(/\{\{\s*([\w.]+)\s*\}\}/g, (match, field) => {
|
|
677
|
+
const value = state[field];
|
|
678
|
+
return value === undefined || value === null ? "" : String(value);
|
|
679
|
+
});
|
|
680
|
+
}
|
|
681
|
+
/**
|
|
682
|
+
* Resolves a tool's input property (e.g. `addressId`) against `state`, for
|
|
683
|
+
* `tryAutoInvokeRequiredTool`. Tries an exact case-insensitive key match first (`customerId` ↔
|
|
684
|
+
* `customerid`); if that finds nothing, falls back to a state key that ENDS WITH the property
|
|
685
|
+
* name (`addressId` ↔ `selectedaddressid`) — only when exactly one key qualifies, so it can
|
|
686
|
+
* never guess between two plausible fields. This second pass matters in practice: generated
|
|
687
|
+
* state field names are commonly prefixed with what produced them (`selected`, `chosen`,
|
|
688
|
+
* `validated`...), so a literal match against the tool's own property name often doesn't
|
|
689
|
+
* exist even though there's exactly one unambiguous field it obviously means. Without it, this
|
|
690
|
+
* step falls through to asking a model to supply the same argument — which is where a real bug
|
|
691
|
+
* showed up: the model narrated "voy a consultar los productos..." instead of actually calling
|
|
692
|
+
* the tool that turn, stalling the flow exactly like the cases this whole mechanism exists to
|
|
693
|
+
* avoid.
|
|
694
|
+
*/
|
|
695
|
+
function resolveArgFromState(propertyName, stateEntries) {
|
|
696
|
+
const lowerProperty = propertyName.toLowerCase();
|
|
697
|
+
const exact = stateEntries.find(([key]) => key.toLowerCase() === lowerProperty);
|
|
698
|
+
if (exact)
|
|
699
|
+
return exact[1];
|
|
700
|
+
const suffixMatches = stateEntries.filter(([key]) => {
|
|
701
|
+
const lowerKey = key.toLowerCase();
|
|
702
|
+
return lowerKey.length > lowerProperty.length && lowerKey.endsWith(lowerProperty);
|
|
703
|
+
});
|
|
704
|
+
if (suffixMatches.length !== 1)
|
|
705
|
+
return undefined;
|
|
706
|
+
const match = suffixMatches[0];
|
|
707
|
+
return match ? match[1] : undefined;
|
|
708
|
+
}
|
|
709
|
+
/**
|
|
710
|
+
* Whether `value` is a plausible fit for a JSON Schema `type` keyword ("string", "number",
|
|
711
|
+
* "integer", "boolean", "array", "object") before it's handed to a tool's own (stricter) Zod
|
|
712
|
+
* validation. Deliberately permissive when `expectedType` is missing/unrecognized — the caller
|
|
713
|
+
* only uses this to bail out of an auto-invoke early, never to accept a value it otherwise
|
|
714
|
+
* wouldn't have.
|
|
715
|
+
*/
|
|
716
|
+
/**
|
|
717
|
+
* Checks a resolved state value against a tool argument's declared JSON Schema `type`, coercing
|
|
718
|
+
* between closely-related PRIMITIVES (number/boolean → string, a numeric string → number) rather
|
|
719
|
+
* than just accepting-or-rejecting — an extraction call returning `1` for a field the user
|
|
720
|
+
* answered with the free-text "1" is the ordinary case, not a corruption, and a `z.string()`
|
|
721
|
+
* argument should get `"1"` for it rather than silently losing the whole tool call. Structured
|
|
722
|
+
* mismatches (an object/array where a primitive was expected, or vice versa) are never coerced —
|
|
723
|
+
* those really do indicate the wrong value ended up in the wrong field, and this rejects
|
|
724
|
+
* (`ok: false`) exactly as before so the caller falls back to the model.
|
|
725
|
+
*/
|
|
726
|
+
function coerceToJsonSchemaType(value, expectedType) {
|
|
727
|
+
switch (expectedType) {
|
|
728
|
+
case "string":
|
|
729
|
+
if (typeof value === "string")
|
|
730
|
+
return { ok: true, value };
|
|
731
|
+
if (typeof value === "number" || typeof value === "boolean")
|
|
732
|
+
return { ok: true, value: String(value) };
|
|
733
|
+
return { ok: false };
|
|
734
|
+
case "number":
|
|
735
|
+
case "integer":
|
|
736
|
+
if (typeof value === "number")
|
|
737
|
+
return { ok: true, value };
|
|
738
|
+
if (typeof value === "string" && value.trim() !== "" && !Number.isNaN(Number(value)))
|
|
739
|
+
return { ok: true, value: Number(value) };
|
|
740
|
+
return { ok: false };
|
|
741
|
+
case "boolean":
|
|
742
|
+
return typeof value === "boolean" ? { ok: true, value } : { ok: false };
|
|
743
|
+
case "array":
|
|
744
|
+
return Array.isArray(value) ? { ok: true, value } : { ok: false };
|
|
745
|
+
case "object":
|
|
746
|
+
return typeof value === "object" && value !== null && !Array.isArray(value) ? { ok: true, value } : { ok: false };
|
|
747
|
+
default:
|
|
748
|
+
return { ok: true, value };
|
|
749
|
+
}
|
|
750
|
+
}
|
|
751
|
+
/**
|
|
752
|
+
* Wraps any tool registration named in `mapping` so its handler always receives the current
|
|
753
|
+
* turn's raw text under the mapped argument name, overwriting whatever the model itself put
|
|
754
|
+
* there. See `StepToolPolicy.verbatimTextArg` for why: a model composing that argument from
|
|
755
|
+
* context can invent a plausible-sounding value instead of relaying what the user actually
|
|
756
|
+
* said, especially for a vague reply — this makes the tool's own "does this resolve to
|
|
757
|
+
* anything?" check trustworthy, since it's always judging the real input.
|
|
758
|
+
*/
|
|
759
|
+
function applyVerbatimTextArgs(tools, mapping, rawText) {
|
|
760
|
+
if (!mapping || Object.keys(mapping).length === 0)
|
|
761
|
+
return tools;
|
|
762
|
+
return tools.map((registration) => {
|
|
763
|
+
const argName = mapping[registration.tool.id];
|
|
764
|
+
if (!argName)
|
|
765
|
+
return registration;
|
|
766
|
+
return {
|
|
767
|
+
...registration,
|
|
768
|
+
handler: (rawInput, context) => registration.handler({ ...rawInput, [argName]: rawText }, context)
|
|
769
|
+
};
|
|
770
|
+
});
|
|
771
|
+
}
|
|
772
|
+
function unwrapEnum(schema) {
|
|
773
|
+
if (schema instanceof z.ZodEnum)
|
|
774
|
+
return schema;
|
|
775
|
+
if (schema instanceof z.ZodOptional || schema instanceof z.ZodDefault || schema instanceof z.ZodNullable) {
|
|
776
|
+
return unwrapEnum(schema._def.innerType);
|
|
777
|
+
}
|
|
778
|
+
return undefined;
|
|
779
|
+
}
|
|
780
|
+
const COMBINING_DIACRITICS = new RegExp("[\\u0300-\\u036f]", "g");
|
|
781
|
+
const normalizeChoiceText = (value) => value
|
|
782
|
+
.normalize("NFD")
|
|
783
|
+
.replace(COMBINING_DIACRITICS, "")
|
|
784
|
+
.trim()
|
|
785
|
+
.toLowerCase();
|
|
786
|
+
/**
|
|
787
|
+
* Matches raw user text against a single enum-typed `collect` field's options — by 1-based
|
|
788
|
+
* list index (matching the numbered list `step.prompt` renders), exact label (accent- and
|
|
789
|
+
* case-insensitive), or an unambiguous partial match (exactly one option contains the text or
|
|
790
|
+
* vice versa, e.g. "quiero el tanque" or a bare "tanque" both resolving "Tanque"). Returns
|
|
791
|
+
* `undefined` — never a guess — the moment more than one option could plausibly match, or the
|
|
792
|
+
* step isn't a single-enum choice at all, so the caller always has a safe fallback to the
|
|
793
|
+
* model-driven extraction call.
|
|
794
|
+
*/
|
|
795
|
+
/**
|
|
796
|
+
* Identifies a step's single enum-typed `collect` field, if it has exactly one — the same
|
|
797
|
+
* precondition `matchSingleEnumChoice` requires to even attempt a deterministic match. Exposed
|
|
798
|
+
* separately so the caller can tell "no deterministic match was possible" apart from "this
|
|
799
|
+
* field isn't even a bounded-choice one", which matters for deciding whether to trust the
|
|
800
|
+
* extraction model with it at all (see the call site in `driveFlow`).
|
|
801
|
+
*/
|
|
802
|
+
function singleEnumCollectField(stateSchema, step) {
|
|
803
|
+
if (step?.collect?.length !== 1)
|
|
804
|
+
return undefined;
|
|
805
|
+
const field = String(step.collect[0]);
|
|
806
|
+
const fieldSchema = stateSchema.shape[field];
|
|
807
|
+
return fieldSchema && unwrapEnum(fieldSchema) ? field : undefined;
|
|
808
|
+
}
|
|
809
|
+
function matchSingleEnumChoice(stateSchema, step, rawText) {
|
|
810
|
+
const field = singleEnumCollectField(stateSchema, step);
|
|
811
|
+
if (!field)
|
|
812
|
+
return undefined;
|
|
813
|
+
const fieldSchema = stateSchema.shape[field];
|
|
814
|
+
const enumSchema = fieldSchema && unwrapEnum(fieldSchema);
|
|
815
|
+
if (!enumSchema)
|
|
816
|
+
return undefined;
|
|
817
|
+
const options = enumSchema.options;
|
|
818
|
+
const text = normalizeChoiceText(rawText);
|
|
819
|
+
if (!text)
|
|
820
|
+
return undefined;
|
|
821
|
+
const index = Number(text);
|
|
822
|
+
if (Number.isInteger(index) && index >= 1 && index <= options.length) {
|
|
823
|
+
return { [field]: options[index - 1] };
|
|
824
|
+
}
|
|
825
|
+
const exact = options.filter((option) => normalizeChoiceText(option) === text);
|
|
826
|
+
if (exact.length === 1)
|
|
827
|
+
return { [field]: exact[0] };
|
|
828
|
+
const partial = options.filter((option) => {
|
|
829
|
+
const normalizedOption = normalizeChoiceText(option);
|
|
830
|
+
return normalizedOption.includes(text) || text.includes(normalizedOption);
|
|
831
|
+
});
|
|
832
|
+
if (partial.length === 1)
|
|
833
|
+
return { [field]: partial[0] };
|
|
834
|
+
// Common Spanish yes/no colloquialisms ("sip", "va", "nel"...) share no substring with a
|
|
835
|
+
// label like "Sí es correcto" or "Continuar" — the checks above miss them entirely, which
|
|
836
|
+
// regressed a real confirm step live: "sip" stopped resolving "Sí es correcto" once the
|
|
837
|
+
// extraction call was barred from guessing this field at all (see the enum-field exclusion
|
|
838
|
+
// below), leaving affirmations that don't literally overlap with the option text with no path
|
|
839
|
+
// to resolve short of a second try. This only fires when exactly one option's own wording is
|
|
840
|
+
// recognizably yes-flavored (or no-flavored) and the other isn't — never for option pairs like
|
|
841
|
+
// "Elegir de la lista" / "Agregar domicilio" that aren't a yes/no choice in the first place.
|
|
842
|
+
const polarityMatch = matchYesNoColloquialism(options, text);
|
|
843
|
+
if (polarityMatch)
|
|
844
|
+
return { [field]: polarityMatch };
|
|
845
|
+
return undefined;
|
|
846
|
+
}
|
|
847
|
+
const AFFIRMATIVE_OPTION_WORDS = ["si", "correcto", "confirmar", "confirmo", "continuar", "aceptar", "acepto"];
|
|
848
|
+
const NEGATIVE_OPTION_WORDS = ["no", "corregir", "cancelar", "incorrecto", "rechazar", "cambiar"];
|
|
849
|
+
const AFFIRMATIVE_SYNONYMS = new Set(["si", "sip", "sisas", "simon", "claro", "va", "dale", "ok", "okay", "correcto", "afirmativo"]);
|
|
850
|
+
const NEGATIVE_SYNONYMS = new Set(["no", "nel", "nop", "negativo", "paranada", "nones"]);
|
|
851
|
+
function optionPolarity(normalizedOption) {
|
|
852
|
+
const isAffirmative = AFFIRMATIVE_OPTION_WORDS.some((word) => normalizedOption.includes(word));
|
|
853
|
+
const isNegative = NEGATIVE_OPTION_WORDS.some((word) => normalizedOption.includes(word));
|
|
854
|
+
if (isAffirmative && !isNegative)
|
|
855
|
+
return "yes";
|
|
856
|
+
if (isNegative && !isAffirmative)
|
|
857
|
+
return "no";
|
|
858
|
+
return undefined;
|
|
859
|
+
}
|
|
860
|
+
function matchYesNoColloquialism(options, text) {
|
|
861
|
+
const textPolarity = AFFIRMATIVE_SYNONYMS.has(text) ? "yes" : NEGATIVE_SYNONYMS.has(text) ? "no" : undefined;
|
|
862
|
+
if (!textPolarity)
|
|
863
|
+
return undefined;
|
|
864
|
+
const matches = options.filter((option) => optionPolarity(normalizeChoiceText(option)) === textPolarity);
|
|
865
|
+
return matches.length === 1 ? matches[0] : undefined;
|
|
866
|
+
}
|
|
867
|
+
/**
|
|
868
|
+
* A step's single `collect` field qualifies for verbatim capture — the raw turn text becomes
|
|
869
|
+
* its value with no model involved — only under conditions narrow enough that there's nothing
|
|
870
|
+
* left to decide:
|
|
871
|
+
* - Exactly one `collect` field (a multi-field step genuinely needs the model to work out which
|
|
872
|
+
* part of the text answers which still-open question).
|
|
873
|
+
* - Not an enum (that's `matchSingleEnumChoice`'s job — a bounded answer space needs matching,
|
|
874
|
+
* not verbatim capture).
|
|
875
|
+
* - The step has no `allowed`/`required` tools at all — if a tool exists, an argument might need
|
|
876
|
+
* real composition or validation (that's what `verbatimTextArg` + the tool's own logic are
|
|
877
|
+
* for); this only covers steps whose entire job is "remember exactly what they typed."
|
|
878
|
+
*/
|
|
879
|
+
function isPlainTextSchema(schema) {
|
|
880
|
+
if (schema instanceof z.ZodOptional || schema instanceof z.ZodDefault || schema instanceof z.ZodNullable) {
|
|
881
|
+
return isPlainTextSchema(schema._def.innerType);
|
|
882
|
+
}
|
|
883
|
+
// Deliberately narrow: booleans/numbers/objects/arrays need real parsing (or come from a
|
|
884
|
+
// confirmation step, a derived value, a tool result) — verbatim raw text would either fail
|
|
885
|
+
// that field's own validation or silently coerce into something the user never intended.
|
|
886
|
+
// The generator's convention for free-text fields is `z.unknown()`; `z.string()`/`z.any()`
|
|
887
|
+
// cover the rest of what a plain "remember what they typed" field could reasonably be.
|
|
888
|
+
return schema instanceof z.ZodString || schema instanceof z.ZodUnknown || schema instanceof z.ZodAny;
|
|
889
|
+
}
|
|
890
|
+
function singlePlainTextCollectField(stateSchema, step) {
|
|
891
|
+
if (step?.collect?.length !== 1)
|
|
892
|
+
return undefined;
|
|
893
|
+
if ((step.tools?.allowed?.length ?? 0) > 0 || (step.tools?.required?.length ?? 0) > 0)
|
|
894
|
+
return undefined;
|
|
895
|
+
const field = String(step.collect[0]);
|
|
896
|
+
const fieldSchema = stateSchema.shape[field];
|
|
897
|
+
if (!fieldSchema || unwrapEnum(fieldSchema) || !isPlainTextSchema(fieldSchema))
|
|
898
|
+
return undefined;
|
|
899
|
+
return field;
|
|
900
|
+
}
|
|
901
|
+
function matchSinglePlainTextCollect(stateSchema, step, rawText) {
|
|
902
|
+
const field = singlePlainTextCollectField(stateSchema, step);
|
|
903
|
+
if (!field)
|
|
904
|
+
return undefined;
|
|
905
|
+
const text = rawText.trim();
|
|
906
|
+
return text ? { [field]: text } : undefined;
|
|
907
|
+
}
|
|
416
908
|
function buildGuidedInstructions(config, step, state, skills) {
|
|
417
909
|
const known = Object.entries(state)
|
|
418
910
|
.filter(([, value]) => value !== undefined && value !== null && value !== "")
|
|
@@ -421,11 +913,28 @@ function buildGuidedInstructions(config, step, state, skills) {
|
|
|
421
913
|
const stepSkills = (step?.skills ?? [])
|
|
422
914
|
.map((id) => skills.find((skill) => skill.id === id))
|
|
423
915
|
.filter((skill) => Boolean(skill));
|
|
916
|
+
// A step with nothing to collect and a required tool is a pure backend step — there is
|
|
917
|
+
// nothing to narrate or confirm yet, only a tool to call. Left to its own judgment, a model
|
|
918
|
+
// will sometimes announce "let me check that for you" as plain text instead of actually
|
|
919
|
+
// emitting the tool call in that same response, which silently stalls the auto-chain in
|
|
920
|
+
// `driveFlow` (it only keeps chaining once the tool has actually run). State this as an
|
|
921
|
+
// imperative instruction rather than leaving it implicit in `instructions`.
|
|
922
|
+
const requiredTools = step?.tools?.required ?? [];
|
|
923
|
+
const mustCallNow = !step?.collect?.length && requiredTools.length > 0
|
|
924
|
+
? `This step has exactly one job: call ${requiredTools.map((id) => `"${String(id)}"`).join(", ")} right now, in this response. Do not narrate, explain, or say you're about to do it — call the tool immediately, with no preceding text.`
|
|
925
|
+
: "";
|
|
424
926
|
const lines = [
|
|
425
927
|
`You are guiding the user through the "${config.name}" flow. Goal: ${config.goal}`,
|
|
426
928
|
known.length ? `Known so far: ${known.join(", ")}.` : "Nothing is known about the user yet.",
|
|
427
929
|
missing.length ? `Still missing: ${missing.join(", ")}. Ask only for what's missing — never re-ask for known fields.` : "",
|
|
428
|
-
|
|
930
|
+
// `instructions` can carry the same `{{field}}` placeholders `prompt` does — e.g. an error
|
|
931
|
+
// message field that's only meaningful after a failed validation. Left un-interpolated, a
|
|
932
|
+
// model composing a reply from these instructions has been observed to just echo the raw
|
|
933
|
+
// `{{errormessagephone}}` syntax back to the user verbatim instead of treating it as
|
|
934
|
+
// internal templating. `prompt` gets this via `interpolatePrompt` at render time; do the
|
|
935
|
+
// same here since `instructions` also ends up as literal text in front of the model.
|
|
936
|
+
step?.instructions ? `Current step instructions: ${interpolatePrompt(step.instructions, state)}` : "",
|
|
937
|
+
mustCallNow,
|
|
429
938
|
...stepSkills.map((skill) => `Skill "${skill.id}": ${skill.instructions}`)
|
|
430
939
|
];
|
|
431
940
|
return lines.filter(Boolean).join("\n");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runtime.js","sourceRoot":"","sources":["../../src/guided-flows/runtime.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"runtime.js","sourceRoot":"","sources":["../../src/guided-flows/runtime.ts"],"names":[],"mappings":"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"}
|
|
@@ -31,6 +31,18 @@ export type StepToolPolicy = {
|
|
|
31
31
|
denied?: string[];
|
|
32
32
|
required?: string[];
|
|
33
33
|
requiredBeforeExit?: string[];
|
|
34
|
+
/**
|
|
35
|
+
* Tool id → argument name whose value the runtime overwrites with the raw text of the
|
|
36
|
+
* CURRENT turn right before the tool runs — never whatever the model decided to pass.
|
|
37
|
+
* For "resolve this free-form answer against a dynamic list" tools (an address, a
|
|
38
|
+
* product, a time slot), trusting the model to relay the user's literal words is exactly
|
|
39
|
+
* the model-dependent step Guided Flows are meant to eliminate: a vague or unrelated
|
|
40
|
+
* reply ("confirmar" when nothing has been chosen yet) can otherwise get silently paired
|
|
41
|
+
* with a model-invented argument that happens to match something, instead of correctly
|
|
42
|
+
* failing to match anything. The tool itself still decides whether that raw text resolves
|
|
43
|
+
* to something — this only guarantees it's actually judging what the user said.
|
|
44
|
+
*/
|
|
45
|
+
verbatimTextArg?: Record<string, string>;
|
|
34
46
|
};
|
|
35
47
|
export type GuidedFlowStep<TState> = {
|
|
36
48
|
id: string;
|
|
@@ -40,6 +52,17 @@ export type GuidedFlowStep<TState> = {
|
|
|
40
52
|
}) => boolean;
|
|
41
53
|
collect?: Array<keyof TState>;
|
|
42
54
|
instructions?: string;
|
|
55
|
+
/**
|
|
56
|
+
* Literal, user-facing text for this step. When set and no tool is
|
|
57
|
+
* available for the active step this turn (`resolveStepTools(...)`
|
|
58
|
+
* resolves to an empty list), the runtime shows this verbatim instead of
|
|
59
|
+
* asking the model to compose a reply from `instructions` — the model is
|
|
60
|
+
* never even called for that part of the turn. Deterministic and
|
|
61
|
+
* model-agnostic: the step either has a fixed thing to say or it
|
|
62
|
+
* doesn't, independent of which LLM is configured. Falls back to the
|
|
63
|
+
* existing model-composed reply when omitted, so this is purely additive.
|
|
64
|
+
*/
|
|
65
|
+
prompt?: string;
|
|
43
66
|
skills?: string[];
|
|
44
67
|
tools?: StepToolPolicy;
|
|
45
68
|
exit?: (input: {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/guided-flows/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAC7B,OAAO,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACzD,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAE/D;;;;;GAKG;AACH,MAAM,MAAM,gBAAgB,GACxB,MAAM,GACN,QAAQ,GACR,kBAAkB,GAClB,kBAAkB,GAClB,sBAAsB,GACtB,WAAW,GACX,WAAW,GACX,QAAQ,CAAC;AAEb,MAAM,MAAM,eAAe,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,GAAG,QAAQ,CAAC;AAEnE,MAAM,MAAM,cAAc,CAAC,MAAM,IAAI;IACnC,GAAG,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;IACtB,KAAK,CAAC,EAAE,KAAK,CAAC,MAAM,MAAM,CAAC,CAAC;IAC5B,MAAM,EAAE,eAAe,CAAC;CACzB,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IACjC,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,OAAO,CAAC;CACpB,CAAC;AAEF,MAAM,MAAM,qBAAqB,CAAC,MAAM,IAAI;IAC1C,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,CAAC,KAAK,EAAE;QAAE,KAAK,EAAE,MAAM,CAAA;KAAE,KAAK,OAAO,CAAC;CAClD,CAAC;AAEF,MAAM,MAAM,cAAc,GAAG;IAC3B,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;IACpB,kBAAkB,CAAC,EAAE,MAAM,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/guided-flows/types.ts"],"names":[],"mappings":"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"}
|
package/dist/mcp.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp.d.ts","sourceRoot":"","sources":["../src/mcp.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,KAAK,EAAE,cAAc,EAAuB,MAAM,oBAAoB,CAAC;AAC9E,OAAO,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAExD,MAAM,MAAM,YAAY,GAAG;IACzB,IAAI,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACzC,SAAS,CAAC,OAAO,EAAE,CAAC,OAAO,EAAE,UAAU,KAAK,IAAI,GAAG,IAAI,CAAC;IACxD,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACxB,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AACpH,MAAM,MAAM,mBAAmB,GAAG;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAAE,CAAC;AACpF,MAAM,MAAM,kBAAkB,GAAG,oBAAoB,GAAG,mBAAmB,CAAC;AAE5E,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,oBAAoB,GAAG,YAAY,CAoC/E;AAED,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,mBAAmB,GAAG,YAAY,
|
|
1
|
+
{"version":3,"file":"mcp.d.ts","sourceRoot":"","sources":["../src/mcp.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AACjE,OAAO,KAAK,EAAE,cAAc,EAAuB,MAAM,oBAAoB,CAAC;AAC9E,OAAO,KAAK,EAAE,UAAU,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAExD,MAAM,MAAM,YAAY,GAAG;IACzB,IAAI,CAAC,OAAO,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACzC,SAAS,CAAC,OAAO,EAAE,CAAC,OAAO,EAAE,UAAU,KAAK,IAAI,GAAG,IAAI,CAAC;IACxD,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACxB,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAAC,GAAG,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC;AACpH,MAAM,MAAM,mBAAmB,GAAG;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;CAAE,CAAC;AACpF,MAAM,MAAM,kBAAkB,GAAG,oBAAoB,GAAG,mBAAmB,CAAC;AAE5E,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,oBAAoB,GAAG,YAAY,CAoC/E;AAED,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,mBAAmB,GAAG,YAAY,CA4C7E;AAED,MAAM,MAAM,WAAW,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,UAAU,CAAA;CAAE,CAAC;AAE3F,qBAAa,SAAS;IAGR,OAAO,CAAC,QAAQ,CAAC,SAAS;IAFtC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA8F;gBAEzF,SAAS,EAAE,YAAY;IAI9C,UAAU,CAAC,UAAU,GAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAiD,GAAG,OAAO,CAAC,SAAS,CAAC;IAM5H,SAAS,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;IAKnC,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,UAAU,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,SAAS,CAAC;QAAC,OAAO,EAAE,OAAO,CAAA;KAAE,CAAC;IAK3F,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAI5B,OAAO,CAAC,aAAa;YAcP,OAAO;YAOP,MAAM;CAGrB;AAED,MAAM,MAAM,mBAAmB,GAAG;IAAE,IAAI,EAAE,cAAc,CAAC;IAAC,OAAO,EAAE,gBAAgB,CAAA;CAAE,CAAC;AAEtF,MAAM,MAAM,aAAa,GAAG;IAC1B,MAAM,EAAE,SAAS,CAAC;IAClB,aAAa,IAAI,OAAO,CAAC,mBAAmB,EAAE,CAAC,CAAC;IAChD,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACxB,CAAC;AAEF,wBAAsB,GAAG,CAAC,MAAM,EAAE,kBAAkB,GAAG,OAAO,CAAC,aAAa,CAAC,CAa5E"}
|
package/dist/mcp.js
CHANGED
|
@@ -41,13 +41,28 @@ export function createStdioTransport(config) {
|
|
|
41
41
|
}
|
|
42
42
|
export function createHttpTransport(config) {
|
|
43
43
|
const handlers = [];
|
|
44
|
+
// MCP's "Streamable HTTP" transport (used by most remote/hosted MCP servers) is stateful: the
|
|
45
|
+
// `initialize` response carries an `Mcp-Session-Id` header that every subsequent request on
|
|
46
|
+
// this connection — including the `notifications/initialized` notification right after init —
|
|
47
|
+
// MUST echo back, or the server rejects it outright. Caught live: a real remote MCP server
|
|
48
|
+
// (brain.gasnoelia.com) returned a valid `initialize` result but then a bare HTTP 400 on the
|
|
49
|
+
// very next call, because nothing here ever captured or resent that header.
|
|
50
|
+
let sessionId;
|
|
44
51
|
return {
|
|
45
52
|
async send(message) {
|
|
46
53
|
const response = await fetch(config.url, {
|
|
47
54
|
method: "POST",
|
|
48
|
-
headers: {
|
|
55
|
+
headers: {
|
|
56
|
+
"content-type": "application/json",
|
|
57
|
+
accept: "application/json, text/event-stream",
|
|
58
|
+
...(sessionId ? { "mcp-session-id": sessionId } : {}),
|
|
59
|
+
...(config.headers ?? {})
|
|
60
|
+
},
|
|
49
61
|
body: JSON.stringify(message)
|
|
50
62
|
});
|
|
63
|
+
const responseSessionId = response.headers.get("mcp-session-id");
|
|
64
|
+
if (responseSessionId)
|
|
65
|
+
sessionId = responseSessionId;
|
|
51
66
|
if (!response.ok)
|
|
52
67
|
throw new Error(`MCP HTTP transport failed with status ${response.status}`);
|
|
53
68
|
if (response.status === 202)
|
package/dist/mcp.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp.js","sourceRoot":"","sources":["../src/mcp.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAezC,MAAM,UAAU,oBAAoB,CAAC,MAA4B;IAC/D,MAAM,KAAK,GAAG,KAAK,CAAC,MAAM,CAAC,OAAO,EAAE,MAAM,CAAC,IAAI,IAAI,EAAE,EAAE;QACrD,GAAG,EAAE,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,GAAG,CAAC,MAAM,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE;QAC9C,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,MAAM,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC3C,CAAC,CAAC;IACH,MAAM,QAAQ,GAAyC,EAAE,CAAC;IAC1D,IAAI,MAAM,GAAG,EAAE,CAAC;IAChB,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAa,EAAE,EAAE;QACxC,MAAM,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QACjC,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACjC,MAAM,GAAG,KAAK,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC;QAC3B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;YAC5B,IAAI,CAAC,OAAO;gBAAE,SAAS;YACvB,IAAI,CAAC;gBACH,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAe,CAAC;gBAClD,KAAK,MAAM,OAAO,IAAI,QAAQ;oBAAE,OAAO,CAAC,OAAO,CAAC,CAAC;YACnD,CAAC;YAAC,MAAM,CAAC;gBACP,SAAS;YACX,CAAC;QACH,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,OAAO;QACL,KAAK,CAAC,IAAI,CAAC,OAAO;YAChB,MAAM,IAAI,OAAO,CAAO,CAAC,cAAc,EAAE,aAAa,EAAE,EAAE;gBACxD,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC;YAClH,CAAC,CAAC,CAAC;QACL,CAAC;QACD,SAAS,CAAC,OAAO;YACf,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACzB,CAAC;QACD,KAAK,CAAC,KAAK;YACT,KAAK,CAAC,IAAI,EAAE,CAAC;QACf,CAAC;KACF,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,MAA2B;IAC7D,MAAM,QAAQ,GAAyC,EAAE,CAAC;IAC1D,OAAO;QACL,KAAK,CAAC,IAAI,CAAC,OAAO;YAChB,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,MAAM,CAAC,GAAG,EAAE;gBACvC,MAAM,EAAE,MAAM;gBACd,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"mcp.js","sourceRoot":"","sources":["../src/mcp.ts"],"names":[],"mappings":"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"}
|
|
@@ -10,5 +10,17 @@ export type StructuredOutputResult<T> = {
|
|
|
10
10
|
raw: string;
|
|
11
11
|
};
|
|
12
12
|
export declare function structuredOutputInstruction(schema: z.ZodTypeAny, label?: string): string;
|
|
13
|
-
|
|
13
|
+
/**
|
|
14
|
+
* `label` must match whatever `structuredOutputInstruction` told the model to name the
|
|
15
|
+
* object (both default to `"Output"`) — a model that follows that instruction literally
|
|
16
|
+
* returns `{"<label>": {...fields}}`, not the bare fields. Without unwrapping that first,
|
|
17
|
+
* `schema.parse()` sees an object whose only key (`label`) matches none of the schema's own
|
|
18
|
+
* fields, and — since Zod object schemas silently drop unrecognized keys rather than
|
|
19
|
+
* erroring — returns an empty object instead of failing loudly. That's not a validation
|
|
20
|
+
* failure a caller can catch: `ok` comes back `true` with `data` silently missing every
|
|
21
|
+
* field the model actually provided. Seen live: a Guided Flow's extraction call correctly
|
|
22
|
+
* identifying `{"group118": "Chat"}` but wrapping it as `{"StatePatch": {"group118": "Chat"}}`
|
|
23
|
+
* per instructions, and the turn silently treating the user's answer as if it said nothing.
|
|
24
|
+
*/
|
|
25
|
+
export declare function parseStructuredOutput<T>(schema: z.ZodType<T>, text: string, label?: string): StructuredOutputResult<T>;
|
|
14
26
|
//# sourceMappingURL=structured-output.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"structured-output.d.ts","sourceRoot":"","sources":["../src/structured-output.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE7C,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,CAAC,CAAC,UAAU,GAAG,UAAU,CAEtE;AAED,MAAM,MAAM,sBAAsB,CAAC,CAAC,IAChC;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,IAAI,EAAE,CAAC,CAAA;CAAE,GACrB;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,CAAC;AAE9C,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,CAAC,CAAC,UAAU,EAAE,KAAK,SAAW,GAAG,MAAM,CAG1F;AAED,wBAAgB,qBAAqB,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,GAAG,sBAAsB,CAAC,CAAC,CAAC,
|
|
1
|
+
{"version":3,"file":"structured-output.d.ts","sourceRoot":"","sources":["../src/structured-output.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE7C,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,CAAC,CAAC,UAAU,GAAG,UAAU,CAEtE;AAED,MAAM,MAAM,sBAAsB,CAAC,CAAC,IAChC;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,IAAI,EAAE,CAAC,CAAA;CAAE,GACrB;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,GAAG,EAAE,MAAM,CAAA;CAAE,CAAC;AAE9C,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,CAAC,CAAC,UAAU,EAAE,KAAK,SAAW,GAAG,MAAM,CAG1F;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,qBAAqB,CAAC,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,SAAW,GAAG,sBAAsB,CAAC,CAAC,CAAC,CAQxH"}
|
|
@@ -6,16 +6,38 @@ export function structuredOutputInstruction(schema, label = "Output") {
|
|
|
6
6
|
const jsonSchema = zodSchemaToJsonSchema(schema);
|
|
7
7
|
return `Respond with ONLY a single JSON object (no prose, no markdown code fences) named "${label}" that satisfies this JSON Schema:\n${JSON.stringify(jsonSchema)}`;
|
|
8
8
|
}
|
|
9
|
-
|
|
9
|
+
/**
|
|
10
|
+
* `label` must match whatever `structuredOutputInstruction` told the model to name the
|
|
11
|
+
* object (both default to `"Output"`) — a model that follows that instruction literally
|
|
12
|
+
* returns `{"<label>": {...fields}}`, not the bare fields. Without unwrapping that first,
|
|
13
|
+
* `schema.parse()` sees an object whose only key (`label`) matches none of the schema's own
|
|
14
|
+
* fields, and — since Zod object schemas silently drop unrecognized keys rather than
|
|
15
|
+
* erroring — returns an empty object instead of failing loudly. That's not a validation
|
|
16
|
+
* failure a caller can catch: `ok` comes back `true` with `data` silently missing every
|
|
17
|
+
* field the model actually provided. Seen live: a Guided Flow's extraction call correctly
|
|
18
|
+
* identifying `{"group118": "Chat"}` but wrapping it as `{"StatePatch": {"group118": "Chat"}}`
|
|
19
|
+
* per instructions, and the turn silently treating the user's answer as if it said nothing.
|
|
20
|
+
*/
|
|
21
|
+
export function parseStructuredOutput(schema, text, label = "Output") {
|
|
10
22
|
try {
|
|
11
23
|
const json = JSON.parse(extractJson(text));
|
|
12
|
-
const data = schema.parse(json);
|
|
24
|
+
const data = schema.parse(unwrapLabel(json, label));
|
|
13
25
|
return { ok: true, data };
|
|
14
26
|
}
|
|
15
27
|
catch (error) {
|
|
16
28
|
return { ok: false, error: error instanceof Error ? error.message : String(error), raw: text };
|
|
17
29
|
}
|
|
18
30
|
}
|
|
31
|
+
/** If `json` is a plain object with exactly one key matching `label`, returns that key's value; otherwise returns `json` unchanged (a model that ignored the "name it X" instruction and returned bare fields is left exactly as-is). */
|
|
32
|
+
function unwrapLabel(json, label) {
|
|
33
|
+
if (json && typeof json === "object" && !Array.isArray(json)) {
|
|
34
|
+
const record = json;
|
|
35
|
+
const keys = Object.keys(record);
|
|
36
|
+
if (keys.length === 1 && keys[0] === label)
|
|
37
|
+
return record[label];
|
|
38
|
+
}
|
|
39
|
+
return json;
|
|
40
|
+
}
|
|
19
41
|
function extractJson(text) {
|
|
20
42
|
const trimmed = text.trim();
|
|
21
43
|
const fenced = trimmed.match(/```(?:json)?\s*([\s\S]*?)```/i);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"structured-output.js","sourceRoot":"","sources":["../src/structured-output.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAGrD,MAAM,UAAU,qBAAqB,CAAC,MAAoB;IACxD,OAAO,eAAe,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,EAAE,CAA0B,CAAC;AAC3G,CAAC;AAMD,MAAM,UAAU,2BAA2B,CAAC,MAAoB,EAAE,KAAK,GAAG,QAAQ;IAChF,MAAM,UAAU,GAAG,qBAAqB,CAAC,MAAM,CAAC,CAAC;IACjD,OAAO,qFAAqF,KAAK,uCAAuC,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,EAAE,CAAC;AACvK,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAI,MAAoB,EAAE,IAAY;
|
|
1
|
+
{"version":3,"file":"structured-output.js","sourceRoot":"","sources":["../src/structured-output.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAGrD,MAAM,UAAU,qBAAqB,CAAC,MAAoB;IACxD,OAAO,eAAe,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,EAAE,CAA0B,CAAC;AAC3G,CAAC;AAMD,MAAM,UAAU,2BAA2B,CAAC,MAAoB,EAAE,KAAK,GAAG,QAAQ;IAChF,MAAM,UAAU,GAAG,qBAAqB,CAAC,MAAM,CAAC,CAAC;IACjD,OAAO,qFAAqF,KAAK,uCAAuC,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,EAAE,CAAC;AACvK,CAAC;AAED;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,qBAAqB,CAAI,MAAoB,EAAE,IAAY,EAAE,KAAK,GAAG,QAAQ;IAC3F,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,CAAC,CAAY,CAAC;QACtD,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC;QACpD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;IAC5B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,IAAI,EAAE,CAAC;IACjG,CAAC;AACH,CAAC;AAED,yOAAyO;AACzO,SAAS,WAAW,CAAC,IAAa,EAAE,KAAa;IAC/C,IAAI,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,CAAC;QAC7D,MAAM,MAAM,GAAG,IAA+B,CAAC;QAC/C,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACjC,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,KAAK;YAAE,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC;IACnE,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC;AAED,SAAS,WAAW,CAAC,IAAY;IAC/B,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;IAC5B,MAAM,MAAM,GAAG,OAAO,CAAC,KAAK,CAAC,+BAA+B,CAAC,CAAC;IAC9D,OAAO,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,OAAO,CAAC;AACxC,CAAC"}
|