/**
 * Copyright IBM Corp. 2024, 2025
 */

import { z } from 'zod';
import {
  BaseModel,
  IfConditionSchema,
  StopOnFailSchema,
} from './shared.schema.js';

export const AssertionSpecSchema = z.object({
  name: z.string(),
  key: z.string(),
  value: z.any().refine((val) => val !== undefined, {
    message: 'value is required in assertion',
  }),
  action: z.string(),
  if: IfConditionSchema.optional(),
  stopOnFail: StopOnFailSchema.optional(),
});

export const AssertionSchema = BaseModel.extend({
  kind: z.literal('assertion'),
  spec: AssertionSpecSchema.array(),
});
