import type { AgentId } from "./agents";
import type { HandoffTypeId } from "./handoffs";

export type ModelClass = "fast" | "standard" | "thinking";

export interface TaskContract {
  readonly id: string;
  readonly description: string;
  readonly target_agent: AgentId;
  readonly allowed_from_agents: readonly AgentId[];
  readonly workflow: string;
  readonly invocation_handoff: HandoffTypeId;
  readonly result_handoff: HandoffTypeId;
  readonly input_artifacts: readonly string[];
  readonly responsibilities: readonly string[];
  readonly completion_criteria: readonly string[];
  readonly optional: boolean;
  readonly model_class?: ModelClass;
}

{{#each taskEntries}}
export const {{varName}}: TaskContract = {
  id: "{{id}}",
  description: {{{json description}}},
  target_agent: "{{target_agent}}",
  allowed_from_agents: {{{json allowed_from_agents}}},
  workflow: "{{workflow}}",
  invocation_handoff: "{{invocation_handoff}}",
  result_handoff: "{{result_handoff}}",
  input_artifacts: {{{json input_artifacts}}},
  responsibilities: {{{json responsibilities}}},
  completion_criteria: {{{json completion_criteria}}},
  optional: {{optional}},
{{#if model_class}}
  model_class: "{{model_class}}",
{{/if}}
};

{{/each}}
export const taskRegistry: Record<string, TaskContract> = {
{{#each taskEntries}}
  "{{id}}": {{varName}},
{{/each}}
};
