{"version":3,"file":"step.mjs","names":[],"sources":["../../../../../../../ai/src/workflow/step.ts"],"sourcesContent":["import type { StepDefinition } from \"../contracts/workflow/step.contract\";\nimport { WorkflowError } from \"../errors\";\n\n/**\n * `ai.step(def)` — pass-through factory used for authoring. Returns\n * the definition object verbatim so the workflow engine can read it\n * during execution; the factory exists for API symmetry with\n * `ai.workflow()` and to leave room for future validation or\n * metadata annotation.\n *\n * Generics flow from the enclosing `ai.workflow<...>()` call when the\n * step is declared inline inside `steps: [...]`. To author a step\n * outside that context with full typing, pass them explicitly:\n * `ai.step<MyInput, MyState, MyContext>({ ... })`.\n */\nexport function step<\n  TInput = unknown,\n  TState = Record<string, unknown>,\n  TContext = unknown,\n>(\n  definition: StepDefinition<TInput, TState, TContext>,\n): StepDefinition<TInput, TState, TContext> {\n  validate(definition);\n  return definition;\n}\n\nfunction validate<TInput, TState, TContext>(\n  def: StepDefinition<TInput, TState, TContext>,\n): void {\n  if (!def.name || typeof def.name !== \"string\") {\n    throw new WorkflowError(\"ai.step: `name` is required\");\n  }\n\n  const hasRun = typeof def.run === \"function\";\n  const hasAgent = def.agent !== undefined;\n  const hasParallel = Array.isArray(def.parallel) && def.parallel.length > 0;\n\n  const modes = [hasRun, hasAgent, hasParallel].filter(Boolean).length;\n\n  if (modes === 0) {\n    throw new WorkflowError(\n      `ai.step(\"${def.name}\"): must define exactly one of run | agent | parallel`,\n    );\n  }\n\n  if (modes > 1) {\n    throw new WorkflowError(\n      `ai.step(\"${def.name}\"): define only one of run | agent | parallel`,\n    );\n  }\n\n  if (hasAgent && typeof def.input !== \"function\") {\n    throw new WorkflowError(\n      `ai.step(\"${def.name}\"): \\`input(ctx)\\` is required when \\`agent\\` is set`,\n    );\n  }\n}\n"],"mappings":";;;;;;;;;;;;;;;;AAeA,SAAgB,KAKd,YAC0C;CAC1C,SAAS,UAAU;CACnB,OAAO;AACT;AAEA,SAAS,SACP,KACM;CACN,IAAI,CAAC,IAAI,QAAQ,OAAO,IAAI,SAAS,UACnC,MAAM,IAAI,cAAc,6BAA6B;CAGvD,MAAM,SAAS,OAAO,IAAI,QAAQ;CAClC,MAAM,WAAW,IAAI,UAAU;CAG/B,MAAM,QAAQ;EAAC;EAAQ;EAFH,MAAM,QAAQ,IAAI,QAAQ,KAAK,IAAI,SAAS,SAAS;CAE7B,CAAC,CAAC,OAAO,OAAO,CAAC,CAAC;CAE9D,IAAI,UAAU,GACZ,MAAM,IAAI,cACR,YAAY,IAAI,KAAK,sDACvB;CAGF,IAAI,QAAQ,GACV,MAAM,IAAI,cACR,YAAY,IAAI,KAAK,8CACvB;CAGF,IAAI,YAAY,OAAO,IAAI,UAAU,YACnC,MAAM,IAAI,cACR,YAAY,IAAI,KAAK,qDACvB;AAEJ"}