ommlds 0.0.0.dev480__py3-none-any.whl → 0.0.0.dev503__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 (277) hide show
  1. ommlds/.omlish-manifests.json +100 -33
  2. ommlds/README.md +11 -0
  3. ommlds/__about__.py +9 -6
  4. ommlds/backends/anthropic/protocol/__init__.py +13 -1
  5. ommlds/backends/anthropic/protocol/_dataclasses.py +1625 -0
  6. ommlds/backends/anthropic/protocol/sse/events.py +2 -0
  7. ommlds/backends/cerebras/__init__.py +7 -0
  8. ommlds/backends/cerebras/_dataclasses.py +4254 -0
  9. ommlds/backends/cerebras/_marshal.py +24 -0
  10. ommlds/backends/cerebras/protocol.py +312 -0
  11. ommlds/backends/google/protocol/__init__.py +13 -0
  12. ommlds/backends/google/protocol/_dataclasses.py +5997 -0
  13. ommlds/backends/groq/__init__.py +7 -0
  14. ommlds/backends/groq/_dataclasses.py +3901 -0
  15. ommlds/backends/groq/clients.py +9 -0
  16. ommlds/backends/llamacpp/logging.py +4 -1
  17. ommlds/backends/mlx/caching.py +7 -3
  18. ommlds/backends/mlx/cli.py +10 -7
  19. ommlds/backends/mlx/generation.py +18 -16
  20. ommlds/backends/mlx/limits.py +10 -6
  21. ommlds/backends/mlx/loading.py +7 -4
  22. ommlds/backends/ollama/__init__.py +7 -0
  23. ommlds/backends/ollama/_dataclasses.py +3488 -0
  24. ommlds/backends/ollama/protocol.py +3 -0
  25. ommlds/backends/openai/protocol/__init__.py +15 -1
  26. ommlds/backends/openai/protocol/_dataclasses.py +7708 -0
  27. ommlds/backends/tavily/__init__.py +7 -0
  28. ommlds/backends/tavily/_dataclasses.py +1734 -0
  29. ommlds/backends/transformers/__init__.py +14 -0
  30. ommlds/cli/__init__.py +7 -0
  31. ommlds/cli/_dataclasses.py +3515 -0
  32. ommlds/cli/backends/catalog.py +0 -5
  33. ommlds/cli/backends/inject.py +70 -7
  34. ommlds/cli/backends/meta.py +82 -0
  35. ommlds/cli/content/messages.py +1 -1
  36. ommlds/cli/inject.py +11 -3
  37. ommlds/cli/main.py +137 -68
  38. ommlds/cli/rendering/types.py +6 -0
  39. ommlds/cli/secrets.py +2 -1
  40. ommlds/cli/sessions/base.py +1 -10
  41. ommlds/cli/sessions/chat/configs.py +9 -17
  42. ommlds/cli/sessions/chat/{chat → drivers}/ai/configs.py +3 -1
  43. ommlds/cli/sessions/chat/drivers/ai/events.py +57 -0
  44. ommlds/cli/sessions/chat/{chat → drivers}/ai/inject.py +10 -3
  45. ommlds/cli/sessions/chat/{chat → drivers}/ai/rendering.py +1 -1
  46. ommlds/cli/sessions/chat/{chat → drivers}/ai/services.py +1 -1
  47. ommlds/cli/sessions/chat/{chat → drivers}/ai/tools.py +4 -8
  48. ommlds/cli/sessions/chat/{chat → drivers}/ai/types.py +9 -0
  49. ommlds/cli/sessions/chat/drivers/configs.py +25 -0
  50. ommlds/cli/sessions/chat/drivers/events/inject.py +27 -0
  51. ommlds/cli/sessions/chat/drivers/events/injection.py +14 -0
  52. ommlds/cli/sessions/chat/drivers/events/manager.py +16 -0
  53. ommlds/cli/sessions/chat/drivers/events/types.py +38 -0
  54. ommlds/cli/sessions/chat/drivers/impl.py +50 -0
  55. ommlds/cli/sessions/chat/drivers/inject.py +70 -0
  56. ommlds/cli/sessions/chat/{chat → drivers}/state/configs.py +2 -0
  57. ommlds/cli/sessions/chat/drivers/state/ids.py +25 -0
  58. ommlds/cli/sessions/chat/drivers/state/inject.py +83 -0
  59. ommlds/cli/sessions/chat/{chat → drivers}/state/inmemory.py +0 -4
  60. ommlds/cli/sessions/chat/{chat → drivers}/state/storage.py +17 -10
  61. ommlds/cli/sessions/chat/{chat → drivers}/state/types.py +10 -5
  62. ommlds/cli/sessions/chat/{tools → drivers/tools}/configs.py +2 -2
  63. ommlds/cli/sessions/chat/drivers/tools/confirmation.py +44 -0
  64. ommlds/cli/sessions/chat/drivers/tools/errorhandling.py +39 -0
  65. ommlds/cli/sessions/chat/{tools → drivers/tools}/execution.py +3 -4
  66. ommlds/cli/sessions/chat/{tools → drivers/tools}/fs/inject.py +3 -3
  67. ommlds/cli/sessions/chat/{tools → drivers/tools}/inject.py +7 -12
  68. ommlds/cli/sessions/chat/{tools → drivers/tools}/injection.py +5 -5
  69. ommlds/cli/sessions/chat/{tools → drivers/tools}/rendering.py +3 -3
  70. ommlds/cli/sessions/chat/{tools → drivers/tools}/todo/inject.py +3 -3
  71. ommlds/cli/sessions/chat/{tools → drivers/tools}/weather/tools.py +1 -1
  72. ommlds/cli/sessions/chat/drivers/types.py +31 -0
  73. ommlds/cli/sessions/chat/{chat → drivers}/user/configs.py +0 -3
  74. ommlds/cli/sessions/chat/drivers/user/inject.py +41 -0
  75. ommlds/cli/sessions/chat/facades/__init__.py +0 -0
  76. ommlds/cli/sessions/chat/facades/commands/__init__.py +0 -0
  77. ommlds/cli/sessions/chat/facades/commands/base.py +83 -0
  78. ommlds/cli/sessions/chat/facades/commands/configs.py +9 -0
  79. ommlds/cli/sessions/chat/facades/commands/inject.py +41 -0
  80. ommlds/cli/sessions/chat/facades/commands/injection.py +15 -0
  81. ommlds/cli/sessions/chat/facades/commands/manager.py +59 -0
  82. ommlds/cli/sessions/chat/facades/commands/simple.py +34 -0
  83. ommlds/cli/sessions/chat/facades/commands/types.py +13 -0
  84. ommlds/cli/sessions/chat/facades/configs.py +11 -0
  85. ommlds/cli/sessions/chat/facades/facade.py +26 -0
  86. ommlds/cli/sessions/chat/facades/inject.py +35 -0
  87. ommlds/cli/sessions/chat/facades/ui.py +34 -0
  88. ommlds/cli/sessions/chat/inject.py +8 -31
  89. ommlds/cli/sessions/chat/interfaces/__init__.py +0 -0
  90. ommlds/cli/sessions/chat/interfaces/bare/__init__.py +0 -0
  91. ommlds/cli/sessions/chat/interfaces/bare/configs.py +15 -0
  92. ommlds/cli/sessions/chat/interfaces/bare/inject.py +69 -0
  93. ommlds/cli/sessions/chat/interfaces/bare/interactive.py +49 -0
  94. ommlds/cli/sessions/chat/interfaces/bare/oneshot.py +21 -0
  95. ommlds/cli/sessions/chat/{tools/confirmation.py → interfaces/bare/tools.py} +3 -22
  96. ommlds/cli/sessions/chat/interfaces/base.py +13 -0
  97. ommlds/cli/sessions/chat/interfaces/configs.py +11 -0
  98. ommlds/cli/sessions/chat/interfaces/inject.py +29 -0
  99. ommlds/cli/sessions/chat/interfaces/textual/__init__.py +0 -0
  100. ommlds/cli/sessions/chat/interfaces/textual/app.py +310 -0
  101. ommlds/cli/sessions/chat/interfaces/textual/configs.py +11 -0
  102. ommlds/cli/sessions/chat/interfaces/textual/facades.py +19 -0
  103. ommlds/cli/sessions/chat/interfaces/textual/inject.py +97 -0
  104. ommlds/cli/sessions/chat/interfaces/textual/interface.py +24 -0
  105. ommlds/cli/sessions/chat/interfaces/textual/styles/__init__.py +29 -0
  106. ommlds/cli/sessions/chat/interfaces/textual/styles/input.tcss +53 -0
  107. ommlds/cli/sessions/chat/interfaces/textual/styles/markdown.tcss +7 -0
  108. ommlds/cli/sessions/chat/interfaces/textual/styles/messages.tcss +157 -0
  109. ommlds/cli/sessions/chat/interfaces/textual/tools.py +38 -0
  110. ommlds/cli/sessions/chat/interfaces/textual/widgets/__init__.py +0 -0
  111. ommlds/cli/sessions/chat/interfaces/textual/widgets/input.py +36 -0
  112. ommlds/cli/sessions/chat/interfaces/textual/widgets/messages.py +197 -0
  113. ommlds/cli/sessions/chat/session.py +8 -13
  114. ommlds/cli/sessions/completion/configs.py +3 -4
  115. ommlds/cli/sessions/completion/inject.py +1 -2
  116. ommlds/cli/sessions/completion/session.py +4 -8
  117. ommlds/cli/sessions/configs.py +10 -0
  118. ommlds/cli/sessions/embedding/configs.py +3 -4
  119. ommlds/cli/sessions/embedding/inject.py +1 -2
  120. ommlds/cli/sessions/embedding/session.py +4 -8
  121. ommlds/cli/sessions/inject.py +15 -15
  122. ommlds/cli/state/storage.py +7 -1
  123. ommlds/minichain/__init__.py +161 -38
  124. ommlds/minichain/_dataclasses.py +20452 -0
  125. ommlds/minichain/_typedvalues.py +11 -4
  126. ommlds/minichain/backends/impls/anthropic/names.py +3 -3
  127. ommlds/minichain/backends/impls/anthropic/protocol.py +2 -2
  128. ommlds/minichain/backends/impls/anthropic/stream.py +1 -1
  129. ommlds/minichain/backends/impls/cerebras/__init__.py +0 -0
  130. ommlds/minichain/backends/impls/cerebras/chat.py +80 -0
  131. ommlds/minichain/backends/impls/cerebras/names.py +45 -0
  132. ommlds/minichain/backends/impls/cerebras/protocol.py +143 -0
  133. ommlds/minichain/backends/impls/cerebras/stream.py +125 -0
  134. ommlds/minichain/backends/impls/duckduckgo/search.py +5 -1
  135. ommlds/minichain/backends/impls/google/names.py +6 -0
  136. ommlds/minichain/backends/impls/google/stream.py +1 -1
  137. ommlds/minichain/backends/impls/google/tools.py +2 -2
  138. ommlds/minichain/backends/impls/groq/chat.py +2 -0
  139. ommlds/minichain/backends/impls/groq/protocol.py +2 -2
  140. ommlds/minichain/backends/impls/groq/stream.py +3 -1
  141. ommlds/minichain/backends/impls/huggingface/repos.py +1 -5
  142. ommlds/minichain/backends/impls/llamacpp/chat.py +6 -3
  143. ommlds/minichain/backends/impls/llamacpp/completion.py +7 -3
  144. ommlds/minichain/backends/impls/llamacpp/stream.py +6 -3
  145. ommlds/minichain/backends/impls/mlx/chat.py +6 -3
  146. ommlds/minichain/backends/impls/ollama/chat.py +51 -57
  147. ommlds/minichain/backends/impls/ollama/protocol.py +144 -0
  148. ommlds/minichain/backends/impls/openai/format.py +4 -3
  149. ommlds/minichain/backends/impls/openai/names.py +3 -1
  150. ommlds/minichain/backends/impls/openai/stream.py +33 -1
  151. ommlds/minichain/backends/impls/sentencepiece/tokens.py +9 -6
  152. ommlds/minichain/backends/impls/tinygrad/chat.py +7 -4
  153. ommlds/minichain/backends/impls/tokenizers/tokens.py +9 -6
  154. ommlds/minichain/backends/impls/transformers/sentence.py +5 -2
  155. ommlds/minichain/backends/impls/transformers/tokens.py +9 -6
  156. ommlds/minichain/backends/impls/transformers/transformers.py +10 -8
  157. ommlds/minichain/backends/strings/resolving.py +1 -1
  158. ommlds/minichain/chat/content.py +42 -0
  159. ommlds/minichain/chat/messages.py +43 -39
  160. ommlds/minichain/chat/stream/joining.py +36 -12
  161. ommlds/minichain/chat/stream/types.py +1 -1
  162. ommlds/minichain/chat/templating.py +3 -3
  163. ommlds/minichain/content/__init__.py +19 -3
  164. ommlds/minichain/content/_marshal.py +181 -55
  165. ommlds/minichain/content/code.py +26 -0
  166. ommlds/minichain/content/composite.py +28 -0
  167. ommlds/minichain/content/content.py +27 -0
  168. ommlds/minichain/content/dynamic.py +12 -0
  169. ommlds/minichain/content/emphasis.py +27 -0
  170. ommlds/minichain/content/images.py +2 -2
  171. ommlds/minichain/content/json.py +2 -2
  172. ommlds/minichain/content/link.py +13 -0
  173. ommlds/minichain/content/markdown.py +12 -0
  174. ommlds/minichain/content/metadata.py +10 -0
  175. ommlds/minichain/content/namespaces.py +8 -0
  176. ommlds/minichain/content/placeholders.py +10 -9
  177. ommlds/minichain/content/quote.py +26 -0
  178. ommlds/minichain/content/raw.py +49 -0
  179. ommlds/minichain/content/recursive.py +12 -0
  180. ommlds/minichain/content/section.py +26 -0
  181. ommlds/minichain/content/sequence.py +17 -3
  182. ommlds/minichain/content/standard.py +32 -0
  183. ommlds/minichain/content/tag.py +28 -0
  184. ommlds/minichain/content/templates.py +13 -0
  185. ommlds/minichain/content/text.py +2 -2
  186. ommlds/minichain/content/transform/__init__.py +0 -0
  187. ommlds/minichain/content/transform/json.py +55 -0
  188. ommlds/minichain/content/transform/markdown.py +8 -0
  189. ommlds/minichain/content/transform/materialize.py +51 -0
  190. ommlds/minichain/content/transform/metadata.py +16 -0
  191. ommlds/minichain/content/{prepare.py → transform/prepare.py} +10 -15
  192. ommlds/minichain/content/transform/recursive.py +97 -0
  193. ommlds/minichain/content/transform/standard.py +43 -0
  194. ommlds/minichain/content/{transforms → transform}/stringify.py +1 -7
  195. ommlds/minichain/content/transform/strings.py +33 -0
  196. ommlds/minichain/content/transform/templates.py +25 -0
  197. ommlds/minichain/content/visitors.py +231 -0
  198. ommlds/minichain/lib/fs/tools/read.py +1 -1
  199. ommlds/minichain/lib/fs/tools/recursivels/rendering.py +1 -1
  200. ommlds/minichain/lib/fs/tools/recursivels/running.py +1 -1
  201. ommlds/minichain/lib/todo/tools/write.py +2 -1
  202. ommlds/minichain/lib/todo/types.py +1 -1
  203. ommlds/minichain/metadata.py +56 -2
  204. ommlds/minichain/resources.py +22 -1
  205. ommlds/minichain/services/README.md +154 -0
  206. ommlds/minichain/services/__init__.py +6 -2
  207. ommlds/minichain/services/_marshal.py +46 -10
  208. ommlds/minichain/services/_origclasses.py +11 -0
  209. ommlds/minichain/services/_typedvalues.py +8 -3
  210. ommlds/minichain/services/requests.py +73 -3
  211. ommlds/minichain/services/responses.py +73 -3
  212. ommlds/minichain/services/services.py +9 -0
  213. ommlds/minichain/stream/services.py +24 -1
  214. ommlds/minichain/text/applypatch.py +2 -1
  215. ommlds/minichain/text/toolparsing/llamacpp/types.py +1 -1
  216. ommlds/minichain/tokens/specials.py +1 -1
  217. ommlds/minichain/tools/execution/catalog.py +1 -1
  218. ommlds/minichain/tools/execution/errorhandling.py +36 -0
  219. ommlds/minichain/tools/execution/errors.py +2 -2
  220. ommlds/minichain/tools/execution/executors.py +1 -1
  221. ommlds/minichain/tools/fns.py +1 -1
  222. ommlds/minichain/tools/jsonschema.py +2 -2
  223. ommlds/minichain/tools/reflect.py +6 -6
  224. ommlds/minichain/tools/types.py +12 -15
  225. ommlds/minichain/vectors/_marshal.py +1 -1
  226. ommlds/minichain/vectors/embeddings.py +1 -1
  227. ommlds/minichain/wrappers/__init__.py +7 -0
  228. ommlds/minichain/wrappers/firstinwins.py +144 -0
  229. ommlds/minichain/wrappers/instrument.py +146 -0
  230. ommlds/minichain/wrappers/retry.py +168 -0
  231. ommlds/minichain/wrappers/services.py +98 -0
  232. ommlds/minichain/wrappers/stream.py +57 -0
  233. ommlds/nanochat/rustbpe/README.md +9 -0
  234. ommlds/nanochat/tokenizers.py +40 -6
  235. ommlds/specs/mcp/clients.py +146 -0
  236. ommlds/specs/mcp/protocol.py +123 -18
  237. ommlds/tools/git.py +82 -65
  238. {ommlds-0.0.0.dev480.dist-info → ommlds-0.0.0.dev503.dist-info}/METADATA +13 -11
  239. ommlds-0.0.0.dev503.dist-info/RECORD +520 -0
  240. ommlds/cli/sessions/chat/chat/state/inject.py +0 -36
  241. ommlds/cli/sessions/chat/chat/user/inject.py +0 -62
  242. ommlds/cli/sessions/chat/chat/user/interactive.py +0 -31
  243. ommlds/cli/sessions/chat/chat/user/oneshot.py +0 -25
  244. ommlds/cli/sessions/chat/chat/user/types.py +0 -15
  245. ommlds/cli/sessions/chat/driver.py +0 -43
  246. ommlds/minichain/content/materialize.py +0 -196
  247. ommlds/minichain/content/simple.py +0 -47
  248. ommlds/minichain/content/transforms/base.py +0 -46
  249. ommlds/minichain/content/transforms/interleave.py +0 -70
  250. ommlds/minichain/content/transforms/squeeze.py +0 -72
  251. ommlds/minichain/content/transforms/strings.py +0 -24
  252. ommlds/minichain/content/types.py +0 -43
  253. ommlds/minichain/stream/wrap.py +0 -62
  254. ommlds-0.0.0.dev480.dist-info/RECORD +0 -427
  255. /ommlds/cli/sessions/chat/{chat → drivers}/__init__.py +0 -0
  256. /ommlds/cli/sessions/chat/{chat → drivers}/ai/__init__.py +0 -0
  257. /ommlds/cli/sessions/chat/{chat → drivers}/ai/injection.py +0 -0
  258. /ommlds/cli/sessions/chat/{chat/state → drivers/events}/__init__.py +0 -0
  259. /ommlds/cli/sessions/chat/{chat/user → drivers/phases}/__init__.py +0 -0
  260. /ommlds/cli/sessions/chat/{phases → drivers/phases}/inject.py +0 -0
  261. /ommlds/cli/sessions/chat/{phases → drivers/phases}/injection.py +0 -0
  262. /ommlds/cli/sessions/chat/{phases → drivers/phases}/manager.py +0 -0
  263. /ommlds/cli/sessions/chat/{phases → drivers/phases}/types.py +0 -0
  264. /ommlds/cli/sessions/chat/{phases → drivers/state}/__init__.py +0 -0
  265. /ommlds/cli/sessions/chat/{tools → drivers/tools}/__init__.py +0 -0
  266. /ommlds/cli/sessions/chat/{tools → drivers/tools}/fs/__init__.py +0 -0
  267. /ommlds/cli/sessions/chat/{tools → drivers/tools}/fs/configs.py +0 -0
  268. /ommlds/cli/sessions/chat/{tools → drivers/tools}/todo/__init__.py +0 -0
  269. /ommlds/cli/sessions/chat/{tools → drivers/tools}/todo/configs.py +0 -0
  270. /ommlds/cli/sessions/chat/{tools → drivers/tools}/weather/__init__.py +0 -0
  271. /ommlds/cli/sessions/chat/{tools → drivers/tools}/weather/configs.py +0 -0
  272. /ommlds/cli/sessions/chat/{tools → drivers/tools}/weather/inject.py +0 -0
  273. /ommlds/{minichain/content/transforms → cli/sessions/chat/drivers/user}/__init__.py +0 -0
  274. {ommlds-0.0.0.dev480.dist-info → ommlds-0.0.0.dev503.dist-info}/WHEEL +0 -0
  275. {ommlds-0.0.0.dev480.dist-info → ommlds-0.0.0.dev503.dist-info}/entry_points.txt +0 -0
  276. {ommlds-0.0.0.dev480.dist-info → ommlds-0.0.0.dev503.dist-info}/licenses/LICENSE +0 -0
  277. {ommlds-0.0.0.dev480.dist-info → ommlds-0.0.0.dev503.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,24 @@
1
+ from omlish import lang
2
+ from omlish import marshal as msh
3
+
4
+ from .protocol import ChatCompletionRequest
5
+
6
+
7
+ ##
8
+
9
+
10
+ @lang.static_init
11
+ def _install_standard_marshaling() -> None:
12
+ for root_cls, tag_field in [
13
+ (ChatCompletionRequest.Message, 'role'),
14
+ (ChatCompletionRequest.ResponseFormat, 'type'),
15
+ ]:
16
+ msh.install_standard_factories(*msh.standard_polymorphism_factories(
17
+ msh.polymorphism_from_subclasses(
18
+ root_cls,
19
+ naming=msh.Naming.SNAKE,
20
+ strip_suffix=msh.AutoStripSuffix,
21
+ ),
22
+ msh.FieldTypeTagging(tag_field),
23
+ unions='partial',
24
+ ))
@@ -0,0 +1,312 @@
1
+ """
2
+ https://inference-docs.cerebras.ai/resources/openai
3
+ """
4
+ import typing as ta
5
+
6
+ from omlish import dataclasses as dc
7
+ from omlish import lang
8
+ from omlish import marshal as msh
9
+
10
+
11
+ ##
12
+
13
+
14
+ def _set_class_marshal_options(cls):
15
+ msh.update_object_metadata(
16
+ cls,
17
+ field_defaults=msh.FieldMetadata(
18
+ options=msh.FieldOptions(
19
+ omit_if=lang.is_none,
20
+ ),
21
+ ),
22
+ )
23
+
24
+ return cls
25
+
26
+
27
+ ##
28
+
29
+
30
+ @dc.dataclass(frozen=True, kw_only=True)
31
+ @_set_class_marshal_options
32
+ class ChatCompletionRequest(lang.Final):
33
+ model: str
34
+
35
+ ##
36
+ # messages
37
+
38
+ @dc.dataclass(frozen=True, kw_only=True)
39
+ class Message(lang.Sealed, lang.Abstract):
40
+ pass
41
+
42
+ @dc.dataclass(frozen=True, kw_only=True)
43
+ @_set_class_marshal_options
44
+ class SystemMessage(Message, lang.Final):
45
+ content: str | ta.Sequence[str]
46
+ name: str | None = None
47
+ role: ta.Literal['system'] = 'system'
48
+
49
+ @dc.dataclass(frozen=True, kw_only=True)
50
+ @_set_class_marshal_options
51
+ class UserMessage(Message, lang.Final):
52
+ content: str | ta.Sequence[str]
53
+ name: str | None = None
54
+ role: ta.Literal['system'] = 'system'
55
+
56
+ @dc.dataclass(frozen=True, kw_only=True)
57
+ @_set_class_marshal_options
58
+ class AssistantMessage(Message, lang.Final):
59
+ content: str | ta.Sequence[str] | None = None
60
+ name: str | None = None
61
+ reasoning: str | ta.Iterable[ta.Mapping[str, ta.Any]] | None = None
62
+
63
+ @dc.dataclass(frozen=True, kw_only=True)
64
+ @_set_class_marshal_options
65
+ class ToolCall(lang.Final):
66
+ id: str
67
+
68
+ @dc.dataclass(frozen=True, kw_only=True)
69
+ @_set_class_marshal_options
70
+ class Function(lang.Final):
71
+ arguments: str
72
+ name: str
73
+
74
+ function: Function
75
+
76
+ type: ta.Literal['function'] = 'function'
77
+
78
+ tool_calls: ta.Iterable[ToolCall] | None = None
79
+
80
+ role: ta.Literal['assistant'] = 'assistant'
81
+
82
+ @dc.dataclass(frozen=True, kw_only=True)
83
+ @_set_class_marshal_options
84
+ class ToolMessage(Message, lang.Final):
85
+ content: str
86
+ tool_call_id: str
87
+ name: str | None = None
88
+ role: ta.Literal['tool'] = 'tool'
89
+
90
+ messages: ta.Iterable[Message] | None = None
91
+
92
+ ##
93
+ # tools
94
+
95
+ @dc.dataclass(frozen=True, kw_only=True)
96
+ @_set_class_marshal_options
97
+ class Tool(lang.Final):
98
+ @dc.dataclass(frozen=True, kw_only=True)
99
+ @_set_class_marshal_options
100
+ class Function(lang.Final):
101
+ name: str
102
+ description: str | None = None
103
+ parameters: ta.Mapping[str, ta.Any] | None = None
104
+ strict: bool | None = None
105
+
106
+ function: Function
107
+ type: ta.Literal['function'] = 'function'
108
+
109
+ tools: ta.Iterable[Tool] | None = None
110
+
111
+ tool_choice: ta.Literal['none', 'auto', 'required'] | None = None
112
+
113
+ parallel_tool_calls: bool | None = None # NOT SUPPORTED
114
+
115
+ ##
116
+ # response format
117
+
118
+ @dc.dataclass(frozen=True, kw_only=True)
119
+ class ResponseFormat(lang.Sealed, lang.Abstract):
120
+ pass
121
+
122
+ @dc.dataclass(frozen=True, kw_only=True)
123
+ @_set_class_marshal_options
124
+ class TextResponseFormat(ResponseFormat, lang.Final):
125
+ type: ta.Literal['text'] = 'text'
126
+
127
+ @dc.dataclass(frozen=True, kw_only=True)
128
+ @_set_class_marshal_options
129
+ class JsonObjectResponseFormat(ResponseFormat, lang.Final):
130
+ type: ta.Literal['json_object'] = 'json_object'
131
+
132
+ @dc.dataclass(frozen=True, kw_only=True)
133
+ @_set_class_marshal_options
134
+ class JsonSchemaResponseFormat(ResponseFormat, lang.Final):
135
+ @dc.dataclass(frozen=True, kw_only=True)
136
+ @_set_class_marshal_options
137
+ class JsonSchema(lang.Final):
138
+ name: str
139
+ description: str | None = None
140
+ schema: ta.Mapping[str, ta.Any] | None = None
141
+ strict: bool | None = None
142
+
143
+ json_schema: JsonSchema
144
+
145
+ type: ta.Literal['json_schema'] = 'json_schema'
146
+
147
+ response_format: ResponseFormat | None = None
148
+
149
+ ##
150
+ # streaming
151
+
152
+ stream: bool | None = None
153
+
154
+ @dc.dataclass(frozen=True, kw_only=True)
155
+ @_set_class_marshal_options
156
+ class StreamOptions(lang.Final):
157
+ include_usage: bool | None = None
158
+
159
+ stream_options: StreamOptions | None = None
160
+
161
+ ##
162
+ # generation misc
163
+
164
+ disable_reasoning: bool | None = None
165
+ reasoning_effort: ta.Literal['low', 'medium', 'high'] | None = None
166
+
167
+ max_completion_tokens: int | None = None
168
+ max_tokens: int | None = None
169
+ min_completion_tokens: int | None = None
170
+ min_tokens: int | None = None
171
+
172
+ temperature: float | None = None
173
+ seed: int | None = None
174
+
175
+ n: int | None = None
176
+ top_logprobs: int | None = None
177
+ top_p: float | None = None
178
+
179
+ frequency_penalty: float | None = None # NOT SUPPORTED
180
+ presence_penalty: float | None = None # NOT SUPPORTED
181
+
182
+ stop: str | ta.Sequence[str] | None = None
183
+
184
+ logit_bias: ta.Any | None = None # NOT SUPPORTED
185
+ logprobs: bool | None = None
186
+
187
+ prediction: ta.Mapping[str, ta.Any] | None = None
188
+
189
+ ##
190
+ # request misc
191
+
192
+ service_tier: ta.Literal['auto', 'default', 'flex', 'priority'] | None = None # NOT SUPPORTED
193
+
194
+
195
+ @dc.dataclass(frozen=True, kw_only=True)
196
+ @_set_class_marshal_options
197
+ class ExecutedTool(lang.Final):
198
+ arguments: str
199
+ index: int
200
+ type: str
201
+ browser_results: ta.Sequence[ta.Any] | None = None
202
+ code_results: ta.Sequence[ta.Any] | None = None
203
+ output: str | None = None
204
+ search_results: ta.Any | None = None
205
+
206
+
207
+ @dc.dataclass(frozen=True, kw_only=True)
208
+ @_set_class_marshal_options
209
+ class ChatCompletionResponse(lang.Final):
210
+ @dc.dataclass(frozen=True, kw_only=True)
211
+ @_set_class_marshal_options
212
+ class Choice(lang.Final):
213
+ finish_reason: ta.Literal['stop', 'length', 'tool_calls', 'function_call']
214
+ index: int
215
+ logprobs: ta.Mapping[str, ta.Any] | None = None
216
+
217
+ @dc.dataclass(frozen=True, kw_only=True)
218
+ @_set_class_marshal_options
219
+ class Message(lang.Final):
220
+ annotations: ta.Sequence[ta.Mapping[str, ta.Any]] | None = None
221
+ content: str | None = None
222
+
223
+ executed_tools: ta.Sequence[ExecutedTool] | None = None
224
+
225
+ reasoning: str | None = None
226
+ role: ta.Literal['assistant'] = 'assistant'
227
+
228
+ @dc.dataclass(frozen=True, kw_only=True)
229
+ @_set_class_marshal_options
230
+ class ToolCall(lang.Final):
231
+ id: str
232
+
233
+ @dc.dataclass(frozen=True, kw_only=True)
234
+ @_set_class_marshal_options
235
+ class Function(lang.Final):
236
+ arguments: str
237
+ name: str
238
+
239
+ function: Function
240
+ type: ta.Literal['function'] = 'function'
241
+
242
+ tool_calls: ta.Sequence[ToolCall] | None = None
243
+
244
+ message: Message
245
+
246
+ choices: ta.Sequence[Choice]
247
+ created: int
248
+ id: str
249
+ model: str
250
+ object: ta.Literal['chat.completion'] = 'chat.completion'
251
+ system_fingerprint: str
252
+ usage: ta.Mapping[str, ta.Any] | None = None
253
+ time_info: ta.Mapping[str, ta.Any] | None = None
254
+
255
+
256
+ @dc.dataclass(frozen=True, kw_only=True)
257
+ @_set_class_marshal_options
258
+ class ChatCompletionChunk(lang.Final):
259
+ id: str
260
+ object: ta.Literal['chat.completion.chunk'] = 'chat.completion.chunk'
261
+ created: int
262
+ model: str
263
+ system_fingerprint: str
264
+
265
+ @dc.dataclass(frozen=True, kw_only=True)
266
+ @_set_class_marshal_options
267
+ class Choice(lang.Final):
268
+ index: int
269
+
270
+ @dc.dataclass(frozen=True, kw_only=True)
271
+ @_set_class_marshal_options
272
+ class Delta(lang.Final):
273
+ role: str | None = None
274
+ content: str | None = None
275
+
276
+ channel: str | None = None
277
+ reasoning: str | None = None
278
+
279
+ @dc.dataclass(frozen=True, kw_only=True)
280
+ @_set_class_marshal_options
281
+ class ToolCall(lang.Final):
282
+ index: int
283
+ id: str | None = None
284
+
285
+ @dc.dataclass(frozen=True, kw_only=True)
286
+ @_set_class_marshal_options
287
+ class Function(lang.Final):
288
+ arguments: str | None = None
289
+ name: str | None = None
290
+
291
+ function: Function | None = None
292
+
293
+ type: ta.Literal['function'] = 'function'
294
+
295
+ tool_calls: ta.Sequence[ToolCall] | None = None
296
+
297
+ executed_tools: ta.Sequence[ExecutedTool] | None = None
298
+
299
+ delta: Delta
300
+ logprobs: ta.Mapping[str, ta.Any] | None = None
301
+ finish_reason: ta.Literal['stop', 'length', 'tool_calls', 'function_call'] | None = None
302
+
303
+ choices: ta.Sequence[Choice]
304
+
305
+ usage: ta.Mapping[str, ta.Any] | None = None
306
+ time_info: ta.Mapping[str, ta.Any] | None = None
307
+
308
+
309
+ ##
310
+
311
+
312
+ msh.register_global_module_import('._marshal', __package__)
@@ -1,3 +1,16 @@
1
+ from omlish import dataclasses as _dc # noqa
2
+
3
+
4
+ _dc.init_package(
5
+ globals(),
6
+ codegen=True,
7
+ )
8
+
9
+
10
+ ##
11
+
12
+
1
13
  from omlish import marshal as _msh # noqa
2
14
 
15
+
3
16
  _msh.register_global_module_import('._marshal', __package__)