File size: 2,161 Bytes
eb3f11e
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
// Schema normalization runtime contract helpers create tools for provider schema tests.
export function createParameterFreeTool(name = "ping") {
  return {
    name,
    description: "Parameter-free test tool",
    parameters: {},
  };
}

export function createStrictCompatibleTool(name = "lookup") {
  return {
    name,
    description: "Strict-compatible test tool",
    parameters: {
      type: "object",
      properties: {
        path: { type: "string" },
      },
      required: ["path"],
      additionalProperties: false,
    },
  };
}

export function createPermissiveTool(name = "schedule") {
  return {
    name,
    description: "Permissive test tool",
    parameters: {
      type: "object",
      properties: {
        action: { type: "string" },
        cron: { type: "string" },
      },
      required: ["action"],
      additionalProperties: true,
    },
  };
}

export function createNativeOpenAIResponsesModel() {
  return {
    id: "gpt-5.4",
    name: "GPT-5.4",
    api: "openai-responses",
    provider: "openai",
    baseUrl: "https://api.openai.com/v1",
    reasoning: true,
    input: ["text"],
    cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 },
    contextWindow: 200_000,
    maxTokens: 8_192,
  };
}

export function createNativeOpenAICodexResponsesModel() {
  return {
    id: "gpt-5.4",
    name: "GPT-5.4",
    api: "openai-chatgpt-responses",
    provider: "openai",
    baseUrl: "https://chatgpt.com/backend-api",
    reasoning: true,
    input: ["text"],
    cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 },
    contextWindow: 200_000,
    maxTokens: 8_192,
  };
}

export function createProxyOpenAIResponsesModel() {
  return {
    id: "custom-gpt",
    name: "Custom GPT",
    api: "openai-responses",
    provider: "openai",
    baseUrl: "https://proxy.example.com/v1",
    reasoning: true,
    input: ["text"],
    cost: { input: 0, output: 0, cacheRead: 0, cacheWrite: 0 },
    contextWindow: 200_000,
    maxTokens: 8_192,
  };
}

export function normalizedParameterFreeSchema() {
  return {
    type: "object",
    properties: {},
    required: [],
    additionalProperties: false,
  };
}