@nexalab/agent-sdk 0.1.0 → 0.1.6
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 +94 -6
- package/dist/file-storage.d.ts +3 -0
- package/dist/file-storage.d.ts.map +1 -1
- package/dist/file-storage.js +9 -0
- package/dist/file-storage.js.map +1 -1
- package/dist/guided-flows/define-flow.d.ts +4 -0
- package/dist/guided-flows/define-flow.d.ts.map +1 -0
- package/dist/guided-flows/define-flow.js +34 -0
- package/dist/guided-flows/define-flow.js.map +1 -0
- package/dist/guided-flows/errors.d.ts +11 -0
- package/dist/guided-flows/errors.d.ts.map +1 -0
- package/dist/guided-flows/errors.js +15 -0
- package/dist/guided-flows/errors.js.map +1 -0
- package/dist/guided-flows/events.d.ts +20 -0
- package/dist/guided-flows/events.d.ts.map +1 -0
- package/dist/guided-flows/events.js +17 -0
- package/dist/guided-flows/events.js.map +1 -0
- package/dist/guided-flows/index.d.ts +10 -0
- package/dist/guided-flows/index.d.ts.map +1 -0
- package/dist/guided-flows/index.js +6 -0
- package/dist/guided-flows/index.js.map +1 -0
- package/dist/guided-flows/persistence.d.ts +32 -0
- package/dist/guided-flows/persistence.d.ts.map +1 -0
- package/dist/guided-flows/persistence.js +37 -0
- package/dist/guided-flows/persistence.js.map +1 -0
- package/dist/guided-flows/requirements.d.ts +8 -0
- package/dist/guided-flows/requirements.d.ts.map +1 -0
- package/dist/guided-flows/requirements.js +21 -0
- package/dist/guided-flows/requirements.js.map +1 -0
- package/dist/guided-flows/runtime.d.ts +74 -0
- package/dist/guided-flows/runtime.d.ts.map +1 -0
- package/dist/guided-flows/runtime.js +423 -0
- package/dist/guided-flows/runtime.js.map +1 -0
- package/dist/guided-flows/state.d.ts +30 -0
- package/dist/guided-flows/state.d.ts.map +1 -0
- package/dist/guided-flows/state.js +84 -0
- package/dist/guided-flows/state.js.map +1 -0
- package/dist/guided-flows/steps.d.ts +12 -0
- package/dist/guided-flows/steps.d.ts.map +1 -0
- package/dist/guided-flows/steps.js +37 -0
- package/dist/guided-flows/steps.js.map +1 -0
- package/dist/guided-flows/tool-policy.d.ts +16 -0
- package/dist/guided-flows/tool-policy.d.ts.map +1 -0
- package/dist/guided-flows/tool-policy.js +33 -0
- package/dist/guided-flows/tool-policy.js.map +1 -0
- package/dist/guided-flows/types.d.ts +141 -0
- package/dist/guided-flows/types.d.ts.map +1 -0
- package/dist/guided-flows/types.js +2 -0
- package/dist/guided-flows/types.js.map +1 -0
- package/dist/hooks.d.ts +52 -0
- package/dist/hooks.d.ts.map +1 -1
- package/dist/hooks.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/kernel.d.ts +23 -0
- package/dist/kernel.d.ts.map +1 -1
- package/dist/kernel.js +62 -4
- package/dist/kernel.js.map +1 -1
- package/dist/manifest.d.ts +3 -2
- package/dist/manifest.d.ts.map +1 -1
- package/dist/manifest.js +1 -0
- package/dist/manifest.js.map +1 -1
- package/dist/postgres-storage.d.ts +3 -0
- package/dist/postgres-storage.d.ts.map +1 -1
- package/dist/postgres-storage.js +9 -0
- package/dist/postgres-storage.js.map +1 -1
- package/dist/redis-storage.d.ts +3 -0
- package/dist/redis-storage.d.ts.map +1 -1
- package/dist/redis-storage.js +9 -0
- package/dist/redis-storage.js.map +1 -1
- package/dist/sessions.d.ts +5 -1
- package/dist/sessions.d.ts.map +1 -1
- package/dist/sessions.js +2 -2
- package/dist/sessions.js.map +1 -1
- package/dist/sqlite-storage.d.ts +3 -0
- package/dist/sqlite-storage.d.ts.map +1 -1
- package/dist/sqlite-storage.js +13 -1
- package/dist/sqlite-storage.js.map +1 -1
- package/dist/storage.d.ts +4 -0
- package/dist/storage.d.ts.map +1 -1
- package/dist/storage.js +8 -0
- package/dist/storage.js.map +1 -1
- package/package.json +21 -5
package/README.md
CHANGED
|
@@ -20,6 +20,26 @@ For local workspace use:
|
|
|
20
20
|
}
|
|
21
21
|
```
|
|
22
22
|
|
|
23
|
+
## Documentation
|
|
24
|
+
|
|
25
|
+
The full documentation site is built with VitePress and lives in `docs/`. The API reference under `docs/api` is generated automatically from the TypeScript sources with TypeDoc:
|
|
26
|
+
|
|
27
|
+
```bash
|
|
28
|
+
# Regenerate the API reference markdown from src/ into docs/api
|
|
29
|
+
pnpm docs:generate
|
|
30
|
+
|
|
31
|
+
# Develop the docs site (regenerates the API reference, then starts a dev server)
|
|
32
|
+
pnpm docs:dev
|
|
33
|
+
|
|
34
|
+
# Production build (regenerates the API reference, then builds the static site)
|
|
35
|
+
pnpm docs:build
|
|
36
|
+
|
|
37
|
+
# Preview the production build locally
|
|
38
|
+
pnpm docs:preview
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
`docs:build` requires a successful `docs:generate` and is also validated in CI for every push/PR. The generated `docs/api` directory is not committed — it is always produced from source.
|
|
42
|
+
|
|
23
43
|
## Quick Start
|
|
24
44
|
|
|
25
45
|
### Premium `agent({...})` Kernel API
|
|
@@ -193,8 +213,54 @@ import { createSession, loadSession } from "@nexalab/agent-sdk/sessions";
|
|
|
193
213
|
import { defineGuardrail, runInputGuardrails, runOutputGuardrails } from "@nexalab/agent-sdk/guardrails";
|
|
194
214
|
import { createHookDispatcher } from "@nexalab/agent-sdk/hooks";
|
|
195
215
|
import { zodSchemaToJsonSchema, parseStructuredOutput } from "@nexalab/agent-sdk/structured-output";
|
|
216
|
+
import { defineFlow } from "@nexalab/agent-sdk/guided-flows";
|
|
217
|
+
```
|
|
218
|
+
|
|
219
|
+
## Guided Flows
|
|
220
|
+
|
|
221
|
+
Build stateful, multi-turn conversations that must satisfy explicit requirements before completion.
|
|
222
|
+
|
|
223
|
+
Guided Flows combine natural conversation with typed state, step-specific tools, validation, branching, confirmations, and structured final outputs. Attach one or more to `agent({ flows })`; the runtime fills state from free-form messages in any order, never re-asks for what it already has, scopes tool availability per step (never beyond what the agent itself is permitted), and only returns a Zod-validated structured `output` once every requirement holds.
|
|
224
|
+
|
|
225
|
+
```ts
|
|
226
|
+
import { agent, defineFlow } from "@nexalab/agent-sdk";
|
|
227
|
+
import { z } from "zod";
|
|
228
|
+
|
|
229
|
+
const gasOrderFlow = defineFlow({
|
|
230
|
+
id: "gas-order",
|
|
231
|
+
version: 1,
|
|
232
|
+
name: "Gas order",
|
|
233
|
+
goal: "Crear un pedido de gas valido y confirmado",
|
|
234
|
+
stateSchema: z.object({
|
|
235
|
+
customerName: z.string().optional(),
|
|
236
|
+
phone: z.string().optional(),
|
|
237
|
+
confirmed: z.boolean().default(false),
|
|
238
|
+
orderId: z.string().optional()
|
|
239
|
+
}),
|
|
240
|
+
initialState: { confirmed: false },
|
|
241
|
+
requirements: [
|
|
242
|
+
{ id: "customer", description: "Customer identity known", satisfied: ({ state }) => Boolean(state.customerName && state.phone) },
|
|
243
|
+
{ id: "confirmation", description: "Order confirmed", satisfied: ({ state }) => state.confirmed === true }
|
|
244
|
+
],
|
|
245
|
+
steps: [
|
|
246
|
+
{ id: "identify_customer", collect: ["customerName", "phone"] },
|
|
247
|
+
{ id: "confirmation", collect: ["confirmed"], exit: ({ state }) => state.confirmed === true, tools: { denied: ["order.create"] } },
|
|
248
|
+
{ id: "create_order", when: ({ state }) => state.confirmed === true, tools: { required: ["order.create"] }, exit: ({ state }) => Boolean(state.orderId) }
|
|
249
|
+
],
|
|
250
|
+
protectedFields: { orderId: ["tool"] },
|
|
251
|
+
tools: { bindings: { "order.create": { applyResult: ({ result }) => ({ set: { orderId: result.output.orderId }, source: "tool" } as const) } } },
|
|
252
|
+
completion: ({ requirements, state }) => requirements.every((r) => r.satisfied) && Boolean(state.orderId),
|
|
253
|
+
outputSchema: z.object({ type: z.literal("gas_order"), orderId: z.string() }),
|
|
254
|
+
mapOutput: ({ state }) => ({ type: "gas_order" as const, orderId: state.orderId! })
|
|
255
|
+
});
|
|
256
|
+
|
|
257
|
+
const salesAgent = await agent({ name: "gas-sales-agent", model: "openai:gpt-4o-mini", flows: [gasOrderFlow], tools: [orderCreateTool] });
|
|
258
|
+
const result = await salesAgent.session("whatsapp:5214771234567").run("Quiero pedir gas");
|
|
259
|
+
console.log(result.text, result.flow, result.state, result.output);
|
|
196
260
|
```
|
|
197
261
|
|
|
262
|
+
See the full guide at [docs/guide/guided-flows.md](./docs/guide/guided-flows.md) and a complete runnable conversation at [`examples/guided-gas-order`](./examples/guided-gas-order) (`pnpm demo:guided-flow`).
|
|
263
|
+
|
|
198
264
|
## Agent Manifests + CLI
|
|
199
265
|
|
|
200
266
|
Agents can be declared as YAML and run without writing code for the identity/model/instructions surface:
|
|
@@ -505,14 +571,36 @@ Recommended production wiring:
|
|
|
505
571
|
- Use `pnpm harness` as the production readiness gate.
|
|
506
572
|
- Use `pnpm smoke` and `pnpm pack:check` before publishing.
|
|
507
573
|
|
|
508
|
-
|
|
574
|
+
```md
|
|
575
|
+
## Frontier-ready architecture
|
|
509
576
|
|
|
510
|
-
|
|
577
|
+
Nexa Agent SDK is designed with a frontier-style agent architecture: native tool calling, structured streaming, durable storage adapters, policy and approvals, evals, telemetry, replay, workflows, routing, multi-agent coordination, vector memory, queue contracts, package smoke checks, and an extensible `ModelHarness` contract.
|
|
511
578
|
|
|
512
|
-
The SDK
|
|
579
|
+
The SDK remains dependency-light. Production applications provide their own infrastructure drivers and deployment policies through adapters.
|
|
513
580
|
|
|
514
|
-
##
|
|
581
|
+
## Extensible by design
|
|
515
582
|
|
|
516
|
-
|
|
583
|
+
Nexa is built around stable contracts instead of hardcoded orchestration strategies.
|
|
517
584
|
|
|
518
|
-
|
|
585
|
+
Developers can extend or replace major runtime behaviors through interfaces for:
|
|
586
|
+
|
|
587
|
+
- model harnesses
|
|
588
|
+
- providers
|
|
589
|
+
- tools
|
|
590
|
+
- context
|
|
591
|
+
- memory
|
|
592
|
+
- storage
|
|
593
|
+
- routing
|
|
594
|
+
- telemetry
|
|
595
|
+
- evals
|
|
596
|
+
|
|
597
|
+
This makes it possible to build custom agent architectures without forking the core SDK.
|
|
598
|
+
|
|
599
|
+
## Release safety
|
|
600
|
+
|
|
601
|
+
The repository includes automated checks for package boundaries, accidental credential exposure, and npm tarball contents:
|
|
602
|
+
|
|
603
|
+
```bash
|
|
604
|
+
pnpm verify:boundaries
|
|
605
|
+
pnpm verify:secrets
|
|
606
|
+
pnpm verify:publish-safety
|
package/dist/file-storage.d.ts
CHANGED
|
@@ -4,6 +4,7 @@ import type { MemoryRecord } from "./memory.js";
|
|
|
4
4
|
import type { NexaStorage } from "./storage.js";
|
|
5
5
|
import type { AgentRunSnapshot } from "./types.js";
|
|
6
6
|
import type { WorkflowRun } from "./workflow.js";
|
|
7
|
+
import type { GuidedFlowRunState } from "./guided-flows/index.js";
|
|
7
8
|
export declare class JsonFileStorage implements NexaStorage {
|
|
8
9
|
private readonly rootDir;
|
|
9
10
|
constructor(rootDir: string);
|
|
@@ -19,6 +20,8 @@ export declare class JsonFileStorage implements NexaStorage {
|
|
|
19
20
|
listApprovals(status?: ApprovalRequest["status"]): Promise<ApprovalRequest[]>;
|
|
20
21
|
saveWorkflow(run: WorkflowRun): Promise<void>;
|
|
21
22
|
getWorkflow(id: string): Promise<WorkflowRun | undefined>;
|
|
23
|
+
saveFlowState(record: GuidedFlowRunState): Promise<void>;
|
|
24
|
+
getFlowState(sessionId: string, flowId: string): Promise<GuidedFlowRunState | undefined>;
|
|
22
25
|
private path;
|
|
23
26
|
}
|
|
24
27
|
export declare function createJsonFileStorage(rootDir: string): JsonFileStorage;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"file-storage.d.ts","sourceRoot":"","sources":["../src/file-storage.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACtD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AACnD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"file-storage.d.ts","sourceRoot":"","sources":["../src/file-storage.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACtD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,cAAc,CAAC;AAChD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AACnD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,eAAe,CAAC;AACjD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAElE,qBAAa,eAAgB,YAAW,WAAW;IACrC,OAAO,CAAC,QAAQ,CAAC,OAAO;gBAAP,OAAO,EAAE,MAAM;IAEtC,OAAO,CAAC,GAAG,EAAE,gBAAgB,GAAG,OAAO,CAAC,IAAI,CAAC;IAU7C,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,GAAG,SAAS,CAAC;IAI5D,QAAQ,IAAI,OAAO,CAAC,gBAAgB,EAAE,CAAC;IAIvC,WAAW,CAAC,KAAK,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAS/C,UAAU,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;IAIrC,UAAU,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAS/C,YAAY,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;IAIvC,YAAY,CAAC,QAAQ,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC;IAStD,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,GAAG,SAAS,CAAC;IAI7D,aAAa,CAAC,MAAM,CAAC,EAAE,eAAe,CAAC,QAAQ,CAAC,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC;IAK7E,YAAY,CAAC,GAAG,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IAI7C,WAAW,CAAC,EAAE,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,GAAG,SAAS,CAAC;IAIzD,aAAa,CAAC,MAAM,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC;IAIxD,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,GAAG,SAAS,CAAC;IAI9F,OAAO,CAAC,IAAI;CAGb;AAED,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,MAAM,GAAG,eAAe,CAEtE"}
|
package/dist/file-storage.js
CHANGED
|
@@ -63,6 +63,12 @@ export class JsonFileStorage {
|
|
|
63
63
|
async getWorkflow(id) {
|
|
64
64
|
return readJson(this.path("workflows", `${id}.json`));
|
|
65
65
|
}
|
|
66
|
+
async saveFlowState(record) {
|
|
67
|
+
await writeJson(this.path("guided-flows", flowStateFileName(record.sessionId, record.flowId)), record);
|
|
68
|
+
}
|
|
69
|
+
async getFlowState(sessionId, flowId) {
|
|
70
|
+
return readJson(this.path("guided-flows", flowStateFileName(sessionId, flowId)));
|
|
71
|
+
}
|
|
66
72
|
path(...parts) {
|
|
67
73
|
return join(this.rootDir, ...parts);
|
|
68
74
|
}
|
|
@@ -97,4 +103,7 @@ async function readJsonArray(path) {
|
|
|
97
103
|
function isMissingFile(error) {
|
|
98
104
|
return Boolean(error && typeof error === "object" && "code" in error && error.code === "ENOENT");
|
|
99
105
|
}
|
|
106
|
+
function flowStateFileName(sessionId, flowId) {
|
|
107
|
+
return `${encodeURIComponent(sessionId)}__${encodeURIComponent(flowId)}.json`;
|
|
108
|
+
}
|
|
100
109
|
//# sourceMappingURL=file-storage.js.map
|
package/dist/file-storage.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"file-storage.js","sourceRoot":"","sources":["../src/file-storage.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC9D,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"file-storage.js","sourceRoot":"","sources":["../src/file-storage.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { z } from "zod";
|
|
2
|
+
import type { GuidedFlow, GuidedFlowConfig } from "./types.js";
|
|
3
|
+
export declare function defineFlow<TStateSchema extends z.AnyZodObject, TOutputSchema extends z.ZodTypeAny>(config: GuidedFlowConfig<TStateSchema, TOutputSchema>): GuidedFlow<TStateSchema, TOutputSchema>;
|
|
4
|
+
//# sourceMappingURL=define-flow.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"define-flow.d.ts","sourceRoot":"","sources":["../../src/guided-flows/define-flow.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAE7B,OAAO,KAAK,EAAE,UAAU,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAE/D,wBAAgB,UAAU,CAAC,YAAY,SAAS,CAAC,CAAC,YAAY,EAAE,aAAa,SAAS,CAAC,CAAC,UAAU,EAChG,MAAM,EAAE,gBAAgB,CAAC,YAAY,EAAE,aAAa,CAAC,GACpD,UAAU,CAAC,YAAY,EAAE,aAAa,CAAC,CAkCzC"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { GuidedFlowConfigError } from "./errors.js";
|
|
2
|
+
export function defineFlow(config) {
|
|
3
|
+
if (!config.id)
|
|
4
|
+
throw new GuidedFlowConfigError("defineFlow: `id` is required.");
|
|
5
|
+
if (!Number.isInteger(config.version) || config.version < 1) {
|
|
6
|
+
throw new GuidedFlowConfigError(`defineFlow(${config.id}): \`version\` must be a positive integer.`);
|
|
7
|
+
}
|
|
8
|
+
const stepIds = new Set();
|
|
9
|
+
for (const step of config.steps) {
|
|
10
|
+
if (stepIds.has(step.id))
|
|
11
|
+
throw new GuidedFlowConfigError(`defineFlow(${config.id}): duplicate step id "${step.id}".`);
|
|
12
|
+
stepIds.add(step.id);
|
|
13
|
+
}
|
|
14
|
+
const requirementIds = new Set();
|
|
15
|
+
for (const requirement of config.requirements) {
|
|
16
|
+
if (requirementIds.has(requirement.id)) {
|
|
17
|
+
throw new GuidedFlowConfigError(`defineFlow(${config.id}): duplicate requirement id "${requirement.id}".`);
|
|
18
|
+
}
|
|
19
|
+
requirementIds.add(requirement.id);
|
|
20
|
+
}
|
|
21
|
+
if (config.confirmation) {
|
|
22
|
+
const field = config.confirmation.stateField;
|
|
23
|
+
const shapeKeys = Object.keys(config.stateSchema.shape);
|
|
24
|
+
if (!shapeKeys.includes(String(field))) {
|
|
25
|
+
throw new GuidedFlowConfigError(`defineFlow(${config.id}): confirmation.stateField "${String(field)}" is not part of stateSchema.`);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
const partialCheck = config.stateSchema.partial().safeParse(config.initialState);
|
|
29
|
+
if (!partialCheck.success) {
|
|
30
|
+
throw new GuidedFlowConfigError(`defineFlow(${config.id}): \`initialState\` does not match \`stateSchema\`: ${partialCheck.error.message}`);
|
|
31
|
+
}
|
|
32
|
+
return Object.freeze({ config, id: config.id, version: config.version });
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=define-flow.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"define-flow.js","sourceRoot":"","sources":["../../src/guided-flows/define-flow.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAGpD,MAAM,UAAU,UAAU,CACxB,MAAqD;IAErD,IAAI,CAAC,MAAM,CAAC,EAAE;QAAE,MAAM,IAAI,qBAAqB,CAAC,+BAA+B,CAAC,CAAC;IACjF,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,OAAO,GAAG,CAAC,EAAE,CAAC;QAC5D,MAAM,IAAI,qBAAqB,CAAC,cAAc,MAAM,CAAC,EAAE,4CAA4C,CAAC,CAAC;IACvG,CAAC;IAED,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;IAClC,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;QAChC,IAAI,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC;YAAE,MAAM,IAAI,qBAAqB,CAAC,cAAc,MAAM,CAAC,EAAE,yBAAyB,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC;QACvH,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACvB,CAAC;IAED,MAAM,cAAc,GAAG,IAAI,GAAG,EAAU,CAAC;IACzC,KAAK,MAAM,WAAW,IAAI,MAAM,CAAC,YAAY,EAAE,CAAC;QAC9C,IAAI,cAAc,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC,EAAE,CAAC;YACvC,MAAM,IAAI,qBAAqB,CAAC,cAAc,MAAM,CAAC,EAAE,gCAAgC,WAAW,CAAC,EAAE,IAAI,CAAC,CAAC;QAC7G,CAAC;QACD,cAAc,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;IACrC,CAAC;IAED,IAAI,MAAM,CAAC,YAAY,EAAE,CAAC;QACxB,MAAM,KAAK,GAAG,MAAM,CAAC,YAAY,CAAC,UAAU,CAAC;QAC7C,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;QACxD,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC;YACvC,MAAM,IAAI,qBAAqB,CAAC,cAAc,MAAM,CAAC,EAAE,+BAA+B,MAAM,CAAC,KAAK,CAAC,+BAA+B,CAAC,CAAC;QACtI,CAAC;IACH,CAAC;IAED,MAAM,YAAY,GAAG,MAAM,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;IACjF,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,CAAC;QAC1B,MAAM,IAAI,qBAAqB,CAAC,cAAc,MAAM,CAAC,EAAE,uDAAuD,YAAY,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;IAC9I,CAAC;IAED,OAAO,MAAM,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,CAAC,EAAE,EAAE,OAAO,EAAE,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;AAC3E,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export declare class GuidedFlowConfigError extends Error {
|
|
2
|
+
constructor(message: string);
|
|
3
|
+
}
|
|
4
|
+
export declare class GuidedFlowOutputValidationError extends Error {
|
|
5
|
+
readonly flowId: string;
|
|
6
|
+
constructor(message: string, input: {
|
|
7
|
+
flowId: string;
|
|
8
|
+
cause?: unknown;
|
|
9
|
+
});
|
|
10
|
+
}
|
|
11
|
+
//# sourceMappingURL=errors.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../../src/guided-flows/errors.ts"],"names":[],"mappings":"AAAA,qBAAa,qBAAsB,SAAQ,KAAK;gBAClC,OAAO,EAAE,MAAM;CAI5B;AAED,qBAAa,+BAAgC,SAAQ,KAAK;IACxD,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;gBAEZ,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,OAAO,CAAA;KAAE;CAKxE"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export class GuidedFlowConfigError extends Error {
|
|
2
|
+
constructor(message) {
|
|
3
|
+
super(message);
|
|
4
|
+
this.name = "GuidedFlowConfigError";
|
|
5
|
+
}
|
|
6
|
+
}
|
|
7
|
+
export class GuidedFlowOutputValidationError extends Error {
|
|
8
|
+
flowId;
|
|
9
|
+
constructor(message, input) {
|
|
10
|
+
super(message, input.cause !== undefined ? { cause: input.cause } : undefined);
|
|
11
|
+
this.name = "GuidedFlowOutputValidationError";
|
|
12
|
+
this.flowId = input.flowId;
|
|
13
|
+
}
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=errors.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/guided-flows/errors.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,qBAAsB,SAAQ,KAAK;IAC9C,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,CAAC,CAAC;QACf,IAAI,CAAC,IAAI,GAAG,uBAAuB,CAAC;IACtC,CAAC;CACF;AAED,MAAM,OAAO,+BAAgC,SAAQ,KAAK;IAC/C,MAAM,CAAS;IAExB,YAAY,OAAe,EAAE,KAA0C;QACrE,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;QAC/E,IAAI,CAAC,IAAI,GAAG,iCAAiC,CAAC;QAC9C,IAAI,CAAC,MAAM,GAAG,KAAK,CAAC,MAAM,CAAC;IAC7B,CAAC;CACF"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import type { EventBus } from "../event-bus.js";
|
|
2
|
+
import type { JsonObject } from "../types.js";
|
|
3
|
+
export type FlowEventType = "flow.started" | "flow.resumed" | "flow.step.entered" | "flow.step.exited" | "flow.state.updated" | "flow.requirement.satisfied" | "flow.requirement.invalidated" | "flow.tool.requested" | "flow.tool.completed" | "flow.validation.failed" | "flow.waiting_for_user" | "flow.waiting_for_approval" | "flow.completed" | "flow.cancelled" | "flow.failed";
|
|
4
|
+
/** Input to {@link publishFlowEvent}. */
|
|
5
|
+
export type PublishFlowEventInput = {
|
|
6
|
+
type: FlowEventType;
|
|
7
|
+
flowId: string;
|
|
8
|
+
sessionId: string;
|
|
9
|
+
stepId?: string;
|
|
10
|
+
taskId?: string;
|
|
11
|
+
runId?: string;
|
|
12
|
+
payload?: JsonObject;
|
|
13
|
+
};
|
|
14
|
+
/**
|
|
15
|
+
* Publishes onto the agent's existing `EventBus` (`underlying.sdk.events`),
|
|
16
|
+
* which is already wired to `telemetry` and to storage's `EventJournal` when
|
|
17
|
+
* present — no parallel event system.
|
|
18
|
+
*/
|
|
19
|
+
export declare function publishFlowEvent(events: EventBus, input: PublishFlowEventInput): Promise<void>;
|
|
20
|
+
//# sourceMappingURL=events.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../../src/guided-flows/events.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAE9C,MAAM,MAAM,aAAa,GACrB,cAAc,GACd,cAAc,GACd,mBAAmB,GACnB,kBAAkB,GAClB,oBAAoB,GACpB,4BAA4B,GAC5B,8BAA8B,GAC9B,qBAAqB,GACrB,qBAAqB,GACrB,wBAAwB,GACxB,uBAAuB,GACvB,2BAA2B,GAC3B,gBAAgB,GAChB,gBAAgB,GAChB,aAAa,CAAC;AAElB,yCAAyC;AACzC,MAAM,MAAM,qBAAqB,GAAG;IAClC,IAAI,EAAE,aAAa,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,UAAU,CAAC;CACtB,CAAC;AAEF;;;;GAIG;AACH,wBAAsB,gBAAgB,CAAC,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,qBAAqB,GAAG,OAAO,CAAC,IAAI,CAAC,CAUpG"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Publishes onto the agent's existing `EventBus` (`underlying.sdk.events`),
|
|
3
|
+
* which is already wired to `telemetry` and to storage's `EventJournal` when
|
|
4
|
+
* present — no parallel event system.
|
|
5
|
+
*/
|
|
6
|
+
export async function publishFlowEvent(events, input) {
|
|
7
|
+
await events.publish({
|
|
8
|
+
type: input.type,
|
|
9
|
+
source: "guided-flow",
|
|
10
|
+
...(input.taskId ? { taskId: input.taskId } : {}),
|
|
11
|
+
...(input.runId ? { runId: input.runId } : {}),
|
|
12
|
+
...(input.stepId ? { stepId: input.stepId } : {}),
|
|
13
|
+
visibility: input.type.includes("tool") ? "technical" : "user",
|
|
14
|
+
payload: { flowId: input.flowId, sessionId: input.sessionId, ...(input.payload ?? {}) }
|
|
15
|
+
});
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=events.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"events.js","sourceRoot":"","sources":["../../src/guided-flows/events.ts"],"names":[],"mappings":"AA+BA;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,MAAgB,EAAE,KAA4B;IACnF,MAAM,MAAM,CAAC,OAAO,CAAC;QACnB,IAAI,EAAE,KAAK,CAAC,IAAI;QAChB,MAAM,EAAE,aAAa;QACrB,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACjD,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC9C,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACjD,UAAU,EAAE,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,MAAM;QAC9D,OAAO,EAAE,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,EAAE,SAAS,EAAE,KAAK,CAAC,SAAS,EAAE,GAAG,CAAC,KAAK,CAAC,OAAO,IAAI,EAAE,CAAC,EAAE;KACxF,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
export { defineFlow } from "./define-flow.js";
|
|
2
|
+
export type { EvaluatedRequirement, FlowPatchSource, FlowStatePatch, GuidedFlow, GuidedFlowConfig, GuidedFlowConfirmation, GuidedFlowManifestDescriptor, GuidedFlowRequirement, GuidedFlowRunMeta, GuidedFlowRunResult, GuidedFlowRunState, GuidedFlowStatus, GuidedFlowStep, GuidedFlowToolConfig, GuidedFlowTriggers, StepToolPolicy, ToolResultBinding } from "./types.js";
|
|
3
|
+
export { GuidedFlowConfigError, GuidedFlowOutputValidationError } from "./errors.js";
|
|
4
|
+
export { GuidedFlowRuntime } from "./runtime.js";
|
|
5
|
+
export type { GuidedFlowRuntimeOptions, GuidedFlowTurnInput, GuidedFlowTurnOutcome } from "./runtime.js";
|
|
6
|
+
export { createInMemoryGuidedFlowStateStore, hasGuidedFlowStateStore, InMemoryGuidedFlowStateStore, resolveGuidedFlowStateStore } from "./persistence.js";
|
|
7
|
+
export type { GuidedFlowStateStore } from "./persistence.js";
|
|
8
|
+
export { publishFlowEvent } from "./events.js";
|
|
9
|
+
export type { FlowEventType, PublishFlowEventInput } from "./events.js";
|
|
10
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/guided-flows/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,YAAY,EACV,oBAAoB,EACpB,eAAe,EACf,cAAc,EACd,UAAU,EACV,gBAAgB,EAChB,sBAAsB,EACtB,4BAA4B,EAC5B,qBAAqB,EACrB,iBAAiB,EACjB,mBAAmB,EACnB,kBAAkB,EAClB,gBAAgB,EAChB,cAAc,EACd,oBAAoB,EACpB,kBAAkB,EAClB,cAAc,EACd,iBAAiB,EAClB,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,qBAAqB,EAAE,+BAA+B,EAAE,MAAM,aAAa,CAAC;AACrF,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AACjD,YAAY,EAAE,wBAAwB,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AACzG,OAAO,EACL,kCAAkC,EAClC,uBAAuB,EACvB,4BAA4B,EAC5B,2BAA2B,EAC5B,MAAM,kBAAkB,CAAC;AAC1B,YAAY,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAC7D,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC/C,YAAY,EAAE,aAAa,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export { defineFlow } from "./define-flow.js";
|
|
2
|
+
export { GuidedFlowConfigError, GuidedFlowOutputValidationError } from "./errors.js";
|
|
3
|
+
export { GuidedFlowRuntime } from "./runtime.js";
|
|
4
|
+
export { createInMemoryGuidedFlowStateStore, hasGuidedFlowStateStore, InMemoryGuidedFlowStateStore, resolveGuidedFlowStateStore } from "./persistence.js";
|
|
5
|
+
export { publishFlowEvent } from "./events.js";
|
|
6
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/guided-flows/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAoB9C,OAAO,EAAE,qBAAqB,EAAE,+BAA+B,EAAE,MAAM,aAAa,CAAC;AACrF,OAAO,EAAE,iBAAiB,EAAE,MAAM,cAAc,CAAC;AAEjD,OAAO,EACL,kCAAkC,EAClC,uBAAuB,EACvB,4BAA4B,EAC5B,2BAA2B,EAC5B,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import type { GuidedFlowRunState } from "./types.js";
|
|
2
|
+
/**
|
|
3
|
+
* Narrow, domain-specific storage contract — mirrors `workflow.ts`'s
|
|
4
|
+
* `WorkflowCheckpointStore` precedent instead of growing `NexaStorage` in
|
|
5
|
+
* `storage.ts`. A caller's `NexaStorage` (or any object) works automatically
|
|
6
|
+
* as soon as it implements these two methods (duck-typed, see
|
|
7
|
+
* `hasGuidedFlowStateStore` below) — `file-storage.ts`, `sqlite-storage.ts`,
|
|
8
|
+
* `postgres-storage.ts` and `redis-storage.ts` all implement it.
|
|
9
|
+
*/
|
|
10
|
+
export type GuidedFlowStateStore = {
|
|
11
|
+
saveFlowState(record: GuidedFlowRunState): Promise<void> | void;
|
|
12
|
+
getFlowState(sessionId: string, flowId: string): Promise<GuidedFlowRunState | undefined> | GuidedFlowRunState | undefined;
|
|
13
|
+
listFlowStates?(sessionId: string): Promise<GuidedFlowRunState[]> | GuidedFlowRunState[];
|
|
14
|
+
deleteFlowState?(sessionId: string, flowId: string): Promise<void> | void;
|
|
15
|
+
};
|
|
16
|
+
export declare class InMemoryGuidedFlowStateStore implements GuidedFlowStateStore {
|
|
17
|
+
private readonly records;
|
|
18
|
+
saveFlowState(record: GuidedFlowRunState): void;
|
|
19
|
+
getFlowState(sessionId: string, flowId: string): GuidedFlowRunState | undefined;
|
|
20
|
+
listFlowStates(sessionId: string): GuidedFlowRunState[];
|
|
21
|
+
deleteFlowState(sessionId: string, flowId: string): void;
|
|
22
|
+
}
|
|
23
|
+
export declare function createInMemoryGuidedFlowStateStore(): InMemoryGuidedFlowStateStore;
|
|
24
|
+
export declare function hasGuidedFlowStateStore(value: unknown): value is GuidedFlowStateStore;
|
|
25
|
+
/**
|
|
26
|
+
* Resolves the effective store for an agent: prefers a store duck-typed off
|
|
27
|
+
* `config.storage` (so durable storage "just works" once configured), and
|
|
28
|
+
* otherwise falls back to a private in-memory store — Guided Flows always
|
|
29
|
+
* work with zero storage configuration.
|
|
30
|
+
*/
|
|
31
|
+
export declare function resolveGuidedFlowStateStore(storage: unknown): GuidedFlowStateStore;
|
|
32
|
+
//# sourceMappingURL=persistence.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"persistence.d.ts","sourceRoot":"","sources":["../../src/guided-flows/persistence.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AAErD;;;;;;;GAOG;AACH,MAAM,MAAM,oBAAoB,GAAG;IACjC,aAAa,CAAC,MAAM,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;IAChE,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,GAAG,SAAS,CAAC,GAAG,kBAAkB,GAAG,SAAS,CAAC;IAC1H,cAAc,CAAC,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,EAAE,CAAC,GAAG,kBAAkB,EAAE,CAAC;IACzF,eAAe,CAAC,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC;CAC3E,CAAC;AAEF,qBAAa,4BAA6B,YAAW,oBAAoB;IACvE,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAyC;IAEjE,aAAa,CAAC,MAAM,EAAE,kBAAkB,GAAG,IAAI;IAI/C,YAAY,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,kBAAkB,GAAG,SAAS;IAK/E,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,kBAAkB,EAAE;IAIvD,eAAe,CAAC,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI;CAGzD;AAED,wBAAgB,kCAAkC,IAAI,4BAA4B,CAEjF;AAMD,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,oBAAoB,CAErF;AAED;;;;;GAKG;AACH,wBAAgB,2BAA2B,CAAC,OAAO,EAAE,OAAO,GAAG,oBAAoB,CAGlF"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
export class InMemoryGuidedFlowStateStore {
|
|
2
|
+
records = new Map();
|
|
3
|
+
saveFlowState(record) {
|
|
4
|
+
this.records.set(recordKey(record.sessionId, record.flowId), structuredClone(record));
|
|
5
|
+
}
|
|
6
|
+
getFlowState(sessionId, flowId) {
|
|
7
|
+
const record = this.records.get(recordKey(sessionId, flowId));
|
|
8
|
+
return record ? structuredClone(record) : undefined;
|
|
9
|
+
}
|
|
10
|
+
listFlowStates(sessionId) {
|
|
11
|
+
return [...this.records.values()].filter((record) => record.sessionId === sessionId).map((record) => structuredClone(record));
|
|
12
|
+
}
|
|
13
|
+
deleteFlowState(sessionId, flowId) {
|
|
14
|
+
this.records.delete(recordKey(sessionId, flowId));
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
export function createInMemoryGuidedFlowStateStore() {
|
|
18
|
+
return new InMemoryGuidedFlowStateStore();
|
|
19
|
+
}
|
|
20
|
+
function recordKey(sessionId, flowId) {
|
|
21
|
+
return `${sessionId}::${flowId}`;
|
|
22
|
+
}
|
|
23
|
+
export function hasGuidedFlowStateStore(value) {
|
|
24
|
+
return Boolean(value && typeof value === "object" && "saveFlowState" in value && "getFlowState" in value);
|
|
25
|
+
}
|
|
26
|
+
/**
|
|
27
|
+
* Resolves the effective store for an agent: prefers a store duck-typed off
|
|
28
|
+
* `config.storage` (so durable storage "just works" once configured), and
|
|
29
|
+
* otherwise falls back to a private in-memory store — Guided Flows always
|
|
30
|
+
* work with zero storage configuration.
|
|
31
|
+
*/
|
|
32
|
+
export function resolveGuidedFlowStateStore(storage) {
|
|
33
|
+
if (hasGuidedFlowStateStore(storage))
|
|
34
|
+
return storage;
|
|
35
|
+
return createInMemoryGuidedFlowStateStore();
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=persistence.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"persistence.js","sourceRoot":"","sources":["../../src/guided-flows/persistence.ts"],"names":[],"mappings":"AAiBA,MAAM,OAAO,4BAA4B;IACtB,OAAO,GAAG,IAAI,GAAG,EAA8B,CAAC;IAEjE,aAAa,CAAC,MAA0B;QACtC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,MAAM,CAAC,EAAE,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC;IACxF,CAAC;IAED,YAAY,CAAC,SAAiB,EAAE,MAAc;QAC5C,MAAM,MAAM,GAAG,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,SAAS,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC;QAC9D,OAAO,MAAM,CAAC,CAAC,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;IACtD,CAAC;IAED,cAAc,CAAC,SAAiB;QAC9B,OAAO,CAAC,GAAG,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,CAAC;IAChI,CAAC;IAED,eAAe,CAAC,SAAiB,EAAE,MAAc;QAC/C,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,SAAS,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC,CAAC;IACpD,CAAC;CACF;AAED,MAAM,UAAU,kCAAkC;IAChD,OAAO,IAAI,4BAA4B,EAAE,CAAC;AAC5C,CAAC;AAED,SAAS,SAAS,CAAC,SAAiB,EAAE,MAAc;IAClD,OAAO,GAAG,SAAS,KAAK,MAAM,EAAE,CAAC;AACnC,CAAC;AAED,MAAM,UAAU,uBAAuB,CAAC,KAAc;IACpD,OAAO,OAAO,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,eAAe,IAAI,KAAK,IAAI,cAAc,IAAI,KAAK,CAAC,CAAC;AAC5G,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,2BAA2B,CAAC,OAAgB;IAC1D,IAAI,uBAAuB,CAAC,OAAO,CAAC;QAAE,OAAO,OAAO,CAAC;IACrD,OAAO,kCAAkC,EAAE,CAAC;AAC9C,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import type { z } from "zod";
|
|
2
|
+
import type { EvaluatedRequirement, GuidedFlowConfig } from "./types.js";
|
|
3
|
+
export declare function evaluateRequirements<TStateSchema extends z.AnyZodObject, TOutputSchema extends z.ZodTypeAny>(config: GuidedFlowConfig<TStateSchema, TOutputSchema>, state: z.infer<TStateSchema>): EvaluatedRequirement[];
|
|
4
|
+
export declare function diffRequirements(previous: EvaluatedRequirement[], next: EvaluatedRequirement[]): {
|
|
5
|
+
newlySatisfied: string[];
|
|
6
|
+
newlyInvalidated: string[];
|
|
7
|
+
};
|
|
8
|
+
//# sourceMappingURL=requirements.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"requirements.d.ts","sourceRoot":"","sources":["../../src/guided-flows/requirements.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAC7B,OAAO,KAAK,EAAE,oBAAoB,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAEzE,wBAAgB,oBAAoB,CAAC,YAAY,SAAS,CAAC,CAAC,YAAY,EAAE,aAAa,SAAS,CAAC,CAAC,UAAU,EAC1G,MAAM,EAAE,gBAAgB,CAAC,YAAY,EAAE,aAAa,CAAC,EACrD,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,YAAY,CAAC,GAC3B,oBAAoB,EAAE,CAMxB;AAED,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,oBAAoB,EAAE,EAAE,IAAI,EAAE,oBAAoB,EAAE,GAAG;IAChG,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,gBAAgB,EAAE,MAAM,EAAE,CAAC;CAC5B,CAUA"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
export function evaluateRequirements(config, state) {
|
|
2
|
+
return config.requirements.map((requirement) => ({
|
|
3
|
+
id: requirement.id,
|
|
4
|
+
description: requirement.description,
|
|
5
|
+
satisfied: Boolean(requirement.satisfied({ state }))
|
|
6
|
+
}));
|
|
7
|
+
}
|
|
8
|
+
export function diffRequirements(previous, next) {
|
|
9
|
+
const previousById = new Map(previous.map((requirement) => [requirement.id, requirement.satisfied]));
|
|
10
|
+
const newlySatisfied = [];
|
|
11
|
+
const newlyInvalidated = [];
|
|
12
|
+
for (const requirement of next) {
|
|
13
|
+
const before = previousById.get(requirement.id);
|
|
14
|
+
if (requirement.satisfied && before !== true)
|
|
15
|
+
newlySatisfied.push(requirement.id);
|
|
16
|
+
if (!requirement.satisfied && before === true)
|
|
17
|
+
newlyInvalidated.push(requirement.id);
|
|
18
|
+
}
|
|
19
|
+
return { newlySatisfied, newlyInvalidated };
|
|
20
|
+
}
|
|
21
|
+
//# sourceMappingURL=requirements.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"requirements.js","sourceRoot":"","sources":["../../src/guided-flows/requirements.ts"],"names":[],"mappings":"AAGA,MAAM,UAAU,oBAAoB,CAClC,MAAqD,EACrD,KAA4B;IAE5B,OAAO,MAAM,CAAC,YAAY,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC;QAC/C,EAAE,EAAE,WAAW,CAAC,EAAE;QAClB,WAAW,EAAE,WAAW,CAAC,WAAW;QACpC,SAAS,EAAE,OAAO,CAAC,WAAW,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC;KACrD,CAAC,CAAC,CAAC;AACN,CAAC;AAED,MAAM,UAAU,gBAAgB,CAAC,QAAgC,EAAE,IAA4B;IAI7F,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,WAAW,CAAC,EAAE,EAAE,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;IACrG,MAAM,cAAc,GAAa,EAAE,CAAC;IACpC,MAAM,gBAAgB,GAAa,EAAE,CAAC;IACtC,KAAK,MAAM,WAAW,IAAI,IAAI,EAAE,CAAC;QAC/B,MAAM,MAAM,GAAG,YAAY,CAAC,GAAG,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;QAChD,IAAI,WAAW,CAAC,SAAS,IAAI,MAAM,KAAK,IAAI;YAAE,cAAc,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;QAClF,IAAI,CAAC,WAAW,CAAC,SAAS,IAAI,MAAM,KAAK,IAAI;YAAE,gBAAgB,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;IACvF,CAAC;IACD,OAAO,EAAE,cAAc,EAAE,gBAAgB,EAAE,CAAC;AAC9C,CAAC"}
|
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import type { ChatMessage, OpenAICompatibleChatClient } from "../openai-compatible.js";
|
|
2
|
+
import type { AgentToolRegistration } from "../openai-agent.js";
|
|
3
|
+
import type { ModelHarness } from "../model-harness.js";
|
|
4
|
+
import type { HookDispatcher } from "../hooks.js";
|
|
5
|
+
import type { EventBus } from "../event-bus.js";
|
|
6
|
+
import type { SkillDefinition } from "../skills.js";
|
|
7
|
+
import { type TenantContext } from "../tenancy.js";
|
|
8
|
+
import type { JsonObject } from "../types.js";
|
|
9
|
+
import type { GuidedFlowStateStore } from "./persistence.js";
|
|
10
|
+
import type { FlowStatePatch, GuidedFlow, GuidedFlowRunMeta, GuidedFlowRunState } from "./types.js";
|
|
11
|
+
export type GuidedFlowRuntimeOptions = {
|
|
12
|
+
flows: GuidedFlow<any, any>[];
|
|
13
|
+
client: OpenAICompatibleChatClient;
|
|
14
|
+
providerId: string;
|
|
15
|
+
model: string;
|
|
16
|
+
toolRegistrations: AgentToolRegistration[];
|
|
17
|
+
skills: SkillDefinition[];
|
|
18
|
+
hooks: HookDispatcher;
|
|
19
|
+
events: EventBus;
|
|
20
|
+
harness?: ModelHarness;
|
|
21
|
+
store: GuidedFlowStateStore;
|
|
22
|
+
flowSelector?: (input: {
|
|
23
|
+
text: string;
|
|
24
|
+
flows: GuidedFlow<any, any>[];
|
|
25
|
+
}) => string | undefined | Promise<string | undefined>;
|
|
26
|
+
};
|
|
27
|
+
export type GuidedFlowTurnInput = {
|
|
28
|
+
text: string;
|
|
29
|
+
messages: ChatMessage[];
|
|
30
|
+
sessionId: string;
|
|
31
|
+
tenant?: TenantContext;
|
|
32
|
+
explicitFlow?: string;
|
|
33
|
+
};
|
|
34
|
+
export type GuidedFlowTurnOutcome = {
|
|
35
|
+
handled: false;
|
|
36
|
+
} | {
|
|
37
|
+
handled: true;
|
|
38
|
+
text: string;
|
|
39
|
+
output?: unknown;
|
|
40
|
+
state: JsonObject;
|
|
41
|
+
flow: GuidedFlowRunMeta;
|
|
42
|
+
};
|
|
43
|
+
/**
|
|
44
|
+
* Drives Guided Flow turns. Constructed once per agent (by `kernel.ts` when
|
|
45
|
+
* `config.flows?.length`) and never streamed — `runStream()` in
|
|
46
|
+
* `openai-agent.ts` is untouched; internally this still uses the same
|
|
47
|
+
* `runNativeToolLoop`/`ModelHarness` contracts, just called directly rather
|
|
48
|
+
* than through `agent.run()`'s normal path.
|
|
49
|
+
*/
|
|
50
|
+
export declare class GuidedFlowRuntime {
|
|
51
|
+
private readonly options;
|
|
52
|
+
constructor(options: GuidedFlowRuntimeOptions);
|
|
53
|
+
private flowById;
|
|
54
|
+
private requireFlow;
|
|
55
|
+
private soleFlow;
|
|
56
|
+
private key;
|
|
57
|
+
selectFlow(input: {
|
|
58
|
+
text: string;
|
|
59
|
+
sessionId: string;
|
|
60
|
+
tenant?: TenantContext;
|
|
61
|
+
explicitFlow?: string;
|
|
62
|
+
}): Promise<GuidedFlow | undefined>;
|
|
63
|
+
runTurn(input: GuidedFlowTurnInput): Promise<GuidedFlowTurnOutcome>;
|
|
64
|
+
private driveFlow;
|
|
65
|
+
private applyPatch;
|
|
66
|
+
private announceStepChange;
|
|
67
|
+
private forwardNativeEvent;
|
|
68
|
+
cancel(sessionId: string, flowId?: string, tenant?: TenantContext): Promise<void>;
|
|
69
|
+
resume(sessionId: string, flowId?: string, tenant?: TenantContext): Promise<GuidedFlowRunState | undefined>;
|
|
70
|
+
reset(sessionId: string, flowId?: string, tenant?: TenantContext): Promise<void>;
|
|
71
|
+
patchState(sessionId: string, flowId: string, patch: FlowStatePatch<Record<string, unknown>>, tenant?: TenantContext): Promise<GuidedFlowRunState>;
|
|
72
|
+
getState(sessionId: string, flowId?: string, tenant?: TenantContext): Promise<GuidedFlowRunState | undefined>;
|
|
73
|
+
}
|
|
74
|
+
//# sourceMappingURL=runtime.d.ts.map
|
|
@@ -0,0 +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;AAQ9C,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;CACvB,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;AAWlG;;;;;;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;IAIL,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;YA+MT,UAAU;YAyCV,kBAAkB;IAYhC,OAAO,CAAC,kBAAkB;IAgBpB,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"}
|