@db-lyon/flowkit 0.10.0 → 0.11.1
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 +37 -0
- package/dist/config/index.d.ts +2 -2
- package/dist/config/index.d.ts.map +1 -1
- package/dist/config/index.js +1 -1
- package/dist/config/index.js.map +1 -1
- package/dist/config/schema.d.ts +395 -0
- package/dist/config/schema.d.ts.map +1 -1
- package/dist/config/schema.js +62 -0
- package/dist/config/schema.js.map +1 -1
- package/dist/flow/runner.d.ts +18 -1
- package/dist/flow/runner.d.ts.map +1 -1
- package/dist/flow/runner.js +77 -2
- package/dist/flow/runner.js.map +1 -1
- package/dist/index.d.ts +13 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +7 -1
- package/dist/index.js.map +1 -1
- package/dist/task/agent-prompt-task.d.ts +26 -7
- package/dist/task/agent-prompt-task.d.ts.map +1 -1
- package/dist/task/agent-prompt-task.js +53 -19
- package/dist/task/agent-prompt-task.js.map +1 -1
- package/dist/task/agent-task.d.ts +106 -0
- package/dist/task/agent-task.d.ts.map +1 -0
- package/dist/task/agent-task.js +280 -0
- package/dist/task/agent-task.js.map +1 -0
- package/dist/task/base-task.d.ts +31 -0
- package/dist/task/base-task.d.ts.map +1 -1
- package/dist/task/base-task.js.map +1 -1
- package/dist/task/concurrency.d.ts +9 -0
- package/dist/task/concurrency.d.ts.map +1 -0
- package/dist/task/concurrency.js +24 -0
- package/dist/task/concurrency.js.map +1 -0
- package/dist/task/index.d.ts +11 -1
- package/dist/task/index.d.ts.map +1 -1
- package/dist/task/index.js +6 -0
- package/dist/task/index.js.map +1 -1
- package/dist/task/json-schema.d.ts +37 -0
- package/dist/task/json-schema.d.ts.map +1 -0
- package/dist/task/json-schema.js +223 -0
- package/dist/task/json-schema.js.map +1 -0
- package/dist/task/llm-provider.d.ts +81 -8
- package/dist/task/llm-provider.d.ts.map +1 -1
- package/dist/task/llm-provider.js +9 -3
- package/dist/task/llm-provider.js.map +1 -1
- package/dist/task/llm-runner.d.ts +72 -0
- package/dist/task/llm-runner.d.ts.map +1 -0
- package/dist/task/llm-runner.js +213 -0
- package/dist/task/llm-runner.js.map +1 -0
- package/dist/task/redact.d.ts +22 -0
- package/dist/task/redact.d.ts.map +1 -0
- package/dist/task/redact.js +47 -0
- package/dist/task/redact.js.map +1 -0
- package/dist/task/token-ledger.d.ts +33 -0
- package/dist/task/token-ledger.d.ts.map +1 -0
- package/dist/task/token-ledger.js +25 -0
- package/dist/task/token-ledger.js.map +1 -0
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -163,6 +163,42 @@ import { ShellTask } from '@db-lyon/flowkit';
|
|
|
163
163
|
registry.register('shell', ShellTask as any);
|
|
164
164
|
```
|
|
165
165
|
|
|
166
|
+
### AI agents
|
|
167
|
+
|
|
168
|
+
Run LLM calls as steps. Flowkit has **no SDK dependencies** — you wire a
|
|
169
|
+
model-agnostic `LLMProvider` onto the task context as `ctx.llm`, and two tasks
|
|
170
|
+
consume it:
|
|
171
|
+
|
|
172
|
+
- `agent_prompt` (`AgentPromptTask`) — single-shot prompt, with optional
|
|
173
|
+
JSON-Schema structured output (validated, with a repair re-prompt).
|
|
174
|
+
- `agent` (`AgentTask`) — a tool-calling loop. Tools reference flowkit tasks,
|
|
175
|
+
flows, or other agents (or context handlers), gated by an allowlist and
|
|
176
|
+
per-tool argument validation. Multiple tool calls in a turn (including
|
|
177
|
+
parallel sub-agents) run concurrently under a cap.
|
|
178
|
+
|
|
179
|
+
Reusable agents live under an `agents:` root key and run as flow steps or as
|
|
180
|
+
other agents' tools, with mandatory budgets (`maxIterations`, `tokenBudget`,
|
|
181
|
+
`maxAgentDepth`). Iteration and concurrency live in the agent runtime, so a flow
|
|
182
|
+
stays a sequential spine with no `loop:` or parallel-step primitive.
|
|
183
|
+
|
|
184
|
+
```yaml
|
|
185
|
+
tasks:
|
|
186
|
+
extract:
|
|
187
|
+
class_path: agent_prompt
|
|
188
|
+
options:
|
|
189
|
+
prompt: "Pull the ticket fields from:\n${steps.1.data.text}"
|
|
190
|
+
schema:
|
|
191
|
+
type: object
|
|
192
|
+
required: [title, priority]
|
|
193
|
+
properties:
|
|
194
|
+
title: { type: string }
|
|
195
|
+
priority: { type: string, enum: [low, medium, high] }
|
|
196
|
+
```
|
|
197
|
+
|
|
198
|
+
Every call is hardened by a shared core: per-call `timeout` (with provider
|
|
199
|
+
abort), `retries` with exponential backoff, structured-output validation +
|
|
200
|
+
repair, and output-size caps. See [docs/ai-agents.md](docs/ai-agents.md).
|
|
201
|
+
|
|
166
202
|
### Nested flows
|
|
167
203
|
|
|
168
204
|
A step can reference another flow instead of a task:
|
|
@@ -330,6 +366,7 @@ import { topologicalSort } from '@db-lyon/flowkit/dag';
|
|
|
330
366
|
|
|
331
367
|
- [Getting started](docs/getting-started.md) — step-by-step setup guide
|
|
332
368
|
- [Custom tasks](docs/custom-tasks.md) — writing and registering tasks
|
|
369
|
+
- [AI agents](docs/ai-agents.md) — LLM prompts, structured output, tool-calling agents
|
|
333
370
|
- [Configuration](docs/configuration.md) — YAML schema, layering, deep merge
|
|
334
371
|
- [API reference](docs/api-reference.md) — full type and function reference
|
|
335
372
|
|
package/dist/config/index.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
export { deepMerge } from './deep-merge.js';
|
|
2
|
-
export { TaskOptionsSchema, TaskDefinitionSchema, FlowStepSchema, FlowDefinitionSchema, EngineConfigSchema, } from './schema.js';
|
|
3
|
-
export type { TaskOptions, TaskDefinition, FlowStep, FlowDefinition, EngineConfig, } from './schema.js';
|
|
2
|
+
export { TaskOptionsSchema, TaskDefinitionSchema, FlowStepSchema, FlowDefinitionSchema, AgentToolSchema, AgentBudgetSchema, AgentDefinitionSchema, EngineConfigSchema, } from './schema.js';
|
|
3
|
+
export type { TaskOptions, TaskDefinition, FlowStep, FlowDefinition, AgentTool, AgentBudget, AgentDefinition, EngineConfig, } from './schema.js';
|
|
4
4
|
export { loadConfig, loadRawYaml, findConfigFile } from './loader.js';
|
|
5
5
|
export type { LoadConfigOptions, LoadedConfig } from './loader.js';
|
|
6
6
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5C,OAAO,EACL,iBAAiB,EACjB,oBAAoB,EACpB,cAAc,EACd,oBAAoB,EACpB,kBAAkB,GACnB,MAAM,aAAa,CAAC;AAErB,YAAY,EACV,WAAW,EACX,cAAc,EACd,QAAQ,EACR,cAAc,EACd,YAAY,GACb,MAAM,aAAa,CAAC;AAErB,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AACtE,YAAY,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5C,OAAO,EACL,iBAAiB,EACjB,oBAAoB,EACpB,cAAc,EACd,oBAAoB,EACpB,eAAe,EACf,iBAAiB,EACjB,qBAAqB,EACrB,kBAAkB,GACnB,MAAM,aAAa,CAAC;AAErB,YAAY,EACV,WAAW,EACX,cAAc,EACd,QAAQ,EACR,cAAc,EACd,SAAS,EACT,WAAW,EACX,eAAe,EACf,YAAY,GACb,MAAM,aAAa,CAAC;AAErB,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AACtE,YAAY,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC"}
|
package/dist/config/index.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
1
|
export { deepMerge } from './deep-merge.js';
|
|
2
|
-
export { TaskOptionsSchema, TaskDefinitionSchema, FlowStepSchema, FlowDefinitionSchema, EngineConfigSchema, } from './schema.js';
|
|
2
|
+
export { TaskOptionsSchema, TaskDefinitionSchema, FlowStepSchema, FlowDefinitionSchema, AgentToolSchema, AgentBudgetSchema, AgentDefinitionSchema, EngineConfigSchema, } from './schema.js';
|
|
3
3
|
export { loadConfig, loadRawYaml, findConfigFile } from './loader.js';
|
|
4
4
|
//# sourceMappingURL=index.js.map
|
package/dist/config/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5C,OAAO,EACL,iBAAiB,EACjB,oBAAoB,EACpB,cAAc,EACd,oBAAoB,EACpB,kBAAkB,GACnB,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAE5C,OAAO,EACL,iBAAiB,EACjB,oBAAoB,EACpB,cAAc,EACd,oBAAoB,EACpB,eAAe,EACf,iBAAiB,EACjB,qBAAqB,EACrB,kBAAkB,GACnB,MAAM,aAAa,CAAC;AAarB,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC"}
|
package/dist/config/schema.d.ts
CHANGED
|
@@ -485,6 +485,213 @@ export declare const FlowDefinitionSchema: z.ZodObject<{
|
|
|
485
485
|
}[] | undefined;
|
|
486
486
|
rollback_on_failure?: boolean | undefined;
|
|
487
487
|
}>;
|
|
488
|
+
/**
|
|
489
|
+
* A tool an agent may call. References an existing flowkit primitive — a `task`,
|
|
490
|
+
* a `flow`, or another `agent` — so tool dispatch reuses the registry, options,
|
|
491
|
+
* and `${...}` reference machinery rather than inventing a parallel concept.
|
|
492
|
+
* `name` (defaulted from the reference) is what the model sees.
|
|
493
|
+
*/
|
|
494
|
+
export declare const AgentToolSchema: z.ZodEffects<z.ZodObject<{
|
|
495
|
+
name: z.ZodOptional<z.ZodString>;
|
|
496
|
+
task: z.ZodOptional<z.ZodString>;
|
|
497
|
+
flow: z.ZodOptional<z.ZodString>;
|
|
498
|
+
agent: z.ZodOptional<z.ZodString>;
|
|
499
|
+
description: z.ZodOptional<z.ZodString>;
|
|
500
|
+
parameters: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
501
|
+
}, "strip", z.ZodTypeAny, {
|
|
502
|
+
description?: string | undefined;
|
|
503
|
+
task?: string | undefined;
|
|
504
|
+
flow?: string | undefined;
|
|
505
|
+
name?: string | undefined;
|
|
506
|
+
agent?: string | undefined;
|
|
507
|
+
parameters?: Record<string, unknown> | undefined;
|
|
508
|
+
}, {
|
|
509
|
+
description?: string | undefined;
|
|
510
|
+
task?: string | undefined;
|
|
511
|
+
flow?: string | undefined;
|
|
512
|
+
name?: string | undefined;
|
|
513
|
+
agent?: string | undefined;
|
|
514
|
+
parameters?: Record<string, unknown> | undefined;
|
|
515
|
+
}>, {
|
|
516
|
+
description?: string | undefined;
|
|
517
|
+
task?: string | undefined;
|
|
518
|
+
flow?: string | undefined;
|
|
519
|
+
name?: string | undefined;
|
|
520
|
+
agent?: string | undefined;
|
|
521
|
+
parameters?: Record<string, unknown> | undefined;
|
|
522
|
+
}, {
|
|
523
|
+
description?: string | undefined;
|
|
524
|
+
task?: string | undefined;
|
|
525
|
+
flow?: string | undefined;
|
|
526
|
+
name?: string | undefined;
|
|
527
|
+
agent?: string | undefined;
|
|
528
|
+
parameters?: Record<string, unknown> | undefined;
|
|
529
|
+
}>;
|
|
530
|
+
/**
|
|
531
|
+
* Hard bounds on an agent run. A tool-using agent with no caps is unbounded
|
|
532
|
+
* spend, so a budget is the intended companion to every agent definition.
|
|
533
|
+
*/
|
|
534
|
+
export declare const AgentBudgetSchema: z.ZodObject<{
|
|
535
|
+
/** Max model turns. */
|
|
536
|
+
maxIterations: z.ZodOptional<z.ZodNumber>;
|
|
537
|
+
/** Aggregate input+output token cap across the whole loop (incl. sub-agents). */
|
|
538
|
+
tokenBudget: z.ZodOptional<z.ZodNumber>;
|
|
539
|
+
/** Cap on a single tool result's serialized size, in chars. */
|
|
540
|
+
maxToolResultChars: z.ZodOptional<z.ZodNumber>;
|
|
541
|
+
/** Cap on a sub-agent result's serialized size, in chars (0 = unbounded). */
|
|
542
|
+
maxAgentResultChars: z.ZodOptional<z.ZodNumber>;
|
|
543
|
+
/** Max tool calls run concurrently within a turn. */
|
|
544
|
+
maxConcurrency: z.ZodOptional<z.ZodNumber>;
|
|
545
|
+
/** Max depth of agent-calls-agent recursion. */
|
|
546
|
+
maxAgentDepth: z.ZodOptional<z.ZodNumber>;
|
|
547
|
+
}, "strip", z.ZodTypeAny, {
|
|
548
|
+
maxIterations?: number | undefined;
|
|
549
|
+
tokenBudget?: number | undefined;
|
|
550
|
+
maxToolResultChars?: number | undefined;
|
|
551
|
+
maxAgentResultChars?: number | undefined;
|
|
552
|
+
maxConcurrency?: number | undefined;
|
|
553
|
+
maxAgentDepth?: number | undefined;
|
|
554
|
+
}, {
|
|
555
|
+
maxIterations?: number | undefined;
|
|
556
|
+
tokenBudget?: number | undefined;
|
|
557
|
+
maxToolResultChars?: number | undefined;
|
|
558
|
+
maxAgentResultChars?: number | undefined;
|
|
559
|
+
maxConcurrency?: number | undefined;
|
|
560
|
+
maxAgentDepth?: number | undefined;
|
|
561
|
+
}>;
|
|
562
|
+
export declare const AgentDefinitionSchema: z.ZodObject<{
|
|
563
|
+
description: z.ZodOptional<z.ZodString>;
|
|
564
|
+
/** Model identifier — provider-specific. */
|
|
565
|
+
model: z.ZodOptional<z.ZodString>;
|
|
566
|
+
/** System prompt / rules. */
|
|
567
|
+
system: z.ZodOptional<z.ZodString>;
|
|
568
|
+
/** Tools the agent may call (its allowlist). */
|
|
569
|
+
tools: z.ZodDefault<z.ZodArray<z.ZodEffects<z.ZodObject<{
|
|
570
|
+
name: z.ZodOptional<z.ZodString>;
|
|
571
|
+
task: z.ZodOptional<z.ZodString>;
|
|
572
|
+
flow: z.ZodOptional<z.ZodString>;
|
|
573
|
+
agent: z.ZodOptional<z.ZodString>;
|
|
574
|
+
description: z.ZodOptional<z.ZodString>;
|
|
575
|
+
parameters: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
576
|
+
}, "strip", z.ZodTypeAny, {
|
|
577
|
+
description?: string | undefined;
|
|
578
|
+
task?: string | undefined;
|
|
579
|
+
flow?: string | undefined;
|
|
580
|
+
name?: string | undefined;
|
|
581
|
+
agent?: string | undefined;
|
|
582
|
+
parameters?: Record<string, unknown> | undefined;
|
|
583
|
+
}, {
|
|
584
|
+
description?: string | undefined;
|
|
585
|
+
task?: string | undefined;
|
|
586
|
+
flow?: string | undefined;
|
|
587
|
+
name?: string | undefined;
|
|
588
|
+
agent?: string | undefined;
|
|
589
|
+
parameters?: Record<string, unknown> | undefined;
|
|
590
|
+
}>, {
|
|
591
|
+
description?: string | undefined;
|
|
592
|
+
task?: string | undefined;
|
|
593
|
+
flow?: string | undefined;
|
|
594
|
+
name?: string | undefined;
|
|
595
|
+
agent?: string | undefined;
|
|
596
|
+
parameters?: Record<string, unknown> | undefined;
|
|
597
|
+
}, {
|
|
598
|
+
description?: string | undefined;
|
|
599
|
+
task?: string | undefined;
|
|
600
|
+
flow?: string | undefined;
|
|
601
|
+
name?: string | undefined;
|
|
602
|
+
agent?: string | undefined;
|
|
603
|
+
parameters?: Record<string, unknown> | undefined;
|
|
604
|
+
}>, "many">>;
|
|
605
|
+
/** JSON Schema for the agent's final answer. */
|
|
606
|
+
schema: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
607
|
+
/** Hard run bounds. */
|
|
608
|
+
budget: z.ZodOptional<z.ZodObject<{
|
|
609
|
+
/** Max model turns. */
|
|
610
|
+
maxIterations: z.ZodOptional<z.ZodNumber>;
|
|
611
|
+
/** Aggregate input+output token cap across the whole loop (incl. sub-agents). */
|
|
612
|
+
tokenBudget: z.ZodOptional<z.ZodNumber>;
|
|
613
|
+
/** Cap on a single tool result's serialized size, in chars. */
|
|
614
|
+
maxToolResultChars: z.ZodOptional<z.ZodNumber>;
|
|
615
|
+
/** Cap on a sub-agent result's serialized size, in chars (0 = unbounded). */
|
|
616
|
+
maxAgentResultChars: z.ZodOptional<z.ZodNumber>;
|
|
617
|
+
/** Max tool calls run concurrently within a turn. */
|
|
618
|
+
maxConcurrency: z.ZodOptional<z.ZodNumber>;
|
|
619
|
+
/** Max depth of agent-calls-agent recursion. */
|
|
620
|
+
maxAgentDepth: z.ZodOptional<z.ZodNumber>;
|
|
621
|
+
}, "strip", z.ZodTypeAny, {
|
|
622
|
+
maxIterations?: number | undefined;
|
|
623
|
+
tokenBudget?: number | undefined;
|
|
624
|
+
maxToolResultChars?: number | undefined;
|
|
625
|
+
maxAgentResultChars?: number | undefined;
|
|
626
|
+
maxConcurrency?: number | undefined;
|
|
627
|
+
maxAgentDepth?: number | undefined;
|
|
628
|
+
}, {
|
|
629
|
+
maxIterations?: number | undefined;
|
|
630
|
+
tokenBudget?: number | undefined;
|
|
631
|
+
maxToolResultChars?: number | undefined;
|
|
632
|
+
maxAgentResultChars?: number | undefined;
|
|
633
|
+
maxConcurrency?: number | undefined;
|
|
634
|
+
maxAgentDepth?: number | undefined;
|
|
635
|
+
}>>;
|
|
636
|
+
/** Sampling temperature. */
|
|
637
|
+
temperature: z.ZodOptional<z.ZodNumber>;
|
|
638
|
+
/** Per-call max output tokens. */
|
|
639
|
+
maxTokens: z.ZodOptional<z.ZodNumber>;
|
|
640
|
+
/** Per-call timeout in ms. */
|
|
641
|
+
timeout: z.ZodOptional<z.ZodNumber>;
|
|
642
|
+
/** Transport retries per call. */
|
|
643
|
+
retries: z.ZodOptional<z.ZodNumber>;
|
|
644
|
+
}, "strip", z.ZodTypeAny, {
|
|
645
|
+
tools: {
|
|
646
|
+
description?: string | undefined;
|
|
647
|
+
task?: string | undefined;
|
|
648
|
+
flow?: string | undefined;
|
|
649
|
+
name?: string | undefined;
|
|
650
|
+
agent?: string | undefined;
|
|
651
|
+
parameters?: Record<string, unknown> | undefined;
|
|
652
|
+
}[];
|
|
653
|
+
description?: string | undefined;
|
|
654
|
+
retries?: number | undefined;
|
|
655
|
+
model?: string | undefined;
|
|
656
|
+
system?: string | undefined;
|
|
657
|
+
schema?: Record<string, unknown> | undefined;
|
|
658
|
+
budget?: {
|
|
659
|
+
maxIterations?: number | undefined;
|
|
660
|
+
tokenBudget?: number | undefined;
|
|
661
|
+
maxToolResultChars?: number | undefined;
|
|
662
|
+
maxAgentResultChars?: number | undefined;
|
|
663
|
+
maxConcurrency?: number | undefined;
|
|
664
|
+
maxAgentDepth?: number | undefined;
|
|
665
|
+
} | undefined;
|
|
666
|
+
temperature?: number | undefined;
|
|
667
|
+
maxTokens?: number | undefined;
|
|
668
|
+
timeout?: number | undefined;
|
|
669
|
+
}, {
|
|
670
|
+
description?: string | undefined;
|
|
671
|
+
retries?: number | undefined;
|
|
672
|
+
model?: string | undefined;
|
|
673
|
+
system?: string | undefined;
|
|
674
|
+
tools?: {
|
|
675
|
+
description?: string | undefined;
|
|
676
|
+
task?: string | undefined;
|
|
677
|
+
flow?: string | undefined;
|
|
678
|
+
name?: string | undefined;
|
|
679
|
+
agent?: string | undefined;
|
|
680
|
+
parameters?: Record<string, unknown> | undefined;
|
|
681
|
+
}[] | undefined;
|
|
682
|
+
schema?: Record<string, unknown> | undefined;
|
|
683
|
+
budget?: {
|
|
684
|
+
maxIterations?: number | undefined;
|
|
685
|
+
tokenBudget?: number | undefined;
|
|
686
|
+
maxToolResultChars?: number | undefined;
|
|
687
|
+
maxAgentResultChars?: number | undefined;
|
|
688
|
+
maxConcurrency?: number | undefined;
|
|
689
|
+
maxAgentDepth?: number | undefined;
|
|
690
|
+
} | undefined;
|
|
691
|
+
temperature?: number | undefined;
|
|
692
|
+
maxTokens?: number | undefined;
|
|
693
|
+
timeout?: number | undefined;
|
|
694
|
+
}>;
|
|
488
695
|
/** Minimal config shape the engine requires. Consumers extend with their own sections. */
|
|
489
696
|
export declare const EngineConfigSchema: z.ZodObject<{
|
|
490
697
|
tasks: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodObject<{
|
|
@@ -916,6 +1123,139 @@ export declare const EngineConfigSchema: z.ZodObject<{
|
|
|
916
1123
|
}[] | undefined;
|
|
917
1124
|
rollback_on_failure?: boolean | undefined;
|
|
918
1125
|
}>>>;
|
|
1126
|
+
agents: z.ZodDefault<z.ZodRecord<z.ZodString, z.ZodObject<{
|
|
1127
|
+
description: z.ZodOptional<z.ZodString>;
|
|
1128
|
+
/** Model identifier — provider-specific. */
|
|
1129
|
+
model: z.ZodOptional<z.ZodString>;
|
|
1130
|
+
/** System prompt / rules. */
|
|
1131
|
+
system: z.ZodOptional<z.ZodString>;
|
|
1132
|
+
/** Tools the agent may call (its allowlist). */
|
|
1133
|
+
tools: z.ZodDefault<z.ZodArray<z.ZodEffects<z.ZodObject<{
|
|
1134
|
+
name: z.ZodOptional<z.ZodString>;
|
|
1135
|
+
task: z.ZodOptional<z.ZodString>;
|
|
1136
|
+
flow: z.ZodOptional<z.ZodString>;
|
|
1137
|
+
agent: z.ZodOptional<z.ZodString>;
|
|
1138
|
+
description: z.ZodOptional<z.ZodString>;
|
|
1139
|
+
parameters: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
1140
|
+
}, "strip", z.ZodTypeAny, {
|
|
1141
|
+
description?: string | undefined;
|
|
1142
|
+
task?: string | undefined;
|
|
1143
|
+
flow?: string | undefined;
|
|
1144
|
+
name?: string | undefined;
|
|
1145
|
+
agent?: string | undefined;
|
|
1146
|
+
parameters?: Record<string, unknown> | undefined;
|
|
1147
|
+
}, {
|
|
1148
|
+
description?: string | undefined;
|
|
1149
|
+
task?: string | undefined;
|
|
1150
|
+
flow?: string | undefined;
|
|
1151
|
+
name?: string | undefined;
|
|
1152
|
+
agent?: string | undefined;
|
|
1153
|
+
parameters?: Record<string, unknown> | undefined;
|
|
1154
|
+
}>, {
|
|
1155
|
+
description?: string | undefined;
|
|
1156
|
+
task?: string | undefined;
|
|
1157
|
+
flow?: string | undefined;
|
|
1158
|
+
name?: string | undefined;
|
|
1159
|
+
agent?: string | undefined;
|
|
1160
|
+
parameters?: Record<string, unknown> | undefined;
|
|
1161
|
+
}, {
|
|
1162
|
+
description?: string | undefined;
|
|
1163
|
+
task?: string | undefined;
|
|
1164
|
+
flow?: string | undefined;
|
|
1165
|
+
name?: string | undefined;
|
|
1166
|
+
agent?: string | undefined;
|
|
1167
|
+
parameters?: Record<string, unknown> | undefined;
|
|
1168
|
+
}>, "many">>;
|
|
1169
|
+
/** JSON Schema for the agent's final answer. */
|
|
1170
|
+
schema: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
1171
|
+
/** Hard run bounds. */
|
|
1172
|
+
budget: z.ZodOptional<z.ZodObject<{
|
|
1173
|
+
/** Max model turns. */
|
|
1174
|
+
maxIterations: z.ZodOptional<z.ZodNumber>;
|
|
1175
|
+
/** Aggregate input+output token cap across the whole loop (incl. sub-agents). */
|
|
1176
|
+
tokenBudget: z.ZodOptional<z.ZodNumber>;
|
|
1177
|
+
/** Cap on a single tool result's serialized size, in chars. */
|
|
1178
|
+
maxToolResultChars: z.ZodOptional<z.ZodNumber>;
|
|
1179
|
+
/** Cap on a sub-agent result's serialized size, in chars (0 = unbounded). */
|
|
1180
|
+
maxAgentResultChars: z.ZodOptional<z.ZodNumber>;
|
|
1181
|
+
/** Max tool calls run concurrently within a turn. */
|
|
1182
|
+
maxConcurrency: z.ZodOptional<z.ZodNumber>;
|
|
1183
|
+
/** Max depth of agent-calls-agent recursion. */
|
|
1184
|
+
maxAgentDepth: z.ZodOptional<z.ZodNumber>;
|
|
1185
|
+
}, "strip", z.ZodTypeAny, {
|
|
1186
|
+
maxIterations?: number | undefined;
|
|
1187
|
+
tokenBudget?: number | undefined;
|
|
1188
|
+
maxToolResultChars?: number | undefined;
|
|
1189
|
+
maxAgentResultChars?: number | undefined;
|
|
1190
|
+
maxConcurrency?: number | undefined;
|
|
1191
|
+
maxAgentDepth?: number | undefined;
|
|
1192
|
+
}, {
|
|
1193
|
+
maxIterations?: number | undefined;
|
|
1194
|
+
tokenBudget?: number | undefined;
|
|
1195
|
+
maxToolResultChars?: number | undefined;
|
|
1196
|
+
maxAgentResultChars?: number | undefined;
|
|
1197
|
+
maxConcurrency?: number | undefined;
|
|
1198
|
+
maxAgentDepth?: number | undefined;
|
|
1199
|
+
}>>;
|
|
1200
|
+
/** Sampling temperature. */
|
|
1201
|
+
temperature: z.ZodOptional<z.ZodNumber>;
|
|
1202
|
+
/** Per-call max output tokens. */
|
|
1203
|
+
maxTokens: z.ZodOptional<z.ZodNumber>;
|
|
1204
|
+
/** Per-call timeout in ms. */
|
|
1205
|
+
timeout: z.ZodOptional<z.ZodNumber>;
|
|
1206
|
+
/** Transport retries per call. */
|
|
1207
|
+
retries: z.ZodOptional<z.ZodNumber>;
|
|
1208
|
+
}, "strip", z.ZodTypeAny, {
|
|
1209
|
+
tools: {
|
|
1210
|
+
description?: string | undefined;
|
|
1211
|
+
task?: string | undefined;
|
|
1212
|
+
flow?: string | undefined;
|
|
1213
|
+
name?: string | undefined;
|
|
1214
|
+
agent?: string | undefined;
|
|
1215
|
+
parameters?: Record<string, unknown> | undefined;
|
|
1216
|
+
}[];
|
|
1217
|
+
description?: string | undefined;
|
|
1218
|
+
retries?: number | undefined;
|
|
1219
|
+
model?: string | undefined;
|
|
1220
|
+
system?: string | undefined;
|
|
1221
|
+
schema?: Record<string, unknown> | undefined;
|
|
1222
|
+
budget?: {
|
|
1223
|
+
maxIterations?: number | undefined;
|
|
1224
|
+
tokenBudget?: number | undefined;
|
|
1225
|
+
maxToolResultChars?: number | undefined;
|
|
1226
|
+
maxAgentResultChars?: number | undefined;
|
|
1227
|
+
maxConcurrency?: number | undefined;
|
|
1228
|
+
maxAgentDepth?: number | undefined;
|
|
1229
|
+
} | undefined;
|
|
1230
|
+
temperature?: number | undefined;
|
|
1231
|
+
maxTokens?: number | undefined;
|
|
1232
|
+
timeout?: number | undefined;
|
|
1233
|
+
}, {
|
|
1234
|
+
description?: string | undefined;
|
|
1235
|
+
retries?: number | undefined;
|
|
1236
|
+
model?: string | undefined;
|
|
1237
|
+
system?: string | undefined;
|
|
1238
|
+
tools?: {
|
|
1239
|
+
description?: string | undefined;
|
|
1240
|
+
task?: string | undefined;
|
|
1241
|
+
flow?: string | undefined;
|
|
1242
|
+
name?: string | undefined;
|
|
1243
|
+
agent?: string | undefined;
|
|
1244
|
+
parameters?: Record<string, unknown> | undefined;
|
|
1245
|
+
}[] | undefined;
|
|
1246
|
+
schema?: Record<string, unknown> | undefined;
|
|
1247
|
+
budget?: {
|
|
1248
|
+
maxIterations?: number | undefined;
|
|
1249
|
+
tokenBudget?: number | undefined;
|
|
1250
|
+
maxToolResultChars?: number | undefined;
|
|
1251
|
+
maxAgentResultChars?: number | undefined;
|
|
1252
|
+
maxConcurrency?: number | undefined;
|
|
1253
|
+
maxAgentDepth?: number | undefined;
|
|
1254
|
+
} | undefined;
|
|
1255
|
+
temperature?: number | undefined;
|
|
1256
|
+
maxTokens?: number | undefined;
|
|
1257
|
+
timeout?: number | undefined;
|
|
1258
|
+
}>>>;
|
|
919
1259
|
}, "strip", z.ZodTypeAny, {
|
|
920
1260
|
tasks: Record<string, {
|
|
921
1261
|
options: Record<string, unknown>;
|
|
@@ -979,6 +1319,32 @@ export declare const EngineConfigSchema: z.ZodObject<{
|
|
|
979
1319
|
}[] | undefined;
|
|
980
1320
|
rollback_on_failure?: boolean | undefined;
|
|
981
1321
|
}>;
|
|
1322
|
+
agents: Record<string, {
|
|
1323
|
+
tools: {
|
|
1324
|
+
description?: string | undefined;
|
|
1325
|
+
task?: string | undefined;
|
|
1326
|
+
flow?: string | undefined;
|
|
1327
|
+
name?: string | undefined;
|
|
1328
|
+
agent?: string | undefined;
|
|
1329
|
+
parameters?: Record<string, unknown> | undefined;
|
|
1330
|
+
}[];
|
|
1331
|
+
description?: string | undefined;
|
|
1332
|
+
retries?: number | undefined;
|
|
1333
|
+
model?: string | undefined;
|
|
1334
|
+
system?: string | undefined;
|
|
1335
|
+
schema?: Record<string, unknown> | undefined;
|
|
1336
|
+
budget?: {
|
|
1337
|
+
maxIterations?: number | undefined;
|
|
1338
|
+
tokenBudget?: number | undefined;
|
|
1339
|
+
maxToolResultChars?: number | undefined;
|
|
1340
|
+
maxAgentResultChars?: number | undefined;
|
|
1341
|
+
maxConcurrency?: number | undefined;
|
|
1342
|
+
maxAgentDepth?: number | undefined;
|
|
1343
|
+
} | undefined;
|
|
1344
|
+
temperature?: number | undefined;
|
|
1345
|
+
maxTokens?: number | undefined;
|
|
1346
|
+
timeout?: number | undefined;
|
|
1347
|
+
}>;
|
|
982
1348
|
}, {
|
|
983
1349
|
tasks?: Record<string, {
|
|
984
1350
|
options?: Record<string, unknown> | undefined;
|
|
@@ -1042,10 +1408,39 @@ export declare const EngineConfigSchema: z.ZodObject<{
|
|
|
1042
1408
|
}[] | undefined;
|
|
1043
1409
|
rollback_on_failure?: boolean | undefined;
|
|
1044
1410
|
}> | undefined;
|
|
1411
|
+
agents?: Record<string, {
|
|
1412
|
+
description?: string | undefined;
|
|
1413
|
+
retries?: number | undefined;
|
|
1414
|
+
model?: string | undefined;
|
|
1415
|
+
system?: string | undefined;
|
|
1416
|
+
tools?: {
|
|
1417
|
+
description?: string | undefined;
|
|
1418
|
+
task?: string | undefined;
|
|
1419
|
+
flow?: string | undefined;
|
|
1420
|
+
name?: string | undefined;
|
|
1421
|
+
agent?: string | undefined;
|
|
1422
|
+
parameters?: Record<string, unknown> | undefined;
|
|
1423
|
+
}[] | undefined;
|
|
1424
|
+
schema?: Record<string, unknown> | undefined;
|
|
1425
|
+
budget?: {
|
|
1426
|
+
maxIterations?: number | undefined;
|
|
1427
|
+
tokenBudget?: number | undefined;
|
|
1428
|
+
maxToolResultChars?: number | undefined;
|
|
1429
|
+
maxAgentResultChars?: number | undefined;
|
|
1430
|
+
maxConcurrency?: number | undefined;
|
|
1431
|
+
maxAgentDepth?: number | undefined;
|
|
1432
|
+
} | undefined;
|
|
1433
|
+
temperature?: number | undefined;
|
|
1434
|
+
maxTokens?: number | undefined;
|
|
1435
|
+
timeout?: number | undefined;
|
|
1436
|
+
}> | undefined;
|
|
1045
1437
|
}>;
|
|
1046
1438
|
export type TaskOptions = z.infer<typeof TaskOptionsSchema>;
|
|
1047
1439
|
export type TaskDefinition = z.infer<typeof TaskDefinitionSchema>;
|
|
1048
1440
|
export type FlowStep = z.infer<typeof FlowStepSchema>;
|
|
1049
1441
|
export type FlowDefinition = z.infer<typeof FlowDefinitionSchema>;
|
|
1442
|
+
export type AgentTool = z.infer<typeof AgentToolSchema>;
|
|
1443
|
+
export type AgentBudget = z.infer<typeof AgentBudgetSchema>;
|
|
1444
|
+
export type AgentDefinition = z.infer<typeof AgentDefinitionSchema>;
|
|
1050
1445
|
export type EngineConfig = z.infer<typeof EngineConfigSchema>;
|
|
1051
1446
|
//# sourceMappingURL=schema.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/config/schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,iBAAiB,wCAAwB,CAAC;AAEvD,eAAO,MAAM,oBAAoB;IAC/B;;;;;OAKG;;;;;IAKH,sEAAsE;;;;;;;;;;;;;;;;;EAGtE,CAAC;AAEH,eAAO,MAAM,cAAc;;;;IAKvB,0DAA0D;;IAE1D,8CAA8C;;IAE9C,iEAAiE;;IAEjE;;;;;OAKG;;IAEH,+EAA+E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAShF,CAAC;AAEJ,eAAO,MAAM,oBAAoB;IAC/B;;;OAGG;;IAEH,kFAAkF;;;;;QA9BhF,0DAA0D;;QAE1D,8CAA8C;;QAE9C,iEAAiE;;QAEjE;;;;;WAKG;;QAEH,+EAA+E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAmBjF,+EAA+E;;;;;QAhC7E,0DAA0D;;QAE1D,8CAA8C;;QAE9C,iEAAiE;;QAEjE;;;;;WAKG;;QAEH,+EAA+E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAqBjF,oCAAoC;;;;;QAlClC,0DAA0D;;QAE1D,8CAA8C;;QAE9C,iEAAiE;;QAEjE;;;;;WAKG;;QAEH,+EAA+E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAuBjF,gCAAgC;;;;;QApC9B,0DAA0D;;QAE1D,8CAA8C;;QAE9C,iEAAiE;;QAEjE;;;;;WAKG;;QAEH,+EAA+E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAyBjF,kEAAkE;;;;;QAtChE,0DAA0D;;QAE1D,8CAA8C;;QAE9C,iEAAiE;;QAEjE;;;;;WAKG;;QAEH,+EAA+E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IA2BjF,yFAAyF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAEzF,CAAC;AAEH,0FAA0F;AAC1F,eAAO,MAAM,kBAAkB;;
|
|
1
|
+
{"version":3,"file":"schema.d.ts","sourceRoot":"","sources":["../../src/config/schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,iBAAiB,wCAAwB,CAAC;AAEvD,eAAO,MAAM,oBAAoB;IAC/B;;;;;OAKG;;;;;IAKH,sEAAsE;;;;;;;;;;;;;;;;;EAGtE,CAAC;AAEH,eAAO,MAAM,cAAc;;;;IAKvB,0DAA0D;;IAE1D,8CAA8C;;IAE9C,iEAAiE;;IAEjE;;;;;OAKG;;IAEH,+EAA+E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAShF,CAAC;AAEJ,eAAO,MAAM,oBAAoB;IAC/B;;;OAGG;;IAEH,kFAAkF;;;;;QA9BhF,0DAA0D;;QAE1D,8CAA8C;;QAE9C,iEAAiE;;QAEjE;;;;;WAKG;;QAEH,+EAA+E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAmBjF,+EAA+E;;;;;QAhC7E,0DAA0D;;QAE1D,8CAA8C;;QAE9C,iEAAiE;;QAEjE;;;;;WAKG;;QAEH,+EAA+E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAqBjF,oCAAoC;;;;;QAlClC,0DAA0D;;QAE1D,8CAA8C;;QAE9C,iEAAiE;;QAEjE;;;;;WAKG;;QAEH,+EAA+E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAuBjF,gCAAgC;;;;;QApC9B,0DAA0D;;QAE1D,8CAA8C;;QAE9C,iEAAiE;;QAEjE;;;;;WAKG;;QAEH,+EAA+E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAyBjF,kEAAkE;;;;;QAtChE,0DAA0D;;QAE1D,8CAA8C;;QAE9C,iEAAiE;;QAEjE;;;;;WAKG;;QAEH,+EAA+E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IA2BjF,yFAAyF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAEzF,CAAC;AAOH;;;;;GAKG;AACH,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAWxB,CAAC;AAEL;;;GAGG;AACH,eAAO,MAAM,iBAAiB;IAC5B,uBAAuB;;IAEvB,iFAAiF;;IAEjF,+DAA+D;;IAE/D,6EAA6E;;IAE7E,qDAAqD;;IAErD,gDAAgD;;;;;;;;;;;;;;;;EAEhD,CAAC;AAEH,eAAO,MAAM,qBAAqB;;IAEhC,4CAA4C;;IAE5C,6BAA6B;;IAE7B,gDAAgD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;IAEhD,gDAAgD;;IAEhD,uBAAuB;;QAxBvB,uBAAuB;;QAEvB,iFAAiF;;QAEjF,+DAA+D;;QAE/D,6EAA6E;;QAE7E,qDAAqD;;QAErD,gDAAgD;;;;;;;;;;;;;;;;;IAgBhD,4BAA4B;;IAE5B,kCAAkC;;IAElC,8BAA8B;;IAE9B,kCAAkC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAElC,CAAC;AAEH,0FAA0F;AAC1F,eAAO,MAAM,kBAAkB;;QAlI7B;;;;;WAKG;;;;;QAKH,sEAAsE;;;;;;;;;;;;;;;;;;;QAmCtE;;;WAGG;;QAEH,kFAAkF;;;;;YA9BhF,0DAA0D;;YAE1D,8CAA8C;;YAE9C,iEAAiE;;YAEjE;;;;;eAKG;;YAEH,+EAA+E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QAmBjF,+EAA+E;;;;;YAhC7E,0DAA0D;;YAE1D,8CAA8C;;YAE9C,iEAAiE;;YAEjE;;;;;eAKG;;YAEH,+EAA+E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QAqBjF,oCAAoC;;;;;YAlClC,0DAA0D;;YAE1D,8CAA8C;;YAE9C,iEAAiE;;YAEjE;;;;;eAKG;;YAEH,+EAA+E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QAuBjF,gCAAgC;;;;;YApC9B,0DAA0D;;YAE1D,8CAA8C;;YAE9C,iEAAiE;;YAEjE;;;;;eAKG;;YAEH,+EAA+E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QAyBjF,kEAAkE;;;;;YAtChE,0DAA0D;;YAE1D,8CAA8C;;YAE9C,iEAAiE;;YAEjE;;;;;eAKG;;YAEH,+EAA+E;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QA2BjF,yFAAyF;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QAiDzF,4CAA4C;;QAE5C,6BAA6B;;QAE7B,gDAAgD;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;QAEhD,gDAAgD;;QAEhD,uBAAuB;;YAxBvB,uBAAuB;;YAEvB,iFAAiF;;YAEjF,+DAA+D;;YAE/D,6EAA6E;;YAE7E,qDAAqD;;YAErD,gDAAgD;;;;;;;;;;;;;;;;;QAgBhD,4BAA4B;;QAE5B,kCAAkC;;QAElC,8BAA8B;;QAE9B,kCAAkC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EASlC,CAAC;AAEH,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAC5D,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAClE,MAAM,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAC;AACtD,MAAM,MAAM,cAAc,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,oBAAoB,CAAC,CAAC;AAClE,MAAM,MAAM,SAAS,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC;AACxD,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAC5D,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AACpE,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC"}
|
package/dist/config/schema.js
CHANGED
|
@@ -60,9 +60,71 @@ export const FlowDefinitionSchema = z.object({
|
|
|
60
60
|
/** If true, invoke rollback records from completed steps in reverse order on failure. */
|
|
61
61
|
rollback_on_failure: z.boolean().optional(),
|
|
62
62
|
});
|
|
63
|
+
// ---------------------------------------------------------------------------
|
|
64
|
+
// Agents — the AI-native layer. Additive: CumulusCI never had an `agents:` key,
|
|
65
|
+
// so adding one leaves `tasks:`/`flows:` byte-identical to a cumulusci.yml.
|
|
66
|
+
// ---------------------------------------------------------------------------
|
|
67
|
+
/**
|
|
68
|
+
* A tool an agent may call. References an existing flowkit primitive — a `task`,
|
|
69
|
+
* a `flow`, or another `agent` — so tool dispatch reuses the registry, options,
|
|
70
|
+
* and `${...}` reference machinery rather than inventing a parallel concept.
|
|
71
|
+
* `name` (defaulted from the reference) is what the model sees.
|
|
72
|
+
*/
|
|
73
|
+
export const AgentToolSchema = z
|
|
74
|
+
.object({
|
|
75
|
+
name: z.string().optional(),
|
|
76
|
+
task: z.string().optional(),
|
|
77
|
+
flow: z.string().optional(),
|
|
78
|
+
agent: z.string().optional(),
|
|
79
|
+
description: z.string().optional(),
|
|
80
|
+
parameters: z.record(z.unknown()).optional(),
|
|
81
|
+
})
|
|
82
|
+
.refine((t) => !!(t.task || t.flow || t.agent || t.name), {
|
|
83
|
+
message: 'agent tool must reference a task, flow, or agent, or declare a name',
|
|
84
|
+
});
|
|
85
|
+
/**
|
|
86
|
+
* Hard bounds on an agent run. A tool-using agent with no caps is unbounded
|
|
87
|
+
* spend, so a budget is the intended companion to every agent definition.
|
|
88
|
+
*/
|
|
89
|
+
export const AgentBudgetSchema = z.object({
|
|
90
|
+
/** Max model turns. */
|
|
91
|
+
maxIterations: z.number().int().positive().optional(),
|
|
92
|
+
/** Aggregate input+output token cap across the whole loop (incl. sub-agents). */
|
|
93
|
+
tokenBudget: z.number().int().positive().optional(),
|
|
94
|
+
/** Cap on a single tool result's serialized size, in chars. */
|
|
95
|
+
maxToolResultChars: z.number().int().positive().optional(),
|
|
96
|
+
/** Cap on a sub-agent result's serialized size, in chars (0 = unbounded). */
|
|
97
|
+
maxAgentResultChars: z.number().int().nonnegative().optional(),
|
|
98
|
+
/** Max tool calls run concurrently within a turn. */
|
|
99
|
+
maxConcurrency: z.number().int().positive().optional(),
|
|
100
|
+
/** Max depth of agent-calls-agent recursion. */
|
|
101
|
+
maxAgentDepth: z.number().int().positive().optional(),
|
|
102
|
+
});
|
|
103
|
+
export const AgentDefinitionSchema = z.object({
|
|
104
|
+
description: z.string().optional(),
|
|
105
|
+
/** Model identifier — provider-specific. */
|
|
106
|
+
model: z.string().optional(),
|
|
107
|
+
/** System prompt / rules. */
|
|
108
|
+
system: z.string().optional(),
|
|
109
|
+
/** Tools the agent may call (its allowlist). */
|
|
110
|
+
tools: z.array(AgentToolSchema).default([]),
|
|
111
|
+
/** JSON Schema for the agent's final answer. */
|
|
112
|
+
schema: z.record(z.unknown()).optional(),
|
|
113
|
+
/** Hard run bounds. */
|
|
114
|
+
budget: AgentBudgetSchema.optional(),
|
|
115
|
+
/** Sampling temperature. */
|
|
116
|
+
temperature: z.number().optional(),
|
|
117
|
+
/** Per-call max output tokens. */
|
|
118
|
+
maxTokens: z.number().int().positive().optional(),
|
|
119
|
+
/** Per-call timeout in ms. */
|
|
120
|
+
timeout: z.number().int().nonnegative().optional(),
|
|
121
|
+
/** Transport retries per call. */
|
|
122
|
+
retries: z.number().int().nonnegative().optional(),
|
|
123
|
+
});
|
|
63
124
|
/** Minimal config shape the engine requires. Consumers extend with their own sections. */
|
|
64
125
|
export const EngineConfigSchema = z.object({
|
|
65
126
|
tasks: z.record(TaskDefinitionSchema).default({}),
|
|
66
127
|
flows: z.record(FlowDefinitionSchema).default({}),
|
|
128
|
+
agents: z.record(AgentDefinitionSchema).default({}),
|
|
67
129
|
});
|
|
68
130
|
//# sourceMappingURL=schema.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/config/schema.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"schema.js","sourceRoot":"","sources":["../../src/config/schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;AAEvD,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC3C;;;;;OAKG;IACH,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;IACxC,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAClC,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC5B,OAAO,EAAE,iBAAiB,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC;IACjD,sEAAsE;IACtE,UAAU,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IAClC,UAAU,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;CACnC,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC;KAC5B,MAAM,CAAC;IACN,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC3B,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC3B,OAAO,EAAE,iBAAiB,CAAC,QAAQ,EAAE;IACrC,0DAA0D;IAC1D,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE,CAAC,QAAQ,EAAE;IAClD,8CAA8C;IAC9C,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE,CAAC,QAAQ,EAAE;IACrD,iEAAiE;IACjE,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC9B;;;;;OAKG;IACH,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE;IACnD,+EAA+E;IAC/E,cAAc,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;CACvC,CAAC;KACD,MAAM,CACL,CAAC,IAAI,EAAE,EAAE;IACP,IAAI,IAAI,CAAC,IAAI,KAAK,MAAM;QAAE,OAAO,IAAI,CAAC;IACtC,OAAO,CAAC,IAAI,CAAC,IAAI,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,CAAC;AAChE,CAAC,EACD,EAAE,OAAO,EAAE,oEAAoE,EAAE,CAClF,CAAC;AAEJ,MAAM,CAAC,MAAM,oBAAoB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC3C;;;OAGG;IACH,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,OAAO,EAAE;IACjC,kFAAkF;IAClF,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,MAAM,EAAE,EAAE,cAAc,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;IAC9D,+EAA+E;IAC/E,QAAQ,EAAE,CAAC,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,QAAQ,EAAE;IAC5C,oCAAoC;IACpC,UAAU,EAAE,CAAC,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,QAAQ,EAAE;IAC9C,gCAAgC;IAChC,UAAU,EAAE,CAAC,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,QAAQ,EAAE;IAC9C,kEAAkE;IAClE,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC,QAAQ,EAAE;IAC3C,yFAAyF;IACzF,mBAAmB,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;CAC5C,CAAC,CAAC;AAEH,8EAA8E;AAC9E,gFAAgF;AAChF,4EAA4E;AAC5E,8EAA8E;AAE9E;;;;;GAKG;AACH,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC;KAC7B,MAAM,CAAC;IACN,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC3B,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC3B,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC3B,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC5B,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAClC,UAAU,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,EAAE;CAC7C,CAAC;KACD,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,IAAI,CAAC,EAAE;IACxD,OAAO,EAAE,qEAAqE;CAC/E,CAAC,CAAC;AAEL;;;GAGG;AACH,MAAM,CAAC,MAAM,iBAAiB,GAAG,CAAC,CAAC,MAAM,CAAC;IACxC,uBAAuB;IACvB,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;IACrD,iFAAiF;IACjF,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;IACnD,+DAA+D;IAC/D,kBAAkB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;IAC1D,6EAA6E;IAC7E,mBAAmB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE,CAAC,QAAQ,EAAE;IAC9D,qDAAqD;IACrD,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;IACtD,gDAAgD;IAChD,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;CACtD,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,CAAC,MAAM,CAAC;IAC5C,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAClC,4CAA4C;IAC5C,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC5B,6BAA6B;IAC7B,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC7B,gDAAgD;IAChD,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;IAC3C,gDAAgD;IAChD,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,EAAE;IACxC,uBAAuB;IACvB,MAAM,EAAE,iBAAiB,CAAC,QAAQ,EAAE;IACpC,4BAA4B;IAC5B,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAClC,kCAAkC;IAClC,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;IACjD,8BAA8B;IAC9B,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE,CAAC,QAAQ,EAAE;IAClD,kCAAkC;IAClC,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,WAAW,EAAE,CAAC,QAAQ,EAAE;CACnD,CAAC,CAAC;AAEH,0FAA0F;AAC1F,MAAM,CAAC,MAAM,kBAAkB,GAAG,CAAC,CAAC,MAAM,CAAC;IACzC,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;IACjD,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;IACjD,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,qBAAqB,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;CACpD,CAAC,CAAC"}
|
package/dist/flow/runner.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import type { Logger } from '../logger.js';
|
|
2
|
-
import type { TaskDefinition, FlowDefinition } from '../config/schema.js';
|
|
2
|
+
import type { TaskDefinition, FlowDefinition, AgentDefinition } from '../config/schema.js';
|
|
3
3
|
import type { TaskResult } from '../task/base-task.js';
|
|
4
4
|
import type { TaskContext } from '../task/base-task.js';
|
|
5
5
|
import type { TaskRegistry } from '../task/registry.js';
|
|
@@ -121,6 +121,12 @@ export interface FlowRunnerConfig {
|
|
|
121
121
|
* values, e.g. `{ project, org, env }`. `steps` and `error` are always built in.
|
|
122
122
|
*/
|
|
123
123
|
references?: Record<string, unknown>;
|
|
124
|
+
/**
|
|
125
|
+
* Declarative agents. Each becomes runnable as a flow step (`task: <name>`)
|
|
126
|
+
* and as another agent's `agent:` tool, and the runner wires `ctx.runFlow` /
|
|
127
|
+
* `ctx.runAgent` so agents can call flows and sub-agents as tools.
|
|
128
|
+
*/
|
|
129
|
+
agents?: Record<string, AgentDefinition>;
|
|
124
130
|
}
|
|
125
131
|
export declare class FlowRunner {
|
|
126
132
|
private logger;
|
|
@@ -131,8 +137,19 @@ export declare class FlowRunner {
|
|
|
131
137
|
private hooks;
|
|
132
138
|
private conditionEvaluator?;
|
|
133
139
|
private references?;
|
|
140
|
+
private agents;
|
|
134
141
|
private runDepth;
|
|
135
142
|
constructor(config: FlowRunnerConfig);
|
|
143
|
+
/** Map an agent definition onto AgentTask options (everything but the prompt). */
|
|
144
|
+
private compileAgent;
|
|
145
|
+
/** Run a configured flow as an agent tool, returning a compact step summary. */
|
|
146
|
+
private runFlowTool;
|
|
147
|
+
/**
|
|
148
|
+
* Run a configured agent as an agent tool (sub-agent), threading recursion
|
|
149
|
+
* depth and the caller's token ledger so the sub-agent's spend charges the
|
|
150
|
+
* same budget.
|
|
151
|
+
*/
|
|
152
|
+
private runAgentTool;
|
|
136
153
|
run(options: FlowRunOptions): Promise<FlowRunResult>;
|
|
137
154
|
/**
|
|
138
155
|
* Run a single task by name, directly — the leaf unit of work, without a flow.
|