// SPDX-FileCopyrightText: 2025-2026 Lucio Lelii - ISTI-CNR // SPDX-License-Identifier: AGPL-3.0-or-later // Attribution term under AGPL-3.0 section 7(b): see LICENSE-ADDENDUM. import { LLMDescriptor } from '@models/flow'; import { BiasImpactExperimentRequest, BiasImpactJob, BiasImpactReport, BiasRerunRequest } from '@models/bias-impact'; import { ExecutionEventLogEntry, TaskExecution, TaskExecutionGroup } from '@models/task-execution'; import { Observable } from 'rxjs'; export abstract class TaskExecutionsCallServiceBase { abstract retrieveAllTaskExecutions(): Observable; abstract retrieveTaskExecutionGroups(): Observable; abstract retrieveTaskExecution(executionId: string): Observable; abstract retrieveStepIterations(executionId: string, stepId: string): Observable; abstract retrieveExecutionEvents(executionId: string): Observable; abstract createTaskExecution(flowId: string): Observable; abstract rerunTaskExecution(executionId: string): Observable; abstract runBiasImpactExperiment( executionId: string, stepId: string, request: BiasImpactExperimentRequest ): Observable; /** * Asks a model to assess a comparison that has already been computed. Asynchronous like the * isolated experiment - one model call per compared pair - so it answers with a job to poll. */ abstract judgeBiasImpactReport(reportId: string, judge: LLMDescriptor, credentialId?: string): Observable; abstract getBiasImpactJob(jobId: string): Observable; abstract createBiasedRerun(executionId: string, request: BiasRerunRequest): Observable; abstract compareBiasExecutions( baselineExecutionId: string, biasedExecutionId: string, includeRawOutputs: boolean ): Observable; abstract listBiasImpactReports(executionId: string): Observable; abstract getBiasImpactReport(reportId: string): Observable; abstract deleteTaskExecution(executionId: string): Observable; abstract deleteTaskExecutionGroup(groupId: string): Observable; abstract startTaskExecution(executionId: string): Observable; abstract simulateTaskExecution(executionId: string, simulator: LLMDescriptor, credentialId?: string): Observable; abstract cancelTaskExecution(executionId: string): Observable; abstract resumeTaskExecution(executionId: string): Observable; abstract prepareStringInput( executionId: string, nodeId: string, inputName: string, value: string ): Observable; abstract prepareStringArrayInput( executionId: string, nodeId: string, inputName: string, values: string[] ): Observable; abstract prepareFileInput( executionId: string, nodeId: string, inputName: string, file: File ): Observable; abstract prepareFileArrayInput( executionId: string, nodeId: string, inputName: string, files: File[] ): Observable; abstract prepareGlobalStringInput( executionId: string, inputName: string, value: string ): Observable; abstract prepareGlobalStringArrayInput( executionId: string, inputName: string, values: string[] ): Observable; /** * Sets several global inputs in one request. The single-key endpoint had to be called once per * input, and those calls raced each other on the same execution. */ abstract prepareGlobalInputs( executionId: string, values: Record ): Observable; abstract prepareGlobalFileInput( executionId: string, inputName: string, file: File ): Observable; abstract prepareGlobalFileArrayInput( executionId: string, inputName: string, files: File[] ): Observable; /** * `iteration`, when given, is the round of its loop the answer is for: the server refuses it if * the node has moved on to another, rather than taking it as the answer to a question not seen. */ abstract submitInteractionText( executionId: string, nodeId: string, fieldName: string, value: string, iteration?: number ): Observable; /** * Submits a human evaluation whole - every criterion and the notes in one call - because the * fields are one judgement, and half of one recorded on the step is worse than none. */ abstract submitEvaluation( executionId: string, nodeId: string, verdict: Record, notes: string, iteration?: number ): Observable; abstract attachEvaluationEvidence( executionId: string, nodeId: string, files: File[], iteration?: number ): Observable; /** Asks to see the reference verdict; the execution records that it was seen before judging. */ abstract revealEvaluationReference( executionId: string, nodeId: string, iteration?: number ): Observable; abstract provideAuthorization( executionId: string, key: string, value: string ): Observable; }