neoctl 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (218) hide show
  1. package/README.md +146 -0
  2. package/dist/agents/agent-definition.d.ts +39 -0
  3. package/dist/agents/agent-definition.js +57 -0
  4. package/dist/agents/agent-definition.js.map +1 -0
  5. package/dist/agents/agent-tool.d.ts +38 -0
  6. package/dist/agents/agent-tool.js +336 -0
  7. package/dist/agents/agent-tool.js.map +1 -0
  8. package/dist/agents/local-agent-task.d.ts +52 -0
  9. package/dist/agents/local-agent-task.js +63 -0
  10. package/dist/agents/local-agent-task.js.map +1 -0
  11. package/dist/agents/smoke-agents.d.ts +1 -0
  12. package/dist/agents/smoke-agents.js +142 -0
  13. package/dist/agents/smoke-agents.js.map +1 -0
  14. package/dist/agents/team.d.ts +10 -0
  15. package/dist/agents/team.js +2 -0
  16. package/dist/agents/team.js.map +1 -0
  17. package/dist/app/app-state.d.ts +21 -0
  18. package/dist/app/app-state.js +24 -0
  19. package/dist/app/app-state.js.map +1 -0
  20. package/dist/context/compaction.d.ts +49 -0
  21. package/dist/context/compaction.js +334 -0
  22. package/dist/context/compaction.js.map +1 -0
  23. package/dist/context/context-manager.d.ts +53 -0
  24. package/dist/context/context-manager.js +98 -0
  25. package/dist/context/context-manager.js.map +1 -0
  26. package/dist/context/prompts.d.ts +22 -0
  27. package/dist/context/prompts.js +84 -0
  28. package/dist/context/prompts.js.map +1 -0
  29. package/dist/context/smoke-context.d.ts +1 -0
  30. package/dist/context/smoke-context.js +151 -0
  31. package/dist/context/smoke-context.js.map +1 -0
  32. package/dist/core/assistant-output-filter.d.ts +9 -0
  33. package/dist/core/assistant-output-filter.js +78 -0
  34. package/dist/core/assistant-output-filter.js.map +1 -0
  35. package/dist/core/context-metrics.d.ts +10 -0
  36. package/dist/core/context-metrics.js +77 -0
  37. package/dist/core/context-metrics.js.map +1 -0
  38. package/dist/core/message-pipeline.d.ts +10 -0
  39. package/dist/core/message-pipeline.js +138 -0
  40. package/dist/core/message-pipeline.js.map +1 -0
  41. package/dist/core/query-engine.d.ts +86 -0
  42. package/dist/core/query-engine.js +337 -0
  43. package/dist/core/query-engine.js.map +1 -0
  44. package/dist/core/query.d.ts +47 -0
  45. package/dist/core/query.js +408 -0
  46. package/dist/core/query.js.map +1 -0
  47. package/dist/core/run-agent.d.ts +48 -0
  48. package/dist/core/run-agent.js +150 -0
  49. package/dist/core/run-agent.js.map +1 -0
  50. package/dist/core/smoke-core-loop.d.ts +1 -0
  51. package/dist/core/smoke-core-loop.js +42 -0
  52. package/dist/core/smoke-core-loop.js.map +1 -0
  53. package/dist/core/state.d.ts +37 -0
  54. package/dist/core/state.js +31 -0
  55. package/dist/core/state.js.map +1 -0
  56. package/dist/index.d.ts +42 -0
  57. package/dist/index.js +43 -0
  58. package/dist/index.js.map +1 -0
  59. package/dist/model/communication-logger.d.ts +30 -0
  60. package/dist/model/communication-logger.js +218 -0
  61. package/dist/model/communication-logger.js.map +1 -0
  62. package/dist/model/config.d.ts +25 -0
  63. package/dist/model/config.js +65 -0
  64. package/dist/model/config.js.map +1 -0
  65. package/dist/model/context-window.d.ts +32 -0
  66. package/dist/model/context-window.js +76 -0
  67. package/dist/model/context-window.js.map +1 -0
  68. package/dist/model/credentials.d.ts +13 -0
  69. package/dist/model/credentials.js +19 -0
  70. package/dist/model/credentials.js.map +1 -0
  71. package/dist/model/env.d.ts +8 -0
  72. package/dist/model/env.js +36 -0
  73. package/dist/model/env.js.map +1 -0
  74. package/dist/model/errors.d.ts +42 -0
  75. package/dist/model/errors.js +74 -0
  76. package/dist/model/errors.js.map +1 -0
  77. package/dist/model/http-transport.d.ts +26 -0
  78. package/dist/model/http-transport.js +118 -0
  79. package/dist/model/http-transport.js.map +1 -0
  80. package/dist/model/model-gateway.d.ts +103 -0
  81. package/dist/model/model-gateway.js +15 -0
  82. package/dist/model/model-gateway.js.map +1 -0
  83. package/dist/model/model-metadata.json +677 -0
  84. package/dist/model/openai-adapter.d.ts +34 -0
  85. package/dist/model/openai-adapter.js +152 -0
  86. package/dist/model/openai-adapter.js.map +1 -0
  87. package/dist/model/openai-chat-mapper.d.ts +11 -0
  88. package/dist/model/openai-chat-mapper.js +114 -0
  89. package/dist/model/openai-chat-mapper.js.map +1 -0
  90. package/dist/model/openai-mappers.d.ts +21 -0
  91. package/dist/model/openai-mappers.js +261 -0
  92. package/dist/model/openai-mappers.js.map +1 -0
  93. package/dist/model/openai-responses-adapter.d.ts +2 -0
  94. package/dist/model/openai-responses-adapter.js +2 -0
  95. package/dist/model/openai-responses-adapter.js.map +1 -0
  96. package/dist/model/openai-responses-mapper.d.ts +11 -0
  97. package/dist/model/openai-responses-mapper.js +218 -0
  98. package/dist/model/openai-responses-mapper.js.map +1 -0
  99. package/dist/model/provider-adapter.d.ts +17 -0
  100. package/dist/model/provider-adapter.js +2 -0
  101. package/dist/model/provider-adapter.js.map +1 -0
  102. package/dist/model/provider-factory.d.ts +4 -0
  103. package/dist/model/provider-factory.js +29 -0
  104. package/dist/model/provider-factory.js.map +1 -0
  105. package/dist/model/retry-runner.d.ts +8 -0
  106. package/dist/model/retry-runner.js +28 -0
  107. package/dist/model/retry-runner.js.map +1 -0
  108. package/dist/model/smoke-openai.d.ts +1 -0
  109. package/dist/model/smoke-openai.js +44 -0
  110. package/dist/model/smoke-openai.js.map +1 -0
  111. package/dist/model/smoke-responses-mapper.d.ts +1 -0
  112. package/dist/model/smoke-responses-mapper.js +72 -0
  113. package/dist/model/smoke-responses-mapper.js.map +1 -0
  114. package/dist/model/sse-decoder.d.ts +5 -0
  115. package/dist/model/sse-decoder.js +79 -0
  116. package/dist/model/sse-decoder.js.map +1 -0
  117. package/dist/repl/clipboard.d.ts +14 -0
  118. package/dist/repl/clipboard.js +92 -0
  119. package/dist/repl/clipboard.js.map +1 -0
  120. package/dist/repl/commands.d.ts +38 -0
  121. package/dist/repl/commands.js +86 -0
  122. package/dist/repl/commands.js.map +1 -0
  123. package/dist/repl/index.d.ts +2 -0
  124. package/dist/repl/index.js +2836 -0
  125. package/dist/repl/index.js.map +1 -0
  126. package/dist/repl/markdown-renderer.d.ts +81 -0
  127. package/dist/repl/markdown-renderer.js +546 -0
  128. package/dist/repl/markdown-renderer.js.map +1 -0
  129. package/dist/repl/render.d.ts +2 -0
  130. package/dist/repl/render.js +45 -0
  131. package/dist/repl/render.js.map +1 -0
  132. package/dist/repl/status-line.d.ts +19 -0
  133. package/dist/repl/status-line.js +160 -0
  134. package/dist/repl/status-line.js.map +1 -0
  135. package/dist/safety/audit.d.ts +10 -0
  136. package/dist/safety/audit.js +2 -0
  137. package/dist/safety/audit.js.map +1 -0
  138. package/dist/safety/permissions.d.ts +10 -0
  139. package/dist/safety/permissions.js +2 -0
  140. package/dist/safety/permissions.js.map +1 -0
  141. package/dist/safety/sandbox.d.ts +6 -0
  142. package/dist/safety/sandbox.js +2 -0
  143. package/dist/safety/sandbox.js.map +1 -0
  144. package/dist/session/session-store.d.ts +98 -0
  145. package/dist/session/session-store.js +249 -0
  146. package/dist/session/session-store.js.map +1 -0
  147. package/dist/session/smoke-session.d.ts +1 -0
  148. package/dist/session/smoke-session.js +85 -0
  149. package/dist/session/smoke-session.js.map +1 -0
  150. package/dist/session/tool-result-memory.d.ts +64 -0
  151. package/dist/session/tool-result-memory.js +303 -0
  152. package/dist/session/tool-result-memory.js.map +1 -0
  153. package/dist/skills/skill-tool.d.ts +28 -0
  154. package/dist/skills/skill-tool.js +107 -0
  155. package/dist/skills/skill-tool.js.map +1 -0
  156. package/dist/skills/smoke-skills.d.ts +1 -0
  157. package/dist/skills/smoke-skills.js +60 -0
  158. package/dist/skills/smoke-skills.js.map +1 -0
  159. package/dist/tasks/task-store.d.ts +43 -0
  160. package/dist/tasks/task-store.js +150 -0
  161. package/dist/tasks/task-store.js.map +1 -0
  162. package/dist/tasks/task-tools.d.ts +31 -0
  163. package/dist/tasks/task-tools.js +232 -0
  164. package/dist/tasks/task-tools.js.map +1 -0
  165. package/dist/tools/builtins/echo-tool.d.ts +4 -0
  166. package/dist/tools/builtins/echo-tool.js +26 -0
  167. package/dist/tools/builtins/echo-tool.js.map +1 -0
  168. package/dist/tools/builtins/edit-tool.d.ts +30 -0
  169. package/dist/tools/builtins/edit-tool.js +423 -0
  170. package/dist/tools/builtins/edit-tool.js.map +1 -0
  171. package/dist/tools/builtins/exec-tool.d.ts +18 -0
  172. package/dist/tools/builtins/exec-tool.js +290 -0
  173. package/dist/tools/builtins/exec-tool.js.map +1 -0
  174. package/dist/tools/builtins/filesystem-tools.d.ts +16 -0
  175. package/dist/tools/builtins/filesystem-tools.js +306 -0
  176. package/dist/tools/builtins/filesystem-tools.js.map +1 -0
  177. package/dist/tools/builtins/grep-tool.d.ts +56 -0
  178. package/dist/tools/builtins/grep-tool.js +320 -0
  179. package/dist/tools/builtins/grep-tool.js.map +1 -0
  180. package/dist/tools/builtins/ripgrep-binary.d.ts +6 -0
  181. package/dist/tools/builtins/ripgrep-binary.js +51 -0
  182. package/dist/tools/builtins/ripgrep-binary.js.map +1 -0
  183. package/dist/tools/builtins/search-providers.d.ts +49 -0
  184. package/dist/tools/builtins/search-providers.js +240 -0
  185. package/dist/tools/builtins/search-providers.js.map +1 -0
  186. package/dist/tools/builtins/search-tool.d.ts +18 -0
  187. package/dist/tools/builtins/search-tool.js +171 -0
  188. package/dist/tools/builtins/search-tool.js.map +1 -0
  189. package/dist/tools/registry.d.ts +18 -0
  190. package/dist/tools/registry.js +69 -0
  191. package/dist/tools/registry.js.map +1 -0
  192. package/dist/tools/run-tool-use.d.ts +13 -0
  193. package/dist/tools/run-tool-use.js +113 -0
  194. package/dist/tools/run-tool-use.js.map +1 -0
  195. package/dist/tools/schema.d.ts +2 -0
  196. package/dist/tools/schema.js +61 -0
  197. package/dist/tools/schema.js.map +1 -0
  198. package/dist/tools/smoke-tool-system.d.ts +1 -0
  199. package/dist/tools/smoke-tool-system.js +204 -0
  200. package/dist/tools/smoke-tool-system.js.map +1 -0
  201. package/dist/tools/streaming-tool-executor.d.ts +19 -0
  202. package/dist/tools/streaming-tool-executor.js +89 -0
  203. package/dist/tools/streaming-tool-executor.js.map +1 -0
  204. package/dist/tools/tool-orchestration.d.ts +15 -0
  205. package/dist/tools/tool-orchestration.js +89 -0
  206. package/dist/tools/tool-orchestration.js.map +1 -0
  207. package/dist/tools/tool.d.ts +121 -0
  208. package/dist/tools/tool.js +4 -0
  209. package/dist/tools/tool.js.map +1 -0
  210. package/dist/types/events.d.ts +66 -0
  211. package/dist/types/events.js +2 -0
  212. package/dist/types/events.js.map +1 -0
  213. package/dist/types/messages.d.ts +57 -0
  214. package/dist/types/messages.js +42 -0
  215. package/dist/types/messages.js.map +1 -0
  216. package/package.json +49 -0
  217. package/scripts/copy-model-metadata.mjs +4 -0
  218. package/scripts/install-ripgrep.cjs +152 -0
@@ -0,0 +1,677 @@
1
+ {
2
+ "updatedAt": "2026-05-08",
3
+ "notes": [
4
+ "Static model metadata used for local REPL telemetry. Values are best-effort and should be refreshed when providers update model cards.",
5
+ "MODEL_CONTEXT_WINDOW_TOKENS or OPENAI_CONTEXT_WINDOW_TOKENS overrides contextWindowTokens at runtime.",
6
+ "modelIds are exact official model IDs/aliases from provider documentation; matching is direct and does not use regex.",
7
+ "imageInput indicates whether provider documentation lists image input / vision support for the model.",
8
+ "reasoningEfforts lists the exact reasoning.effort values the /model command may set; omitted/empty means no supported effort enum is configured for that model."
9
+ ],
10
+ "sources": {
11
+ "openai-models": "https://platform.openai.com/docs/models",
12
+ "anthropic-models": "https://docs.anthropic.com/en/docs/about-claude/models/overview",
13
+ "anthropic-context-windows": "https://docs.anthropic.com/en/docs/build-with-claude/context-windows",
14
+ "gemini-models": "https://ai.google.dev/gemini-api/docs/models",
15
+ "deepseek-pricing": "https://api-docs.deepseek.com/quick_start/pricing/",
16
+ "deepseek-models": "https://api-docs.deepseek.com/quick_start/parameter_settings/",
17
+ "mistral-known-limitations": "https://docs.mistral.ai/resources/known-limitations",
18
+ "anthropic-vision": "https://docs.anthropic.com/en/docs/build-with-claude/vision",
19
+ "mistral-vision": "https://docs.mistral.ai/capabilities/vision",
20
+ "openai-reasoning": "https://developers.openai.com/api/docs/guides/reasoning",
21
+ "deepseek-thinking-mode": "https://api-docs.deepseek.com/guides/thinking_mode"
22
+ },
23
+ "models": [
24
+ {
25
+ "id": "gpt-5.5",
26
+ "provider": "openai",
27
+ "modelIds": [
28
+ "gpt-5.5"
29
+ ],
30
+ "contextWindowTokens": 1050000,
31
+ "maxOutputTokens": 128000,
32
+ "reasoning": true,
33
+ "imageInput": true,
34
+ "source": "openai-models",
35
+ "reasoningEfforts": [
36
+ "none",
37
+ "low",
38
+ "medium",
39
+ "high",
40
+ "xhigh"
41
+ ]
42
+ },
43
+ {
44
+ "id": "gpt-5.5-pro",
45
+ "provider": "openai",
46
+ "modelIds": [
47
+ "gpt-5.5-pro"
48
+ ],
49
+ "contextWindowTokens": 1050000,
50
+ "maxOutputTokens": 128000,
51
+ "reasoning": true,
52
+ "imageInput": true,
53
+ "source": "openai-models",
54
+ "reasoningEfforts": [
55
+ "none",
56
+ "low",
57
+ "medium",
58
+ "high",
59
+ "xhigh"
60
+ ]
61
+ },
62
+ {
63
+ "id": "gpt-5.4",
64
+ "provider": "openai",
65
+ "modelIds": [
66
+ "gpt-5.4"
67
+ ],
68
+ "contextWindowTokens": 1050000,
69
+ "maxOutputTokens": 128000,
70
+ "reasoning": true,
71
+ "imageInput": true,
72
+ "source": "openai-models",
73
+ "reasoningEfforts": [
74
+ "none",
75
+ "low",
76
+ "medium",
77
+ "high",
78
+ "xhigh"
79
+ ]
80
+ },
81
+ {
82
+ "id": "gpt-5.4-mini",
83
+ "provider": "openai",
84
+ "modelIds": [
85
+ "gpt-5.4-mini"
86
+ ],
87
+ "contextWindowTokens": 400000,
88
+ "maxOutputTokens": 128000,
89
+ "reasoning": true,
90
+ "imageInput": true,
91
+ "source": "openai-models",
92
+ "reasoningEfforts": [
93
+ "none",
94
+ "low",
95
+ "medium",
96
+ "high",
97
+ "xhigh"
98
+ ]
99
+ },
100
+ {
101
+ "id": "gpt-5.4-nano",
102
+ "provider": "openai",
103
+ "modelIds": [
104
+ "gpt-5.4-nano"
105
+ ],
106
+ "contextWindowTokens": 400000,
107
+ "maxOutputTokens": 128000,
108
+ "reasoning": true,
109
+ "imageInput": true,
110
+ "source": "openai-models",
111
+ "reasoningEfforts": [
112
+ "none",
113
+ "low",
114
+ "medium",
115
+ "high",
116
+ "xhigh"
117
+ ]
118
+ },
119
+ {
120
+ "id": "gpt-5.2",
121
+ "provider": "openai",
122
+ "modelIds": [
123
+ "gpt-5.2"
124
+ ],
125
+ "contextWindowTokens": 400000,
126
+ "maxOutputTokens": 128000,
127
+ "knowledgeCutoff": "2025-08-31",
128
+ "reasoning": true,
129
+ "imageInput": true,
130
+ "source": "openai-models",
131
+ "reasoningEfforts": [
132
+ "none",
133
+ "low",
134
+ "medium",
135
+ "high",
136
+ "xhigh"
137
+ ]
138
+ },
139
+ {
140
+ "id": "gpt-5.2-codex",
141
+ "provider": "openai",
142
+ "modelIds": [
143
+ "gpt-5.2-codex"
144
+ ],
145
+ "contextWindowTokens": 400000,
146
+ "maxOutputTokens": 128000,
147
+ "knowledgeCutoff": "2025-08-31",
148
+ "reasoning": true,
149
+ "imageInput": true,
150
+ "source": "openai-models",
151
+ "reasoningEfforts": [
152
+ "low",
153
+ "medium",
154
+ "high",
155
+ "xhigh"
156
+ ]
157
+ },
158
+ {
159
+ "id": "gpt-5.2-pro",
160
+ "provider": "openai",
161
+ "modelIds": [
162
+ "gpt-5.2-pro"
163
+ ],
164
+ "contextWindowTokens": 400000,
165
+ "maxOutputTokens": 128000,
166
+ "reasoning": true,
167
+ "imageInput": true,
168
+ "source": "openai-models",
169
+ "reasoningEfforts": [
170
+ "none",
171
+ "low",
172
+ "medium",
173
+ "high",
174
+ "xhigh"
175
+ ]
176
+ },
177
+ {
178
+ "id": "gpt-5.1",
179
+ "provider": "openai",
180
+ "modelIds": [
181
+ "gpt-5.1"
182
+ ],
183
+ "contextWindowTokens": 400000,
184
+ "maxOutputTokens": 128000,
185
+ "knowledgeCutoff": "2024-09-30",
186
+ "reasoning": true,
187
+ "imageInput": true,
188
+ "source": "openai-models",
189
+ "reasoningEfforts": [
190
+ "none",
191
+ "low",
192
+ "medium",
193
+ "high"
194
+ ]
195
+ },
196
+ {
197
+ "id": "gpt-5.1-codex",
198
+ "provider": "openai",
199
+ "modelIds": [
200
+ "gpt-5.1-codex"
201
+ ],
202
+ "contextWindowTokens": 400000,
203
+ "maxOutputTokens": 128000,
204
+ "knowledgeCutoff": "2024-09-30",
205
+ "reasoning": true,
206
+ "imageInput": true,
207
+ "source": "openai-models",
208
+ "reasoningEfforts": [
209
+ "low",
210
+ "medium",
211
+ "high"
212
+ ]
213
+ },
214
+ {
215
+ "id": "gpt-5.1-codex-max",
216
+ "provider": "openai",
217
+ "modelIds": [
218
+ "gpt-5.1-codex-max"
219
+ ],
220
+ "contextWindowTokens": 400000,
221
+ "maxOutputTokens": 128000,
222
+ "knowledgeCutoff": "2024-09-30",
223
+ "reasoning": true,
224
+ "imageInput": true,
225
+ "source": "openai-models",
226
+ "reasoningEfforts": [
227
+ "low",
228
+ "medium",
229
+ "high"
230
+ ]
231
+ },
232
+ {
233
+ "id": "gpt-5.1-codex-mini",
234
+ "provider": "openai",
235
+ "modelIds": [
236
+ "gpt-5.1-codex-mini"
237
+ ],
238
+ "contextWindowTokens": 400000,
239
+ "maxOutputTokens": 128000,
240
+ "knowledgeCutoff": "2024-09-30",
241
+ "reasoning": true,
242
+ "imageInput": true,
243
+ "source": "openai-models",
244
+ "reasoningEfforts": [
245
+ "low",
246
+ "medium",
247
+ "high"
248
+ ]
249
+ },
250
+ {
251
+ "id": "gpt-5",
252
+ "provider": "openai",
253
+ "modelIds": [
254
+ "gpt-5"
255
+ ],
256
+ "contextWindowTokens": 400000,
257
+ "maxOutputTokens": 128000,
258
+ "reasoning": true,
259
+ "imageInput": true,
260
+ "source": "openai-models",
261
+ "reasoningEfforts": [
262
+ "minimal",
263
+ "low",
264
+ "medium",
265
+ "high"
266
+ ]
267
+ },
268
+ {
269
+ "id": "gpt-5-codex",
270
+ "provider": "openai",
271
+ "modelIds": [
272
+ "gpt-5-codex"
273
+ ],
274
+ "contextWindowTokens": 400000,
275
+ "maxOutputTokens": 128000,
276
+ "reasoning": true,
277
+ "imageInput": true,
278
+ "source": "openai-models",
279
+ "reasoningEfforts": [
280
+ "minimal",
281
+ "low",
282
+ "medium",
283
+ "high"
284
+ ]
285
+ },
286
+ {
287
+ "id": "gpt-5-mini",
288
+ "provider": "openai",
289
+ "modelIds": [
290
+ "gpt-5-mini"
291
+ ],
292
+ "contextWindowTokens": 400000,
293
+ "maxOutputTokens": 128000,
294
+ "reasoning": true,
295
+ "imageInput": true,
296
+ "source": "openai-models",
297
+ "reasoningEfforts": [
298
+ "minimal",
299
+ "low",
300
+ "medium",
301
+ "high"
302
+ ]
303
+ },
304
+ {
305
+ "id": "gpt-5-nano",
306
+ "provider": "openai",
307
+ "modelIds": [
308
+ "gpt-5-nano"
309
+ ],
310
+ "contextWindowTokens": 400000,
311
+ "maxOutputTokens": 128000,
312
+ "reasoning": true,
313
+ "imageInput": true,
314
+ "source": "openai-models",
315
+ "reasoningEfforts": [
316
+ "minimal",
317
+ "low",
318
+ "medium",
319
+ "high"
320
+ ]
321
+ },
322
+ {
323
+ "id": "gpt-5-pro",
324
+ "provider": "openai",
325
+ "modelIds": [
326
+ "gpt-5-pro"
327
+ ],
328
+ "contextWindowTokens": 400000,
329
+ "maxOutputTokens": 272000,
330
+ "reasoning": true,
331
+ "imageInput": true,
332
+ "source": "openai-models",
333
+ "reasoningEfforts": [
334
+ "minimal",
335
+ "low",
336
+ "medium",
337
+ "high"
338
+ ]
339
+ },
340
+ {
341
+ "id": "gpt-4.1",
342
+ "provider": "openai",
343
+ "modelIds": [
344
+ "gpt-4.1"
345
+ ],
346
+ "contextWindowTokens": 1047576,
347
+ "maxOutputTokens": 32768,
348
+ "reasoning": false,
349
+ "imageInput": true,
350
+ "source": "openai-models"
351
+ },
352
+ {
353
+ "id": "gpt-4.1-mini",
354
+ "provider": "openai",
355
+ "modelIds": [
356
+ "gpt-4.1-mini"
357
+ ],
358
+ "contextWindowTokens": 1047576,
359
+ "maxOutputTokens": 32768,
360
+ "reasoning": false,
361
+ "imageInput": true,
362
+ "source": "openai-models"
363
+ },
364
+ {
365
+ "id": "gpt-4.1-nano",
366
+ "provider": "openai",
367
+ "modelIds": [
368
+ "gpt-4.1-nano"
369
+ ],
370
+ "contextWindowTokens": 1047576,
371
+ "maxOutputTokens": 32768,
372
+ "reasoning": false,
373
+ "imageInput": true,
374
+ "source": "openai-models"
375
+ },
376
+ {
377
+ "id": "gpt-4o",
378
+ "provider": "openai",
379
+ "modelIds": [
380
+ "gpt-4o"
381
+ ],
382
+ "contextWindowTokens": 128000,
383
+ "maxOutputTokens": 16384,
384
+ "reasoning": false,
385
+ "imageInput": true,
386
+ "source": "openai-models"
387
+ },
388
+ {
389
+ "id": "gpt-4o-mini",
390
+ "provider": "openai",
391
+ "modelIds": [
392
+ "gpt-4o-mini"
393
+ ],
394
+ "contextWindowTokens": 128000,
395
+ "maxOutputTokens": 16384,
396
+ "reasoning": false,
397
+ "imageInput": true,
398
+ "source": "openai-models"
399
+ },
400
+ {
401
+ "id": "chatgpt-4o-latest",
402
+ "provider": "openai",
403
+ "modelIds": [
404
+ "chatgpt-4o-latest"
405
+ ],
406
+ "contextWindowTokens": 128000,
407
+ "maxOutputTokens": 16384,
408
+ "reasoning": false,
409
+ "imageInput": true,
410
+ "source": "openai-models"
411
+ },
412
+ {
413
+ "id": "gpt-4o-search-preview",
414
+ "provider": "openai",
415
+ "modelIds": [
416
+ "gpt-4o-search-preview"
417
+ ],
418
+ "contextWindowTokens": 128000,
419
+ "maxOutputTokens": 16384,
420
+ "reasoning": false,
421
+ "imageInput": true,
422
+ "source": "openai-models"
423
+ },
424
+ {
425
+ "id": "gpt-4o-mini-search-preview",
426
+ "provider": "openai",
427
+ "modelIds": [
428
+ "gpt-4o-mini-search-preview"
429
+ ],
430
+ "contextWindowTokens": 128000,
431
+ "maxOutputTokens": 16384,
432
+ "reasoning": false,
433
+ "imageInput": true,
434
+ "source": "openai-models"
435
+ },
436
+ {
437
+ "id": "o4-mini",
438
+ "provider": "openai",
439
+ "modelIds": [
440
+ "o4-mini"
441
+ ],
442
+ "contextWindowTokens": 200000,
443
+ "maxOutputTokens": 100000,
444
+ "reasoning": true,
445
+ "imageInput": true,
446
+ "source": "openai-models",
447
+ "reasoningEfforts": [
448
+ "low",
449
+ "medium",
450
+ "high"
451
+ ]
452
+ },
453
+ {
454
+ "id": "o4-mini-deep-research",
455
+ "provider": "openai",
456
+ "modelIds": [
457
+ "o4-mini-deep-research"
458
+ ],
459
+ "contextWindowTokens": 200000,
460
+ "maxOutputTokens": 100000,
461
+ "reasoning": true,
462
+ "imageInput": true,
463
+ "source": "openai-models",
464
+ "reasoningEfforts": [
465
+ "low",
466
+ "medium",
467
+ "high"
468
+ ]
469
+ },
470
+ {
471
+ "id": "gpt-4",
472
+ "provider": "openai",
473
+ "modelIds": [
474
+ "gpt-4"
475
+ ],
476
+ "contextWindowTokens": 8192,
477
+ "maxOutputTokens": 8192,
478
+ "reasoning": false,
479
+ "imageInput": false,
480
+ "source": "openai-models"
481
+ },
482
+ {
483
+ "id": "claude-opus-4-7",
484
+ "provider": "anthropic",
485
+ "modelIds": [
486
+ "claude-opus-4-7"
487
+ ],
488
+ "contextWindowTokens": 1000000,
489
+ "maxOutputTokens": 128000,
490
+ "reasoning": true,
491
+ "imageInput": true,
492
+ "source": "anthropic-models"
493
+ },
494
+ {
495
+ "id": "claude-sonnet-4-6",
496
+ "provider": "anthropic",
497
+ "modelIds": [
498
+ "claude-sonnet-4-6"
499
+ ],
500
+ "contextWindowTokens": 1000000,
501
+ "maxOutputTokens": 64000,
502
+ "reasoning": true,
503
+ "imageInput": true,
504
+ "source": "anthropic-models"
505
+ },
506
+ {
507
+ "id": "claude-haiku-4-5",
508
+ "provider": "anthropic",
509
+ "modelIds": [
510
+ "claude-haiku-4-5",
511
+ "claude-haiku-4-5-20251001"
512
+ ],
513
+ "contextWindowTokens": 200000,
514
+ "maxOutputTokens": 64000,
515
+ "reasoning": true,
516
+ "imageInput": true,
517
+ "source": "anthropic-models"
518
+ },
519
+ {
520
+ "id": "gemini-3.1-pro-preview",
521
+ "provider": "google",
522
+ "modelIds": [
523
+ "gemini-3.1-pro-preview",
524
+ "gemini-3.1-pro-preview-customtools"
525
+ ],
526
+ "contextWindowTokens": 1048576,
527
+ "maxOutputTokens": 65536,
528
+ "reasoning": true,
529
+ "imageInput": true,
530
+ "source": "gemini-models"
531
+ },
532
+ {
533
+ "id": "gemini-3-flash-preview",
534
+ "provider": "google",
535
+ "modelIds": [
536
+ "gemini-3-flash-preview"
537
+ ],
538
+ "contextWindowTokens": 1048576,
539
+ "maxOutputTokens": 65536,
540
+ "reasoning": true,
541
+ "imageInput": true,
542
+ "source": "gemini-models"
543
+ },
544
+ {
545
+ "id": "gemini-2.5-pro",
546
+ "provider": "google",
547
+ "modelIds": [
548
+ "gemini-2.5-pro"
549
+ ],
550
+ "contextWindowTokens": 1048576,
551
+ "maxOutputTokens": 65536,
552
+ "reasoning": true,
553
+ "imageInput": true,
554
+ "source": "gemini-models"
555
+ },
556
+ {
557
+ "id": "gemini-2.5-flash",
558
+ "provider": "google",
559
+ "modelIds": [
560
+ "gemini-2.5-flash"
561
+ ],
562
+ "contextWindowTokens": 1048576,
563
+ "maxOutputTokens": 65536,
564
+ "reasoning": true,
565
+ "imageInput": true,
566
+ "source": "gemini-models"
567
+ },
568
+ {
569
+ "id": "gemini-2.5-flash-lite",
570
+ "provider": "google",
571
+ "modelIds": [
572
+ "gemini-2.5-flash-lite"
573
+ ],
574
+ "contextWindowTokens": 1048576,
575
+ "maxOutputTokens": 65536,
576
+ "reasoning": true,
577
+ "imageInput": true,
578
+ "source": "gemini-models"
579
+ },
580
+ {
581
+ "id": "gemini-2.0-flash",
582
+ "provider": "google",
583
+ "modelIds": [
584
+ "gemini-2.0-flash"
585
+ ],
586
+ "contextWindowTokens": 1048576,
587
+ "maxOutputTokens": 8192,
588
+ "reasoning": true,
589
+ "imageInput": true,
590
+ "source": "gemini-models"
591
+ },
592
+ {
593
+ "id": "deepseek-v4-pro",
594
+ "provider": "deepseek",
595
+ "modelIds": [
596
+ "deepseek-v4-pro"
597
+ ],
598
+ "contextWindowTokens": 1000000,
599
+ "maxOutputTokens": 384000,
600
+ "reasoning": true,
601
+ "imageInput": false,
602
+ "source": "deepseek-pricing",
603
+ "reasoningEfforts": [
604
+ "high",
605
+ "max"
606
+ ]
607
+ },
608
+ {
609
+ "id": "deepseek-v4-flash",
610
+ "provider": "deepseek",
611
+ "modelIds": [
612
+ "deepseek-v4-flash"
613
+ ],
614
+ "contextWindowTokens": 1000000,
615
+ "maxOutputTokens": 384000,
616
+ "reasoning": true,
617
+ "imageInput": false,
618
+ "source": "deepseek-pricing",
619
+ "reasoningEfforts": [
620
+ "high",
621
+ "max"
622
+ ]
623
+ },
624
+ {
625
+ "id": "deepseek-chat",
626
+ "provider": "deepseek",
627
+ "modelIds": [
628
+ "deepseek-chat"
629
+ ],
630
+ "contextWindowTokens": 1000000,
631
+ "maxOutputTokens": 384000,
632
+ "reasoning": false,
633
+ "imageInput": false,
634
+ "source": "deepseek-pricing",
635
+ "notes": "Compatibility alias for non-thinking mode of deepseek-v4-flash."
636
+ },
637
+ {
638
+ "id": "deepseek-reasoner",
639
+ "provider": "deepseek",
640
+ "modelIds": [
641
+ "deepseek-reasoner"
642
+ ],
643
+ "contextWindowTokens": 1000000,
644
+ "maxOutputTokens": 384000,
645
+ "reasoning": true,
646
+ "imageInput": false,
647
+ "source": "deepseek-pricing",
648
+ "notes": "Compatibility alias for thinking mode of deepseek-v4-flash.",
649
+ "reasoningEfforts": [
650
+ "high",
651
+ "max"
652
+ ]
653
+ },
654
+ {
655
+ "id": "mistral-large-latest",
656
+ "provider": "mistral",
657
+ "modelIds": [
658
+ "mistral-large-latest"
659
+ ],
660
+ "contextWindowTokens": 131072,
661
+ "reasoning": false,
662
+ "imageInput": true,
663
+ "source": "mistral-known-limitations"
664
+ },
665
+ {
666
+ "id": "mistral-small-latest",
667
+ "provider": "mistral",
668
+ "modelIds": [
669
+ "mistral-small-latest"
670
+ ],
671
+ "contextWindowTokens": 32768,
672
+ "reasoning": false,
673
+ "imageInput": true,
674
+ "source": "mistral-known-limitations"
675
+ }
676
+ ]
677
+ }
@@ -0,0 +1,34 @@
1
+ import type { CredentialProvider } from "./credentials.js";
2
+ import type { OpenAIEndpointPreference } from "./config.js";
3
+ import type { ModelGateway, ModelRequest, ModelStreamEvent, ReasoningConfig } from "./model-gateway.js";
4
+ import type { ProviderAdapter, ProviderCapabilities } from "./provider-adapter.js";
5
+ export type { OpenAIEndpointPreference } from "./config.js";
6
+ export interface OpenAIAdapterOptions {
7
+ apiKey?: string;
8
+ apiKeyEnvName?: string;
9
+ credentialProvider?: CredentialProvider;
10
+ baseUrl?: string;
11
+ model: string;
12
+ fallbackModel?: string;
13
+ endpoint?: OpenAIEndpointPreference;
14
+ timeoutMs?: number;
15
+ streamIdleTimeoutMs?: number;
16
+ maxRetries?: number;
17
+ defaultMaxOutputTokens?: number;
18
+ defaultReasoning?: ReasoningConfig;
19
+ }
20
+ export declare class OpenAIAdapter implements ProviderAdapter, ModelGateway {
21
+ private readonly options;
22
+ readonly name = "openai";
23
+ readonly capabilities: ProviderCapabilities;
24
+ private readonly credentialProvider;
25
+ private readonly transport;
26
+ private readonly baseUrl;
27
+ constructor(options: OpenAIAdapterOptions);
28
+ stream(request: ModelRequest): AsyncIterable<ModelStreamEvent>;
29
+ private streamAttempt;
30
+ private streamResponses;
31
+ private streamChat;
32
+ private assertRequestCapabilities;
33
+ private authHeaders;
34
+ }