echotools 2.3.78__tar.gz → 2.3.81__tar.gz

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 (240) hide show
  1. {echotools-2.3.78 → echotools-2.3.81}/PKG-INFO +130 -130
  2. {echotools-2.3.78 → echotools-2.3.81}/README.md +3 -3
  3. {echotools-2.3.78 → echotools-2.3.81}/docs/README.md +74 -74
  4. {echotools-2.3.78 → echotools-2.3.81}/pyproject.toml +1 -1
  5. {echotools-2.3.78 → echotools-2.3.81}/setup.cfg +8 -8
  6. {echotools-2.3.78 → echotools-2.3.81}/src/echotools/__init__.py +215 -215
  7. {echotools-2.3.78 → echotools-2.3.81}/src/echotools/base/cache/__init__.py +8 -8
  8. {echotools-2.3.78 → echotools-2.3.81}/src/echotools/base/cache/list_cache.py +155 -155
  9. {echotools-2.3.78 → echotools-2.3.81}/src/echotools/base/cache/memory_cache.py +74 -74
  10. {echotools-2.3.78 → echotools-2.3.81}/src/echotools/base/config/__init__.py +23 -23
  11. {echotools-2.3.78 → echotools-2.3.81}/src/echotools/base/config/base.py +155 -155
  12. {echotools-2.3.78 → echotools-2.3.81}/src/echotools/base/config/center.py +285 -285
  13. {echotools-2.3.78 → echotools-2.3.81}/src/echotools/base/config/center_notify.py +39 -39
  14. {echotools-2.3.78 → echotools-2.3.81}/src/echotools/base/config/center_template.py +142 -142
  15. {echotools-2.3.78 → echotools-2.3.81}/src/echotools/base/config/loader.py +138 -138
  16. {echotools-2.3.78 → echotools-2.3.81}/src/echotools/base/errors/__init__.py +49 -49
  17. {echotools-2.3.78 → echotools-2.3.81}/src/echotools/base/errors/base.py +32 -32
  18. {echotools-2.3.78 → echotools-2.3.81}/src/echotools/base/errors/classify.py +79 -79
  19. {echotools-2.3.78 → echotools-2.3.81}/src/echotools/base/errors/common.py +74 -74
  20. {echotools-2.3.78 → echotools-2.3.81}/src/echotools/base/errors/http.py +126 -126
  21. {echotools-2.3.78 → echotools-2.3.81}/src/echotools/base/ids/__init__.py +7 -7
  22. {echotools-2.3.78 → echotools-2.3.81}/src/echotools/base/ids/generator.py +62 -62
  23. {echotools-2.3.78 → echotools-2.3.81}/src/echotools/base/io/__init__.py +37 -37
  24. {echotools-2.3.78 → echotools-2.3.81}/src/echotools/base/io/io_utils.py +81 -81
  25. {echotools-2.3.78 → echotools-2.3.81}/src/echotools/base/logger/__init__.py +12 -12
  26. {echotools-2.3.78 → echotools-2.3.81}/src/echotools/base/logger/manager.py +187 -187
  27. {echotools-2.3.78 → echotools-2.3.81}/src/echotools/base/retry/__init__.py +12 -12
  28. {echotools-2.3.78 → echotools-2.3.81}/src/echotools/base/retry/retry.py +171 -171
  29. {echotools-2.3.78 → echotools-2.3.81}/src/echotools/compat.py +88 -88
  30. {echotools-2.3.78 → echotools-2.3.81}/src/echotools/exec/dispatch/__init__.py +21 -21
  31. {echotools-2.3.78 → echotools-2.3.81}/src/echotools/exec/dispatch/candidate.py +51 -51
  32. {echotools-2.3.78 → echotools-2.3.81}/src/echotools/exec/dispatch/dispatcher.py +233 -233
  33. {echotools-2.3.78 → echotools-2.3.81}/src/echotools/exec/dispatch/proxy_selector.py +154 -154
  34. {echotools-2.3.78 → echotools-2.3.81}/src/echotools/exec/dispatch/race.py +119 -119
  35. {echotools-2.3.78 → echotools-2.3.81}/src/echotools/exec/dispatch/selector.py +400 -400
  36. {echotools-2.3.78 → echotools-2.3.81}/src/echotools/exec/fncall/__init__.py +44 -44
  37. {echotools-2.3.78 → echotools-2.3.81}/src/echotools/exec/fncall/parsers/__init__.py +6 -6
  38. {echotools-2.3.78 → echotools-2.3.81}/src/echotools/exec/fncall/parsers/stream.py +834 -760
  39. {echotools-2.3.78 → echotools-2.3.81}/src/echotools/exec/fncall/parsers/xml_params.py +40 -40
  40. {echotools-2.3.78 → echotools-2.3.81}/src/echotools/exec/fncall/parsers/xml_parser.py +285 -285
  41. {echotools-2.3.78 → echotools-2.3.81}/src/echotools/exec/fncall/prompt/__init__.py +5 -5
  42. {echotools-2.3.78 → echotools-2.3.81}/src/echotools/exec/fncall/prompt/history.py +322 -322
  43. {echotools-2.3.78 → echotools-2.3.81}/src/echotools/exec/fncall/prompt/history_format.py +113 -113
  44. {echotools-2.3.78 → echotools-2.3.81}/src/echotools/exec/fncall/prompt/inject.py +192 -192
  45. {echotools-2.3.78 → echotools-2.3.81}/src/echotools/exec/fncall/prompt/prompt_helpers.py +259 -259
  46. {echotools-2.3.78 → echotools-2.3.81}/src/echotools/exec/fncall/prompt/templates.py +167 -167
  47. {echotools-2.3.78 → echotools-2.3.81}/src/echotools/exec/fncall/protocols/__init__.py +14 -14
  48. {echotools-2.3.78 → echotools-2.3.81}/src/echotools/exec/fncall/protocols/entml.py +361 -347
  49. {echotools-2.3.78 → echotools-2.3.81}/src/echotools/exec/fncall/protocols/entml_invoke.py +161 -161
  50. {echotools-2.3.78 → echotools-2.3.81}/src/echotools/exec/fncall/protocols/entml_patterns.py +290 -290
  51. {echotools-2.3.78 → echotools-2.3.81}/src/echotools/exec/fncall/protocols/entml_stream_json.py +475 -461
  52. {echotools-2.3.78 → echotools-2.3.81}/src/echotools/exec/fncall/protocols/entml_think/__init__.py +33 -33
  53. {echotools-2.3.78 → echotools-2.3.81}/src/echotools/exec/fncall/protocols/entml_think/core.py +230 -230
  54. {echotools-2.3.78 → echotools-2.3.81}/src/echotools/exec/fncall/protocols/entml_think/hist.py +168 -168
  55. {echotools-2.3.78 → echotools-2.3.81}/src/echotools/exec/fncall/protocols/entml_think/parse.py +108 -1
  56. {echotools-2.3.78 → echotools-2.3.81}/src/echotools/exec/fncall/protocols/entml_tool_blocks.py +274 -172
  57. {echotools-2.3.78 → echotools-2.3.81}/src/echotools/exec/fncall/protocols/entml_values.py +93 -93
  58. {echotools-2.3.78 → echotools-2.3.81}/src/echotools/exec/fncall/registry.py +111 -111
  59. {echotools-2.3.78 → echotools-2.3.81}/src/echotools/exec/fncall/shared/__init__.py +29 -29
  60. {echotools-2.3.78 → echotools-2.3.81}/src/echotools/exec/fncall/shared/coercion.py +286 -286
  61. {echotools-2.3.78 → echotools-2.3.81}/src/echotools/exec/fncall/shared/history_markup.py +327 -298
  62. {echotools-2.3.78 → echotools-2.3.81}/src/echotools/exec/fncall/shared/loop_detect.py +97 -97
  63. {echotools-2.3.78 → echotools-2.3.81}/src/echotools/exec/fncall/shared/normalization.py +181 -181
  64. {echotools-2.3.78 → echotools-2.3.81}/src/echotools/exec/fncall/shared/schema_render.py +126 -126
  65. {echotools-2.3.78 → echotools-2.3.81}/src/echotools/exec/fncall/shared/xml_helpers.py +56 -56
  66. {echotools-2.3.78 → echotools-2.3.81}/src/echotools/exec/lifecycle/__init__.py +8 -8
  67. {echotools-2.3.78 → echotools-2.3.81}/src/echotools/exec/lifecycle/manager.py +72 -72
  68. {echotools-2.3.78 → echotools-2.3.81}/src/echotools/exec/lifecycle/updater.py +197 -197
  69. {echotools-2.3.78 → echotools-2.3.81}/src/echotools/exec/lifecycle/updater_pull.py +33 -33
  70. {echotools-2.3.78 → echotools-2.3.81}/src/echotools/exec/process/__init__.py +10 -10
  71. {echotools-2.3.78 → echotools-2.3.81}/src/echotools/exec/process/port.py +193 -193
  72. {echotools-2.3.78 → echotools-2.3.81}/src/echotools/exec/protocol/__init__.py +19 -19
  73. {echotools-2.3.78 → echotools-2.3.81}/src/echotools/exec/protocol/base.py +135 -135
  74. {echotools-2.3.78 → echotools-2.3.81}/src/echotools/exec/terminal/conpty.py +246 -246
  75. {echotools-2.3.78 → echotools-2.3.81}/src/echotools/exec/terminal/local/__init__.py +6 -6
  76. {echotools-2.3.78 → echotools-2.3.81}/src/echotools/exec/terminal/local/core.py +318 -318
  77. {echotools-2.3.78 → echotools-2.3.81}/src/echotools/exec/terminal/local/proc.py +331 -331
  78. {echotools-2.3.78 → echotools-2.3.81}/src/echotools/exec/terminal/local/unix.py +195 -195
  79. {echotools-2.3.78 → echotools-2.3.81}/src/echotools/exec/terminal/local/win.py +199 -199
  80. {echotools-2.3.78 → echotools-2.3.81}/src/echotools/exec/terminal/session/__init__.py +20 -20
  81. {echotools-2.3.78 → echotools-2.3.81}/src/echotools/exec/terminal/session/base.py +353 -353
  82. {echotools-2.3.78 → echotools-2.3.81}/src/echotools/exec/terminal/session/client.py +155 -155
  83. {echotools-2.3.78 → echotools-2.3.81}/src/echotools/exec/terminal/tmux.py +105 -105
  84. {echotools-2.3.78 → echotools-2.3.81}/src/echotools/media/console/__init__.py +38 -38
  85. {echotools-2.3.78 → echotools-2.3.81}/src/echotools/media/console/charmap.py +148 -148
  86. {echotools-2.3.78 → echotools-2.3.81}/src/echotools/media/console/spinner.py +342 -342
  87. {echotools-2.3.78 → echotools-2.3.81}/src/echotools/media/console/uicore/mixins/__init__.py +15 -15
  88. {echotools-2.3.78 → echotools-2.3.81}/src/echotools/media/console/uicore/mixins/uibase.py +195 -195
  89. {echotools-2.3.78 → echotools-2.3.81}/src/echotools/media/console/uicore/mixins/uicmds.py +224 -224
  90. {echotools-2.3.78 → echotools-2.3.81}/src/echotools/media/console/uicore/mixins/uiinteract.py +199 -199
  91. {echotools-2.3.78 → echotools-2.3.81}/src/echotools/media/console/uicore/mixins/uioutput.py +304 -304
  92. {echotools-2.3.78 → echotools-2.3.81}/src/echotools/media/console/uicore/mixins/uistream.py +144 -144
  93. {echotools-2.3.78 → echotools-2.3.81}/src/echotools/media/console/uicore/ui_console.py +20 -20
  94. {echotools-2.3.78 → echotools-2.3.81}/src/echotools/media/console/uicore/ui_io.py +27 -27
  95. {echotools-2.3.78 → echotools-2.3.81}/src/echotools/media/console/uicore/ui_log.py +67 -67
  96. {echotools-2.3.78 → echotools-2.3.81}/src/echotools/media/console/uicore/ui_platform.py +389 -389
  97. {echotools-2.3.78 → echotools-2.3.81}/src/echotools/media/console/uicore/ui_text.py +368 -368
  98. {echotools-2.3.78 → echotools-2.3.81}/src/echotools/media/console/uicore/ui_types.py +246 -246
  99. {echotools-2.3.78 → echotools-2.3.81}/src/echotools/media/console/uilayout/ui_countdown.py +62 -62
  100. {echotools-2.3.78 → echotools-2.3.81}/src/echotools/media/console/uilayout/ui_layout.py +50 -50
  101. {echotools-2.3.78 → echotools-2.3.81}/src/echotools/media/console/uilayout/ui_misc.py +336 -336
  102. {echotools-2.3.78 → echotools-2.3.81}/src/echotools/media/console/uilayout/ui_panel.py +137 -137
  103. {echotools-2.3.78 → echotools-2.3.81}/src/echotools/media/console/uilayout/ui_table.py +205 -205
  104. {echotools-2.3.78 → echotools-2.3.81}/src/echotools/media/console/uilayout/ui_tree.py +146 -146
  105. {echotools-2.3.78 → echotools-2.3.81}/src/echotools/media/console/uiwidgets/ui_box.py +197 -197
  106. {echotools-2.3.78 → echotools-2.3.81}/src/echotools/media/console/uiwidgets/ui_editor.py +360 -360
  107. {echotools-2.3.78 → echotools-2.3.81}/src/echotools/media/console/uiwidgets/ui_progress.py +296 -296
  108. {echotools-2.3.78 → echotools-2.3.81}/src/echotools/media/console/uiwidgets/ui_select.py +199 -199
  109. {echotools-2.3.78 → echotools-2.3.81}/src/echotools/media/console/uiwidgets/ui_stream.py +85 -85
  110. {echotools-2.3.78 → echotools-2.3.81}/src/echotools/media/events/__init__.py +8 -8
  111. {echotools-2.3.78 → echotools-2.3.81}/src/echotools/media/events/bus.py +104 -104
  112. {echotools-2.3.78 → echotools-2.3.81}/src/echotools/media/events/event.py +31 -31
  113. {echotools-2.3.78 → echotools-2.3.81}/src/echotools/media/spinner/__init__.py +24 -24
  114. {echotools-2.3.78 → echotools-2.3.81}/src/echotools/media/spinner/spinner.py +324 -324
  115. {echotools-2.3.78 → echotools-2.3.81}/src/echotools/media/spinner/spinner_color.py +98 -98
  116. {echotools-2.3.78 → echotools-2.3.81}/src/echotools/media/tracing/__init__.py +28 -28
  117. {echotools-2.3.78 → echotools-2.3.81}/src/echotools/media/tracing/context.py +63 -63
  118. {echotools-2.3.78 → echotools-2.3.81}/src/echotools/media/tracing/span.py +135 -135
  119. {echotools-2.3.78 → echotools-2.3.81}/src/echotools/media/tracing/tracer.py +97 -97
  120. {echotools-2.3.78 → echotools-2.3.81}/src/echotools/media/watcher/__init__.py +7 -7
  121. {echotools-2.3.78 → echotools-2.3.81}/src/echotools/media/watcher/file_watcher.py +110 -110
  122. {echotools-2.3.78 → echotools-2.3.81}/src/echotools/media/web/__init__.py +37 -37
  123. {echotools-2.3.78 → echotools-2.3.81}/src/echotools/media/web/application.py +120 -120
  124. {echotools-2.3.78 → echotools-2.3.81}/src/echotools/media/web/input_box/components/sendbutton.js +64 -64
  125. {echotools-2.3.78 → echotools-2.3.81}/src/echotools/media/web/input_box/components/sortablelist.js +104 -104
  126. {echotools-2.3.78 → echotools-2.3.81}/src/echotools/media/web/input_box/components/textinput.js +185 -185
  127. {echotools-2.3.78 → echotools-2.3.81}/src/echotools/media/web/input_box/inputbox.js +277 -277
  128. {echotools-2.3.78 → echotools-2.3.81}/src/echotools/media/web/input_box/style.css +170 -170
  129. {echotools-2.3.78 → echotools-2.3.81}/src/echotools/media/web/input_box/voicegif.js +1 -1
  130. {echotools-2.3.78 → echotools-2.3.81}/src/echotools/media/web/middleware.py +129 -129
  131. {echotools-2.3.78 → echotools-2.3.81}/src/echotools/media/web/utils.py +187 -187
  132. {echotools-2.3.78 → echotools-2.3.81}/src/echotools/plat/files/__init__.py +7 -7
  133. {echotools-2.3.78 → echotools-2.3.81}/src/echotools/plat/files/file_util.py +155 -155
  134. {echotools-2.3.78 → echotools-2.3.81}/src/echotools/plat/network/__init__.py +11 -11
  135. {echotools-2.3.78 → echotools-2.3.81}/src/echotools/plat/network/http_utils.py +68 -68
  136. {echotools-2.3.78 → echotools-2.3.81}/src/echotools/plat/plugin/__init__.py +9 -9
  137. {echotools-2.3.78 → echotools-2.3.81}/src/echotools/plat/plugin/base.py +41 -41
  138. {echotools-2.3.78 → echotools-2.3.81}/src/echotools/plat/plugin/discovery.py +179 -179
  139. {echotools-2.3.78 → echotools-2.3.81}/src/echotools/plat/plugin/registry.py +245 -245
  140. {echotools-2.3.78 → echotools-2.3.81}/src/echotools/plat/plugin/registry_ops.py +99 -99
  141. {echotools-2.3.78 → echotools-2.3.81}/src/echotools/plat/proxy/__init__.py +7 -7
  142. {echotools-2.3.78 → echotools-2.3.81}/src/echotools/plat/proxy/manager.py +268 -268
  143. {echotools-2.3.78 → echotools-2.3.81}/src/echotools/plat/runtime/__init__.py +7 -7
  144. {echotools-2.3.78 → echotools-2.3.81}/src/echotools/plat/runtime/collector.py +60 -60
  145. {echotools-2.3.78 → echotools-2.3.81}/src/echotools/plat/scheduler/__init__.py +7 -7
  146. {echotools-2.3.78 → echotools-2.3.81}/src/echotools/plat/scheduler/scheduler.py +69 -69
  147. {echotools-2.3.78 → echotools-2.3.81}/src/echotools/plat/sdk/__init__.py +7 -7
  148. {echotools-2.3.78 → echotools-2.3.81}/src/echotools/plat/sdk/facade.py +251 -251
  149. {echotools-2.3.78 → echotools-2.3.81}/src/echotools/version.py +15 -15
  150. {echotools-2.3.78 → echotools-2.3.81}/src/echotools.egg-info/PKG-INFO +130 -130
  151. {echotools-2.3.78 → echotools-2.3.81}/src/echotools.egg-info/SOURCES.txt +2 -0
  152. echotools-2.3.81/src/tests/_check_parity.py +72 -0
  153. {echotools-2.3.78 → echotools-2.3.81}/src/tests/bench_import.py +14 -14
  154. {echotools-2.3.78 → echotools-2.3.81}/src/tests/conftest.py +19 -19
  155. {echotools-2.3.78 → echotools-2.3.81}/src/tests/fixtures/simulated_fake_history_markup_responses.py +484 -484
  156. {echotools-2.3.78 → echotools-2.3.81}/src/tests/fixtures/simulated_fault_thinking_responses.py +220 -220
  157. {echotools-2.3.78 → echotools-2.3.81}/src/tests/fixtures/simulated_llm_tool_responses.py +805 -805
  158. {echotools-2.3.78 → echotools-2.3.81}/src/tests/test_adversarial_stream_splits.py +144 -144
  159. {echotools-2.3.78 → echotools-2.3.81}/src/tests/test_cache_retry.py +128 -128
  160. {echotools-2.3.78 → echotools-2.3.81}/src/tests/test_completion.py +48 -48
  161. {echotools-2.3.78 → echotools-2.3.81}/src/tests/test_config.py +85 -85
  162. {echotools-2.3.78 → echotools-2.3.81}/src/tests/test_config_extended.py +45 -45
  163. {echotools-2.3.78 → echotools-2.3.81}/src/tests/test_console.py +26 -26
  164. {echotools-2.3.78 → echotools-2.3.81}/src/tests/test_coverage_core.py +515 -515
  165. {echotools-2.3.78 → echotools-2.3.81}/src/tests/test_dispatch.py +35 -35
  166. {echotools-2.3.78 → echotools-2.3.81}/src/tests/test_dispatch_extended.py +44 -44
  167. {echotools-2.3.78 → echotools-2.3.81}/src/tests/test_dispatch_race.py +55 -55
  168. {echotools-2.3.78 → echotools-2.3.81}/src/tests/test_entml_agent_output_formats.py +143 -143
  169. {echotools-2.3.78 → echotools-2.3.81}/src/tests/test_entml_bare_invoke_format.py +375 -375
  170. echotools-2.3.81/src/tests/test_entml_batch_stream_comprehensive.py +498 -0
  171. {echotools-2.3.78 → echotools-2.3.81}/src/tests/test_entml_parser_comprehensive.py +654 -654
  172. {echotools-2.3.78 → echotools-2.3.81}/src/tests/test_entml_protocol.py +1416 -1416
  173. {echotools-2.3.78 → echotools-2.3.81}/src/tests/test_entml_stream_json.py +77 -77
  174. {echotools-2.3.78 → echotools-2.3.81}/src/tests/test_entml_stream_json_exhaustive.py +268 -268
  175. {echotools-2.3.78 → echotools-2.3.81}/src/tests/test_entml_thinking_history.py +71 -71
  176. {echotools-2.3.78 → echotools-2.3.81}/src/tests/test_entml_tool_parse_leak.py +256 -255
  177. {echotools-2.3.78 → echotools-2.3.81}/src/tests/test_entml_tool_pipeline.py +851 -851
  178. {echotools-2.3.78 → echotools-2.3.81}/src/tests/test_errors.py +45 -45
  179. {echotools-2.3.78 → echotools-2.3.81}/src/tests/test_errors_common.py +24 -24
  180. {echotools-2.3.78 → echotools-2.3.81}/src/tests/test_events.py +56 -56
  181. {echotools-2.3.78 → echotools-2.3.81}/src/tests/test_events_event.py +18 -18
  182. {echotools-2.3.78 → echotools-2.3.81}/src/tests/test_facade.py +33 -33
  183. {echotools-2.3.78 → echotools-2.3.81}/src/tests/test_fake_history_markup_batch.py +70 -70
  184. {echotools-2.3.78 → echotools-2.3.81}/src/tests/test_fake_history_markup_invoke_preserve.py +130 -130
  185. {echotools-2.3.78 → echotools-2.3.81}/src/tests/test_fake_history_markup_reply_protect.py +168 -168
  186. {echotools-2.3.78 → echotools-2.3.81}/src/tests/test_fake_history_markup_stream.py +151 -151
  187. {echotools-2.3.78 → echotools-2.3.81}/src/tests/test_fault_thinking_close_batch.py +86 -86
  188. {echotools-2.3.78 → echotools-2.3.81}/src/tests/test_fault_thinking_close_stream.py +149 -149
  189. {echotools-2.3.78 → echotools-2.3.81}/src/tests/test_fncall.py +99 -99
  190. {echotools-2.3.78 → echotools-2.3.81}/src/tests/test_fncall_stream_thinking.py +363 -363
  191. {echotools-2.3.78 → echotools-2.3.81}/src/tests/test_history_markup_filter.py +321 -321
  192. {echotools-2.3.78 → echotools-2.3.81}/src/tests/test_ids.py +25 -25
  193. {echotools-2.3.78 → echotools-2.3.81}/src/tests/test_imports.py +51 -51
  194. {echotools-2.3.78 → echotools-2.3.81}/src/tests/test_io.py +20 -20
  195. {echotools-2.3.78 → echotools-2.3.81}/src/tests/test_keys.py +27 -27
  196. {echotools-2.3.78 → echotools-2.3.81}/src/tests/test_lifecycle.py +34 -34
  197. {echotools-2.3.78 → echotools-2.3.81}/src/tests/test_logger.py +37 -37
  198. {echotools-2.3.78 → echotools-2.3.81}/src/tests/test_merge.py +26 -26
  199. {echotools-2.3.78 → echotools-2.3.81}/src/tests/test_model_branch_matrix.py +204 -204
  200. {echotools-2.3.78 → echotools-2.3.81}/src/tests/test_plugin.py +31 -31
  201. {echotools-2.3.78 → echotools-2.3.81}/src/tests/test_printstream.py +337 -337
  202. {echotools-2.3.78 → echotools-2.3.81}/src/tests/test_protocols.py +25 -25
  203. {echotools-2.3.78 → echotools-2.3.81}/src/tests/test_proxy.py +56 -56
  204. {echotools-2.3.78 → echotools-2.3.81}/src/tests/test_proxy_selector.py +27 -27
  205. {echotools-2.3.78 → echotools-2.3.81}/src/tests/test_runtime.py +25 -25
  206. {echotools-2.3.78 → echotools-2.3.81}/src/tests/test_scheduler.py +27 -27
  207. {echotools-2.3.78 → echotools-2.3.81}/src/tests/test_simulated_llm_tool_parse.py +171 -168
  208. {echotools-2.3.78 → echotools-2.3.81}/src/tests/test_stream_partial_json_parity.py +124 -89
  209. {echotools-2.3.78 → echotools-2.3.81}/src/tests/test_stream_realtime_parse.py +134 -134
  210. {echotools-2.3.78 → echotools-2.3.81}/src/tests/test_tracing.py +30 -30
  211. {echotools-2.3.78 → echotools-2.3.81}/src/tests/test_usage.py +37 -37
  212. {echotools-2.3.78 → echotools-2.3.81}/src/tests/test_web.py +48 -48
  213. {echotools-2.3.78 → echotools-2.3.81}/src/tests/test_web_broker.py +50 -50
  214. {echotools-2.3.78 → echotools-2.3.81}/src/echotools/base/config/merge.py +0 -0
  215. {echotools-2.3.78 → echotools-2.3.81}/src/echotools/base/io/printstream.py +0 -0
  216. {echotools-2.3.78 → echotools-2.3.81}/src/echotools/exec/dispatch/usage.py +0 -0
  217. {echotools-2.3.78 → echotools-2.3.81}/src/echotools/exec/fncall/protocols/entml_tools.py +0 -0
  218. {echotools-2.3.78 → echotools-2.3.81}/src/echotools/exec/keys.py +0 -0
  219. {echotools-2.3.78 → echotools-2.3.81}/src/echotools/exec/terminal/__init__.py +0 -0
  220. {echotools-2.3.78 → echotools-2.3.81}/src/echotools/exec/terminal/sanitize.py +0 -0
  221. {echotools-2.3.78 → echotools-2.3.81}/src/echotools/exec/terminal/ssh.py +0 -0
  222. {echotools-2.3.78 → echotools-2.3.81}/src/echotools/media/console/ui.py +0 -0
  223. {echotools-2.3.78 → echotools-2.3.81}/src/echotools/media/translate.py +0 -0
  224. {echotools-2.3.78 → echotools-2.3.81}/src/echotools/media/web/broker.py +0 -0
  225. {echotools-2.3.78 → echotools-2.3.81}/src/echotools/media/web/input_box/app.js +0 -0
  226. {echotools-2.3.78 → echotools-2.3.81}/src/echotools/media/web/input_box/components/filezone.js +0 -0
  227. {echotools-2.3.78 → echotools-2.3.81}/src/echotools/media/web/input_box/components/motionkit.js +0 -0
  228. {echotools-2.3.78 → echotools-2.3.81}/src/echotools/media/web/input_box/components/sortablelist.css +0 -0
  229. {echotools-2.3.78 → echotools-2.3.81}/src/echotools/media/web/input_box/components/voiceinput.js +0 -0
  230. {echotools-2.3.78 → echotools-2.3.81}/src/echotools/media/web/input_box/fonts/inter-500.woff2 +0 -0
  231. {echotools-2.3.78 → echotools-2.3.81}/src/echotools/media/web/input_box/fonts/inter-600.woff2 +0 -0
  232. {echotools-2.3.78 → echotools-2.3.81}/src/echotools/media/web/input_box/fonts/inter400.woff2 +0 -0
  233. {echotools-2.3.78 → echotools-2.3.81}/src/echotools/media/web/input_box/inputbox.css +0 -0
  234. {echotools-2.3.78 → echotools-2.3.81}/src/echotools/media/web/stats.py +0 -0
  235. {echotools-2.3.78 → echotools-2.3.81}/src/echotools.egg-info/dependency_links.txt +0 -0
  236. {echotools-2.3.78 → echotools-2.3.81}/src/echotools.egg-info/requires.txt +0 -0
  237. {echotools-2.3.78 → echotools-2.3.81}/src/echotools.egg-info/top_level.txt +0 -0
  238. {echotools-2.3.78 → echotools-2.3.81}/src/tests/fixtures/__init__.py +0 -0
  239. {echotools-2.3.78 → echotools-2.3.81}/src/tests/test_entml_thinking_parse.py +0 -0
  240. {echotools-2.3.78 → echotools-2.3.81}/src/tests/test_entml_tools.py +0 -0
@@ -1,130 +1,130 @@
1
- Metadata-Version: 2.4
2
- Name: echotools
3
- Version: 2.3.78
4
- Summary: 通用基础设施 SDK:配置、日志、事件、调度、插件、协议、调用链
5
- Home-page: https://github.com/nichengfuben/echotools
6
- Author: nichengfuben
7
- License: MIT
8
- Project-URL: Homepage, https://github.com/nichengfuben/echotools
9
- Project-URL: Repository, https://github.com/nichengfuben/echotools
10
- Project-URL: Issues, https://github.com/nichengfuben/echotools/issues
11
- Classifier: Development Status :: 4 - Beta
12
- Classifier: Intended Audience :: Developers
13
- Classifier: Programming Language :: Python :: 3
14
- Classifier: Programming Language :: Python :: 3.8
15
- Classifier: Programming Language :: Python :: 3.9
16
- Classifier: Programming Language :: Python :: 3.10
17
- Classifier: Programming Language :: Python :: 3.11
18
- Classifier: Programming Language :: Python :: 3.12
19
- Classifier: Programming Language :: Python :: 3.13
20
- Classifier: Topic :: Software Development :: Libraries
21
- Requires-Python: >=3.8
22
- Description-Content-Type: text/markdown
23
- Requires-Dist: typing-extensions>=4.7.0
24
- Provides-Extra: toml
25
- Requires-Dist: tomlkit>=0.11.0; extra == "toml"
26
- Requires-Dist: tomli>=2.0.0; python_version < "3.11" and extra == "toml"
27
- Provides-Extra: watch
28
- Requires-Dist: watchdog>=3.0.0; extra == "watch"
29
- Provides-Extra: http
30
- Requires-Dist: aiohttp>=3.8.0; extra == "http"
31
- Provides-Extra: socks
32
- Requires-Dist: aiohttp-socks>=0.8.0; extra == "socks"
33
- Provides-Extra: ssh
34
- Requires-Dist: paramiko>=3.0.0; extra == "ssh"
35
- Provides-Extra: terminal
36
- Requires-Dist: pywinpty>=2.0.0; sys_platform == "win32" and extra == "terminal"
37
- Provides-Extra: console
38
- Requires-Dist: rich>=13.0; extra == "console"
39
- Requires-Dist: wcwidth>=0.2; extra == "console"
40
- Provides-Extra: all
41
- Requires-Dist: tomlkit>=0.11.0; extra == "all"
42
- Requires-Dist: tomli>=2.0.0; python_version < "3.11" and extra == "all"
43
- Requires-Dist: watchdog>=3.0.0; extra == "all"
44
- Requires-Dist: aiohttp>=3.8.0; extra == "all"
45
- Requires-Dist: aiohttp-socks>=0.8.0; extra == "all"
46
- Requires-Dist: paramiko>=3.0.0; extra == "all"
47
- Requires-Dist: pywinpty>=2.0.0; sys_platform == "win32" and extra == "all"
48
- Requires-Dist: rich>=13.0; extra == "all"
49
- Requires-Dist: wcwidth>=0.2; extra == "all"
50
- Provides-Extra: dev
51
- Requires-Dist: pytest>=7.4.0; extra == "dev"
52
- Requires-Dist: pytest-asyncio>=0.23.0; extra == "dev"
53
- Requires-Dist: pytest-cov>=4.1.0; extra == "dev"
54
- Requires-Dist: mypy>=1.5.0; extra == "dev"
55
- Requires-Dist: ruff>=0.4.0; extra == "dev"
56
-
57
- # echotools
58
-
59
- 通用基础设施 SDK:配置中心、日志、事件总线、调用链、任务调度、
60
- 插件框架、协议系统、自适应选择器,完全项目无关,兼容 Python 3.8–3.14。
61
-
62
- ## 安装
63
-
64
- ```bash
65
- # 核心(仅 typing-extensions)
66
- pip install echotools
67
-
68
- # 完整功能
69
- pip install echotools[all]
70
- ```
71
-
72
- ### 可选依赖
73
-
74
- | Extra | 用途 |
75
- |-------|------|
76
- | `toml` | TOML 配置读写 |
77
- | `watch` | watchdog 文件监视 |
78
- | `http` | aiohttp Web 层 |
79
- | `socks` | SOCKS 代理 |
80
- | `ssh` | SSH 终端 |
81
- | `terminal` | Windows ConPTY |
82
- | `all` | 全部可选依赖 |
83
- | `dev` | pytest, ruff, mypy |
84
-
85
- ## 快速开始
86
-
87
- ```python
88
- from echotools import EchoTools
89
-
90
- et = EchoTools(service_name="myapp")
91
- et.logger.configure(level="INFO", color=True)
92
- cfg = et.config
93
- cfg.load("config.toml")
94
-
95
- with et.tracer.trace("request") as trace:
96
- with et.tracer.span(trace, "db") as span:
97
- span.set_tag("query", "select 1")
98
-
99
- await et.shutdown()
100
- ```
101
-
102
- ## 能力总览
103
-
104
- | 模块 | 说明 |
105
- |------|------|
106
- | `ConfigCenter` | 点路径配置 + 热重载 + 类型绑定 |
107
- | `LoggerManager` | 调用链注入 + 颜色 + 轮转 |
108
- | `EventBus` | 同步/异步事件 |
109
- | `Tracer` | 轻量调用链 |
110
- | `TaskDispatcher` | 单发/竞速 + 贝叶斯自适应选择 |
111
- | `PluginRegistry` | 自动发现 + 热重载 |
112
- | `get_protocol` | XML/antml/original/bracket/nous 等 LLM 工具协议 |
113
- | `ProxyManager` | HTTP/HTTPS/SOCKS |
114
- | `AutoUpdater` | git 自动更新 |
115
- | `FileWatcher` | 轮询文件监视 |
116
-
117
- ## 开发
118
-
119
- ```bash
120
- pip install -e ".[dev,all]"
121
- make lint
122
- make test
123
- make cov
124
- ```
125
-
126
- 模块指南见 [docs/modules.md](docs/modules.md),API 参考见 [docs/api.md](docs/api.md)。
127
-
128
- ## 许可证
129
-
130
- MIT
1
+ Metadata-Version: 2.4
2
+ Name: echotools
3
+ Version: 2.3.81
4
+ Summary: 通用基础设施 SDK:配置、日志、事件、调度、插件、协议、调用链
5
+ Home-page: https://github.com/nichengfuben/echotools
6
+ Author: nichengfuben
7
+ License: MIT
8
+ Project-URL: Homepage, https://github.com/nichengfuben/echotools
9
+ Project-URL: Repository, https://github.com/nichengfuben/echotools
10
+ Project-URL: Issues, https://github.com/nichengfuben/echotools/issues
11
+ Classifier: Development Status :: 4 - Beta
12
+ Classifier: Intended Audience :: Developers
13
+ Classifier: Programming Language :: Python :: 3
14
+ Classifier: Programming Language :: Python :: 3.8
15
+ Classifier: Programming Language :: Python :: 3.9
16
+ Classifier: Programming Language :: Python :: 3.10
17
+ Classifier: Programming Language :: Python :: 3.11
18
+ Classifier: Programming Language :: Python :: 3.12
19
+ Classifier: Programming Language :: Python :: 3.13
20
+ Classifier: Topic :: Software Development :: Libraries
21
+ Requires-Python: >=3.8
22
+ Description-Content-Type: text/markdown
23
+ Requires-Dist: typing-extensions>=4.7.0
24
+ Provides-Extra: toml
25
+ Requires-Dist: tomlkit>=0.11.0; extra == "toml"
26
+ Requires-Dist: tomli>=2.0.0; python_version < "3.11" and extra == "toml"
27
+ Provides-Extra: watch
28
+ Requires-Dist: watchdog>=3.0.0; extra == "watch"
29
+ Provides-Extra: http
30
+ Requires-Dist: aiohttp>=3.8.0; extra == "http"
31
+ Provides-Extra: socks
32
+ Requires-Dist: aiohttp-socks>=0.8.0; extra == "socks"
33
+ Provides-Extra: ssh
34
+ Requires-Dist: paramiko>=3.0.0; extra == "ssh"
35
+ Provides-Extra: terminal
36
+ Requires-Dist: pywinpty>=2.0.0; sys_platform == "win32" and extra == "terminal"
37
+ Provides-Extra: console
38
+ Requires-Dist: rich>=13.0; extra == "console"
39
+ Requires-Dist: wcwidth>=0.2; extra == "console"
40
+ Provides-Extra: all
41
+ Requires-Dist: tomlkit>=0.11.0; extra == "all"
42
+ Requires-Dist: tomli>=2.0.0; python_version < "3.11" and extra == "all"
43
+ Requires-Dist: watchdog>=3.0.0; extra == "all"
44
+ Requires-Dist: aiohttp>=3.8.0; extra == "all"
45
+ Requires-Dist: aiohttp-socks>=0.8.0; extra == "all"
46
+ Requires-Dist: paramiko>=3.0.0; extra == "all"
47
+ Requires-Dist: pywinpty>=2.0.0; sys_platform == "win32" and extra == "all"
48
+ Requires-Dist: rich>=13.0; extra == "all"
49
+ Requires-Dist: wcwidth>=0.2; extra == "all"
50
+ Provides-Extra: dev
51
+ Requires-Dist: pytest>=7.4.0; extra == "dev"
52
+ Requires-Dist: pytest-asyncio>=0.23.0; extra == "dev"
53
+ Requires-Dist: pytest-cov>=4.1.0; extra == "dev"
54
+ Requires-Dist: mypy>=1.5.0; extra == "dev"
55
+ Requires-Dist: ruff>=0.4.0; extra == "dev"
56
+
57
+ # echotools
58
+
59
+ 通用基础设施 SDK:配置中心、日志、事件总线、调用链、任务调度、
60
+ 插件框架、协议系统、自适应选择器,完全项目无关,兼容 Python 3.8–3.14。
61
+
62
+ ## 安装
63
+
64
+ ```bash
65
+ # 核心(仅 typing-extensions)
66
+ pip install echotools
67
+
68
+ # 完整功能
69
+ pip install echotools[all]
70
+ ```
71
+
72
+ ### 可选依赖
73
+
74
+ | Extra | 用途 |
75
+ |-------|------|
76
+ | `toml` | TOML 配置读写 |
77
+ | `watch` | watchdog 文件监视 |
78
+ | `http` | aiohttp Web 层 |
79
+ | `socks` | SOCKS 代理 |
80
+ | `ssh` | SSH 终端 |
81
+ | `terminal` | Windows ConPTY |
82
+ | `all` | 全部可选依赖 |
83
+ | `dev` | pytest, ruff, mypy |
84
+
85
+ ## 快速开始
86
+
87
+ ```python
88
+ from echotools import EchoTools
89
+
90
+ et = EchoTools(service_name="myapp")
91
+ et.logger.configure(level="INFO", color=True)
92
+ cfg = et.config
93
+ cfg.load("config.toml")
94
+
95
+ with et.tracer.trace("request") as trace:
96
+ with et.tracer.span(trace, "db") as span:
97
+ span.set_tag("query", "select 1")
98
+
99
+ await et.shutdown()
100
+ ```
101
+
102
+ ## 能力总览
103
+
104
+ | 模块 | 说明 |
105
+ |------|------|
106
+ | `ConfigCenter` | 点路径配置 + 热重载 + 类型绑定 |
107
+ | `LoggerManager` | 调用链注入 + 颜色 + 轮转 |
108
+ | `EventBus` | 同步/异步事件 |
109
+ | `Tracer` | 轻量调用链 |
110
+ | `TaskDispatcher` | 单发/竞速 + 贝叶斯自适应选择 |
111
+ | `PluginRegistry` | 自动发现 + 热重载 |
112
+ | `get_protocol` | XML/antml/original/bracket/nous 等 LLM 工具协议 |
113
+ | `ProxyManager` | HTTP/HTTPS/SOCKS |
114
+ | `AutoUpdater` | git 自动更新 |
115
+ | `FileWatcher` | 轮询文件监视 |
116
+
117
+ ## 开发
118
+
119
+ ```bash
120
+ pip install -e ".[dev,all]"
121
+ make lint
122
+ make test
123
+ make cov
124
+ ```
125
+
126
+ 模块指南见 [docs/modules.md](docs/modules.md),API 参考见 [docs/api.md](docs/api.md)。
127
+
128
+ ## 许可证
129
+
130
+ MIT
@@ -1,3 +1,3 @@
1
- # echotools
2
-
3
- Documentation: [docs/README.md](docs/README.md)
1
+ # echotools
2
+
3
+ Documentation: [docs/README.md](docs/README.md)
@@ -1,74 +1,74 @@
1
- # echotools
2
-
3
- 通用基础设施 SDK:配置中心、日志、事件总线、调用链、任务调度、
4
- 插件框架、协议系统、自适应选择器,完全项目无关,兼容 Python 3.8–3.14。
5
-
6
- ## 安装
7
-
8
- ```bash
9
- # 核心(仅 typing-extensions)
10
- pip install echotools
11
-
12
- # 完整功能
13
- pip install echotools[all]
14
- ```
15
-
16
- ### 可选依赖
17
-
18
- | Extra | 用途 |
19
- |-------|------|
20
- | `toml` | TOML 配置读写 |
21
- | `watch` | watchdog 文件监视 |
22
- | `http` | aiohttp Web 层 |
23
- | `socks` | SOCKS 代理 |
24
- | `ssh` | SSH 终端 |
25
- | `terminal` | Windows ConPTY |
26
- | `all` | 全部可选依赖 |
27
- | `dev` | pytest, ruff, mypy |
28
-
29
- ## 快速开始
30
-
31
- ```python
32
- from echotools import EchoTools
33
-
34
- et = EchoTools(service_name="myapp")
35
- et.logger.configure(level="INFO", color=True)
36
- cfg = et.config
37
- cfg.load("config.toml")
38
-
39
- with et.tracer.trace("request") as trace:
40
- with et.tracer.span(trace, "db") as span:
41
- span.set_tag("query", "select 1")
42
-
43
- await et.shutdown()
44
- ```
45
-
46
- ## 能力总览
47
-
48
- | 模块 | 说明 |
49
- |------|------|
50
- | `ConfigCenter` | 点路径配置 + 热重载 + 类型绑定 |
51
- | `LoggerManager` | 调用链注入 + 颜色 + 轮转 |
52
- | `EventBus` | 同步/异步事件 |
53
- | `Tracer` | 轻量调用链 |
54
- | `TaskDispatcher` | 单发/竞速 + 贝叶斯自适应选择 |
55
- | `PluginRegistry` | 自动发现 + 热重载 |
56
- | `get_protocol` | XML/antml/original/bracket/nous 等 LLM 工具协议 |
57
- | `ProxyManager` | HTTP/HTTPS/SOCKS |
58
- | `AutoUpdater` | git 自动更新 |
59
- | `FileWatcher` | 轮询文件监视 |
60
-
61
- ## 开发
62
-
63
- ```bash
64
- pip install -e ".[dev,all]"
65
- make lint
66
- make test
67
- make cov
68
- ```
69
-
70
- 模块指南见 [docs/modules.md](docs/modules.md),API 参考见 [docs/api.md](docs/api.md)。
71
-
72
- ## 许可证
73
-
74
- MIT
1
+ # echotools
2
+
3
+ 通用基础设施 SDK:配置中心、日志、事件总线、调用链、任务调度、
4
+ 插件框架、协议系统、自适应选择器,完全项目无关,兼容 Python 3.8–3.14。
5
+
6
+ ## 安装
7
+
8
+ ```bash
9
+ # 核心(仅 typing-extensions)
10
+ pip install echotools
11
+
12
+ # 完整功能
13
+ pip install echotools[all]
14
+ ```
15
+
16
+ ### 可选依赖
17
+
18
+ | Extra | 用途 |
19
+ |-------|------|
20
+ | `toml` | TOML 配置读写 |
21
+ | `watch` | watchdog 文件监视 |
22
+ | `http` | aiohttp Web 层 |
23
+ | `socks` | SOCKS 代理 |
24
+ | `ssh` | SSH 终端 |
25
+ | `terminal` | Windows ConPTY |
26
+ | `all` | 全部可选依赖 |
27
+ | `dev` | pytest, ruff, mypy |
28
+
29
+ ## 快速开始
30
+
31
+ ```python
32
+ from echotools import EchoTools
33
+
34
+ et = EchoTools(service_name="myapp")
35
+ et.logger.configure(level="INFO", color=True)
36
+ cfg = et.config
37
+ cfg.load("config.toml")
38
+
39
+ with et.tracer.trace("request") as trace:
40
+ with et.tracer.span(trace, "db") as span:
41
+ span.set_tag("query", "select 1")
42
+
43
+ await et.shutdown()
44
+ ```
45
+
46
+ ## 能力总览
47
+
48
+ | 模块 | 说明 |
49
+ |------|------|
50
+ | `ConfigCenter` | 点路径配置 + 热重载 + 类型绑定 |
51
+ | `LoggerManager` | 调用链注入 + 颜色 + 轮转 |
52
+ | `EventBus` | 同步/异步事件 |
53
+ | `Tracer` | 轻量调用链 |
54
+ | `TaskDispatcher` | 单发/竞速 + 贝叶斯自适应选择 |
55
+ | `PluginRegistry` | 自动发现 + 热重载 |
56
+ | `get_protocol` | XML/antml/original/bracket/nous 等 LLM 工具协议 |
57
+ | `ProxyManager` | HTTP/HTTPS/SOCKS |
58
+ | `AutoUpdater` | git 自动更新 |
59
+ | `FileWatcher` | 轮询文件监视 |
60
+
61
+ ## 开发
62
+
63
+ ```bash
64
+ pip install -e ".[dev,all]"
65
+ make lint
66
+ make test
67
+ make cov
68
+ ```
69
+
70
+ 模块指南见 [docs/modules.md](docs/modules.md),API 参考见 [docs/api.md](docs/api.md)。
71
+
72
+ ## 许可证
73
+
74
+ MIT
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "echotools"
7
- version = "2.3.78"
7
+ version = "2.3.81"
8
8
  description = "通用基础设施 SDK:配置、日志、事件、调度、插件、协议、调用链"
9
9
  readme = "docs/README.md"
10
10
  requires-python = ">=3.8"
@@ -1,8 +1,8 @@
1
- [metadata]
2
- url = https://github.com/nichengfuben/echotools
3
- home_page = https://github.com/nichengfuben/echotools
4
-
5
- [egg_info]
6
- tag_build =
7
- tag_date = 0
8
-
1
+ [metadata]
2
+ url = https://github.com/nichengfuben/echotools
3
+ home_page = https://github.com/nichengfuben/echotools
4
+
5
+ [egg_info]
6
+ tag_build =
7
+ tag_date = 0
8
+