ommlds 0.0.0.dev476__py3-none-any.whl → 0.0.0.dev478__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 (50) hide show
  1. ommlds/.omlish-manifests.json +18 -6
  2. ommlds/backends/groq/protocol.py +69 -4
  3. ommlds/cli/sessions/chat/chat/ai/rendering.py +3 -3
  4. ommlds/cli/sessions/chat/chat/ai/services.py +2 -2
  5. ommlds/cli/sessions/chat/chat/ai/types.py +1 -1
  6. ommlds/cli/sessions/chat/tools/configs.py +9 -0
  7. ommlds/cli/sessions/chat/tools/fs/__init__.py +0 -0
  8. ommlds/cli/sessions/chat/tools/fs/configs.py +12 -0
  9. ommlds/cli/sessions/chat/tools/fs/inject.py +35 -0
  10. ommlds/cli/sessions/chat/tools/inject.py +11 -64
  11. ommlds/cli/sessions/chat/tools/injection.py +14 -0
  12. ommlds/cli/sessions/chat/tools/todo/__init__.py +0 -0
  13. ommlds/cli/sessions/chat/tools/todo/configs.py +12 -0
  14. ommlds/cli/sessions/chat/tools/todo/inject.py +31 -0
  15. ommlds/cli/sessions/chat/tools/weather/__init__.py +0 -0
  16. ommlds/cli/sessions/chat/tools/weather/configs.py +12 -0
  17. ommlds/cli/sessions/chat/tools/weather/inject.py +22 -0
  18. ommlds/cli/sessions/chat/tools/{weather.py → weather/tools.py} +1 -1
  19. ommlds/minichain/__init__.py +39 -22
  20. ommlds/minichain/backends/impls/anthropic/stream.py +11 -11
  21. ommlds/minichain/backends/impls/dummy/chat.py +7 -7
  22. ommlds/minichain/backends/impls/google/stream.py +9 -9
  23. ommlds/minichain/backends/impls/groq/chat.py +11 -5
  24. ommlds/minichain/backends/impls/groq/names.py +13 -0
  25. ommlds/minichain/backends/impls/groq/protocol.py +120 -23
  26. ommlds/minichain/backends/impls/groq/stream.py +14 -10
  27. ommlds/minichain/backends/impls/llamacpp/stream.py +7 -7
  28. ommlds/minichain/backends/impls/mlx/chat.py +7 -7
  29. ommlds/minichain/backends/impls/ollama/chat.py +7 -7
  30. ommlds/minichain/backends/impls/openai/format.py +10 -10
  31. ommlds/minichain/backends/impls/openai/names.py +2 -2
  32. ommlds/minichain/backends/impls/openai/stream.py +8 -8
  33. ommlds/minichain/backends/impls/tinygrad/chat.py +7 -7
  34. ommlds/minichain/backends/impls/transformers/transformers.py +7 -7
  35. ommlds/minichain/chat/choices/stream/__init__.py +0 -0
  36. ommlds/minichain/chat/{stream → choices/stream}/adapters.py +7 -7
  37. ommlds/minichain/chat/choices/stream/joining.py +31 -0
  38. ommlds/minichain/chat/choices/stream/services.py +45 -0
  39. ommlds/minichain/chat/choices/stream/types.py +43 -0
  40. ommlds/minichain/chat/stream/_marshal.py +4 -4
  41. ommlds/minichain/chat/stream/joining.py +32 -43
  42. ommlds/minichain/chat/stream/services.py +15 -15
  43. ommlds/minichain/chat/stream/types.py +13 -23
  44. ommlds/minichain/tools/reflect.py +5 -1
  45. {ommlds-0.0.0.dev476.dist-info → ommlds-0.0.0.dev478.dist-info}/METADATA +3 -3
  46. {ommlds-0.0.0.dev476.dist-info → ommlds-0.0.0.dev478.dist-info}/RECORD +50 -37
  47. {ommlds-0.0.0.dev476.dist-info → ommlds-0.0.0.dev478.dist-info}/WHEEL +0 -0
  48. {ommlds-0.0.0.dev476.dist-info → ommlds-0.0.0.dev478.dist-info}/entry_points.txt +0 -0
  49. {ommlds-0.0.0.dev476.dist-info → ommlds-0.0.0.dev478.dist-info}/licenses/LICENSE +0 -0
  50. {ommlds-0.0.0.dev476.dist-info → ommlds-0.0.0.dev478.dist-info}/top_level.txt +0 -0
@@ -0,0 +1,45 @@
1
+ import abc
2
+ import typing as ta
3
+
4
+ from omlish import lang
5
+
6
+ from ....registries.globals import register_type
7
+ from ....services import Request
8
+ from ....services import Service
9
+ from ....stream.services import StreamResponse
10
+ from ...messages import Chat
11
+ from ..types import ChatChoicesOutputs
12
+ from .types import AiChoicesDeltas
13
+ from .types import ChatChoicesStreamOptions
14
+ from .types import ChatChoicesStreamOutputs
15
+
16
+
17
+ ##
18
+
19
+
20
+ ChatChoicesStreamRequest: ta.TypeAlias = Request[Chat, ChatChoicesStreamOptions]
21
+
22
+ ChatChoicesStreamResponse: ta.TypeAlias = StreamResponse[
23
+ AiChoicesDeltas,
24
+ ChatChoicesOutputs,
25
+ ChatChoicesStreamOutputs,
26
+ ]
27
+
28
+ # @omlish-manifest $.minichain.registries.manifests.RegistryTypeManifest
29
+ ChatChoicesStreamService: ta.TypeAlias = Service[ChatChoicesStreamRequest, ChatChoicesStreamResponse]
30
+
31
+ register_type(ChatChoicesStreamService, module=__name__)
32
+
33
+
34
+ def static_check_is_chat_choices_stream_service[T: ChatChoicesStreamService](t: type[T]) -> type[T]:
35
+ return t
36
+
37
+
38
+ ##
39
+
40
+
41
+ @static_check_is_chat_choices_stream_service
42
+ class AbstractChatChoicesStreamService(lang.Abstract):
43
+ @abc.abstractmethod
44
+ def invoke(self, request: ChatChoicesStreamRequest) -> ta.Awaitable[ChatChoicesStreamResponse]:
45
+ raise NotImplementedError
@@ -0,0 +1,43 @@
1
+ import typing as ta
2
+
3
+ from omlish import dataclasses as dc
4
+ from omlish import lang
5
+
6
+ from ....stream.services import StreamOptions
7
+ from ....types import Option
8
+ from ....types import Output
9
+ from ...stream.types import AiDeltas
10
+ from ..types import ChatChoicesOptions
11
+
12
+
13
+ ##
14
+
15
+
16
+ class ChatChoicesStreamOption(Option, lang.Abstract, lang.PackageSealed):
17
+ pass
18
+
19
+
20
+ ChatChoicesStreamOptions: ta.TypeAlias = ChatChoicesStreamOption | StreamOptions | ChatChoicesOptions
21
+
22
+
23
+ ##
24
+
25
+
26
+ class ChatChoicesStreamOutput(Output, lang.Abstract, lang.PackageSealed):
27
+ pass
28
+
29
+
30
+ ChatChoicesStreamOutputs: ta.TypeAlias = ChatChoicesStreamOutput
31
+
32
+
33
+ ##
34
+
35
+
36
+ @dc.dataclass(frozen=True)
37
+ class AiChoiceDeltas(lang.Final):
38
+ deltas: AiDeltas
39
+
40
+
41
+ @dc.dataclass(frozen=True)
42
+ class AiChoicesDeltas(lang.Final):
43
+ choices: ta.Sequence[AiChoiceDeltas]
@@ -1,7 +1,7 @@
1
1
  from omlish import lang
2
2
  from omlish import marshal as msh
3
3
 
4
- from .types import AiChoiceDelta
4
+ from .types import AiDelta
5
5
 
6
6
 
7
7
  ##
@@ -9,8 +9,8 @@ from .types import AiChoiceDelta
9
9
 
10
10
  @lang.static_init
11
11
  def _install_standard_marshaling() -> None:
12
- acd_poly = msh.polymorphism_from_subclasses(AiChoiceDelta, naming=msh.Naming.SNAKE)
12
+ ad_poly = msh.polymorphism_from_subclasses(AiDelta, naming=msh.Naming.SNAKE)
13
13
  msh.install_standard_factories(
14
- msh.PolymorphismMarshalerFactory(acd_poly),
15
- msh.PolymorphismUnmarshalerFactory(acd_poly),
14
+ msh.PolymorphismMarshalerFactory(ad_poly),
15
+ msh.PolymorphismUnmarshalerFactory(ad_poly),
16
16
  )
@@ -8,40 +8,36 @@ 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._deltas: list[AiDelta] = []
26
+ self._messages: list[AnyAiMessage] = []
27
27
 
28
- class _Channel(ta.NamedTuple):
29
- deltas: list[AiChoiceDelta]
30
- messages: list[AnyAiMessage]
31
-
32
- def _build_joined(self, deltas: ta.Sequence[AiChoiceDelta]) -> AnyAiMessage:
28
+ def _build_joined(self, deltas: ta.Sequence[AiDelta]) -> AnyAiMessage:
33
29
  dty = check.single(set(map(type, check.not_empty(deltas))))
34
30
 
35
- if dty is ContentAiChoiceDelta:
36
- cds = ta.cast(ta.Sequence[ContentAiChoiceDelta], deltas)
31
+ if dty is ContentAiDelta:
32
+ cds = ta.cast(ta.Sequence[ContentAiDelta], deltas)
37
33
  return AiMessage(''.join(check.isinstance(cd.c, str) for cd in cds))
38
34
 
39
- elif dty is ToolUseAiChoiceDelta:
35
+ elif dty is ToolUseAiDelta:
40
36
  raise TypeError(dty)
41
37
 
42
- elif dty is PartialToolUseAiChoiceDelta:
43
- tds = ta.cast(ta.Sequence[PartialToolUseAiChoiceDelta], deltas)
44
- for td in ta.cast(ta.Sequence[PartialToolUseAiChoiceDelta], deltas)[1:]:
38
+ elif dty is PartialToolUseAiDelta:
39
+ tds = ta.cast(ta.Sequence[PartialToolUseAiDelta], deltas)
40
+ for td in ta.cast(ta.Sequence[PartialToolUseAiDelta], deltas)[1:]:
45
41
  check.none(td.id)
46
42
  check.none(td.name)
47
43
 
@@ -57,40 +53,33 @@ class AiChoiceDeltaJoiner:
57
53
  else:
58
54
  raise TypeError(dty)
59
55
 
60
- def _join_one(self, chan: _Channel) -> None:
61
- if not chan.deltas:
56
+ def _maybe_join(self) -> None:
57
+ if not self._deltas:
62
58
  return
63
59
 
64
- chan.messages.append(self._build_joined(chan.deltas))
65
- chan.deltas.clear()
60
+ self._messages.append(self._build_joined(self._deltas))
61
+ self._deltas.clear()
66
62
 
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)
63
+ def _add_one(self, d: AiDelta) -> None:
64
+ if self._deltas and type(self._deltas[0]) is not type(d):
65
+ self._maybe_join()
70
66
 
71
- if isinstance(d, ToolUseAiChoiceDelta):
72
- chan.messages.append(ToolUseMessage(ToolUse(
67
+ if isinstance(d, ToolUseAiDelta):
68
+ self._messages.append(ToolUseMessage(ToolUse(
73
69
  id=d.id,
74
70
  name=check.not_none(d.name),
75
71
  args=d.args or {},
72
+ raw_args=json.dumps_compact(d.args),
76
73
  )))
77
74
 
78
75
  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)
76
+ self._deltas.append(d)
89
77
 
90
- self._seq += 1
78
+ def add(self, deltas: AiDeltas) -> None:
79
+ for d in deltas:
80
+ self._add_one(d)
91
81
 
92
- def build(self) -> list[AiChat]:
93
- for chan in self._channels:
94
- self._join_one(chan)
82
+ def build(self) -> AiChat:
83
+ self._maybe_join()
95
84
 
96
- return [list(chan.messages) for chan in self._channels]
85
+ return list(self._messages)
@@ -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
@@ -8,7 +8,7 @@ from ...content.types 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,36 +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
+
45
48
  #
46
49
 
47
50
 
48
51
  @dc.dataclass(frozen=True)
49
- class ContentAiChoiceDelta(AiChoiceDelta, lang.Final):
52
+ class ContentAiDelta(AiDelta, lang.Final):
50
53
  c: Content
51
54
 
52
55
 
@@ -54,29 +57,16 @@ class ContentAiChoiceDelta(AiChoiceDelta, lang.Final):
54
57
 
55
58
 
56
59
  @dc.dataclass(frozen=True, kw_only=True)
57
- class AnyToolUseAiChoiceDelta(AiChoiceDelta, lang.Abstract):
60
+ class AnyToolUseAiDelta(AiDelta, lang.Abstract):
58
61
  id: str | None = None
59
62
  name: str | None = None
60
63
 
61
64
 
62
65
  @dc.dataclass(frozen=True, kw_only=True)
63
- class ToolUseAiChoiceDelta(AnyToolUseAiChoiceDelta, lang.Final):
66
+ class ToolUseAiDelta(AnyToolUseAiDelta, lang.Final):
64
67
  args: ta.Mapping[str, ta.Any] | None = None
65
68
 
66
69
 
67
70
  @dc.dataclass(frozen=True, kw_only=True)
68
- class PartialToolUseAiChoiceDelta(AnyToolUseAiChoiceDelta, lang.Final):
71
+ class PartialToolUseAiDelta(AnyToolUseAiDelta, lang.Final):
69
72
  raw_args: ta.Any | None = None
70
-
71
-
72
- #
73
-
74
-
75
- @dc.dataclass(frozen=True)
76
- class AiChoiceDeltas(lang.Final):
77
- deltas: ta.Sequence[AiChoiceDelta]
78
-
79
-
80
- @dc.dataclass(frozen=True)
81
- class AiChoicesDeltas(lang.Final):
82
- choices: ta.Sequence[AiChoiceDeltas]
@@ -15,10 +15,10 @@ import textwrap
15
15
  import types
16
16
  import typing as ta
17
17
 
18
- from omdev.py import docstrings
19
18
  from omlish import check
20
19
  from omlish import collections as col
21
20
  from omlish import dataclasses as dc
21
+ from omlish import lang
22
22
  from omlish import metadata as md
23
23
  from omlish import reflect as rfl
24
24
  from omlish.lite.cached import cached_nullary
@@ -37,6 +37,10 @@ from .types import TupleToolDtype
37
37
  from .types import UnionToolDtype
38
38
 
39
39
 
40
+ with lang.auto_proxy_import(globals()):
41
+ from omdev.py import docstrings
42
+
43
+
40
44
  ##
41
45
 
42
46
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: ommlds
3
- Version: 0.0.0.dev476
3
+ Version: 0.0.0.dev478
4
4
  Summary: ommlds
5
5
  Author: wrmsr
6
6
  License-Expression: BSD-3-Clause
@@ -14,8 +14,8 @@ Classifier: Programming Language :: Python :: 3.13
14
14
  Requires-Python: >=3.13
15
15
  Description-Content-Type: text/markdown
16
16
  License-File: LICENSE
17
- Requires-Dist: omdev==0.0.0.dev476
18
- Requires-Dist: omlish==0.0.0.dev476
17
+ Requires-Dist: omdev==0.0.0.dev478
18
+ Requires-Dist: omlish==0.0.0.dev478
19
19
  Provides-Extra: all
20
20
  Requires-Dist: llama-cpp-python~=0.3; extra == "all"
21
21
  Requires-Dist: mlx~=0.29; extra == "all"
@@ -1,4 +1,4 @@
1
- ommlds/.omlish-manifests.json,sha256=iFZm89KS4aONhIRo1mbtKiHARMrNZ4SfQLSNgJO_Iek,25355
1
+ ommlds/.omlish-manifests.json,sha256=uNauTZ9FpiirIw1ElVuf66UOCUR-K7BN8lfCPUNnINg,25714
2
2
  ommlds/__about__.py,sha256=5ekfRjb6SiK6o6SAusykyPQ_oxy46_IEga7nD0EL0cI,1839
3
3
  ommlds/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
4
4
  ommlds/_hacks/__init__.py,sha256=ajfw7dMKH8UuloeQ5MSxWwgAmdWf2v8gm-K3uLP9wtY,196
@@ -22,7 +22,7 @@ ommlds/backends/google/protocol/_marshal.py,sha256=LWikcdMDrKQ0lMtclNXwK9qamijUB
22
22
  ommlds/backends/google/protocol/types.py,sha256=JDft5-5sPuy8sFWTvid4JuC9a9EnuQizt9dyAV2L56s,17536
23
23
  ommlds/backends/groq/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
24
24
  ommlds/backends/groq/_marshal.py,sha256=3o4CVK9VbP_UnEbXZ4fQJuZK3Sy9xnkXTTempSDSvgE,602
25
- ommlds/backends/groq/protocol.py,sha256=ufZ6UIJnQfei28q9o6GpPiD9AJ_LZa9SSOWP7B79qcg,5871
25
+ ommlds/backends/groq/protocol.py,sha256=ieKrjlxcDE5RqWcugc996O5Ksy4Chse_RdigPQPbP2Y,7823
26
26
  ommlds/backends/llamacpp/__init__.py,sha256=zXFpLXE4a2vEl0jcPDyKlPHHfZ3Z8Dz0twhEIyZ8-vg,59
27
27
  ommlds/backends/llamacpp/buildwheel.py,sha256=q9ghCLVbm8Jm6syrZlBP-x1qNDd0wSl15B2OXBtDBQ8,3813
28
28
  ommlds/backends/llamacpp/logging.py,sha256=nCEC6ASEuTpJqx47DMLhnbr5KelDlbxhM0nKQt4bc3w,773
@@ -123,10 +123,10 @@ ommlds/cli/sessions/chat/chat/ai/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRk
123
123
  ommlds/cli/sessions/chat/chat/ai/configs.py,sha256=zIth9PKJ9u68Mblctraj2HQcEuiztKGF5sPeJZ-OABw,182
124
124
  ommlds/cli/sessions/chat/chat/ai/inject.py,sha256=hyYIL7v_aFFtOZGRKwwPqu_A0Uox1sW_m4twrz2aahI,2482
125
125
  ommlds/cli/sessions/chat/chat/ai/injection.py,sha256=2O_ELMusxQsYaB2oqvzjYpZQzjshocJup7Z5unzoUIY,404
126
- ommlds/cli/sessions/chat/chat/ai/rendering.py,sha256=SC_0l059ZNvNgpO3uivmJLRbG2YuDynvAkz92dcanIw,2293
127
- ommlds/cli/sessions/chat/chat/ai/services.py,sha256=W70n0AyjaHqq3MDiYTs4Tyczr0QPCyavxUQL2b4Dpog,2511
126
+ ommlds/cli/sessions/chat/chat/ai/rendering.py,sha256=cMSO-ibCaz_zbeumVo-IncAbTM84UeuAsRr9jaw3IxM,2275
127
+ ommlds/cli/sessions/chat/chat/ai/services.py,sha256=OVYwO1tsfHyHgPHfNFkd1Dn0x9cB3j-bfA30oYWf1xA,2506
128
128
  ommlds/cli/sessions/chat/chat/ai/tools.py,sha256=en94LLM8y73N11xhQPlkSLfbzAmYVwKU-4nz2i0CK0E,1094
129
- ommlds/cli/sessions/chat/chat/ai/types.py,sha256=QH6Cn6DrdxBi0Tnura7Fq-WtGUm0FdsazZSgki6nf0A,750
129
+ ommlds/cli/sessions/chat/chat/ai/types.py,sha256=v92Z6WiU67O2Z9wyWGHdIxGwYLeOhvFVGd_h9coT1tM,744
130
130
  ommlds/cli/sessions/chat/chat/state/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
131
131
  ommlds/cli/sessions/chat/chat/state/configs.py,sha256=VMrqC-2dE8lXZmT1dBgUUReS0FDQWzD0U6thSyjOOZM,192
132
132
  ommlds/cli/sessions/chat/chat/state/inject.py,sha256=PXGn3Q6wuDHEID0D7p8xh_w2H1TGQpusR-zu4MmGUsc,1107
@@ -145,13 +145,22 @@ ommlds/cli/sessions/chat/phases/injection.py,sha256=ZUFRRLp3HNhKaPBW6aiw5XFEGNkq
145
145
  ommlds/cli/sessions/chat/phases/manager.py,sha256=_wfc0FfL5h_5L-6hnYb3U3kiRmkGDkJu7wGj5Cgz7_Y,727
146
146
  ommlds/cli/sessions/chat/phases/types.py,sha256=w1pAEydJYaHzSzdlqygCwKxvVZnfo_R_xJqq8wBzZsQ,512
147
147
  ommlds/cli/sessions/chat/tools/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
148
- ommlds/cli/sessions/chat/tools/configs.py,sha256=nyOD8J5dWUCaYY-AXEOAqUwZA46wl70c9WD7TZh4Vl8,244
148
+ ommlds/cli/sessions/chat/tools/configs.py,sha256=DuRT3In_VHLur6UpvFI8EY5bOqmdLNMSNTUvbzCLFOo,361
149
149
  ommlds/cli/sessions/chat/tools/confirmation.py,sha256=I_nYBIIoeprCShUaVpN4v01YOAdY6iJEM5-ybc0p8VA,1072
150
150
  ommlds/cli/sessions/chat/tools/execution.py,sha256=4sRuZWZjNBo852hhLZjqTqEZpgu9KPXHEawiICIMUdc,1576
151
- ommlds/cli/sessions/chat/tools/inject.py,sha256=oz1UOx-HM0h6LJ2BXYLDED2C-m7v54RI_2ILk_5lfB4,3780
152
- ommlds/cli/sessions/chat/tools/injection.py,sha256=RDtsOuy4qycaVq_v8J6_u8ZCUycBg0hAN8qr0rojFKw,838
151
+ ommlds/cli/sessions/chat/tools/inject.py,sha256=MzORGqT4sNLu3ApNoExNjD8OLFKFmwpHmN_-qNVBlp8,2634
152
+ ommlds/cli/sessions/chat/tools/injection.py,sha256=BGpkYciYNVlfyi6HcQqgrtLyWbFuIXJx-yr2eC4TmYY,1161
153
153
  ommlds/cli/sessions/chat/tools/rendering.py,sha256=-BO-rY_WycmAf1WC9jhiRqnBJiQOtUA5jaXcOC2K6aw,1404
154
- ommlds/cli/sessions/chat/tools/weather.py,sha256=vZXOHdRGGlkDEXasW5foc58MyEMOc79bhIfIgrumRlo,302
154
+ ommlds/cli/sessions/chat/tools/fs/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
155
+ ommlds/cli/sessions/chat/tools/fs/configs.py,sha256=hwQ3WRP6hYxjIx-m8z_ZZZ-HwiREuIpa2gRKzeqkoHk,205
156
+ ommlds/cli/sessions/chat/tools/fs/inject.py,sha256=hq2PHA9ZgfmghOZ4RlagtfJfJAk0cdEsH90WZuVjlvY,806
157
+ ommlds/cli/sessions/chat/tools/todo/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
158
+ ommlds/cli/sessions/chat/tools/todo/configs.py,sha256=pcdjTKsRB4J_iBET2tcOx-32EHqtecxLg4JtelMyh1o,207
159
+ ommlds/cli/sessions/chat/tools/todo/inject.py,sha256=FU4fCGWJKXviNvSsjoAENM1My1-zUrrbkL2RPelLqik,805
160
+ ommlds/cli/sessions/chat/tools/weather/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
161
+ ommlds/cli/sessions/chat/tools/weather/configs.py,sha256=VzamzIHkTOVVEKeH5pCq3oWZdREpT2O73v0CImCerDU,210
162
+ ommlds/cli/sessions/chat/tools/weather/inject.py,sha256=HSB6gCp23T2HME07FzBiiFpWnloErCIO7yTWcOu5DVk,456
163
+ ommlds/cli/sessions/chat/tools/weather/tools.py,sha256=TeXOmxTtuKgiGNl00t4pcHqhh3HSTeiEZRyZv1rs7Pg,303
155
164
  ommlds/cli/sessions/completion/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
156
165
  ommlds/cli/sessions/completion/configs.py,sha256=ZibOyJxIMbclzKDK_mj8jVzFJxjkyVWmo1Tb9ZnQQ1M,240
157
166
  ommlds/cli/sessions/completion/inject.py,sha256=vk3ewhXWGemKcOllr1iG_nMz5523qEu40MI62Dlx9AQ,933
@@ -166,7 +175,7 @@ ommlds/cli/state/storage.py,sha256=h7wcWkJaQ17nIS2GtBOk4fiu6ZyPLtmKXwVgpVN-hAg,3
166
175
  ommlds/datasets/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
167
176
  ommlds/datasets/lib/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
168
177
  ommlds/datasets/lib/movies.py,sha256=LmdfoXsZU9XMM_r-sxCLv_s06BFzwWO4xUj6sc9XVcI,1961
169
- ommlds/minichain/__init__.py,sha256=uruXAyfKzg_Ed3ZPkiNVopZugZV62-eqPOT1EtxljiA,11042
178
+ ommlds/minichain/__init__.py,sha256=5dwCPjaHhEDFOW8HIiC67eCWcOBHcsWUeKKfY5kyxAk,11410
170
179
  ommlds/minichain/_marshal.py,sha256=n9PGWrHhvAmGIc7KDOYt3IF9Z6G0ncXskyICTp3Ji6k,1923
171
180
  ommlds/minichain/_typedvalues.py,sha256=Vl1Edt5khC0e5RPFBPmPCxn0IzrfVd0NHzAjAN2E6Kc,2183
172
181
  ommlds/minichain/completion.py,sha256=lQ0LfCIYZsvDqteHhhDIv16D2_gn_xMfEL0ouywE5Yo,1033
@@ -191,22 +200,22 @@ ommlds/minichain/backends/impls/anthropic/__init__.py,sha256=47DEQpj8HBSa-_TImW-
191
200
  ommlds/minichain/backends/impls/anthropic/chat.py,sha256=-qGr_DZgGe-dr1AKb6WLtCq_I2E9635X1rQZSJqOb04,4318
192
201
  ommlds/minichain/backends/impls/anthropic/names.py,sha256=GPPeYt0CcDcDCR8I6BMd7bMjC_Zk_bjnLLpF9ClwXcg,1099
193
202
  ommlds/minichain/backends/impls/anthropic/protocol.py,sha256=whPVYuKShKiMCzasHl77sCIiymhzXj8mFZXEyhZvld8,3292
194
- ommlds/minichain/backends/impls/anthropic/stream.py,sha256=NNBFb0sMId9yWua3fkAMZ-qYhQN9nLrXiO4DViR77YI,8790
203
+ ommlds/minichain/backends/impls/anthropic/stream.py,sha256=jxKzytoYJLK9JftihGhWTcFIoXFgouQR7Yu5Q1j_ku8,8794
195
204
  ommlds/minichain/backends/impls/duckduckgo/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
196
205
  ommlds/minichain/backends/impls/duckduckgo/search.py,sha256=igzeU9P9b1MMiu4KAJVS9H6KLIoPm68wXi4Kx3_DHyQ,940
197
206
  ommlds/minichain/backends/impls/dummy/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
198
- ommlds/minichain/backends/impls/dummy/chat.py,sha256=_FYMplztZqXqjiFW3dkpytDRX1G4kw_zcBvJevkH4zE,2255
207
+ ommlds/minichain/backends/impls/dummy/chat.py,sha256=FUTvNPWmb4Hm-axglvPiqbvLwE7sajHOM5H7j9Qj2-c,2283
199
208
  ommlds/minichain/backends/impls/google/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
200
209
  ommlds/minichain/backends/impls/google/chat.py,sha256=lGb5blGLlcBlt9xeDZJvbh5SlV7fgfezd5_As_SPBXo,6499
201
210
  ommlds/minichain/backends/impls/google/names.py,sha256=HxHJ31HeKZg6aW1C_Anqp-gamCXpq9pOdKj8_yVgE8Y,871
202
211
  ommlds/minichain/backends/impls/google/search.py,sha256=y5_6seSRU8CFnLA_Ja8XEMbIBWSgwBzE1iBf-qyz0tA,3427
203
- ommlds/minichain/backends/impls/google/stream.py,sha256=ITownhKSOJB4IG23wWZJepUImSM6vJsDMOM9W1STpwU,8013
212
+ ommlds/minichain/backends/impls/google/stream.py,sha256=AT8qbP0EqJUnf-D45aTbEQ0h5lvgtIK6XKki0t8RkZE,8029
204
213
  ommlds/minichain/backends/impls/google/tools.py,sha256=Tty0gsyx7-PbeoNqMuql_ewQ6q-ZsDaDdsD5ShinGVY,5089
205
214
  ommlds/minichain/backends/impls/groq/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
206
- ommlds/minichain/backends/impls/groq/chat.py,sha256=jXomRPouYrlFBsFvviSsR4T6l6Cpf8Ut5TiqhjuzkjY,2451
207
- ommlds/minichain/backends/impls/groq/names.py,sha256=M_NRKpcbFgnN0ZAVaQMQFHRZV62lE8hZ2qoDiM_A8gs,748
208
- ommlds/minichain/backends/impls/groq/protocol.py,sha256=kLHcVjwyh5AosKXWengDJZBdHWUwMrmCd_2ZKgor0EA,1451
209
- ommlds/minichain/backends/impls/groq/stream.py,sha256=RDcDfTb2zH1rco0jEzNNqu04MXv7Fbqm5AlTimdQqK0,4850
215
+ ommlds/minichain/backends/impls/groq/chat.py,sha256=XXJznM6h2fBBtrY8MggMUNJf8thyFTM3p1XzFImwkAk,2743
216
+ ommlds/minichain/backends/impls/groq/names.py,sha256=RnvBSytxPF1a9Bj_OPVELuD1nAKJnJrG3ZwJfYo6Szs,1075
217
+ ommlds/minichain/backends/impls/groq/protocol.py,sha256=FPydA4ftMhXFLEfYjmHsmNdBoM4gcEthvqmeX5yB3pc,5214
218
+ ommlds/minichain/backends/impls/groq/stream.py,sha256=5PZHrs_QNyKofJClKq5R5aOsq-H26UeWH7uncbJGrmI,5124
210
219
  ommlds/minichain/backends/impls/huggingface/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
211
220
  ommlds/minichain/backends/impls/huggingface/configs.py,sha256=6jsBtPNXOP57PcpxNTVLGWLc-18Iwn_lDbGouwCJTIQ,258
212
221
  ommlds/minichain/backends/impls/huggingface/repos.py,sha256=8BDxJmra9elSQL2vzp2nr2p4Hpq56A3zTk7hTTnfJU4,861
@@ -214,28 +223,28 @@ ommlds/minichain/backends/impls/llamacpp/__init__.py,sha256=47DEQpj8HBSa-_TImW-5
214
223
  ommlds/minichain/backends/impls/llamacpp/chat.py,sha256=J6Jslx9atAtWvLdrVtvRboQUBzRX7Z5aHlo0dK5X78A,5649
215
224
  ommlds/minichain/backends/impls/llamacpp/completion.py,sha256=oJ2I6wUoIPXYLm9Vc7dwOPgqbevatTjNBZ-jXeM24tQ,2372
216
225
  ommlds/minichain/backends/impls/llamacpp/format.py,sha256=fcLMwk7r7FbNrYCH39G3fDRInKvlPIqcoxyLj95CooA,778
217
- ommlds/minichain/backends/impls/llamacpp/stream.py,sha256=uzrXr2HhshgFe3Z0g8KTPc6Dr2kPsyxZabIy2d6IOBg,3547
226
+ ommlds/minichain/backends/impls/llamacpp/stream.py,sha256=GP3RJsjLXCW2zxvn17BqRg5jbuiNMGdHz06enfsLp2k,3575
218
227
  ommlds/minichain/backends/impls/mlx/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
219
- ommlds/minichain/backends/impls/mlx/chat.py,sha256=sMlhgiFZrxAC-kKkLSJ6c-2uJn0IHZXH4EiPET_-CKI,7458
228
+ ommlds/minichain/backends/impls/mlx/chat.py,sha256=jV3bVvXx1oGaBYTbODUIpPX4k0Vmjj4SX7x3qQMluyM,7486
220
229
  ommlds/minichain/backends/impls/ollama/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
221
- ommlds/minichain/backends/impls/ollama/chat.py,sha256=agnJcOwJGebSiV5TG0UmVFYGCc7hEpt7FM73rtyF8gk,6609
230
+ ommlds/minichain/backends/impls/ollama/chat.py,sha256=zBKc0CXVEuO0ntLi38gRK2S5F_FqXdHS4WJKDIaos-g,6637
222
231
  ommlds/minichain/backends/impls/openai/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
223
232
  ommlds/minichain/backends/impls/openai/chat.py,sha256=G1IK94PwB16rYCkRos9JEuiAu1GgCK4CnZFOIShhpig,2856
224
233
  ommlds/minichain/backends/impls/openai/completion.py,sha256=4Mi4Zvrq5fCqUd0asL3WiCbCdmxOdo0NFkoZMfdsYXY,1939
225
234
  ommlds/minichain/backends/impls/openai/embedding.py,sha256=BNtvKYLTsnQwQR9Tv3Fr8zCYN1kr1UNdJ15lcsjz6X0,1765
226
- ommlds/minichain/backends/impls/openai/format.py,sha256=teGX8mNU3sXNWP4YWGD8d59M4X9_r75ImSzfTJgtNCM,7351
227
- ommlds/minichain/backends/impls/openai/names.py,sha256=4dzfoTKYrY0JuSIhmCMloZ2nujR69jyLbcJE9eMAYDE,1518
228
- ommlds/minichain/backends/impls/openai/stream.py,sha256=UWEjMJ8tzgyXRU2nXi9r6M8Q3if0ueQHFhZdJDO0UEo,5420
235
+ ommlds/minichain/backends/impls/openai/format.py,sha256=8ZiS503H3QwOvc4_21IiS71awtaQpUv38pfNaMYIFeE,7316
236
+ ommlds/minichain/backends/impls/openai/names.py,sha256=PB5as6YO1ijLKXGvpyxzP9Z0_jKsOIpJnAsK5hogOKI,1516
237
+ ommlds/minichain/backends/impls/openai/stream.py,sha256=bsZeGUepqOl9AcN44kWk03V6q-v1ewBCfZqb_MJEfxg,5454
229
238
  ommlds/minichain/backends/impls/sentencepiece/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
230
239
  ommlds/minichain/backends/impls/sentencepiece/tokens.py,sha256=tUEBKyBgkTowssS_AdcAuPkyFzfyDfE935x4JG8PXM0,1602
231
240
  ommlds/minichain/backends/impls/tinygrad/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
232
- ommlds/minichain/backends/impls/tinygrad/chat.py,sha256=Y3Lp08Sb0YUPAxEciexOUm0uyoJnhbH5pWT9buclx6Y,4916
241
+ ommlds/minichain/backends/impls/tinygrad/chat.py,sha256=OBPkyY4FyUWT-KwumAPSubqXsgWeaa31mp-j-RT7crU,4944
233
242
  ommlds/minichain/backends/impls/tokenizers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
234
243
  ommlds/minichain/backends/impls/tokenizers/tokens.py,sha256=_8Q49k5YroG5wQI0cuK6kOJ3XYwjhpaAS04ejhzBsWw,1500
235
244
  ommlds/minichain/backends/impls/transformers/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
236
245
  ommlds/minichain/backends/impls/transformers/sentence.py,sha256=1bFJ-ND3MOkj7mNsPuISrQCpqTs7npmmNmYcc2go-Fk,1393
237
246
  ommlds/minichain/backends/impls/transformers/tokens.py,sha256=uS3-IWOJRUMBfPDVRrp3SCaXdE1yzEdKHQcyv0JZQIw,2089
238
- ommlds/minichain/backends/impls/transformers/transformers.py,sha256=laM8G2SAE6jUjnHkeZsbWxS2KJF4efi-35aBlRBzIsE,9053
247
+ ommlds/minichain/backends/impls/transformers/transformers.py,sha256=irBOBBQlZyv2M63YIW01VJvXXzZwn30ddRbONIKDd44,9081
239
248
  ommlds/minichain/backends/strings/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
240
249
  ommlds/minichain/backends/strings/manifests.py,sha256=kmlanVUAZqIh0P95Mm8H20e8ib3gEgYHHUlkCXDQGFk,413
241
250
  ommlds/minichain/backends/strings/parsing.py,sha256=Etmk04BnKvCMtGg4AgbvxsPGvfRcLldLxpdpxcozdNk,1779
@@ -253,12 +262,16 @@ ommlds/minichain/chat/choices/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5N
253
262
  ommlds/minichain/chat/choices/adapters.py,sha256=Keroaj0B5YEYPF3k0fOQK6JUZnM1XVFThGB5Uv689Sc,629
254
263
  ommlds/minichain/chat/choices/services.py,sha256=p_FsCZEsGJun8epzAHoeNdjwJ86ZwihIhvFMsfdafeA,1041
255
264
  ommlds/minichain/chat/choices/types.py,sha256=OPnMUp0KUKGGPJKsQZiXUtd8Z9b_JnhOy7SXKL6QDWU,725
265
+ ommlds/minichain/chat/choices/stream/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
266
+ ommlds/minichain/chat/choices/stream/adapters.py,sha256=f3QCjJ1fDzDzLB-tKmxG-tr15lFMCbiLjjF3g2ew5XA,1048
267
+ ommlds/minichain/chat/choices/stream/joining.py,sha256=9L40pXj6wL3KVrOdCd4Jhj3DyltvM-Z7xkLUnrzDioE,757
268
+ ommlds/minichain/chat/choices/stream/services.py,sha256=9Jc6Hf9Iphepzksll29Skv7IlnawJIutQTitPJPoAD0,1249
269
+ ommlds/minichain/chat/choices/stream/types.py,sha256=V1QTk1XDcPyfpOpYuDH-cj6swhr4-urpUH9eFGZNfjY,808
256
270
  ommlds/minichain/chat/stream/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
257
- ommlds/minichain/chat/stream/_marshal.py,sha256=r6NYBUviV7jIssaFprzv2rVEj8cFEuBlt71BSMZ-448,397
258
- ommlds/minichain/chat/stream/adapters.py,sha256=3hKo3-MLtVIB-Nhdlxt17LP9vZESr-2fBZQ3Yr6l_Ps,1077
259
- ommlds/minichain/chat/stream/joining.py,sha256=oPxLT4qEYWCaxclnZvt54ztQP5md4V6u6Uwn4qd2e9M,2936
260
- ommlds/minichain/chat/stream/services.py,sha256=TxNEOm85QEFYtKb59q_uP6eSNh75v1fF-IpsJjhY4to,1252
261
- ommlds/minichain/chat/stream/types.py,sha256=kpHsWLNHk7hmaNPDSCqLH-ECSAiz83lRfr00LhSWb5U,1589
271
+ ommlds/minichain/chat/stream/_marshal.py,sha256=eUdDrjPKYKwgaNrntZsuquB121pcDcW9lyNRy8bqVsw,382
272
+ ommlds/minichain/chat/stream/joining.py,sha256=U-z1MJTIuw0LIJCUQ80RcGROpPgbqG6FHVjuTe7j57s,2416
273
+ ommlds/minichain/chat/stream/services.py,sha256=Ikaf8fofoPW6UM3MajAGgdc0U6VU8jhn0F6r-FX5XFc,1102
274
+ ommlds/minichain/chat/stream/types.py,sha256=l_fQZr2uD-RugYqCH4KbCh6XksDJHu_mfDWtFT6IRFI,1308
262
275
  ommlds/minichain/chat/tools/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
263
276
  ommlds/minichain/chat/tools/execution.py,sha256=tCPsz1kCt5RcoRX7dwfaJRvObniJJv_D2hCwz1Slo_A,573
264
277
  ommlds/minichain/chat/tools/ids.py,sha256=DFBKrpeDTCnMcU-P38VbPWX0YBDaz_HzMgx3yXWjFWQ,759
@@ -358,7 +371,7 @@ ommlds/minichain/tools/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3
358
371
  ommlds/minichain/tools/_marshal.py,sha256=9np2tuzGfRwL5BMCd6QYChzimtTBUfHxT4IoEA6v3Eg,410
359
372
  ommlds/minichain/tools/fns.py,sha256=UVgj9f0vnjFzP5uP4zpN4slOA5nEOD8Ob1aJwKrSggA,3930
360
373
  ommlds/minichain/tools/jsonschema.py,sha256=20i3Yrw91nzgYRcZfVfrDjtFEpGD1Gc_5iiFhq1KV8w,4233
361
- ommlds/minichain/tools/reflect.py,sha256=V3hjemdLxH-0pI_XwuFPSyQaWlWjvQcGs_Wss5qvQr8,8624
374
+ ommlds/minichain/tools/reflect.py,sha256=fI0b6ZGaJbk-Ll7oXuByX5fVWHh5UaUW37O5WHbZlyA,8694
362
375
  ommlds/minichain/tools/types.py,sha256=z1OP4sHumsSnqxTD3eL8tgTHarDmw7VWUyJu9cW7Yho,4868
363
376
  ommlds/minichain/tools/execution/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
364
377
  ommlds/minichain/tools/execution/catalog.py,sha256=sBde49FSClTreX8KO5pZ2-EE1NyTZOoagNdowN3n5pE,2002
@@ -399,9 +412,9 @@ ommlds/wiki/utils/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU
399
412
  ommlds/wiki/utils/io.py,sha256=UKgDJGtmpnWvIqVd2mJc2QNPOqlToEY1GEveNp6_pMo,7088
400
413
  ommlds/wiki/utils/progress.py,sha256=EhvKcMFYtsarCQhIahlO6f0SboyAKP3UwUyrnVnP-Vk,3222
401
414
  ommlds/wiki/utils/xml.py,sha256=sNJNkZ9rT8B-kJMO6bRz8J1USy4fyPx0m2PwTX7vxYY,3846
402
- ommlds-0.0.0.dev476.dist-info/licenses/LICENSE,sha256=B_hVtavaA8zCYDW99DYdcpDLKz1n3BBRjZrcbv8uG8c,1451
403
- ommlds-0.0.0.dev476.dist-info/METADATA,sha256=Jx-CeBHDUtMiNkl1KouPEGBdWRs7bTxw2f4_tf8cs7w,3344
404
- ommlds-0.0.0.dev476.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
405
- ommlds-0.0.0.dev476.dist-info/entry_points.txt,sha256=Z5YWtX7ClfiCKdW-dd_CSVvM0h4yQpJPi-2G3q6gNFo,35
406
- ommlds-0.0.0.dev476.dist-info/top_level.txt,sha256=Rbnk5d5wi58vnAXx13WFZqdQ4VX8hBCS2hEL3WeXOhY,7
407
- ommlds-0.0.0.dev476.dist-info/RECORD,,
415
+ ommlds-0.0.0.dev478.dist-info/licenses/LICENSE,sha256=B_hVtavaA8zCYDW99DYdcpDLKz1n3BBRjZrcbv8uG8c,1451
416
+ ommlds-0.0.0.dev478.dist-info/METADATA,sha256=kcPQ2Vtr6j4U1g9E1aDz55WNNf6elCtv2ym4nLlp5FI,3344
417
+ ommlds-0.0.0.dev478.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
418
+ ommlds-0.0.0.dev478.dist-info/entry_points.txt,sha256=Z5YWtX7ClfiCKdW-dd_CSVvM0h4yQpJPi-2G3q6gNFo,35
419
+ ommlds-0.0.0.dev478.dist-info/top_level.txt,sha256=Rbnk5d5wi58vnAXx13WFZqdQ4VX8hBCS2hEL3WeXOhY,7
420
+ ommlds-0.0.0.dev478.dist-info/RECORD,,