@anvia/core 0.12.8 → 0.13.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.
Files changed (88) hide show
  1. package/dist/agent/index.d.ts +11 -11
  2. package/dist/agent/index.js +10 -11
  3. package/dist/{agent-BB9vVH6P.d.ts → agent-3qSfIKIj.d.ts} +8 -7
  4. package/dist/audio-generation/index.d.ts +1 -1
  5. package/dist/{chunk-NPZDYOE6.js → chunk-2ODTMRHP.js} +11 -10
  6. package/dist/chunk-2ODTMRHP.js.map +1 -0
  7. package/dist/{chunk-IN5NPAWL.js → chunk-CLFDBOH3.js} +6 -6
  8. package/dist/{chunk-QVFOCNF6.js → chunk-CNTGKNZ3.js} +99 -10
  9. package/dist/chunk-CNTGKNZ3.js.map +1 -0
  10. package/dist/chunk-CQNNSZPG.js +9 -0
  11. package/dist/chunk-CQNNSZPG.js.map +1 -0
  12. package/dist/{chunk-HF4KHHNM.js → chunk-DC2GJDPR.js} +5 -5
  13. package/dist/chunk-DC2GJDPR.js.map +1 -0
  14. package/dist/{chunk-IZM6FNCT.js → chunk-I7TM7TKX.js} +48 -42
  15. package/dist/chunk-I7TM7TKX.js.map +1 -0
  16. package/dist/{chunk-WRNPY5C6.js → chunk-KXXFWLKP.js} +3 -3
  17. package/dist/{chunk-2STANSN6.js → chunk-L52YHJ5L.js} +23 -20
  18. package/dist/chunk-L52YHJ5L.js.map +1 -0
  19. package/dist/{chunk-UDISNNKR.js → chunk-NS7W4G26.js} +70 -21
  20. package/dist/chunk-NS7W4G26.js.map +1 -0
  21. package/dist/{chunk-SHORX7TZ.js → chunk-WHHQWT7D.js} +12 -13
  22. package/dist/chunk-WHHQWT7D.js.map +1 -0
  23. package/dist/{chunk-EGZCTSEW.js → chunk-WWNXZWST.js} +208 -132
  24. package/dist/chunk-WWNXZWST.js.map +1 -0
  25. package/dist/{chunk-JS5MGVNM.js → chunk-YBBD4HZ3.js} +8 -7
  26. package/dist/{chunk-JS5MGVNM.js.map → chunk-YBBD4HZ3.js.map} +1 -1
  27. package/dist/{chunk-FUJ3POKH.js → chunk-YTF65GYU.js} +2 -2
  28. package/dist/completion/index.d.ts +3 -3
  29. package/dist/completion/index.js +4 -2
  30. package/dist/embeddings/index.js +1 -1
  31. package/dist/evals/index.d.ts +8 -8
  32. package/dist/evals/index.js +59 -36
  33. package/dist/evals/index.js.map +1 -1
  34. package/dist/extractor/index.d.ts +8 -8
  35. package/dist/extractor/index.js +11 -12
  36. package/dist/guardrails/index.d.ts +1 -1
  37. package/dist/hooks/index.d.ts +3 -3
  38. package/dist/hooks/index.js +1 -2
  39. package/dist/image-generation/index.d.ts +1 -1
  40. package/dist/{index-CM-V4LS3.d.ts → index-ZQAiHW5Q.d.ts} +2 -2
  41. package/dist/index.d.ts +12 -12
  42. package/dist/index.js +16 -14
  43. package/dist/internal/agent.d.ts +8 -8
  44. package/dist/internal/agent.js +9 -10
  45. package/dist/{create-completion-CC8-Ep3w.d.ts → json-C5a6auAm.d.ts} +4 -2
  46. package/dist/loaders/index.d.ts +1 -1
  47. package/dist/mcp/index.d.ts +4 -4
  48. package/dist/mcp/index.js +1 -1
  49. package/dist/mcp/index.js.map +1 -1
  50. package/dist/memory/index.d.ts +3 -3
  51. package/dist/{middleware-i-jLsLom.d.ts → middleware-Cc_-sosu.d.ts} +3 -3
  52. package/dist/observability/index.d.ts +3 -3
  53. package/dist/pipeline/index.d.ts +8 -8
  54. package/dist/pipeline/index.js +34 -19
  55. package/dist/pipeline/index.js.map +1 -1
  56. package/dist/request/index.d.ts +8 -8
  57. package/dist/request/index.js +8 -9
  58. package/dist/skills/index.d.ts +4 -4
  59. package/dist/skills/index.js +7 -7
  60. package/dist/{think-tool-BKDCOJh5.d.ts → think-tool-DvhOlrL8.d.ts} +1 -1
  61. package/dist/tool/index.d.ts +5 -5
  62. package/dist/tool/index.js +5 -6
  63. package/dist/{tool-f2stpvUP.d.ts → tool-6f9bK92X.d.ts} +1 -1
  64. package/dist/transcription/index.d.ts +1 -1
  65. package/dist/{types-5JgWDgaM.d.ts → types-BG3s2WzI.d.ts} +2 -2
  66. package/dist/{types-b6fOVoW1.d.ts → types-BZQlZ4Vs.d.ts} +1 -1
  67. package/dist/{types-Dh7gfoGw.d.ts → types-BaYwqozV.d.ts} +1 -1
  68. package/dist/{types-DmvXANwl.d.ts → types-C708DOhL.d.ts} +1 -1
  69. package/dist/{types-bNDxj4Tt.d.ts → types-CNeDsGjw.d.ts} +1 -1
  70. package/dist/{types-C15r7N_4.d.ts → types-DzdJOf35.d.ts} +17 -6
  71. package/dist/ui/index.d.ts +1 -1
  72. package/dist/ui/index.js +2 -2
  73. package/dist/vector-store/index.d.ts +4 -4
  74. package/dist/vector-store/index.js +3 -4
  75. package/package.json +1 -1
  76. package/dist/chunk-2STANSN6.js.map +0 -1
  77. package/dist/chunk-EGZCTSEW.js.map +0 -1
  78. package/dist/chunk-HF4KHHNM.js.map +0 -1
  79. package/dist/chunk-IZM6FNCT.js.map +0 -1
  80. package/dist/chunk-MMHG7WAM.js +0 -19
  81. package/dist/chunk-MMHG7WAM.js.map +0 -1
  82. package/dist/chunk-NPZDYOE6.js.map +0 -1
  83. package/dist/chunk-QVFOCNF6.js.map +0 -1
  84. package/dist/chunk-SHORX7TZ.js.map +0 -1
  85. package/dist/chunk-UDISNNKR.js.map +0 -1
  86. /package/dist/{chunk-IN5NPAWL.js.map → chunk-CLFDBOH3.js.map} +0 -0
  87. /package/dist/{chunk-WRNPY5C6.js.map → chunk-KXXFWLKP.js.map} +0 -0
  88. /package/dist/{chunk-FUJ3POKH.js.map → chunk-YTF65GYU.js.map} +0 -0
@@ -1,6 +1,3 @@
1
- import {
2
- compact
3
- } from "../chunk-MMHG7WAM.js";
4
1
  import {
5
2
  mapWithConcurrency
6
3
  } from "../chunk-OIMLU4SF.js";
@@ -20,16 +17,21 @@ function initialBuilderState(metadata) {
20
17
  }
21
18
  function initialGraph(metadata) {
22
19
  const id = normalizeId(metadata.id ?? "pipeline");
23
- return {
24
- ...compact({
25
- id,
26
- name: metadata.name,
27
- description: metadata.description,
28
- metadata: metadata.metadata
29
- }),
20
+ const graph = {
21
+ id,
30
22
  nodes: [{ id: "input", kind: "input", label: "Input" }],
31
23
  edges: []
32
24
  };
25
+ if (metadata.name !== void 0) {
26
+ graph.name = metadata.name;
27
+ }
28
+ if (metadata.description !== void 0) {
29
+ graph.description = metadata.description;
30
+ }
31
+ if (metadata.metadata !== void 0) {
32
+ graph.metadata = metadata.metadata;
33
+ }
34
+ return graph;
33
35
  }
34
36
  function appendNode(state, kind, label, options = {}) {
35
37
  const node = graphNode(kind, label, state.nextNodeIndex, {
@@ -110,17 +112,30 @@ function graphNode(kind, label, index, options = {}) {
110
112
  normalizeId(options.preferredId ?? `${kind}_${index}`),
111
113
  options.existingIds ?? /* @__PURE__ */ new Set()
112
114
  );
113
- return compact({
115
+ const node = {
114
116
  id,
115
117
  kind,
116
- label,
117
- description: options.description,
118
- metadata: options.metadata,
119
- agentId: options.agentId,
120
- agentName: options.agentName,
121
- pipelineId: options.pipelineId,
122
- branchKey: options.branchKey
123
- });
118
+ label
119
+ };
120
+ if (options.description !== void 0) {
121
+ node.description = options.description;
122
+ }
123
+ if (options.metadata !== void 0) {
124
+ node.metadata = options.metadata;
125
+ }
126
+ if (options.agentId !== void 0) {
127
+ node.agentId = options.agentId;
128
+ }
129
+ if (options.agentName !== void 0) {
130
+ node.agentName = options.agentName;
131
+ }
132
+ if (options.pipelineId !== void 0) {
133
+ node.pipelineId = options.pipelineId;
134
+ }
135
+ if (options.branchKey !== void 0) {
136
+ node.branchKey = options.branchKey;
137
+ }
138
+ return node;
124
139
  }
125
140
  function normalizeId(value) {
126
141
  const normalized = value.trim().toLowerCase().replace(/[^a-z0-9_-]+/g, "_").replace(/^_+|_+$/g, "");
@@ -1 +1 @@
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":[]}
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 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 const graph: PipelineGraph = {\n id,\n nodes: [{ id: \"input\", kind: \"input\", label: \"Input\" }],\n edges: [],\n };\n if (metadata.name !== undefined) {\n graph.name = metadata.name;\n }\n if (metadata.description !== undefined) {\n graph.description = metadata.description;\n }\n if (metadata.metadata !== undefined) {\n graph.metadata = metadata.metadata;\n }\n return graph;\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 const node: PipelineGraphNode = {\n id,\n kind,\n label,\n };\n if (options.description !== undefined) {\n node.description = options.description;\n }\n if (options.metadata !== undefined) {\n node.metadata = options.metadata;\n }\n if (options.agentId !== undefined) {\n node.agentId = options.agentId;\n }\n if (options.agentName !== undefined) {\n node.agentName = options.agentName;\n }\n if (options.pipelineId !== undefined) {\n node.pipelineId = options.pipelineId;\n }\n if (options.branchKey !== undefined) {\n node.branchKey = options.branchKey;\n }\n return node;\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":[]}
@@ -1,13 +1,13 @@
1
- import { M as Message } from '../types-C15r7N_4.js';
2
- import { d as ToolApprovalRequest } from '../tool-f2stpvUP.js';
3
- export { P as PromptRequest } from '../agent-BB9vVH6P.js';
4
- export { A as AgentChildStreamEvent, e as AgentDeltaEvent, a as AgentStreamEvent, P as PromptResponse } from '../index-CM-V4LS3.js';
1
+ import { M as Message } from '../types-DzdJOf35.js';
2
+ import { d as ToolApprovalRequest } from '../tool-6f9bK92X.js';
3
+ export { P as PromptRequest } from '../agent-3qSfIKIj.js';
4
+ export { A as AgentChildStreamEvent, e as AgentDeltaEvent, a as AgentStreamEvent, P as PromptResponse } from '../index-ZQAiHW5Q.js';
5
5
  import '../guardrails/index.js';
6
- import '../types-Dh7gfoGw.js';
7
- import '../types-bNDxj4Tt.js';
8
- import '../middleware-i-jLsLom.js';
6
+ import '../types-BaYwqozV.js';
7
+ import '../types-CNeDsGjw.js';
8
+ import '../middleware-Cc_-sosu.js';
9
9
  import '../types-DHHZztGO.js';
10
- import '../types-DmvXANwl.js';
10
+ import '../types-C708DOhL.js';
11
11
 
12
12
  declare class MaxTurnsError extends Error {
13
13
  readonly maxTurns: number;
@@ -3,17 +3,16 @@ import {
3
3
  PromptCancelledError,
4
4
  PromptRequest,
5
5
  ToolApprovalRequiredError
6
- } from "../chunk-EGZCTSEW.js";
6
+ } from "../chunk-WWNXZWST.js";
7
7
  import "../chunk-XUUY2L2D.js";
8
- import "../chunk-SHORX7TZ.js";
9
- import "../chunk-IZM6FNCT.js";
10
- import "../chunk-NPZDYOE6.js";
11
- import "../chunk-MMHG7WAM.js";
12
- import "../chunk-JS5MGVNM.js";
13
- import "../chunk-OIMLU4SF.js";
14
- import "../chunk-FUJ3POKH.js";
15
- import "../chunk-QVFOCNF6.js";
8
+ import "../chunk-WHHQWT7D.js";
9
+ import "../chunk-I7TM7TKX.js";
10
+ import "../chunk-2ODTMRHP.js";
11
+ import "../chunk-YTF65GYU.js";
12
+ import "../chunk-CNTGKNZ3.js";
16
13
  import "../chunk-WQKHFADH.js";
14
+ import "../chunk-YBBD4HZ3.js";
15
+ import "../chunk-OIMLU4SF.js";
17
16
  import "../chunk-CWUJUSOS.js";
18
17
  export {
19
18
  MaxTurnsError,
@@ -1,7 +1,7 @@
1
- import { b as SkillLoader, a as SkillSet } from '../types-b6fOVoW1.js';
2
- export { c as Skill, S as SkillValidationError, d as SkillValidationIssue } from '../types-b6fOVoW1.js';
3
- import '../tool-f2stpvUP.js';
4
- import '../types-C15r7N_4.js';
1
+ import { b as SkillLoader, a as SkillSet } from '../types-BZQlZ4Vs.js';
2
+ export { c as Skill, S as SkillValidationError, d as SkillValidationIssue } from '../types-BZQlZ4Vs.js';
3
+ import '../tool-6f9bK92X.js';
4
+ import '../types-DzdJOf35.js';
5
5
 
6
6
  declare function loadSkills(loaders: SkillLoader | SkillLoader[]): Promise<SkillSet>;
7
7
 
@@ -2,15 +2,15 @@ import {
2
2
  SkillValidationError,
3
3
  loadSkills,
4
4
  skill
5
- } from "../chunk-HF4KHHNM.js";
5
+ } from "../chunk-DC2GJDPR.js";
6
+ import "../chunk-CQNNSZPG.js";
6
7
  import "../chunk-YK4WAAS4.js";
7
- import "../chunk-SHORX7TZ.js";
8
- import "../chunk-IZM6FNCT.js";
9
- import "../chunk-MMHG7WAM.js";
10
- import "../chunk-JS5MGVNM.js";
11
- import "../chunk-OIMLU4SF.js";
12
- import "../chunk-QVFOCNF6.js";
8
+ import "../chunk-WHHQWT7D.js";
9
+ import "../chunk-I7TM7TKX.js";
10
+ import "../chunk-CNTGKNZ3.js";
13
11
  import "../chunk-WQKHFADH.js";
12
+ import "../chunk-YBBD4HZ3.js";
13
+ import "../chunk-OIMLU4SF.js";
14
14
  export {
15
15
  SkillValidationError,
16
16
  loadSkills,
@@ -1,6 +1,6 @@
1
1
  import { z } from 'zod';
2
2
  import { Z as ZodSchema } from './zod-schema-C7F4clpm.js';
3
- import { c as ToolApprovalPolicy, f as ToolCallContext, T as Tool } from './tool-f2stpvUP.js';
3
+ import { c as ToolApprovalPolicy, f as ToolCallContext, T as Tool } from './tool-6f9bK92X.js';
4
4
 
5
5
  type CreateToolOptions<InputSchema extends ZodSchema, OutputSchema extends ZodSchema | undefined = undefined, Output = unknown> = {
6
6
  name: string;
@@ -1,11 +1,11 @@
1
- export { b as CreateThinkToolOptions, C as CreateToolOptions, c as createThinkTool, a as createTool } from '../think-tool-BKDCOJh5.js';
2
- export { A as AgentMiddleware, C as CompletionRequestMiddlewareArgs, a as CompletionRequestMiddlewareResult, b as CompletionResponseMiddlewareArgs, c as CompletionResponseMiddlewareResult, D as DynamicToolIndex, E as EmbedToolsOptions, T as ToolInputMiddlewareArgs, d as ToolInputMiddlewareResult, e as ToolMiddleware, f as ToolOutputMiddlewareArgs, g as ToolOutputMiddlewareResult, h as ToolResultMiddlewareArgs, k as ToolSearchDocument, l as ToolSet, i as createMiddleware, m as createToolIndex, j as createToolMiddleware, n as embedTools, o as isDynamicToolIndex } from '../middleware-i-jLsLom.js';
3
- export { A as AnyTool, N as NormalizedToolOutput, T as Tool, a as ToolApprovalContext, b as ToolApprovalDecision, c as ToolApprovalPolicy, d as ToolApprovalRequest, h as ToolApprovalRunContext, e as ToolApprovalsOptions, f as ToolCallContext, g as ToolCallStreamEvent, i as ToolOutput, n as normalizeToolResultOutput, p as parseToolArgs, t as toolResultContentToText } from '../tool-f2stpvUP.js';
4
- export { q as isToolResultContentArray, s as serializeToolOutput } from '../types-C15r7N_4.js';
1
+ export { b as CreateThinkToolOptions, C as CreateToolOptions, c as createThinkTool, a as createTool } from '../think-tool-DvhOlrL8.js';
2
+ export { A as AgentMiddleware, C as CompletionRequestMiddlewareArgs, a as CompletionRequestMiddlewareResult, b as CompletionResponseMiddlewareArgs, c as CompletionResponseMiddlewareResult, D as DynamicToolIndex, E as EmbedToolsOptions, T as ToolInputMiddlewareArgs, d as ToolInputMiddlewareResult, e as ToolMiddleware, f as ToolOutputMiddlewareArgs, g as ToolOutputMiddlewareResult, h as ToolResultMiddlewareArgs, k as ToolSearchDocument, l as ToolSet, i as createMiddleware, m as createToolIndex, j as createToolMiddleware, n as embedTools, o as isDynamicToolIndex } from '../middleware-Cc_-sosu.js';
3
+ export { A as AnyTool, N as NormalizedToolOutput, T as Tool, a as ToolApprovalContext, b as ToolApprovalDecision, c as ToolApprovalPolicy, d as ToolApprovalRequest, h as ToolApprovalRunContext, e as ToolApprovalsOptions, f as ToolCallContext, g as ToolCallStreamEvent, i as ToolOutput, n as normalizeToolResultOutput, p as parseToolArgs, t as toolResultContentToText } from '../tool-6f9bK92X.js';
4
+ export { r as isToolResultContentArray, s as serializeToolOutput } from '../types-DzdJOf35.js';
5
5
  import 'zod';
6
6
  import '../zod-schema-C7F4clpm.js';
7
7
  import '../types-DHHZztGO.js';
8
- import '../types-DmvXANwl.js';
8
+ import '../types-C708DOhL.js';
9
9
 
10
10
  declare class ToolCallError extends Error {
11
11
  readonly cause?: unknown | undefined;
@@ -13,18 +13,17 @@ import {
13
13
  normalizeToolResultOutput,
14
14
  parseToolArgs,
15
15
  toolResultContentToText
16
- } from "../chunk-SHORX7TZ.js";
16
+ } from "../chunk-WHHQWT7D.js";
17
17
  import {
18
18
  createTool
19
- } from "../chunk-IZM6FNCT.js";
20
- import "../chunk-MMHG7WAM.js";
21
- import "../chunk-JS5MGVNM.js";
22
- import "../chunk-OIMLU4SF.js";
19
+ } from "../chunk-I7TM7TKX.js";
23
20
  import {
24
21
  isToolResultContentArray,
25
22
  serializeToolResultOutput
26
- } from "../chunk-QVFOCNF6.js";
23
+ } from "../chunk-CNTGKNZ3.js";
27
24
  import "../chunk-WQKHFADH.js";
25
+ import "../chunk-YBBD4HZ3.js";
26
+ import "../chunk-OIMLU4SF.js";
28
27
  export {
29
28
  ToolCallError,
30
29
  ToolJsonError,
@@ -1,4 +1,4 @@
1
- import { J as JsonObject, h as ToolDefinition, k as ToolResultContent, e as JsonValue } from './types-C15r7N_4.js';
1
+ import { J as JsonObject, j as ToolDefinition, m as ToolResultContent, f as JsonValue } from './types-DzdJOf35.js';
2
2
 
3
3
  type ToolApprovalRunContext = {
4
4
  agentId: string;
@@ -1,4 +1,4 @@
1
- import { e as JsonValue } from '../types-C15r7N_4.js';
1
+ import { f as JsonValue } from '../types-DzdJOf35.js';
2
2
 
3
3
  type TranscriptionRequest = {
4
4
  data: Uint8Array;
@@ -1,8 +1,8 @@
1
1
  import { SSEClientTransportOptions } from '@modelcontextprotocol/sdk/client/sse.js';
2
2
  import { StdioServerParameters } from '@modelcontextprotocol/sdk/client/stdio.js';
3
3
  import { StreamableHTTPClientTransportOptions } from '@modelcontextprotocol/sdk/client/streamableHttp.js';
4
- import { J as JsonObject } from './types-C15r7N_4.js';
5
- import { A as AnyTool } from './tool-f2stpvUP.js';
4
+ import { J as JsonObject } from './types-DzdJOf35.js';
5
+ import { A as AnyTool } from './tool-6f9bK92X.js';
6
6
 
7
7
  type McpToolDefinition = {
8
8
  name: string;
@@ -1,4 +1,4 @@
1
- import { A as AnyTool } from './tool-f2stpvUP.js';
1
+ import { A as AnyTool } from './tool-6f9bK92X.js';
2
2
 
3
3
  type Skill = {
4
4
  readonly name: string;
@@ -1,4 +1,4 @@
1
- import { M as Message, U as Usage, c as CompletionResponse, k as ToolResultContent } from './types-C15r7N_4.js';
1
+ import { M as Message, U as Usage, d as CompletionResponse, m as ToolResultContent } from './types-DzdJOf35.js';
2
2
 
3
3
  type HookAction = {
4
4
  type: "continue";
@@ -1,5 +1,5 @@
1
1
  import { V as VectorMetadata, a as VectorMetadataValue } from './types-DHHZztGO.js';
2
- import { T as Tool } from './tool-f2stpvUP.js';
2
+ import { T as Tool } from './tool-6f9bK92X.js';
3
3
 
4
4
  type VectorFilter = {
5
5
  type: "eq";
@@ -1,4 +1,4 @@
1
- import { J as JsonObject, M as Message } from './types-C15r7N_4.js';
1
+ import { J as JsonObject, M as Message } from './types-DzdJOf35.js';
2
2
 
3
3
  type MemorySavePolicy = "message" | "turn" | "run";
4
4
  type MemoryContext = {
@@ -93,26 +93,37 @@ type ToolResult = {
93
93
  toolName?: string;
94
94
  content: ToolResultContent[];
95
95
  };
96
+ type MessageOptions = {
97
+ metadata?: JsonValue | undefined;
98
+ };
99
+ type AssistantMessageOptions = MessageOptions & {
100
+ id?: string | undefined;
101
+ };
96
102
  type ToolResultOptions = {
97
103
  callId?: string | undefined;
98
104
  toolName?: string | undefined;
99
105
  };
106
+ type ToolResultMessageOptions = ToolResultOptions & MessageOptions;
100
107
  type SystemMessage = {
101
108
  role: "system";
102
109
  content: string;
110
+ metadata?: JsonValue;
103
111
  };
104
112
  type UserMessage = {
105
113
  role: "user";
106
114
  content: UserContent[];
115
+ metadata?: JsonValue;
107
116
  };
108
117
  type AssistantMessage = {
109
118
  role: "assistant";
110
119
  id?: string;
111
120
  content: AssistantContent[];
121
+ metadata?: JsonValue;
112
122
  };
113
123
  type ToolMessage = {
114
124
  role: "tool";
115
125
  content: ToolContent[];
126
+ metadata?: JsonValue;
116
127
  };
117
128
  type UserContent = Text | ImageContent | DocumentContent;
118
129
  declare const UserContent: {
@@ -156,11 +167,11 @@ declare const AssistantContent: {
156
167
  declare function reasoningDisplayText(reasoning: Reasoning | ReasoningContent[]): string;
157
168
  type Message = SystemMessage | UserMessage | AssistantMessage | ToolMessage;
158
169
  declare const Message: {
159
- system(content: string): Message;
160
- user(content: string | UserContent[]): Message;
161
- assistant(content: string | AssistantContent[], id?: string): Message;
162
- tool(content: ToolContent | ToolContent[]): Message;
163
- toolResult(id: string, output: unknown, options?: ToolResultOptions): Message;
170
+ system(content: string, options?: MessageOptions): Message;
171
+ user(content: string | UserContent[], options?: MessageOptions): Message;
172
+ assistant(content: string | AssistantContent[], idOrOptions?: string | AssistantMessageOptions): Message;
173
+ tool(content: ToolContent | ToolContent[], options?: MessageOptions): Message;
174
+ toolResult(id: string, output: unknown, options?: ToolResultMessageOptions): Message;
164
175
  };
165
176
  type ToolChoice = "auto" | "required" | "none" | {
166
177
  type: "function";
@@ -258,4 +269,4 @@ declare function assertCompletionRequestSupported(model: CompletionModel, reques
258
269
  }): void;
259
270
  declare function textFromAssistantContent(content: AssistantContent[]): string;
260
271
 
261
- export { AssistantContent as A, reasoningDisplayText as B, type CompletionModel as C, type Document as D, textFromAssistantContent as E, type ImageContent as I, type JsonObject as J, Message as M, type Reasoning as R, type SystemMessage as S, type Text as T, Usage as U, type AssistantMessage as a, type CompletionRequest as b, type CompletionResponse as c, type JsonPrimitive as d, type JsonValue as e, type ToolCall as f, ToolContent as g, type ToolDefinition as h, type ToolMessage as i, type ToolResult as j, type ToolResultContent as k, UserContent as l, type UserMessage as m, type ToolChoice as n, type StreamingCompletionModel as o, type CompletionStreamEvent as p, isToolResultContentArray as q, CompletionCapabilityError as r, serializeToolResultOutput as s, type CompletionModelCapabilities as t, type DocumentContent as u, type ImageDetail as v, type ReasoningContent as w, type ReasoningContentType as x, type ToolFunction as y, assertCompletionRequestSupported as z };
272
+ export { AssistantContent as A, type ReasoningContentType as B, type CompletionModel as C, type Document as D, type StreamingCompletionModel as E, type ToolFunction as F, assertCompletionRequestSupported as G, reasoningDisplayText as H, type ImageContent as I, type JsonObject as J, textFromAssistantContent as K, Message as M, type Reasoning as R, type SystemMessage as S, type Text as T, Usage as U, type AssistantMessage as a, type AssistantMessageOptions as b, type CompletionRequest as c, type CompletionResponse as d, type JsonPrimitive as e, type JsonValue as f, type MessageOptions as g, type ToolCall as h, ToolContent as i, type ToolDefinition as j, type ToolMessage as k, type ToolResult as l, type ToolResultContent as m, type ToolResultMessageOptions as n, type ToolResultOptions as o, UserContent as p, type UserMessage as q, isToolResultContentArray as r, serializeToolResultOutput as s, type ToolChoice as t, CompletionCapabilityError as u, type CompletionModelCapabilities as v, type CompletionStreamEvent as w, type DocumentContent as x, type ImageDetail as y, type ReasoningContent as z };
@@ -1,4 +1,4 @@
1
- import { v as ImageDetail, e as JsonValue, U as Usage, M as Message } from '../types-C15r7N_4.js';
1
+ import { y as ImageDetail, f as JsonValue, U as Usage, M as Message } from '../types-DzdJOf35.js';
2
2
 
3
3
  type UIMessageRole = "system" | "user" | "assistant" | "tool";
4
4
  type UIError = {
package/dist/ui/index.js CHANGED
@@ -1,8 +1,8 @@
1
1
  import {
2
2
  coreMessagesToUIMessages,
3
3
  uiMessagesToCoreMessages
4
- } from "../chunk-UDISNNKR.js";
5
- import "../chunk-QVFOCNF6.js";
4
+ } from "../chunk-NS7W4G26.js";
5
+ import "../chunk-CNTGKNZ3.js";
6
6
  export {
7
7
  coreMessagesToUIMessages,
8
8
  uiMessagesToCoreMessages
@@ -1,8 +1,8 @@
1
1
  import { a as VectorMetadataValue, V as VectorMetadata, E as EmbeddingModel, c as EmbeddedDocument, d as Embedding } from '../types-DHHZztGO.js';
2
- import { T as Tool } from '../tool-f2stpvUP.js';
3
- import { V as VectorFilter, a as VectorSearchIndex, I as IndexStrategy, b as VectorSearchRequest, c as VectorSearchResult, d as VectorInspectRequest, e as VectorInspectPage, f as VectorSearchToolOptions } from '../types-DmvXANwl.js';
4
- export { L as LshOptions, g as VectorInspectItem } from '../types-DmvXANwl.js';
5
- import '../types-C15r7N_4.js';
2
+ import { T as Tool } from '../tool-6f9bK92X.js';
3
+ import { V as VectorFilter, a as VectorSearchIndex, I as IndexStrategy, b as VectorSearchRequest, c as VectorSearchResult, d as VectorInspectRequest, e as VectorInspectPage, f as VectorSearchToolOptions } from '../types-C708DOhL.js';
4
+ export { L as LshOptions, g as VectorInspectItem } from '../types-C708DOhL.js';
5
+ import '../types-DzdJOf35.js';
6
6
 
7
7
  declare const vectorFilter: {
8
8
  eq(key: string, value: VectorMetadataValue): VectorFilter;
@@ -3,11 +3,10 @@ import {
3
3
  InMemoryVectorStore,
4
4
  createVectorSearchTool,
5
5
  vectorFilter
6
- } from "../chunk-IZM6FNCT.js";
7
- import "../chunk-MMHG7WAM.js";
8
- import "../chunk-JS5MGVNM.js";
9
- import "../chunk-OIMLU4SF.js";
6
+ } from "../chunk-I7TM7TKX.js";
10
7
  import "../chunk-WQKHFADH.js";
8
+ import "../chunk-YBBD4HZ3.js";
9
+ import "../chunk-OIMLU4SF.js";
11
10
  export {
12
11
  InMemoryVectorIndex,
13
12
  InMemoryVectorStore,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@anvia/core",
3
- "version": "0.12.8",
3
+ "version": "0.13.1",
4
4
  "description": "Core runtime primitives for context-aware Anvia agents.",
5
5
  "author": "anvia",
6
6
  "maintainer": "Indra Zulfi",
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/agent/agent.ts","../src/agent/ids.ts"],"sourcesContent":["import { z } from \"zod\";\nimport { isStreamingCompletionModel } from \"../completion/create-completion\";\nimport type {\n CompletionModel,\n Document,\n JsonObject,\n JsonValue,\n Message as MessageType,\n ToolChoice,\n} from \"../completion/index\";\nimport type { GuardrailPolicy } from \"../guardrails\";\nimport type { PromptHook } from \"../hooks\";\nimport { compact } from \"../internal/compact\";\nimport type { MemoryRegistration, SessionOptions } from \"../memory/types\";\nimport type { AgentObserverRegistration } from \"../observability\";\nimport { PromptRequest } from \"../request\";\nimport { createTool } from \"../tool/create-tool\";\nimport type { ToolSearchDocument } from \"../tool/dynamic-tools\";\nimport type { AgentMiddleware } from \"../tool/middleware\";\nimport { isSkillTool } from \"../tool/skill-tool-marker\";\nimport type {\n AnyTool,\n NormalizedToolOutput,\n Tool,\n ToolApprovalsOptions,\n ToolCallContext,\n} from \"../tool/tool\";\nimport { ToolSet } from \"../tool/tool-set\";\nimport type { VectorSearchIndex } from \"../vector-store\";\nimport { normalizeAgentId } from \"./ids\";\nimport type {\n AgentEventStoreRegistration,\n AgentOptions,\n AgentToolOptions,\n DynamicContextRegistration,\n DynamicToolRegistration,\n} from \"./types\";\n\nexport const DEFAULT_MAX_TURNS = 20;\n\nexport class Agent<M extends CompletionModel = CompletionModel> {\n readonly id: string;\n readonly name: string | undefined;\n readonly description: string | undefined;\n readonly model: M;\n readonly instructions: string | undefined;\n readonly staticContext: Document[];\n readonly temperature: number | undefined;\n readonly maxTokens: number | undefined;\n readonly additionalParams: JsonValue | undefined;\n readonly toolSet: ToolSet;\n readonly toolChoice: ToolChoice | undefined;\n readonly defaultMaxTurns: number | undefined;\n readonly hook: PromptHook | undefined;\n readonly outputSchema: JsonObject | undefined;\n readonly observers: AgentObserverRegistration[];\n readonly approvals: ToolApprovalsOptions | undefined;\n readonly guardrails: GuardrailPolicy[];\n readonly dynamicContexts: DynamicContextRegistration[];\n readonly dynamicTools: DynamicToolRegistration[];\n readonly middlewares: AgentMiddleware[];\n /**\n * @deprecated Use `middlewares` instead.\n */\n readonly toolMiddlewares: AgentMiddleware[];\n readonly memory: MemoryRegistration | undefined;\n readonly eventStore: AgentEventStoreRegistration | undefined;\n\n constructor(options: AgentOptions<M>) {\n this.id = normalizeAgentId(options.id);\n this.name = options.name;\n this.description = options.description;\n this.model = options.model;\n this.instructions = options.instructions;\n this.staticContext = [...(options.staticContext ?? [])];\n this.temperature = options.temperature;\n this.maxTokens = options.maxTokens;\n this.additionalParams = options.additionalParams;\n this.toolSet = options.toolSet ?? new ToolSet();\n this.toolChoice = options.toolChoice;\n this.defaultMaxTurns = options.defaultMaxTurns ?? DEFAULT_MAX_TURNS;\n this.hook = options.hook;\n this.outputSchema = options.outputSchema;\n this.observers = [...(options.observers ?? [])];\n this.approvals = options.approvals;\n this.guardrails = [...(options.guardrails ?? [])];\n this.dynamicContexts = [...(options.dynamicContexts ?? [])];\n this.dynamicTools = [...(options.dynamicTools ?? [])];\n this.middlewares = [...(options.middlewares ?? options.toolMiddlewares ?? [])];\n this.toolMiddlewares = this.middlewares;\n this.memory = options.memory;\n this.eventStore = options.eventStore;\n }\n\n prompt(prompt: string | MessageType | MessageType[]): PromptRequest<M> {\n return PromptRequest.fromAgent(this, prompt);\n }\n\n session(sessionId: string, options: SessionOptions = {}): AgentSession<M> {\n if (this.memory === undefined) {\n throw new Error(`Agent \"${this.id}\" has no memory store configured.`);\n }\n const normalized = sessionId.trim();\n if (normalized.length === 0) {\n throw new TypeError(\"Session id must be a non-empty string.\");\n }\n return new AgentSession(this, {\n sessionId: normalized,\n ...(options.userId !== undefined && { userId: options.userId }),\n ...(options.metadata !== undefined && { metadata: options.metadata }),\n });\n }\n\n asTool(options: AgentToolOptions): Tool<{ prompt: string }, string> {\n const description =\n options.description ?? this.description ?? `Prompt the ${options.name} agent.`;\n\n return createTool({\n name: options.name,\n description,\n input: z.object({\n prompt: z.string().describe(\"The prompt to send to the agent.\"),\n }),\n output: z.string(),\n execute: async ({ prompt }, context: ToolCallContext) => {\n const request = this.prompt(prompt);\n const childRequest =\n options.maxTurns === undefined ? request : request.maxTurns(options.maxTurns);\n if (\n options.stream === true &&\n context.emitStreamEvent !== undefined &&\n this.model.capabilities.streaming &&\n isStreamingCompletionModel(this.model)\n ) {\n let output = \"\";\n for await (const event of childRequest.stream()) {\n await context.emitStreamEvent(\n compact({\n agentId: this.id,\n agentName: this.name,\n event,\n }),\n );\n if (event.type === \"final\") {\n output = event.output;\n }\n }\n return output;\n }\n const response = await childRequest.send();\n return response.output;\n },\n });\n }\n\n getTool(toolName: string): AnyTool | undefined {\n const staticTool = this.toolSet.get(toolName);\n if (staticTool !== undefined) {\n return staticTool;\n }\n\n for (const registration of this.dynamicTools) {\n const dynamicTool = dynamicToolSetFromIndex(registration.index)?.get(toolName);\n if (dynamicTool !== undefined) {\n return dynamicTool;\n }\n }\n\n return undefined;\n }\n\n async callTool(\n toolName: string,\n args: string,\n context?: ToolCallContext,\n ): Promise<NormalizedToolOutput> {\n if (this.toolSet.contains(toolName)) {\n return this.toolSet.call(toolName, args, context);\n }\n\n for (const registration of this.dynamicTools) {\n const toolSet = dynamicToolSetFromIndex(registration.index);\n if (toolSet?.contains(toolName)) {\n return toolSet.call(toolName, args, context);\n }\n }\n\n return this.toolSet.call(toolName, args, context);\n }\n\n shouldApplyToolMiddleware(toolName: string): boolean {\n return !isSkillTool(this.getTool(toolName));\n }\n}\n\nexport class AgentSession<M extends CompletionModel = CompletionModel> {\n constructor(\n private readonly agent: Agent<M>,\n private readonly context: {\n sessionId: string;\n userId?: string | undefined;\n metadata?: JsonObject | undefined;\n },\n ) {}\n\n prompt(prompt: string | MessageType): PromptRequest<M> {\n if (Array.isArray(prompt)) {\n throw new TypeError(\"AgentSession.prompt does not accept Message[] transcripts.\");\n }\n return PromptRequest.fromAgent(this.agent, prompt, { memoryContext: this.context });\n }\n\n async messages(): Promise<MessageType[]> {\n const memory = this.agent.memory;\n if (memory === undefined) {\n throw new Error(`Agent \"${this.agent.id}\" has no memory store configured.`);\n }\n return memory.store.load(this.context);\n }\n\n async clear(): Promise<void> {\n const memory = this.agent.memory;\n if (memory === undefined) {\n throw new Error(`Agent \"${this.agent.id}\" has no memory store configured.`);\n }\n await memory.store.clear(this.context);\n }\n}\n\nfunction dynamicToolSetFromIndex(\n index: VectorSearchIndex<ToolSearchDocument>,\n): ToolSet | undefined {\n const maybeIndex = index as { toolSet?: unknown };\n return maybeIndex.toolSet instanceof ToolSet ? maybeIndex.toolSet : undefined;\n}\n","export function normalizeAgentId(id: string): string {\n if (typeof id !== \"string\") {\n throw new TypeError(\"Agent id must be a string.\");\n }\n\n const normalized = id.trim();\n if (normalized.length === 0) {\n throw new TypeError(\"Agent id must be a non-empty string.\");\n }\n\n return normalized;\n}\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA,SAAS,SAAS;;;ACAX,SAAS,iBAAiB,IAAoB;AACnD,MAAI,OAAO,OAAO,UAAU;AAC1B,UAAM,IAAI,UAAU,4BAA4B;AAAA,EAClD;AAEA,QAAM,aAAa,GAAG,KAAK;AAC3B,MAAI,WAAW,WAAW,GAAG;AAC3B,UAAM,IAAI,UAAU,sCAAsC;AAAA,EAC5D;AAEA,SAAO;AACT;;;AD2BO,IAAM,oBAAoB;AAE1B,IAAM,QAAN,MAAyD;AAAA,EACrD;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA;AAAA;AAAA;AAAA,EAIA;AAAA,EACA;AAAA,EACA;AAAA,EAET,YAAY,SAA0B;AACpC,SAAK,KAAK,iBAAiB,QAAQ,EAAE;AACrC,SAAK,OAAO,QAAQ;AACpB,SAAK,cAAc,QAAQ;AAC3B,SAAK,QAAQ,QAAQ;AACrB,SAAK,eAAe,QAAQ;AAC5B,SAAK,gBAAgB,CAAC,GAAI,QAAQ,iBAAiB,CAAC,CAAE;AACtD,SAAK,cAAc,QAAQ;AAC3B,SAAK,YAAY,QAAQ;AACzB,SAAK,mBAAmB,QAAQ;AAChC,SAAK,UAAU,QAAQ,WAAW,IAAI,QAAQ;AAC9C,SAAK,aAAa,QAAQ;AAC1B,SAAK,kBAAkB,QAAQ,mBAAmB;AAClD,SAAK,OAAO,QAAQ;AACpB,SAAK,eAAe,QAAQ;AAC5B,SAAK,YAAY,CAAC,GAAI,QAAQ,aAAa,CAAC,CAAE;AAC9C,SAAK,YAAY,QAAQ;AACzB,SAAK,aAAa,CAAC,GAAI,QAAQ,cAAc,CAAC,CAAE;AAChD,SAAK,kBAAkB,CAAC,GAAI,QAAQ,mBAAmB,CAAC,CAAE;AAC1D,SAAK,eAAe,CAAC,GAAI,QAAQ,gBAAgB,CAAC,CAAE;AACpD,SAAK,cAAc,CAAC,GAAI,QAAQ,eAAe,QAAQ,mBAAmB,CAAC,CAAE;AAC7E,SAAK,kBAAkB,KAAK;AAC5B,SAAK,SAAS,QAAQ;AACtB,SAAK,aAAa,QAAQ;AAAA,EAC5B;AAAA,EAEA,OAAO,QAAgE;AACrE,WAAO,cAAc,UAAU,MAAM,MAAM;AAAA,EAC7C;AAAA,EAEA,QAAQ,WAAmB,UAA0B,CAAC,GAAoB;AACxE,QAAI,KAAK,WAAW,QAAW;AAC7B,YAAM,IAAI,MAAM,UAAU,KAAK,EAAE,mCAAmC;AAAA,IACtE;AACA,UAAM,aAAa,UAAU,KAAK;AAClC,QAAI,WAAW,WAAW,GAAG;AAC3B,YAAM,IAAI,UAAU,wCAAwC;AAAA,IAC9D;AACA,WAAO,IAAI,aAAa,MAAM;AAAA,MAC5B,WAAW;AAAA,MACX,GAAI,QAAQ,WAAW,UAAa,EAAE,QAAQ,QAAQ,OAAO;AAAA,MAC7D,GAAI,QAAQ,aAAa,UAAa,EAAE,UAAU,QAAQ,SAAS;AAAA,IACrE,CAAC;AAAA,EACH;AAAA,EAEA,OAAO,SAA6D;AAClE,UAAM,cACJ,QAAQ,eAAe,KAAK,eAAe,cAAc,QAAQ,IAAI;AAEvE,WAAO,WAAW;AAAA,MAChB,MAAM,QAAQ;AAAA,MACd;AAAA,MACA,OAAO,EAAE,OAAO;AAAA,QACd,QAAQ,EAAE,OAAO,EAAE,SAAS,kCAAkC;AAAA,MAChE,CAAC;AAAA,MACD,QAAQ,EAAE,OAAO;AAAA,MACjB,SAAS,OAAO,EAAE,OAAO,GAAG,YAA6B;AACvD,cAAM,UAAU,KAAK,OAAO,MAAM;AAClC,cAAM,eACJ,QAAQ,aAAa,SAAY,UAAU,QAAQ,SAAS,QAAQ,QAAQ;AAC9E,YACE,QAAQ,WAAW,QACnB,QAAQ,oBAAoB,UAC5B,KAAK,MAAM,aAAa,aACxB,2BAA2B,KAAK,KAAK,GACrC;AACA,cAAI,SAAS;AACb,2BAAiB,SAAS,aAAa,OAAO,GAAG;AAC/C,kBAAM,QAAQ;AAAA,cACZ,QAAQ;AAAA,gBACN,SAAS,KAAK;AAAA,gBACd,WAAW,KAAK;AAAA,gBAChB;AAAA,cACF,CAAC;AAAA,YACH;AACA,gBAAI,MAAM,SAAS,SAAS;AAC1B,uBAAS,MAAM;AAAA,YACjB;AAAA,UACF;AACA,iBAAO;AAAA,QACT;AACA,cAAM,WAAW,MAAM,aAAa,KAAK;AACzC,eAAO,SAAS;AAAA,MAClB;AAAA,IACF,CAAC;AAAA,EACH;AAAA,EAEA,QAAQ,UAAuC;AAC7C,UAAM,aAAa,KAAK,QAAQ,IAAI,QAAQ;AAC5C,QAAI,eAAe,QAAW;AAC5B,aAAO;AAAA,IACT;AAEA,eAAW,gBAAgB,KAAK,cAAc;AAC5C,YAAM,cAAc,wBAAwB,aAAa,KAAK,GAAG,IAAI,QAAQ;AAC7E,UAAI,gBAAgB,QAAW;AAC7B,eAAO;AAAA,MACT;AAAA,IACF;AAEA,WAAO;AAAA,EACT;AAAA,EAEA,MAAM,SACJ,UACA,MACA,SAC+B;AAC/B,QAAI,KAAK,QAAQ,SAAS,QAAQ,GAAG;AACnC,aAAO,KAAK,QAAQ,KAAK,UAAU,MAAM,OAAO;AAAA,IAClD;AAEA,eAAW,gBAAgB,KAAK,cAAc;AAC5C,YAAM,UAAU,wBAAwB,aAAa,KAAK;AAC1D,UAAI,SAAS,SAAS,QAAQ,GAAG;AAC/B,eAAO,QAAQ,KAAK,UAAU,MAAM,OAAO;AAAA,MAC7C;AAAA,IACF;AAEA,WAAO,KAAK,QAAQ,KAAK,UAAU,MAAM,OAAO;AAAA,EAClD;AAAA,EAEA,0BAA0B,UAA2B;AACnD,WAAO,CAAC,YAAY,KAAK,QAAQ,QAAQ,CAAC;AAAA,EAC5C;AACF;AAEO,IAAM,eAAN,MAAgE;AAAA,EACrE,YACmB,OACA,SAKjB;AANiB;AACA;AAAA,EAKhB;AAAA,EANgB;AAAA,EACA;AAAA,EAOnB,OAAO,QAAgD;AACrD,QAAI,MAAM,QAAQ,MAAM,GAAG;AACzB,YAAM,IAAI,UAAU,4DAA4D;AAAA,IAClF;AACA,WAAO,cAAc,UAAU,KAAK,OAAO,QAAQ,EAAE,eAAe,KAAK,QAAQ,CAAC;AAAA,EACpF;AAAA,EAEA,MAAM,WAAmC;AACvC,UAAM,SAAS,KAAK,MAAM;AAC1B,QAAI,WAAW,QAAW;AACxB,YAAM,IAAI,MAAM,UAAU,KAAK,MAAM,EAAE,mCAAmC;AAAA,IAC5E;AACA,WAAO,OAAO,MAAM,KAAK,KAAK,OAAO;AAAA,EACvC;AAAA,EAEA,MAAM,QAAuB;AAC3B,UAAM,SAAS,KAAK,MAAM;AAC1B,QAAI,WAAW,QAAW;AACxB,YAAM,IAAI,MAAM,UAAU,KAAK,MAAM,EAAE,mCAAmC;AAAA,IAC5E;AACA,UAAM,OAAO,MAAM,MAAM,KAAK,OAAO;AAAA,EACvC;AACF;AAEA,SAAS,wBACP,OACqB;AACrB,QAAM,aAAa;AACnB,SAAO,WAAW,mBAAmB,UAAU,WAAW,UAAU;AACtE;","names":[]}