File size: 1,328 Bytes
68d7816
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
35
36
import type { ProtocolBase } from '#human/llm/protocol/base';
import type { ProtocolTraitFor } from '#human/llm/provider/definition';
import { anthropicBase } from '#human/llm/requester/bases/anthropic/requester';
import { googleGenAIBase } from '#human/llm/requester/bases/google-genai/requester';
import { openAIBase } from '#human/llm/requester/bases/openai/requester';
import { openAIResponsesBase } from '#human/llm/requester/bases/openai-responses/requester';

import type { Protocol } from './protocol';

export type ProtocolBaseId = Protocol;

export interface ProtocolBaseDefinition {
  readonly id: ProtocolBaseId;
  readonly base: ProtocolBase<ProtocolTraitFor<Protocol>>;
}

export interface ResolvedAdapterIdentity {
  readonly baseId: ProtocolBaseId;
  readonly trait?: ProtocolTraitFor<Protocol>;
}

const PROTOCOL_BASES: readonly ProtocolBaseDefinition[] = [
  { id: 'openai', base: openAIBase },
  { id: 'openai_responses', base: openAIResponsesBase },
  { id: 'anthropic', base: anthropicBase },
  { id: 'google-genai', base: googleGenAIBase },
];

export function getProtocolBase(id: ProtocolBaseId): ProtocolBaseDefinition | undefined {
  return PROTOCOL_BASES.find((definition) => definition.id === id);
}

export function listProtocolBases(): readonly ProtocolBaseDefinition[] {
  return PROTOCOL_BASES;
}