import {
  unsafeOpaqueId,
  capability,
  type FactoryRunId,
  type GoalId,
  type PlanId,
  type PlanRevisionId,
  type PrincipalId,
  type ProjectId,
  type TaskId,
} from "@awp/contracts";
import type { FactoryRun, Goal, Plan, Project, Task } from "@awp/domain";
export const i1Ids = {
  project: unsafeOpaqueId<ProjectId>("project-i1"),
  goal: unsafeOpaqueId<GoalId>("goal-i1"),
  plan: unsafeOpaqueId<PlanId>("plan-i1"),
  revision: unsafeOpaqueId<PlanRevisionId>("plan-revision-i1"),
  taskFoundation: unsafeOpaqueId<TaskId>("task-foundation"),
  taskUi: unsafeOpaqueId<TaskId>("task-ui"),
  factoryRun: unsafeOpaqueId<FactoryRunId>("factory-run-i1"),
  owner: unsafeOpaqueId<PrincipalId>("principal-owner"),
};
export const i1Project: Project = {
  id: i1Ids.project,
  name: "AWP dogfood",
  repositoryUrl: "https://github.com/platform-modules/awp.git",
  status: "active",
  revision: 1,
};
export const i1Goals: readonly Goal[] = [
  {
    id: i1Ids.goal,
    projectId: i1Ids.project,
    title: "Ship first vertical slice",
    status: "active",
    successCriteria: ["Project to reviewed ChangeSet"],
    revision: 1,
  },
];
export const i1Plans: readonly Plan[] = [
  {
    id: i1Ids.plan,
    projectId: i1Ids.project,
    title: "I1 vertical slice",
    status: "active",
    revision: 1,
  },
];
export const i1Tasks: readonly Task[] = [
  {
    id: i1Ids.taskFoundation,
    projectId: i1Ids.project,
    planRevisionId: i1Ids.revision,
    title: "Core contracts",
    status: "completed",
    dependencyIds: [],
    goalIds: [i1Ids.goal],
    revision: 1,
  },
  {
    id: i1Ids.taskUi,
    projectId: i1Ids.project,
    planRevisionId: i1Ids.revision,
    title: "Project UI",
    status: "ready",
    dependencyIds: [i1Ids.taskFoundation],
    goalIds: [i1Ids.goal],
    revision: 1,
  },
];
export const i1FactoryRuns: readonly FactoryRun[] = [
  {
    id: i1Ids.factoryRun,
    projectId: i1Ids.project,
    planRevisionId: i1Ids.revision,
    status: "running",
    revision: 1,
  },
];
export const i1Owner = {
  id: i1Ids.owner,
  kind: "human" as const,
  capabilities: [capability("project.read"), capability("queue.reorder")],
};
