ommlds 0.0.0.dev466__py3-none-any.whl → 0.0.0.dev512__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 (367) hide show
  1. ommlds/.omlish-manifests.json +404 -31
  2. ommlds/README.md +11 -0
  3. ommlds/__about__.py +21 -12
  4. ommlds/_hacks/__init__.py +4 -0
  5. ommlds/_hacks/funcs.py +110 -0
  6. ommlds/_hacks/names.py +158 -0
  7. ommlds/_hacks/params.py +73 -0
  8. ommlds/_hacks/patches.py +0 -3
  9. ommlds/backends/anthropic/protocol/__init__.py +13 -1
  10. ommlds/backends/anthropic/protocol/_dataclasses.py +1625 -0
  11. ommlds/backends/anthropic/protocol/sse/events.py +2 -0
  12. ommlds/backends/anthropic/protocol/types.py +5 -7
  13. ommlds/backends/cerebras/__init__.py +7 -0
  14. ommlds/backends/cerebras/_dataclasses.py +4254 -0
  15. ommlds/backends/cerebras/_marshal.py +24 -0
  16. ommlds/backends/cerebras/clients.py +9 -0
  17. ommlds/backends/cerebras/protocol.py +310 -0
  18. ommlds/backends/google/protocol/__init__.py +13 -0
  19. ommlds/backends/google/protocol/_dataclasses.py +5997 -0
  20. ommlds/backends/google/protocol/types.py +6 -8
  21. ommlds/backends/groq/__init__.py +7 -0
  22. ommlds/backends/groq/_dataclasses.py +3901 -0
  23. ommlds/backends/groq/_marshal.py +23 -0
  24. ommlds/backends/groq/clients.py +9 -0
  25. ommlds/backends/groq/protocol.py +247 -0
  26. ommlds/{huggingface.py → backends/huggingface/cache.py} +1 -6
  27. ommlds/backends/huggingface/cli.py +208 -0
  28. ommlds/backends/llamacpp/logging.py +4 -1
  29. ommlds/backends/mlx/caching.py +7 -3
  30. ommlds/backends/mlx/cli.py +10 -7
  31. ommlds/backends/mlx/generation.py +18 -16
  32. ommlds/backends/mlx/limits.py +10 -6
  33. ommlds/backends/mlx/loading.py +7 -4
  34. ommlds/backends/ollama/__init__.py +7 -0
  35. ommlds/backends/ollama/_dataclasses.py +3940 -0
  36. ommlds/backends/ollama/cli.py +36 -0
  37. ommlds/backends/ollama/protocol.py +201 -0
  38. ommlds/backends/openai/protocol/__init__.py +15 -1
  39. ommlds/backends/openai/protocol/_common.py +3 -5
  40. ommlds/backends/openai/protocol/_dataclasses.py +7708 -0
  41. ommlds/backends/tavily/__init__.py +7 -0
  42. ommlds/backends/tavily/_dataclasses.py +1734 -0
  43. ommlds/backends/tavily/protocol.py +299 -0
  44. ommlds/backends/tinygrad/models/llama3/__init__.py +22 -14
  45. ommlds/backends/torch/backends.py +1 -1
  46. ommlds/backends/transformers/__init__.py +14 -0
  47. ommlds/backends/transformers/filecache.py +109 -0
  48. ommlds/backends/transformers/streamers.py +73 -0
  49. ommlds/cli/__init__.py +7 -0
  50. ommlds/cli/_dataclasses.py +3835 -0
  51. ommlds/cli/asyncs.py +30 -0
  52. ommlds/cli/backends/catalog.py +88 -0
  53. ommlds/cli/backends/configs.py +9 -0
  54. ommlds/cli/backends/inject.py +100 -42
  55. ommlds/cli/{sessions/chat/backends → backends}/injection.py +1 -1
  56. ommlds/cli/backends/meta.py +82 -0
  57. ommlds/cli/{sessions/chat/backends → backends}/types.py +11 -1
  58. ommlds/cli/{sessions/chat/content → content}/messages.py +2 -2
  59. ommlds/cli/{sessions/chat/content → content}/strings.py +1 -1
  60. ommlds/cli/inject.py +17 -8
  61. ommlds/cli/inputs/asyncs.py +32 -0
  62. ommlds/cli/inputs/sync.py +75 -0
  63. ommlds/cli/main.py +346 -114
  64. ommlds/cli/rendering/configs.py +9 -0
  65. ommlds/cli/{sessions/chat/rendering → rendering}/inject.py +4 -5
  66. ommlds/cli/{sessions/chat/rendering → rendering}/markdown.py +1 -1
  67. ommlds/cli/{sessions/chat/rendering → rendering}/raw.py +1 -1
  68. ommlds/cli/{sessions/chat/rendering → rendering}/types.py +7 -1
  69. ommlds/cli/secrets.py +22 -0
  70. ommlds/cli/sessions/base.py +1 -10
  71. ommlds/cli/sessions/chat/configs.py +13 -30
  72. ommlds/cli/sessions/chat/drivers/ai/configs.py +13 -0
  73. ommlds/cli/sessions/chat/drivers/ai/events.py +57 -0
  74. ommlds/cli/sessions/chat/{chat → drivers}/ai/inject.py +15 -12
  75. ommlds/cli/sessions/chat/{chat → drivers}/ai/rendering.py +8 -8
  76. ommlds/cli/sessions/chat/{chat → drivers}/ai/services.py +5 -5
  77. ommlds/cli/sessions/chat/{chat → drivers}/ai/tools.py +4 -8
  78. ommlds/cli/sessions/chat/{chat → drivers}/ai/types.py +10 -1
  79. ommlds/cli/sessions/chat/drivers/configs.py +25 -0
  80. ommlds/cli/sessions/chat/drivers/events/inject.py +27 -0
  81. ommlds/cli/sessions/chat/drivers/events/injection.py +14 -0
  82. ommlds/cli/sessions/chat/drivers/events/manager.py +16 -0
  83. ommlds/cli/sessions/chat/drivers/events/types.py +44 -0
  84. ommlds/cli/sessions/chat/drivers/impl.py +50 -0
  85. ommlds/cli/sessions/chat/drivers/inject.py +70 -0
  86. ommlds/cli/sessions/chat/drivers/state/configs.py +13 -0
  87. ommlds/cli/sessions/chat/drivers/state/ids.py +25 -0
  88. ommlds/cli/sessions/chat/drivers/state/inject.py +83 -0
  89. ommlds/cli/sessions/chat/{chat → drivers}/state/inmemory.py +1 -6
  90. ommlds/cli/sessions/chat/{chat → drivers}/state/storage.py +18 -12
  91. ommlds/cli/sessions/chat/{chat → drivers}/state/types.py +11 -6
  92. ommlds/cli/sessions/chat/drivers/tools/configs.py +22 -0
  93. ommlds/cli/sessions/chat/drivers/tools/confirmation.py +44 -0
  94. ommlds/cli/sessions/chat/drivers/tools/errorhandling.py +39 -0
  95. ommlds/cli/sessions/chat/{tools → drivers/tools}/execution.py +3 -4
  96. ommlds/cli/sessions/chat/drivers/tools/fs/__init__.py +0 -0
  97. ommlds/cli/sessions/chat/drivers/tools/fs/configs.py +12 -0
  98. ommlds/cli/sessions/chat/drivers/tools/fs/inject.py +35 -0
  99. ommlds/cli/sessions/chat/drivers/tools/inject.py +83 -0
  100. ommlds/cli/sessions/chat/{tools → drivers/tools}/injection.py +20 -5
  101. ommlds/cli/sessions/chat/{tools → drivers/tools}/rendering.py +3 -3
  102. ommlds/cli/sessions/chat/drivers/tools/todo/__init__.py +0 -0
  103. ommlds/cli/sessions/chat/drivers/tools/todo/configs.py +12 -0
  104. ommlds/cli/sessions/chat/drivers/tools/todo/inject.py +31 -0
  105. ommlds/cli/sessions/chat/drivers/tools/weather/__init__.py +0 -0
  106. ommlds/cli/sessions/chat/drivers/tools/weather/configs.py +12 -0
  107. ommlds/cli/sessions/chat/drivers/tools/weather/inject.py +22 -0
  108. ommlds/cli/sessions/chat/{tools/weather.py → drivers/tools/weather/tools.py} +1 -1
  109. ommlds/cli/sessions/chat/drivers/types.py +31 -0
  110. ommlds/cli/sessions/chat/drivers/user/__init__.py +0 -0
  111. ommlds/cli/sessions/chat/drivers/user/configs.py +14 -0
  112. ommlds/cli/sessions/chat/drivers/user/inject.py +41 -0
  113. ommlds/cli/sessions/chat/facades/__init__.py +0 -0
  114. ommlds/cli/sessions/chat/facades/commands/__init__.py +0 -0
  115. ommlds/cli/sessions/chat/facades/commands/base.py +83 -0
  116. ommlds/cli/sessions/chat/facades/commands/configs.py +9 -0
  117. ommlds/cli/sessions/chat/facades/commands/inject.py +41 -0
  118. ommlds/cli/sessions/chat/facades/commands/injection.py +15 -0
  119. ommlds/cli/sessions/chat/facades/commands/manager.py +59 -0
  120. ommlds/cli/sessions/chat/facades/commands/simple.py +34 -0
  121. ommlds/cli/sessions/chat/facades/commands/types.py +13 -0
  122. ommlds/cli/sessions/chat/facades/configs.py +11 -0
  123. ommlds/cli/sessions/chat/facades/facade.py +26 -0
  124. ommlds/cli/sessions/chat/facades/inject.py +35 -0
  125. ommlds/cli/sessions/chat/facades/ui.py +34 -0
  126. ommlds/cli/sessions/chat/inject.py +10 -49
  127. ommlds/cli/sessions/chat/interfaces/__init__.py +0 -0
  128. ommlds/cli/sessions/chat/interfaces/bare/__init__.py +0 -0
  129. ommlds/cli/sessions/chat/interfaces/bare/configs.py +15 -0
  130. ommlds/cli/sessions/chat/interfaces/bare/inject.py +69 -0
  131. ommlds/cli/sessions/chat/interfaces/bare/interactive.py +49 -0
  132. ommlds/cli/sessions/chat/interfaces/bare/oneshot.py +21 -0
  133. ommlds/cli/sessions/chat/{tools/confirmation.py → interfaces/bare/tools.py} +3 -22
  134. ommlds/cli/sessions/chat/interfaces/base.py +13 -0
  135. ommlds/cli/sessions/chat/interfaces/configs.py +11 -0
  136. ommlds/cli/sessions/chat/interfaces/inject.py +29 -0
  137. ommlds/cli/sessions/chat/interfaces/textual/__init__.py +0 -0
  138. ommlds/cli/sessions/chat/interfaces/textual/app.py +429 -0
  139. ommlds/cli/sessions/chat/interfaces/textual/configs.py +11 -0
  140. ommlds/cli/sessions/chat/interfaces/textual/facades.py +19 -0
  141. ommlds/cli/sessions/chat/interfaces/textual/inject.py +111 -0
  142. ommlds/cli/sessions/chat/interfaces/textual/inputhistory.py +174 -0
  143. ommlds/cli/sessions/chat/interfaces/textual/interface.py +24 -0
  144. ommlds/cli/sessions/chat/interfaces/textual/styles/__init__.py +29 -0
  145. ommlds/cli/sessions/chat/interfaces/textual/styles/input.tcss +53 -0
  146. ommlds/cli/sessions/chat/interfaces/textual/styles/markdown.tcss +7 -0
  147. ommlds/cli/sessions/chat/interfaces/textual/styles/messages.tcss +167 -0
  148. ommlds/cli/sessions/chat/interfaces/textual/tools.py +38 -0
  149. ommlds/cli/sessions/chat/interfaces/textual/widgets/__init__.py +0 -0
  150. ommlds/cli/sessions/chat/interfaces/textual/widgets/input.py +70 -0
  151. ommlds/cli/sessions/chat/interfaces/textual/widgets/messages.py +207 -0
  152. ommlds/cli/sessions/chat/session.py +8 -13
  153. ommlds/cli/sessions/completion/configs.py +5 -6
  154. ommlds/cli/sessions/completion/inject.py +15 -2
  155. ommlds/cli/sessions/completion/session.py +10 -18
  156. ommlds/cli/sessions/configs.py +10 -0
  157. ommlds/cli/sessions/embedding/configs.py +5 -6
  158. ommlds/cli/sessions/embedding/inject.py +15 -2
  159. ommlds/cli/sessions/embedding/session.py +10 -18
  160. ommlds/cli/sessions/inject.py +15 -15
  161. ommlds/cli/state/storage.py +8 -2
  162. ommlds/minichain/__init__.py +217 -60
  163. ommlds/minichain/_dataclasses.py +20640 -0
  164. ommlds/minichain/_typedvalues.py +15 -8
  165. ommlds/minichain/backends/catalogs/base.py +20 -1
  166. ommlds/minichain/backends/catalogs/simple.py +2 -2
  167. ommlds/minichain/backends/catalogs/strings.py +13 -10
  168. ommlds/minichain/backends/impls/anthropic/chat.py +28 -5
  169. ommlds/minichain/backends/impls/anthropic/names.py +3 -3
  170. ommlds/minichain/backends/impls/anthropic/protocol.py +2 -2
  171. ommlds/minichain/backends/impls/anthropic/stream.py +23 -18
  172. ommlds/minichain/backends/impls/cerebras/__init__.py +0 -0
  173. ommlds/minichain/backends/impls/cerebras/chat.py +82 -0
  174. ommlds/minichain/backends/impls/cerebras/names.py +45 -0
  175. ommlds/minichain/backends/impls/cerebras/protocol.py +143 -0
  176. ommlds/minichain/backends/impls/cerebras/stream.py +114 -0
  177. ommlds/minichain/backends/impls/duckduckgo/search.py +5 -1
  178. ommlds/minichain/backends/impls/dummy/__init__.py +0 -0
  179. ommlds/minichain/backends/impls/dummy/chat.py +69 -0
  180. ommlds/minichain/backends/impls/google/chat.py +20 -84
  181. ommlds/minichain/backends/impls/google/names.py +6 -0
  182. ommlds/minichain/backends/impls/google/protocol.py +105 -0
  183. ommlds/minichain/backends/impls/google/search.py +10 -5
  184. ommlds/minichain/backends/impls/google/stream.py +64 -142
  185. ommlds/minichain/backends/impls/google/tools.py +2 -2
  186. ommlds/minichain/backends/impls/groq/__init__.py +0 -0
  187. ommlds/minichain/backends/impls/groq/chat.py +77 -0
  188. ommlds/minichain/backends/impls/groq/names.py +48 -0
  189. ommlds/minichain/backends/impls/groq/protocol.py +143 -0
  190. ommlds/minichain/backends/impls/groq/stream.py +114 -0
  191. ommlds/minichain/backends/impls/huggingface/repos.py +1 -5
  192. ommlds/minichain/backends/impls/llamacpp/chat.py +15 -3
  193. ommlds/minichain/backends/impls/llamacpp/completion.py +7 -3
  194. ommlds/minichain/backends/impls/llamacpp/stream.py +38 -19
  195. ommlds/minichain/backends/impls/mistral.py +9 -2
  196. ommlds/minichain/backends/impls/mlx/chat.py +100 -23
  197. ommlds/minichain/backends/impls/ollama/__init__.py +0 -0
  198. ommlds/minichain/backends/impls/ollama/chat.py +193 -0
  199. ommlds/minichain/backends/impls/ollama/protocol.py +144 -0
  200. ommlds/minichain/backends/impls/openai/chat.py +14 -7
  201. ommlds/minichain/backends/impls/openai/completion.py +9 -2
  202. ommlds/minichain/backends/impls/openai/embedding.py +9 -2
  203. ommlds/minichain/backends/impls/openai/format.py +117 -115
  204. ommlds/minichain/backends/impls/openai/names.py +33 -5
  205. ommlds/minichain/backends/impls/openai/stream.py +61 -70
  206. ommlds/minichain/backends/impls/sentencepiece/tokens.py +9 -6
  207. ommlds/minichain/backends/impls/tavily.py +66 -0
  208. ommlds/minichain/backends/impls/tinygrad/chat.py +17 -14
  209. ommlds/minichain/backends/impls/tokenizers/tokens.py +9 -6
  210. ommlds/minichain/backends/impls/transformers/sentence.py +5 -2
  211. ommlds/minichain/backends/impls/transformers/tokens.py +9 -6
  212. ommlds/minichain/backends/impls/transformers/transformers.py +139 -20
  213. ommlds/minichain/backends/strings/parsing.py +2 -2
  214. ommlds/minichain/backends/strings/resolving.py +7 -2
  215. ommlds/minichain/chat/choices/stream/__init__.py +0 -0
  216. ommlds/minichain/chat/{stream → choices/stream}/adapters.py +7 -7
  217. ommlds/minichain/chat/choices/stream/joining.py +31 -0
  218. ommlds/minichain/chat/choices/stream/services.py +45 -0
  219. ommlds/minichain/chat/choices/stream/types.py +43 -0
  220. ommlds/minichain/chat/content.py +42 -0
  221. ommlds/minichain/chat/messages.py +46 -42
  222. ommlds/minichain/chat/stream/_marshal.py +4 -4
  223. ommlds/minichain/chat/stream/joining.py +56 -43
  224. ommlds/minichain/chat/stream/services.py +15 -15
  225. ommlds/minichain/chat/stream/types.py +17 -24
  226. ommlds/minichain/chat/templating.py +3 -3
  227. ommlds/minichain/content/__init__.py +20 -3
  228. ommlds/minichain/content/_marshal.py +181 -55
  229. ommlds/minichain/content/code.py +26 -0
  230. ommlds/minichain/content/composite.py +28 -0
  231. ommlds/minichain/content/content.py +27 -0
  232. ommlds/minichain/content/dynamic.py +12 -0
  233. ommlds/minichain/content/emphasis.py +27 -0
  234. ommlds/minichain/content/images.py +2 -2
  235. ommlds/minichain/content/json.py +2 -2
  236. ommlds/minichain/content/link.py +13 -0
  237. ommlds/minichain/content/markdown.py +12 -0
  238. ommlds/minichain/content/metadata.py +10 -0
  239. ommlds/minichain/content/namespaces.py +8 -0
  240. ommlds/minichain/content/placeholders.py +10 -9
  241. ommlds/minichain/content/quote.py +26 -0
  242. ommlds/minichain/content/raw.py +49 -0
  243. ommlds/minichain/content/recursive.py +12 -0
  244. ommlds/minichain/content/resources.py +22 -0
  245. ommlds/minichain/content/section.py +26 -0
  246. ommlds/minichain/content/sequence.py +17 -3
  247. ommlds/minichain/content/standard.py +32 -0
  248. ommlds/minichain/content/tag.py +28 -0
  249. ommlds/minichain/content/templates.py +13 -0
  250. ommlds/minichain/content/text.py +2 -2
  251. ommlds/minichain/content/transform/__init__.py +0 -0
  252. ommlds/minichain/content/transform/json.py +55 -0
  253. ommlds/minichain/content/transform/markdown.py +8 -0
  254. ommlds/minichain/content/transform/materialize.py +59 -0
  255. ommlds/minichain/content/transform/metadata.py +16 -0
  256. ommlds/minichain/content/transform/namespaces.py +20 -0
  257. ommlds/minichain/content/transform/placeholders.py +60 -0
  258. ommlds/minichain/content/{prepare.py → transform/prepare.py} +10 -15
  259. ommlds/minichain/content/transform/recursive.py +54 -0
  260. ommlds/minichain/content/transform/resources.py +58 -0
  261. ommlds/minichain/content/transform/standard.py +43 -0
  262. ommlds/minichain/content/{transforms → transform}/stringify.py +1 -7
  263. ommlds/minichain/content/transform/strings.py +33 -0
  264. ommlds/minichain/content/transform/templates.py +25 -0
  265. ommlds/minichain/content/transform/types.py +18 -0
  266. ommlds/minichain/content/transform/visitors.py +38 -0
  267. ommlds/minichain/content/visitors.py +218 -0
  268. ommlds/minichain/http/__init__.py +0 -0
  269. ommlds/minichain/http/stream.py +195 -0
  270. ommlds/minichain/lib/fs/tools/read.py +1 -1
  271. ommlds/minichain/lib/fs/tools/recursivels/rendering.py +1 -1
  272. ommlds/minichain/lib/fs/tools/recursivels/running.py +1 -1
  273. ommlds/minichain/lib/todo/tools/write.py +2 -1
  274. ommlds/minichain/lib/todo/types.py +1 -1
  275. ommlds/minichain/llms/types.py +4 -0
  276. ommlds/minichain/metadata.py +56 -2
  277. ommlds/minichain/models/configs.py +2 -2
  278. ommlds/minichain/models/names.py +2 -0
  279. ommlds/minichain/registries/globals.py +18 -4
  280. ommlds/minichain/resources.py +49 -3
  281. ommlds/minichain/search.py +1 -1
  282. ommlds/minichain/services/README.md +154 -0
  283. ommlds/minichain/services/__init__.py +6 -2
  284. ommlds/minichain/services/_marshal.py +46 -10
  285. ommlds/minichain/services/_origclasses.py +11 -0
  286. ommlds/minichain/services/_typedvalues.py +8 -3
  287. ommlds/minichain/services/requests.py +73 -3
  288. ommlds/minichain/services/responses.py +73 -3
  289. ommlds/minichain/services/services.py +9 -0
  290. ommlds/minichain/standard.py +8 -0
  291. ommlds/minichain/stream/services.py +43 -17
  292. ommlds/minichain/text/applypatch.py +2 -1
  293. ommlds/minichain/text/toolparsing/llamacpp/types.py +1 -1
  294. ommlds/minichain/tokens/specials.py +1 -1
  295. ommlds/minichain/tools/execution/catalog.py +2 -2
  296. ommlds/minichain/tools/execution/errorhandling.py +36 -0
  297. ommlds/minichain/tools/execution/errors.py +2 -2
  298. ommlds/minichain/tools/execution/executors.py +1 -1
  299. ommlds/minichain/tools/fns.py +1 -1
  300. ommlds/minichain/tools/jsonschema.py +2 -2
  301. ommlds/minichain/tools/reflect.py +11 -7
  302. ommlds/minichain/tools/types.py +16 -19
  303. ommlds/minichain/vectors/_marshal.py +1 -1
  304. ommlds/minichain/vectors/embeddings.py +1 -1
  305. ommlds/minichain/wrappers/__init__.py +7 -0
  306. ommlds/minichain/wrappers/firstinwins.py +144 -0
  307. ommlds/minichain/wrappers/instrument.py +146 -0
  308. ommlds/minichain/wrappers/retry.py +168 -0
  309. ommlds/minichain/wrappers/services.py +98 -0
  310. ommlds/minichain/wrappers/stream.py +57 -0
  311. ommlds/nanochat/LICENSE +21 -0
  312. ommlds/nanochat/__init__.py +0 -0
  313. ommlds/nanochat/rustbpe/LICENSE +21 -0
  314. ommlds/nanochat/rustbpe/README.md +10 -0
  315. ommlds/nanochat/tokenizers.py +440 -0
  316. ommlds/specs/__init__.py +0 -0
  317. ommlds/specs/mcp/__init__.py +0 -0
  318. ommlds/specs/mcp/_marshal.py +23 -0
  319. ommlds/specs/mcp/clients.py +146 -0
  320. ommlds/specs/mcp/protocol.py +369 -0
  321. ommlds/tools/git.py +84 -64
  322. ommlds/tools/ocr.py +1 -1
  323. ommlds/wiki/analyze.py +2 -2
  324. ommlds/wiki/models.py +4 -4
  325. ommlds/wiki/text/mfh.py +9 -9
  326. ommlds/wiki/utils/xml.py +5 -5
  327. {ommlds-0.0.0.dev466.dist-info → ommlds-0.0.0.dev512.dist-info}/METADATA +28 -21
  328. ommlds-0.0.0.dev512.dist-info/RECORD +534 -0
  329. {ommlds-0.0.0.dev466.dist-info → ommlds-0.0.0.dev512.dist-info}/WHEEL +1 -1
  330. ommlds/cli/backends/standard.py +0 -20
  331. ommlds/cli/sessions/chat/backends/catalog.py +0 -56
  332. ommlds/cli/sessions/chat/backends/inject.py +0 -37
  333. ommlds/cli/sessions/chat/chat/state/inject.py +0 -40
  334. ommlds/cli/sessions/chat/chat/user/inject.py +0 -61
  335. ommlds/cli/sessions/chat/chat/user/interactive.py +0 -29
  336. ommlds/cli/sessions/chat/chat/user/oneshot.py +0 -25
  337. ommlds/cli/sessions/chat/chat/user/types.py +0 -15
  338. ommlds/cli/sessions/chat/driver.py +0 -43
  339. ommlds/cli/sessions/chat/tools/inject.py +0 -145
  340. ommlds/minichain/backends/impls/openai/format2.py +0 -210
  341. ommlds/minichain/content/materialize.py +0 -196
  342. ommlds/minichain/content/simple.py +0 -47
  343. ommlds/minichain/content/transforms/base.py +0 -46
  344. ommlds/minichain/content/transforms/interleave.py +0 -70
  345. ommlds/minichain/content/transforms/squeeze.py +0 -72
  346. ommlds/minichain/content/transforms/strings.py +0 -24
  347. ommlds/minichain/content/types.py +0 -43
  348. ommlds/minichain/stream/wrap.py +0 -62
  349. ommlds-0.0.0.dev466.dist-info/RECORD +0 -376
  350. /ommlds/{cli/sessions/chat/backends → backends/huggingface}/__init__.py +0 -0
  351. /ommlds/cli/{sessions/chat/chat → content}/__init__.py +0 -0
  352. /ommlds/cli/{sessions/chat/chat/ai → inputs}/__init__.py +0 -0
  353. /ommlds/cli/{sessions/chat/chat/state → rendering}/__init__.py +0 -0
  354. /ommlds/cli/sessions/chat/{chat/user → drivers}/__init__.py +0 -0
  355. /ommlds/cli/sessions/chat/{content → drivers/ai}/__init__.py +0 -0
  356. /ommlds/cli/sessions/chat/{chat → drivers}/ai/injection.py +0 -0
  357. /ommlds/cli/sessions/chat/{phases → drivers/events}/__init__.py +0 -0
  358. /ommlds/cli/sessions/chat/{rendering → drivers/phases}/__init__.py +0 -0
  359. /ommlds/cli/sessions/chat/{phases → drivers/phases}/inject.py +0 -0
  360. /ommlds/cli/sessions/chat/{phases → drivers/phases}/injection.py +0 -0
  361. /ommlds/cli/sessions/chat/{phases → drivers/phases}/manager.py +0 -0
  362. /ommlds/cli/sessions/chat/{phases → drivers/phases}/types.py +0 -0
  363. /ommlds/cli/sessions/chat/{tools → drivers/state}/__init__.py +0 -0
  364. /ommlds/{minichain/content/transforms → cli/sessions/chat/drivers/tools}/__init__.py +0 -0
  365. {ommlds-0.0.0.dev466.dist-info → ommlds-0.0.0.dev512.dist-info}/entry_points.txt +0 -0
  366. {ommlds-0.0.0.dev466.dist-info → ommlds-0.0.0.dev512.dist-info}/licenses/LICENSE +0 -0
  367. {ommlds-0.0.0.dev466.dist-info → ommlds-0.0.0.dev512.dist-info}/top_level.txt +0 -0
@@ -8,45 +8,45 @@ from ..messages import AiChat
8
8
  from ..messages import AiMessage
9
9
  from ..messages import AnyAiMessage
10
10
  from ..messages import ToolUseMessage
11
- from .types import AiChoiceDelta
12
- from .types import AiChoiceDeltas
13
- from .types import ContentAiChoiceDelta
14
- from .types import PartialToolUseAiChoiceDelta
15
- from .types import ToolUseAiChoiceDelta
11
+ from .types import AiDelta
12
+ from .types import AiDeltas
13
+ from .types import ContentAiDelta
14
+ from .types import PartialToolUseAiDelta
15
+ from .types import ToolUseAiDelta
16
16
 
17
17
 
18
18
  ##
19
19
 
20
20
 
21
- class AiChoiceDeltaJoiner:
21
+ class AiDeltaJoiner:
22
22
  def __init__(self) -> None:
23
23
  super().__init__()
24
24
 
25
- self._seq = 0
26
- self._channels: list[AiChoiceDeltaJoiner._Channel] = []
25
+ self._all: list[AiDelta] = []
26
+ self._queue: list[AiDelta] = []
27
+ self._out: list[AnyAiMessage] = []
27
28
 
28
- class _Channel(ta.NamedTuple):
29
- deltas: list[AiChoiceDelta]
30
- messages: list[AnyAiMessage]
31
-
32
- def _build_joined(self, deltas: ta.Sequence[AiChoiceDelta]) -> AnyAiMessage:
29
+ def _build_joined(self, deltas: ta.Sequence[AiDelta]) -> AnyAiMessage:
33
30
  dty = check.single(set(map(type, check.not_empty(deltas))))
34
31
 
35
- if dty is ContentAiChoiceDelta:
36
- cds = ta.cast(ta.Sequence[ContentAiChoiceDelta], deltas)
32
+ if dty is ContentAiDelta:
33
+ cds = ta.cast(ta.Sequence[ContentAiDelta], deltas)
37
34
  return AiMessage(''.join(check.isinstance(cd.c, str) for cd in cds))
38
35
 
39
- elif dty is ToolUseAiChoiceDelta:
36
+ elif dty is ToolUseAiDelta:
40
37
  raise TypeError(dty)
41
38
 
42
- elif dty is PartialToolUseAiChoiceDelta:
43
- tds = ta.cast(ta.Sequence[PartialToolUseAiChoiceDelta], deltas)
44
- for td in ta.cast(ta.Sequence[PartialToolUseAiChoiceDelta], deltas)[1:]:
39
+ elif dty is PartialToolUseAiDelta:
40
+ tds = ta.cast(ta.Sequence[PartialToolUseAiDelta], deltas)
41
+ for td in ta.cast(ta.Sequence[PartialToolUseAiDelta], deltas)[1:]:
45
42
  check.none(td.id)
46
43
  check.none(td.name)
47
44
 
48
45
  ra = ''.join(filter(None, (td.raw_args for td in tds)))
49
46
 
47
+ if not ra:
48
+ ra = '{}'
49
+
50
50
  return ToolUseMessage(ToolUse(
51
51
  id=tds[0].id,
52
52
  name=check.non_empty_str(tds[0].name),
@@ -57,40 +57,53 @@ class AiChoiceDeltaJoiner:
57
57
  else:
58
58
  raise TypeError(dty)
59
59
 
60
- def _join_one(self, chan: _Channel) -> None:
61
- if not chan.deltas:
60
+ def _join(self) -> None:
61
+ if not self._queue:
62
62
  return
63
63
 
64
- chan.messages.append(self._build_joined(chan.deltas))
65
- chan.deltas.clear()
64
+ self._out.append(self._build_joined(self._queue))
65
+ self._queue.clear()
66
+
67
+ def _should_join(self, *, new: AiDelta | None = None) -> bool:
68
+ if not self._queue:
69
+ return False
70
+
71
+ if new is not None and type(self._queue[0]) is not type(new):
72
+ return True
73
+
74
+ if (
75
+ isinstance(d0 := self._queue[0], PartialToolUseAiDelta) and
76
+ isinstance(new, PartialToolUseAiDelta) and
77
+ d0.id is not None and
78
+ new.id is not None and
79
+ d0.id != new.id
80
+ ):
81
+ return True
66
82
 
67
- def _add_to(self, chan: _Channel, d: AiChoiceDelta) -> None:
68
- if chan.deltas and type(chan.deltas[0]) is not type(d):
69
- self._join_one(chan)
83
+ return False
70
84
 
71
- if isinstance(d, ToolUseAiChoiceDelta):
72
- chan.messages.append(ToolUseMessage(ToolUse(
85
+ def _add_one(self, d: AiDelta) -> None:
86
+ if self._should_join(new=d):
87
+ self._join()
88
+
89
+ self._all.append(d)
90
+
91
+ if isinstance(d, ToolUseAiDelta):
92
+ self._out.append(ToolUseMessage(ToolUse(
73
93
  id=d.id,
74
94
  name=check.not_none(d.name),
75
95
  args=d.args or {},
96
+ raw_args=json.dumps_compact(d.args),
76
97
  )))
77
98
 
78
99
  else:
79
- chan.deltas.append(d)
80
-
81
- def add(self, choices: ta.Sequence[AiChoiceDeltas]) -> None:
82
- if not self._seq:
83
- check.empty(self._channels)
84
- self._channels.extend(self._Channel([], []) for _ in range(len(choices)))
85
-
86
- for chan, c in zip(self._channels, choices, strict=True):
87
- for d in c.deltas:
88
- self._add_to(chan, d)
100
+ self._queue.append(d)
89
101
 
90
- self._seq += 1
102
+ def add(self, deltas: AiDeltas) -> None:
103
+ for d in deltas:
104
+ self._add_one(d)
91
105
 
92
- def build(self) -> list[AiChat]:
93
- for chan in self._channels:
94
- self._join_one(chan)
106
+ def build(self) -> AiChat:
107
+ self._join()
95
108
 
96
- return [list(chan.messages) for chan in self._channels]
109
+ return list(self._out)
@@ -7,39 +7,39 @@ from ...registries.globals import register_type
7
7
  from ...services import Request
8
8
  from ...services import Service
9
9
  from ...stream.services import StreamResponse
10
- from ..choices.types import ChatChoicesOutputs
11
10
  from ..messages import Chat
12
- from .types import AiChoicesDeltas
13
- from .types import ChatChoicesStreamOptions
14
- from .types import ChatChoicesStreamOutputs
11
+ from ..types import ChatOutputs
12
+ from .types import AiDeltas
13
+ from .types import ChatStreamOptions
14
+ from .types import ChatStreamOutputs
15
15
 
16
16
 
17
17
  ##
18
18
 
19
19
 
20
- ChatChoicesStreamRequest: ta.TypeAlias = Request[Chat, ChatChoicesStreamOptions]
20
+ ChatStreamRequest: ta.TypeAlias = Request[Chat, ChatStreamOptions]
21
21
 
22
- ChatChoicesStreamResponse: ta.TypeAlias = StreamResponse[
23
- AiChoicesDeltas,
24
- ChatChoicesOutputs,
25
- ChatChoicesStreamOutputs,
22
+ ChatStreamResponse: ta.TypeAlias = StreamResponse[
23
+ AiDeltas,
24
+ ChatOutputs,
25
+ ChatStreamOutputs,
26
26
  ]
27
27
 
28
28
  # @omlish-manifest $.minichain.registries.manifests.RegistryTypeManifest
29
- ChatChoicesStreamService: ta.TypeAlias = Service[ChatChoicesStreamRequest, ChatChoicesStreamResponse]
29
+ ChatStreamService: ta.TypeAlias = Service[ChatStreamRequest, ChatStreamResponse]
30
30
 
31
- register_type(ChatChoicesStreamService, module=__name__)
31
+ register_type(ChatStreamService, module=__name__)
32
32
 
33
33
 
34
- def static_check_is_chat_choices_stream_service[T: ChatChoicesStreamService](t: type[T]) -> type[T]:
34
+ def static_check_is_chat_stream_service[T: ChatStreamService](t: type[T]) -> type[T]:
35
35
  return t
36
36
 
37
37
 
38
38
  ##
39
39
 
40
40
 
41
- @static_check_is_chat_choices_stream_service
42
- class AbstractChatChoicesStreamService(lang.Abstract):
41
+ @static_check_is_chat_stream_service
42
+ class AbstractChatStreamService(lang.Abstract):
43
43
  @abc.abstractmethod
44
- def invoke(self, request: ChatChoicesStreamRequest) -> ta.Awaitable[ChatChoicesStreamResponse]:
44
+ def invoke(self, request: ChatStreamRequest) -> ta.Awaitable[ChatStreamResponse]:
45
45
  raise NotImplementedError
@@ -4,11 +4,11 @@ from omlish import dataclasses as dc
4
4
  from omlish import lang
5
5
  from omlish import marshal as msh
6
6
 
7
- from ...content.types import Content
7
+ from ...content.content import Content
8
8
  from ...stream.services import StreamOptions
9
9
  from ...types import Option
10
10
  from ...types import Output
11
- from ..choices.types import ChatChoicesOptions
11
+ from ..types import ChatOptions
12
12
 
13
13
 
14
14
  msh.register_global_module_import('._marshal', __package__)
@@ -17,33 +17,39 @@ msh.register_global_module_import('._marshal', __package__)
17
17
  ##
18
18
 
19
19
 
20
- class ChatChoicesStreamOption(Option, lang.Abstract, lang.PackageSealed):
20
+ class ChatStreamOption(Option, lang.Abstract, lang.PackageSealed):
21
21
  pass
22
22
 
23
23
 
24
- ChatChoicesStreamOptions: ta.TypeAlias = ChatChoicesStreamOption | StreamOptions | ChatChoicesOptions
24
+ ChatStreamOptions: ta.TypeAlias = ChatStreamOption | StreamOptions | ChatOptions
25
25
 
26
26
 
27
27
  ##
28
28
 
29
29
 
30
- class ChatChoicesStreamOutput(Output, lang.Abstract, lang.PackageSealed):
30
+ class ChatStreamOutput(Output, lang.Abstract, lang.PackageSealed):
31
31
  pass
32
32
 
33
33
 
34
- ChatChoicesStreamOutputs: ta.TypeAlias = ChatChoicesStreamOutput
34
+ ChatStreamOutputs: ta.TypeAlias = ChatStreamOutput
35
35
 
36
36
 
37
37
  ##
38
38
 
39
39
 
40
40
  @dc.dataclass(frozen=True)
41
- class AiChoiceDelta(lang.Sealed, lang.Abstract):
41
+ class AiDelta(lang.Sealed, lang.Abstract):
42
42
  pass
43
43
 
44
44
 
45
+ AiDeltas: ta.TypeAlias = ta.Sequence[AiDelta]
46
+
47
+
48
+ #
49
+
50
+
45
51
  @dc.dataclass(frozen=True)
46
- class ContentAiChoiceDelta(AiChoiceDelta, lang.Final):
52
+ class ContentAiDelta(AiDelta, lang.Final):
47
53
  c: Content
48
54
 
49
55
 
@@ -51,29 +57,16 @@ class ContentAiChoiceDelta(AiChoiceDelta, lang.Final):
51
57
 
52
58
 
53
59
  @dc.dataclass(frozen=True, kw_only=True)
54
- class AnyToolUseAiChoiceDelta(AiChoiceDelta, lang.Abstract):
60
+ class AnyToolUseAiDelta(AiDelta, lang.Abstract):
55
61
  id: str | None = None
56
62
  name: str | None = None
57
63
 
58
64
 
59
65
  @dc.dataclass(frozen=True, kw_only=True)
60
- class ToolUseAiChoiceDelta(AnyToolUseAiChoiceDelta, lang.Final):
66
+ class ToolUseAiDelta(AnyToolUseAiDelta, lang.Final):
61
67
  args: ta.Mapping[str, ta.Any] | None = None
62
68
 
63
69
 
64
70
  @dc.dataclass(frozen=True, kw_only=True)
65
- class PartialToolUseAiChoiceDelta(AnyToolUseAiChoiceDelta, lang.Final):
71
+ class PartialToolUseAiDelta(AnyToolUseAiDelta, lang.Final):
66
72
  raw_args: ta.Any | None = None
67
-
68
-
69
- #
70
-
71
-
72
- @dc.dataclass(frozen=True)
73
- class AiChoiceDeltas(lang.Final):
74
- deltas: ta.Sequence[AiChoiceDelta]
75
-
76
-
77
- @dc.dataclass(frozen=True)
78
- class AiChoicesDeltas(lang.Final):
79
- choices: ta.Sequence[AiChoiceDeltas]
@@ -10,9 +10,9 @@ from omlish import dataclasses as dc
10
10
  from omlish import lang
11
11
  from omlish.text import templating as tpl
12
12
 
13
- from ..content.transforms.strings import transform_content_strings
14
13
  from ..envs import Env
15
14
  from ..envs import EnvKey
15
+ from .content import transform_message_content_strings
16
16
  from .messages import Chat
17
17
  from .messages import Message
18
18
 
@@ -81,7 +81,7 @@ class ChatTemplater:
81
81
  t = self.d[s]
82
82
  return t.render(tpl.Templater.Context(env))
83
83
 
84
- return [transform_content_strings(render_content_str, self.m)]
84
+ return [transform_message_content_strings(render_content_str, self.m)]
85
85
 
86
86
  @dc.dataclass(frozen=True)
87
87
  class _PlaceholderStep(_Step):
@@ -110,7 +110,7 @@ class ChatTemplater:
110
110
  content_strs.add(s)
111
111
  return s
112
112
 
113
- transform_content_strings(visit_content_str, p.v)
113
+ transform_message_content_strings(visit_content_str, p.v)
114
114
 
115
115
  d: dict[str, tpl.Templater] = {
116
116
  s: self._template_factory(s)
@@ -8,11 +8,28 @@ _msh.register_global_module_import('._marshal', __package__)
8
8
  ##
9
9
 
10
10
 
11
- # This is everything _marshal.py references - it must all be imported before the conditional import.
11
+ # These are all of the Content subtypes - it must all be imported before the conditional import.
12
+
12
13
  from . import ( # noqa
14
+ code as _code,
15
+ composite as _composite,
16
+ content as _content,
17
+ dynamic as _dynamic,
18
+ emphasis as _emphasis,
13
19
  images as _images,
14
- materialize as _materialize,
20
+ json as _json,
21
+ link as _link,
22
+ markdown as _markdown,
23
+ namespaces as _namespaces,
24
+ placeholders as _placeholders,
25
+ quote as _quote,
26
+ raw as _raw,
27
+ recursive as _recursive,
28
+ resources as _resources,
29
+ section as _section,
15
30
  sequence as _sequence,
31
+ standard as _standard,
32
+ tag as _tag,
33
+ templates as _templates,
16
34
  text as _text,
17
- types as _types,
18
35
  )