@anvia/core 1.0.8 → 1.1.0

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 (62) hide show
  1. package/LICENSE +1 -1
  2. package/README.md +16 -3
  3. package/dist/agent/index.d.ts +12 -12
  4. package/dist/agent/index.js +5 -5
  5. package/dist/agent/interactions/index.d.ts +1 -1
  6. package/dist/{agent-B-3jCRmI.d.ts → agent-DTmzs1Qr.d.ts} +16 -13
  7. package/dist/chunk-4UQALF5Y.js +117 -0
  8. package/dist/chunk-4UQALF5Y.js.map +1 -0
  9. package/dist/{chunk-XMVOBX43.js → chunk-JLJMVRRE.js} +2 -2
  10. package/dist/{chunk-DHJL44R2.js → chunk-JTJU56ZV.js} +2 -2
  11. package/dist/{chunk-TB5EKZM7.js → chunk-OI3LSMJG.js} +30 -1
  12. package/dist/chunk-OI3LSMJG.js.map +1 -0
  13. package/dist/{chunk-34EDX4ZL.js → chunk-Q5BCNYED.js} +2 -2
  14. package/dist/{chunk-HNRNTFMQ.js → chunk-XU54PLSD.js} +17 -6
  15. package/dist/chunk-XU54PLSD.js.map +1 -0
  16. package/dist/completion/index.d.ts +3 -3
  17. package/dist/completion/index.js +10 -2
  18. package/dist/{dynamic-tools-aIZlg5x1.d.ts → dynamic-tools-CNHSPXr1.d.ts} +3 -3
  19. package/dist/evals/index.d.ts +6 -6
  20. package/dist/evals/index.js +3 -3
  21. package/dist/extractor/index.d.ts +1 -1
  22. package/dist/extractor/index.js +3 -3
  23. package/dist/guardrails/index.d.ts +4 -4
  24. package/dist/image-generation/index.d.ts +1 -1
  25. package/dist/index.d.ts +14 -14
  26. package/dist/index.js +10 -5
  27. package/dist/internal/agent.d.ts +11 -11
  28. package/dist/internal/agent.js +6 -5
  29. package/dist/internal/agent.js.map +1 -1
  30. package/dist/mcp/index.d.ts +4 -4
  31. package/dist/memory/index.d.ts +3 -3
  32. package/dist/memory/index.js +2 -2
  33. package/dist/{middleware-kcF8AusP.d.ts → middleware-mY_lpjDp.d.ts} +1 -1
  34. package/dist/observability/index.d.ts +6 -6
  35. package/dist/observability/index.js +3 -3
  36. package/dist/pipeline/index.d.ts +12 -12
  37. package/dist/pipeline/index.js +3 -3
  38. package/dist/pipeline/index.js.map +1 -1
  39. package/dist/{provider-output-error-BEwDgVv3.d.ts → provider-output-error-OQ4fjw5W.d.ts} +10 -2
  40. package/dist/skills/index.d.ts +4 -4
  41. package/dist/speech-generation/index.d.ts +1 -1
  42. package/dist/{text-ZLECpQE7.d.ts → text-CmjXxakS.d.ts} +1 -1
  43. package/dist/{think-tool-BwCsJ365.d.ts → think-tool-YWsV98I5.d.ts} +1 -1
  44. package/dist/tool/index.d.ts +6 -6
  45. package/dist/{tool-BpqpoRSE.d.ts → tool-DQMZpZSS.d.ts} +1 -1
  46. package/dist/transcription/index.d.ts +1 -1
  47. package/dist/{types-DC1U1XwW.d.ts → types-C1xYKXF2.d.ts} +1 -1
  48. package/dist/{types-CXNE592e.d.ts → types-CODGMHnp.d.ts} +1 -1
  49. package/dist/{types-DL7wX6hJ.d.ts → types-CRda8x7p.d.ts} +8 -7
  50. package/dist/{types-DmzRCbU5.d.ts → types-CafU6Ux5.d.ts} +1 -1
  51. package/dist/{types-DgvozfPc.d.ts → types-CiHjqE6J.d.ts} +19 -3
  52. package/dist/{types-DjqRHeAi.d.ts → types-DfRPfehE.d.ts} +2 -2
  53. package/dist/{types-DhkodEft.d.ts → types-h0EL6Xn0.d.ts} +1 -1
  54. package/dist/vector-store/index.d.ts +4 -4
  55. package/package.json +1 -2
  56. package/dist/chunk-D4PACGPA.js +0 -37
  57. package/dist/chunk-D4PACGPA.js.map +0 -1
  58. package/dist/chunk-HNRNTFMQ.js.map +0 -1
  59. package/dist/chunk-TB5EKZM7.js.map +0 -1
  60. /package/dist/{chunk-XMVOBX43.js.map → chunk-JLJMVRRE.js.map} +0 -0
  61. /package/dist/{chunk-DHJL44R2.js.map → chunk-JTJU56ZV.js.map} +0 -0
  62. /package/dist/{chunk-34EDX4ZL.js.map → chunk-Q5BCNYED.js.map} +0 -0
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/pipeline/errors.ts","../../src/pipeline/pipeline.ts","../../src/pipeline/graph.ts","../../src/pipeline/observability.ts","../../src/pipeline/runtime.ts"],"sourcesContent":["import type { AgentInteractionOutcome } from \"../agent/run-types\";\n\nexport class PipelineAgentSuspensionError extends Error {\n constructor(readonly result: AgentInteractionOutcome) {\n super(\"Pipeline agent stage suspended for human interaction.\");\n this.name = \"PipelineAgentSuspensionError\";\n }\n}\n\nexport type PipelineObserverFailure = {\n readonly observer: string;\n readonly error: unknown;\n};\n\nexport class PipelineObserverDispatchError extends AggregateError {\n readonly phase: string;\n readonly failures: readonly PipelineObserverFailure[];\n\n constructor(phase: string, failures: readonly PipelineObserverFailure[]) {\n super(\n failures.map((failure) => failure.error),\n `Pipeline observer ${phase} failed for ${failures\n .map((failure) => failure.observer)\n .join(\", \")}.`,\n );\n this.name = \"PipelineObserverDispatchError\";\n this.phase = phase;\n this.failures = Object.freeze([...failures]);\n }\n}\n","import { z } from \"zod\";\nimport type { Agent } from \"../agent/agent\";\nimport { AgentRunBlockedError } from \"../agent/errors\";\nimport type { AgentInput, AgentRunOptions, AgentRunSettings } from \"../agent/run-types\";\nimport type { CompletionModel, JsonObject } from \"../completion\";\nimport { type ExtractOptions, extract as extractData } from \"../extractor\";\nimport { throwIfAborted } from \"../internal/abort\";\nimport { mapWithConcurrency } from \"../internal/concurrency\";\nimport type { AgentTraceOptions } from \"../observability\";\nimport { PipelineAgentSuspensionError } from \"./errors\";\nimport {\n appendComposedGraph,\n appendParallelBranch,\n appendStageNode,\n cloneGraph,\n initialPipelineState,\n withOutputNode,\n withTerminalPaths,\n} from \"./graph\";\nimport { snapshotPipelineObservability, startPipelineRunObservers } from \"./observability\";\nimport {\n childContext,\n combineAbortSignals,\n pipelineAbortError,\n runNode,\n stageContext,\n} from \"./runtime\";\nimport type {\n ParallelOutput,\n PipelineBatchItem,\n PipelineBatchOptions,\n PipelineExecutor,\n PipelineGraph,\n PipelineGraphNode,\n PipelineNodePath,\n PipelineOptions,\n PipelineRunContext,\n PipelineRunOptions,\n PipelineRunResult,\n PipelineStageContext,\n PipelineStageMetadata,\n PipelineState,\n PipelineTraceInfo,\n} from \"./types\";\n\nconst internalPipelineOptions = Symbol(\"internal-pipeline-options\");\n\ntype RawResponseOf<Model> =\n Model extends CompletionModel<infer RawResponse> ? RawResponse : unknown;\n\ntype PipelineAgentRequest<Output, Model extends CompletionModel> = AgentInput &\n Omit<AgentRunSettings<Output, RawResponseOf<Model>>, \"abortSignal\">;\n\nexport type PipelineStepOptions<Input, Output> = PipelineStageMetadata & {\n run(context: PipelineStageContext<Input>): Output | Promise<Output>;\n};\n\nexport type PipelineComposeOptions<Input, Output> = PipelineStageMetadata & {\n pipeline: Pipeline<Input, Output>;\n};\n\nexport type PipelineParallelOptions<\n Input,\n Branches extends Record<string, Pipeline<Input, unknown>>,\n> = PipelineStageMetadata & {\n branches: Branches;\n};\n\nexport type PipelineAgentOptions<\n Input,\n AgentOutput,\n Model extends CompletionModel,\n> = PipelineStageMetadata & {\n agent: Agent<AgentOutput, Model>;\n request(\n context: PipelineStageContext<Input>,\n ): PipelineAgentRequest<AgentOutput, Model> | Promise<PipelineAgentRequest<AgentOutput, Model>>;\n suspension: \"reject\";\n};\n\nexport type PipelineExtractOptions<\n Input,\n Extracted,\n Model extends CompletionModel,\n> = PipelineStageMetadata &\n Omit<ExtractOptions<Extracted, Model>, \"text\" | \"abortSignal\"> & {\n text(context: PipelineStageContext<Input>): string | Promise<string>;\n };\n\ntype InternalPipelineOptions<Input, Output> = {\n [internalPipelineOptions]: {\n executor: PipelineExecutor<Input, Output>;\n state: PipelineState;\n observability: PipelineOptions<Input>[\"observability\"];\n };\n};\n\n/** Immutable, typed Pipeline with explicit stage and execution boundaries. */\nexport class Pipeline<Input, Output = Input> {\n readonly id: string;\n readonly name: string | undefined;\n readonly description: string | undefined;\n readonly metadata: JsonObject | undefined;\n readonly observability: PipelineOptions<Input>[\"observability\"];\n\n private readonly executor: PipelineExecutor<Input, Output>;\n private readonly state: PipelineState;\n\n constructor(options: PipelineOptions<Input, Output>);\n constructor(options: PipelineOptions<Input, Output> | InternalPipelineOptions<Input, Output>) {\n if (isInternalPipelineOptions(options)) {\n this.executor = options[internalPipelineOptions].executor;\n this.state = options[internalPipelineOptions].state;\n this.observability = options[internalPipelineOptions].observability;\n } else {\n const id = normalizePipelineId(options.id);\n if (!isZodSchema(options.inputSchema)) {\n throw new TypeError(\"Pipeline inputSchema must be a Zod schema.\");\n }\n const inputSchema = options.inputSchema;\n this.executor = (async (input, context) => {\n throwIfAborted(context.abortSignal);\n return inputSchema.parseAsync(input) as Promise<Output>;\n }) as PipelineExecutor<Input, Output>;\n this.state = initialPipelineState({\n id,\n name: options.name,\n description: options.description,\n metadata: options.metadata,\n });\n this.observability = snapshotPipelineObservability(options.observability);\n }\n\n const graph = this.state.graph;\n this.id = graph.id;\n this.name = graph.name;\n this.description = graph.description;\n this.metadata = graph.metadata;\n }\n\n step<Next>(options: PipelineStepOptions<Awaited<Output>, Next>): Pipeline<Input, Awaited<Next>> {\n const next = appendStageNode(this.state, \"step\", options);\n const executor = (async (input, context, pathPrefix) => {\n const value = await this.execute(input, context, pathPrefix);\n const path = [...pathPrefix, next.node.id];\n return (await runNode(context, next.node, path, value, () =>\n options.run(stageContext(value, context)),\n )) as Awaited<Next>;\n }) as PipelineExecutor<Input, Awaited<Next>>;\n return this.derive(executor, next.state);\n }\n\n compose<Next>(\n options: PipelineComposeOptions<Awaited<Output>, Next>,\n ): Pipeline<Input, Awaited<Next>> {\n const boundary = appendStageNode(this.state, \"pipeline\", options, {\n defaultLabel: options.pipeline.name ?? options.pipeline.id,\n pipelineId: options.pipeline.id,\n });\n const state = appendComposedGraph(boundary.state, boundary.node, options.pipeline.graph());\n const executor = (async (input, context, pathPrefix) => {\n const value = await this.execute(input, context, pathPrefix);\n const path = [...pathPrefix, boundary.node.id];\n return (await runNode(context, boundary.node, path, value, () =>\n options.pipeline.execute(value, context, path),\n )) as Awaited<Next>;\n }) as PipelineExecutor<Input, Awaited<Next>>;\n return this.derive(executor, state);\n }\n\n parallel<Branches extends Record<string, Pipeline<Awaited<Output>, unknown>>>(\n options: PipelineParallelOptions<Awaited<Output>, Branches>,\n ): Pipeline<Input, ParallelOutput<Branches>> {\n const branchEntries = normalizeParallelBranches(options.branches);\n if (branchEntries.length === 0) {\n throw new TypeError(\"Pipeline parallel branches must not be empty.\");\n }\n const parallel = appendStageNode(this.state, \"parallel\", options, {\n defaultLabel: `${branchEntries.length} parallel branches`,\n });\n let nextState = parallel.state;\n const branchNodes = new Map<string, PipelineGraphNode>();\n const terminalPaths: PipelineNodePath[] = [];\n for (const [key, branch] of branchEntries) {\n const appended = appendParallelBranch(nextState, parallel.node, key, branch.graph());\n nextState = appended.state;\n branchNodes.set(key, appended.node);\n terminalPaths.push(...appended.terminalPaths);\n }\n nextState = withTerminalPaths(nextState, terminalPaths);\n\n return this.derive<ParallelOutput<Branches>>(async (input, context, pathPrefix) => {\n const value = await this.execute(input, context, pathPrefix);\n const parallelPath = [...pathPrefix, parallel.node.id];\n return runNode(context, parallel.node, parallelPath, value, async () => {\n const controller = new AbortController();\n const combined = combineAbortSignals(context.abortSignal, controller.signal);\n const branchContext = childContext(context, combined.signal);\n let firstError: unknown;\n const promises = branchEntries.map(async ([key, branch]) => {\n const node = branchNodes.get(key) as PipelineGraphNode;\n const path = [...parallelPath, node.id];\n try {\n const output = await runNode(branchContext, node, path, value, () =>\n branch.execute(value, branchContext, path),\n );\n return [key, output] as const;\n } catch (error) {\n if (firstError === undefined) firstError = error;\n if (!controller.signal.aborted) controller.abort(error);\n throw error;\n }\n });\n\n const settled = await Promise.allSettled(promises);\n combined.dispose();\n if (context.abortSignal?.aborted === true) {\n throw pipelineAbortError(context.abortSignal);\n }\n if (firstError !== undefined) throw firstError;\n return Object.fromEntries(\n settled.map(\n (result) => (result as PromiseFulfilledResult<readonly [string, unknown]>).value,\n ),\n ) as ParallelOutput<Branches>;\n });\n }, nextState);\n }\n\n agent<AgentOutput, Model extends CompletionModel>(\n options: PipelineAgentOptions<Awaited<Output>, AgentOutput, Model>,\n ): Pipeline<Input, AgentOutput> {\n if (options.suspension !== \"reject\") {\n throw new TypeError('Pipeline Agent stages require suspension: \"reject\".');\n }\n const next = appendStageNode(this.state, \"agent\", options, {\n defaultLabel: options.agent.name ?? options.agent.id,\n agentId: options.agent.id,\n agentName: options.agent.name,\n });\n return this.derive<AgentOutput>(async (input, context, pathPrefix) => {\n const value = await this.execute(input, context, pathPrefix);\n const path = [...pathPrefix, next.node.id];\n return runNode(context, next.node, path, value, async (stageTrace) => {\n const request = await options.request(stageContext(value, context));\n const response = await options.agent.generate({\n ...request,\n trace: withPipelineParentTrace(\n request.trace,\n stageTrace,\n options.agent.observability?.primaryTrace,\n ),\n abortSignal: context.abortSignal,\n } as AgentRunOptions<AgentOutput, RawResponseOf<Model>>);\n if (response.type === \"interaction\") {\n throw new PipelineAgentSuspensionError(response);\n }\n if (response.type === \"blocked\") {\n throw new AgentRunBlockedError(response);\n }\n return response.output;\n });\n }, next.state);\n }\n\n extract<Extracted, Model extends CompletionModel>(\n options: PipelineExtractOptions<Awaited<Output>, Extracted, Model>,\n ): Pipeline<Input, Extracted> {\n const next = appendStageNode(this.state, \"extractor\", options);\n return this.derive<Extracted>(async (input, context, pathPrefix) => {\n const value = await this.execute(input, context, pathPrefix);\n const path = [...pathPrefix, next.node.id];\n return runNode(context, next.node, path, value, async () => {\n const text = await options.text(stageContext(value, context));\n const result = await extractData({\n model: options.model,\n text,\n outputSchema: options.outputSchema,\n instructions: options.instructions,\n retries: options.retries,\n temperature: options.temperature,\n maxTokens: options.maxTokens,\n providerOptions: options.providerOptions,\n abortSignal: context.abortSignal,\n });\n return result.output;\n });\n }, next.state);\n }\n\n async run(options: PipelineRunOptions<Input>): Promise<PipelineRunResult<Output>> {\n const runId = normalizeRunId(options.runId ?? globalThis.crypto.randomUUID());\n const startedAt = Date.now();\n const observability = await startPipelineRunObservers(\n this.observability?.observers ?? {},\n {\n runId,\n pipelineId: this.id,\n pipelineName: this.name,\n pipelineDescription: this.description,\n pipelineMetadata: this.metadata,\n runMetadata: options.metadata,\n trace: options.trace,\n input: options.input,\n },\n {\n primaryTrace: this.observability?.primaryTrace,\n errorPolicy: this.observability?.errorPolicy ?? \"ignore\",\n },\n );\n const context: PipelineRunContext = {\n runId,\n pipelineId: this.id,\n runMetadata: options.metadata,\n abortSignal: options.abortSignal,\n observer: options.observer,\n failOnObserverError: options.failOnObserverError === true,\n observability,\n };\n try {\n throwIfAborted(context.abortSignal);\n const output = await this.execute(options.input, context, []);\n throwIfAborted(context.abortSignal);\n await observability.end({\n runId,\n pipelineId: this.id,\n output,\n durationMs: Date.now() - startedAt,\n });\n return observability.trace === undefined\n ? { runId, output }\n : { runId, output, trace: observability.trace };\n } catch (error) {\n await observability.error({\n runId,\n pipelineId: this.id,\n status: context.abortSignal?.aborted === true ? \"cancelled\" : \"failed\",\n error,\n durationMs: Date.now() - startedAt,\n });\n throw error;\n }\n }\n\n async runBatch(options: PipelineBatchOptions<Input>): Promise<Array<PipelineBatchItem<Output>>> {\n throwIfAborted(options.abortSignal);\n return mapWithConcurrency([...options.inputs], options.concurrency, async (input) => {\n const runId = globalThis.crypto.randomUUID();\n try {\n const result = await this.run({\n input,\n runId,\n metadata: options.metadata,\n trace: options.trace,\n abortSignal: options.abortSignal,\n observer: options.observer,\n failOnObserverError: options.failOnObserverError,\n });\n return { status: \"completed\", ...result } as const;\n } catch (error) {\n if (options.abortSignal?.aborted === true) {\n throw pipelineAbortError(options.abortSignal);\n }\n return { status: \"failed\", runId, error } as const;\n }\n });\n }\n\n graph(): PipelineGraph {\n return cloneGraph(withOutputNode(this.state));\n }\n\n private derive<DerivedOutput>(\n executor: PipelineExecutor<Input, DerivedOutput>,\n state: PipelineState,\n ): Pipeline<Input, DerivedOutput> {\n return createDerivedPipeline(executor, state, this.observability);\n }\n\n private async execute(\n input: Input,\n context: PipelineRunContext,\n pathPrefix: PipelineNodePath,\n ): Promise<Awaited<Output>> {\n throwIfAborted(context.abortSignal);\n return (await this.executor(input, context, pathPrefix)) as Awaited<Output>;\n }\n}\n\nfunction createDerivedPipeline<Input, Output>(\n executor: PipelineExecutor<Input, Output>,\n state: PipelineState,\n observability: PipelineOptions<Input>[\"observability\"],\n): Pipeline<Input, Output> {\n const options: InternalPipelineOptions<Input, Output> = {\n [internalPipelineOptions]: { executor, state, observability },\n };\n return new Pipeline<Input, Output>(options as unknown as PipelineOptions<Input, Output>);\n}\n\nfunction withPipelineParentTrace(\n trace: AgentTraceOptions | undefined,\n parent: PipelineTraceInfo | undefined,\n agentPrimaryTrace: string | undefined,\n): AgentTraceOptions | undefined {\n if (parent?.traceId === undefined) return trace;\n if (parent.observer !== agentPrimaryTrace) return trace;\n if (trace?.traceId !== undefined && trace.traceId !== parent.traceId) return trace;\n return {\n ...trace,\n traceId: parent.traceId,\n ...(trace?.parentObservationId !== undefined || parent.observationId === undefined\n ? {}\n : { parentObservationId: parent.observationId }),\n };\n}\n\nfunction isInternalPipelineOptions<Input, Output>(\n options: PipelineOptions<Input, Output> | InternalPipelineOptions<Input, Output>,\n): options is InternalPipelineOptions<Input, Output> {\n return internalPipelineOptions in options;\n}\n\nfunction isZodSchema(value: unknown): value is z.ZodType {\n return value instanceof z.ZodType;\n}\n\nfunction normalizePipelineId(id: string): string {\n if (typeof id !== \"string\") {\n throw new TypeError(\"Pipeline id must be a string.\");\n }\n const normalized = id.trim();\n if (normalized.length === 0) {\n throw new TypeError(\"Pipeline id must be a non-empty string.\");\n }\n return normalized;\n}\n\nfunction normalizeRunId(runId: string): string {\n if (typeof runId !== \"string\") {\n throw new TypeError(\"Pipeline runId must be a string.\");\n }\n const normalized = runId.trim();\n if (normalized.length === 0) {\n throw new TypeError(\"Pipeline runId must be a non-empty string.\");\n }\n return normalized;\n}\n\nfunction normalizeParallelBranches<Branch>(\n branches: Readonly<Record<string, Branch>>,\n): Array<readonly [string, Branch]> {\n const entries: Array<readonly [string, Branch]> = [];\n const ids = new Set<string>();\n for (const key of Object.keys(branches)) {\n const pipeline = branches[key] as Branch;\n const id = key.trim();\n if (id.length === 0) {\n throw new TypeError(\"Pipeline parallel branch id must be a non-empty string.\");\n }\n if (ids.has(id)) {\n throw new TypeError(`Pipeline parallel branch id \"${id}\" is already registered.`);\n }\n ids.add(id);\n if (id !== key) {\n throw new TypeError(\"Pipeline parallel branch ids must not contain surrounding whitespace.\");\n }\n entries.push([id, pipeline]);\n }\n return entries;\n}\n","import type { JsonObject } from \"../completion\";\nimport type {\n PipelineGraph,\n PipelineGraphEdge,\n PipelineGraphNode,\n PipelineNodePath,\n PipelineStageKind,\n PipelineStageMetadata,\n PipelineState,\n} from \"./types\";\n\nconst INPUT_ID = \"$input\";\nconst OUTPUT_ID = \"$output\";\nconst RESERVED_STAGE_IDS = new Set([INPUT_ID, OUTPUT_ID]);\n\nexport function initialPipelineState(options: {\n id: string;\n name?: string | undefined;\n description?: string | undefined;\n metadata?: JsonObject | undefined;\n}): PipelineState {\n const input = graphNode(INPUT_ID, [INPUT_ID], \"input\", \"Input\");\n const graph: PipelineGraph = {\n id: options.id,\n nodes: [input],\n edges: [],\n };\n if (options.name !== undefined) graph.name = options.name;\n if (options.description !== undefined) graph.description = options.description;\n if (options.metadata !== undefined) graph.metadata = options.metadata;\n return {\n graph,\n terminalPaths: [input.path],\n stageIds: new Set(),\n nextEdgeIndex: 1,\n };\n}\n\nexport function appendStageNode(\n state: PipelineState,\n kind: PipelineStageKind,\n stage: PipelineStageMetadata,\n options: {\n defaultLabel?: string | undefined;\n agentId?: string | undefined;\n agentName?: string | undefined;\n pipelineId?: string | undefined;\n } = {},\n): { state: PipelineState; node: PipelineGraphNode } {\n const id = validateStageId(stage.id);\n if (state.stageIds.has(id)) {\n throw new TypeError(`Pipeline stage id \"${id}\" is already registered.`);\n }\n const node = graphNode(id, [id], kind, stage.name ?? options.defaultLabel ?? id, {\n description: stage.description,\n metadata: stage.metadata,\n agentId: options.agentId,\n agentName: options.agentName,\n pipelineId: options.pipelineId,\n });\n return {\n node,\n state: appendNode(state, node, state.terminalPaths, [node.path], id),\n };\n}\n\nexport function appendComposedGraph(\n state: PipelineState,\n boundary: PipelineGraphNode,\n child: PipelineGraph,\n): PipelineState {\n return appendChildGraph(state, boundary.path, child);\n}\n\nexport function appendParallelBranch(\n state: PipelineState,\n parallel: PipelineGraphNode,\n branchKey: string,\n child: PipelineGraph,\n): { state: PipelineState; node: PipelineGraphNode; terminalPaths: PipelineNodePath[] } {\n const id = validateStageId(branchKey);\n const path = [...parallel.path, id];\n const node = graphNode(id, path, \"branch\", id, { branchKey: id, pipelineId: child.id });\n const withBranch = appendNode(state, node, [parallel.path], state.terminalPaths);\n const withChild = appendChildGraph(withBranch, node.path, child);\n return { state: withChild, node, terminalPaths: withChild.terminalPaths };\n}\n\nexport function withTerminalPaths(\n state: PipelineState,\n terminalPaths: PipelineNodePath[],\n): PipelineState {\n return { ...state, terminalPaths };\n}\n\nexport function withOutputNode(state: PipelineState): PipelineGraph {\n const graph = cloneGraph(state.graph);\n const outputPath = [OUTPUT_ID];\n if (graph.nodes.some((node) => pathEquals(node.path, outputPath))) {\n return graph;\n }\n graph.nodes.push(graphNode(OUTPUT_ID, outputPath, \"output\", \"Output\"));\n graph.edges.push(\n ...state.terminalPaths.map((source, index) => ({\n id: `edge_${state.nextEdgeIndex + index}`,\n source: [...source],\n target: outputPath,\n })),\n );\n return graph;\n}\n\nexport function cloneGraph(graph: PipelineGraph): PipelineGraph {\n return {\n ...graph,\n nodes: graph.nodes.map((node) => ({ ...node, path: [...node.path] })),\n edges: graph.edges.map((edge) => ({\n ...edge,\n source: [...edge.source],\n target: [...edge.target],\n })),\n };\n}\n\nexport function scopedNode(node: PipelineGraphNode, path: PipelineNodePath): PipelineGraphNode {\n return { ...node, path: [...path] };\n}\n\nfunction appendChildGraph(\n state: PipelineState,\n parentPath: PipelineNodePath,\n child: PipelineGraph,\n): PipelineState {\n const childNodes = child.nodes\n .filter((node) => !isBoundaryPath(node.path))\n .map((node) => scopedNode(node, [...parentPath, ...node.path]));\n const childEdges: PipelineState[\"graph\"][\"edges\"] = [];\n const terminalPaths: PipelineNodePath[] = [];\n let nextEdgeIndex = state.nextEdgeIndex;\n\n for (const edge of child.edges) {\n const sourceIsInput = isInputPath(edge.source);\n const targetIsOutput = isOutputPath(edge.target);\n const source = sourceIsInput ? [...parentPath] : [...parentPath, ...edge.source];\n if (targetIsOutput) {\n terminalPaths.push(source);\n continue;\n }\n const target = [...parentPath, ...edge.target];\n let childEdge: PipelineGraphEdge = {\n id: `edge_${nextEdgeIndex}`,\n source,\n target,\n };\n if (edge.label !== undefined) childEdge = { ...childEdge, label: edge.label };\n childEdges.push(childEdge);\n nextEdgeIndex += 1;\n }\n\n return {\n ...state,\n graph: {\n ...state.graph,\n nodes: [...state.graph.nodes, ...childNodes],\n edges: [...state.graph.edges, ...childEdges],\n },\n terminalPaths: terminalPaths.length === 0 ? [[...parentPath]] : terminalPaths,\n nextEdgeIndex,\n };\n}\n\nfunction appendNode(\n state: PipelineState,\n node: PipelineGraphNode,\n sourcePaths: PipelineNodePath[],\n terminalPaths: PipelineNodePath[],\n stageId?: string,\n): PipelineState {\n const edges = sourcePaths.map((source, index) => ({\n id: `edge_${state.nextEdgeIndex + index}`,\n source: [...source],\n target: [...node.path],\n }));\n const stageIds = new Set(state.stageIds);\n if (stageId !== undefined) stageIds.add(stageId);\n return {\n graph: {\n ...state.graph,\n nodes: [...state.graph.nodes, node],\n edges: [...state.graph.edges, ...edges],\n },\n terminalPaths,\n stageIds,\n nextEdgeIndex: state.nextEdgeIndex + edges.length,\n };\n}\n\nfunction graphNode(\n id: string,\n path: PipelineNodePath,\n kind: PipelineStageKind,\n label: string,\n options: {\n description?: string | undefined;\n metadata?: JsonObject | undefined;\n agentId?: string | undefined;\n agentName?: string | undefined;\n pipelineId?: string | undefined;\n branchKey?: string | undefined;\n } = {},\n): PipelineGraphNode {\n const node: PipelineGraphNode = { id, path: [...path], kind, label };\n if (options.description !== undefined) node.description = options.description;\n if (options.metadata !== undefined) node.metadata = options.metadata;\n if (options.agentId !== undefined) node.agentId = options.agentId;\n if (options.agentName !== undefined) node.agentName = options.agentName;\n if (options.pipelineId !== undefined) node.pipelineId = options.pipelineId;\n if (options.branchKey !== undefined) node.branchKey = options.branchKey;\n return node;\n}\n\nfunction validateStageId(value: string): string {\n if (typeof value !== \"string\") {\n throw new TypeError(\"Pipeline stage id must be a string.\");\n }\n const id = value.trim();\n if (id.length === 0) {\n throw new TypeError(\"Pipeline stage id must be a non-empty string.\");\n }\n if (RESERVED_STAGE_IDS.has(id)) {\n throw new TypeError(`Pipeline stage id \"${id}\" is reserved.`);\n }\n return id;\n}\n\nfunction isBoundaryPath(path: PipelineNodePath): boolean {\n return isInputPath(path) || isOutputPath(path);\n}\n\nfunction isInputPath(path: PipelineNodePath): boolean {\n return path.length === 1 && path[0] === INPUT_ID;\n}\n\nfunction isOutputPath(path: PipelineNodePath): boolean {\n return path.length === 1 && path[0] === OUTPUT_ID;\n}\n\nfunction pathEquals(left: PipelineNodePath, right: PipelineNodePath): boolean {\n return left.length === right.length && left.every((segment, index) => segment === right[index]);\n}\n","import { observerSnapshot } from \"../observability/snapshot\";\nimport { PipelineObserverDispatchError, type PipelineObserverFailure } from \"./errors\";\nimport type {\n PipelineObservabilityOptions,\n PipelineObserverErrorPolicy,\n PipelineObserverMap,\n PipelineObserverTraceInfo,\n PipelineRunEndArgs,\n PipelineRunErrorArgs,\n PipelineRunObservation,\n PipelineRunStartArgs,\n PipelineStageEndArgs,\n PipelineStageErrorArgs,\n PipelineStageObservation,\n PipelineStageStartArgs,\n PipelineTraceInfo,\n} from \"./types\";\n\ntype NamedObserver<T> = {\n readonly name: string;\n readonly observer: T;\n};\n\ntype ActiveNamedObserver<T> = NamedObserver<T> & {\n terminal: boolean;\n};\n\nfunction resolvePrimaryTrace<T extends { readonly trace?: PipelineObserverTraceInfo | undefined }>(\n observers: readonly ActiveNamedObserver<T>[],\n primaryTrace: string | undefined,\n): PipelineTraceInfo | undefined {\n if (primaryTrace === undefined) return undefined;\n const primary = observers.find((entry) => entry.name === primaryTrace);\n return primary?.observer.trace === undefined\n ? undefined\n : Object.freeze({ observer: primary.name, ...primary.observer.trace });\n}\n\nexport function snapshotPipelineObservability(\n observability: PipelineObservabilityOptions | undefined,\n): PipelineObservabilityOptions | undefined {\n if (observability === undefined) return undefined;\n const observers: Record<string, PipelineObserverMap[string]> = {};\n for (const [name, observer] of Object.entries(observability.observers)) {\n if (name.trim().length === 0) {\n throw new TypeError(\"Pipeline observer names must not be empty.\");\n }\n if (\n typeof observer !== \"object\" ||\n observer === null ||\n typeof observer.startRun !== \"function\"\n ) {\n throw new TypeError(`Pipeline observer \"${name}\" must implement startRun().`);\n }\n observers[name] = observer;\n }\n if (observability.primaryTrace !== undefined && !(observability.primaryTrace in observers)) {\n throw new TypeError(\n `Pipeline primaryTrace \"${observability.primaryTrace}\" must name a configured observer.`,\n );\n }\n const errorPolicy = observability.errorPolicy ?? \"ignore\";\n if (errorPolicy !== \"ignore\" && errorPolicy !== \"throw\") {\n throw new TypeError('Pipeline observability.errorPolicy must be \"ignore\" or \"throw\".');\n }\n const snapshot: PipelineObservabilityOptions = {\n observers: Object.freeze(observers),\n errorPolicy,\n ...(observability.primaryTrace === undefined\n ? {}\n : { primaryTrace: observability.primaryTrace }),\n };\n return Object.freeze(snapshot);\n}\n\nexport async function startPipelineRunObservers(\n observers: PipelineObserverMap,\n args: PipelineRunStartArgs,\n options: {\n readonly primaryTrace?: string | undefined;\n readonly errorPolicy: PipelineObserverErrorPolicy;\n },\n): Promise<ActivePipelineRunObservers> {\n const runObservers: ActiveNamedObserver<PipelineRunObservation>[] = [];\n const failures: PipelineObserverFailure[] = [];\n for (const [name, observer] of Object.entries(observers)) {\n try {\n const runObserver = await observer.startRun(observerSnapshot(args));\n if (runObserver !== undefined) {\n runObservers.push({ name, observer: runObserver, terminal: false });\n }\n } catch (error) {\n failures.push({ observer: name, error });\n }\n }\n if (options.errorPolicy === \"throw\" && failures.length > 0) {\n const startupError = new PipelineObserverDispatchError(\"startRun\", failures);\n const cleanupFailures = await terminateObservers(runObservers, (observer) =>\n observer.error?.(\n observerSnapshot({\n runId: args.runId,\n pipelineId: args.pipelineId,\n status: \"failed\",\n error: startupError,\n durationMs: 0,\n }),\n ),\n );\n throw new PipelineObserverDispatchError(\"startRun\", [...failures, ...cleanupFailures]);\n }\n return new ActivePipelineRunObservers(runObservers, options);\n}\n\nexport class ActivePipelineRunObservers {\n readonly trace: PipelineTraceInfo | undefined;\n\n constructor(\n private readonly observers: readonly ActiveNamedObserver<PipelineRunObservation>[],\n private readonly options: {\n readonly primaryTrace?: string | undefined;\n readonly errorPolicy: PipelineObserverErrorPolicy;\n },\n ) {\n this.trace = resolvePrimaryTrace(observers, options.primaryTrace);\n }\n\n async startStage(args: PipelineStageStartArgs): Promise<ActivePipelineStageObservers> {\n const stageObservers: ActiveNamedObserver<PipelineStageObservation>[] = [];\n const failures: PipelineObserverFailure[] = [];\n for (const entry of this.observers) {\n if (entry.observer.startStage === undefined) continue;\n try {\n const observer = await entry.observer.startStage(observerSnapshot(args));\n if (observer !== undefined) {\n stageObservers.push({ name: entry.name, observer, terminal: false });\n }\n } catch (error) {\n failures.push({ observer: entry.name, error });\n }\n }\n if (this.options.errorPolicy === \"throw\" && failures.length > 0) {\n const startupError = new PipelineObserverDispatchError(\"startStage\", failures);\n const cleanupFailures = await terminateObservers(stageObservers, (observer) =>\n observer.error?.(observerSnapshot({ ...args, error: startupError, durationMs: 0 })),\n );\n throw new PipelineObserverDispatchError(\"startStage\", [...failures, ...cleanupFailures]);\n }\n return new ActivePipelineStageObservers(stageObservers, this.options);\n }\n\n async end(args: PipelineRunEndArgs): Promise<void> {\n await dispatchTerminalObservers(\n this.observers,\n \"end\",\n (observer) => observer.end(observerSnapshot(args)),\n this.options.errorPolicy,\n );\n }\n\n async error(args: PipelineRunErrorArgs): Promise<void> {\n await dispatchTerminalObservers(\n this.observers,\n \"error\",\n (observer) => observer.error?.(observerSnapshot(args)),\n \"ignore\",\n );\n }\n}\n\nexport class ActivePipelineStageObservers {\n readonly trace: PipelineTraceInfo | undefined;\n\n constructor(\n private readonly observers: readonly ActiveNamedObserver<PipelineStageObservation>[],\n private readonly options: {\n readonly primaryTrace?: string | undefined;\n readonly errorPolicy: PipelineObserverErrorPolicy;\n },\n ) {\n this.trace = resolvePrimaryTrace(observers, options.primaryTrace);\n }\n\n async end(args: PipelineStageEndArgs): Promise<void> {\n await dispatchTerminalObservers(\n this.observers,\n \"stage.end\",\n (observer) => observer.end(observerSnapshot(args)),\n this.options.errorPolicy,\n );\n }\n\n async error(args: PipelineStageErrorArgs): Promise<void> {\n await dispatchTerminalObservers(\n this.observers,\n \"stage.error\",\n (observer) => observer.error?.(observerSnapshot(args)),\n \"ignore\",\n );\n }\n}\n\nasync function dispatchTerminalObservers<T>(\n observers: readonly ActiveNamedObserver<T>[],\n phase: string,\n dispatch: (observer: T) => void | Promise<void> | undefined,\n errorPolicy: PipelineObserverErrorPolicy,\n): Promise<void> {\n const failures = await terminateObservers(observers, dispatch);\n if (errorPolicy === \"throw\" && failures.length > 0) {\n throw new PipelineObserverDispatchError(phase, failures);\n }\n}\n\nasync function terminateObservers<T>(\n observers: readonly ActiveNamedObserver<T>[],\n dispatch: (observer: T) => void | Promise<void> | undefined,\n): Promise<PipelineObserverFailure[]> {\n const failures: PipelineObserverFailure[] = [];\n for (const entry of observers) {\n if (entry.terminal) continue;\n entry.terminal = true;\n try {\n await dispatch(entry.observer);\n } catch (error) {\n failures.push({ observer: entry.name, error });\n }\n }\n return failures;\n}\n","import { abortError, throwIfAborted } from \"../internal/abort\";\nimport { scopedNode } from \"./graph\";\nimport type {\n PipelineGraphNode,\n PipelineNodePath,\n PipelineRunContext,\n PipelineRunEvent,\n PipelineStageContext,\n PipelineTraceInfo,\n} from \"./types\";\n\nexport async function runNode<Output>(\n context: PipelineRunContext,\n node: PipelineGraphNode,\n path: PipelineNodePath,\n input: unknown,\n fn: (trace: PipelineTraceInfo | undefined) => Output | Promise<Output>,\n): Promise<Awaited<Output>> {\n throwIfAborted(context.abortSignal);\n const eventNode = scopedNode(node, path);\n const startedAt = Date.now();\n const eventBase = {\n runId: context.runId,\n pipelineId: context.pipelineId,\n path: [...path],\n node: eventNode,\n };\n const observers = await context.observability.startStage({ ...eventBase, input });\n try {\n await emitEvent(context, { type: \"stage_started\", ...eventBase });\n } catch (error) {\n await observers.error({ ...eventBase, error, durationMs: Date.now() - startedAt });\n throw error;\n }\n\n try {\n const output = (await fn(observers.trace)) as Awaited<Output>;\n throwIfAborted(context.abortSignal);\n const durationMs = Date.now() - startedAt;\n await emitEvent(context, {\n type: \"stage_completed\",\n ...eventBase,\n durationMs,\n });\n await observers.end({ ...eventBase, output, durationMs });\n return output;\n } catch (error) {\n const durationMs = Date.now() - startedAt;\n const failureEvent: PipelineRunEvent = {\n type: \"stage_failed\",\n ...eventBase,\n durationMs,\n error,\n };\n try {\n await emitEvent(context, failureEvent);\n } catch (observerError) {\n await observers.error({ ...eventBase, error, durationMs });\n throw new AggregateError(\n [error, observerError],\n `Pipeline stage \"${node.id}\" and its observer both failed.`,\n );\n }\n await observers.error({ ...eventBase, error, durationMs });\n throw error;\n }\n}\n\nexport function stageContext<Input>(\n input: Input,\n context: PipelineRunContext,\n): PipelineStageContext<Input> {\n return {\n input,\n runId: context.runId,\n pipelineId: context.pipelineId,\n runMetadata: context.runMetadata,\n abortSignal: context.abortSignal,\n };\n}\n\nexport function childContext(\n context: PipelineRunContext,\n abortSignal: AbortSignal | undefined,\n): PipelineRunContext {\n return { ...context, abortSignal };\n}\n\nexport function combineAbortSignals(\n parent: AbortSignal | undefined,\n local: AbortSignal,\n): { signal: AbortSignal; dispose(): void } {\n const controller = new AbortController();\n const abortFromParent = () => controller.abort(parent?.reason);\n const abortFromLocal = () => controller.abort(local.reason);\n\n if (parent?.aborted === true) {\n controller.abort(parent.reason);\n } else if (local.aborted) {\n controller.abort(local.reason);\n } else {\n parent?.addEventListener(\"abort\", abortFromParent, { once: true });\n local.addEventListener(\"abort\", abortFromLocal, { once: true });\n }\n\n return {\n signal: controller.signal,\n dispose() {\n parent?.removeEventListener(\"abort\", abortFromParent);\n local.removeEventListener(\"abort\", abortFromLocal);\n },\n };\n}\n\nexport function pipelineAbortError(signal: AbortSignal | undefined): Error {\n return abortError(signal?.reason);\n}\n\nasync function emitEvent(context: PipelineRunContext, event: PipelineRunEvent): Promise<void> {\n if (context.observer === undefined) return;\n try {\n await context.observer.onEvent(event);\n } catch (error) {\n if (context.failOnObserverError) throw error;\n }\n}\n"],"mappings":"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","names":[]}
1
+ {"version":3,"sources":["../../src/pipeline/errors.ts","../../src/pipeline/pipeline.ts","../../src/pipeline/graph.ts","../../src/pipeline/observability.ts","../../src/pipeline/runtime.ts"],"sourcesContent":["import type { AgentInteractionOutcome } from \"../agent/run-types\";\n\nexport class PipelineAgentSuspensionError extends Error {\n constructor(readonly result: AgentInteractionOutcome) {\n super(\"Pipeline agent stage suspended for human interaction.\");\n this.name = \"PipelineAgentSuspensionError\";\n }\n}\n\nexport type PipelineObserverFailure = {\n readonly observer: string;\n readonly error: unknown;\n};\n\nexport class PipelineObserverDispatchError extends AggregateError {\n readonly phase: string;\n readonly failures: readonly PipelineObserverFailure[];\n\n constructor(phase: string, failures: readonly PipelineObserverFailure[]) {\n super(\n failures.map((failure) => failure.error),\n `Pipeline observer ${phase} failed for ${failures\n .map((failure) => failure.observer)\n .join(\", \")}.`,\n );\n this.name = \"PipelineObserverDispatchError\";\n this.phase = phase;\n this.failures = Object.freeze([...failures]);\n }\n}\n","import { z } from \"zod\";\nimport type { Agent } from \"../agent/agent\";\nimport { AgentRunBlockedError } from \"../agent/errors\";\nimport type { AgentInput, AgentRunOptions, AgentRunSettings } from \"../agent/run-types\";\nimport type { CompletionModel, CompletionModelControlsOf, JsonObject } from \"../completion\";\nimport { type ExtractOptions, extract as extractData } from \"../extractor\";\nimport { throwIfAborted } from \"../internal/abort\";\nimport { mapWithConcurrency } from \"../internal/concurrency\";\nimport type { AgentTraceOptions } from \"../observability\";\nimport { PipelineAgentSuspensionError } from \"./errors\";\nimport {\n appendComposedGraph,\n appendParallelBranch,\n appendStageNode,\n cloneGraph,\n initialPipelineState,\n withOutputNode,\n withTerminalPaths,\n} from \"./graph\";\nimport { snapshotPipelineObservability, startPipelineRunObservers } from \"./observability\";\nimport {\n childContext,\n combineAbortSignals,\n pipelineAbortError,\n runNode,\n stageContext,\n} from \"./runtime\";\nimport type {\n ParallelOutput,\n PipelineBatchItem,\n PipelineBatchOptions,\n PipelineExecutor,\n PipelineGraph,\n PipelineGraphNode,\n PipelineNodePath,\n PipelineOptions,\n PipelineRunContext,\n PipelineRunOptions,\n PipelineRunResult,\n PipelineStageContext,\n PipelineStageMetadata,\n PipelineState,\n PipelineTraceInfo,\n} from \"./types\";\n\nconst internalPipelineOptions = Symbol(\"internal-pipeline-options\");\n\ntype RawResponseOf<Model> =\n Model extends CompletionModel<infer RawResponse> ? RawResponse : unknown;\n\ntype PipelineAgentRequest<Output, Model extends CompletionModel> = AgentInput &\n Omit<\n AgentRunSettings<Output, RawResponseOf<Model>, CompletionModelControlsOf<Model>>,\n \"abortSignal\"\n >;\n\nexport type PipelineStepOptions<Input, Output> = PipelineStageMetadata & {\n run(context: PipelineStageContext<Input>): Output | Promise<Output>;\n};\n\nexport type PipelineComposeOptions<Input, Output> = PipelineStageMetadata & {\n pipeline: Pipeline<Input, Output>;\n};\n\nexport type PipelineParallelOptions<\n Input,\n Branches extends Record<string, Pipeline<Input, unknown>>,\n> = PipelineStageMetadata & {\n branches: Branches;\n};\n\nexport type PipelineAgentOptions<\n Input,\n AgentOutput,\n Model extends CompletionModel,\n> = PipelineStageMetadata & {\n agent: Agent<AgentOutput, Model>;\n request(\n context: PipelineStageContext<Input>,\n ): PipelineAgentRequest<AgentOutput, Model> | Promise<PipelineAgentRequest<AgentOutput, Model>>;\n suspension: \"reject\";\n};\n\nexport type PipelineExtractOptions<\n Input,\n Extracted,\n Model extends CompletionModel,\n> = PipelineStageMetadata &\n Omit<ExtractOptions<Extracted, Model>, \"text\" | \"abortSignal\"> & {\n text(context: PipelineStageContext<Input>): string | Promise<string>;\n };\n\ntype InternalPipelineOptions<Input, Output> = {\n [internalPipelineOptions]: {\n executor: PipelineExecutor<Input, Output>;\n state: PipelineState;\n observability: PipelineOptions<Input>[\"observability\"];\n };\n};\n\n/** Immutable, typed Pipeline with explicit stage and execution boundaries. */\nexport class Pipeline<Input, Output = Input> {\n readonly id: string;\n readonly name: string | undefined;\n readonly description: string | undefined;\n readonly metadata: JsonObject | undefined;\n readonly observability: PipelineOptions<Input>[\"observability\"];\n\n private readonly executor: PipelineExecutor<Input, Output>;\n private readonly state: PipelineState;\n\n constructor(options: PipelineOptions<Input, Output>);\n constructor(options: PipelineOptions<Input, Output> | InternalPipelineOptions<Input, Output>) {\n if (isInternalPipelineOptions(options)) {\n this.executor = options[internalPipelineOptions].executor;\n this.state = options[internalPipelineOptions].state;\n this.observability = options[internalPipelineOptions].observability;\n } else {\n const id = normalizePipelineId(options.id);\n if (!isZodSchema(options.inputSchema)) {\n throw new TypeError(\"Pipeline inputSchema must be a Zod schema.\");\n }\n const inputSchema = options.inputSchema;\n this.executor = (async (input, context) => {\n throwIfAborted(context.abortSignal);\n return inputSchema.parseAsync(input) as Promise<Output>;\n }) as PipelineExecutor<Input, Output>;\n this.state = initialPipelineState({\n id,\n name: options.name,\n description: options.description,\n metadata: options.metadata,\n });\n this.observability = snapshotPipelineObservability(options.observability);\n }\n\n const graph = this.state.graph;\n this.id = graph.id;\n this.name = graph.name;\n this.description = graph.description;\n this.metadata = graph.metadata;\n }\n\n step<Next>(options: PipelineStepOptions<Awaited<Output>, Next>): Pipeline<Input, Awaited<Next>> {\n const next = appendStageNode(this.state, \"step\", options);\n const executor = (async (input, context, pathPrefix) => {\n const value = await this.execute(input, context, pathPrefix);\n const path = [...pathPrefix, next.node.id];\n return (await runNode(context, next.node, path, value, () =>\n options.run(stageContext(value, context)),\n )) as Awaited<Next>;\n }) as PipelineExecutor<Input, Awaited<Next>>;\n return this.derive(executor, next.state);\n }\n\n compose<Next>(\n options: PipelineComposeOptions<Awaited<Output>, Next>,\n ): Pipeline<Input, Awaited<Next>> {\n const boundary = appendStageNode(this.state, \"pipeline\", options, {\n defaultLabel: options.pipeline.name ?? options.pipeline.id,\n pipelineId: options.pipeline.id,\n });\n const state = appendComposedGraph(boundary.state, boundary.node, options.pipeline.graph());\n const executor = (async (input, context, pathPrefix) => {\n const value = await this.execute(input, context, pathPrefix);\n const path = [...pathPrefix, boundary.node.id];\n return (await runNode(context, boundary.node, path, value, () =>\n options.pipeline.execute(value, context, path),\n )) as Awaited<Next>;\n }) as PipelineExecutor<Input, Awaited<Next>>;\n return this.derive(executor, state);\n }\n\n parallel<Branches extends Record<string, Pipeline<Awaited<Output>, unknown>>>(\n options: PipelineParallelOptions<Awaited<Output>, Branches>,\n ): Pipeline<Input, ParallelOutput<Branches>> {\n const branchEntries = normalizeParallelBranches(options.branches);\n if (branchEntries.length === 0) {\n throw new TypeError(\"Pipeline parallel branches must not be empty.\");\n }\n const parallel = appendStageNode(this.state, \"parallel\", options, {\n defaultLabel: `${branchEntries.length} parallel branches`,\n });\n let nextState = parallel.state;\n const branchNodes = new Map<string, PipelineGraphNode>();\n const terminalPaths: PipelineNodePath[] = [];\n for (const [key, branch] of branchEntries) {\n const appended = appendParallelBranch(nextState, parallel.node, key, branch.graph());\n nextState = appended.state;\n branchNodes.set(key, appended.node);\n terminalPaths.push(...appended.terminalPaths);\n }\n nextState = withTerminalPaths(nextState, terminalPaths);\n\n return this.derive<ParallelOutput<Branches>>(async (input, context, pathPrefix) => {\n const value = await this.execute(input, context, pathPrefix);\n const parallelPath = [...pathPrefix, parallel.node.id];\n return runNode(context, parallel.node, parallelPath, value, async () => {\n const controller = new AbortController();\n const combined = combineAbortSignals(context.abortSignal, controller.signal);\n const branchContext = childContext(context, combined.signal);\n let firstError: unknown;\n const promises = branchEntries.map(async ([key, branch]) => {\n const node = branchNodes.get(key) as PipelineGraphNode;\n const path = [...parallelPath, node.id];\n try {\n const output = await runNode(branchContext, node, path, value, () =>\n branch.execute(value, branchContext, path),\n );\n return [key, output] as const;\n } catch (error) {\n if (firstError === undefined) firstError = error;\n if (!controller.signal.aborted) controller.abort(error);\n throw error;\n }\n });\n\n const settled = await Promise.allSettled(promises);\n combined.dispose();\n if (context.abortSignal?.aborted === true) {\n throw pipelineAbortError(context.abortSignal);\n }\n if (firstError !== undefined) throw firstError;\n return Object.fromEntries(\n settled.map(\n (result) => (result as PromiseFulfilledResult<readonly [string, unknown]>).value,\n ),\n ) as ParallelOutput<Branches>;\n });\n }, nextState);\n }\n\n agent<AgentOutput, Model extends CompletionModel>(\n options: PipelineAgentOptions<Awaited<Output>, AgentOutput, Model>,\n ): Pipeline<Input, AgentOutput> {\n if (options.suspension !== \"reject\") {\n throw new TypeError('Pipeline Agent stages require suspension: \"reject\".');\n }\n const next = appendStageNode(this.state, \"agent\", options, {\n defaultLabel: options.agent.name ?? options.agent.id,\n agentId: options.agent.id,\n agentName: options.agent.name,\n });\n return this.derive<AgentOutput>(async (input, context, pathPrefix) => {\n const value = await this.execute(input, context, pathPrefix);\n const path = [...pathPrefix, next.node.id];\n return runNode(context, next.node, path, value, async (stageTrace) => {\n const request = await options.request(stageContext(value, context));\n const response = await options.agent.generate({\n ...request,\n trace: withPipelineParentTrace(\n request.trace,\n stageTrace,\n options.agent.observability?.primaryTrace,\n ),\n abortSignal: context.abortSignal,\n } as AgentRunOptions<AgentOutput, RawResponseOf<Model>, CompletionModelControlsOf<Model>>);\n if (response.type === \"interaction\") {\n throw new PipelineAgentSuspensionError(response);\n }\n if (response.type === \"blocked\") {\n throw new AgentRunBlockedError(response);\n }\n return response.output;\n });\n }, next.state);\n }\n\n extract<Extracted, Model extends CompletionModel>(\n options: PipelineExtractOptions<Awaited<Output>, Extracted, Model>,\n ): Pipeline<Input, Extracted> {\n const next = appendStageNode(this.state, \"extractor\", options);\n return this.derive<Extracted>(async (input, context, pathPrefix) => {\n const value = await this.execute(input, context, pathPrefix);\n const path = [...pathPrefix, next.node.id];\n return runNode(context, next.node, path, value, async () => {\n const text = await options.text(stageContext(value, context));\n const result = await extractData({\n model: options.model,\n text,\n outputSchema: options.outputSchema,\n instructions: options.instructions,\n retries: options.retries,\n temperature: options.temperature,\n maxTokens: options.maxTokens,\n providerOptions: options.providerOptions,\n abortSignal: context.abortSignal,\n });\n return result.output;\n });\n }, next.state);\n }\n\n async run(options: PipelineRunOptions<Input>): Promise<PipelineRunResult<Output>> {\n const runId = normalizeRunId(options.runId ?? globalThis.crypto.randomUUID());\n const startedAt = Date.now();\n const observability = await startPipelineRunObservers(\n this.observability?.observers ?? {},\n {\n runId,\n pipelineId: this.id,\n pipelineName: this.name,\n pipelineDescription: this.description,\n pipelineMetadata: this.metadata,\n runMetadata: options.metadata,\n trace: options.trace,\n input: options.input,\n },\n {\n primaryTrace: this.observability?.primaryTrace,\n errorPolicy: this.observability?.errorPolicy ?? \"ignore\",\n },\n );\n const context: PipelineRunContext = {\n runId,\n pipelineId: this.id,\n runMetadata: options.metadata,\n abortSignal: options.abortSignal,\n observer: options.observer,\n failOnObserverError: options.failOnObserverError === true,\n observability,\n };\n try {\n throwIfAborted(context.abortSignal);\n const output = await this.execute(options.input, context, []);\n throwIfAborted(context.abortSignal);\n await observability.end({\n runId,\n pipelineId: this.id,\n output,\n durationMs: Date.now() - startedAt,\n });\n return observability.trace === undefined\n ? { runId, output }\n : { runId, output, trace: observability.trace };\n } catch (error) {\n await observability.error({\n runId,\n pipelineId: this.id,\n status: context.abortSignal?.aborted === true ? \"cancelled\" : \"failed\",\n error,\n durationMs: Date.now() - startedAt,\n });\n throw error;\n }\n }\n\n async runBatch(options: PipelineBatchOptions<Input>): Promise<Array<PipelineBatchItem<Output>>> {\n throwIfAborted(options.abortSignal);\n return mapWithConcurrency([...options.inputs], options.concurrency, async (input) => {\n const runId = globalThis.crypto.randomUUID();\n try {\n const result = await this.run({\n input,\n runId,\n metadata: options.metadata,\n trace: options.trace,\n abortSignal: options.abortSignal,\n observer: options.observer,\n failOnObserverError: options.failOnObserverError,\n });\n return { status: \"completed\", ...result } as const;\n } catch (error) {\n if (options.abortSignal?.aborted === true) {\n throw pipelineAbortError(options.abortSignal);\n }\n return { status: \"failed\", runId, error } as const;\n }\n });\n }\n\n graph(): PipelineGraph {\n return cloneGraph(withOutputNode(this.state));\n }\n\n private derive<DerivedOutput>(\n executor: PipelineExecutor<Input, DerivedOutput>,\n state: PipelineState,\n ): Pipeline<Input, DerivedOutput> {\n return createDerivedPipeline(executor, state, this.observability);\n }\n\n private async execute(\n input: Input,\n context: PipelineRunContext,\n pathPrefix: PipelineNodePath,\n ): Promise<Awaited<Output>> {\n throwIfAborted(context.abortSignal);\n return (await this.executor(input, context, pathPrefix)) as Awaited<Output>;\n }\n}\n\nfunction createDerivedPipeline<Input, Output>(\n executor: PipelineExecutor<Input, Output>,\n state: PipelineState,\n observability: PipelineOptions<Input>[\"observability\"],\n): Pipeline<Input, Output> {\n const options: InternalPipelineOptions<Input, Output> = {\n [internalPipelineOptions]: { executor, state, observability },\n };\n return new Pipeline<Input, Output>(options as unknown as PipelineOptions<Input, Output>);\n}\n\nfunction withPipelineParentTrace(\n trace: AgentTraceOptions | undefined,\n parent: PipelineTraceInfo | undefined,\n agentPrimaryTrace: string | undefined,\n): AgentTraceOptions | undefined {\n if (parent?.traceId === undefined) return trace;\n if (parent.observer !== agentPrimaryTrace) return trace;\n if (trace?.traceId !== undefined && trace.traceId !== parent.traceId) return trace;\n return {\n ...trace,\n traceId: parent.traceId,\n ...(trace?.parentObservationId !== undefined || parent.observationId === undefined\n ? {}\n : { parentObservationId: parent.observationId }),\n };\n}\n\nfunction isInternalPipelineOptions<Input, Output>(\n options: PipelineOptions<Input, Output> | InternalPipelineOptions<Input, Output>,\n): options is InternalPipelineOptions<Input, Output> {\n return internalPipelineOptions in options;\n}\n\nfunction isZodSchema(value: unknown): value is z.ZodType {\n return value instanceof z.ZodType;\n}\n\nfunction normalizePipelineId(id: string): string {\n if (typeof id !== \"string\") {\n throw new TypeError(\"Pipeline id must be a string.\");\n }\n const normalized = id.trim();\n if (normalized.length === 0) {\n throw new TypeError(\"Pipeline id must be a non-empty string.\");\n }\n return normalized;\n}\n\nfunction normalizeRunId(runId: string): string {\n if (typeof runId !== \"string\") {\n throw new TypeError(\"Pipeline runId must be a string.\");\n }\n const normalized = runId.trim();\n if (normalized.length === 0) {\n throw new TypeError(\"Pipeline runId must be a non-empty string.\");\n }\n return normalized;\n}\n\nfunction normalizeParallelBranches<Branch>(\n branches: Readonly<Record<string, Branch>>,\n): Array<readonly [string, Branch]> {\n const entries: Array<readonly [string, Branch]> = [];\n const ids = new Set<string>();\n for (const key of Object.keys(branches)) {\n const pipeline = branches[key] as Branch;\n const id = key.trim();\n if (id.length === 0) {\n throw new TypeError(\"Pipeline parallel branch id must be a non-empty string.\");\n }\n if (ids.has(id)) {\n throw new TypeError(`Pipeline parallel branch id \"${id}\" is already registered.`);\n }\n ids.add(id);\n if (id !== key) {\n throw new TypeError(\"Pipeline parallel branch ids must not contain surrounding whitespace.\");\n }\n entries.push([id, pipeline]);\n }\n return entries;\n}\n","import type { JsonObject } from \"../completion\";\nimport type {\n PipelineGraph,\n PipelineGraphEdge,\n PipelineGraphNode,\n PipelineNodePath,\n PipelineStageKind,\n PipelineStageMetadata,\n PipelineState,\n} from \"./types\";\n\nconst INPUT_ID = \"$input\";\nconst OUTPUT_ID = \"$output\";\nconst RESERVED_STAGE_IDS = new Set([INPUT_ID, OUTPUT_ID]);\n\nexport function initialPipelineState(options: {\n id: string;\n name?: string | undefined;\n description?: string | undefined;\n metadata?: JsonObject | undefined;\n}): PipelineState {\n const input = graphNode(INPUT_ID, [INPUT_ID], \"input\", \"Input\");\n const graph: PipelineGraph = {\n id: options.id,\n nodes: [input],\n edges: [],\n };\n if (options.name !== undefined) graph.name = options.name;\n if (options.description !== undefined) graph.description = options.description;\n if (options.metadata !== undefined) graph.metadata = options.metadata;\n return {\n graph,\n terminalPaths: [input.path],\n stageIds: new Set(),\n nextEdgeIndex: 1,\n };\n}\n\nexport function appendStageNode(\n state: PipelineState,\n kind: PipelineStageKind,\n stage: PipelineStageMetadata,\n options: {\n defaultLabel?: string | undefined;\n agentId?: string | undefined;\n agentName?: string | undefined;\n pipelineId?: string | undefined;\n } = {},\n): { state: PipelineState; node: PipelineGraphNode } {\n const id = validateStageId(stage.id);\n if (state.stageIds.has(id)) {\n throw new TypeError(`Pipeline stage id \"${id}\" is already registered.`);\n }\n const node = graphNode(id, [id], kind, stage.name ?? options.defaultLabel ?? id, {\n description: stage.description,\n metadata: stage.metadata,\n agentId: options.agentId,\n agentName: options.agentName,\n pipelineId: options.pipelineId,\n });\n return {\n node,\n state: appendNode(state, node, state.terminalPaths, [node.path], id),\n };\n}\n\nexport function appendComposedGraph(\n state: PipelineState,\n boundary: PipelineGraphNode,\n child: PipelineGraph,\n): PipelineState {\n return appendChildGraph(state, boundary.path, child);\n}\n\nexport function appendParallelBranch(\n state: PipelineState,\n parallel: PipelineGraphNode,\n branchKey: string,\n child: PipelineGraph,\n): { state: PipelineState; node: PipelineGraphNode; terminalPaths: PipelineNodePath[] } {\n const id = validateStageId(branchKey);\n const path = [...parallel.path, id];\n const node = graphNode(id, path, \"branch\", id, { branchKey: id, pipelineId: child.id });\n const withBranch = appendNode(state, node, [parallel.path], state.terminalPaths);\n const withChild = appendChildGraph(withBranch, node.path, child);\n return { state: withChild, node, terminalPaths: withChild.terminalPaths };\n}\n\nexport function withTerminalPaths(\n state: PipelineState,\n terminalPaths: PipelineNodePath[],\n): PipelineState {\n return { ...state, terminalPaths };\n}\n\nexport function withOutputNode(state: PipelineState): PipelineGraph {\n const graph = cloneGraph(state.graph);\n const outputPath = [OUTPUT_ID];\n if (graph.nodes.some((node) => pathEquals(node.path, outputPath))) {\n return graph;\n }\n graph.nodes.push(graphNode(OUTPUT_ID, outputPath, \"output\", \"Output\"));\n graph.edges.push(\n ...state.terminalPaths.map((source, index) => ({\n id: `edge_${state.nextEdgeIndex + index}`,\n source: [...source],\n target: outputPath,\n })),\n );\n return graph;\n}\n\nexport function cloneGraph(graph: PipelineGraph): PipelineGraph {\n return {\n ...graph,\n nodes: graph.nodes.map((node) => ({ ...node, path: [...node.path] })),\n edges: graph.edges.map((edge) => ({\n ...edge,\n source: [...edge.source],\n target: [...edge.target],\n })),\n };\n}\n\nexport function scopedNode(node: PipelineGraphNode, path: PipelineNodePath): PipelineGraphNode {\n return { ...node, path: [...path] };\n}\n\nfunction appendChildGraph(\n state: PipelineState,\n parentPath: PipelineNodePath,\n child: PipelineGraph,\n): PipelineState {\n const childNodes = child.nodes\n .filter((node) => !isBoundaryPath(node.path))\n .map((node) => scopedNode(node, [...parentPath, ...node.path]));\n const childEdges: PipelineState[\"graph\"][\"edges\"] = [];\n const terminalPaths: PipelineNodePath[] = [];\n let nextEdgeIndex = state.nextEdgeIndex;\n\n for (const edge of child.edges) {\n const sourceIsInput = isInputPath(edge.source);\n const targetIsOutput = isOutputPath(edge.target);\n const source = sourceIsInput ? [...parentPath] : [...parentPath, ...edge.source];\n if (targetIsOutput) {\n terminalPaths.push(source);\n continue;\n }\n const target = [...parentPath, ...edge.target];\n let childEdge: PipelineGraphEdge = {\n id: `edge_${nextEdgeIndex}`,\n source,\n target,\n };\n if (edge.label !== undefined) childEdge = { ...childEdge, label: edge.label };\n childEdges.push(childEdge);\n nextEdgeIndex += 1;\n }\n\n return {\n ...state,\n graph: {\n ...state.graph,\n nodes: [...state.graph.nodes, ...childNodes],\n edges: [...state.graph.edges, ...childEdges],\n },\n terminalPaths: terminalPaths.length === 0 ? [[...parentPath]] : terminalPaths,\n nextEdgeIndex,\n };\n}\n\nfunction appendNode(\n state: PipelineState,\n node: PipelineGraphNode,\n sourcePaths: PipelineNodePath[],\n terminalPaths: PipelineNodePath[],\n stageId?: string,\n): PipelineState {\n const edges = sourcePaths.map((source, index) => ({\n id: `edge_${state.nextEdgeIndex + index}`,\n source: [...source],\n target: [...node.path],\n }));\n const stageIds = new Set(state.stageIds);\n if (stageId !== undefined) stageIds.add(stageId);\n return {\n graph: {\n ...state.graph,\n nodes: [...state.graph.nodes, node],\n edges: [...state.graph.edges, ...edges],\n },\n terminalPaths,\n stageIds,\n nextEdgeIndex: state.nextEdgeIndex + edges.length,\n };\n}\n\nfunction graphNode(\n id: string,\n path: PipelineNodePath,\n kind: PipelineStageKind,\n label: string,\n options: {\n description?: string | undefined;\n metadata?: JsonObject | undefined;\n agentId?: string | undefined;\n agentName?: string | undefined;\n pipelineId?: string | undefined;\n branchKey?: string | undefined;\n } = {},\n): PipelineGraphNode {\n const node: PipelineGraphNode = { id, path: [...path], kind, label };\n if (options.description !== undefined) node.description = options.description;\n if (options.metadata !== undefined) node.metadata = options.metadata;\n if (options.agentId !== undefined) node.agentId = options.agentId;\n if (options.agentName !== undefined) node.agentName = options.agentName;\n if (options.pipelineId !== undefined) node.pipelineId = options.pipelineId;\n if (options.branchKey !== undefined) node.branchKey = options.branchKey;\n return node;\n}\n\nfunction validateStageId(value: string): string {\n if (typeof value !== \"string\") {\n throw new TypeError(\"Pipeline stage id must be a string.\");\n }\n const id = value.trim();\n if (id.length === 0) {\n throw new TypeError(\"Pipeline stage id must be a non-empty string.\");\n }\n if (RESERVED_STAGE_IDS.has(id)) {\n throw new TypeError(`Pipeline stage id \"${id}\" is reserved.`);\n }\n return id;\n}\n\nfunction isBoundaryPath(path: PipelineNodePath): boolean {\n return isInputPath(path) || isOutputPath(path);\n}\n\nfunction isInputPath(path: PipelineNodePath): boolean {\n return path.length === 1 && path[0] === INPUT_ID;\n}\n\nfunction isOutputPath(path: PipelineNodePath): boolean {\n return path.length === 1 && path[0] === OUTPUT_ID;\n}\n\nfunction pathEquals(left: PipelineNodePath, right: PipelineNodePath): boolean {\n return left.length === right.length && left.every((segment, index) => segment === right[index]);\n}\n","import { observerSnapshot } from \"../observability/snapshot\";\nimport { PipelineObserverDispatchError, type PipelineObserverFailure } from \"./errors\";\nimport type {\n PipelineObservabilityOptions,\n PipelineObserverErrorPolicy,\n PipelineObserverMap,\n PipelineObserverTraceInfo,\n PipelineRunEndArgs,\n PipelineRunErrorArgs,\n PipelineRunObservation,\n PipelineRunStartArgs,\n PipelineStageEndArgs,\n PipelineStageErrorArgs,\n PipelineStageObservation,\n PipelineStageStartArgs,\n PipelineTraceInfo,\n} from \"./types\";\n\ntype NamedObserver<T> = {\n readonly name: string;\n readonly observer: T;\n};\n\ntype ActiveNamedObserver<T> = NamedObserver<T> & {\n terminal: boolean;\n};\n\nfunction resolvePrimaryTrace<T extends { readonly trace?: PipelineObserverTraceInfo | undefined }>(\n observers: readonly ActiveNamedObserver<T>[],\n primaryTrace: string | undefined,\n): PipelineTraceInfo | undefined {\n if (primaryTrace === undefined) return undefined;\n const primary = observers.find((entry) => entry.name === primaryTrace);\n return primary?.observer.trace === undefined\n ? undefined\n : Object.freeze({ observer: primary.name, ...primary.observer.trace });\n}\n\nexport function snapshotPipelineObservability(\n observability: PipelineObservabilityOptions | undefined,\n): PipelineObservabilityOptions | undefined {\n if (observability === undefined) return undefined;\n const observers: Record<string, PipelineObserverMap[string]> = {};\n for (const [name, observer] of Object.entries(observability.observers)) {\n if (name.trim().length === 0) {\n throw new TypeError(\"Pipeline observer names must not be empty.\");\n }\n if (\n typeof observer !== \"object\" ||\n observer === null ||\n typeof observer.startRun !== \"function\"\n ) {\n throw new TypeError(`Pipeline observer \"${name}\" must implement startRun().`);\n }\n observers[name] = observer;\n }\n if (observability.primaryTrace !== undefined && !(observability.primaryTrace in observers)) {\n throw new TypeError(\n `Pipeline primaryTrace \"${observability.primaryTrace}\" must name a configured observer.`,\n );\n }\n const errorPolicy = observability.errorPolicy ?? \"ignore\";\n if (errorPolicy !== \"ignore\" && errorPolicy !== \"throw\") {\n throw new TypeError('Pipeline observability.errorPolicy must be \"ignore\" or \"throw\".');\n }\n const snapshot: PipelineObservabilityOptions = {\n observers: Object.freeze(observers),\n errorPolicy,\n ...(observability.primaryTrace === undefined\n ? {}\n : { primaryTrace: observability.primaryTrace }),\n };\n return Object.freeze(snapshot);\n}\n\nexport async function startPipelineRunObservers(\n observers: PipelineObserverMap,\n args: PipelineRunStartArgs,\n options: {\n readonly primaryTrace?: string | undefined;\n readonly errorPolicy: PipelineObserverErrorPolicy;\n },\n): Promise<ActivePipelineRunObservers> {\n const runObservers: ActiveNamedObserver<PipelineRunObservation>[] = [];\n const failures: PipelineObserverFailure[] = [];\n for (const [name, observer] of Object.entries(observers)) {\n try {\n const runObserver = await observer.startRun(observerSnapshot(args));\n if (runObserver !== undefined) {\n runObservers.push({ name, observer: runObserver, terminal: false });\n }\n } catch (error) {\n failures.push({ observer: name, error });\n }\n }\n if (options.errorPolicy === \"throw\" && failures.length > 0) {\n const startupError = new PipelineObserverDispatchError(\"startRun\", failures);\n const cleanupFailures = await terminateObservers(runObservers, (observer) =>\n observer.error?.(\n observerSnapshot({\n runId: args.runId,\n pipelineId: args.pipelineId,\n status: \"failed\",\n error: startupError,\n durationMs: 0,\n }),\n ),\n );\n throw new PipelineObserverDispatchError(\"startRun\", [...failures, ...cleanupFailures]);\n }\n return new ActivePipelineRunObservers(runObservers, options);\n}\n\nexport class ActivePipelineRunObservers {\n readonly trace: PipelineTraceInfo | undefined;\n\n constructor(\n private readonly observers: readonly ActiveNamedObserver<PipelineRunObservation>[],\n private readonly options: {\n readonly primaryTrace?: string | undefined;\n readonly errorPolicy: PipelineObserverErrorPolicy;\n },\n ) {\n this.trace = resolvePrimaryTrace(observers, options.primaryTrace);\n }\n\n async startStage(args: PipelineStageStartArgs): Promise<ActivePipelineStageObservers> {\n const stageObservers: ActiveNamedObserver<PipelineStageObservation>[] = [];\n const failures: PipelineObserverFailure[] = [];\n for (const entry of this.observers) {\n if (entry.observer.startStage === undefined) continue;\n try {\n const observer = await entry.observer.startStage(observerSnapshot(args));\n if (observer !== undefined) {\n stageObservers.push({ name: entry.name, observer, terminal: false });\n }\n } catch (error) {\n failures.push({ observer: entry.name, error });\n }\n }\n if (this.options.errorPolicy === \"throw\" && failures.length > 0) {\n const startupError = new PipelineObserverDispatchError(\"startStage\", failures);\n const cleanupFailures = await terminateObservers(stageObservers, (observer) =>\n observer.error?.(observerSnapshot({ ...args, error: startupError, durationMs: 0 })),\n );\n throw new PipelineObserverDispatchError(\"startStage\", [...failures, ...cleanupFailures]);\n }\n return new ActivePipelineStageObservers(stageObservers, this.options);\n }\n\n async end(args: PipelineRunEndArgs): Promise<void> {\n await dispatchTerminalObservers(\n this.observers,\n \"end\",\n (observer) => observer.end(observerSnapshot(args)),\n this.options.errorPolicy,\n );\n }\n\n async error(args: PipelineRunErrorArgs): Promise<void> {\n await dispatchTerminalObservers(\n this.observers,\n \"error\",\n (observer) => observer.error?.(observerSnapshot(args)),\n \"ignore\",\n );\n }\n}\n\nexport class ActivePipelineStageObservers {\n readonly trace: PipelineTraceInfo | undefined;\n\n constructor(\n private readonly observers: readonly ActiveNamedObserver<PipelineStageObservation>[],\n private readonly options: {\n readonly primaryTrace?: string | undefined;\n readonly errorPolicy: PipelineObserverErrorPolicy;\n },\n ) {\n this.trace = resolvePrimaryTrace(observers, options.primaryTrace);\n }\n\n async end(args: PipelineStageEndArgs): Promise<void> {\n await dispatchTerminalObservers(\n this.observers,\n \"stage.end\",\n (observer) => observer.end(observerSnapshot(args)),\n this.options.errorPolicy,\n );\n }\n\n async error(args: PipelineStageErrorArgs): Promise<void> {\n await dispatchTerminalObservers(\n this.observers,\n \"stage.error\",\n (observer) => observer.error?.(observerSnapshot(args)),\n \"ignore\",\n );\n }\n}\n\nasync function dispatchTerminalObservers<T>(\n observers: readonly ActiveNamedObserver<T>[],\n phase: string,\n dispatch: (observer: T) => void | Promise<void> | undefined,\n errorPolicy: PipelineObserverErrorPolicy,\n): Promise<void> {\n const failures = await terminateObservers(observers, dispatch);\n if (errorPolicy === \"throw\" && failures.length > 0) {\n throw new PipelineObserverDispatchError(phase, failures);\n }\n}\n\nasync function terminateObservers<T>(\n observers: readonly ActiveNamedObserver<T>[],\n dispatch: (observer: T) => void | Promise<void> | undefined,\n): Promise<PipelineObserverFailure[]> {\n const failures: PipelineObserverFailure[] = [];\n for (const entry of observers) {\n if (entry.terminal) continue;\n entry.terminal = true;\n try {\n await dispatch(entry.observer);\n } catch (error) {\n failures.push({ observer: entry.name, error });\n }\n }\n return failures;\n}\n","import { abortError, throwIfAborted } from \"../internal/abort\";\nimport { scopedNode } from \"./graph\";\nimport type {\n PipelineGraphNode,\n PipelineNodePath,\n PipelineRunContext,\n PipelineRunEvent,\n PipelineStageContext,\n PipelineTraceInfo,\n} from \"./types\";\n\nexport async function runNode<Output>(\n context: PipelineRunContext,\n node: PipelineGraphNode,\n path: PipelineNodePath,\n input: unknown,\n fn: (trace: PipelineTraceInfo | undefined) => Output | Promise<Output>,\n): Promise<Awaited<Output>> {\n throwIfAborted(context.abortSignal);\n const eventNode = scopedNode(node, path);\n const startedAt = Date.now();\n const eventBase = {\n runId: context.runId,\n pipelineId: context.pipelineId,\n path: [...path],\n node: eventNode,\n };\n const observers = await context.observability.startStage({ ...eventBase, input });\n try {\n await emitEvent(context, { type: \"stage_started\", ...eventBase });\n } catch (error) {\n await observers.error({ ...eventBase, error, durationMs: Date.now() - startedAt });\n throw error;\n }\n\n try {\n const output = (await fn(observers.trace)) as Awaited<Output>;\n throwIfAborted(context.abortSignal);\n const durationMs = Date.now() - startedAt;\n await emitEvent(context, {\n type: \"stage_completed\",\n ...eventBase,\n durationMs,\n });\n await observers.end({ ...eventBase, output, durationMs });\n return output;\n } catch (error) {\n const durationMs = Date.now() - startedAt;\n const failureEvent: PipelineRunEvent = {\n type: \"stage_failed\",\n ...eventBase,\n durationMs,\n error,\n };\n try {\n await emitEvent(context, failureEvent);\n } catch (observerError) {\n await observers.error({ ...eventBase, error, durationMs });\n throw new AggregateError(\n [error, observerError],\n `Pipeline stage \"${node.id}\" and its observer both failed.`,\n );\n }\n await observers.error({ ...eventBase, error, durationMs });\n throw error;\n }\n}\n\nexport function stageContext<Input>(\n input: Input,\n context: PipelineRunContext,\n): PipelineStageContext<Input> {\n return {\n input,\n runId: context.runId,\n pipelineId: context.pipelineId,\n runMetadata: context.runMetadata,\n abortSignal: context.abortSignal,\n };\n}\n\nexport function childContext(\n context: PipelineRunContext,\n abortSignal: AbortSignal | undefined,\n): PipelineRunContext {\n return { ...context, abortSignal };\n}\n\nexport function combineAbortSignals(\n parent: AbortSignal | undefined,\n local: AbortSignal,\n): { signal: AbortSignal; dispose(): void } {\n const controller = new AbortController();\n const abortFromParent = () => controller.abort(parent?.reason);\n const abortFromLocal = () => controller.abort(local.reason);\n\n if (parent?.aborted === true) {\n controller.abort(parent.reason);\n } else if (local.aborted) {\n controller.abort(local.reason);\n } else {\n parent?.addEventListener(\"abort\", abortFromParent, { once: true });\n local.addEventListener(\"abort\", abortFromLocal, { once: true });\n }\n\n return {\n signal: controller.signal,\n dispose() {\n parent?.removeEventListener(\"abort\", abortFromParent);\n local.removeEventListener(\"abort\", abortFromLocal);\n },\n };\n}\n\nexport function pipelineAbortError(signal: AbortSignal | undefined): Error {\n return abortError(signal?.reason);\n}\n\nasync function emitEvent(context: PipelineRunContext, event: PipelineRunEvent): Promise<void> {\n if (context.observer === undefined) return;\n try {\n await context.observer.onEvent(event);\n } catch (error) {\n if (context.failOnObserverError) throw error;\n }\n}\n"],"mappings":"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","names":[]}
@@ -1,8 +1,15 @@
1
+ import { h as CompletionModelSelectControl, e as CompletionModelControls, C as CompletionControlValues, d as CompletionModel, M as Message, D as Document, o as CompletionTool, z as ToolChoice, f as CompletionModelControlsOf, J as JsonObject, U as Usage, k as CompletionResponse, a0 as StreamingCompletionModel, l as CompletionResult, n as CompletionStreamEvent, t as JsonValue, c as CompletionFinishReason } from './types-CiHjqE6J.js';
1
2
  import { b as RetrySetting } from './retry-CjvSlKGW.js';
2
3
  import { Z as ZodSchema } from './zod-schema-C7F4clpm.js';
3
- import { c as CompletionModel, M as Message, D as Document, k as CompletionTool, v as ToolChoice, J as JsonObject, U as Usage, g as CompletionResponse, X as StreamingCompletionModel, h as CompletionResult, j as CompletionStreamEvent, p as JsonValue, C as CompletionFinishReason } from './types-DgvozfPc.js';
4
4
  import { z } from 'zod';
5
5
 
6
+ declare const REASONING_EFFORT_CONTROL_ID = "reasoningEffort";
7
+ type ReasoningEffortControls<Effort extends string = string> = Readonly<{
8
+ reasoningEffort: CompletionModelSelectControl<Effort>;
9
+ }>;
10
+ declare function defineCompletionModelControls<const Controls extends CompletionModelControls>(controls: Controls): Controls;
11
+ declare function mergeCompletionControlValues<Controls extends CompletionModelControls>(defaults: CompletionControlValues<Controls> | undefined, overrides: CompletionControlValues<Controls> | undefined): Readonly<Record<string, string>> | undefined;
12
+
6
13
  type CompletionStructuredOutputPhase = "truncated" | "content-filter" | "parse" | "schema";
7
14
  declare class CompletionStructuredOutputError extends Error {
8
15
  readonly phase: CompletionStructuredOutputPhase;
@@ -34,6 +41,7 @@ type CompletionBaseOptions<Model extends CompletionModel = CompletionModel> = Co
34
41
  temperature?: number | undefined;
35
42
  maxTokens?: number | undefined;
36
43
  toolChoice?: ToolChoice | undefined;
44
+ controls?: CompletionControlValues<CompletionModelControlsOf<Model>> | undefined;
37
45
  providerOptions?: JsonObject | undefined;
38
46
  retries?: RetrySetting | undefined;
39
47
  abortSignal?: AbortSignal | undefined;
@@ -96,4 +104,4 @@ declare class CompletionProviderOutputError extends Error {
96
104
  constructor(options: CompletionProviderOutputErrorOptions);
97
105
  }
98
106
 
99
- export { COMPLETION_PROVIDER_OUTPUT_ERROR_CODE as C, type GenerateCompletionOptions as G, type MessageMetadataSchema as M, type StreamCompletionOptions as S, type CompletionBaseOptions as a, type CompletionInput as b, CompletionProviderOutputError as c, type CompletionProviderOutputErrorKind as d, type CompletionProviderOutputErrorOptions as e, CompletionStructuredOutputError as f, type CompletionStructuredOutputPhase as g, type GenerateStructuredCompletionOptions as h, type StreamStructuredCompletionOptions as i, createMessageSchema as j, generateCompletion as k, isJsonValue as l, isMessage as m, messageSchema as n, messagesSchema as o, parseMessage as p, parseMessages as q, isStreamingCompletionModel as r, streamCompletion as s };
107
+ export { COMPLETION_PROVIDER_OUTPUT_ERROR_CODE as C, type GenerateCompletionOptions as G, type MessageMetadataSchema as M, REASONING_EFFORT_CONTROL_ID as R, type StreamCompletionOptions as S, type CompletionBaseOptions as a, type CompletionInput as b, CompletionProviderOutputError as c, type CompletionProviderOutputErrorKind as d, type CompletionProviderOutputErrorOptions as e, CompletionStructuredOutputError as f, type CompletionStructuredOutputPhase as g, type GenerateStructuredCompletionOptions as h, type ReasoningEffortControls as i, type StreamStructuredCompletionOptions as j, createMessageSchema as k, defineCompletionModelControls as l, generateCompletion as m, isJsonValue as n, isMessage as o, messageSchema as p, messagesSchema as q, parseMessage as r, parseMessages as s, streamCompletion as t, isStreamingCompletionModel as u, mergeCompletionControlValues as v };
@@ -1,7 +1,7 @@
1
- import { b as SkillLoader, a as SkillSet } from '../types-DC1U1XwW.js';
2
- export { c as Skill, S as SkillValidationError, d as SkillValidationIssue } from '../types-DC1U1XwW.js';
3
- import '../tool-BpqpoRSE.js';
4
- import '../types-DgvozfPc.js';
1
+ import { b as SkillLoader, a as SkillSet } from '../types-C1xYKXF2.js';
2
+ export { c as Skill, S as SkillValidationError, d as SkillValidationIssue } from '../types-C1xYKXF2.js';
3
+ import '../tool-DQMZpZSS.js';
4
+ import '../types-CiHjqE6J.js';
5
5
  import '../model-call-options-CZkSw_xN.js';
6
6
 
7
7
  declare function loadSkills(loaders: SkillLoader | SkillLoader[]): Promise<SkillSet>;
@@ -1,7 +1,7 @@
1
1
  import { M as ModelCallOptions } from '../model-call-options-CZkSw_xN.js';
2
2
  import { b as RetrySetting } from '../retry-CjvSlKGW.js';
3
3
  export { R as RetryContext, a as RetryOptions } from '../retry-CjvSlKGW.js';
4
- import { J as JsonObject } from '../types-DgvozfPc.js';
4
+ import { J as JsonObject } from '../types-CiHjqE6J.js';
5
5
 
6
6
  type SpeechGenerationRequest = {
7
7
  text: string;
@@ -1,4 +1,4 @@
1
- import { l as GuardrailActionBase, n as GuardrailAllow, o as GuardrailBlock, e as GuardrailPolicyOptions, c as GuardrailPolicy, I as InputGuardrail, O as OutputGuardrail, d as GuardrailPolicyInput } from './types-DhkodEft.js';
1
+ import { l as GuardrailActionBase, n as GuardrailAllow, o as GuardrailBlock, e as GuardrailPolicyOptions, c as GuardrailPolicy, I as InputGuardrail, O as OutputGuardrail, d as GuardrailPolicyInput } from './types-h0EL6Xn0.js';
2
2
 
3
3
  declare function allow(options?: GuardrailActionBase): GuardrailAllow;
4
4
  declare function block(options: Omit<GuardrailBlock, "action">): GuardrailBlock;
@@ -1,6 +1,6 @@
1
1
  import { z } from 'zod';
2
2
  import { Z as ZodSchema } from './zod-schema-C7F4clpm.js';
3
- import { e as ToolRequiresApproval, c as ToolCallContext, T as Tool } from './tool-BpqpoRSE.js';
3
+ import { e as ToolRequiresApproval, c as ToolCallContext, T as Tool } from './tool-DQMZpZSS.js';
4
4
  import { AgentQuestionPrompt, AgentQuestionAnswer } from './agent/interactions/index.js';
5
5
 
6
6
  type CreateToolOptions<InputSchema extends ZodSchema, OutputSchema extends ZodSchema | undefined = undefined, Output = unknown> = {
@@ -1,15 +1,15 @@
1
- export { d as CreateQuestionToolOptions, e as CreateThinkToolOptions, C as CreateToolOptions, Q as QuestionToolInput, f as QuestionToolOutput, c as createQuestionTool, a as createThinkTool, b as createTool, i as isQuestionTool } from '../think-tool-BwCsJ365.js';
2
- export { C as CreateToolIndexOptions, E as EmbedToolsOptions, T as ToolIndex, a as ToolSearchDocument, c as createToolIndex, e as embedTools, i as isToolIndex } from '../dynamic-tools-aIZlg5x1.js';
3
- export { A as AgentMiddleware, C as CompletionRequestMiddlewareArgs, a as CompletionRequestMiddlewareResult, b as CompletionResponseMiddlewareArgs, c as CompletionResponseMiddlewareResult, T as ToolInputMiddlewareArgs, d as ToolInputMiddlewareResult, e as ToolOutputMiddlewareArgs, f as ToolOutputMiddlewareResult, g as ToolResultMiddlewareArgs, h as createMiddleware } from '../middleware-kcF8AusP.js';
4
- export { A as AnyTool, N as NormalizedToolOutput, R as RichToolOutput, T as Tool, a as ToolApprovalContext, b as ToolApprovalRequirement, f as ToolApprovalRunContext, c as ToolCallContext, d as ToolCallStreamEvent, g as ToolOutput, e as ToolRequiresApproval, h as ToolResultSerializationError, n as normalizeToolResultOutput, p as parseToolArgs, t as toolResultContentToText } from '../tool-BpqpoRSE.js';
1
+ export { d as CreateQuestionToolOptions, e as CreateThinkToolOptions, C as CreateToolOptions, Q as QuestionToolInput, f as QuestionToolOutput, c as createQuestionTool, a as createThinkTool, b as createTool, i as isQuestionTool } from '../think-tool-YWsV98I5.js';
2
+ export { C as CreateToolIndexOptions, E as EmbedToolsOptions, T as ToolIndex, a as ToolSearchDocument, c as createToolIndex, e as embedTools, i as isToolIndex } from '../dynamic-tools-CNHSPXr1.js';
3
+ export { A as AgentMiddleware, C as CompletionRequestMiddlewareArgs, a as CompletionRequestMiddlewareResult, b as CompletionResponseMiddlewareArgs, c as CompletionResponseMiddlewareResult, T as ToolInputMiddlewareArgs, d as ToolInputMiddlewareResult, e as ToolOutputMiddlewareArgs, f as ToolOutputMiddlewareResult, g as ToolResultMiddlewareArgs, h as createMiddleware } from '../middleware-mY_lpjDp.js';
4
+ export { A as AnyTool, N as NormalizedToolOutput, R as RichToolOutput, T as Tool, a as ToolApprovalContext, b as ToolApprovalRequirement, f as ToolApprovalRunContext, c as ToolCallContext, d as ToolCallStreamEvent, g as ToolOutput, e as ToolRequiresApproval, h as ToolResultSerializationError, n as normalizeToolResultOutput, p as parseToolArgs, t as toolResultContentToText } from '../tool-DQMZpZSS.js';
5
5
  import 'zod';
6
6
  import '../zod-schema-C7F4clpm.js';
7
7
  import '../agent/interactions/index.js';
8
- import '../types-DgvozfPc.js';
8
+ import '../types-CiHjqE6J.js';
9
9
  import '../model-call-options-CZkSw_xN.js';
10
10
  import '../retry-CjvSlKGW.js';
11
11
  import '../types-Cr4uiYo5.js';
12
- import '../types-CXNE592e.js';
12
+ import '../types-CODGMHnp.js';
13
13
  import '../type-utils-CtHVDRn_.js';
14
14
 
15
15
  declare class ToolCallError extends Error {
@@ -1,4 +1,4 @@
1
- import { J as JsonObject, w as ToolDefinition, p as JsonValue, z as ToolResultOutput, y as ToolResultContentPart } from './types-DgvozfPc.js';
1
+ import { J as JsonObject, B as ToolDefinition, t as JsonValue, H as ToolResultOutput, G as ToolResultContentPart } from './types-CiHjqE6J.js';
2
2
 
3
3
  type ToolApprovalRunContext = {
4
4
  agentId: string;
@@ -1,7 +1,7 @@
1
1
  import { M as ModelCallOptions } from '../model-call-options-CZkSw_xN.js';
2
2
  import { b as RetrySetting } from '../retry-CjvSlKGW.js';
3
3
  export { R as RetryContext, a as RetryOptions } from '../retry-CjvSlKGW.js';
4
- import { J as JsonObject } from '../types-DgvozfPc.js';
4
+ import { J as JsonObject } from '../types-CiHjqE6J.js';
5
5
 
6
6
  type TranscriptionRequest = {
7
7
  data: Uint8Array;
@@ -1,4 +1,4 @@
1
- import { A as AnyTool } from './tool-BpqpoRSE.js';
1
+ import { A as AnyTool } from './tool-DQMZpZSS.js';
2
2
 
3
3
  type Skill = {
4
4
  readonly name: string;
@@ -1,5 +1,5 @@
1
1
  import { b as RetrySetting } from './retry-CjvSlKGW.js';
2
- import { J as JsonObject } from './types-DgvozfPc.js';
2
+ import { J as JsonObject } from './types-CiHjqE6J.js';
3
3
  import { b as VectorMetadataValue, V as VectorMetadata, a as EmbeddedDocument, S as SparseVector, E as EmbeddingModel, c as SparseEmbeddingModel } from './types-Cr4uiYo5.js';
4
4
 
5
5
  type VectorFilter = {
@@ -1,11 +1,11 @@
1
1
  import { AgentInteractionRequest, AgentContinuation, AgentInteractionResponse } from './agent/interactions/index.js';
2
2
  import { b as RetrySetting } from './retry-CjvSlKGW.js';
3
- import { M as Message, g as CompletionResponse, U as Usage, R as ReasoningContentType, u as ToolCallPart, i as CompletionSource, r as ProviderToolCall, G as UserMessage, C as CompletionFinishReason, l as ContextUsage, f as CompletionRequest, z as ToolResultOutput, y as ToolResultContentPart, _ as ToolInteractionResponsePart, Z as ToolCallArgumentsMode, J as JsonObject, V as CompletionModelCapabilities, w as ToolDefinition } from './types-DgvozfPc.js';
4
- import { d as GuardrailPolicyInput, a as GuardrailDecisionRecord } from './types-DhkodEft.js';
5
- import { e as MemoryCompactionInfo, A as MemoryScope } from './types-DmzRCbU5.js';
3
+ import { M as Message, k as CompletionResponse, U as Usage, R as ReasoningContentType, y as ToolCallPart, m as CompletionSource, v as ProviderToolCall, e as CompletionModelControls, O as UserMessage, C as CompletionControlValues, c as CompletionFinishReason, p as ContextUsage, j as CompletionRequest, H as ToolResultOutput, G as ToolResultContentPart, a3 as ToolInteractionResponsePart, a2 as ToolCallArgumentsMode, J as JsonObject, _ as CompletionModelCapabilities, B as ToolDefinition } from './types-CiHjqE6J.js';
4
+ import { d as GuardrailPolicyInput, a as GuardrailDecisionRecord } from './types-h0EL6Xn0.js';
5
+ import { e as MemoryCompactionInfo, A as MemoryScope } from './types-CafU6Ux5.js';
6
6
  import { D as DeepReadonly, M as MaybePromise } from './type-utils-CtHVDRn_.js';
7
- import { d as ToolCallStreamEvent } from './tool-BpqpoRSE.js';
8
- import { A as AgentMiddleware } from './middleware-kcF8AusP.js';
7
+ import { d as ToolCallStreamEvent } from './tool-DQMZpZSS.js';
8
+ import { A as AgentMiddleware } from './middleware-mY_lpjDp.js';
9
9
 
10
10
  type AgentLifecycleRunEvent = {
11
11
  runId: string;
@@ -93,7 +93,7 @@ type AgentSteerInput = {
93
93
  messages: readonly UserMessage[];
94
94
  prompt?: never;
95
95
  };
96
- type AgentRunSettings<Output = string, RawResponse = unknown> = {
96
+ type AgentRunSettings<Output = string, RawResponse = unknown, Controls extends CompletionModelControls = CompletionModelControls> = {
97
97
  maxTurns?: number | undefined;
98
98
  retries?: RetrySetting | undefined;
99
99
  abortSignal?: AbortSignal | undefined;
@@ -102,8 +102,9 @@ type AgentRunSettings<Output = string, RawResponse = unknown> = {
102
102
  toolConcurrency?: number | undefined;
103
103
  middlewares?: readonly AgentMiddleware[] | undefined;
104
104
  trace?: AgentTraceOptions | undefined;
105
+ controls?: CompletionControlValues<Controls> | undefined;
105
106
  };
106
- type AgentRunOptions<Output = string, RawResponse = unknown> = AgentInput & AgentRunSettings<Output, RawResponse>;
107
+ type AgentRunOptions<Output = string, RawResponse = unknown, Controls extends CompletionModelControls = CompletionModelControls> = AgentInput & AgentRunSettings<Output, RawResponse, Controls>;
107
108
  type AgentMemoryCompactionOptions = {
108
109
  session: MemoryScope;
109
110
  abortSignal?: AbortSignal | undefined;
@@ -1,4 +1,4 @@
1
- import { U as Usage, J as JsonObject, M as Message, S as SystemMessage, c as CompletionModel } from './types-DgvozfPc.js';
1
+ import { U as Usage, J as JsonObject, M as Message, S as SystemMessage, d as CompletionModel } from './types-CiHjqE6J.js';
2
2
  import { b as RetrySetting } from './retry-CjvSlKGW.js';
3
3
 
4
4
  type MemorySavePolicy = "message" | "turn" | "run";
@@ -240,6 +240,7 @@ type CompletionRequest = {
240
240
  temperature?: number;
241
241
  maxTokens?: number;
242
242
  toolChoice?: ToolChoice;
243
+ controls?: Readonly<Record<string, string>>;
243
244
  providerOptions?: JsonObject;
244
245
  outputSchema?: JsonObject;
245
246
  };
@@ -278,11 +279,25 @@ type CompletionModelCapabilities = {
278
279
  reasoning: boolean;
279
280
  providerTools?: boolean;
280
281
  };
281
- interface CompletionModel<RawResponse = unknown> {
282
+ type CompletionModelSelectControl<Option extends string = string> = Readonly<{
283
+ type: "select";
284
+ label: string;
285
+ options: readonly Option[];
286
+ description?: string | undefined;
287
+ defaultValue?: Option | undefined;
288
+ }>;
289
+ type CompletionModelControls = Readonly<Record<string, CompletionModelSelectControl<string>>>;
290
+ type NoCompletionModelControls = Readonly<Record<string, never>>;
291
+ type CompletionControlValues<Controls extends CompletionModelControls> = Readonly<Partial<{
292
+ [Key in keyof Controls]: Controls[Key] extends CompletionModelSelectControl<infer Option> ? Option : never;
293
+ }>>;
294
+ type CompletionModelControlsOf<Model> = Model extends CompletionModel<unknown, infer Controls> ? Controls : CompletionModelControls;
295
+ interface CompletionModel<RawResponse = unknown, Controls extends CompletionModelControls = CompletionModelControls> {
282
296
  readonly provider: string;
283
297
  readonly modelId: string;
284
298
  readonly contextLimits?: ModelContextLimits | undefined;
285
299
  readonly capabilities: CompletionModelCapabilities;
300
+ readonly controls?: Controls | undefined;
286
301
  traceRequest?(request: CompletionRequest, options?: {
287
302
  stream?: boolean | undefined;
288
303
  }): JsonObject | undefined;
@@ -335,7 +350,7 @@ type CompletionStreamEvent<Output = string, RawResponse = unknown> = CompletionS
335
350
  error: unknown;
336
351
  usage: Usage;
337
352
  };
338
- interface StreamingCompletionModel<RawResponse = unknown> extends CompletionModel<RawResponse> {
353
+ interface StreamingCompletionModel<RawResponse = unknown, Controls extends CompletionModelControls = CompletionModelControls> extends CompletionModel<RawResponse, Controls> {
339
354
  streamCompletion(request: CompletionRequest, options?: ModelCallOptions): AsyncIterable<CompletionModelStreamEvent<RawResponse>>;
340
355
  }
341
356
  declare class CompletionCapabilityError extends Error {
@@ -344,6 +359,7 @@ declare class CompletionCapabilityError extends Error {
344
359
  declare function assertCompletionRequestSupported(model: CompletionModel, request: CompletionRequest, options?: {
345
360
  streaming?: boolean | undefined;
346
361
  }): void;
362
+ declare function assertCompletionControlsSupported(model: CompletionModel, controls: Readonly<Record<string, string | undefined>> | undefined): void;
347
363
  declare function textFromAssistantContent(content: readonly AssistantContentPart[]): string;
348
364
 
349
- export { type ToolQuestionAnswer as $, type AssistantContentPart as A, type ToolResultPart as B, type CompletionFinishReason as C, type Document as D, type UserContentPart as E, type FileData as F, type UserMessage as G, calculateContextUsage as H, type ImageDetail as I, type JsonObject as J, getAssistantGenerationMetadata as K, isProviderTool as L, type Message as M, resolveModelContextLimits as N, withContextUsage as O, type ProviderTool as P, CompletionCapabilityError as Q, type ReasoningContentType as R, type SystemMessage as S, type TextPart as T, Usage as U, type CompletionModelCapabilities as V, type CompletionStreamPart as W, type StreamingCompletionModel as X, type ToolApprovalResponsePart as Y, type ToolCallArgumentsMode as Z, type ToolInteractionResponsePart as _, type AssistantGenerationMetadata as a, type ToolQuestionResponsePart as a0, type UsageDetails as a1, assertCompletionRequestSupported as a2, reasoningDisplayText as a3, textFromAssistantContent as a4, type AssistantMessage as b, type CompletionModel as c, type CompletionModelInfo as d, type CompletionModelStreamEvent as e, type CompletionRequest as f, type CompletionResponse as g, type CompletionResult as h, type CompletionSource as i, type CompletionStreamEvent as j, type CompletionTool as k, type ContextUsage as l, type FilePart as m, type ImagePart as n, type JsonPrimitive as o, type JsonValue as p, type ModelContextLimits as q, type ProviderToolCall as r, type ReasoningDetail as s, type ReasoningPart as t, type ToolCallPart as u, type ToolChoice as v, type ToolDefinition as w, type ToolMessage as x, type ToolResultContentPart as y, type ToolResultOutput as z };
365
+ export { type CompletionStreamPart as $, type AssistantContentPart as A, type ToolDefinition as B, type CompletionControlValues as C, type Document as D, type ToolMessage as E, type FileData as F, type ToolResultContentPart as G, type ToolResultOutput as H, type ImageDetail as I, type JsonObject as J, type ToolResultPart as K, type UserContentPart as L, type Message as M, type NoCompletionModelControls as N, type UserMessage as O, type ProviderTool as P, calculateContextUsage as Q, type ReasoningContentType as R, type SystemMessage as S, type TextPart as T, Usage as U, getAssistantGenerationMetadata as V, isProviderTool as W, resolveModelContextLimits as X, withContextUsage as Y, CompletionCapabilityError as Z, type CompletionModelCapabilities as _, type AssistantGenerationMetadata as a, type StreamingCompletionModel as a0, type ToolApprovalResponsePart as a1, type ToolCallArgumentsMode as a2, type ToolInteractionResponsePart as a3, type ToolQuestionAnswer as a4, type ToolQuestionResponsePart as a5, type UsageDetails as a6, assertCompletionControlsSupported as a7, assertCompletionRequestSupported as a8, reasoningDisplayText as a9, textFromAssistantContent as aa, type AssistantMessage as b, type CompletionFinishReason as c, type CompletionModel as d, type CompletionModelControls as e, type CompletionModelControlsOf as f, type CompletionModelInfo as g, type CompletionModelSelectControl as h, type CompletionModelStreamEvent as i, type CompletionRequest as j, type CompletionResponse as k, type CompletionResult as l, type CompletionSource as m, type CompletionStreamEvent as n, type CompletionTool as o, type ContextUsage as p, type FilePart as q, type ImagePart as r, type JsonPrimitive as s, type JsonValue as t, type ModelContextLimits as u, type ProviderToolCall as v, type ReasoningDetail as w, type ReasoningPart as x, type ToolCallPart as y, type ToolChoice as z };
@@ -1,5 +1,5 @@
1
- import { J as JsonObject } from './types-DgvozfPc.js';
2
- import { A as AnyTool } from './tool-BpqpoRSE.js';
1
+ import { J as JsonObject } from './types-CiHjqE6J.js';
2
+ import { A as AnyTool } from './tool-DQMZpZSS.js';
3
3
 
4
4
  type McpServerInfo = {
5
5
  readonly name: string;
@@ -1,4 +1,4 @@
1
- import { M as Message, J as JsonObject, U as Usage } from './types-DgvozfPc.js';
1
+ import { M as Message, J as JsonObject, U as Usage } from './types-CiHjqE6J.js';
2
2
  import { M as MaybePromise } from './type-utils-CtHVDRn_.js';
3
3
 
4
4
  type GuardrailMode = "enforce" | "observe";
@@ -1,9 +1,9 @@
1
1
  import { V as VectorMetadata, b as VectorMetadataValue, E as EmbeddingModel, a as EmbeddedDocument } from '../types-Cr4uiYo5.js';
2
- import { T as Tool } from '../tool-BpqpoRSE.js';
3
- import { V as VectorFilter, d as VectorStore, R as RetrieveDocumentsOptions, a as VectorSearchResult, f as RetrieveHybridDocumentsOptions, I as IndexStrategy, g as VectorStoreUpsertOptions, h as VectorSearchRequest, b as VectorInspectRequest, c as VectorInspectPage, i as VectorSearchToolOptions } from '../types-CXNE592e.js';
4
- export { D as DenseVectorSearchToolOptions, j as HybridVectorSearchRequest, k as HybridVectorSearchToolOptions, H as HybridVectorStore, L as LshOptions, l as RetrieveDocumentsBaseOptions, e as VectorFusion, m as VectorInspectItem, n as VectorMetric, o as VectorSearchToolBaseOptions } from '../types-CXNE592e.js';
2
+ import { T as Tool } from '../tool-DQMZpZSS.js';
3
+ import { V as VectorFilter, d as VectorStore, R as RetrieveDocumentsOptions, a as VectorSearchResult, f as RetrieveHybridDocumentsOptions, I as IndexStrategy, g as VectorStoreUpsertOptions, h as VectorSearchRequest, b as VectorInspectRequest, c as VectorInspectPage, i as VectorSearchToolOptions } from '../types-CODGMHnp.js';
4
+ export { D as DenseVectorSearchToolOptions, j as HybridVectorSearchRequest, k as HybridVectorSearchToolOptions, H as HybridVectorStore, L as LshOptions, l as RetrieveDocumentsBaseOptions, e as VectorFusion, m as VectorInspectItem, n as VectorMetric, o as VectorSearchToolBaseOptions } from '../types-CODGMHnp.js';
5
5
  import { b as RetrySetting } from '../retry-CjvSlKGW.js';
6
- import { J as JsonObject } from '../types-DgvozfPc.js';
6
+ import { J as JsonObject } from '../types-CiHjqE6J.js';
7
7
  import { T as TextDocument, b as TextDocumentChunkingOptions } from '../text-document-B-X7Vxq1.js';
8
8
  import '../model-call-options-CZkSw_xN.js';
9
9
 
package/package.json CHANGED
@@ -1,9 +1,8 @@
1
1
  {
2
2
  "name": "@anvia/core",
3
- "version": "1.0.8",
3
+ "version": "1.1.0",
4
4
  "description": "Core runtime primitives for context-aware Anvia agents.",
5
5
  "author": "anvia",
6
- "maintainer": "Indra Zulfi",
7
6
  "license": "MIT",
8
7
  "repository": {
9
8
  "type": "git",
@@ -1,37 +0,0 @@
1
- // src/completion/documents.ts
2
- function normalizeDocuments(documents) {
3
- if (documents.length === 0) {
4
- return void 0;
5
- }
6
- return { role: "user", content: documents.map(formatDocument).join("\n") };
7
- }
8
- function formatDocument(document) {
9
- return `<file id: ${document.id}>
10
- ${formatDocumentBody(document)}
11
- </file>
12
- `;
13
- }
14
- function formatDocumentBody(document) {
15
- const metadata = formatMetadata(document.additionalProps);
16
- return metadata === void 0 ? document.text : `${metadata}
17
- ${document.text}`;
18
- }
19
- function formatMetadata(additionalProps) {
20
- if (additionalProps === void 0) {
21
- return void 0;
22
- }
23
- const entries = Object.entries(additionalProps).sort(
24
- ([left], [right]) => left.localeCompare(right)
25
- );
26
- if (entries.length === 0) {
27
- return void 0;
28
- }
29
- const metadata = entries.map(([key, value]) => `${key}: ${JSON.stringify(value)}`).join(" ");
30
- return `<metadata ${metadata} />`;
31
- }
32
-
33
- export {
34
- normalizeDocuments,
35
- formatDocument
36
- };
37
- //# sourceMappingURL=chunk-D4PACGPA.js.map