File size: 877 Bytes
4e23b01
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
export type TurnId = string;
export type StepId = string;
export type FrameId = string;
export type MarkerId = string;
export type TaskRefId = string;
export type TaskId = string;
export type AgentId = string;
export type InteractionId = string;
export type AttachmentId = string;
export type TodoId = string;
export type PromptId = string;
export type ItemId = string;

export function turnId(ordinal: number): TurnId {
  return `t${ordinal}`;
}

export function stepId(turn: TurnId, ordinal: number): StepId {
  return `${turn}.${ordinal}`;
}

export function frameId(step: StepId, ordinal: number): FrameId {
  return `${step}.f${ordinal}`;
}

export function compareTurnIds(a: TurnId, b: TurnId): number {
  return turnOrdinal(a) - turnOrdinal(b);
}

export function turnOrdinal(id: TurnId): number {
  const n = Number(id.slice(1));
  return Number.isFinite(n) ? n : 0;
}