@anvia/core 0.7.0 → 0.7.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 CHANGED
@@ -195,8 +195,9 @@ const ticket = await extractor.extract(
195
195
 
196
196
  ```ts
197
197
  import { PipelineBuilder } from "@anvia/core/pipeline";
198
+ import { z } from "zod";
198
199
 
199
- const pipeline = new PipelineBuilder<string>()
200
+ const pipeline = new PipelineBuilder(z.string())
200
201
  .step((input) => `Extract this support ticket:\n\n${input}`)
201
202
  .prompt(agent)
202
203
  .extract(extractor)
@@ -1,6 +1,6 @@
1
1
  import {
2
2
  AgentBuilder
3
- } from "../chunk-NCZRYTA6.js";
3
+ } from "../chunk-YQHXHTYN.js";
4
4
  import {
5
5
  MaxTurnsError,
6
6
  PromptCancelledError,
@@ -11,21 +11,21 @@ import {
11
11
  runControl,
12
12
  skipTool,
13
13
  toolCallControl
14
- } from "../chunk-6OR42QTG.js";
14
+ } from "../chunk-LDB4V2NU.js";
15
15
  import "../chunk-XUUY2L2D.js";
16
16
  import "../chunk-XXT2UCAR.js";
17
17
  import "../chunk-YK4WAAS4.js";
18
18
  import {
19
19
  createMiddleware,
20
20
  createToolMiddleware
21
- } from "../chunk-IA47SXLS.js";
22
- import "../chunk-66IJDP6L.js";
21
+ } from "../chunk-USWULPZJ.js";
22
+ import "../chunk-VQE5PAAT.js";
23
23
  import "../chunk-MMHG7WAM.js";
24
+ import "../chunk-FTO3W4UP.js";
25
+ import "../chunk-OIMLU4SF.js";
24
26
  import "../chunk-S5IGJ4RB.js";
25
27
  import "../chunk-WJO6NVE2.js";
26
28
  import "../chunk-WQKHFADH.js";
27
- import "../chunk-FTO3W4UP.js";
28
- import "../chunk-OIMLU4SF.js";
29
29
  export {
30
30
  AgentBuilder,
31
31
  MaxTurnsError,
@@ -1,12 +1,12 @@
1
1
  import {
2
2
  AgentBuilder
3
- } from "./chunk-NCZRYTA6.js";
3
+ } from "./chunk-YQHXHTYN.js";
4
4
  import {
5
5
  extractRagText
6
- } from "./chunk-6OR42QTG.js";
6
+ } from "./chunk-LDB4V2NU.js";
7
7
  import {
8
8
  createTool
9
- } from "./chunk-66IJDP6L.js";
9
+ } from "./chunk-VQE5PAAT.js";
10
10
  import {
11
11
  CompletionRequestBuilder
12
12
  } from "./chunk-S5IGJ4RB.js";
@@ -138,4 +138,4 @@ export {
138
138
  Extractor,
139
139
  ExtractorBuilder
140
140
  };
141
- //# sourceMappingURL=chunk-SHCKZZQH.js.map
141
+ //# sourceMappingURL=chunk-DZFDBT7F.js.map
@@ -3,7 +3,7 @@ import {
3
3
  } from "./chunk-YK4WAAS4.js";
4
4
  import {
5
5
  createTool
6
- } from "./chunk-66IJDP6L.js";
6
+ } from "./chunk-VQE5PAAT.js";
7
7
  import {
8
8
  isRecord
9
9
  } from "./chunk-MMHG7WAM.js";
@@ -395,4 +395,4 @@ export {
395
395
  SkillValidationError,
396
396
  skill
397
397
  };
398
- //# sourceMappingURL=chunk-ZT2YH2GA.js.map
398
+ //# sourceMappingURL=chunk-ITYXP4CL.js.map
@@ -8,13 +8,16 @@ import {
8
8
  ToolSet,
9
9
  parseToolArgs,
10
10
  toolResultContentToText
11
- } from "./chunk-IA47SXLS.js";
11
+ } from "./chunk-USWULPZJ.js";
12
12
  import {
13
13
  createTool
14
- } from "./chunk-66IJDP6L.js";
14
+ } from "./chunk-VQE5PAAT.js";
15
15
  import {
16
16
  compact
17
17
  } from "./chunk-MMHG7WAM.js";
18
+ import {
19
+ mapWithConcurrency
20
+ } from "./chunk-OIMLU4SF.js";
18
21
  import {
19
22
  CompletionRequestBuilder,
20
23
  isStreamingCompletionModel
@@ -26,9 +29,6 @@ import {
26
29
  assertCompletionRequestSupported,
27
30
  textFromAssistantContent
28
31
  } from "./chunk-WJO6NVE2.js";
29
- import {
30
- mapWithConcurrency
31
- } from "./chunk-OIMLU4SF.js";
32
32
 
33
33
  // src/agent/errors.ts
34
34
  var MaxTurnsError = class extends Error {
@@ -1914,4 +1914,4 @@ export {
1914
1914
  Agent,
1915
1915
  AgentSession
1916
1916
  };
1917
- //# sourceMappingURL=chunk-6OR42QTG.js.map
1917
+ //# sourceMappingURL=chunk-LDB4V2NU.js.map
@@ -1,17 +1,17 @@
1
1
  import {
2
2
  InMemoryVectorStore,
3
3
  createTool
4
- } from "./chunk-66IJDP6L.js";
4
+ } from "./chunk-VQE5PAAT.js";
5
5
  import {
6
6
  compact
7
7
  } from "./chunk-MMHG7WAM.js";
8
+ import {
9
+ embedDocuments
10
+ } from "./chunk-FTO3W4UP.js";
8
11
  import {
9
12
  isToolResultContentArray,
10
13
  serializeToolResultOutput
11
14
  } from "./chunk-WJO6NVE2.js";
12
- import {
13
- embedDocuments
14
- } from "./chunk-FTO3W4UP.js";
15
15
 
16
16
  // src/tool/errors.ts
17
17
  var ToolCallError = class extends Error {
@@ -225,4 +225,4 @@ export {
225
225
  createToolMiddleware,
226
226
  createThinkTool
227
227
  };
228
- //# sourceMappingURL=chunk-IA47SXLS.js.map
228
+ //# sourceMappingURL=chunk-USWULPZJ.js.map
@@ -1,13 +1,13 @@
1
1
  import {
2
2
  compact
3
3
  } from "./chunk-MMHG7WAM.js";
4
- import {
5
- toProviderJsonSchema
6
- } from "./chunk-WQKHFADH.js";
7
4
  import {
8
5
  cosineSimilarity,
9
6
  embedText
10
7
  } from "./chunk-FTO3W4UP.js";
8
+ import {
9
+ toProviderJsonSchema
10
+ } from "./chunk-WQKHFADH.js";
11
11
 
12
12
  // src/vector-store/index.ts
13
13
  import { z } from "zod";
@@ -325,4 +325,4 @@ export {
325
325
  InMemoryVectorIndex,
326
326
  createVectorSearchTool
327
327
  };
328
- //# sourceMappingURL=chunk-66IJDP6L.js.map
328
+ //# sourceMappingURL=chunk-VQE5PAAT.js.map
@@ -1,13 +1,13 @@
1
1
  import {
2
2
  Agent,
3
3
  normalizeAgentId
4
- } from "./chunk-6OR42QTG.js";
4
+ } from "./chunk-LDB4V2NU.js";
5
5
  import {
6
6
  resolveMemoryOptions
7
7
  } from "./chunk-XXT2UCAR.js";
8
8
  import {
9
9
  ToolSet
10
- } from "./chunk-IA47SXLS.js";
10
+ } from "./chunk-USWULPZJ.js";
11
11
  import {
12
12
  toProviderJsonSchema
13
13
  } from "./chunk-WQKHFADH.js";
@@ -203,4 +203,4 @@ var AgentBuilder = class {
203
203
  export {
204
204
  AgentBuilder
205
205
  };
206
- //# sourceMappingURL=chunk-NCZRYTA6.js.map
206
+ //# sourceMappingURL=chunk-YQHXHTYN.js.map
@@ -1,19 +1,16 @@
1
1
  import {
2
2
  ExtractorBuilder
3
- } from "../chunk-SHCKZZQH.js";
4
- import "../chunk-NCZRYTA6.js";
5
- import "../chunk-6OR42QTG.js";
3
+ } from "../chunk-DZFDBT7F.js";
4
+ import "../chunk-YQHXHTYN.js";
5
+ import "../chunk-LDB4V2NU.js";
6
6
  import "../chunk-XUUY2L2D.js";
7
7
  import "../chunk-XXT2UCAR.js";
8
8
  import "../chunk-YK4WAAS4.js";
9
- import "../chunk-IA47SXLS.js";
10
- import "../chunk-66IJDP6L.js";
9
+ import "../chunk-USWULPZJ.js";
10
+ import "../chunk-VQE5PAAT.js";
11
11
  import {
12
12
  compact
13
13
  } from "../chunk-MMHG7WAM.js";
14
- import "../chunk-S5IGJ4RB.js";
15
- import "../chunk-WJO6NVE2.js";
16
- import "../chunk-WQKHFADH.js";
17
14
  import {
18
15
  cosineSimilarity,
19
16
  embedText
@@ -21,6 +18,9 @@ import {
21
18
  import {
22
19
  mapWithConcurrency
23
20
  } from "../chunk-OIMLU4SF.js";
21
+ import "../chunk-S5IGJ4RB.js";
22
+ import "../chunk-WJO6NVE2.js";
23
+ import "../chunk-WQKHFADH.js";
24
24
 
25
25
  // src/evals/agent-target.ts
26
26
  function agentEvalTarget(agent, options = {}) {
@@ -2,20 +2,20 @@ import {
2
2
  ExtractionError,
3
3
  Extractor,
4
4
  ExtractorBuilder
5
- } from "../chunk-SHCKZZQH.js";
6
- import "../chunk-NCZRYTA6.js";
7
- import "../chunk-6OR42QTG.js";
5
+ } from "../chunk-DZFDBT7F.js";
6
+ import "../chunk-YQHXHTYN.js";
7
+ import "../chunk-LDB4V2NU.js";
8
8
  import "../chunk-XUUY2L2D.js";
9
9
  import "../chunk-XXT2UCAR.js";
10
10
  import "../chunk-YK4WAAS4.js";
11
- import "../chunk-IA47SXLS.js";
12
- import "../chunk-66IJDP6L.js";
11
+ import "../chunk-USWULPZJ.js";
12
+ import "../chunk-VQE5PAAT.js";
13
13
  import "../chunk-MMHG7WAM.js";
14
+ import "../chunk-FTO3W4UP.js";
15
+ import "../chunk-OIMLU4SF.js";
14
16
  import "../chunk-S5IGJ4RB.js";
15
17
  import "../chunk-WJO6NVE2.js";
16
18
  import "../chunk-WQKHFADH.js";
17
- import "../chunk-FTO3W4UP.js";
18
- import "../chunk-OIMLU4SF.js";
19
19
  export {
20
20
  ExtractionError,
21
21
  Extractor,
package/dist/index.js CHANGED
@@ -2,10 +2,10 @@ import {
2
2
  SkillValidationError,
3
3
  loadSkills,
4
4
  skill
5
- } from "./chunk-ZT2YH2GA.js";
5
+ } from "./chunk-ITYXP4CL.js";
6
6
  import {
7
7
  AgentBuilder
8
- } from "./chunk-NCZRYTA6.js";
8
+ } from "./chunk-YQHXHTYN.js";
9
9
  import {
10
10
  MaxTurnsError,
11
11
  PromptCancelledError,
@@ -16,7 +16,7 @@ import {
16
16
  runControl,
17
17
  skipTool,
18
18
  toolCallControl
19
- } from "./chunk-6OR42QTG.js";
19
+ } from "./chunk-LDB4V2NU.js";
20
20
  import "./chunk-XUUY2L2D.js";
21
21
  import "./chunk-XXT2UCAR.js";
22
22
  import "./chunk-YK4WAAS4.js";
@@ -24,11 +24,13 @@ import {
24
24
  createMiddleware,
25
25
  createThinkTool,
26
26
  createToolMiddleware
27
- } from "./chunk-IA47SXLS.js";
27
+ } from "./chunk-USWULPZJ.js";
28
28
  import {
29
29
  createTool
30
- } from "./chunk-66IJDP6L.js";
30
+ } from "./chunk-VQE5PAAT.js";
31
31
  import "./chunk-MMHG7WAM.js";
32
+ import "./chunk-FTO3W4UP.js";
33
+ import "./chunk-OIMLU4SF.js";
32
34
  import {
33
35
  createCompletion,
34
36
  createCompletionStream,
@@ -42,8 +44,6 @@ import {
42
44
  UserContent
43
45
  } from "./chunk-WJO6NVE2.js";
44
46
  import "./chunk-WQKHFADH.js";
45
- import "./chunk-FTO3W4UP.js";
46
- import "./chunk-OIMLU4SF.js";
47
47
  export {
48
48
  AgentBuilder,
49
49
  AssistantContent,
@@ -2,17 +2,17 @@ import {
2
2
  Agent,
3
3
  AgentSession,
4
4
  DEFAULT_MAX_TURNS
5
- } from "../chunk-6OR42QTG.js";
5
+ } from "../chunk-LDB4V2NU.js";
6
6
  import "../chunk-XUUY2L2D.js";
7
7
  import "../chunk-YK4WAAS4.js";
8
- import "../chunk-IA47SXLS.js";
9
- import "../chunk-66IJDP6L.js";
8
+ import "../chunk-USWULPZJ.js";
9
+ import "../chunk-VQE5PAAT.js";
10
10
  import "../chunk-MMHG7WAM.js";
11
+ import "../chunk-FTO3W4UP.js";
12
+ import "../chunk-OIMLU4SF.js";
11
13
  import "../chunk-S5IGJ4RB.js";
12
14
  import "../chunk-WJO6NVE2.js";
13
15
  import "../chunk-WQKHFADH.js";
14
- import "../chunk-FTO3W4UP.js";
15
- import "../chunk-OIMLU4SF.js";
16
16
  export {
17
17
  Agent,
18
18
  AgentSession,
@@ -1,3 +1,4 @@
1
+ import { z } from 'zod';
1
2
  import { e as Agent } from '../agent-BW19m79B.js';
2
3
  import { J as JsonObject, C as CompletionModel } from '../types-C8loR4il.js';
3
4
  import { Extractor } from '../extractor/index.js';
@@ -8,7 +9,6 @@ import '../middleware-CZocYAtZ.js';
8
9
  import '../types-IB2e9u5M.js';
9
10
  import '../vector-store/index.js';
10
11
  import '../zod-schema-C7F4clpm.js';
11
- import 'zod';
12
12
 
13
13
  /** Minimal interface for anything that can run as a pipeline stage. */
14
14
  interface PipelineOp<Input = unknown, Output = unknown> {
@@ -108,8 +108,8 @@ declare class Pipeline<Input, Output> implements PipelineOp<Input, Awaited<Outpu
108
108
  declare class PipelineBuilder<Input, Output = Input> {
109
109
  private readonly executor;
110
110
  private readonly state;
111
- constructor();
112
- constructor(metadata: PipelineMetadata);
111
+ constructor(schema: z.ZodType<Output, Input>);
112
+ constructor(schema: z.ZodType<Output, Input>, metadata: PipelineMetadata);
113
113
  constructor(executor: (input: Input) => Output | Promise<Output>);
114
114
  constructor(executor: PipelineExecutor<Input, Output>, state: PipelineBuilderState);
115
115
  /** Add a synchronous or asynchronous transform stage. */
@@ -5,6 +5,9 @@ import {
5
5
  mapWithConcurrency
6
6
  } from "../chunk-OIMLU4SF.js";
7
7
 
8
+ // src/pipeline/builder.ts
9
+ import { z } from "zod";
10
+
8
11
  // src/pipeline/graph.ts
9
12
  function initialBuilderState(metadata) {
10
13
  return {
@@ -189,10 +192,10 @@ async function runNode(context, node, fn) {
189
192
  var PipelineBuilder = class _PipelineBuilder {
190
193
  executor;
191
194
  state;
192
- constructor(metadataOrExecutor, state) {
193
- if (state !== void 0) {
195
+ constructor(metadataOrExecutor, stateOrMetadata) {
196
+ if (stateOrMetadata !== void 0 && isBuilderState(stateOrMetadata)) {
194
197
  this.executor = metadataOrExecutor;
195
- this.state = state;
198
+ this.state = stateOrMetadata;
196
199
  return;
197
200
  }
198
201
  if (typeof metadataOrExecutor === "function") {
@@ -201,6 +204,13 @@ var PipelineBuilder = class _PipelineBuilder {
201
204
  this.state = initialBuilderState({});
202
205
  return;
203
206
  }
207
+ if (isZodSchema(metadataOrExecutor)) {
208
+ const schema = metadataOrExecutor;
209
+ const metadata = stateOrMetadata !== void 0 && isPipelineMetadata(stateOrMetadata) ? stateOrMetadata : {};
210
+ this.executor = ((input) => schema.parse(input));
211
+ this.state = initialBuilderState(metadata);
212
+ return;
213
+ }
204
214
  this.executor = identity;
205
215
  this.state = initialBuilderState(metadataOrExecutor ?? {});
206
216
  }
@@ -338,6 +348,23 @@ var PipelineBuilder = class _PipelineBuilder {
338
348
  function identity(input) {
339
349
  return input;
340
350
  }
351
+ function isZodSchema(value) {
352
+ return value instanceof z.ZodType;
353
+ }
354
+ function isBuilderState(value) {
355
+ if (typeof value !== "object" || value === null || Array.isArray(value)) {
356
+ return false;
357
+ }
358
+ const candidate = value;
359
+ return "graph" in candidate && "terminalNodeId" in candidate && "terminalNodeIds" in candidate && "nextNodeIndex" in candidate && "nextEdgeIndex" in candidate;
360
+ }
361
+ function isPipelineMetadata(value) {
362
+ if (typeof value !== "object" || value === null || Array.isArray(value)) {
363
+ return false;
364
+ }
365
+ const candidate = value;
366
+ return "id" in candidate || "name" in candidate || "description" in candidate || "metadata" in candidate;
367
+ }
341
368
  export {
342
369
  Pipeline,
343
370
  PipelineBuilder
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/pipeline/graph.ts","../../src/pipeline/pipeline.ts","../../src/pipeline/runtime.ts","../../src/pipeline/builder.ts"],"sourcesContent":["import type { JsonObject } from \"../completion\";\nimport { compact } from \"../internal/compact\";\nimport type {\n PipelineBuilderState,\n PipelineGraph,\n PipelineGraphNode,\n PipelineMetadata,\n PipelineStageKind,\n} from \"./types\";\n\nexport function initialBuilderState(metadata: PipelineMetadata): PipelineBuilderState {\n return {\n graph: initialGraph(metadata),\n terminalNodeId: \"input\",\n terminalNodeIds: [\"input\"],\n nextNodeIndex: 1,\n nextEdgeIndex: 1,\n };\n}\n\nexport function initialGraph(metadata: PipelineMetadata): PipelineGraph {\n const id = normalizeId(metadata.id ?? \"pipeline\");\n return {\n ...compact({\n id,\n name: metadata.name,\n description: metadata.description,\n metadata: metadata.metadata,\n }),\n nodes: [{ id: \"input\", kind: \"input\", label: \"Input\" }],\n edges: [],\n };\n}\n\nexport function appendNode(\n state: PipelineBuilderState,\n kind: PipelineStageKind,\n label: string,\n options: {\n description?: string | undefined;\n metadata?: JsonObject | undefined;\n preferredId?: string | undefined;\n agentId?: string | undefined;\n agentName?: string | undefined;\n pipelineId?: string | undefined;\n } = {},\n): { state: PipelineBuilderState; node: PipelineGraphNode } {\n const node = graphNode(kind, label, state.nextNodeIndex, {\n ...options,\n existingIds: new Set(state.graph.nodes.map((item) => item.id)),\n });\n return {\n node,\n state: appendGraphNode(state, node, activeTerminalNodeIds(state), [node.id]),\n };\n}\n\nexport function appendChildNode(\n state: PipelineBuilderState,\n parentId: string,\n kind: PipelineStageKind,\n label: string,\n options: {\n branchKey?: string | undefined;\n } = {},\n): { state: PipelineBuilderState; node: PipelineGraphNode } {\n const node = graphNode(kind, label, state.nextNodeIndex, {\n ...options,\n existingIds: new Set(state.graph.nodes.map((item) => item.id)),\n });\n return {\n node,\n state: appendGraphNode(state, node, [parentId], activeTerminalNodeIds(state)),\n };\n}\n\nexport function activeTerminalNodeIds(state: PipelineBuilderState): string[] {\n return state.terminalNodeIds.length > 0 ? state.terminalNodeIds : [state.terminalNodeId];\n}\n\nexport function withTerminalNodes(\n state: PipelineBuilderState,\n terminalNodeIds: string[],\n): PipelineBuilderState {\n return {\n ...state,\n terminalNodeId: terminalNodeIds.at(-1) ?? state.terminalNodeId,\n terminalNodeIds,\n };\n}\n\nexport function withOutputNode(state: PipelineBuilderState): PipelineGraph {\n const graph = cloneGraph(state.graph);\n if (graph.nodes.some((node) => node.id === \"output\")) {\n return graph;\n }\n graph.nodes.push({ id: \"output\", kind: \"output\", label: \"Output\" });\n graph.edges.push(\n ...activeTerminalNodeIds(state).map((sourceId, index) => ({\n id: `edge_${state.nextEdgeIndex + index}`,\n source: sourceId,\n target: \"output\",\n })),\n );\n return graph;\n}\n\nexport function nextStageLabel(state: PipelineBuilderState, prefix: string): string {\n return `${prefix} ${state.nextNodeIndex}`;\n}\n\nexport function cloneGraph(graph: PipelineGraph): PipelineGraph {\n return {\n ...graph,\n nodes: graph.nodes.map((node) => ({ ...node })),\n edges: graph.edges.map((edge) => ({ ...edge })),\n };\n}\n\nfunction appendGraphNode(\n state: PipelineBuilderState,\n node: PipelineGraphNode,\n sourceIds: string[],\n terminalNodeIds: string[],\n): PipelineBuilderState {\n const edges = sourceIds.map((sourceId, index) => ({\n id: `edge_${state.nextEdgeIndex + index}`,\n source: sourceId,\n target: node.id,\n }));\n const terminalNodeId = terminalNodeIds.at(-1) ?? state.terminalNodeId;\n return {\n graph: {\n ...state.graph,\n nodes: [...state.graph.nodes, node],\n edges: [...state.graph.edges, ...edges],\n },\n terminalNodeId,\n terminalNodeIds,\n nextNodeIndex: state.nextNodeIndex + 1,\n nextEdgeIndex: state.nextEdgeIndex + edges.length,\n };\n}\n\nfunction graphNode(\n kind: PipelineStageKind,\n label: string,\n index: number,\n options: {\n description?: string | undefined;\n metadata?: JsonObject | undefined;\n preferredId?: string | undefined;\n agentId?: string | undefined;\n agentName?: string | undefined;\n pipelineId?: string | undefined;\n branchKey?: string | undefined;\n existingIds?: Set<string> | undefined;\n } = {},\n): PipelineGraphNode {\n const id = uniqueGraphNodeId(\n normalizeId(options.preferredId ?? `${kind}_${index}`),\n options.existingIds ?? new Set(),\n );\n return compact({\n id,\n kind,\n label,\n description: options.description,\n metadata: options.metadata,\n agentId: options.agentId,\n agentName: options.agentName,\n pipelineId: options.pipelineId,\n branchKey: options.branchKey,\n }) as PipelineGraphNode;\n}\n\nfunction normalizeId(value: string): string {\n const normalized = value\n .trim()\n .toLowerCase()\n .replace(/[^a-z0-9_-]+/g, \"_\")\n .replace(/^_+|_+$/g, \"\");\n return normalized.length === 0 ? \"pipeline\" : normalized;\n}\n\nfunction uniqueGraphNodeId(baseId: string, existingIds: Set<string>): string {\n let id = baseId;\n let suffix = 2;\n while (existingIds.has(id)) {\n id = `${baseId}_${suffix}`;\n suffix += 1;\n }\n return id;\n}\n","import type { JsonObject } from \"../completion\";\nimport { mapWithConcurrency } from \"../internal/concurrency\";\nimport { cloneGraph, initialGraph } from \"./graph\";\nimport type {\n PipelineBatchOptions,\n PipelineExecutor,\n PipelineGraph,\n PipelineOp,\n PipelineRunOptions,\n} from \"./types\";\n\n/** Runnable pipeline returned by `PipelineBuilder.build()`. */\nexport class Pipeline<Input, Output> implements PipelineOp<Input, Awaited<Output>> {\n readonly id: string;\n readonly name: string | undefined;\n readonly description: string | undefined;\n readonly metadata: JsonObject | undefined;\n\n constructor(\n private readonly executor: PipelineExecutor<Input, Output>,\n private readonly pipelineGraph: PipelineGraph = initialGraph({}),\n ) {\n this.id = pipelineGraph.id;\n this.name = pipelineGraph.name;\n this.description = pipelineGraph.description;\n this.metadata = pipelineGraph.metadata;\n }\n\n /** Run one input through the built pipeline and return the final stage output. */\n async run(input: Input, options: PipelineRunOptions = {}): Promise<Awaited<Output>> {\n return (await this.executor(input, { observer: options.observer })) as Awaited<Output>;\n }\n\n /** Run many inputs through the same pipeline with bounded concurrency. */\n async batch<I extends Iterable<Input>>(\n inputs: I,\n options: PipelineBatchOptions,\n ): Promise<Array<Awaited<Output>>> {\n return mapWithConcurrency([...inputs], options.concurrency, (input) => this.run(input));\n }\n\n graph(): PipelineGraph {\n return cloneGraph(this.pipelineGraph);\n }\n}\n","import type { PipelineGraphNode, PipelineRunContext } from \"./types\";\n\nexport async function runNode<Output>(\n context: PipelineRunContext,\n node: PipelineGraphNode,\n fn: () => Output | Promise<Output>,\n): Promise<Awaited<Output>> {\n const startedAt = Date.now();\n await context.observer?.onEvent({ type: \"stage_started\", node });\n try {\n const output = (await fn()) as Awaited<Output>;\n await context.observer?.onEvent({\n type: \"stage_completed\",\n node,\n durationMs: Date.now() - startedAt,\n });\n return output;\n } catch (error) {\n await context.observer?.onEvent({\n type: \"stage_failed\",\n node,\n durationMs: Date.now() - startedAt,\n error,\n });\n throw error;\n }\n}\n","import type { Agent } from \"../agent/agent\";\nimport type { CompletionModel } from \"../completion\";\nimport type { Extractor } from \"../extractor\";\nimport {\n appendChildNode,\n appendNode,\n initialBuilderState,\n nextStageLabel,\n withOutputNode,\n withTerminalNodes,\n} from \"./graph\";\nimport { Pipeline } from \"./pipeline\";\nimport { runNode } from \"./runtime\";\nimport type {\n ParallelOutput,\n PipelineBuilderState,\n PipelineExecutor,\n PipelineGraphNode,\n PipelineMetadata,\n PipelineOp,\n PipelineRunContext,\n PipelineStageMetadata,\n} from \"./types\";\n\n/** Builds a typed pipeline from an original input type to an inferred output type. */\nexport class PipelineBuilder<Input, Output = Input> {\n private readonly executor: PipelineExecutor<Input, Output>;\n private readonly state: PipelineBuilderState;\n\n constructor();\n constructor(metadata: PipelineMetadata);\n constructor(executor: (input: Input) => Output | Promise<Output>);\n constructor(executor: PipelineExecutor<Input, Output>, state: PipelineBuilderState);\n constructor(\n metadataOrExecutor?:\n | PipelineMetadata\n | ((input: Input) => Output | Promise<Output>)\n | PipelineExecutor<Input, Output>,\n state?: PipelineBuilderState,\n ) {\n if (state !== undefined) {\n this.executor = metadataOrExecutor as PipelineExecutor<Input, Output>;\n this.state = state;\n return;\n }\n\n if (typeof metadataOrExecutor === \"function\") {\n const executor = metadataOrExecutor as (input: Input) => Output | Promise<Output>;\n this.executor = ((input) => executor(input)) as PipelineExecutor<Input, Output>;\n this.state = initialBuilderState({});\n return;\n }\n\n this.executor = identity as PipelineExecutor<Input, Output>;\n this.state = initialBuilderState(metadataOrExecutor ?? {});\n }\n\n /** Add a synchronous or asynchronous transform stage. */\n step<Next>(\n fn: (input: Awaited<Output>) => Next | Promise<Next>,\n metadata?: PipelineStageMetadata,\n ): PipelineBuilder<Input, Awaited<Next>> {\n const next = appendNode(\n this.state,\n \"step\",\n metadata?.name ?? nextStageLabel(this.state, \"Step\"),\n {\n description: metadata?.description,\n metadata: metadata?.metadata,\n preferredId: metadata?.id,\n },\n );\n return new PipelineBuilder<Input, Awaited<Next>>(\n async (input, context): Promise<Awaited<Next>> => {\n const value = await this.runStep(input, context);\n const result = await runNode(context, next.node, () => fn(value));\n return result as Awaited<Next>;\n },\n next.state,\n );\n }\n\n /** Compose another pipeline operation after the current stage. */\n use<Next>(\n op: PipelineOp<Awaited<Output>, Next>,\n metadata?: PipelineStageMetadata,\n ): PipelineBuilder<Input, Awaited<Next>> {\n const nested = op instanceof Pipeline ? op : undefined;\n const next = appendNode(\n this.state,\n nested === undefined ? \"step\" : \"pipeline\",\n metadata?.name ??\n nested?.name ??\n nested?.id ??\n nextStageLabel(this.state, nested === undefined ? \"Operation\" : \"Pipeline\"),\n {\n description: metadata?.description ?? nested?.description,\n metadata: metadata?.metadata ?? nested?.metadata,\n preferredId: metadata?.id,\n pipelineId: nested?.id,\n },\n );\n return new PipelineBuilder<Input, Awaited<Next>>(\n async (input, context): Promise<Awaited<Next>> => {\n const value = await this.runStep(input, context);\n const result = await runNode(context, next.node, () => op.run(value));\n return result as Awaited<Next>;\n },\n next.state,\n );\n }\n\n /** Run named branch operations concurrently from the current value. */\n parallel<Branches extends Record<string, PipelineOp<Awaited<Output>, unknown>>>(\n branches: Branches,\n metadata?: PipelineStageMetadata,\n ): PipelineBuilder<Input, ParallelOutput<Branches>> {\n const parallel = appendNode(\n this.state,\n \"parallel\",\n metadata?.name ?? `${Object.keys(branches).length} parallel branches`,\n {\n description: metadata?.description,\n metadata: metadata?.metadata,\n preferredId: metadata?.id,\n },\n );\n let nextState = parallel.state;\n const branchNodes: Record<string, PipelineGraphNode> = {};\n for (const key of Object.keys(branches)) {\n const branch = appendChildNode(nextState, parallel.node.id, \"branch\", key, {\n branchKey: key,\n });\n nextState = branch.state;\n branchNodes[key] = branch.node;\n }\n nextState = withTerminalNodes(\n nextState,\n Object.values(branchNodes).map((node) => node.id),\n );\n\n return new PipelineBuilder<Input, ParallelOutput<Branches>>(async (input, context) => {\n const value = await this.runStep(input, context);\n const entries = await runNode(context, parallel.node, () =>\n Promise.all(\n Object.entries(branches).map(async ([key, op]) => {\n const node = branchNodes[key] as PipelineGraphNode;\n const output = await runNode(context, node, () => op.run(value));\n return [key, output] as const;\n }),\n ),\n );\n return Object.fromEntries(entries) as ParallelOutput<Branches>;\n }, nextState);\n }\n\n /** Send the current value to an agent as text and continue with the agent output. */\n prompt(\n agent: Agent<CompletionModel>,\n metadata?: PipelineStageMetadata,\n ): PipelineBuilder<Input, string> {\n const next = appendNode(this.state, \"agent\", metadata?.name ?? agent.name ?? agent.id, {\n description: metadata?.description ?? agent.description,\n metadata: metadata?.metadata,\n preferredId: metadata?.id,\n agentId: agent.id,\n agentName: agent.name,\n });\n return new PipelineBuilder<Input, string>(async (input, context) => {\n const value = await this.runStep(input, context);\n return runNode(context, next.node, async () => {\n const response = await agent.prompt(String(value)).send();\n return response.output;\n });\n }, next.state);\n }\n\n /** Send the current value to an extractor as text and continue with typed schema data. */\n extract<T>(\n extractor: Extractor<T, CompletionModel>,\n metadata?: PipelineStageMetadata,\n ): PipelineBuilder<Input, T> {\n const next = appendNode(\n this.state,\n \"extractor\",\n metadata?.name ?? nextStageLabel(this.state, \"Extractor\"),\n {\n description: metadata?.description,\n metadata: metadata?.metadata,\n preferredId: metadata?.id,\n },\n );\n return new PipelineBuilder<Input, T>(async (input, context) => {\n const value = await this.runStep(input, context);\n return runNode(context, next.node, () => extractor.extract(String(value)));\n }, next.state);\n }\n\n /** Finish the builder and return a runnable pipeline. */\n build(): Pipeline<Input, Awaited<Output>> {\n const graph = withOutputNode(this.state);\n return new Pipeline<Input, Awaited<Output>>(\n (input, context) => this.runStep(input, context) as Promise<Awaited<Output>>,\n graph,\n );\n }\n\n private async runStep(input: Input, context: PipelineRunContext): Promise<Awaited<Output>> {\n return (await this.executor(input, context)) as Awaited<Output>;\n }\n}\n\nfunction identity<T>(input: T): T {\n return input;\n}\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../../src/pipeline/builder.ts","../../src/pipeline/graph.ts","../../src/pipeline/pipeline.ts","../../src/pipeline/runtime.ts"],"sourcesContent":["import { z } from \"zod\";\nimport type { Agent } from \"../agent/agent\";\nimport type { CompletionModel } from \"../completion\";\nimport type { Extractor } from \"../extractor\";\nimport {\n appendChildNode,\n appendNode,\n initialBuilderState,\n nextStageLabel,\n withOutputNode,\n withTerminalNodes,\n} from \"./graph\";\nimport { Pipeline } from \"./pipeline\";\nimport { runNode } from \"./runtime\";\nimport type {\n ParallelOutput,\n PipelineBuilderState,\n PipelineExecutor,\n PipelineGraphNode,\n PipelineMetadata,\n PipelineOp,\n PipelineRunContext,\n PipelineStageMetadata,\n} from \"./types\";\n\n/** Builds a typed pipeline from an original input type to an inferred output type. */\nexport class PipelineBuilder<Input, Output = Input> {\n private readonly executor: PipelineExecutor<Input, Output>;\n private readonly state: PipelineBuilderState;\n\n constructor(schema: z.ZodType<Output, Input>);\n constructor(schema: z.ZodType<Output, Input>, metadata: PipelineMetadata);\n constructor(executor: (input: Input) => Output | Promise<Output>);\n constructor(executor: PipelineExecutor<Input, Output>, state: PipelineBuilderState);\n constructor(\n metadataOrExecutor?:\n | PipelineMetadata\n | z.ZodType\n | ((input: Input) => Output | Promise<Output>)\n | PipelineExecutor<Input, Output>,\n stateOrMetadata?: PipelineBuilderState | PipelineMetadata,\n ) {\n if (stateOrMetadata !== undefined && isBuilderState(stateOrMetadata)) {\n this.executor = metadataOrExecutor as PipelineExecutor<Input, Output>;\n this.state = stateOrMetadata;\n return;\n }\n\n if (typeof metadataOrExecutor === \"function\") {\n const executor = metadataOrExecutor as (input: Input) => Output | Promise<Output>;\n this.executor = ((input) => executor(input)) as PipelineExecutor<Input, Output>;\n this.state = initialBuilderState({});\n return;\n }\n\n if (isZodSchema(metadataOrExecutor)) {\n const schema = metadataOrExecutor;\n const metadata: PipelineMetadata =\n stateOrMetadata !== undefined && isPipelineMetadata(stateOrMetadata) ? stateOrMetadata : {};\n this.executor = ((input) => schema.parse(input)) as PipelineExecutor<Input, Output>;\n this.state = initialBuilderState(metadata);\n return;\n }\n\n this.executor = identity as PipelineExecutor<Input, Output>;\n this.state = initialBuilderState((metadataOrExecutor as PipelineMetadata | undefined) ?? {});\n }\n\n /** Add a synchronous or asynchronous transform stage. */\n step<Next>(\n fn: (input: Awaited<Output>) => Next | Promise<Next>,\n metadata?: PipelineStageMetadata,\n ): PipelineBuilder<Input, Awaited<Next>> {\n const next = appendNode(\n this.state,\n \"step\",\n metadata?.name ?? nextStageLabel(this.state, \"Step\"),\n {\n description: metadata?.description,\n metadata: metadata?.metadata,\n preferredId: metadata?.id,\n },\n );\n return new PipelineBuilder<Input, Awaited<Next>>(\n async (input, context): Promise<Awaited<Next>> => {\n const value = await this.runStep(input, context);\n const result = await runNode(context, next.node, () => fn(value));\n return result as Awaited<Next>;\n },\n next.state,\n );\n }\n\n /** Compose another pipeline operation after the current stage. */\n use<Next>(\n op: PipelineOp<Awaited<Output>, Next>,\n metadata?: PipelineStageMetadata,\n ): PipelineBuilder<Input, Awaited<Next>> {\n const nested = op instanceof Pipeline ? op : undefined;\n const next = appendNode(\n this.state,\n nested === undefined ? \"step\" : \"pipeline\",\n metadata?.name ??\n nested?.name ??\n nested?.id ??\n nextStageLabel(this.state, nested === undefined ? \"Operation\" : \"Pipeline\"),\n {\n description: metadata?.description ?? nested?.description,\n metadata: metadata?.metadata ?? nested?.metadata,\n preferredId: metadata?.id,\n pipelineId: nested?.id,\n },\n );\n return new PipelineBuilder<Input, Awaited<Next>>(\n async (input, context): Promise<Awaited<Next>> => {\n const value = await this.runStep(input, context);\n const result = await runNode(context, next.node, () => op.run(value));\n return result as Awaited<Next>;\n },\n next.state,\n );\n }\n\n /** Run named branch operations concurrently from the current value. */\n parallel<Branches extends Record<string, PipelineOp<Awaited<Output>, unknown>>>(\n branches: Branches,\n metadata?: PipelineStageMetadata,\n ): PipelineBuilder<Input, ParallelOutput<Branches>> {\n const parallel = appendNode(\n this.state,\n \"parallel\",\n metadata?.name ?? `${Object.keys(branches).length} parallel branches`,\n {\n description: metadata?.description,\n metadata: metadata?.metadata,\n preferredId: metadata?.id,\n },\n );\n let nextState = parallel.state;\n const branchNodes: Record<string, PipelineGraphNode> = {};\n for (const key of Object.keys(branches)) {\n const branch = appendChildNode(nextState, parallel.node.id, \"branch\", key, {\n branchKey: key,\n });\n nextState = branch.state;\n branchNodes[key] = branch.node;\n }\n nextState = withTerminalNodes(\n nextState,\n Object.values(branchNodes).map((node) => node.id),\n );\n\n return new PipelineBuilder<Input, ParallelOutput<Branches>>(async (input, context) => {\n const value = await this.runStep(input, context);\n const entries = await runNode(context, parallel.node, () =>\n Promise.all(\n Object.entries(branches).map(async ([key, op]) => {\n const node = branchNodes[key] as PipelineGraphNode;\n const output = await runNode(context, node, () => op.run(value));\n return [key, output] as const;\n }),\n ),\n );\n return Object.fromEntries(entries) as ParallelOutput<Branches>;\n }, nextState);\n }\n\n /** Send the current value to an agent as text and continue with the agent output. */\n prompt(\n agent: Agent<CompletionModel>,\n metadata?: PipelineStageMetadata,\n ): PipelineBuilder<Input, string> {\n const next = appendNode(this.state, \"agent\", metadata?.name ?? agent.name ?? agent.id, {\n description: metadata?.description ?? agent.description,\n metadata: metadata?.metadata,\n preferredId: metadata?.id,\n agentId: agent.id,\n agentName: agent.name,\n });\n return new PipelineBuilder<Input, string>(async (input, context) => {\n const value = await this.runStep(input, context);\n return runNode(context, next.node, async () => {\n const response = await agent.prompt(String(value)).send();\n return response.output;\n });\n }, next.state);\n }\n\n /** Send the current value to an extractor as text and continue with typed schema data. */\n extract<T>(\n extractor: Extractor<T, CompletionModel>,\n metadata?: PipelineStageMetadata,\n ): PipelineBuilder<Input, T> {\n const next = appendNode(\n this.state,\n \"extractor\",\n metadata?.name ?? nextStageLabel(this.state, \"Extractor\"),\n {\n description: metadata?.description,\n metadata: metadata?.metadata,\n preferredId: metadata?.id,\n },\n );\n return new PipelineBuilder<Input, T>(async (input, context) => {\n const value = await this.runStep(input, context);\n return runNode(context, next.node, () => extractor.extract(String(value)));\n }, next.state);\n }\n\n /** Finish the builder and return a runnable pipeline. */\n build(): Pipeline<Input, Awaited<Output>> {\n const graph = withOutputNode(this.state);\n return new Pipeline<Input, Awaited<Output>>(\n (input, context) => this.runStep(input, context) as Promise<Awaited<Output>>,\n graph,\n );\n }\n\n private async runStep(input: Input, context: PipelineRunContext): Promise<Awaited<Output>> {\n return (await this.executor(input, context)) as Awaited<Output>;\n }\n}\n\nfunction identity<T>(input: T): T {\n return input;\n}\n\nfunction isZodSchema(value: unknown): value is z.ZodType {\n return value instanceof z.ZodType;\n}\n\nfunction isBuilderState(value: unknown): value is PipelineBuilderState {\n if (typeof value !== \"object\" || value === null || Array.isArray(value)) {\n return false;\n }\n const candidate = value as Record<string, unknown>;\n return (\n \"graph\" in candidate &&\n \"terminalNodeId\" in candidate &&\n \"terminalNodeIds\" in candidate &&\n \"nextNodeIndex\" in candidate &&\n \"nextEdgeIndex\" in candidate\n );\n}\n\nfunction isPipelineMetadata(value: unknown): value is PipelineMetadata {\n if (typeof value !== \"object\" || value === null || Array.isArray(value)) {\n return false;\n }\n const candidate = value as Record<string, unknown>;\n return (\n \"id\" in candidate ||\n \"name\" in candidate ||\n \"description\" in candidate ||\n \"metadata\" in candidate\n );\n}\n","import type { JsonObject } from \"../completion\";\nimport { compact } from \"../internal/compact\";\nimport type {\n PipelineBuilderState,\n PipelineGraph,\n PipelineGraphNode,\n PipelineMetadata,\n PipelineStageKind,\n} from \"./types\";\n\nexport function initialBuilderState(metadata: PipelineMetadata): PipelineBuilderState {\n return {\n graph: initialGraph(metadata),\n terminalNodeId: \"input\",\n terminalNodeIds: [\"input\"],\n nextNodeIndex: 1,\n nextEdgeIndex: 1,\n };\n}\n\nexport function initialGraph(metadata: PipelineMetadata): PipelineGraph {\n const id = normalizeId(metadata.id ?? \"pipeline\");\n return {\n ...compact({\n id,\n name: metadata.name,\n description: metadata.description,\n metadata: metadata.metadata,\n }),\n nodes: [{ id: \"input\", kind: \"input\", label: \"Input\" }],\n edges: [],\n };\n}\n\nexport function appendNode(\n state: PipelineBuilderState,\n kind: PipelineStageKind,\n label: string,\n options: {\n description?: string | undefined;\n metadata?: JsonObject | undefined;\n preferredId?: string | undefined;\n agentId?: string | undefined;\n agentName?: string | undefined;\n pipelineId?: string | undefined;\n } = {},\n): { state: PipelineBuilderState; node: PipelineGraphNode } {\n const node = graphNode(kind, label, state.nextNodeIndex, {\n ...options,\n existingIds: new Set(state.graph.nodes.map((item) => item.id)),\n });\n return {\n node,\n state: appendGraphNode(state, node, activeTerminalNodeIds(state), [node.id]),\n };\n}\n\nexport function appendChildNode(\n state: PipelineBuilderState,\n parentId: string,\n kind: PipelineStageKind,\n label: string,\n options: {\n branchKey?: string | undefined;\n } = {},\n): { state: PipelineBuilderState; node: PipelineGraphNode } {\n const node = graphNode(kind, label, state.nextNodeIndex, {\n ...options,\n existingIds: new Set(state.graph.nodes.map((item) => item.id)),\n });\n return {\n node,\n state: appendGraphNode(state, node, [parentId], activeTerminalNodeIds(state)),\n };\n}\n\nexport function activeTerminalNodeIds(state: PipelineBuilderState): string[] {\n return state.terminalNodeIds.length > 0 ? state.terminalNodeIds : [state.terminalNodeId];\n}\n\nexport function withTerminalNodes(\n state: PipelineBuilderState,\n terminalNodeIds: string[],\n): PipelineBuilderState {\n return {\n ...state,\n terminalNodeId: terminalNodeIds.at(-1) ?? state.terminalNodeId,\n terminalNodeIds,\n };\n}\n\nexport function withOutputNode(state: PipelineBuilderState): PipelineGraph {\n const graph = cloneGraph(state.graph);\n if (graph.nodes.some((node) => node.id === \"output\")) {\n return graph;\n }\n graph.nodes.push({ id: \"output\", kind: \"output\", label: \"Output\" });\n graph.edges.push(\n ...activeTerminalNodeIds(state).map((sourceId, index) => ({\n id: `edge_${state.nextEdgeIndex + index}`,\n source: sourceId,\n target: \"output\",\n })),\n );\n return graph;\n}\n\nexport function nextStageLabel(state: PipelineBuilderState, prefix: string): string {\n return `${prefix} ${state.nextNodeIndex}`;\n}\n\nexport function cloneGraph(graph: PipelineGraph): PipelineGraph {\n return {\n ...graph,\n nodes: graph.nodes.map((node) => ({ ...node })),\n edges: graph.edges.map((edge) => ({ ...edge })),\n };\n}\n\nfunction appendGraphNode(\n state: PipelineBuilderState,\n node: PipelineGraphNode,\n sourceIds: string[],\n terminalNodeIds: string[],\n): PipelineBuilderState {\n const edges = sourceIds.map((sourceId, index) => ({\n id: `edge_${state.nextEdgeIndex + index}`,\n source: sourceId,\n target: node.id,\n }));\n const terminalNodeId = terminalNodeIds.at(-1) ?? state.terminalNodeId;\n return {\n graph: {\n ...state.graph,\n nodes: [...state.graph.nodes, node],\n edges: [...state.graph.edges, ...edges],\n },\n terminalNodeId,\n terminalNodeIds,\n nextNodeIndex: state.nextNodeIndex + 1,\n nextEdgeIndex: state.nextEdgeIndex + edges.length,\n };\n}\n\nfunction graphNode(\n kind: PipelineStageKind,\n label: string,\n index: number,\n options: {\n description?: string | undefined;\n metadata?: JsonObject | undefined;\n preferredId?: string | undefined;\n agentId?: string | undefined;\n agentName?: string | undefined;\n pipelineId?: string | undefined;\n branchKey?: string | undefined;\n existingIds?: Set<string> | undefined;\n } = {},\n): PipelineGraphNode {\n const id = uniqueGraphNodeId(\n normalizeId(options.preferredId ?? `${kind}_${index}`),\n options.existingIds ?? new Set(),\n );\n return compact({\n id,\n kind,\n label,\n description: options.description,\n metadata: options.metadata,\n agentId: options.agentId,\n agentName: options.agentName,\n pipelineId: options.pipelineId,\n branchKey: options.branchKey,\n }) as PipelineGraphNode;\n}\n\nfunction normalizeId(value: string): string {\n const normalized = value\n .trim()\n .toLowerCase()\n .replace(/[^a-z0-9_-]+/g, \"_\")\n .replace(/^_+|_+$/g, \"\");\n return normalized.length === 0 ? \"pipeline\" : normalized;\n}\n\nfunction uniqueGraphNodeId(baseId: string, existingIds: Set<string>): string {\n let id = baseId;\n let suffix = 2;\n while (existingIds.has(id)) {\n id = `${baseId}_${suffix}`;\n suffix += 1;\n }\n return id;\n}\n","import type { JsonObject } from \"../completion\";\nimport { mapWithConcurrency } from \"../internal/concurrency\";\nimport { cloneGraph, initialGraph } from \"./graph\";\nimport type {\n PipelineBatchOptions,\n PipelineExecutor,\n PipelineGraph,\n PipelineOp,\n PipelineRunOptions,\n} from \"./types\";\n\n/** Runnable pipeline returned by `PipelineBuilder.build()`. */\nexport class Pipeline<Input, Output> implements PipelineOp<Input, Awaited<Output>> {\n readonly id: string;\n readonly name: string | undefined;\n readonly description: string | undefined;\n readonly metadata: JsonObject | undefined;\n\n constructor(\n private readonly executor: PipelineExecutor<Input, Output>,\n private readonly pipelineGraph: PipelineGraph = initialGraph({}),\n ) {\n this.id = pipelineGraph.id;\n this.name = pipelineGraph.name;\n this.description = pipelineGraph.description;\n this.metadata = pipelineGraph.metadata;\n }\n\n /** Run one input through the built pipeline and return the final stage output. */\n async run(input: Input, options: PipelineRunOptions = {}): Promise<Awaited<Output>> {\n return (await this.executor(input, { observer: options.observer })) as Awaited<Output>;\n }\n\n /** Run many inputs through the same pipeline with bounded concurrency. */\n async batch<I extends Iterable<Input>>(\n inputs: I,\n options: PipelineBatchOptions,\n ): Promise<Array<Awaited<Output>>> {\n return mapWithConcurrency([...inputs], options.concurrency, (input) => this.run(input));\n }\n\n graph(): PipelineGraph {\n return cloneGraph(this.pipelineGraph);\n }\n}\n","import type { PipelineGraphNode, PipelineRunContext } from \"./types\";\n\nexport async function runNode<Output>(\n context: PipelineRunContext,\n node: PipelineGraphNode,\n fn: () => Output | Promise<Output>,\n): Promise<Awaited<Output>> {\n const startedAt = Date.now();\n await context.observer?.onEvent({ type: \"stage_started\", node });\n try {\n const output = (await fn()) as Awaited<Output>;\n await context.observer?.onEvent({\n type: \"stage_completed\",\n node,\n durationMs: Date.now() - startedAt,\n });\n return output;\n } catch (error) {\n await context.observer?.onEvent({\n type: \"stage_failed\",\n node,\n durationMs: Date.now() - startedAt,\n error,\n });\n throw error;\n }\n}\n"],"mappings":"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","names":[]}
@@ -2,15 +2,15 @@ import {
2
2
  SkillValidationError,
3
3
  loadSkills,
4
4
  skill
5
- } from "../chunk-ZT2YH2GA.js";
5
+ } from "../chunk-ITYXP4CL.js";
6
6
  import "../chunk-YK4WAAS4.js";
7
- import "../chunk-IA47SXLS.js";
8
- import "../chunk-66IJDP6L.js";
7
+ import "../chunk-USWULPZJ.js";
8
+ import "../chunk-VQE5PAAT.js";
9
9
  import "../chunk-MMHG7WAM.js";
10
- import "../chunk-WJO6NVE2.js";
11
- import "../chunk-WQKHFADH.js";
12
10
  import "../chunk-FTO3W4UP.js";
13
11
  import "../chunk-OIMLU4SF.js";
12
+ import "../chunk-WJO6NVE2.js";
13
+ import "../chunk-WQKHFADH.js";
14
14
  export {
15
15
  SkillValidationError,
16
16
  loadSkills,
@@ -13,18 +13,18 @@ import {
13
13
  normalizeToolResultOutput,
14
14
  parseToolArgs,
15
15
  toolResultContentToText
16
- } from "../chunk-IA47SXLS.js";
16
+ } from "../chunk-USWULPZJ.js";
17
17
  import {
18
18
  createTool
19
- } from "../chunk-66IJDP6L.js";
19
+ } from "../chunk-VQE5PAAT.js";
20
20
  import "../chunk-MMHG7WAM.js";
21
+ import "../chunk-FTO3W4UP.js";
22
+ import "../chunk-OIMLU4SF.js";
21
23
  import {
22
24
  isToolResultContentArray,
23
25
  serializeToolResultOutput
24
26
  } from "../chunk-WJO6NVE2.js";
25
27
  import "../chunk-WQKHFADH.js";
26
- import "../chunk-FTO3W4UP.js";
27
- import "../chunk-OIMLU4SF.js";
28
28
  export {
29
29
  ToolCallError,
30
30
  ToolJsonError,
@@ -3,11 +3,11 @@ import {
3
3
  InMemoryVectorStore,
4
4
  createVectorSearchTool,
5
5
  vectorFilter
6
- } from "../chunk-66IJDP6L.js";
6
+ } from "../chunk-VQE5PAAT.js";
7
7
  import "../chunk-MMHG7WAM.js";
8
- import "../chunk-WQKHFADH.js";
9
8
  import "../chunk-FTO3W4UP.js";
10
9
  import "../chunk-OIMLU4SF.js";
10
+ import "../chunk-WQKHFADH.js";
11
11
  export {
12
12
  InMemoryVectorIndex,
13
13
  InMemoryVectorStore,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@anvia/core",
3
- "version": "0.7.0",
3
+ "version": "0.7.1",
4
4
  "description": "Core runtime primitives for context-aware Anvia agents.",
5
5
  "author": "anvia",
6
6
  "maintainer": "Indra Zulfi",