ommlds 0.0.0.dev426__py3-none-any.whl → 0.0.0.dev485__py3-none-any.whl

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 (295) hide show
  1. ommlds/.omlish-manifests.json +336 -39
  2. ommlds/__about__.py +16 -10
  3. ommlds/_hacks/__init__.py +4 -0
  4. ommlds/_hacks/funcs.py +110 -0
  5. ommlds/_hacks/names.py +158 -0
  6. ommlds/_hacks/params.py +73 -0
  7. ommlds/_hacks/patches.py +0 -3
  8. ommlds/backends/anthropic/protocol/__init__.py +13 -1
  9. ommlds/backends/anthropic/protocol/_dataclasses.py +1625 -0
  10. ommlds/backends/anthropic/protocol/_marshal.py +2 -2
  11. ommlds/backends/anthropic/protocol/sse/_marshal.py +1 -1
  12. ommlds/backends/anthropic/protocol/sse/assemble.py +23 -7
  13. ommlds/backends/anthropic/protocol/sse/events.py +13 -0
  14. ommlds/backends/anthropic/protocol/types.py +40 -8
  15. ommlds/backends/google/protocol/__init__.py +16 -0
  16. ommlds/backends/google/protocol/_dataclasses.py +5997 -0
  17. ommlds/backends/google/protocol/_marshal.py +16 -0
  18. ommlds/backends/google/protocol/types.py +626 -0
  19. ommlds/backends/groq/__init__.py +7 -0
  20. ommlds/backends/groq/_dataclasses.py +3901 -0
  21. ommlds/backends/groq/_marshal.py +23 -0
  22. ommlds/backends/groq/protocol.py +249 -0
  23. ommlds/backends/llamacpp/logging.py +4 -1
  24. ommlds/backends/mlx/caching.py +7 -3
  25. ommlds/backends/mlx/cli.py +10 -7
  26. ommlds/backends/mlx/generation.py +19 -17
  27. ommlds/backends/mlx/limits.py +10 -6
  28. ommlds/backends/mlx/loading.py +65 -5
  29. ommlds/backends/ollama/__init__.py +7 -0
  30. ommlds/backends/ollama/_dataclasses.py +3458 -0
  31. ommlds/backends/ollama/protocol.py +170 -0
  32. ommlds/backends/openai/protocol/__init__.py +24 -29
  33. ommlds/backends/openai/protocol/_common.py +18 -0
  34. ommlds/backends/openai/protocol/_dataclasses.py +7708 -0
  35. ommlds/backends/openai/protocol/_marshal.py +27 -0
  36. ommlds/backends/openai/protocol/chatcompletion/chunk.py +58 -31
  37. ommlds/backends/openai/protocol/chatcompletion/contentpart.py +49 -44
  38. ommlds/backends/openai/protocol/chatcompletion/message.py +55 -43
  39. ommlds/backends/openai/protocol/chatcompletion/request.py +114 -66
  40. ommlds/backends/openai/protocol/chatcompletion/response.py +71 -45
  41. ommlds/backends/openai/protocol/chatcompletion/responseformat.py +27 -20
  42. ommlds/backends/openai/protocol/chatcompletion/tokenlogprob.py +16 -7
  43. ommlds/backends/openai/protocol/completionusage.py +24 -15
  44. ommlds/backends/tavily/__init__.py +7 -0
  45. ommlds/backends/tavily/_dataclasses.py +1734 -0
  46. ommlds/backends/tavily/protocol.py +301 -0
  47. ommlds/backends/tinygrad/models/llama3/__init__.py +22 -14
  48. ommlds/backends/transformers/__init__.py +14 -0
  49. ommlds/backends/transformers/filecache.py +109 -0
  50. ommlds/backends/transformers/streamers.py +73 -0
  51. ommlds/cli/__init__.py +7 -0
  52. ommlds/cli/_dataclasses.py +2562 -0
  53. ommlds/cli/asyncs.py +30 -0
  54. ommlds/cli/backends/catalog.py +93 -0
  55. ommlds/cli/backends/configs.py +9 -0
  56. ommlds/cli/backends/inject.py +31 -36
  57. ommlds/cli/backends/injection.py +16 -0
  58. ommlds/cli/backends/types.py +46 -0
  59. ommlds/cli/content/messages.py +34 -0
  60. ommlds/cli/content/strings.py +42 -0
  61. ommlds/cli/inject.py +17 -32
  62. ommlds/cli/inputs/__init__.py +0 -0
  63. ommlds/cli/inputs/asyncs.py +32 -0
  64. ommlds/cli/inputs/sync.py +75 -0
  65. ommlds/cli/main.py +270 -110
  66. ommlds/cli/rendering/__init__.py +0 -0
  67. ommlds/cli/rendering/configs.py +9 -0
  68. ommlds/cli/rendering/inject.py +31 -0
  69. ommlds/cli/rendering/markdown.py +52 -0
  70. ommlds/cli/rendering/raw.py +73 -0
  71. ommlds/cli/rendering/types.py +21 -0
  72. ommlds/cli/secrets.py +21 -0
  73. ommlds/cli/sessions/base.py +1 -1
  74. ommlds/cli/sessions/chat/chat/__init__.py +0 -0
  75. ommlds/cli/sessions/chat/chat/ai/__init__.py +0 -0
  76. ommlds/cli/sessions/chat/chat/ai/configs.py +11 -0
  77. ommlds/cli/sessions/chat/chat/ai/inject.py +74 -0
  78. ommlds/cli/sessions/chat/chat/ai/injection.py +14 -0
  79. ommlds/cli/sessions/chat/chat/ai/rendering.py +70 -0
  80. ommlds/cli/sessions/chat/chat/ai/services.py +79 -0
  81. ommlds/cli/sessions/chat/chat/ai/tools.py +44 -0
  82. ommlds/cli/sessions/chat/chat/ai/types.py +28 -0
  83. ommlds/cli/sessions/chat/chat/state/__init__.py +0 -0
  84. ommlds/cli/sessions/chat/chat/state/configs.py +11 -0
  85. ommlds/cli/sessions/chat/chat/state/inject.py +36 -0
  86. ommlds/cli/sessions/chat/chat/state/inmemory.py +33 -0
  87. ommlds/cli/sessions/chat/chat/state/storage.py +52 -0
  88. ommlds/cli/sessions/chat/chat/state/types.py +38 -0
  89. ommlds/cli/sessions/chat/chat/user/__init__.py +0 -0
  90. ommlds/cli/sessions/chat/chat/user/configs.py +17 -0
  91. ommlds/cli/sessions/chat/chat/user/inject.py +62 -0
  92. ommlds/cli/sessions/chat/chat/user/interactive.py +31 -0
  93. ommlds/cli/sessions/chat/chat/user/oneshot.py +25 -0
  94. ommlds/cli/sessions/chat/chat/user/types.py +15 -0
  95. ommlds/cli/sessions/chat/configs.py +27 -0
  96. ommlds/cli/sessions/chat/driver.py +43 -0
  97. ommlds/cli/sessions/chat/inject.py +33 -65
  98. ommlds/cli/sessions/chat/phases/__init__.py +0 -0
  99. ommlds/cli/sessions/chat/phases/inject.py +27 -0
  100. ommlds/cli/sessions/chat/phases/injection.py +14 -0
  101. ommlds/cli/sessions/chat/phases/manager.py +29 -0
  102. ommlds/cli/sessions/chat/phases/types.py +29 -0
  103. ommlds/cli/sessions/chat/session.py +27 -0
  104. ommlds/cli/sessions/chat/tools/__init__.py +0 -0
  105. ommlds/cli/sessions/chat/tools/configs.py +22 -0
  106. ommlds/cli/sessions/chat/tools/confirmation.py +46 -0
  107. ommlds/cli/sessions/chat/tools/execution.py +66 -0
  108. ommlds/cli/sessions/chat/tools/fs/__init__.py +0 -0
  109. ommlds/cli/sessions/chat/tools/fs/configs.py +12 -0
  110. ommlds/cli/sessions/chat/tools/fs/inject.py +35 -0
  111. ommlds/cli/sessions/chat/tools/inject.py +88 -0
  112. ommlds/cli/sessions/chat/tools/injection.py +44 -0
  113. ommlds/cli/sessions/chat/tools/rendering.py +58 -0
  114. ommlds/cli/sessions/chat/tools/todo/__init__.py +0 -0
  115. ommlds/cli/sessions/chat/tools/todo/configs.py +12 -0
  116. ommlds/cli/sessions/chat/tools/todo/inject.py +31 -0
  117. ommlds/cli/sessions/chat/tools/weather/__init__.py +0 -0
  118. ommlds/cli/sessions/chat/tools/weather/configs.py +12 -0
  119. ommlds/cli/sessions/chat/tools/weather/inject.py +22 -0
  120. ommlds/cli/{tools/weather.py → sessions/chat/tools/weather/tools.py} +1 -1
  121. ommlds/cli/sessions/completion/configs.py +21 -0
  122. ommlds/cli/sessions/completion/inject.py +42 -0
  123. ommlds/cli/sessions/completion/session.py +35 -0
  124. ommlds/cli/sessions/embedding/configs.py +21 -0
  125. ommlds/cli/sessions/embedding/inject.py +42 -0
  126. ommlds/cli/sessions/embedding/session.py +33 -0
  127. ommlds/cli/sessions/inject.py +28 -11
  128. ommlds/cli/state/__init__.py +0 -0
  129. ommlds/cli/state/inject.py +28 -0
  130. ommlds/cli/{state.py → state/storage.py} +41 -24
  131. ommlds/minichain/__init__.py +84 -24
  132. ommlds/minichain/_dataclasses.py +15401 -0
  133. ommlds/minichain/_marshal.py +49 -9
  134. ommlds/minichain/_typedvalues.py +2 -4
  135. ommlds/minichain/backends/catalogs/base.py +20 -1
  136. ommlds/minichain/backends/catalogs/simple.py +2 -2
  137. ommlds/minichain/backends/catalogs/strings.py +10 -8
  138. ommlds/minichain/backends/impls/anthropic/chat.py +65 -27
  139. ommlds/minichain/backends/impls/anthropic/names.py +10 -8
  140. ommlds/minichain/backends/impls/anthropic/protocol.py +109 -0
  141. ommlds/minichain/backends/impls/anthropic/stream.py +111 -43
  142. ommlds/minichain/backends/impls/duckduckgo/search.py +6 -2
  143. ommlds/minichain/backends/impls/dummy/__init__.py +0 -0
  144. ommlds/minichain/backends/impls/dummy/chat.py +69 -0
  145. ommlds/minichain/backends/impls/google/chat.py +114 -22
  146. ommlds/minichain/backends/impls/google/search.py +7 -2
  147. ommlds/minichain/backends/impls/google/stream.py +219 -0
  148. ommlds/minichain/backends/impls/google/tools.py +149 -0
  149. ommlds/minichain/backends/impls/groq/__init__.py +0 -0
  150. ommlds/minichain/backends/impls/groq/chat.py +75 -0
  151. ommlds/minichain/backends/impls/groq/names.py +48 -0
  152. ommlds/minichain/backends/impls/groq/protocol.py +143 -0
  153. ommlds/minichain/backends/impls/groq/stream.py +125 -0
  154. ommlds/minichain/backends/impls/huggingface/repos.py +1 -5
  155. ommlds/minichain/backends/impls/llamacpp/chat.py +40 -22
  156. ommlds/minichain/backends/impls/llamacpp/completion.py +9 -5
  157. ommlds/minichain/backends/impls/llamacpp/format.py +4 -2
  158. ommlds/minichain/backends/impls/llamacpp/stream.py +43 -23
  159. ommlds/minichain/backends/impls/mistral.py +20 -5
  160. ommlds/minichain/backends/impls/mlx/chat.py +101 -24
  161. ommlds/minichain/backends/impls/ollama/__init__.py +0 -0
  162. ommlds/minichain/backends/impls/ollama/chat.py +199 -0
  163. ommlds/minichain/backends/impls/openai/chat.py +18 -8
  164. ommlds/minichain/backends/impls/openai/completion.py +10 -3
  165. ommlds/minichain/backends/impls/openai/embedding.py +10 -3
  166. ommlds/minichain/backends/impls/openai/format.py +131 -106
  167. ommlds/minichain/backends/impls/openai/names.py +31 -5
  168. ommlds/minichain/backends/impls/openai/stream.py +43 -25
  169. ommlds/minichain/backends/impls/sentencepiece/tokens.py +9 -6
  170. ommlds/minichain/backends/impls/tavily.py +66 -0
  171. ommlds/minichain/backends/impls/tinygrad/chat.py +30 -20
  172. ommlds/minichain/backends/impls/tokenizers/tokens.py +9 -6
  173. ommlds/minichain/backends/impls/transformers/sentence.py +6 -3
  174. ommlds/minichain/backends/impls/transformers/tokens.py +10 -7
  175. ommlds/minichain/backends/impls/transformers/transformers.py +160 -37
  176. ommlds/minichain/backends/strings/parsing.py +1 -1
  177. ommlds/minichain/backends/strings/resolving.py +4 -1
  178. ommlds/minichain/chat/_marshal.py +16 -9
  179. ommlds/minichain/chat/choices/adapters.py +4 -4
  180. ommlds/minichain/chat/choices/services.py +1 -1
  181. ommlds/minichain/chat/choices/stream/__init__.py +0 -0
  182. ommlds/minichain/chat/choices/stream/adapters.py +35 -0
  183. ommlds/minichain/chat/choices/stream/joining.py +31 -0
  184. ommlds/minichain/chat/choices/stream/services.py +45 -0
  185. ommlds/minichain/chat/choices/stream/types.py +43 -0
  186. ommlds/minichain/chat/choices/types.py +2 -2
  187. ommlds/minichain/chat/history.py +3 -3
  188. ommlds/minichain/chat/messages.py +55 -19
  189. ommlds/minichain/chat/services.py +3 -3
  190. ommlds/minichain/chat/stream/_marshal.py +16 -0
  191. ommlds/minichain/chat/stream/joining.py +85 -0
  192. ommlds/minichain/chat/stream/services.py +15 -21
  193. ommlds/minichain/chat/stream/types.py +32 -19
  194. ommlds/minichain/chat/tools/execution.py +8 -7
  195. ommlds/minichain/chat/tools/ids.py +9 -15
  196. ommlds/minichain/chat/tools/parsing.py +17 -26
  197. ommlds/minichain/chat/transforms/base.py +29 -38
  198. ommlds/minichain/chat/transforms/metadata.py +30 -4
  199. ommlds/minichain/chat/transforms/services.py +9 -11
  200. ommlds/minichain/content/_marshal.py +44 -20
  201. ommlds/minichain/content/json.py +13 -0
  202. ommlds/minichain/content/materialize.py +14 -21
  203. ommlds/minichain/content/prepare.py +4 -0
  204. ommlds/minichain/content/transforms/interleave.py +1 -1
  205. ommlds/minichain/content/transforms/squeeze.py +1 -1
  206. ommlds/minichain/content/transforms/stringify.py +1 -1
  207. ommlds/minichain/json.py +20 -0
  208. ommlds/minichain/lib/code/__init__.py +0 -0
  209. ommlds/minichain/lib/code/prompts.py +6 -0
  210. ommlds/minichain/lib/fs/binfiles.py +108 -0
  211. ommlds/minichain/lib/fs/context.py +126 -0
  212. ommlds/minichain/lib/fs/errors.py +101 -0
  213. ommlds/minichain/lib/fs/suggestions.py +36 -0
  214. ommlds/minichain/lib/fs/tools/__init__.py +0 -0
  215. ommlds/minichain/lib/fs/tools/edit.py +104 -0
  216. ommlds/minichain/lib/fs/tools/ls.py +38 -0
  217. ommlds/minichain/lib/fs/tools/read.py +115 -0
  218. ommlds/minichain/lib/fs/tools/recursivels/__init__.py +0 -0
  219. ommlds/minichain/lib/fs/tools/recursivels/execution.py +40 -0
  220. ommlds/minichain/lib/todo/__init__.py +0 -0
  221. ommlds/minichain/lib/todo/context.py +54 -0
  222. ommlds/minichain/lib/todo/tools/__init__.py +0 -0
  223. ommlds/minichain/lib/todo/tools/read.py +44 -0
  224. ommlds/minichain/lib/todo/tools/write.py +335 -0
  225. ommlds/minichain/lib/todo/types.py +60 -0
  226. ommlds/minichain/llms/_marshal.py +25 -17
  227. ommlds/minichain/llms/types.py +4 -0
  228. ommlds/minichain/registries/globals.py +18 -4
  229. ommlds/minichain/resources.py +68 -45
  230. ommlds/minichain/search.py +1 -1
  231. ommlds/minichain/services/_marshal.py +46 -39
  232. ommlds/minichain/services/facades.py +3 -3
  233. ommlds/minichain/services/services.py +1 -1
  234. ommlds/minichain/standard.py +8 -0
  235. ommlds/minichain/stream/services.py +152 -38
  236. ommlds/minichain/stream/wrap.py +22 -24
  237. ommlds/minichain/text/toolparsing/llamacpp/hermes2.py +3 -2
  238. ommlds/minichain/text/toolparsing/llamacpp/llama31.py +3 -2
  239. ommlds/minichain/text/toolparsing/llamacpp/utils.py +3 -2
  240. ommlds/minichain/tools/_marshal.py +1 -1
  241. ommlds/minichain/tools/execution/catalog.py +2 -1
  242. ommlds/minichain/tools/execution/context.py +34 -14
  243. ommlds/minichain/tools/execution/errors.py +15 -0
  244. ommlds/minichain/tools/execution/executors.py +8 -3
  245. ommlds/minichain/tools/execution/reflect.py +40 -5
  246. ommlds/minichain/tools/fns.py +46 -9
  247. ommlds/minichain/tools/jsonschema.py +14 -5
  248. ommlds/minichain/tools/reflect.py +54 -18
  249. ommlds/minichain/tools/types.py +33 -1
  250. ommlds/minichain/utils.py +27 -0
  251. ommlds/minichain/vectors/_marshal.py +11 -10
  252. ommlds/minichain/vectors/types.py +1 -1
  253. ommlds/nanochat/LICENSE +21 -0
  254. ommlds/nanochat/__init__.py +0 -0
  255. ommlds/nanochat/rustbpe/LICENSE +21 -0
  256. ommlds/nanochat/tokenizers.py +406 -0
  257. ommlds/server/cli.py +1 -2
  258. ommlds/server/server.py +5 -5
  259. ommlds/server/service.py +1 -1
  260. ommlds/specs/__init__.py +0 -0
  261. ommlds/specs/mcp/__init__.py +0 -0
  262. ommlds/specs/mcp/_marshal.py +23 -0
  263. ommlds/specs/mcp/clients.py +146 -0
  264. ommlds/specs/mcp/protocol.py +371 -0
  265. ommlds/tools/git.py +35 -12
  266. ommlds/tools/ocr.py +8 -9
  267. ommlds/wiki/analyze.py +6 -7
  268. ommlds/wiki/text/mfh.py +1 -5
  269. ommlds/wiki/text/wtp.py +1 -3
  270. ommlds/wiki/utils/xml.py +5 -5
  271. {ommlds-0.0.0.dev426.dist-info → ommlds-0.0.0.dev485.dist-info}/METADATA +24 -21
  272. ommlds-0.0.0.dev485.dist-info/RECORD +436 -0
  273. ommlds/cli/backends/standard.py +0 -20
  274. ommlds/cli/sessions/chat/base.py +0 -42
  275. ommlds/cli/sessions/chat/interactive.py +0 -73
  276. ommlds/cli/sessions/chat/printing.py +0 -96
  277. ommlds/cli/sessions/chat/prompt.py +0 -143
  278. ommlds/cli/sessions/chat/state.py +0 -109
  279. ommlds/cli/sessions/chat/tools.py +0 -91
  280. ommlds/cli/sessions/completion/completion.py +0 -44
  281. ommlds/cli/sessions/embedding/embedding.py +0 -42
  282. ommlds/cli/tools/config.py +0 -13
  283. ommlds/cli/tools/inject.py +0 -64
  284. ommlds/minichain/chat/stream/adapters.py +0 -69
  285. ommlds/minichain/lib/fs/ls/execution.py +0 -32
  286. ommlds-0.0.0.dev426.dist-info/RECORD +0 -303
  287. /ommlds/{cli/tools → backends/google}/__init__.py +0 -0
  288. /ommlds/{huggingface.py → backends/huggingface.py} +0 -0
  289. /ommlds/{minichain/lib/fs/ls → cli/content}/__init__.py +0 -0
  290. /ommlds/minichain/lib/fs/{ls → tools/recursivels}/rendering.py +0 -0
  291. /ommlds/minichain/lib/fs/{ls → tools/recursivels}/running.py +0 -0
  292. {ommlds-0.0.0.dev426.dist-info → ommlds-0.0.0.dev485.dist-info}/WHEEL +0 -0
  293. {ommlds-0.0.0.dev426.dist-info → ommlds-0.0.0.dev485.dist-info}/entry_points.txt +0 -0
  294. {ommlds-0.0.0.dev426.dist-info → ommlds-0.0.0.dev485.dist-info}/licenses/LICENSE +0 -0
  295. {ommlds-0.0.0.dev426.dist-info → ommlds-0.0.0.dev485.dist-info}/top_level.txt +0 -0
@@ -1,5 +1,9 @@
1
1
  import typing as ta
2
2
 
3
+ from omlish import dataclasses as dc
4
+ from omlish import lang
5
+
6
+ from .._common import _set_class_marshal_options
3
7
  from ..completionusage import CompletionUsage
4
8
  from .tokenlogprob import ChatCompletionTokenLogprob
5
9
 
@@ -7,84 +11,106 @@ from .tokenlogprob import ChatCompletionTokenLogprob
7
11
  ##
8
12
 
9
13
 
10
- class ChatCompletionResponseAnnotationUrlCitation(ta.TypedDict):
11
- end_index: int
12
- start_index: int
13
- title: str
14
- url: str
15
-
14
+ @dc.dataclass(frozen=True, kw_only=True)
15
+ @_set_class_marshal_options
16
+ class ChatCompletionResponseMessage(lang.Final):
17
+ content: str | None = None
18
+ refusal: str | None = None
19
+ role: ta.Literal['assistant'] = dc.xfield('assistant', repr=False)
16
20
 
17
- class ChatCompletionResponseAnnotation(ta.TypedDict):
18
- type: ta.Literal['url_citation']
19
- url_citation: ChatCompletionResponseAnnotationUrlCitation
21
+ @dc.dataclass(frozen=True, kw_only=True)
22
+ @_set_class_marshal_options
23
+ class Annotation(lang.Final):
24
+ type: ta.Literal['url_citation'] = dc.xfield('url_citation', repr=False)
20
25
 
26
+ @dc.dataclass(frozen=True, kw_only=True)
27
+ @_set_class_marshal_options
28
+ class UrlCitation(lang.Final):
29
+ end_index: int
30
+ start_index: int
31
+ title: str
32
+ url: str
21
33
 
22
- #
34
+ url_citation: UrlCitation
23
35
 
36
+ annotations: ta.Sequence[Annotation] | None = None
24
37
 
25
- class ChatCompletionResponseAudio(ta.TypedDict):
26
- id: str
27
- data: str
28
- expires_at: int
29
- transcript: str
38
+ @dc.dataclass(frozen=True, kw_only=True)
39
+ @_set_class_marshal_options
40
+ class Audio(lang.Final):
41
+ id: str
42
+ data: str
43
+ expires_at: int
44
+ transcript: str
30
45
 
46
+ audio: Audio | None = None
31
47
 
32
- #
48
+ @dc.dataclass(frozen=True, kw_only=True)
49
+ @_set_class_marshal_options
50
+ class ToolCall(lang.Final):
51
+ id: str
33
52
 
53
+ @dc.dataclass(frozen=True, kw_only=True)
54
+ @_set_class_marshal_options
55
+ class Function(lang.Final):
56
+ arguments: str
57
+ name: str
34
58
 
35
- class ChatCompletionResponseMessageToolCallFunction(ta.TypedDict):
36
- arguments: str
37
- name: str
59
+ function: Function
38
60
 
61
+ type: ta.Literal['function'] = dc.xfield('function', repr=False)
39
62
 
40
- class ChatCompletionResponseMessageToolCall(ta.TypedDict):
41
- id: str
42
- function: ChatCompletionResponseMessageToolCallFunction
43
- type: ta.Literal['function']
44
-
45
-
46
- class ChatCompletionResponseMessage(ta.TypedDict, total=False):
47
- content: str
48
- refusal: str
49
- role: ta.Required[ta.Literal['assistant']]
50
- annotations: ta.Sequence[ChatCompletionResponseAnnotation]
51
- audio: ChatCompletionResponseAudio
52
- tool_calls: ta.Sequence[ChatCompletionResponseMessageToolCall]
63
+ tool_calls: ta.Sequence[ToolCall] | None = None
53
64
 
54
65
 
55
66
  #
56
67
 
57
68
 
58
- class ChatCompletionResponseChoiceLogprobs(ta.TypedDict, total=False):
59
- content: ta.Sequence[ChatCompletionTokenLogprob]
60
- refusal: ta.Sequence[ChatCompletionTokenLogprob]
61
-
62
-
63
- class ChatCompletionResponseChoice(ta.TypedDict):
69
+ @dc.dataclass(frozen=True, kw_only=True)
70
+ @_set_class_marshal_options
71
+ class ChatCompletionResponseChoice(lang.Final):
64
72
  finish_reason: ta.Literal[
65
73
  'stop',
66
74
  'length',
67
75
  'tool_calls',
68
76
  'content_filter',
69
77
  ]
78
+
70
79
  index: int
71
- logprobs: ta.NotRequired[ChatCompletionResponseChoiceLogprobs]
80
+
81
+ @dc.dataclass(frozen=True, kw_only=True)
82
+ @_set_class_marshal_options
83
+ class Logprobs(lang.Final):
84
+ content: ta.Sequence[ChatCompletionTokenLogprob] | None = None
85
+ refusal: ta.Sequence[ChatCompletionTokenLogprob] | None = None
86
+
87
+ logprobs: Logprobs | None = None
88
+
72
89
  message: ChatCompletionResponseMessage
73
90
 
74
91
 
75
92
  #
76
93
 
77
94
 
78
- class ChatCompletionResponse(ta.TypedDict):
95
+ @dc.dataclass(frozen=True, kw_only=True)
96
+ @_set_class_marshal_options
97
+ class ChatCompletionResponse(lang.Final):
79
98
  id: str
99
+
80
100
  choices: ta.Sequence[ChatCompletionResponseChoice]
101
+
81
102
  created: int
103
+
82
104
  model: str
83
- object: ta.Literal['chat.completion']
84
- service_tier: ta.NotRequired[ta.Literal[
105
+
106
+ object: ta.Literal['chat.completion'] = dc.xfield('chat.completion', repr=False)
107
+
108
+ service_tier: ta.Literal[
85
109
  'auto',
86
110
  'default',
87
111
  'flex',
88
- ]]
89
- system_fingerprint: ta.NotRequired[str]
90
- usage: ta.NotRequired[CompletionUsage]
112
+ ] | None = None
113
+
114
+ system_fingerprint: str | None = None
115
+
116
+ usage: CompletionUsage | None = None
@@ -1,41 +1,48 @@
1
- # ruff: noqa: UP007 UP045
2
1
  import typing as ta
3
2
 
3
+ from omlish import dataclasses as dc
4
+ from omlish import lang
4
5
 
5
- ##
6
+ from .._common import _set_class_marshal_options
6
7
 
7
8
 
8
- class TextChatCompletionResponseFormat(ta.TypedDict):
9
- type: ta.Literal['text']
9
+ ##
10
10
 
11
11
 
12
- #
12
+ class ChatCompletionResponseFormat(lang.Abstract, lang.Sealed):
13
+ pass
13
14
 
14
15
 
15
- class JsonSchemaChatCompletionResponseFormatJsonSchema(ta.TypedDict, total=False):
16
- name: ta.Required[str]
17
- description: str
18
- schema: ta.Mapping[str, ta.Any]
19
- strict: bool
16
+ #
20
17
 
21
18
 
22
- class JsonSchemaChatCompletionResponseFormat(ta.TypedDict):
23
- json_schema: JsonSchemaChatCompletionResponseFormatJsonSchema
24
- type: ta.Literal['json_schema']
19
+ @dc.dataclass(frozen=True, kw_only=True)
20
+ @_set_class_marshal_options
21
+ class TextChatCompletionResponseFormat(ChatCompletionResponseFormat, lang.Final):
22
+ pass
25
23
 
26
24
 
27
25
  #
28
26
 
29
27
 
30
- class JsonObjectChatCompletionResponseFormat(ta.TypedDict):
31
- type: ta.Literal['json_object']
28
+ @dc.dataclass(frozen=True, kw_only=True)
29
+ @_set_class_marshal_options
30
+ class JsonSchemaChatCompletionResponseFormat(ChatCompletionResponseFormat, lang.Final):
31
+ @dc.dataclass(frozen=True, kw_only=True)
32
+ @_set_class_marshal_options
33
+ class JsonSchema(lang.Final):
34
+ name: str
35
+ description: str | None = None
36
+ schema: ta.Mapping[str, ta.Any] | None = None
37
+ strict: bool | None = None
38
+
39
+ json_schema: JsonSchema
32
40
 
33
41
 
34
42
  #
35
43
 
36
44
 
37
- ChatCompletionResponseFormat: ta.TypeAlias = ta.Union[
38
- TextChatCompletionResponseFormat,
39
- JsonSchemaChatCompletionResponseFormat,
40
- JsonObjectChatCompletionResponseFormat,
41
- ]
45
+ @dc.dataclass(frozen=True, kw_only=True)
46
+ @_set_class_marshal_options
47
+ class JsonObjectChatCompletionResponseFormat(ChatCompletionResponseFormat, lang.Final):
48
+ pass
@@ -1,17 +1,26 @@
1
1
  import typing as ta
2
2
 
3
+ from omlish import dataclasses as dc
4
+ from omlish import lang
5
+
6
+ from .._common import _set_class_marshal_options
7
+
3
8
 
4
9
  ##
5
10
 
6
11
 
7
- class ChatCompletionTokenLogprobTopLogprob(ta.TypedDict):
12
+ @dc.dataclass(frozen=True, kw_only=True)
13
+ @_set_class_marshal_options
14
+ class ChatCompletionTokenLogprob(lang.Final):
8
15
  token: str
9
- bytes: ta.NotRequired[ta.Sequence[int]]
16
+ bytes: ta.Sequence[int] | None = None
10
17
  logprob: float
11
18
 
19
+ @dc.dataclass(frozen=True, kw_only=True)
20
+ @_set_class_marshal_options
21
+ class TopLogprob(lang.Final):
22
+ token: str
23
+ bytes: ta.Sequence[int] | None = None
24
+ logprob: float
12
25
 
13
- class ChatCompletionTokenLogprob(ta.TypedDict):
14
- token: str
15
- bytes: ta.NotRequired[ta.Sequence[int]]
16
- logprob: float
17
- top_logprobs: ta.Sequence[ChatCompletionTokenLogprobTopLogprob]
26
+ top_logprobs: ta.Sequence[TopLogprob]
@@ -1,24 +1,33 @@
1
- import typing as ta
1
+ from omlish import dataclasses as dc
2
+ from omlish import lang
3
+
4
+ from ._common import _set_class_marshal_options
2
5
 
3
6
 
4
7
  ##
5
8
 
6
9
 
7
- class CompletionUsageCompletionTokensDetails(ta.TypedDict, total=False):
8
- accepted_prediction_tokens: int
9
- audio_tokens: int
10
- reasoning_tokens: int
11
- rejected_prediction_tokens: int
10
+ @dc.dataclass(frozen=True, kw_only=True)
11
+ @_set_class_marshal_options
12
+ class CompletionUsage(lang.Final):
13
+ completion_tokens: int
14
+ prompt_tokens: int
15
+ total_tokens: int
12
16
 
17
+ @dc.dataclass(frozen=True, kw_only=True)
18
+ @_set_class_marshal_options
19
+ class CompletionTokensDetails(lang.Final):
20
+ accepted_prediction_tokens: int | None = None
21
+ audio_tokens: int | None = None
22
+ reasoning_tokens: int | None = None
23
+ rejected_prediction_tokens: int | None = None
13
24
 
14
- class CompletionUsagePromptTokensDetails(ta.TypedDict, total=False):
15
- audio_tokens: int
16
- cached_tokens: int
25
+ completion_tokens_details: CompletionTokensDetails | None = None
17
26
 
27
+ @dc.dataclass(frozen=True, kw_only=True)
28
+ @_set_class_marshal_options
29
+ class PromptTokensDetails(lang.Final):
30
+ audio_tokens: int | None = None
31
+ cached_tokens: int | None = None
18
32
 
19
- class CompletionUsage(ta.TypedDict):
20
- completion_tokens: int
21
- prompt_tokens: int
22
- total_tokens: int
23
- completion_tokens_details: ta.NotRequired[CompletionUsageCompletionTokensDetails]
24
- prompt_tokens_details: ta.NotRequired[CompletionUsagePromptTokensDetails]
33
+ prompt_tokens_details: PromptTokensDetails | None = None
@@ -0,0 +1,7 @@
1
+ from omlish import dataclasses as _dc # noqa
2
+
3
+
4
+ _dc.init_package(
5
+ globals(),
6
+ codegen=True,
7
+ )