ommlds 0.0.0.dev489__py3-none-any.whl → 0.0.0.dev490__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 (84) hide show
  1. ommlds/cli/_dataclasses.py +657 -328
  2. ommlds/cli/main.py +74 -42
  3. ommlds/cli/sessions/chat/agents/agent.py +49 -0
  4. ommlds/cli/sessions/chat/{chat → agents}/ai/configs.py +3 -1
  5. ommlds/cli/sessions/chat/agents/ai/events.py +57 -0
  6. ommlds/cli/sessions/chat/{chat → agents}/ai/inject.py +7 -2
  7. ommlds/cli/sessions/chat/{chat → agents}/ai/rendering.py +1 -1
  8. ommlds/cli/sessions/chat/{chat → agents}/ai/services.py +1 -1
  9. ommlds/cli/sessions/chat/{chat → agents}/ai/tools.py +1 -1
  10. ommlds/cli/sessions/chat/{chat → agents}/ai/types.py +9 -0
  11. ommlds/cli/sessions/chat/agents/configs.py +25 -0
  12. ommlds/cli/sessions/chat/agents/events/inject.py +27 -0
  13. ommlds/cli/sessions/chat/agents/events/injection.py +14 -0
  14. ommlds/cli/sessions/chat/agents/events/manager.py +16 -0
  15. ommlds/cli/sessions/chat/agents/events/types.py +38 -0
  16. ommlds/cli/sessions/chat/agents/inject.py +62 -0
  17. ommlds/cli/sessions/chat/{chat → agents}/state/inject.py +3 -3
  18. ommlds/cli/sessions/chat/{chat → agents}/state/types.py +1 -1
  19. ommlds/cli/sessions/chat/{tools → agents/tools}/configs.py +3 -1
  20. ommlds/cli/sessions/chat/{tools → agents/tools}/confirmation.py +1 -1
  21. ommlds/cli/sessions/chat/{tools → agents/tools}/execution.py +1 -1
  22. ommlds/cli/sessions/chat/{tools → agents/tools}/fs/inject.py +3 -3
  23. ommlds/cli/sessions/chat/{tools → agents/tools}/inject.py +8 -4
  24. ommlds/cli/sessions/chat/{tools → agents/tools}/injection.py +1 -1
  25. ommlds/cli/sessions/chat/{tools → agents/tools}/rendering.py +3 -3
  26. ommlds/cli/sessions/chat/{tools → agents/tools}/todo/inject.py +3 -3
  27. ommlds/cli/sessions/chat/{tools → agents/tools}/weather/tools.py +1 -1
  28. ommlds/cli/sessions/chat/{chat → agents}/user/configs.py +0 -2
  29. ommlds/cli/sessions/chat/agents/user/inject.py +40 -0
  30. ommlds/cli/sessions/chat/configs.py +4 -12
  31. ommlds/cli/sessions/chat/inject.py +4 -32
  32. ommlds/cli/sessions/chat/{interface → interfaces}/bare/inject.py +13 -7
  33. ommlds/cli/sessions/chat/interfaces/bare/interactive.py +41 -0
  34. ommlds/cli/sessions/chat/interfaces/bare/oneshot.py +21 -0
  35. ommlds/cli/sessions/chat/{interface → interfaces}/bare/user.py +1 -1
  36. ommlds/cli/sessions/chat/interfaces/textual/__init__.py +0 -0
  37. ommlds/cli/sessions/chat/interfaces/textual/app.py +211 -0
  38. ommlds/cli/sessions/chat/interfaces/textual/inject.py +43 -0
  39. ommlds/cli/sessions/chat/{interface → interfaces}/textual/interface.py +0 -3
  40. ommlds/cli/sessions/chat/interfaces/textual/styles/__init__.py +0 -0
  41. ommlds/cli/sessions/chat/interfaces/textual/styles/input.tcss +51 -0
  42. ommlds/cli/sessions/chat/interfaces/textual/styles/messages.tcss +33 -0
  43. ommlds/cli/sessions/chat/session.py +1 -1
  44. {ommlds-0.0.0.dev489.dist-info → ommlds-0.0.0.dev490.dist-info}/METADATA +4 -4
  45. {ommlds-0.0.0.dev489.dist-info → ommlds-0.0.0.dev490.dist-info}/RECORD +76 -67
  46. ommlds/cli/sessions/chat/chat/user/inject.py +0 -52
  47. ommlds/cli/sessions/chat/chat/user/oneshot.py +0 -25
  48. ommlds/cli/sessions/chat/chat/user/types.py +0 -15
  49. ommlds/cli/sessions/chat/driver.py +0 -43
  50. ommlds/cli/sessions/chat/interface/bare/interface.py +0 -19
  51. ommlds/cli/sessions/chat/interface/textual/app.py +0 -191
  52. ommlds/cli/sessions/chat/interface/textual/inject.py +0 -27
  53. ommlds/cli/sessions/chat/interface/textual/user.py +0 -20
  54. /ommlds/cli/sessions/chat/{chat → agents}/__init__.py +0 -0
  55. /ommlds/cli/sessions/chat/{chat → agents}/ai/__init__.py +0 -0
  56. /ommlds/cli/sessions/chat/{chat → agents}/ai/injection.py +0 -0
  57. /ommlds/cli/sessions/chat/{chat/state → agents/events}/__init__.py +0 -0
  58. /ommlds/cli/sessions/chat/{chat/user → agents/phases}/__init__.py +0 -0
  59. /ommlds/cli/sessions/chat/{phases → agents/phases}/inject.py +0 -0
  60. /ommlds/cli/sessions/chat/{phases → agents/phases}/injection.py +0 -0
  61. /ommlds/cli/sessions/chat/{phases → agents/phases}/manager.py +0 -0
  62. /ommlds/cli/sessions/chat/{phases → agents/phases}/types.py +0 -0
  63. /ommlds/cli/sessions/chat/{interface → agents/state}/__init__.py +0 -0
  64. /ommlds/cli/sessions/chat/{chat → agents}/state/configs.py +0 -0
  65. /ommlds/cli/sessions/chat/{chat → agents}/state/inmemory.py +0 -0
  66. /ommlds/cli/sessions/chat/{chat → agents}/state/storage.py +0 -0
  67. /ommlds/cli/sessions/chat/{interface/bare → agents/tools}/__init__.py +0 -0
  68. /ommlds/cli/sessions/chat/{interface/textual → agents/tools/fs}/__init__.py +0 -0
  69. /ommlds/cli/sessions/chat/{tools → agents/tools}/fs/configs.py +0 -0
  70. /ommlds/cli/sessions/chat/{phases → agents/tools/todo}/__init__.py +0 -0
  71. /ommlds/cli/sessions/chat/{tools → agents/tools}/todo/configs.py +0 -0
  72. /ommlds/cli/sessions/chat/{tools → agents/tools/weather}/__init__.py +0 -0
  73. /ommlds/cli/sessions/chat/{tools → agents/tools}/weather/configs.py +0 -0
  74. /ommlds/cli/sessions/chat/{tools → agents/tools}/weather/inject.py +0 -0
  75. /ommlds/cli/sessions/chat/{tools/fs → agents/user}/__init__.py +0 -0
  76. /ommlds/cli/sessions/chat/{tools/todo → interfaces}/__init__.py +0 -0
  77. /ommlds/cli/sessions/chat/{tools/weather → interfaces/bare}/__init__.py +0 -0
  78. /ommlds/cli/sessions/chat/{interface → interfaces}/base.py +0 -0
  79. /ommlds/cli/sessions/chat/{interface → interfaces}/configs.py +0 -0
  80. /ommlds/cli/sessions/chat/{interface → interfaces}/inject.py +0 -0
  81. {ommlds-0.0.0.dev489.dist-info → ommlds-0.0.0.dev490.dist-info}/WHEEL +0 -0
  82. {ommlds-0.0.0.dev489.dist-info → ommlds-0.0.0.dev490.dist-info}/entry_points.txt +0 -0
  83. {ommlds-0.0.0.dev489.dist-info → ommlds-0.0.0.dev490.dist-info}/licenses/LICENSE +0 -0
  84. {ommlds-0.0.0.dev489.dist-info → ommlds-0.0.0.dev490.dist-info}/top_level.txt +0 -0
@@ -100,10 +100,10 @@ ommlds/backends/transformers/filecache.py,sha256=ycfswt7f4qRrPSTFRhofXZaDBuDPpyp
100
100
  ommlds/backends/transformers/streamers.py,sha256=Hu_9lp_kUilKjOfs7Ixqr2NoA5FuRn2eRh8JdvaBDYc,1688
101
101
  ommlds/cli/__init__.py,sha256=-RtLrdEGN2da1KCf7YNs32jN-kJhT_kNVrcOv4x_J-w,101
102
102
  ommlds/cli/__main__.py,sha256=1ffCb0fcUOJMzxROJmJRXQ8PSOVYv7KrcuBtT95cf0c,140
103
- ommlds/cli/_dataclasses.py,sha256=eD6xmF2ZZkiOfNjdpXP8no6nz4XGjl_3Y4JiJdN44Kc,130497
103
+ ommlds/cli/_dataclasses.py,sha256=2yC7ci4AgNP_ZNiGlG_NUTNlkG3xWBNb_BVm81kSZiE,143623
104
104
  ommlds/cli/asyncs.py,sha256=NAMzzaZq7ORjlbbBB_Y9vcM9qoBpGf4VJNtl_3p_8G4,629
105
105
  ommlds/cli/inject.py,sha256=CdG-Zgq3T0pDWLhHRZSqlkR4W2mS7LlCOHD2uP1llf0,610
106
- ommlds/cli/main.py,sha256=D8TKCHJEJ5nLVAmTMVOdaUDrHYQJbFAlO0u7fR_APJ0,9633
106
+ ommlds/cli/main.py,sha256=rtLBGDA20q3i3L110vcrSxR770QWZAkWfEHyDGgV9gg,10679
107
107
  ommlds/cli/secrets.py,sha256=8GHlewS3yeFDfFNekaYwRm4nG9l3nd-Mc8tKl9Ma_Uo,469
108
108
  ommlds/cli/backends/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
109
109
  ommlds/cli/backends/catalog.py,sha256=hLcBXBCiB7eKT_2yv8kyLD5f94LV7vCcOe144URuJxs,3225
@@ -127,65 +127,74 @@ ommlds/cli/sessions/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSu
127
127
  ommlds/cli/sessions/base.py,sha256=diwERBpapd73Cn2T2_ctEIfhzjzJ1DTzjcExxwxccqw,464
128
128
  ommlds/cli/sessions/inject.py,sha256=9SrtsozIhqok3jZtepKTJwpOxHkU7FrqKw6pc78mEO4,926
129
129
  ommlds/cli/sessions/chat/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
130
- ommlds/cli/sessions/chat/configs.py,sha256=cboswtxSsL9ueZ_ualVy2avU4I3DRWuVM34S5ACImTg,734
131
- ommlds/cli/sessions/chat/driver.py,sha256=ddnCYTKqWiPxV8U4UbFwb7E3yi81ItjZ9j3AJd3a3Mk,1395
132
- ommlds/cli/sessions/chat/inject.py,sha256=paMPTWRQpHTiRfTgv9ZrCQOo_QRGsfJ2ca6EPHjhZYg,1562
133
- ommlds/cli/sessions/chat/session.py,sha256=O5hju0S78zo0K3bCwCg1GIdhZkUYt2H2gpl-efJnUMY,800
134
- ommlds/cli/sessions/chat/chat/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
135
- ommlds/cli/sessions/chat/chat/ai/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
136
- ommlds/cli/sessions/chat/chat/ai/configs.py,sha256=zIth9PKJ9u68Mblctraj2HQcEuiztKGF5sPeJZ-OABw,182
137
- ommlds/cli/sessions/chat/chat/ai/inject.py,sha256=hyYIL7v_aFFtOZGRKwwPqu_A0Uox1sW_m4twrz2aahI,2482
138
- ommlds/cli/sessions/chat/chat/ai/injection.py,sha256=2O_ELMusxQsYaB2oqvzjYpZQzjshocJup7Z5unzoUIY,404
139
- ommlds/cli/sessions/chat/chat/ai/rendering.py,sha256=cMSO-ibCaz_zbeumVo-IncAbTM84UeuAsRr9jaw3IxM,2275
140
- ommlds/cli/sessions/chat/chat/ai/services.py,sha256=OVYwO1tsfHyHgPHfNFkd1Dn0x9cB3j-bfA30oYWf1xA,2506
141
- ommlds/cli/sessions/chat/chat/ai/tools.py,sha256=en94LLM8y73N11xhQPlkSLfbzAmYVwKU-4nz2i0CK0E,1094
142
- ommlds/cli/sessions/chat/chat/ai/types.py,sha256=v92Z6WiU67O2Z9wyWGHdIxGwYLeOhvFVGd_h9coT1tM,744
143
- ommlds/cli/sessions/chat/chat/state/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
144
- ommlds/cli/sessions/chat/chat/state/configs.py,sha256=VMrqC-2dE8lXZmT1dBgUUReS0FDQWzD0U6thSyjOOZM,192
145
- ommlds/cli/sessions/chat/chat/state/inject.py,sha256=PXGn3Q6wuDHEID0D7p8xh_w2H1TGQpusR-zu4MmGUsc,1107
146
- ommlds/cli/sessions/chat/chat/state/inmemory.py,sha256=4wX-8NA8SUTytXeUaTMaI64KBqbXMPIe2TRuI2GO0_8,872
147
- ommlds/cli/sessions/chat/chat/state/storage.py,sha256=gKUNsNj3TtH67-FOuHXrQlDsESeIYDUHPhn7unTQCx8,1447
148
- ommlds/cli/sessions/chat/chat/state/types.py,sha256=NsHCZNeBfLW1BMVB2rn-DUqA9C5w2vp-_3UjjKl4QRo,806
149
- ommlds/cli/sessions/chat/chat/user/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
150
- ommlds/cli/sessions/chat/chat/user/configs.py,sha256=qsiua5CkTRPhO4prORK-GXauUhWRZ3psfpoHvuj8EyA,311
151
- ommlds/cli/sessions/chat/chat/user/inject.py,sha256=guy8eQLXlUtXKG9jNnJSCwwT6_jPJ0oxPIGNI2KaT6A,1895
152
- ommlds/cli/sessions/chat/chat/user/oneshot.py,sha256=jPrZBBuf-olBfPF7CPTYK7-Dr7EvSriU7L0nORHfbv4,588
153
- ommlds/cli/sessions/chat/chat/user/types.py,sha256=MNlhMxlLtxVod9rUZlSPvRaippPAXEdX_GHh73QLeSg,262
154
- ommlds/cli/sessions/chat/interface/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
155
- ommlds/cli/sessions/chat/interface/base.py,sha256=3z7yI-ow7037_n6VanQYZjOgKL_iRZ8FB6JP553SY7M,198
156
- ommlds/cli/sessions/chat/interface/configs.py,sha256=xu9nUAI9opNR7X4m92JKr5HhXPNNflHUHQ4UbOPmVMg,244
157
- ommlds/cli/sessions/chat/interface/inject.py,sha256=Ip-srA7ONGF-YgbLikwfTd3O1UoxeDTMI6CnPpc6A80,493
158
- ommlds/cli/sessions/chat/interface/bare/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
159
- ommlds/cli/sessions/chat/interface/bare/inject.py,sha256=rJPZnntuELdjxovU2yDo_RZl5qBhUfadMb2Dg1e50Pw,1048
160
- ommlds/cli/sessions/chat/interface/bare/interface.py,sha256=X-M0fyyY6FlJbY_ToJOMGJrPwbx68Hi1y9GfkhdPLKA,336
161
- ommlds/cli/sessions/chat/interface/bare/user.py,sha256=DIRX8-yWl0U9AD1qr5og0XbFhSZxpCUgnwOxIJloK1Y,874
162
- ommlds/cli/sessions/chat/interface/textual/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
163
- ommlds/cli/sessions/chat/interface/textual/app.py,sha256=r25t-0Gvh5O_oS-mKKR5xHSI6d-ibHkpH6ZYKxAFDIk,4303
164
- ommlds/cli/sessions/chat/interface/textual/inject.py,sha256=MwtFeF3SXfidsxCihcgk3Bp888Ba5CwEj2ZYugkJRtM,620
165
- ommlds/cli/sessions/chat/interface/textual/interface.py,sha256=SISY0RardWhYdXfpVMTTjNlaeUIu9lgFIxKkDn0_SwA,417
166
- ommlds/cli/sessions/chat/interface/textual/user.py,sha256=ywXycpaHX7beD1EAv6PtCYNC5vQL6CLIfWM9iYzH3ts,482
167
- ommlds/cli/sessions/chat/phases/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
168
- ommlds/cli/sessions/chat/phases/inject.py,sha256=m9GcCVcp1GnNKN1qwDSgTkfp3e107wXgPeEHDLbfG8s,448
169
- ommlds/cli/sessions/chat/phases/injection.py,sha256=ZUFRRLp3HNhKaPBW6aiw5XFEGNkqTj8WVSlXM0kg0y0,326
170
- ommlds/cli/sessions/chat/phases/manager.py,sha256=_wfc0FfL5h_5L-6hnYb3U3kiRmkGDkJu7wGj5Cgz7_Y,727
171
- ommlds/cli/sessions/chat/phases/types.py,sha256=w1pAEydJYaHzSzdlqygCwKxvVZnfo_R_xJqq8wBzZsQ,512
172
- ommlds/cli/sessions/chat/tools/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
173
- ommlds/cli/sessions/chat/tools/configs.py,sha256=DuRT3In_VHLur6UpvFI8EY5bOqmdLNMSNTUvbzCLFOo,361
174
- ommlds/cli/sessions/chat/tools/confirmation.py,sha256=I_nYBIIoeprCShUaVpN4v01YOAdY6iJEM5-ybc0p8VA,1072
175
- ommlds/cli/sessions/chat/tools/execution.py,sha256=4sRuZWZjNBo852hhLZjqTqEZpgu9KPXHEawiICIMUdc,1576
176
- ommlds/cli/sessions/chat/tools/inject.py,sha256=MzORGqT4sNLu3ApNoExNjD8OLFKFmwpHmN_-qNVBlp8,2634
177
- ommlds/cli/sessions/chat/tools/injection.py,sha256=BGpkYciYNVlfyi6HcQqgrtLyWbFuIXJx-yr2eC4TmYY,1161
178
- ommlds/cli/sessions/chat/tools/rendering.py,sha256=-BO-rY_WycmAf1WC9jhiRqnBJiQOtUA5jaXcOC2K6aw,1404
179
- ommlds/cli/sessions/chat/tools/fs/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
180
- ommlds/cli/sessions/chat/tools/fs/configs.py,sha256=hwQ3WRP6hYxjIx-m8z_ZZZ-HwiREuIpa2gRKzeqkoHk,205
181
- ommlds/cli/sessions/chat/tools/fs/inject.py,sha256=hq2PHA9ZgfmghOZ4RlagtfJfJAk0cdEsH90WZuVjlvY,806
182
- ommlds/cli/sessions/chat/tools/todo/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
183
- ommlds/cli/sessions/chat/tools/todo/configs.py,sha256=pcdjTKsRB4J_iBET2tcOx-32EHqtecxLg4JtelMyh1o,207
184
- ommlds/cli/sessions/chat/tools/todo/inject.py,sha256=FU4fCGWJKXviNvSsjoAENM1My1-zUrrbkL2RPelLqik,805
185
- ommlds/cli/sessions/chat/tools/weather/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
186
- ommlds/cli/sessions/chat/tools/weather/configs.py,sha256=VzamzIHkTOVVEKeH5pCq3oWZdREpT2O73v0CImCerDU,210
187
- ommlds/cli/sessions/chat/tools/weather/inject.py,sha256=HSB6gCp23T2HME07FzBiiFpWnloErCIO7yTWcOu5DVk,456
188
- ommlds/cli/sessions/chat/tools/weather/tools.py,sha256=TeXOmxTtuKgiGNl00t4pcHqhh3HSTeiEZRyZv1rs7Pg,303
130
+ ommlds/cli/sessions/chat/configs.py,sha256=iCL1XZvRVjDVh6B4Tc1AdpQ3Xlq0NeLi4lXqf-z5oUc,416
131
+ ommlds/cli/sessions/chat/inject.py,sha256=yLkKEvRqRemXr-U1BZ-Rwm9S_JxYCb2U-2gjm4-UjlM,850
132
+ ommlds/cli/sessions/chat/session.py,sha256=gjwCDh8-fDuFD5OvZpJa3C8GShOhbRNZwQv5wreGHR4,801
133
+ ommlds/cli/sessions/chat/agents/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
134
+ ommlds/cli/sessions/chat/agents/agent.py,sha256=-hla0N9KhQAfG6h92Pb31tVQ_DA0AvgrJFtuB9POnAM,1520
135
+ ommlds/cli/sessions/chat/agents/configs.py,sha256=5PbxLqhsV8HfUaC0K5oSfBy4coxMopyxiKGl1f3ECb0,523
136
+ ommlds/cli/sessions/chat/agents/inject.py,sha256=vP7zshkarNicHPhG5dvq7Ay_O6OSsT_w7zCj76vVWOA,1207
137
+ ommlds/cli/sessions/chat/agents/ai/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
138
+ ommlds/cli/sessions/chat/agents/ai/configs.py,sha256=MjuJicX53mrSHCDTpBTHLUyrovXFkKGqrVguuYbrwNg,185
139
+ ommlds/cli/sessions/chat/agents/ai/events.py,sha256=VLy1OBZWWS82avZhMVUZJrOMNE3muuG9oWZtQ7FK_Po,1593
140
+ ommlds/cli/sessions/chat/agents/ai/inject.py,sha256=FQT_aoHNiU9fV8TF6KMeD_CYgsZFMXIwSKRkycrUWzM,2729
141
+ ommlds/cli/sessions/chat/agents/ai/injection.py,sha256=2O_ELMusxQsYaB2oqvzjYpZQzjshocJup7Z5unzoUIY,404
142
+ ommlds/cli/sessions/chat/agents/ai/rendering.py,sha256=srDRaepttzHSn8w4Cet07bDtGiSApUO4xyhiPbuMU0A,2277
143
+ ommlds/cli/sessions/chat/agents/ai/services.py,sha256=PUySl7Fz4ttElW-V6poEnvF-RaRmbjU3cHULHun5rdk,2508
144
+ ommlds/cli/sessions/chat/agents/ai/tools.py,sha256=XmF-HF7OiUiqXuIgT0QuePmqnHTmpjK-lLt5WocAiws,1093
145
+ ommlds/cli/sessions/chat/agents/ai/types.py,sha256=_Ees5ia0fKMr-BvKpTeryY-KXWP0bAfWrOGg2JDFpuE,913
146
+ ommlds/cli/sessions/chat/agents/events/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
147
+ ommlds/cli/sessions/chat/agents/events/inject.py,sha256=quPbkuhPyJ_zFpFzh5hrkqWspwk9El0a8_82r1LphIY,449
148
+ ommlds/cli/sessions/chat/agents/events/injection.py,sha256=Q32VFAww9EkzkqdqrbamKuuVcfzbGol6JojNYo61jG0,326
149
+ ommlds/cli/sessions/chat/agents/events/manager.py,sha256=5NTDIFBtGXMT_86CiQgXoUSHqEweFENUDSDQ8d3ouiE,348
150
+ ommlds/cli/sessions/chat/agents/events/types.py,sha256=cxTq5xEzg97zsqqnQCZ8FP3UM0wj3yuvqGB3teR2YGw,655
151
+ ommlds/cli/sessions/chat/agents/phases/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
152
+ ommlds/cli/sessions/chat/agents/phases/inject.py,sha256=m9GcCVcp1GnNKN1qwDSgTkfp3e107wXgPeEHDLbfG8s,448
153
+ ommlds/cli/sessions/chat/agents/phases/injection.py,sha256=ZUFRRLp3HNhKaPBW6aiw5XFEGNkqTj8WVSlXM0kg0y0,326
154
+ ommlds/cli/sessions/chat/agents/phases/manager.py,sha256=_wfc0FfL5h_5L-6hnYb3U3kiRmkGDkJu7wGj5Cgz7_Y,727
155
+ ommlds/cli/sessions/chat/agents/phases/types.py,sha256=w1pAEydJYaHzSzdlqygCwKxvVZnfo_R_xJqq8wBzZsQ,512
156
+ ommlds/cli/sessions/chat/agents/state/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
157
+ ommlds/cli/sessions/chat/agents/state/configs.py,sha256=VMrqC-2dE8lXZmT1dBgUUReS0FDQWzD0U6thSyjOOZM,192
158
+ ommlds/cli/sessions/chat/agents/state/inject.py,sha256=w4kwGfvuwrmLYC4BLi0ARzJTixwv-IPoDxA1SYDzf8g,1104
159
+ ommlds/cli/sessions/chat/agents/state/inmemory.py,sha256=4wX-8NA8SUTytXeUaTMaI64KBqbXMPIe2TRuI2GO0_8,872
160
+ ommlds/cli/sessions/chat/agents/state/storage.py,sha256=gKUNsNj3TtH67-FOuHXrQlDsESeIYDUHPhn7unTQCx8,1447
161
+ ommlds/cli/sessions/chat/agents/state/types.py,sha256=PnOvGxaWvtVeawWRAiRqfGTs-COWfBdUT6vQCzZp-3w,808
162
+ ommlds/cli/sessions/chat/agents/tools/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
163
+ ommlds/cli/sessions/chat/agents/tools/configs.py,sha256=5mC3JIJ9W3j935FXbGfVxPssO7HGa_NplIiDXLNT9wA,364
164
+ ommlds/cli/sessions/chat/agents/tools/confirmation.py,sha256=giN5HDTpR4aPfAmna4iUGrgUG9CXbXiri1N1cjQXXXY,1073
165
+ ommlds/cli/sessions/chat/agents/tools/execution.py,sha256=G-oCNa1QnnhdL9ByR6cwwRHe1J4v7JssZhSMpvG5imo,1577
166
+ ommlds/cli/sessions/chat/agents/tools/inject.py,sha256=WAOz32aYd2OIZ0Ze4l7sA-1RWtmW13gm06nW-mXMhqo,2672
167
+ ommlds/cli/sessions/chat/agents/tools/injection.py,sha256=tP2tsF2brfpNEBDcZSaMQ5hTEodC7ijOHKkp-qToit8,1162
168
+ ommlds/cli/sessions/chat/agents/tools/rendering.py,sha256=SlVFqoqs_be-FFPtrnBzYnowlqAsxCc_kCyqPD14L8E,1421
169
+ ommlds/cli/sessions/chat/agents/tools/fs/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
170
+ ommlds/cli/sessions/chat/agents/tools/fs/configs.py,sha256=hwQ3WRP6hYxjIx-m8z_ZZZ-HwiREuIpa2gRKzeqkoHk,205
171
+ ommlds/cli/sessions/chat/agents/tools/fs/inject.py,sha256=unLnYOBW6PooTsoO6UuS6BtD0GC-GexKitjca1yECes,809
172
+ ommlds/cli/sessions/chat/agents/tools/todo/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
173
+ ommlds/cli/sessions/chat/agents/tools/todo/configs.py,sha256=pcdjTKsRB4J_iBET2tcOx-32EHqtecxLg4JtelMyh1o,207
174
+ ommlds/cli/sessions/chat/agents/tools/todo/inject.py,sha256=6wzNlX97MaHVtaPbVmvSh4_zU7ukVgjFTVxubUaR16w,808
175
+ ommlds/cli/sessions/chat/agents/tools/weather/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
176
+ ommlds/cli/sessions/chat/agents/tools/weather/configs.py,sha256=VzamzIHkTOVVEKeH5pCq3oWZdREpT2O73v0CImCerDU,210
177
+ ommlds/cli/sessions/chat/agents/tools/weather/inject.py,sha256=HSB6gCp23T2HME07FzBiiFpWnloErCIO7yTWcOu5DVk,456
178
+ ommlds/cli/sessions/chat/agents/tools/weather/tools.py,sha256=tGkr97D-60Lgsnjs1nSqV5BEZrTNlcaU_TFCY4ZRQyE,304
179
+ ommlds/cli/sessions/chat/agents/user/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
180
+ ommlds/cli/sessions/chat/agents/user/configs.py,sha256=tBSP2j1Bynn0Qt_S0GNUuNniMWivVSCFad3H4UCS3qY,280
181
+ ommlds/cli/sessions/chat/agents/user/inject.py,sha256=PbOpQn7YzE9Ltjsswd00_IWyc2lNVZplPGN_1YGRnKA,1388
182
+ ommlds/cli/sessions/chat/interfaces/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
183
+ ommlds/cli/sessions/chat/interfaces/base.py,sha256=3z7yI-ow7037_n6VanQYZjOgKL_iRZ8FB6JP553SY7M,198
184
+ ommlds/cli/sessions/chat/interfaces/configs.py,sha256=xu9nUAI9opNR7X4m92JKr5HhXPNNflHUHQ4UbOPmVMg,244
185
+ ommlds/cli/sessions/chat/interfaces/inject.py,sha256=Ip-srA7ONGF-YgbLikwfTd3O1UoxeDTMI6CnPpc6A80,493
186
+ ommlds/cli/sessions/chat/interfaces/bare/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
187
+ ommlds/cli/sessions/chat/interfaces/bare/inject.py,sha256=cPbffOxttIDApBoEBqHCbRoSqxvkzE0lKR-LPZdrBQs,1211
188
+ ommlds/cli/sessions/chat/interfaces/bare/interactive.py,sha256=77Rqpa3ProkxKDvLC9H9RzWmatzgyzNMOVWSqLEnKYI,1086
189
+ ommlds/cli/sessions/chat/interfaces/bare/oneshot.py,sha256=aRuyaLPuknfw3WWQE_yP4hNW0lLePQMRDyjMRm7-dMQ,379
190
+ ommlds/cli/sessions/chat/interfaces/bare/user.py,sha256=vFwU59vgI6_RPobFiPpCE4P0NLNXlmGV6WD3v9b4b28,876
191
+ ommlds/cli/sessions/chat/interfaces/textual/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
192
+ ommlds/cli/sessions/chat/interfaces/textual/app.py,sha256=YONhAvnMC3UhmhPxDTBH2RrEcEi-x1JbwCuS68Pzc2w,5226
193
+ ommlds/cli/sessions/chat/interfaces/textual/inject.py,sha256=ZqSkqCnWBFDFuqMRKPtzt1uZQSf59V5TEsJhphZKKJY,869
194
+ ommlds/cli/sessions/chat/interfaces/textual/interface.py,sha256=tvS8ORiunBxTIkTW2YmqRRyL7p46FrVpZEeix-ez9FA,322
195
+ ommlds/cli/sessions/chat/interfaces/textual/styles/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
196
+ ommlds/cli/sessions/chat/interfaces/textual/styles/input.tcss,sha256=6aYFNxZ-GmTLirWnJcxVNPeq8YqgjS4GJDuxwXbOBhI,601
197
+ ommlds/cli/sessions/chat/interfaces/textual/styles/messages.tcss,sha256=vxMUmhAUKiJlQ4gznIml28hzGYfXWF0GeXd0Q_H4BzU,358
189
198
  ommlds/cli/sessions/completion/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
190
199
  ommlds/cli/sessions/completion/configs.py,sha256=ZibOyJxIMbclzKDK_mj8jVzFJxjkyVWmo1Tb9ZnQQ1M,240
191
200
  ommlds/cli/sessions/completion/inject.py,sha256=vk3ewhXWGemKcOllr1iG_nMz5523qEu40MI62Dlx9AQ,933
@@ -449,9 +458,9 @@ ommlds/wiki/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU
449
458
  ommlds/wiki/utils/io.py,sha256=UKgDJGtmpnWvIqVd2mJc2QNPOqlToEY1GEveNp6_pMo,7088
450
459
  ommlds/wiki/utils/progress.py,sha256=EhvKcMFYtsarCQhIahlO6f0SboyAKP3UwUyrnVnP-Vk,3222
451
460
  ommlds/wiki/utils/xml.py,sha256=sNJNkZ9rT8B-kJMO6bRz8J1USy4fyPx0m2PwTX7vxYY,3846
452
- ommlds-0.0.0.dev489.dist-info/licenses/LICENSE,sha256=B_hVtavaA8zCYDW99DYdcpDLKz1n3BBRjZrcbv8uG8c,1451
453
- ommlds-0.0.0.dev489.dist-info/METADATA,sha256=3ZTS2XgARBEwxODOmnG5PcDx16y_4TNAy5_ibrVeOO0,3493
454
- ommlds-0.0.0.dev489.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
455
- ommlds-0.0.0.dev489.dist-info/entry_points.txt,sha256=Z5YWtX7ClfiCKdW-dd_CSVvM0h4yQpJPi-2G3q6gNFo,35
456
- ommlds-0.0.0.dev489.dist-info/top_level.txt,sha256=Rbnk5d5wi58vnAXx13WFZqdQ4VX8hBCS2hEL3WeXOhY,7
457
- ommlds-0.0.0.dev489.dist-info/RECORD,,
461
+ ommlds-0.0.0.dev490.dist-info/licenses/LICENSE,sha256=B_hVtavaA8zCYDW99DYdcpDLKz1n3BBRjZrcbv8uG8c,1451
462
+ ommlds-0.0.0.dev490.dist-info/METADATA,sha256=bzhiY6QERXq35iGmzD2aseo9UEpkdEmHBmnbktJ0kFs,3493
463
+ ommlds-0.0.0.dev490.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
464
+ ommlds-0.0.0.dev490.dist-info/entry_points.txt,sha256=Z5YWtX7ClfiCKdW-dd_CSVvM0h4yQpJPi-2G3q6gNFo,35
465
+ ommlds-0.0.0.dev490.dist-info/top_level.txt,sha256=Rbnk5d5wi58vnAXx13WFZqdQ4VX8hBCS2hEL3WeXOhY,7
466
+ ommlds-0.0.0.dev490.dist-info/RECORD,,
@@ -1,52 +0,0 @@
1
- from omlish import inject as inj
2
- from omlish import lang
3
-
4
- from ...... import minichain as mc
5
- from ...phases.injection import phase_callbacks
6
- from ...phases.types import ChatPhase
7
- from ...phases.types import ChatPhaseCallback
8
- from .configs import UserConfig
9
-
10
-
11
- with lang.auto_proxy_import(globals()):
12
- from ..state import types as _state
13
- from . import oneshot as _oneshot
14
- from . import types as _types
15
-
16
-
17
- ##
18
-
19
-
20
- def bind_user(cfg: UserConfig = UserConfig()) -> inj.Elements:
21
- els: list[inj.Elemental] = []
22
-
23
- # FIXME: barf
24
- if cfg.initial_system_content is not None:
25
- async def add_initial_system_content(cm: '_state.ChatStateManager') -> None:
26
- await cm.extend_chat([mc.SystemMessage(cfg.initial_system_content)])
27
-
28
- els.append(phase_callbacks().bind_item(to_fn=lang.typed_lambda(cm=_state.ChatStateManager)(
29
- lambda cm: ChatPhaseCallback(ChatPhase.STARTED, lambda: add_initial_system_content(cm)),
30
- )))
31
-
32
- if cfg.interactive:
33
- if cfg.initial_user_content is not None:
34
- async def add_initial_user_content(cm: '_state.ChatStateManager') -> None:
35
- await cm.extend_chat([mc.UserMessage(cfg.initial_user_content)])
36
-
37
- els.append(phase_callbacks().bind_item(to_fn=lang.typed_lambda(cm=_state.ChatStateManager)(
38
- lambda cm: ChatPhaseCallback(ChatPhase.STARTED, lambda: add_initial_user_content(cm)),
39
- )))
40
-
41
- raise NotImplementedError
42
-
43
- else:
44
- if cfg.initial_user_content is None:
45
- raise ValueError('Initial user content is required for non-interactive chat')
46
-
47
- els.extend([
48
- inj.bind(_oneshot.OneshotUserChatInputInitialChat, to_const=[mc.UserMessage(cfg.initial_user_content)]),
49
- inj.bind(_types.UserChatInput, to_ctor=_oneshot.OneshotUserChatInput, singleton=True),
50
- ])
51
-
52
- return inj.as_elements(*els)
@@ -1,25 +0,0 @@
1
- import typing as ta
2
-
3
- from ...... import minichain as mc
4
- from .types import UserChatInput
5
-
6
-
7
- ##
8
-
9
-
10
- OneshotUserChatInputInitialChat = ta.NewType('OneshotUserChatInputInitialChat', mc.UserChat)
11
-
12
-
13
- class OneshotUserChatInput(UserChatInput):
14
- def __init__(
15
- self,
16
- initial_chat: OneshotUserChatInputInitialChat,
17
- ) -> None:
18
- super().__init__()
19
-
20
- self._pending_chat: mc.UserChat | None = initial_chat
21
-
22
- async def get_next_user_messages(self) -> 'mc.UserChat':
23
- ret = self._pending_chat
24
- self._pending_chat = None
25
- return ret or []
@@ -1,15 +0,0 @@
1
- import abc
2
- import typing as ta
3
-
4
- from omlish import lang
5
-
6
- from ...... import minichain as mc
7
-
8
-
9
- ##
10
-
11
-
12
- class UserChatInput(lang.Abstract):
13
- @abc.abstractmethod
14
- def get_next_user_messages(self) -> ta.Awaitable['mc.UserChat']:
15
- raise NotImplementedError
@@ -1,43 +0,0 @@
1
- from .chat.ai.types import AiChatGenerator
2
- from .chat.state.types import ChatStateManager
3
- from .chat.user.types import UserChatInput
4
- from .phases.manager import ChatPhaseManager
5
- from .phases.types import ChatPhase
6
-
7
-
8
- ##
9
-
10
-
11
- class ChatDriver:
12
- def __init__(
13
- self,
14
- *,
15
- phases: ChatPhaseManager,
16
- ai_chat_generator: AiChatGenerator,
17
- user_chat_input: UserChatInput,
18
- chat_state_manager: ChatStateManager,
19
- ):
20
- super().__init__()
21
-
22
- self._phases = phases
23
- self._ai_chat_generator = ai_chat_generator
24
- self._user_chat_input = user_chat_input
25
- self._chat_state_manager = chat_state_manager
26
-
27
- async def run(self) -> None:
28
- await self._phases.set_phase(ChatPhase.STARTING)
29
- await self._phases.set_phase(ChatPhase.STARTED)
30
-
31
- while True:
32
- next_user_chat = await self._user_chat_input.get_next_user_messages()
33
- if not next_user_chat:
34
- break
35
-
36
- prev_user_chat = (await self._chat_state_manager.get_state()).chat
37
-
38
- next_ai_chat = await self._ai_chat_generator.get_next_ai_messages([*prev_user_chat, *next_user_chat])
39
-
40
- await self._chat_state_manager.extend_chat([*next_user_chat, *next_ai_chat])
41
-
42
- await self._phases.set_phase(ChatPhase.STOPPING)
43
- await self._phases.set_phase(ChatPhase.STOPPED)
@@ -1,19 +0,0 @@
1
- from ...driver import ChatDriver
2
- from ..base import ChatInterface
3
-
4
-
5
- ##
6
-
7
-
8
- class BareChatInterface(ChatInterface):
9
- def __init__(
10
- self,
11
- *,
12
- driver: ChatDriver,
13
- ) -> None:
14
- super().__init__()
15
-
16
- self._driver = driver
17
-
18
- async def run(self) -> None:
19
- await self._driver.run()
@@ -1,191 +0,0 @@
1
- import asyncio
2
- import dataclasses as dc
3
- import typing as ta
4
-
5
- from omdev.tui import textual as tx
6
- from omlish import check
7
-
8
- from ...... import minichain as mc
9
- from ...driver import ChatDriver
10
- from .user import QueueUserChatInput
11
-
12
-
13
- ##
14
-
15
-
16
- class UserMessage(tx.Static):
17
- pass
18
-
19
-
20
- class AiMessage(tx.Static):
21
- pass
22
-
23
-
24
- ##
25
-
26
-
27
- class InputTextArea(tx.TextArea):
28
- @dc.dataclass()
29
- class Submitted(tx.Message):
30
- text: str
31
-
32
- def __init__(self, **kwargs: ta.Any) -> None:
33
- super().__init__(**kwargs)
34
-
35
- async def _on_key(self, event: tx.Key) -> None:
36
- if event.key == 'enter':
37
- event.prevent_default()
38
- event.stop()
39
-
40
- if text := self.text.strip():
41
- self.post_message(self.Submitted(text))
42
-
43
- else:
44
- await super()._on_key(event)
45
-
46
-
47
- ##
48
-
49
-
50
- class ChatApp(tx.App):
51
- def __init__(
52
- self,
53
- *,
54
- chat_driver: ChatDriver,
55
- queue_user_chat_input: QueueUserChatInput,
56
- ) -> None:
57
- super().__init__()
58
-
59
- self._chat_driver = chat_driver
60
- self._queue_user_chat_input = queue_user_chat_input
61
-
62
- CSS: ta.ClassVar[str] = """
63
- #messages-scroll {
64
- width: 100%;
65
- height: 1fr;
66
-
67
- padding: 0 2 0 2;
68
- }
69
-
70
- #messages-container {
71
- height: auto;
72
- width: 100%;
73
-
74
- margin-top: 1;
75
- margin-bottom: 0;
76
-
77
- layout: stream;
78
- text-align: left;
79
- }
80
-
81
- #input-outer {
82
- width: 100%;
83
- height: auto;
84
- }
85
-
86
- #input-vertical {
87
- width: 100%;
88
- height: auto;
89
-
90
- margin: 0 2 1 2;
91
-
92
- padding: 0;
93
- }
94
-
95
- #input-vertical2 {
96
- width: 100%;
97
- height: auto;
98
-
99
- border: round $foreground-muted;
100
-
101
- padding: 0 1;
102
- }
103
-
104
- #input-horizontal {
105
- width: 100%;
106
- height: auto;
107
- }
108
-
109
- #input-glyph {
110
- width: auto;
111
-
112
- padding: 0 1 0 0;
113
-
114
- background: transparent;
115
- color: $primary;
116
-
117
- text-style: bold;
118
- }
119
-
120
- #input {
121
- width: 1fr;
122
- height: auto;
123
- max-height: 16;
124
-
125
- border: none;
126
-
127
- padding: 0;
128
-
129
- background: transparent;
130
- color: $text;
131
- }
132
- """
133
-
134
- ENABLE_COMMAND_PALETTE: ta.ClassVar[bool] = False
135
-
136
- #
137
-
138
- def compose(self) -> tx.ComposeResult:
139
- with tx.VerticalScroll(id='messages-scroll'):
140
- yield tx.Static(id='messages-container')
141
-
142
- with tx.Static(id='input-outer'):
143
- with tx.Vertical(id='input-vertical'):
144
- with tx.Vertical(id='input-vertical2'):
145
- with tx.Horizontal(id='input-horizontal'):
146
- yield tx.Static('>', id='input-glyph')
147
- yield InputTextArea(placeholder='...', id='input')
148
-
149
- #
150
-
151
- def _get_input_text_area(self) -> InputTextArea:
152
- return self.query_one('#input', InputTextArea)
153
-
154
- def _get_messages_container(self) -> tx.Static:
155
- return self.query_one('#messages-container', tx.Static)
156
-
157
- #
158
-
159
- async def _mount_message(self, *messages: tx.Widget) -> None:
160
- msg_ctr = self._get_messages_container()
161
-
162
- for msg in messages:
163
- await msg_ctr.mount(msg)
164
-
165
- self.call_after_refresh(lambda: msg_ctr.scroll_end(animate=False))
166
-
167
- #
168
-
169
- _chat_driver_task: asyncio.Task | None = None
170
-
171
- async def on_mount(self) -> None:
172
- check.none(self._chat_driver_task)
173
- self._chat_driver_task = asyncio.create_task(self._chat_driver.run())
174
-
175
- self._get_input_text_area().focus()
176
-
177
- await self._mount_message(UserMessage('Hello!'))
178
-
179
- async def on_unmount(self) -> None:
180
- await self._queue_user_chat_input.push_next_user_messages([])
181
- await check.not_none(self._chat_driver_task)
182
-
183
- async def on_input_text_area_submitted(self, event: InputTextArea.Submitted) -> None:
184
- self._get_input_text_area().clear()
185
-
186
- await self._mount_message(
187
- UserMessage(event.text),
188
- # AiMessage(f'You said: {event.text}!'),
189
- )
190
-
191
- await self._queue_user_chat_input.push_next_user_messages([mc.UserMessage(event.text)])
@@ -1,27 +0,0 @@
1
- from omlish import inject as inj
2
-
3
- from ...chat.user.types import UserChatInput
4
- from ..base import ChatInterface
5
- from .app import ChatApp
6
- from .interface import TextualChatInterface
7
- from .user import QueueUserChatInput
8
-
9
-
10
- ##
11
-
12
-
13
- def bind_textual() -> inj.Elements:
14
- els: list[inj.Elemental] = [
15
- inj.bind(ChatInterface, to_ctor=TextualChatInterface, singleton=True),
16
- ]
17
-
18
- els.extend([
19
- inj.bind(ChatApp, singleton=True),
20
- ])
21
-
22
- els.extend([
23
- inj.bind(QueueUserChatInput, singleton=True),
24
- inj.bind(UserChatInput, to_key=QueueUserChatInput),
25
- ])
26
-
27
- return inj.as_elements(*els)
@@ -1,20 +0,0 @@
1
- import asyncio
2
-
3
- from ...... import minichain as mc
4
- from ...chat.user.types import UserChatInput
5
-
6
-
7
- ##
8
-
9
-
10
- class QueueUserChatInput(UserChatInput):
11
- def __init__(self) -> None:
12
- super().__init__()
13
-
14
- self._queue: asyncio.Queue[mc.UserChat] = asyncio.Queue()
15
-
16
- async def push_next_user_messages(self, chat: 'mc.UserChat') -> None:
17
- await self._queue.put(chat)
18
-
19
- async def get_next_user_messages(self) -> 'mc.UserChat':
20
- return await self._queue.get()
File without changes