ommlds 0.0.0.dev494__py3-none-any.whl → 0.0.0.dev496__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 (85) hide show
  1. ommlds/cli/_dataclasses.py +7 -7
  2. ommlds/cli/backends/inject.py +49 -8
  3. ommlds/cli/backends/meta.py +35 -0
  4. ommlds/cli/content/messages.py +1 -1
  5. ommlds/cli/inject.py +1 -1
  6. ommlds/cli/sessions/chat/drivers/{driver.py → impl.py} +2 -9
  7. ommlds/cli/sessions/chat/drivers/inject.py +5 -3
  8. ommlds/cli/sessions/chat/drivers/state/inject.py +2 -3
  9. ommlds/cli/sessions/chat/drivers/tools/injection.py +4 -4
  10. ommlds/cli/sessions/chat/drivers/types.py +21 -0
  11. ommlds/cli/sessions/chat/drivers/user/inject.py +4 -3
  12. ommlds/cli/sessions/chat/facades/commands/inject.py +0 -2
  13. ommlds/cli/sessions/chat/facades/commands/simple.py +2 -8
  14. ommlds/cli/sessions/chat/facades/facade.py +1 -1
  15. ommlds/cli/sessions/chat/facades/inject.py +5 -0
  16. ommlds/cli/sessions/chat/facades/ui.py +11 -0
  17. ommlds/cli/sessions/chat/interfaces/bare/interactive.py +1 -1
  18. ommlds/cli/sessions/chat/interfaces/bare/oneshot.py +1 -1
  19. ommlds/cli/sessions/chat/interfaces/textual/app.py +21 -3
  20. ommlds/cli/sessions/chat/interfaces/textual/inject.py +2 -5
  21. ommlds/cli/sessions/chat/interfaces/textual/styles/messages.tcss +2 -0
  22. ommlds/cli/sessions/chat/interfaces/textual/widgets/messages.py +12 -5
  23. ommlds/minichain/__init__.py +81 -35
  24. ommlds/minichain/_dataclasses.py +7688 -3344
  25. ommlds/minichain/backends/impls/anthropic/protocol.py +2 -2
  26. ommlds/minichain/backends/impls/cerebras/protocol.py +2 -2
  27. ommlds/minichain/backends/impls/google/tools.py +2 -2
  28. ommlds/minichain/backends/impls/groq/protocol.py +2 -2
  29. ommlds/minichain/backends/impls/ollama/protocol.py +2 -2
  30. ommlds/minichain/backends/impls/openai/format.py +2 -2
  31. ommlds/minichain/backends/strings/resolving.py +1 -1
  32. ommlds/minichain/chat/messages.py +22 -25
  33. ommlds/minichain/chat/templating.py +1 -1
  34. ommlds/minichain/content/__init__.py +9 -2
  35. ommlds/minichain/content/_marshal.py +162 -49
  36. ommlds/minichain/content/code.py +17 -0
  37. ommlds/minichain/content/dynamic.py +12 -0
  38. ommlds/minichain/content/images.py +3 -2
  39. ommlds/minichain/content/json.py +3 -2
  40. ommlds/minichain/content/namespaces.py +9 -0
  41. ommlds/minichain/content/placeholders.py +11 -9
  42. ommlds/minichain/content/quote.py +17 -0
  43. ommlds/minichain/content/raw.py +49 -0
  44. ommlds/minichain/content/section.py +14 -0
  45. ommlds/minichain/content/sequence.py +7 -2
  46. ommlds/minichain/content/{simple.py → standard.py} +3 -13
  47. ommlds/minichain/content/tag.py +19 -0
  48. ommlds/minichain/content/templates.py +14 -0
  49. ommlds/minichain/content/text.py +3 -2
  50. ommlds/minichain/content/transform/base.py +63 -0
  51. ommlds/minichain/content/transform/interleave.py +68 -0
  52. ommlds/minichain/content/transform/materialize.py +110 -0
  53. ommlds/minichain/content/{prepare.py → transform/prepare.py} +12 -13
  54. ommlds/minichain/content/transform/squeeze.py +59 -0
  55. ommlds/minichain/content/{transforms → transform}/stringify.py +0 -6
  56. ommlds/minichain/content/types.py +5 -17
  57. ommlds/minichain/lib/fs/tools/read.py +1 -1
  58. ommlds/minichain/lib/fs/tools/recursivels/rendering.py +1 -1
  59. ommlds/minichain/lib/fs/tools/recursivels/running.py +1 -1
  60. ommlds/minichain/lib/todo/tools/write.py +2 -1
  61. ommlds/minichain/lib/todo/types.py +1 -1
  62. ommlds/minichain/meta/__init__.py +0 -0
  63. ommlds/minichain/meta/firstinwins.py +131 -0
  64. ommlds/minichain/text/applypatch.py +2 -1
  65. ommlds/minichain/text/toolparsing/llamacpp/types.py +1 -1
  66. ommlds/minichain/tokens/specials.py +1 -1
  67. ommlds/minichain/tools/execution/errorhandling.py +35 -0
  68. ommlds/minichain/tools/execution/errors.py +2 -2
  69. ommlds/minichain/tools/jsonschema.py +2 -2
  70. ommlds/minichain/tools/reflect.py +3 -3
  71. ommlds/minichain/tools/types.py +11 -14
  72. ommlds/minichain/vectors/_marshal.py +1 -1
  73. {ommlds-0.0.0.dev494.dist-info → ommlds-0.0.0.dev496.dist-info}/METADATA +4 -4
  74. {ommlds-0.0.0.dev494.dist-info → ommlds-0.0.0.dev496.dist-info}/RECORD +80 -70
  75. ommlds/cli/sessions/chat/interfaces/bare/user.py +0 -31
  76. ommlds/minichain/content/materialize.py +0 -196
  77. ommlds/minichain/content/transforms/base.py +0 -46
  78. ommlds/minichain/content/transforms/interleave.py +0 -70
  79. ommlds/minichain/content/transforms/squeeze.py +0 -72
  80. /ommlds/minichain/content/{transforms → transform}/__init__.py +0 -0
  81. /ommlds/minichain/content/{transforms → transform}/strings.py +0 -0
  82. {ommlds-0.0.0.dev494.dist-info → ommlds-0.0.0.dev496.dist-info}/WHEEL +0 -0
  83. {ommlds-0.0.0.dev494.dist-info → ommlds-0.0.0.dev496.dist-info}/entry_points.txt +0 -0
  84. {ommlds-0.0.0.dev494.dist-info → ommlds-0.0.0.dev496.dist-info}/licenses/LICENSE +0 -0
  85. {ommlds-0.0.0.dev494.dist-info → ommlds-0.0.0.dev496.dist-info}/top_level.txt +0 -0
@@ -101,19 +101,20 @@ ommlds/backends/transformers/filecache.py,sha256=ycfswt7f4qRrPSTFRhofXZaDBuDPpyp
101
101
  ommlds/backends/transformers/streamers.py,sha256=Hu_9lp_kUilKjOfs7Ixqr2NoA5FuRn2eRh8JdvaBDYc,1688
102
102
  ommlds/cli/__init__.py,sha256=-RtLrdEGN2da1KCf7YNs32jN-kJhT_kNVrcOv4x_J-w,101
103
103
  ommlds/cli/__main__.py,sha256=1ffCb0fcUOJMzxROJmJRXQ8PSOVYv7KrcuBtT95cf0c,140
104
- ommlds/cli/_dataclasses.py,sha256=D49EFWCSR-sQ-3h7IGZs5N2o9PXPE0pb69AI6EuarOc,166957
104
+ ommlds/cli/_dataclasses.py,sha256=bvMEFRUiIrRvWhlvxbEYCkmwA5yu-SKgfVuDoSfYORo,166944
105
105
  ommlds/cli/asyncs.py,sha256=NAMzzaZq7ORjlbbBB_Y9vcM9qoBpGf4VJNtl_3p_8G4,629
106
- ommlds/cli/inject.py,sha256=x6kmV7gjkxeo0iXhoqdyxsjaAYX0FdOA5kgYJNYNE-w,805
106
+ ommlds/cli/inject.py,sha256=Bt-T-vQIbp8vh6q21Tt3wDztFZ9FPxNhH2ocrAfjArE,815
107
107
  ommlds/cli/main.py,sha256=l5huH6umQPscG5igFA9LERMPLRbpR3IgrDtCuNP3vas,11164
108
108
  ommlds/cli/secrets.py,sha256=8GHlewS3yeFDfFNekaYwRm4nG9l3nd-Mc8tKl9Ma_Uo,469
109
109
  ommlds/cli/backends/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
110
110
  ommlds/cli/backends/catalog.py,sha256=snQSdUyFiNJhvzVRShBqqp1bZpZlmoKvonypNMZz3HI,3002
111
111
  ommlds/cli/backends/configs.py,sha256=RvNWxsJDSsHc0eWA6hI1_3n__HU7rXAUmzS06ykMPh0,137
112
- ommlds/cli/backends/inject.py,sha256=XBxp2hJmMU5I52Bqvrn2rfRBYUDlD6Ii_nhemqJugak,2523
112
+ ommlds/cli/backends/inject.py,sha256=NBXfTNZiRD476FUn9TgzbaCTkm2RoOYSl97CoMLRYWE,3997
113
113
  ommlds/cli/backends/injection.py,sha256=aCscVcq0_gobzNgLEflGInFC9b_dtnuQgLZ0wX_iTWg,325
114
+ ommlds/cli/backends/meta.py,sha256=wq10RYcUElF3Yudhky7bwte3EGk2ARk2odmRzDJQA_M,997
114
115
  ommlds/cli/backends/types.py,sha256=sut62bGJ3baDbQs3-AwnOwJrvw0VTysqQw8f3yJww8w,966
115
116
  ommlds/cli/content/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
116
- ommlds/cli/content/messages.py,sha256=njaZyEOglagkcmmB7TtoPoATIx5zgr5f6ijPQwMsfSA,937
117
+ ommlds/cli/content/messages.py,sha256=4qW8ac2umJxnehNI0eS0sqVWlzjv8BDDg4WBOOx-pkM,925
117
118
  ommlds/cli/content/strings.py,sha256=pSzQQFYP-RYlpVuVs8HXk_fGlOo-1IT1yAS8umidrzw,1053
118
119
  ommlds/cli/inputs/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
119
120
  ommlds/cli/inputs/asyncs.py,sha256=V7f68qvYD_VFQPUXJPrytL-eqiC3rbUaaijAAjJrFRU,686
@@ -134,9 +135,9 @@ ommlds/cli/sessions/chat/inject.py,sha256=oeyahapgdIVmamDdnzHIGvoEK7oYb0AD4-rxol
134
135
  ommlds/cli/sessions/chat/session.py,sha256=4FkG60Yvcqutz_cgPBmXd7pndcWnijJYrl7ywVX1aCM,374
135
136
  ommlds/cli/sessions/chat/drivers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
136
137
  ommlds/cli/sessions/chat/drivers/configs.py,sha256=eKJTI1y29L6PUnE5SXDkXdPfpBFeyHxMGTrOOIdYFFk,524
137
- ommlds/cli/sessions/chat/drivers/driver.py,sha256=CGvVsl207uq893zSj3fIIYye573gp9drcKcT1wTRe3E,1642
138
- ommlds/cli/sessions/chat/drivers/inject.py,sha256=2QOYp2ZnKi5kfRCO4-OGlo-L7XUDRnDmG0REaAVrVGc,1380
139
- ommlds/cli/sessions/chat/drivers/types.py,sha256=KNDkgdX6FdihIYty5S7HHzsGPE-zdAbqFmxwyZF8CZE,124
138
+ ommlds/cli/sessions/chat/drivers/impl.py,sha256=R02r27U47p2BL7Bo10yvj7FFErgGaWdoxHuXpGkDeqg,1567
139
+ ommlds/cli/sessions/chat/drivers/inject.py,sha256=_vpXG2NvCoG3abUJ2ChaBAWP4CW6A565SEBcguCTgjE,1443
140
+ ommlds/cli/sessions/chat/drivers/types.py,sha256=7GJWl4jJzoqNz0U96Quz3OhZwVBeFjKdl_iPEutiTho,566
140
141
  ommlds/cli/sessions/chat/drivers/ai/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
141
142
  ommlds/cli/sessions/chat/drivers/ai/configs.py,sha256=MjuJicX53mrSHCDTpBTHLUyrovXFkKGqrVguuYbrwNg,185
142
143
  ommlds/cli/sessions/chat/drivers/ai/events.py,sha256=VLy1OBZWWS82avZhMVUZJrOMNE3muuG9oWZtQ7FK_Po,1593
@@ -159,7 +160,7 @@ ommlds/cli/sessions/chat/drivers/phases/types.py,sha256=w1pAEydJYaHzSzdlqygCwKxv
159
160
  ommlds/cli/sessions/chat/drivers/state/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
160
161
  ommlds/cli/sessions/chat/drivers/state/configs.py,sha256=SBXy28r9W71GUKJQ9K4N_Gj4yU3Pd1pMdnjYUB_0JIs,224
161
162
  ommlds/cli/sessions/chat/drivers/state/ids.py,sha256=S_NLoz_sBFsjyOsv94D5YzWkt0E5oT9yENLcNMlmTkU,618
162
- ommlds/cli/sessions/chat/drivers/state/inject.py,sha256=MD_UFY4DNklPnYWFI_lIlPFLiqu6SKIx2WKyLKpbuio,2274
163
+ ommlds/cli/sessions/chat/drivers/state/inject.py,sha256=0BDo-IVb7ZTRCdCiWFEhWgWX3G7YI-k-dechf_Vr4ls,2249
163
164
  ommlds/cli/sessions/chat/drivers/state/inmemory.py,sha256=9PdsjbP9C3t4gcixCrrnZPCt8a_aBvWXTt_urSHi6zg,764
164
165
  ommlds/cli/sessions/chat/drivers/state/storage.py,sha256=qAWb_2w5RyZYLb5HLOSc1AGDYF05rjkFzBibjp-gXuo,1544
165
166
  ommlds/cli/sessions/chat/drivers/state/types.py,sha256=42YDhN8AL3cOfwKaNjKps_L2jXuNJr_BLm2V1LpXJuQ,812
@@ -169,7 +170,7 @@ ommlds/cli/sessions/chat/drivers/tools/confirmation.py,sha256=nmTGAYL9VSBoMYT0dq
169
170
  ommlds/cli/sessions/chat/drivers/tools/errorhandling.py,sha256=7mqFunan0E3CzFDG9PWL1dvUTf3A9XcW9vHhJf2R-wk,910
170
171
  ommlds/cli/sessions/chat/drivers/tools/execution.py,sha256=D1A6hWm35HMAWW8KJCjMRMRIM-NUFfVFkk8uUi97Bws,1516
171
172
  ommlds/cli/sessions/chat/drivers/tools/inject.py,sha256=z5N5H0fRzQQBYk2Yv0sZd-nDxUBfPwCs9w1bYm5LHxk,2491
172
- ommlds/cli/sessions/chat/drivers/tools/injection.py,sha256=tP2tsF2brfpNEBDcZSaMQ5hTEodC7ijOHKkp-qToit8,1162
173
+ ommlds/cli/sessions/chat/drivers/tools/injection.py,sha256=4hDTe6qy-7PeBSda_z68E7k8C0tt8W4WoQB8f5QuVFU,1153
173
174
  ommlds/cli/sessions/chat/drivers/tools/rendering.py,sha256=Q8uXK_AC2Rp5_FSCyg15-bg__Wt9-mUFxI6odQoa9pM,1422
174
175
  ommlds/cli/sessions/chat/drivers/tools/fs/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
175
176
  ommlds/cli/sessions/chat/drivers/tools/fs/configs.py,sha256=hwQ3WRP6hYxjIx-m8z_ZZZ-HwiREuIpa2gRKzeqkoHk,205
@@ -183,19 +184,19 @@ ommlds/cli/sessions/chat/drivers/tools/weather/inject.py,sha256=HSB6gCp23T2HME07
183
184
  ommlds/cli/sessions/chat/drivers/tools/weather/tools.py,sha256=tGkr97D-60Lgsnjs1nSqV5BEZrTNlcaU_TFCY4ZRQyE,304
184
185
  ommlds/cli/sessions/chat/drivers/user/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
185
186
  ommlds/cli/sessions/chat/drivers/user/configs.py,sha256=tBSP2j1Bynn0Qt_S0GNUuNniMWivVSCFad3H4UCS3qY,280
186
- ommlds/cli/sessions/chat/drivers/user/inject.py,sha256=OMVOcyAB82Mrnrlb3aW_7DMO6jsuz7KIZoIYsilFznc,1409
187
+ ommlds/cli/sessions/chat/drivers/user/inject.py,sha256=07l_ihIdFFnyG3IYq9LJZL9neTNgpFzf7Mf5nilWekI,1465
187
188
  ommlds/cli/sessions/chat/facades/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
188
189
  ommlds/cli/sessions/chat/facades/configs.py,sha256=883rajnBaJITfYSEhcZ405VMvoCO9a0gELjuj01Qg_Q,199
189
- ommlds/cli/sessions/chat/facades/facade.py,sha256=bdHxY2NaDsmucBC5YnUsU1Q0HfSl_3Cpmx_6EHq-RYQ,615
190
- ommlds/cli/sessions/chat/facades/inject.py,sha256=Z3mtn-qttMdUB765HaDW0hSO6JDDT42L1UPaD4PIiiM,515
191
- ommlds/cli/sessions/chat/facades/ui.py,sha256=xDK0Dml6hLuSgTodoVZS_WYaFHslmqbtkvPDKFIfAe0,473
190
+ ommlds/cli/sessions/chat/facades/facade.py,sha256=3O8IdcuPquCA8fKMjmaj3p0P-OpNAgNRMs5tyMfqcM8,614
191
+ ommlds/cli/sessions/chat/facades/inject.py,sha256=V7vxYtG7w6BdOKU-ntQfu1BfKSpDXyK22FCdUoyCsT8,632
192
+ ommlds/cli/sessions/chat/facades/ui.py,sha256=GVbLgydHBhc3z0WOjyCDwTw5IOq1l0u0FLDbAwe093c,618
192
193
  ommlds/cli/sessions/chat/facades/commands/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
193
194
  ommlds/cli/sessions/chat/facades/commands/base.py,sha256=_VMSdD0L-PES7BoVUZiYJaK9pScb9_1XqZaMnLXdDkE,2033
194
195
  ommlds/cli/sessions/chat/facades/commands/configs.py,sha256=qMTC7zMn80iS85t06WptCx-XS6V2pt19j6TzutXGVZo,116
195
- ommlds/cli/sessions/chat/facades/commands/inject.py,sha256=q_n5vyEWi59N0vxMYNcjL9kWUSZ7qzJ3ITNicErzXDE,928
196
+ ommlds/cli/sessions/chat/facades/commands/inject.py,sha256=HlwJoN_yequ6ls_7YLg0aNhbsqR-vByEfwQmOnJP54g,821
196
197
  ommlds/cli/sessions/chat/facades/commands/injection.py,sha256=qdYn791FsYH5kHOOneoHXvfPfY6ag6cw43h5-LORKQ0,319
197
198
  ommlds/cli/sessions/chat/facades/commands/manager.py,sha256=6g6r4ctXx6dVbK_68n_OhtMn4n3cXAEPmrUjuFQIocM,1485
198
- ommlds/cli/sessions/chat/facades/commands/simple.py,sha256=12KVFDRVa2EY24yal4jlYwJdMoMGrFcnUfkHP1LbWyQ,846
199
+ ommlds/cli/sessions/chat/facades/commands/simple.py,sha256=5ikypzFpY2jJ_Hi6eIozhwYd5rLSGjEgGPSQiUnaWcQ,772
199
200
  ommlds/cli/sessions/chat/facades/commands/types.py,sha256=LWH9vLxmMC3EDiAR8cwvb1qHSPyqgkysoeMgFj3YfPI,190
200
201
  ommlds/cli/sessions/chat/interfaces/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
201
202
  ommlds/cli/sessions/chat/interfaces/base.py,sha256=3z7yI-ow7037_n6VanQYZjOgKL_iRZ8FB6JP553SY7M,198
@@ -204,24 +205,23 @@ ommlds/cli/sessions/chat/interfaces/inject.py,sha256=aqTYvvtG5Bs0nCkq9dEZPJLG29v
204
205
  ommlds/cli/sessions/chat/interfaces/bare/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
205
206
  ommlds/cli/sessions/chat/interfaces/bare/configs.py,sha256=H6VwzLBF6ose6rgOT0RaooOIimyPFvJxZ_DMDggPzrg,273
206
207
  ommlds/cli/sessions/chat/interfaces/bare/inject.py,sha256=GzeCBcwppVAUlXG61vSQZUuS8KH8YaTAexjhmDol5dM,2115
207
- ommlds/cli/sessions/chat/interfaces/bare/interactive.py,sha256=RvJ5cbAGTbKPXmXdrrW2Q3efM3JXopyYR57askeQuaA,1230
208
- ommlds/cli/sessions/chat/interfaces/bare/oneshot.py,sha256=1TNhTtg6KwzbG8GGxrT64tg9TDFakZ32qxrsT-djTwk,388
208
+ ommlds/cli/sessions/chat/interfaces/bare/interactive.py,sha256=ZnYoePvXtUbhkDQ0jM5gldk-bBrFH_V5oc8O1fuiYcI,1229
209
+ ommlds/cli/sessions/chat/interfaces/bare/oneshot.py,sha256=b758OIa0gf9I_0UdxYJ6re-g8-8xndgr3R0OotUOsmc,387
209
210
  ommlds/cli/sessions/chat/interfaces/bare/tools.py,sha256=_UsuoXLIvfpFP_We5DBBlhm6rwB3_cFA3lmFvpG9b-A,824
210
- ommlds/cli/sessions/chat/interfaces/bare/user.py,sha256=gZgfuQAnU_MH_Awb-Ut6sJE_Di4jvquKOkBT415NmR0,877
211
211
  ommlds/cli/sessions/chat/interfaces/textual/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
212
- ommlds/cli/sessions/chat/interfaces/textual/app.py,sha256=4pfI_eOC9qnd2iHzjPCrLKxYWP8KSGCxaWzdDApbO2Y,8596
212
+ ommlds/cli/sessions/chat/interfaces/textual/app.py,sha256=Ecn4qawdUId-fGhHUXrhEEDDkIUwzOnyKtlBnCrwf2o,9133
213
213
  ommlds/cli/sessions/chat/interfaces/textual/configs.py,sha256=HD8DlWXYJ1M94gr5TIT6oqsFCmOf5Gd6KkSBZUtySew,180
214
214
  ommlds/cli/sessions/chat/interfaces/textual/facades.py,sha256=zXVG7DKVl-Xtdc893O_yktHCMvM0do6hLesMd8hbqeo,411
215
- ommlds/cli/sessions/chat/interfaces/textual/inject.py,sha256=dMcuy14qIx3q6xOw82y4l_2RQ6u_K5UTgNo38ATWF50,2569
215
+ ommlds/cli/sessions/chat/interfaces/textual/inject.py,sha256=ZVG-q3w1xuaIIxm35Zs9R3NyyAdbQUpQD9QXQ-1PypE,2516
216
216
  ommlds/cli/sessions/chat/interfaces/textual/interface.py,sha256=lHeuiMtA7DW9knuapZEOZSl9-9SmOfUxiPnd4-plLHE,445
217
217
  ommlds/cli/sessions/chat/interfaces/textual/tools.py,sha256=KVlUmIyzqUuOHMzB9ZXGUaGsb-Tp5LAmMpB1agAHYjo,985
218
218
  ommlds/cli/sessions/chat/interfaces/textual/styles/__init__.py,sha256=7_U5oUjwegOymeWgt6nLpFfWfjGTrlWL8m4Au8MsaFE,542
219
219
  ommlds/cli/sessions/chat/interfaces/textual/styles/input.tcss,sha256=9LLwsuYjY8y1XTEnBy_ADKzpRaPPvpe-mNHhiAjEIdo,640
220
220
  ommlds/cli/sessions/chat/interfaces/textual/styles/markdown.tcss,sha256=KCKlgt_EEjHVZSTwP_w2YMrR6mURLYVryOwOziAFlTw,105
221
- ommlds/cli/sessions/chat/interfaces/textual/styles/messages.tcss,sha256=fzZtYXzB7eVa0tx4ptzaUMmYNf6dx3chnkkylYUyzMk,1649
221
+ ommlds/cli/sessions/chat/interfaces/textual/styles/messages.tcss,sha256=QBpHJkBT76OkT8srUwhZOt0ZT5ZCzXuM4l8P9hP9ALw,1665
222
222
  ommlds/cli/sessions/chat/interfaces/textual/widgets/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
223
223
  ommlds/cli/sessions/chat/interfaces/textual/widgets/input.py,sha256=7PrKv6ZqPoDOTOE2V-Pz2hru1n1Dwz_4Fxc1eBwqdr0,944
224
- ommlds/cli/sessions/chat/interfaces/textual/widgets/messages.py,sha256=YKF6GEzhvWxOPaH2krSIn2sHjP3zyC0ooBmUe-GzwTw,5417
224
+ ommlds/cli/sessions/chat/interfaces/textual/widgets/messages.py,sha256=hZcentzdznaE_YPId1KsW4k8mAqsSu5zwMdTA5tIj5s,5472
225
225
  ommlds/cli/sessions/completion/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
226
226
  ommlds/cli/sessions/completion/configs.py,sha256=jOtadH46Esx6CztbQazAgIx9Tt5uuu4pGPov3G3O5Ac,286
227
227
  ommlds/cli/sessions/completion/inject.py,sha256=oWRS2D4d-mdCwi7jT_Is462k1UBlCruz4nrUeT9xedY,848
@@ -236,8 +236,8 @@ ommlds/cli/state/storage.py,sha256=Wr8DVuEGUxfFJn0tMWNTVdint6NBDdLKstNWSjx8sKw,3
236
236
  ommlds/datasets/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
237
237
  ommlds/datasets/lib/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
238
238
  ommlds/datasets/lib/movies.py,sha256=LmdfoXsZU9XMM_r-sxCLv_s06BFzwWO4xUj6sc9XVcI,1961
239
- ommlds/minichain/__init__.py,sha256=jsluq9s-dyqsT7ertzpn0QGs6s00GvSHcAOlIrRVgx4,11439
240
- ommlds/minichain/_dataclasses.py,sha256=b29FI8Ujq-cvh3OMPB8gwZGm5Vdu112bSbNxHQxFjqA,707271
239
+ ommlds/minichain/__init__.py,sha256=wJMDzDh0qQfAMWC61VH8IOT6SIK4nNbG6YGubBuVueo,12311
240
+ ommlds/minichain/_dataclasses.py,sha256=vXkMx3Hip0mp5crdmrgAVwYwDoonwGGn4DJdiobl4wU,913466
241
241
  ommlds/minichain/_marshal.py,sha256=n9PGWrHhvAmGIc7KDOYt3IF9Z6G0ncXskyICTp3Ji6k,1923
242
242
  ommlds/minichain/_typedvalues.py,sha256=Vl1Edt5khC0e5RPFBPmPCxn0IzrfVd0NHzAjAN2E6Kc,2183
243
243
  ommlds/minichain/completion.py,sha256=lQ0LfCIYZsvDqteHhhDIv16D2_gn_xMfEL0ouywE5Yo,1033
@@ -262,12 +262,12 @@ ommlds/minichain/backends/impls/tavily.py,sha256=k67QQF4cL8vMtE5LOXxczNFMGlMeRWV
262
262
  ommlds/minichain/backends/impls/anthropic/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
263
263
  ommlds/minichain/backends/impls/anthropic/chat.py,sha256=e4Kcbjvca_yaZsNB_-h335gSCbz4ma1lMUvuR4WzEFE,4874
264
264
  ommlds/minichain/backends/impls/anthropic/names.py,sha256=GPPeYt0CcDcDCR8I6BMd7bMjC_Zk_bjnLLpF9ClwXcg,1099
265
- ommlds/minichain/backends/impls/anthropic/protocol.py,sha256=whPVYuKShKiMCzasHl77sCIiymhzXj8mFZXEyhZvld8,3292
265
+ ommlds/minichain/backends/impls/anthropic/protocol.py,sha256=eMqkl7ML5btqJ27_9l6RY2zdTMsQe0k3Kn_keNq0-Mk,3337
266
266
  ommlds/minichain/backends/impls/anthropic/stream.py,sha256=jxKzytoYJLK9JftihGhWTcFIoXFgouQR7Yu5Q1j_ku8,8794
267
267
  ommlds/minichain/backends/impls/cerebras/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
268
268
  ommlds/minichain/backends/impls/cerebras/chat.py,sha256=FbwXrOMbHIIzO8gLZsyI3faYJYFYWPcxZTMxcpIaB4Y,2858
269
269
  ommlds/minichain/backends/impls/cerebras/names.py,sha256=NcJF7Py3y8EiQUJ5gL3KV2l25rpsi4Hc3_bwHv7lncQ,574
270
- ommlds/minichain/backends/impls/cerebras/protocol.py,sha256=nceKmwpwU9HCEVStPqrIa55pi86RiPokrsAs5r034lM,5221
270
+ ommlds/minichain/backends/impls/cerebras/protocol.py,sha256=9ldK0_XM7il0JX3jjcLL8svBiRANrgY65V1Dq4ANevw,5268
271
271
  ommlds/minichain/backends/impls/cerebras/stream.py,sha256=gMGlP_QNQ9h8qGZSoFwEZ-mpND7_hx86y3smrsLrUX8,5150
272
272
  ommlds/minichain/backends/impls/duckduckgo/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
273
273
  ommlds/minichain/backends/impls/duckduckgo/search.py,sha256=HA5UriBVvNw6-6vmeYJsm83LxsFsksLtzFxj-kdzoPE,1010
@@ -278,11 +278,11 @@ ommlds/minichain/backends/impls/google/chat.py,sha256=lGb5blGLlcBlt9xeDZJvbh5SlV
278
278
  ommlds/minichain/backends/impls/google/names.py,sha256=HxHJ31HeKZg6aW1C_Anqp-gamCXpq9pOdKj8_yVgE8Y,871
279
279
  ommlds/minichain/backends/impls/google/search.py,sha256=y5_6seSRU8CFnLA_Ja8XEMbIBWSgwBzE1iBf-qyz0tA,3427
280
280
  ommlds/minichain/backends/impls/google/stream.py,sha256=AT8qbP0EqJUnf-D45aTbEQ0h5lvgtIK6XKki0t8RkZE,8029
281
- ommlds/minichain/backends/impls/google/tools.py,sha256=Tty0gsyx7-PbeoNqMuql_ewQ6q-ZsDaDdsD5ShinGVY,5089
281
+ ommlds/minichain/backends/impls/google/tools.py,sha256=bP4bqHt1oZTvrcObkjQCNAUJEXrR9fFIRuvjsVFM910,5109
282
282
  ommlds/minichain/backends/impls/groq/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
283
283
  ommlds/minichain/backends/impls/groq/chat.py,sha256=XXJznM6h2fBBtrY8MggMUNJf8thyFTM3p1XzFImwkAk,2743
284
284
  ommlds/minichain/backends/impls/groq/names.py,sha256=RnvBSytxPF1a9Bj_OPVELuD1nAKJnJrG3ZwJfYo6Szs,1075
285
- ommlds/minichain/backends/impls/groq/protocol.py,sha256=FPydA4ftMhXFLEfYjmHsmNdBoM4gcEthvqmeX5yB3pc,5214
285
+ ommlds/minichain/backends/impls/groq/protocol.py,sha256=QNvqcfR9FbAIJv1fVerayws5gYU1am3oLFXmYMnQdX4,5261
286
286
  ommlds/minichain/backends/impls/groq/stream.py,sha256=5PZHrs_QNyKofJClKq5R5aOsq-H26UeWH7uncbJGrmI,5124
287
287
  ommlds/minichain/backends/impls/huggingface/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
288
288
  ommlds/minichain/backends/impls/huggingface/configs.py,sha256=6jsBtPNXOP57PcpxNTVLGWLc-18Iwn_lDbGouwCJTIQ,258
@@ -296,12 +296,12 @@ ommlds/minichain/backends/impls/mlx/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQ
296
296
  ommlds/minichain/backends/impls/mlx/chat.py,sha256=tmZZAmVg-XcbxZYGNHrKC0hiJbxW88pgEHqIEC5D2Xc,7536
297
297
  ommlds/minichain/backends/impls/ollama/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
298
298
  ommlds/minichain/backends/impls/ollama/chat.py,sha256=vCf_Pw9_4D-gNFD7OrIbWnEOqJE_Vxb_mxiZ0NgCP4c,6816
299
- ommlds/minichain/backends/impls/ollama/protocol.py,sha256=1G5B1dtLdfOQVI32fSgzMaqN0iPv_WZkn1p6KKVgUNM,4749
299
+ ommlds/minichain/backends/impls/ollama/protocol.py,sha256=zB0Q6PChiRlskDhjvpXIb3pSeLcH1wFg5QUqfo20R-s,4796
300
300
  ommlds/minichain/backends/impls/openai/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
301
301
  ommlds/minichain/backends/impls/openai/chat.py,sha256=G1IK94PwB16rYCkRos9JEuiAu1GgCK4CnZFOIShhpig,2856
302
302
  ommlds/minichain/backends/impls/openai/completion.py,sha256=4Mi4Zvrq5fCqUd0asL3WiCbCdmxOdo0NFkoZMfdsYXY,1939
303
303
  ommlds/minichain/backends/impls/openai/embedding.py,sha256=BNtvKYLTsnQwQR9Tv3Fr8zCYN1kr1UNdJ15lcsjz6X0,1765
304
- ommlds/minichain/backends/impls/openai/format.py,sha256=dAvaqi3LhPu7N9S8BDBkuGSWdD_cxkBEIXPLChcGWdk,7414
304
+ ommlds/minichain/backends/impls/openai/format.py,sha256=wIAwgvCkzEP2HdTUMeaZqJhEV2UJddS462WpvK0oduU,7457
305
305
  ommlds/minichain/backends/impls/openai/names.py,sha256=M1spn4Yio6LEnKWEzPqXSrzJg3wsf2M1iZIYFAvxb80,1550
306
306
  ommlds/minichain/backends/impls/openai/stream.py,sha256=bsZeGUepqOl9AcN44kWk03V6q-v1ewBCfZqb_MJEfxg,5454
307
307
  ommlds/minichain/backends/impls/sentencepiece/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
@@ -317,15 +317,15 @@ ommlds/minichain/backends/impls/transformers/transformers.py,sha256=hXWNe2knROuT
317
317
  ommlds/minichain/backends/strings/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
318
318
  ommlds/minichain/backends/strings/manifests.py,sha256=kmlanVUAZqIh0P95Mm8H20e8ib3gEgYHHUlkCXDQGFk,413
319
319
  ommlds/minichain/backends/strings/parsing.py,sha256=Etmk04BnKvCMtGg4AgbvxsPGvfRcLldLxpdpxcozdNk,1779
320
- ommlds/minichain/backends/strings/resolving.py,sha256=q0qMdIvFZH-yScpXNX8GHE_yyQC_eEf1eptiUnNolUI,5849
320
+ ommlds/minichain/backends/strings/resolving.py,sha256=b2Ivt6Xi50Jv8U7ef6CkMWzJDTBF28pqyNN4_9z39TY,5861
321
321
  ommlds/minichain/chat/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
322
322
  ommlds/minichain/chat/_marshal.py,sha256=M3p093nxzxITbznc--P-tyCXuWDHrq4JFKTZAx6XWdk,740
323
323
  ommlds/minichain/chat/formats.py,sha256=LmlU7iu8PMJuroFTmyWfP4tXvLjj5VNxdAp1Us9MSAA,562
324
324
  ommlds/minichain/chat/history.py,sha256=GI10mTCr8yv0mxJRK-YVtYqOuUjBvX5Su5FYYmLpPxU,1566
325
- ommlds/minichain/chat/messages.py,sha256=73jhLnJ1U5SkSrcnWAdQIya8BxoBhD88TuVhWPEGWUE,3578
325
+ ommlds/minichain/chat/messages.py,sha256=zTIMLvZM33_sFmRbl3ohEAy3jTgPGAIa1Fjg-_0Bi2w,3480
326
326
  ommlds/minichain/chat/metadata.py,sha256=V8EUqUsiAITtIae8SC_4YyyBBvciG34jRuSylql4AvU,248
327
327
  ommlds/minichain/chat/services.py,sha256=HzP35CLOz-vCptUUpuehI5yNJorTtY64gwrb6ZWNfwI,919
328
- ommlds/minichain/chat/templating.py,sha256=pUgYC6N9-IGr3TXWt-uN5pTQ5XVt5S0--xA2_7u-37E,3148
328
+ ommlds/minichain/chat/templating.py,sha256=3P46me6H_cY-hTqVW4jK7lFAbuUuwpsZX9QOYg5QB6s,3147
329
329
  ommlds/minichain/chat/types.py,sha256=tHYR1jRGEStNbcDebMrEuHQBNpYh8id2MS0-1Fzxwgs,430
330
330
  ommlds/minichain/chat/choices/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
331
331
  ommlds/minichain/chat/choices/adapters.py,sha256=Keroaj0B5YEYPF3k0fOQK6JUZnM1XVFThGB5Uv689Sc,629
@@ -350,25 +350,32 @@ ommlds/minichain/chat/transforms/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRk
350
350
  ommlds/minichain/chat/transforms/base.py,sha256=V22SasLdnzvmSO7C19gigi8LKeWVtBHmhaSJbkj6b4Y,2923
351
351
  ommlds/minichain/chat/transforms/metadata.py,sha256=Gw1cUIk2cVzHMyFPwboY_HWEuV_Ts3R4AVmOuyH120A,1563
352
352
  ommlds/minichain/chat/transforms/services.py,sha256=wJw2eu-TU1sVXUYvg7rc7QNn93cCXhtEI_q-KZ5Dz0I,1016
353
- ommlds/minichain/content/__init__.py,sha256=nHXG5a6KSoM9xqlvA4jfwVNbCtqV88bg7298PmmNJKA,384
354
- ommlds/minichain/content/_marshal.py,sha256=ZvdEKtB7a5ZoQgPBjeGleWx-Qr0UAc8LJICRBRjOndA,6035
355
- ommlds/minichain/content/images.py,sha256=d69MgAQm9DaslJJIqRJNY3f75t_Ti5aqkGG1Ypi5Iew,426
356
- ommlds/minichain/content/json.py,sha256=g4QjFLYJQUE38u5nd1QzNgruwl06efyaBjiq5ehftd0,250
357
- ommlds/minichain/content/materialize.py,sha256=GHfDIj0mTt1EkCHxqteNN_zLmPawZ3-GFt5ZaAg3tLs,5146
353
+ ommlds/minichain/content/__init__.py,sha256=dQGwU7lJ2i1Khhm7vu-bgCXA-SSzZGbRSnED0YbJSSA,503
354
+ ommlds/minichain/content/_marshal.py,sha256=72XnBsUaYDsmjnYMNEeaU0g7LxMCpa4FU9qG9WbEvHY,9195
355
+ ommlds/minichain/content/code.py,sha256=lw-jc-U-op6lIdbzu9wz3HZpPKm6jx3RQvwLoGFpr1o,285
356
+ ommlds/minichain/content/dynamic.py,sha256=vXOdc7roBoL7C9DXPo9K4KZFeehJAH-Woq_YN3v13wU,197
357
+ ommlds/minichain/content/images.py,sha256=9q53vOsb2miAT_8xT-7G1DgrruELySzNXiLgT0VoabI,448
358
+ ommlds/minichain/content/json.py,sha256=OYwS_bW1RVyaenpetc_k-SXgGHxx9KJOxNzA_Xy9sv0,272
358
359
  ommlds/minichain/content/metadata.py,sha256=FcWW8YbtDEz5rmucvfqjMTC4aA6rO2WQJtP0lX_DShs,248
359
- ommlds/minichain/content/namespaces.py,sha256=KkIrwQZ_9bojw5ytkNX8-5FI4ZdCEAEnMAUElx6p51Y,95
360
- ommlds/minichain/content/placeholders.py,sha256=NMl2m5yVVv9fnNinyXP_UKoa7ZDUIArZqwbbj5f96yI,526
361
- ommlds/minichain/content/prepare.py,sha256=3nHK_WLE79hFjFGsiporKR688SEEymP7ppWb8_uztv0,1893
362
- ommlds/minichain/content/sequence.py,sha256=BWwdh5MA95j2tggygDMioM1pT-vJrD0LYYpAYM5cIrY,569
363
- ommlds/minichain/content/simple.py,sha256=8Psf7n50Z9uMVhxWesQVveHSFX78EKdPEGG5Wm3LDP8,1199
364
- ommlds/minichain/content/text.py,sha256=kcadL2Ojq7AwNdT_vMk5EhOC3mZpFTFpKbMjdkfUoos,215
365
- ommlds/minichain/content/types.py,sha256=fJhf55HNJP-tTKf_yd_n_4XFBmJkoNF912NU0-QyQDU,575
366
- ommlds/minichain/content/transforms/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
367
- ommlds/minichain/content/transforms/base.py,sha256=omdEId9FZbeCk8Aak-oMJpMiY4vK4nrQWAbhzmsHZkc,1054
368
- ommlds/minichain/content/transforms/interleave.py,sha256=ULrVlPpm_cEvrnObQ70OJgobVfKh5GwxxkvFWpP1DMM,2256
369
- ommlds/minichain/content/transforms/squeeze.py,sha256=Bf9lKjR3pRQBT0BabH8YRRlR31KO8tpHQX_mzWsxT3U,1672
370
- ommlds/minichain/content/transforms/stringify.py,sha256=-DhAkRQeRzh-ULQFP25HipyKdrR1lKooGEyw6BwEg-w,1237
371
- ommlds/minichain/content/transforms/strings.py,sha256=-uEZ8dXnl_5dNfkwedBeUGzCiAWJn-B4DGMeM0hX3dA,466
360
+ ommlds/minichain/content/namespaces.py,sha256=nr9KdKiL1DJyZF059QJGa7NJanAMBgwP5bo7ffnSles,325
361
+ ommlds/minichain/content/placeholders.py,sha256=CsGTYAPPu1COKLss5jzLpn0qeoN56yBpLJs3qr6f0F4,416
362
+ ommlds/minichain/content/quote.py,sha256=Cn03AYZEaK_wGZgPgdi1S9ffwJSCB8x8OZ4y_ZtZZVY,257
363
+ ommlds/minichain/content/raw.py,sha256=evB4Vv7Tk42tQrVf5-f78wdjeXEqwcdWEz0pt7z58WQ,676
364
+ ommlds/minichain/content/section.py,sha256=iYtNUYl5tV7qfyD1a2rxtAPn3VKCQ_zYqsJa95Su7J8,246
365
+ ommlds/minichain/content/sequence.py,sha256=cuTzM48Dgdn2wyfIPcN9-kL7jHM1sn0WHabeAokZ4Jw,649
366
+ ommlds/minichain/content/standard.py,sha256=uKECecSSiOVnNYXuVWPkAMkYa0-uLXRW2vumwDMOn50,995
367
+ ommlds/minichain/content/tag.py,sha256=1uA9kctmjYd-ftgSmVkOAebydKAj0EdgduvZP7erYaQ,358
368
+ ommlds/minichain/content/templates.py,sha256=S09GAjBX_qeRTIgtd7lXs4EFzM-ujsbEbJbsnuj9wO0,290
369
+ ommlds/minichain/content/text.py,sha256=BcptL8PETJc1f7bBLHf51949E_UOhzAn1MzvanjJEgg,237
370
+ ommlds/minichain/content/types.py,sha256=wgZRE164BkJAkRi3tcwEZGvSfw_15MIRy5mxah-v5gQ,361
371
+ ommlds/minichain/content/transform/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
372
+ ommlds/minichain/content/transform/base.py,sha256=6w2Uk-DpYyL0_I-jZ-qCz6Trw_R-wJTeE61T_bMxDQ0,1829
373
+ ommlds/minichain/content/transform/interleave.py,sha256=M3FkEyFBR6N51wBltrpoNGDyI6Cpj0sTUUiho73fD8c,2308
374
+ ommlds/minichain/content/transform/materialize.py,sha256=0MTzUmbJnTlvMoBXwBGjeHqGUNACZicUzjrapASKvWU,3078
375
+ ommlds/minichain/content/transform/prepare.py,sha256=Olh2cBckcq438h0NL2kGymrQLLNUO1cBVK3W7o2d07k,1818
376
+ ommlds/minichain/content/transform/squeeze.py,sha256=8TL2G0-pFxVk63IVhbGbFVoeuYkKQMunBQfgNRNFTEE,1415
377
+ ommlds/minichain/content/transform/stringify.py,sha256=PwA4T7qBUBDfSfuV6UXibBSDC5NwbgZt-A2rkXDx0Ts,1063
378
+ ommlds/minichain/content/transform/strings.py,sha256=-uEZ8dXnl_5dNfkwedBeUGzCiAWJn-B4DGMeM0hX3dA,466
372
379
  ommlds/minichain/docs/__init__.py,sha256=vNpT6sA5YDalFqsCFn0DjUvarxRtRl3w2V9liEU0CQk,364
373
380
  ommlds/minichain/docs/docs.py,sha256=Ex7hiqaiYDB9hQhUjuzot8MFktl3LIGG41YBFaNoC80,1340
374
381
  ommlds/minichain/docs/dtypes.py,sha256=BRZmLK9NfQwITBYmDOmRPDlFg1RP5BYWT0Xw04AinF8,499
@@ -385,21 +392,23 @@ ommlds/minichain/lib/fs/suggestions.py,sha256=mpWTr1XgXyt0XEp1kEFnC7CEhxKB80Z3t6
385
392
  ommlds/minichain/lib/fs/tools/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
386
393
  ommlds/minichain/lib/fs/tools/edit.py,sha256=_4BQZqIVcaEjfmpYUSv4xLZMYyJGNQTQ1Cm8WyaIo1Q,3440
387
394
  ommlds/minichain/lib/fs/tools/ls.py,sha256=SMe060i6DWLe3-d9b4EYs2KOsJRv3Rw8Mi3SxTE-dTc,830
388
- ommlds/minichain/lib/fs/tools/read.py,sha256=ui5ltCDnP35byeYsirXg7b459PJLAvxftHIFBdLKn2o,3536
395
+ ommlds/minichain/lib/fs/tools/read.py,sha256=nrIuuLlnMlk2xR8ltOB4sspHTmF60IZt220Fb5dS4xY,3535
389
396
  ommlds/minichain/lib/fs/tools/recursivels/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
390
397
  ommlds/minichain/lib/fs/tools/recursivels/execution.py,sha256=9fC9wtH-h93Mi1oGnxeNIyRZSisSxaMH4M1i7Ac4L-8,970
391
- ommlds/minichain/lib/fs/tools/recursivels/rendering.py,sha256=ZeeQA7o59Kg9Ili8icpBzlFMMUHvCejERSBnqpqRYPo,4296
392
- ommlds/minichain/lib/fs/tools/recursivels/running.py,sha256=s52tal84PRvF2X8spvyFkKC8jHjBJbJMKSkriAXzt98,1601
398
+ ommlds/minichain/lib/fs/tools/recursivels/rendering.py,sha256=zmpBHmkrKbQBpz9qE0YJ1vwHYSyEJDlI_53G3EgeP0E,4308
399
+ ommlds/minichain/lib/fs/tools/recursivels/running.py,sha256=tmsxSXK5BMoDkTD-z0pjySP6sw8oDL2yepzmUaQl9lA,1613
393
400
  ommlds/minichain/lib/todo/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
394
401
  ommlds/minichain/lib/todo/context.py,sha256=ne3kUvP2QRd9hCE9KbJIGI-ugA6fOKoqcK4VSHEH2B0,1398
395
- ommlds/minichain/lib/todo/types.py,sha256=pdmbZWNq49xQZm_k6GzrHrEY-J48Zxf4G9TCmPf-4P0,1580
402
+ ommlds/minichain/lib/todo/types.py,sha256=oypIB9tIbMeZBk5MAl0uETqxJFsZ7hRrVOandLnS82I,1592
396
403
  ommlds/minichain/lib/todo/tools/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
397
404
  ommlds/minichain/lib/todo/tools/read.py,sha256=7P8ohR-t9y9f_iF-kr0JA36ti0LhJCeBpMsnXeXwHoU,1501
398
- ommlds/minichain/lib/todo/tools/write.py,sha256=TGO-zuF62j61pB8tFxd9wdtMHrYuVvnwnjinMOOGabk,14734
405
+ ommlds/minichain/lib/todo/tools/write.py,sha256=AVLW9iEHrukFoPILDchb7qvJUP-CbEuUM9-GNFqXVyU,14804
399
406
  ommlds/minichain/llms/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
400
407
  ommlds/minichain/llms/_marshal.py,sha256=YR7n2GVhS9I2rDvKe-VqzS-u1WbLcJT9DgFBO6oZ9fo,1518
401
408
  ommlds/minichain/llms/tokens.py,sha256=RPrAzf4Qx9xNPGj7_EkzcVOR9qIGkhQg8AM6qhr7gfw,292
402
409
  ommlds/minichain/llms/types.py,sha256=STXV-zAhJ2yytbVn6JSNxCLDIqmKpsg0q4vq8ueRvJA,1130
410
+ ommlds/minichain/meta/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
411
+ ommlds/minichain/meta/firstinwins.py,sha256=gEOT4pc7wjLqlRNS6cAWwk6NY25DYqyhiIL0-KZiF18,3333
403
412
  ommlds/minichain/models/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
404
413
  ommlds/minichain/models/configs.py,sha256=5iyz_yDk3nlfQouRTvy__8I_ohn7bh67LTbFn30t5UU,825
405
414
  ommlds/minichain/models/names.py,sha256=SqXrOkSFTI2VkfA5puGGb0EFg2TvvNZpJgTF7eS60CY,1158
@@ -421,7 +430,7 @@ ommlds/minichain/stream/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG
421
430
  ommlds/minichain/stream/services.py,sha256=YXfEj3ZXKZ3Svkig6f3hOReHgZnLY2tDn2bgB0RIoRI,5566
422
431
  ommlds/minichain/stream/wrap.py,sha256=nQC0aCi49I18nF0Yx8qiiLkhIAECV6s6o4pvOy5Kx98,2041
423
432
  ommlds/minichain/text/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
424
- ommlds/minichain/text/applypatch.py,sha256=YIN5JChJ0FXyK1I6OiAHQmE7BT-exHfaAMM9ay7ylyc,17705
433
+ ommlds/minichain/text/applypatch.py,sha256=rHB6nG_2RqUAJFvrP1blrONy6ZpVP_M3aX5XQInonA0,17718
425
434
  ommlds/minichain/text/toolparsing/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
426
435
  ommlds/minichain/text/toolparsing/base.py,sha256=x1BgoJ02JRL1EACjTUbu4CdJFepUjtb4Wvneehqy7uc,778
427
436
  ommlds/minichain/text/toolparsing/dumb.py,sha256=vlo1JV0dJJhvkDelxLQ3oP5iJ7qgCubFskm3zmXXwn8,2326
@@ -429,27 +438,28 @@ ommlds/minichain/text/toolparsing/llamacpp/LICENSE,sha256=qdhCDdf2l1o1vBm7Dxs4x0
429
438
  ommlds/minichain/text/toolparsing/llamacpp/__init__.py,sha256=31OIbWoQbjd2AFKXqmePeDI9dTu6w9E5pnA5wD_vmbI,108
430
439
  ommlds/minichain/text/toolparsing/llamacpp/hermes2.py,sha256=76_m9BOohfcoOVvEIH_Uo2vStl1Oaukdz476HyrZxq0,8069
431
440
  ommlds/minichain/text/toolparsing/llamacpp/llama31.py,sha256=WdVRL6xa0oyyCNJY7tPB8tfj2fHcihEN6Ez_RXTXbzw,3690
432
- ommlds/minichain/text/toolparsing/llamacpp/types.py,sha256=xB4h1ko4nS7nnmHQ2RiH8Jm_vTOoH5NIYmfmh7VSZfk,349
441
+ ommlds/minichain/text/toolparsing/llamacpp/types.py,sha256=qXmNWN3O3yk-mfd9YosjA32tJa2sVQkJxxb65xpvjkY,361
433
442
  ommlds/minichain/text/toolparsing/llamacpp/utils.py,sha256=XwpDrw8tU7C7TQ9ydpp_FcBPXmBCSfTtt-v_mZwmuMY,8063
434
443
  ommlds/minichain/tokens/__init__.py,sha256=yUZmihBsJJSK1je2LbeywFf0_ichCIv5gYIjoY2bLI8,721
435
- ommlds/minichain/tokens/specials.py,sha256=htCnFSHZa4sTgJUpcyAhxxXDUMFZFQEvDkyTCLKxFnQ,6884
444
+ ommlds/minichain/tokens/specials.py,sha256=TjC_m1OFuJFC3yXA3_oJmBGW9rwIXoZg0-HZoYTZsVc,6896
436
445
  ommlds/minichain/tokens/tokenizers.py,sha256=WcEa64aa9_IGjyLY05WUpT60xehFLvsZJQhbAGTnFXE,1769
437
446
  ommlds/minichain/tokens/types.py,sha256=VEzBA6ZrpA0dweWkwkvNK0dMhlrKm7z9J2b4zij4i70,630
438
447
  ommlds/minichain/tokens/vocabs.py,sha256=-4WSCbeeoELLiAaRSzbi-z6Cv-hyTRK1T9HMm_iqToE,3681
439
448
  ommlds/minichain/tools/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
440
449
  ommlds/minichain/tools/_marshal.py,sha256=9np2tuzGfRwL5BMCd6QYChzimtTBUfHxT4IoEA6v3Eg,410
441
450
  ommlds/minichain/tools/fns.py,sha256=UVgj9f0vnjFzP5uP4zpN4slOA5nEOD8Ob1aJwKrSggA,3930
442
- ommlds/minichain/tools/jsonschema.py,sha256=20i3Yrw91nzgYRcZfVfrDjtFEpGD1Gc_5iiFhq1KV8w,4233
443
- ommlds/minichain/tools/reflect.py,sha256=fI0b6ZGaJbk-Ll7oXuByX5fVWHh5UaUW37O5WHbZlyA,8694
444
- ommlds/minichain/tools/types.py,sha256=z1OP4sHumsSnqxTD3eL8tgTHarDmw7VWUyJu9cW7Yho,4868
451
+ ommlds/minichain/tools/jsonschema.py,sha256=gipEyit6OmVAa02Azhk8xbFHlolWXd0Jp5x_fvAzdHg,4253
452
+ ommlds/minichain/tools/reflect.py,sha256=TdE9qyiRqKisf4VST9Cng-I_lsSNdSxSXJ1g1TOyXHE,8697
453
+ ommlds/minichain/tools/types.py,sha256=_8G7ZeHwF8buSTvl30bz0n3Pc0LX57G4F9YQViZaGGg,4767
445
454
  ommlds/minichain/tools/execution/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
446
455
  ommlds/minichain/tools/execution/catalog.py,sha256=sBde49FSClTreX8KO5pZ2-EE1NyTZOoagNdowN3n5pE,2002
447
456
  ommlds/minichain/tools/execution/context.py,sha256=Gdl1UNjzLQTeIc7m2BlNyLtNsdqCookQv12_WwDDkAI,1872
448
- ommlds/minichain/tools/execution/errors.py,sha256=-fE4yh-PsKQqYMyZW0CZMZIjXkJHLZAYyl3j2VYkJ-U,251
457
+ ommlds/minichain/tools/execution/errorhandling.py,sha256=6ZymDv9BmYpS9ERt7OD_h5mLcaHNtHaLjL3vRsyWhEk,934
458
+ ommlds/minichain/tools/execution/errors.py,sha256=rom0RTc2GUy1TbuJeA-aMagp_TMTIw33kH-1MMzOX2s,239
449
459
  ommlds/minichain/tools/execution/executors.py,sha256=cyx7JKKQfuqSVujNLXSo0qtXSkCDJ_plddvitmDUxeQ,1365
450
460
  ommlds/minichain/tools/execution/reflect.py,sha256=Oklzx5jlMyNj6ivecEQfP6Zt_ICxc-nk-x9xSsxswlg,1817
451
461
  ommlds/minichain/vectors/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
452
- ommlds/minichain/vectors/_marshal.py,sha256=UTUru1dt9uefyn1Rql1VrVivt6OzN24Jpzg210_ouaA,1563
462
+ ommlds/minichain/vectors/_marshal.py,sha256=scmavC2AOjIPi3kccHl6ZGRT9E5r5CENIC1Gv4DbYoM,1575
453
463
  ommlds/minichain/vectors/embeddings.py,sha256=_r5DcCaTI-we_XLAHcPv-1PsKI-i-ndptn_qOJ9_fbc,1000
454
464
  ommlds/minichain/vectors/index.py,sha256=NFUeVffjQZd6HILpLEd8tKBLmVKl-2ZTjtsr91ah6VA,1135
455
465
  ommlds/minichain/vectors/search.py,sha256=27MTUiVT2xmSnmgJTAR09oQaiNRh1ixj0mGZVuSTVEg,1508
@@ -487,9 +497,9 @@ ommlds/wiki/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU
487
497
  ommlds/wiki/utils/io.py,sha256=UKgDJGtmpnWvIqVd2mJc2QNPOqlToEY1GEveNp6_pMo,7088
488
498
  ommlds/wiki/utils/progress.py,sha256=EhvKcMFYtsarCQhIahlO6f0SboyAKP3UwUyrnVnP-Vk,3222
489
499
  ommlds/wiki/utils/xml.py,sha256=sNJNkZ9rT8B-kJMO6bRz8J1USy4fyPx0m2PwTX7vxYY,3846
490
- ommlds-0.0.0.dev494.dist-info/licenses/LICENSE,sha256=B_hVtavaA8zCYDW99DYdcpDLKz1n3BBRjZrcbv8uG8c,1451
491
- ommlds-0.0.0.dev494.dist-info/METADATA,sha256=s66oz2DP7St7_J-TdrcewRD11_dp0Bez1WJGSVQdAqg,3495
492
- ommlds-0.0.0.dev494.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
493
- ommlds-0.0.0.dev494.dist-info/entry_points.txt,sha256=Z5YWtX7ClfiCKdW-dd_CSVvM0h4yQpJPi-2G3q6gNFo,35
494
- ommlds-0.0.0.dev494.dist-info/top_level.txt,sha256=Rbnk5d5wi58vnAXx13WFZqdQ4VX8hBCS2hEL3WeXOhY,7
495
- ommlds-0.0.0.dev494.dist-info/RECORD,,
500
+ ommlds-0.0.0.dev496.dist-info/licenses/LICENSE,sha256=B_hVtavaA8zCYDW99DYdcpDLKz1n3BBRjZrcbv8uG8c,1451
501
+ ommlds-0.0.0.dev496.dist-info/METADATA,sha256=Dd3WP3Uj6LhCcjwlsgJVmp13K6J7Q5j59328QOLpg80,3495
502
+ ommlds-0.0.0.dev496.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
503
+ ommlds-0.0.0.dev496.dist-info/entry_points.txt,sha256=Z5YWtX7ClfiCKdW-dd_CSVvM0h4yQpJPi-2G3q6gNFo,35
504
+ ommlds-0.0.0.dev496.dist-info/top_level.txt,sha256=Rbnk5d5wi58vnAXx13WFZqdQ4VX8hBCS2hEL3WeXOhY,7
505
+ ommlds-0.0.0.dev496.dist-info/RECORD,,
@@ -1,31 +0,0 @@
1
- import typing as ta
2
-
3
- from ...... import minichain as mc
4
- from .....inputs.asyncs import AsyncStringInput
5
- from .....inputs.asyncs import SyncAsyncStringInput
6
- from .....inputs.sync import InputSyncStringInput
7
- from ...drivers.user.types import UserChatInput
8
-
9
-
10
- ##
11
-
12
-
13
- class InteractiveUserChatInput(UserChatInput):
14
- DEFAULT_STRING_INPUT: ta.ClassVar[AsyncStringInput] = SyncAsyncStringInput(InputSyncStringInput())
15
-
16
- def __init__(
17
- self,
18
- string_input: AsyncStringInput | None = None,
19
- ) -> None:
20
- super().__init__()
21
-
22
- if string_input is None:
23
- string_input = self.DEFAULT_STRING_INPUT
24
- self._string_input = string_input
25
-
26
- async def get_next_user_messages(self) -> 'mc.UserChat':
27
- try:
28
- s = await self._string_input()
29
- except EOFError:
30
- return []
31
- return [mc.UserMessage(s)]
@@ -1,196 +0,0 @@
1
- """
2
- TODO:
3
- - ExtendedCanContent
4
- """
5
- import dataclasses as dc
6
- import typing as ta
7
-
8
- from omlish import check
9
- from omlish import dispatch
10
- from omlish.text import templating as tpl
11
-
12
- from .namespaces import ContentNamespace
13
- from .placeholders import ContentPlaceholder
14
- from .placeholders import ContentPlaceholderMarker
15
- from .types import Content
16
- from .types import ExtendedContent
17
-
18
-
19
- ##
20
-
21
-
22
- _InnerCanContent: ta.TypeAlias = ta.Union[ # noqa
23
- str,
24
- ExtendedContent,
25
-
26
- ContentPlaceholder,
27
- type[ContentPlaceholderMarker],
28
-
29
- type[ContentNamespace],
30
-
31
- tpl.Templater,
32
- ]
33
-
34
- CanContent: ta.TypeAlias = ta.Union[ # noqa
35
- ta.Iterable['CanContent'],
36
-
37
- None,
38
-
39
- _InnerCanContent,
40
- ]
41
-
42
-
43
- ##
44
-
45
-
46
- ContentPlaceholderKey: ta.TypeAlias = ContentPlaceholder | type[ContentPlaceholderMarker]
47
- ContentPlaceholderMap: ta.TypeAlias = ta.Mapping[ContentPlaceholderKey, CanContent]
48
- ContentPlaceholderFn: ta.TypeAlias = ta.Callable[[ContentPlaceholderKey], CanContent]
49
- ContentPlaceholders: ta.TypeAlias = ContentPlaceholderMap | ContentPlaceholderFn
50
-
51
-
52
- @dc.dataclass()
53
- class ContentPlaceholderMissingError(Exception):
54
- key: ContentPlaceholderKey
55
-
56
-
57
- def _make_content_placeholder_fn(cps: ContentPlaceholders | None = None) -> ContentPlaceholderFn:
58
- if cps is None:
59
- def none_fn(cpk: ContentPlaceholderKey) -> CanContent:
60
- raise ContentPlaceholderMissingError(cpk)
61
-
62
- return none_fn
63
-
64
- elif isinstance(cps, ta.Mapping):
65
- def mapping_fn(cpk: ContentPlaceholderKey) -> CanContent:
66
- try:
67
- return cps[cpk]
68
- except KeyError:
69
- raise ContentPlaceholderMissingError(cpk) from None
70
-
71
- return mapping_fn
72
-
73
- elif callable(cps):
74
- return cps
75
-
76
- else:
77
- raise TypeError(cps)
78
-
79
-
80
- ##
81
-
82
-
83
- class ContentDepthExceededError(Exception):
84
- pass
85
-
86
-
87
- class ContentMaterializer:
88
- DEFAULT_MAX_DEPTH: int = 100
89
-
90
- def __init__(
91
- self,
92
- *,
93
- content_placeholders: ContentPlaceholders | None = None,
94
- templater_context: tpl.Templater.Context | None = None,
95
- max_depth: int = DEFAULT_MAX_DEPTH,
96
- ) -> None:
97
- super().__init__()
98
-
99
- self._templater_context = templater_context
100
- self._content_placeholders_fn = _make_content_placeholder_fn(content_placeholders)
101
- self._max_depth = max_depth
102
-
103
- self._cur_depth = 0
104
-
105
- def materialize(self, o: CanContent) -> Content:
106
- if self._cur_depth >= self._max_depth:
107
- raise ContentDepthExceededError
108
-
109
- self._cur_depth += 1
110
- try:
111
- return self._materialize(o)
112
- finally:
113
- self._cur_depth -= 1
114
-
115
- @dispatch.method()
116
- def _materialize(self, o: CanContent) -> Content:
117
- raise TypeError(o)
118
-
119
- #
120
-
121
- @_materialize.register
122
- def _materialize_str(self, o: str) -> Content:
123
- return o
124
-
125
- @_materialize.register
126
- def _materialize_extended_content(self, o: ExtendedContent) -> Content:
127
- return o
128
-
129
- #
130
-
131
- @_materialize.register
132
- def _materialize_iterable(self, o: ta.Iterable) -> Content:
133
- # `collections.abc.Iterable` appears as a virtual base in the dispatch c3.mro for ContentNamespace before `type`
134
- # does (due to NamespaceMeta having `__iter__`), so handle that here too.
135
- if isinstance(o, type) and issubclass(o, ContentNamespace):
136
- return self._materialize_namespace_type(o)
137
-
138
- else:
139
- return [self.materialize(e) for e in o]
140
-
141
- @_materialize.register
142
- def _materialize_none(self, o: None) -> Content:
143
- return []
144
-
145
- #
146
-
147
- @_materialize.register
148
- def _materialize_placeholder(self, o: ContentPlaceholder) -> Content:
149
- return self.materialize(self._content_placeholders_fn(o))
150
-
151
- def _materialize_placeholder_marker_type(self, o: type[ContentPlaceholderMarker]) -> Content:
152
- check.issubclass(o, ContentPlaceholderMarker)
153
- return self.materialize(self._content_placeholders_fn(o))
154
-
155
- #
156
-
157
- def _materialize_namespace_type(self, o: type[ContentNamespace]) -> Content:
158
- check.issubclass(o, ContentNamespace)
159
-
160
- out: list[Content] = []
161
- for n, e in o:
162
- if n.startswith('_'):
163
- continue
164
- out.append(self.materialize(e))
165
- return out
166
-
167
- #
168
-
169
- @_materialize.register
170
- def _materialize_type(self, o: type) -> Content:
171
- if issubclass(o, ContentPlaceholderMarker):
172
- return self._materialize_placeholder_marker_type(o)
173
-
174
- elif issubclass(o, ContentNamespace):
175
- return self._materialize_namespace_type(o)
176
-
177
- else:
178
- raise TypeError(o)
179
-
180
- #
181
-
182
- @_materialize.register
183
- def _materialize_templater(self, o: tpl.Templater) -> Content:
184
- return o.render(check.not_none(self._templater_context))
185
-
186
-
187
- def materialize_content(
188
- o: CanContent,
189
- *,
190
- content_placeholders: ContentPlaceholders | None = None,
191
- templater_context: tpl.Templater.Context | None = None,
192
- ) -> Content:
193
- return ContentMaterializer(
194
- content_placeholders=content_placeholders,
195
- templater_context=templater_context,
196
- ).materialize(o)
@@ -1,46 +0,0 @@
1
- import collections.abc
2
- import typing as ta
3
-
4
- from omlish import dataclasses as dc
5
- from omlish import dispatch
6
- from omlish import lang
7
-
8
- from ..images import ImageContent
9
- from ..sequence import SequenceContent
10
- from ..text import TextContent
11
-
12
-
13
- T = ta.TypeVar('T')
14
-
15
-
16
- ##
17
-
18
-
19
- class ContentTransform(lang.Abstract):
20
- @dispatch.method(installable=True)
21
- def apply(self, o: T) -> T:
22
- raise TypeError(o)
23
-
24
- #
25
-
26
- @apply.register # noqa
27
- def apply_str(self, s: str) -> str:
28
- return s
29
-
30
- @apply.register # noqa
31
- def apply_sequence(self, l: collections.abc.Sequence[T]) -> collections.abc.Sequence[T]:
32
- return [self.apply(e) for e in l]
33
-
34
- #
35
-
36
- @apply.register
37
- def apply_image_content(self, c: ImageContent) -> ImageContent:
38
- return c
39
-
40
- @apply.register
41
- def apply_sequence_content(self, c: SequenceContent) -> SequenceContent:
42
- return dc.replace(c, l=self.apply(c.l))
43
-
44
- @apply.register
45
- def apply_text_content(self, c: TextContent) -> TextContent:
46
- return dc.replace(c, s=self.apply(c.s))