echotools 2.4.4__tar.gz → 2.4.5__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.
- {echotools-2.4.4 → echotools-2.4.5}/PKG-INFO +2 -2
- {echotools-2.4.4 → echotools-2.4.5}/README.md +1 -1
- {echotools-2.4.4 → echotools-2.4.5}/pyproject.toml +1 -1
- echotools-2.4.5/src/echotools/base/ids/__init__.py +7 -0
- {echotools-2.4.4 → echotools-2.4.5}/src/echotools/base/ids/generator.py +6 -1
- {echotools-2.4.4 → echotools-2.4.5}/src/echotools/exec/fncall/__init__.py +10 -0
- {echotools-2.4.4 → echotools-2.4.5}/src/echotools/exec/fncall/protocols/entml_tool/fakemarkup.py +12 -0
- echotools-2.4.5/src/echotools/exec/fncall/tool_id.py +42 -0
- {echotools-2.4.4 → echotools-2.4.5}/src/echotools.egg-info/PKG-INFO +2 -2
- {echotools-2.4.4 → echotools-2.4.5}/src/echotools.egg-info/SOURCES.txt +2 -0
- {echotools-2.4.4 → echotools-2.4.5}/src/tests/test_entml_fake_structure_markup.py +24 -0
- {echotools-2.4.4 → echotools-2.4.5}/src/tests/test_ids.py +7 -1
- echotools-2.4.5/src/tests/test_tool_id.py +47 -0
- echotools-2.4.4/src/echotools/base/ids/__init__.py +0 -7
- {echotools-2.4.4 → echotools-2.4.5}/setup.cfg +0 -0
- {echotools-2.4.4 → echotools-2.4.5}/src/echotools/__init__.py +0 -0
- {echotools-2.4.4 → echotools-2.4.5}/src/echotools/base/cache/__init__.py +0 -0
- {echotools-2.4.4 → echotools-2.4.5}/src/echotools/base/cache/list_cache.py +0 -0
- {echotools-2.4.4 → echotools-2.4.5}/src/echotools/base/cache/memory_cache.py +0 -0
- {echotools-2.4.4 → echotools-2.4.5}/src/echotools/base/config/__init__.py +0 -0
- {echotools-2.4.4 → echotools-2.4.5}/src/echotools/base/config/base.py +0 -0
- {echotools-2.4.4 → echotools-2.4.5}/src/echotools/base/config/center.py +0 -0
- {echotools-2.4.4 → echotools-2.4.5}/src/echotools/base/config/center_notify.py +0 -0
- {echotools-2.4.4 → echotools-2.4.5}/src/echotools/base/config/center_template.py +0 -0
- {echotools-2.4.4 → echotools-2.4.5}/src/echotools/base/config/loader.py +0 -0
- {echotools-2.4.4 → echotools-2.4.5}/src/echotools/base/config/merge.py +0 -0
- {echotools-2.4.4 → echotools-2.4.5}/src/echotools/base/errors/__init__.py +0 -0
- {echotools-2.4.4 → echotools-2.4.5}/src/echotools/base/errors/base.py +0 -0
- {echotools-2.4.4 → echotools-2.4.5}/src/echotools/base/errors/classify.py +0 -0
- {echotools-2.4.4 → echotools-2.4.5}/src/echotools/base/errors/common.py +0 -0
- {echotools-2.4.4 → echotools-2.4.5}/src/echotools/base/errors/http.py +0 -0
- {echotools-2.4.4 → echotools-2.4.5}/src/echotools/base/io/__init__.py +0 -0
- {echotools-2.4.4 → echotools-2.4.5}/src/echotools/base/io/io_utils.py +0 -0
- {echotools-2.4.4 → echotools-2.4.5}/src/echotools/base/io/printstream.py +0 -0
- {echotools-2.4.4 → echotools-2.4.5}/src/echotools/base/logger/__init__.py +0 -0
- {echotools-2.4.4 → echotools-2.4.5}/src/echotools/base/logger/manager.py +0 -0
- {echotools-2.4.4 → echotools-2.4.5}/src/echotools/base/retry/__init__.py +0 -0
- {echotools-2.4.4 → echotools-2.4.5}/src/echotools/base/retry/retry.py +0 -0
- {echotools-2.4.4 → echotools-2.4.5}/src/echotools/exec/dispatch/__init__.py +0 -0
- {echotools-2.4.4 → echotools-2.4.5}/src/echotools/exec/dispatch/candidate.py +0 -0
- {echotools-2.4.4 → echotools-2.4.5}/src/echotools/exec/dispatch/dispatcher.py +0 -0
- {echotools-2.4.4 → echotools-2.4.5}/src/echotools/exec/dispatch/proxy_selector.py +0 -0
- {echotools-2.4.4 → echotools-2.4.5}/src/echotools/exec/dispatch/race.py +0 -0
- {echotools-2.4.4 → echotools-2.4.5}/src/echotools/exec/dispatch/selector.py +0 -0
- {echotools-2.4.4 → echotools-2.4.5}/src/echotools/exec/dispatch/usage.py +0 -0
- {echotools-2.4.4 → echotools-2.4.5}/src/echotools/exec/fncall/parsers/__init__.py +0 -0
- {echotools-2.4.4 → echotools-2.4.5}/src/echotools/exec/fncall/parsers/stream.py +0 -0
- {echotools-2.4.4 → echotools-2.4.5}/src/echotools/exec/fncall/parsers/stream_delta.py +0 -0
- {echotools-2.4.4 → echotools-2.4.5}/src/echotools/exec/fncall/parsers/stream_feed.py +0 -0
- {echotools-2.4.4 → echotools-2.4.5}/src/echotools/exec/fncall/parsers/stream_final.py +0 -0
- {echotools-2.4.4 → echotools-2.4.5}/src/echotools/exec/fncall/prompt/__init__.py +0 -0
- {echotools-2.4.4 → echotools-2.4.5}/src/echotools/exec/fncall/prompt/behavior_blocks.py +0 -0
- {echotools-2.4.4 → echotools-2.4.5}/src/echotools/exec/fncall/prompt/history.py +0 -0
- {echotools-2.4.4 → echotools-2.4.5}/src/echotools/exec/fncall/prompt/history_format.py +0 -0
- {echotools-2.4.4 → echotools-2.4.5}/src/echotools/exec/fncall/prompt/inject.py +0 -0
- {echotools-2.4.4 → echotools-2.4.5}/src/echotools/exec/fncall/prompt/prompt_helpers.py +0 -0
- {echotools-2.4.4 → echotools-2.4.5}/src/echotools/exec/fncall/protocols/__init__.py +0 -0
- {echotools-2.4.4 → echotools-2.4.5}/src/echotools/exec/fncall/protocols/entml.py +0 -0
- {echotools-2.4.4 → echotools-2.4.5}/src/echotools/exec/fncall/protocols/entml_patterns/__init__.py +0 -0
- {echotools-2.4.4 → echotools-2.4.5}/src/echotools/exec/fncall/protocols/entml_patterns/invoke.py +0 -0
- {echotools-2.4.4 → echotools-2.4.5}/src/echotools/exec/fncall/protocols/entml_patterns/params.py +0 -0
- {echotools-2.4.4 → echotools-2.4.5}/src/echotools/exec/fncall/protocols/entml_patterns/regex.py +0 -0
- {echotools-2.4.4 → echotools-2.4.5}/src/echotools/exec/fncall/protocols/entml_patterns/strip.py +0 -0
- {echotools-2.4.4 → echotools-2.4.5}/src/echotools/exec/fncall/protocols/entml_schema/__init__.py +0 -0
- {echotools-2.4.4 → echotools-2.4.5}/src/echotools/exec/fncall/protocols/entml_schema/mangled.py +0 -0
- {echotools-2.4.4 → echotools-2.4.5}/src/echotools/exec/fncall/protocols/entml_schema/validate.py +0 -0
- {echotools-2.4.4 → echotools-2.4.5}/src/echotools/exec/fncall/protocols/entml_stream/__init__.py +0 -0
- {echotools-2.4.4 → echotools-2.4.5}/src/echotools/exec/fncall/protocols/entml_stream/body.py +0 -0
- {echotools-2.4.4 → echotools-2.4.5}/src/echotools/exec/fncall/protocols/entml_stream/snap.py +0 -0
- {echotools-2.4.4 → echotools-2.4.5}/src/echotools/exec/fncall/protocols/entml_think/__init__.py +0 -0
- {echotools-2.4.4 → echotools-2.4.5}/src/echotools/exec/fncall/protocols/entml_think/core.py +0 -0
- {echotools-2.4.4 → echotools-2.4.5}/src/echotools/exec/fncall/protocols/entml_think/filter.py +0 -0
- {echotools-2.4.4 → echotools-2.4.5}/src/echotools/exec/fncall/protocols/entml_think/hist.py +0 -0
- {echotools-2.4.4 → echotools-2.4.5}/src/echotools/exec/fncall/protocols/entml_think/hold.py +0 -0
- {echotools-2.4.4 → echotools-2.4.5}/src/echotools/exec/fncall/protocols/entml_think/parse.py +0 -0
- {echotools-2.4.4 → echotools-2.4.5}/src/echotools/exec/fncall/protocols/entml_tool/__init__.py +0 -0
- {echotools-2.4.4 → echotools-2.4.5}/src/echotools/exec/fncall/protocols/entml_tool/comment.py +0 -0
- {echotools-2.4.4 → echotools-2.4.5}/src/echotools/exec/fncall/protocols/entml_tool/invoke.py +0 -0
- {echotools-2.4.4 → echotools-2.4.5}/src/echotools/exec/fncall/protocols/entml_tool/tools.py +0 -0
- {echotools-2.4.4 → echotools-2.4.5}/src/echotools/exec/fncall/protocols/entml_tool/values.py +0 -0
- {echotools-2.4.4 → echotools-2.4.5}/src/echotools/exec/fncall/registry.py +0 -0
- {echotools-2.4.4 → echotools-2.4.5}/src/echotools/exec/fncall/shared/__init__.py +0 -0
- {echotools-2.4.4 → echotools-2.4.5}/src/echotools/exec/fncall/shared/coercion.py +0 -0
- {echotools-2.4.4 → echotools-2.4.5}/src/echotools/exec/fncall/shared/entml_format.py +0 -0
- {echotools-2.4.4 → echotools-2.4.5}/src/echotools/exec/fncall/shared/history_markup.py +0 -0
- {echotools-2.4.4 → echotools-2.4.5}/src/echotools/exec/fncall/shared/loop_detect.py +0 -0
- {echotools-2.4.4 → echotools-2.4.5}/src/echotools/exec/fncall/shared/normalization.py +0 -0
- {echotools-2.4.4 → echotools-2.4.5}/src/echotools/exec/fncall/shared/schema_render.py +0 -0
- {echotools-2.4.4 → echotools-2.4.5}/src/echotools/exec/keys.py +0 -0
- {echotools-2.4.4 → echotools-2.4.5}/src/echotools/exec/lifecycle/__init__.py +0 -0
- {echotools-2.4.4 → echotools-2.4.5}/src/echotools/exec/lifecycle/manager.py +0 -0
- {echotools-2.4.4 → echotools-2.4.5}/src/echotools/exec/lifecycle/updater.py +0 -0
- {echotools-2.4.4 → echotools-2.4.5}/src/echotools/exec/lifecycle/updater_pull.py +0 -0
- {echotools-2.4.4 → echotools-2.4.5}/src/echotools/exec/process/__init__.py +0 -0
- {echotools-2.4.4 → echotools-2.4.5}/src/echotools/exec/process/port.py +0 -0
- {echotools-2.4.4 → echotools-2.4.5}/src/echotools/exec/protocol/__init__.py +0 -0
- {echotools-2.4.4 → echotools-2.4.5}/src/echotools/exec/protocol/base.py +0 -0
- {echotools-2.4.4 → echotools-2.4.5}/src/echotools/exec/terminal/__init__.py +0 -0
- {echotools-2.4.4 → echotools-2.4.5}/src/echotools/exec/terminal/conpty.py +0 -0
- {echotools-2.4.4 → echotools-2.4.5}/src/echotools/exec/terminal/local/__init__.py +0 -0
- {echotools-2.4.4 → echotools-2.4.5}/src/echotools/exec/terminal/local/core.py +0 -0
- {echotools-2.4.4 → echotools-2.4.5}/src/echotools/exec/terminal/local/proc.py +0 -0
- {echotools-2.4.4 → echotools-2.4.5}/src/echotools/exec/terminal/local/unix.py +0 -0
- {echotools-2.4.4 → echotools-2.4.5}/src/echotools/exec/terminal/local/win.py +0 -0
- {echotools-2.4.4 → echotools-2.4.5}/src/echotools/exec/terminal/sanitize.py +0 -0
- {echotools-2.4.4 → echotools-2.4.5}/src/echotools/exec/terminal/session/__init__.py +0 -0
- {echotools-2.4.4 → echotools-2.4.5}/src/echotools/exec/terminal/session/base.py +0 -0
- {echotools-2.4.4 → echotools-2.4.5}/src/echotools/exec/terminal/session/client.py +0 -0
- {echotools-2.4.4 → echotools-2.4.5}/src/echotools/exec/terminal/ssh.py +0 -0
- {echotools-2.4.4 → echotools-2.4.5}/src/echotools/exec/terminal/tmux.py +0 -0
- {echotools-2.4.4 → echotools-2.4.5}/src/echotools/media/console/__init__.py +0 -0
- {echotools-2.4.4 → echotools-2.4.5}/src/echotools/media/console/charmap.py +0 -0
- {echotools-2.4.4 → echotools-2.4.5}/src/echotools/media/console/spinner.py +0 -0
- {echotools-2.4.4 → echotools-2.4.5}/src/echotools/media/console/ui.py +0 -0
- {echotools-2.4.4 → echotools-2.4.5}/src/echotools/media/console/uicore/mixins/__init__.py +0 -0
- {echotools-2.4.4 → echotools-2.4.5}/src/echotools/media/console/uicore/mixins/uibase.py +0 -0
- {echotools-2.4.4 → echotools-2.4.5}/src/echotools/media/console/uicore/mixins/uicmds.py +0 -0
- {echotools-2.4.4 → echotools-2.4.5}/src/echotools/media/console/uicore/mixins/uiinteract.py +0 -0
- {echotools-2.4.4 → echotools-2.4.5}/src/echotools/media/console/uicore/mixins/uioutput.py +0 -0
- {echotools-2.4.4 → echotools-2.4.5}/src/echotools/media/console/uicore/mixins/uistream.py +0 -0
- {echotools-2.4.4 → echotools-2.4.5}/src/echotools/media/console/uicore/ui_console.py +0 -0
- {echotools-2.4.4 → echotools-2.4.5}/src/echotools/media/console/uicore/ui_io.py +0 -0
- {echotools-2.4.4 → echotools-2.4.5}/src/echotools/media/console/uicore/ui_log.py +0 -0
- {echotools-2.4.4 → echotools-2.4.5}/src/echotools/media/console/uicore/ui_platform.py +0 -0
- {echotools-2.4.4 → echotools-2.4.5}/src/echotools/media/console/uicore/ui_text.py +0 -0
- {echotools-2.4.4 → echotools-2.4.5}/src/echotools/media/console/uicore/ui_types.py +0 -0
- {echotools-2.4.4 → echotools-2.4.5}/src/echotools/media/console/uilayout/ui_bridge.py +0 -0
- {echotools-2.4.4 → echotools-2.4.5}/src/echotools/media/console/uilayout/ui_countdown.py +0 -0
- {echotools-2.4.4 → echotools-2.4.5}/src/echotools/media/console/uilayout/ui_layout.py +0 -0
- {echotools-2.4.4 → echotools-2.4.5}/src/echotools/media/console/uilayout/ui_misc.py +0 -0
- {echotools-2.4.4 → echotools-2.4.5}/src/echotools/media/console/uilayout/ui_panel.py +0 -0
- {echotools-2.4.4 → echotools-2.4.5}/src/echotools/media/console/uilayout/ui_table.py +0 -0
- {echotools-2.4.4 → echotools-2.4.5}/src/echotools/media/console/uilayout/ui_tree.py +0 -0
- {echotools-2.4.4 → echotools-2.4.5}/src/echotools/media/console/uiwidgets/ui_box.py +0 -0
- {echotools-2.4.4 → echotools-2.4.5}/src/echotools/media/console/uiwidgets/ui_editor.py +0 -0
- {echotools-2.4.4 → echotools-2.4.5}/src/echotools/media/console/uiwidgets/ui_progress.py +0 -0
- {echotools-2.4.4 → echotools-2.4.5}/src/echotools/media/console/uiwidgets/ui_richcli.py +0 -0
- {echotools-2.4.4 → echotools-2.4.5}/src/echotools/media/console/uiwidgets/ui_select.py +0 -0
- {echotools-2.4.4 → echotools-2.4.5}/src/echotools/media/console/uiwidgets/ui_stream.py +0 -0
- {echotools-2.4.4 → echotools-2.4.5}/src/echotools/media/console/uiwidgets/ui_themes.py +0 -0
- {echotools-2.4.4 → echotools-2.4.5}/src/echotools/media/events/__init__.py +0 -0
- {echotools-2.4.4 → echotools-2.4.5}/src/echotools/media/events/bus.py +0 -0
- {echotools-2.4.4 → echotools-2.4.5}/src/echotools/media/events/event.py +0 -0
- {echotools-2.4.4 → echotools-2.4.5}/src/echotools/media/spinner/__init__.py +0 -0
- {echotools-2.4.4 → echotools-2.4.5}/src/echotools/media/spinner/spinner.py +0 -0
- {echotools-2.4.4 → echotools-2.4.5}/src/echotools/media/spinner/spinner_color.py +0 -0
- {echotools-2.4.4 → echotools-2.4.5}/src/echotools/media/tracing/__init__.py +0 -0
- {echotools-2.4.4 → echotools-2.4.5}/src/echotools/media/tracing/context.py +0 -0
- {echotools-2.4.4 → echotools-2.4.5}/src/echotools/media/tracing/span.py +0 -0
- {echotools-2.4.4 → echotools-2.4.5}/src/echotools/media/tracing/tracer.py +0 -0
- {echotools-2.4.4 → echotools-2.4.5}/src/echotools/media/translate.py +0 -0
- {echotools-2.4.4 → echotools-2.4.5}/src/echotools/media/watcher/__init__.py +0 -0
- {echotools-2.4.4 → echotools-2.4.5}/src/echotools/media/watcher/file_watcher.py +0 -0
- {echotools-2.4.4 → echotools-2.4.5}/src/echotools/media/web/__init__.py +0 -0
- {echotools-2.4.4 → echotools-2.4.5}/src/echotools/media/web/application.py +0 -0
- {echotools-2.4.4 → echotools-2.4.5}/src/echotools/media/web/broker.py +0 -0
- {echotools-2.4.4 → echotools-2.4.5}/src/echotools/media/web/input_box/app.js +0 -0
- {echotools-2.4.4 → echotools-2.4.5}/src/echotools/media/web/input_box/components/filezone.js +0 -0
- {echotools-2.4.4 → echotools-2.4.5}/src/echotools/media/web/input_box/components/motionkit.js +0 -0
- {echotools-2.4.4 → echotools-2.4.5}/src/echotools/media/web/input_box/components/sendbutton.js +0 -0
- {echotools-2.4.4 → echotools-2.4.5}/src/echotools/media/web/input_box/components/sortablelist.css +0 -0
- {echotools-2.4.4 → echotools-2.4.5}/src/echotools/media/web/input_box/components/sortablelist.js +0 -0
- {echotools-2.4.4 → echotools-2.4.5}/src/echotools/media/web/input_box/components/textinput.js +0 -0
- {echotools-2.4.4 → echotools-2.4.5}/src/echotools/media/web/input_box/components/voiceinput.js +0 -0
- {echotools-2.4.4 → echotools-2.4.5}/src/echotools/media/web/input_box/fonts/inter-500.woff2 +0 -0
- {echotools-2.4.4 → echotools-2.4.5}/src/echotools/media/web/input_box/fonts/inter-600.woff2 +0 -0
- {echotools-2.4.4 → echotools-2.4.5}/src/echotools/media/web/input_box/fonts/inter400.woff2 +0 -0
- {echotools-2.4.4 → echotools-2.4.5}/src/echotools/media/web/input_box/inputbox.css +0 -0
- {echotools-2.4.4 → echotools-2.4.5}/src/echotools/media/web/input_box/inputbox.js +0 -0
- {echotools-2.4.4 → echotools-2.4.5}/src/echotools/media/web/input_box/style.css +0 -0
- {echotools-2.4.4 → echotools-2.4.5}/src/echotools/media/web/input_box/voicegif.js +0 -0
- {echotools-2.4.4 → echotools-2.4.5}/src/echotools/media/web/middleware.py +0 -0
- {echotools-2.4.4 → echotools-2.4.5}/src/echotools/media/web/stats.py +0 -0
- {echotools-2.4.4 → echotools-2.4.5}/src/echotools/media/web/utils.py +0 -0
- {echotools-2.4.4 → echotools-2.4.5}/src/echotools/plat/files/__init__.py +0 -0
- {echotools-2.4.4 → echotools-2.4.5}/src/echotools/plat/files/file_util.py +0 -0
- {echotools-2.4.4 → echotools-2.4.5}/src/echotools/plat/network/__init__.py +0 -0
- {echotools-2.4.4 → echotools-2.4.5}/src/echotools/plat/network/http_utils.py +0 -0
- {echotools-2.4.4 → echotools-2.4.5}/src/echotools/plat/plugin/__init__.py +0 -0
- {echotools-2.4.4 → echotools-2.4.5}/src/echotools/plat/plugin/base.py +0 -0
- {echotools-2.4.4 → echotools-2.4.5}/src/echotools/plat/plugin/discovery.py +0 -0
- {echotools-2.4.4 → echotools-2.4.5}/src/echotools/plat/plugin/registry.py +0 -0
- {echotools-2.4.4 → echotools-2.4.5}/src/echotools/plat/plugin/registry_ops.py +0 -0
- {echotools-2.4.4 → echotools-2.4.5}/src/echotools/plat/proxy/__init__.py +0 -0
- {echotools-2.4.4 → echotools-2.4.5}/src/echotools/plat/proxy/manager.py +0 -0
- {echotools-2.4.4 → echotools-2.4.5}/src/echotools/plat/runtime/__init__.py +0 -0
- {echotools-2.4.4 → echotools-2.4.5}/src/echotools/plat/runtime/collector.py +0 -0
- {echotools-2.4.4 → echotools-2.4.5}/src/echotools/plat/scheduler/__init__.py +0 -0
- {echotools-2.4.4 → echotools-2.4.5}/src/echotools/plat/scheduler/scheduler.py +0 -0
- {echotools-2.4.4 → echotools-2.4.5}/src/echotools/plat/sdk/__init__.py +0 -0
- {echotools-2.4.4 → echotools-2.4.5}/src/echotools/plat/sdk/facade.py +0 -0
- {echotools-2.4.4 → echotools-2.4.5}/src/echotools/version.py +0 -0
- {echotools-2.4.4 → echotools-2.4.5}/src/echotools.egg-info/dependency_links.txt +0 -0
- {echotools-2.4.4 → echotools-2.4.5}/src/echotools.egg-info/requires.txt +0 -0
- {echotools-2.4.4 → echotools-2.4.5}/src/echotools.egg-info/top_level.txt +0 -0
- {echotools-2.4.4 → echotools-2.4.5}/src/tests/_check_parity.py +0 -0
- {echotools-2.4.4 → echotools-2.4.5}/src/tests/bench_import.py +0 -0
- {echotools-2.4.4 → echotools-2.4.5}/src/tests/conftest.py +0 -0
- {echotools-2.4.4 → echotools-2.4.5}/src/tests/fixtures/__init__.py +0 -0
- {echotools-2.4.4 → echotools-2.4.5}/src/tests/fixtures/entml_golden.py +0 -0
- {echotools-2.4.4 → echotools-2.4.5}/src/tests/fixtures/entml_golden_update.py +0 -0
- {echotools-2.4.4 → echotools-2.4.5}/src/tests/fixtures/simulated_fake_history_markup_responses.py +0 -0
- {echotools-2.4.4 → echotools-2.4.5}/src/tests/fixtures/simulated_fault_thinking_responses.py +0 -0
- {echotools-2.4.4 → echotools-2.4.5}/src/tests/fixtures/simulated_llm_tool_responses.py +0 -0
- {echotools-2.4.4 → echotools-2.4.5}/src/tests/test_adversarial_stream_splits.py +0 -0
- {echotools-2.4.4 → echotools-2.4.5}/src/tests/test_cache_retry.py +0 -0
- {echotools-2.4.4 → echotools-2.4.5}/src/tests/test_completion.py +0 -0
- {echotools-2.4.4 → echotools-2.4.5}/src/tests/test_config.py +0 -0
- {echotools-2.4.4 → echotools-2.4.5}/src/tests/test_config_extended.py +0 -0
- {echotools-2.4.4 → echotools-2.4.5}/src/tests/test_console.py +0 -0
- {echotools-2.4.4 → echotools-2.4.5}/src/tests/test_coverage_core.py +0 -0
- {echotools-2.4.4 → echotools-2.4.5}/src/tests/test_dispatch.py +0 -0
- {echotools-2.4.4 → echotools-2.4.5}/src/tests/test_dispatch_extended.py +0 -0
- {echotools-2.4.4 → echotools-2.4.5}/src/tests/test_dispatch_race.py +0 -0
- {echotools-2.4.4 → echotools-2.4.5}/src/tests/test_entml_agent_output_formats.py +0 -0
- {echotools-2.4.4 → echotools-2.4.5}/src/tests/test_entml_bare_invoke_format.py +0 -0
- {echotools-2.4.4 → echotools-2.4.5}/src/tests/test_entml_batch_stream_comprehensive.py +0 -0
- {echotools-2.4.4 → echotools-2.4.5}/src/tests/test_entml_golden.py +0 -0
- {echotools-2.4.4 → echotools-2.4.5}/src/tests/test_entml_invoke_known_tool_gate.py +0 -0
- {echotools-2.4.4 → echotools-2.4.5}/src/tests/test_entml_parser_comprehensive.py +0 -0
- {echotools-2.4.4 → echotools-2.4.5}/src/tests/test_entml_protocol.py +0 -0
- {echotools-2.4.4 → echotools-2.4.5}/src/tests/test_entml_stream_json.py +0 -0
- {echotools-2.4.4 → echotools-2.4.5}/src/tests/test_entml_stream_json_exhaustive.py +0 -0
- {echotools-2.4.4 → echotools-2.4.5}/src/tests/test_entml_thinking_history.py +0 -0
- {echotools-2.4.4 → echotools-2.4.5}/src/tests/test_entml_thinking_parse.py +0 -0
- {echotools-2.4.4 → echotools-2.4.5}/src/tests/test_entml_tool_parse_leak.py +0 -0
- {echotools-2.4.4 → echotools-2.4.5}/src/tests/test_entml_tool_pipeline.py +0 -0
- {echotools-2.4.4 → echotools-2.4.5}/src/tests/test_entml_tools.py +0 -0
- {echotools-2.4.4 → echotools-2.4.5}/src/tests/test_errors.py +0 -0
- {echotools-2.4.4 → echotools-2.4.5}/src/tests/test_errors_common.py +0 -0
- {echotools-2.4.4 → echotools-2.4.5}/src/tests/test_events.py +0 -0
- {echotools-2.4.4 → echotools-2.4.5}/src/tests/test_events_event.py +0 -0
- {echotools-2.4.4 → echotools-2.4.5}/src/tests/test_facade.py +0 -0
- {echotools-2.4.4 → echotools-2.4.5}/src/tests/test_fake_history_markup_batch.py +0 -0
- {echotools-2.4.4 → echotools-2.4.5}/src/tests/test_fake_history_markup_invoke_preserve.py +0 -0
- {echotools-2.4.4 → echotools-2.4.5}/src/tests/test_fake_history_markup_reply_protect.py +0 -0
- {echotools-2.4.4 → echotools-2.4.5}/src/tests/test_fake_history_markup_stream.py +0 -0
- {echotools-2.4.4 → echotools-2.4.5}/src/tests/test_fault_thinking_close_batch.py +0 -0
- {echotools-2.4.4 → echotools-2.4.5}/src/tests/test_fault_thinking_close_stream.py +0 -0
- {echotools-2.4.4 → echotools-2.4.5}/src/tests/test_fncall.py +0 -0
- {echotools-2.4.4 → echotools-2.4.5}/src/tests/test_fncall_stream_thinking.py +0 -0
- {echotools-2.4.4 → echotools-2.4.5}/src/tests/test_history_markup_filter.py +0 -0
- {echotools-2.4.4 → echotools-2.4.5}/src/tests/test_imports.py +0 -0
- {echotools-2.4.4 → echotools-2.4.5}/src/tests/test_io.py +0 -0
- {echotools-2.4.4 → echotools-2.4.5}/src/tests/test_keys.py +0 -0
- {echotools-2.4.4 → echotools-2.4.5}/src/tests/test_lifecycle.py +0 -0
- {echotools-2.4.4 → echotools-2.4.5}/src/tests/test_logger.py +0 -0
- {echotools-2.4.4 → echotools-2.4.5}/src/tests/test_merge.py +0 -0
- {echotools-2.4.4 → echotools-2.4.5}/src/tests/test_model_branch_matrix.py +0 -0
- {echotools-2.4.4 → echotools-2.4.5}/src/tests/test_multiline_parameter_comprehensive.py +0 -0
- {echotools-2.4.4 → echotools-2.4.5}/src/tests/test_plugin.py +0 -0
- {echotools-2.4.4 → echotools-2.4.5}/src/tests/test_printstream.py +0 -0
- {echotools-2.4.4 → echotools-2.4.5}/src/tests/test_protocols.py +0 -0
- {echotools-2.4.4 → echotools-2.4.5}/src/tests/test_proxy.py +0 -0
- {echotools-2.4.4 → echotools-2.4.5}/src/tests/test_proxy_selector.py +0 -0
- {echotools-2.4.4 → echotools-2.4.5}/src/tests/test_runtime.py +0 -0
- {echotools-2.4.4 → echotools-2.4.5}/src/tests/test_scheduler.py +0 -0
- {echotools-2.4.4 → echotools-2.4.5}/src/tests/test_schema_validate.py +0 -0
- {echotools-2.4.4 → echotools-2.4.5}/src/tests/test_simulated_llm_tool_parse.py +0 -0
- {echotools-2.4.4 → echotools-2.4.5}/src/tests/test_stream_partial_json_parity.py +0 -0
- {echotools-2.4.4 → echotools-2.4.5}/src/tests/test_stream_realtime_parse.py +0 -0
- {echotools-2.4.4 → echotools-2.4.5}/src/tests/test_tracing.py +0 -0
- {echotools-2.4.4 → echotools-2.4.5}/src/tests/test_ui_bridge.py +0 -0
- {echotools-2.4.4 → echotools-2.4.5}/src/tests/test_usage.py +0 -0
- {echotools-2.4.4 → echotools-2.4.5}/src/tests/test_web.py +0 -0
- {echotools-2.4.4 → echotools-2.4.5}/src/tests/test_web_broker.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: echotools
|
|
3
|
-
Version: 2.4.
|
|
3
|
+
Version: 2.4.5
|
|
4
4
|
Summary: 通用基础设施 SDK:配置、日志、事件、调度、插件、协议、调用链
|
|
5
5
|
Home-page: https://github.com/nichengfuben/echotools
|
|
6
6
|
Author: nichengfuben
|
|
@@ -58,7 +58,7 @@ Requires-Dist: ruff>=0.4.0; extra == "dev"
|
|
|
58
58
|
|
|
59
59
|
通用基础设施 SDK:配置、日志、事件、调度、插件、调用链,以及 **entml** LLM 工具调用协议与终端 Console UI。
|
|
60
60
|
|
|
61
|
-
完全项目无关,兼容 Python 3.8–3.14。当前版本:**2.4.
|
|
61
|
+
完全项目无关,兼容 Python 3.8–3.14。当前版本:**2.4.5**(详见 [CHANGELOG](docs/CHANGELOG.md))。
|
|
62
62
|
|
|
63
63
|
## 安装
|
|
64
64
|
|
|
@@ -7,7 +7,7 @@ import struct
|
|
|
7
7
|
import time
|
|
8
8
|
import uuid
|
|
9
9
|
|
|
10
|
-
__all__ = ["uuid7", "short_id", "trace_id", "span_id"]
|
|
10
|
+
__all__ = ["uuid7", "short_id", "trace_id", "span_id", "gen_tool_id"]
|
|
11
11
|
|
|
12
12
|
|
|
13
13
|
def uuid7() -> str:
|
|
@@ -60,3 +60,8 @@ def span_id() -> str:
|
|
|
60
60
|
span_id 字符串。
|
|
61
61
|
"""
|
|
62
62
|
return secrets.token_hex(8)
|
|
63
|
+
|
|
64
|
+
|
|
65
|
+
def gen_tool_id() -> str:
|
|
66
|
+
"""生成 Anthropic 兼容的 tool_use id(``toolu_`` + 24 位十六进制)。"""
|
|
67
|
+
return f"toolu_{uuid.uuid4().hex[:24]}"
|
|
@@ -15,6 +15,12 @@ from echotools.exec.fncall.shared.normalization import (
|
|
|
15
15
|
normalize_tool_call,
|
|
16
16
|
normalize_tool_calls,
|
|
17
17
|
)
|
|
18
|
+
from echotools.base.ids.generator import gen_tool_id
|
|
19
|
+
from echotools.exec.fncall.tool_id import (
|
|
20
|
+
ensure_toolu_tool_call_id,
|
|
21
|
+
fix_tool_call_id,
|
|
22
|
+
is_placeholder_tool_call_id,
|
|
23
|
+
)
|
|
18
24
|
from echotools.exec.protocol.base import (
|
|
19
25
|
ToolProtocol,
|
|
20
26
|
get_protocol_by_id,
|
|
@@ -28,6 +34,10 @@ __all__ = [
|
|
|
28
34
|
"normalize_content",
|
|
29
35
|
"normalize_tool_call",
|
|
30
36
|
"normalize_tool_calls",
|
|
37
|
+
"gen_tool_id",
|
|
38
|
+
"is_placeholder_tool_call_id",
|
|
39
|
+
"ensure_toolu_tool_call_id",
|
|
40
|
+
"fix_tool_call_id",
|
|
31
41
|
"detect_tool_loop",
|
|
32
42
|
"LoopDetectionResult",
|
|
33
43
|
"ToolProtocol",
|
{echotools-2.4.4 → echotools-2.4.5}/src/echotools/exec/fncall/protocols/entml_tool/fakemarkup.py
RENAMED
|
@@ -29,6 +29,9 @@ _TAG_ONLY_OPEN_RES = (
|
|
|
29
29
|
re.compile(r"<entml:call\b[^>]*>", re.IGNORECASE),
|
|
30
30
|
re.compile(r"<function_calling_behavior\b[^>]*>", re.IGNORECASE),
|
|
31
31
|
re.compile(r"<thinking_behavior\b[^>]*>", re.IGNORECASE),
|
|
32
|
+
re.compile(r"<function_results\b[^>]*>", re.IGNORECASE),
|
|
33
|
+
re.compile(r"<function_result\b[^>]*>", re.IGNORECASE),
|
|
34
|
+
re.compile(r"<redacted_thinking\b[^>]*>", re.IGNORECASE),
|
|
32
35
|
re.compile(r"<entml:hard_constraint_restatement\b[^>]*>", re.IGNORECASE),
|
|
33
36
|
re.compile(r"<entml:result\b[^>]*>", re.IGNORECASE),
|
|
34
37
|
re.compile(r"<entml:todo\b[^>]*>", re.IGNORECASE),
|
|
@@ -40,6 +43,9 @@ _TAG_ONLY_CLOSE_RES = (
|
|
|
40
43
|
re.compile(r"</entml:call\s*>", re.IGNORECASE),
|
|
41
44
|
re.compile(r"</function_calling_behavior\s*>", re.IGNORECASE),
|
|
42
45
|
re.compile(r"</thinking_behavior\s*>", re.IGNORECASE),
|
|
46
|
+
re.compile(r"</function_results\s*>", re.IGNORECASE),
|
|
47
|
+
re.compile(r"</function_result\s*>", re.IGNORECASE),
|
|
48
|
+
re.compile(r"</redacted_thinking\s*>", re.IGNORECASE),
|
|
43
49
|
re.compile(r"</entml:hard_constraint_restatement\s*>", re.IGNORECASE),
|
|
44
50
|
re.compile(r"</entml:result\s*>", re.IGNORECASE),
|
|
45
51
|
re.compile(r"</entml:todo\s*>", re.IGNORECASE),
|
|
@@ -60,6 +66,12 @@ _FAKE_ENTML_TAG_PREFIXES: Tuple[str, ...] = (
|
|
|
60
66
|
"</function_calling_behavior",
|
|
61
67
|
"<thinking_behavior",
|
|
62
68
|
"</thinking_behavior",
|
|
69
|
+
"<function_results",
|
|
70
|
+
"</function_results",
|
|
71
|
+
"<function_result",
|
|
72
|
+
"</function_result",
|
|
73
|
+
"<redacted_thinking",
|
|
74
|
+
"</redacted_thinking",
|
|
63
75
|
"<entml:hard_constraint_restatement",
|
|
64
76
|
"</entml:hard_constraint_restatement",
|
|
65
77
|
"<entml:todo",
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
"""Tool call id 生成与规范化(Anthropic ``toolu_`` 约定)。"""
|
|
2
|
+
|
|
3
|
+
from __future__ import annotations
|
|
4
|
+
|
|
5
|
+
from typing import Any, Dict
|
|
6
|
+
|
|
7
|
+
from echotools.base.ids.generator import gen_tool_id
|
|
8
|
+
|
|
9
|
+
_PLACEHOLDER_EXACT = frozenset({"", "call_0000", "toolu_call_0001"})
|
|
10
|
+
_PLACEHOLDER_PREFIXES = ("call_", "toolu_call_")
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
def is_placeholder_tool_call_id(raw_id: str) -> bool:
|
|
14
|
+
"""echotools 解析占位 id(``call_0000`` / ``toolu_call_*`` 等)应视为无效。"""
|
|
15
|
+
if not raw_id or raw_id in _PLACEHOLDER_EXACT:
|
|
16
|
+
return True
|
|
17
|
+
return raw_id.startswith(_PLACEHOLDER_PREFIXES)
|
|
18
|
+
|
|
19
|
+
|
|
20
|
+
def ensure_toolu_tool_call_id(raw_id: str) -> str:
|
|
21
|
+
"""占位 id 换新;已有 id 无 ``toolu_`` 前缀则补上(Anthropic tool_use 输出)。"""
|
|
22
|
+
tid = (raw_id or "").strip()
|
|
23
|
+
if is_placeholder_tool_call_id(tid):
|
|
24
|
+
return gen_tool_id()
|
|
25
|
+
if not tid.startswith("toolu_"):
|
|
26
|
+
return f"toolu_{tid}"
|
|
27
|
+
return tid
|
|
28
|
+
|
|
29
|
+
|
|
30
|
+
def fix_tool_call_id(tc: Dict[str, Any]) -> Dict[str, Any]:
|
|
31
|
+
"""将 OpenAI 格式 tool call 的占位 id 替换为 ``gen_tool_id()`` 结果。"""
|
|
32
|
+
raw_id = str(tc.get("id") or "")
|
|
33
|
+
call_id = gen_tool_id() if is_placeholder_tool_call_id(raw_id) else raw_id
|
|
34
|
+
func = tc.get("function") or {}
|
|
35
|
+
return {
|
|
36
|
+
"id": call_id,
|
|
37
|
+
"type": "function",
|
|
38
|
+
"function": {
|
|
39
|
+
"name": func.get("name", ""),
|
|
40
|
+
"arguments": func.get("arguments", "{}"),
|
|
41
|
+
},
|
|
42
|
+
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: echotools
|
|
3
|
-
Version: 2.4.
|
|
3
|
+
Version: 2.4.5
|
|
4
4
|
Summary: 通用基础设施 SDK:配置、日志、事件、调度、插件、协议、调用链
|
|
5
5
|
Home-page: https://github.com/nichengfuben/echotools
|
|
6
6
|
Author: nichengfuben
|
|
@@ -58,7 +58,7 @@ Requires-Dist: ruff>=0.4.0; extra == "dev"
|
|
|
58
58
|
|
|
59
59
|
通用基础设施 SDK:配置、日志、事件、调度、插件、调用链,以及 **entml** LLM 工具调用协议与终端 Console UI。
|
|
60
60
|
|
|
61
|
-
完全项目无关,兼容 Python 3.8–3.14。当前版本:**2.4.
|
|
61
|
+
完全项目无关,兼容 Python 3.8–3.14。当前版本:**2.4.5**(详见 [CHANGELOG](docs/CHANGELOG.md))。
|
|
62
62
|
|
|
63
63
|
## 安装
|
|
64
64
|
|
|
@@ -42,6 +42,7 @@ src/echotools/exec/dispatch/selector.py
|
|
|
42
42
|
src/echotools/exec/dispatch/usage.py
|
|
43
43
|
src/echotools/exec/fncall/__init__.py
|
|
44
44
|
src/echotools/exec/fncall/registry.py
|
|
45
|
+
src/echotools/exec/fncall/tool_id.py
|
|
45
46
|
src/echotools/exec/fncall/parsers/__init__.py
|
|
46
47
|
src/echotools/exec/fncall/parsers/stream.py
|
|
47
48
|
src/echotools/exec/fncall/parsers/stream_delta.py
|
|
@@ -249,6 +250,7 @@ src/tests/test_schema_validate.py
|
|
|
249
250
|
src/tests/test_simulated_llm_tool_parse.py
|
|
250
251
|
src/tests/test_stream_partial_json_parity.py
|
|
251
252
|
src/tests/test_stream_realtime_parse.py
|
|
253
|
+
src/tests/test_tool_id.py
|
|
252
254
|
src/tests/test_tracing.py
|
|
253
255
|
src/tests/test_ui_bridge.py
|
|
254
256
|
src/tests/test_usage.py
|
|
@@ -13,6 +13,8 @@ from echotools.exec.fncall.protocols.entml_tool.fakemarkup import (
|
|
|
13
13
|
strip_orphan_entml_close_tags,
|
|
14
14
|
)
|
|
15
15
|
|
|
16
|
+
_REDACTED_THINKING = "redacted" + "_thinking"
|
|
17
|
+
|
|
16
18
|
READ_TOOL = {
|
|
17
19
|
"type": "function",
|
|
18
20
|
"function": {
|
|
@@ -83,6 +85,18 @@ READ_TOOL = {
|
|
|
83
85
|
"hard_constraint_restatement",
|
|
84
86
|
"后",
|
|
85
87
|
),
|
|
88
|
+
(
|
|
89
|
+
"正文\n<function_results>\n假结果\n</function_results>\n继续",
|
|
90
|
+
"假结果",
|
|
91
|
+
"function_results",
|
|
92
|
+
"继续",
|
|
93
|
+
),
|
|
94
|
+
(
|
|
95
|
+
"除此之外</function_result>,中间保留",
|
|
96
|
+
"中间保留",
|
|
97
|
+
"function_result",
|
|
98
|
+
"除此之外",
|
|
99
|
+
),
|
|
86
100
|
(
|
|
87
101
|
"<entml:result>\nbody\n</entml:result>\nok",
|
|
88
102
|
"body",
|
|
@@ -117,6 +131,16 @@ def test_strip_fake_entml_structure_batch(
|
|
|
117
131
|
assert expect_present in cleaned
|
|
118
132
|
|
|
119
133
|
|
|
134
|
+
def test_strip_redacted_thinking_tags_only() -> None:
|
|
135
|
+
rt = _REDACTED_THINKING
|
|
136
|
+
raw = f"前\n<{rt}>\n已脱敏思考\n</{rt}>\n后"
|
|
137
|
+
cleaned, found = strip_fake_entml_structure_markup(raw)
|
|
138
|
+
assert found
|
|
139
|
+
assert rt not in cleaned
|
|
140
|
+
assert "已脱敏思考" in cleaned
|
|
141
|
+
assert "后" in cleaned
|
|
142
|
+
|
|
143
|
+
|
|
120
144
|
def test_tool_result_comment_partial_hold() -> None:
|
|
121
145
|
partial = "可见\n<!-- Tool Result ID:toolu_abc"
|
|
122
146
|
assert trailing_partial_tool_result_id_comment_len(partial) == len(
|
|
@@ -2,7 +2,7 @@ from __future__ import annotations
|
|
|
2
2
|
|
|
3
3
|
import pytest
|
|
4
4
|
|
|
5
|
-
from echotools.base.ids import short_id, span_id, trace_id, uuid7
|
|
5
|
+
from echotools.base.ids import short_id, span_id, trace_id, uuid7, gen_tool_id
|
|
6
6
|
|
|
7
7
|
|
|
8
8
|
def test_uuid7_format() -> None:
|
|
@@ -23,3 +23,9 @@ def test_short_id_invalid_length() -> None:
|
|
|
23
23
|
def test_trace_and_span_ids() -> None:
|
|
24
24
|
assert len(trace_id()) == 32
|
|
25
25
|
assert len(span_id()) == 16
|
|
26
|
+
|
|
27
|
+
|
|
28
|
+
def test_gen_tool_id_unique() -> None:
|
|
29
|
+
a = gen_tool_id()
|
|
30
|
+
b = gen_tool_id()
|
|
31
|
+
assert a != b
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
from __future__ import annotations
|
|
2
|
+
|
|
3
|
+
import pytest
|
|
4
|
+
|
|
5
|
+
from echotools.base.ids import gen_tool_id
|
|
6
|
+
from echotools.exec.fncall.tool_id import (
|
|
7
|
+
ensure_toolu_tool_call_id,
|
|
8
|
+
fix_tool_call_id,
|
|
9
|
+
is_placeholder_tool_call_id,
|
|
10
|
+
)
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
def test_gen_tool_id_format() -> None:
|
|
14
|
+
tid = gen_tool_id()
|
|
15
|
+
assert tid.startswith("toolu_")
|
|
16
|
+
assert len(tid) == len("toolu_") + 24
|
|
17
|
+
|
|
18
|
+
|
|
19
|
+
def test_is_placeholder_tool_call_id() -> None:
|
|
20
|
+
assert is_placeholder_tool_call_id("")
|
|
21
|
+
assert is_placeholder_tool_call_id("call_0000")
|
|
22
|
+
assert is_placeholder_tool_call_id("toolu_call_0001")
|
|
23
|
+
assert is_placeholder_tool_call_id("call_abc")
|
|
24
|
+
assert not is_placeholder_tool_call_id("toolu_real123")
|
|
25
|
+
|
|
26
|
+
|
|
27
|
+
def test_fix_tool_call_id_replaces_placeholder() -> None:
|
|
28
|
+
fixed = fix_tool_call_id({
|
|
29
|
+
"id": "call_0000",
|
|
30
|
+
"function": {"name": "search", "arguments": '{"q":"x"}'},
|
|
31
|
+
})
|
|
32
|
+
assert fixed["id"].startswith("toolu_")
|
|
33
|
+
assert fixed["function"]["name"] == "search"
|
|
34
|
+
|
|
35
|
+
|
|
36
|
+
def test_fix_tool_call_id_keeps_valid() -> None:
|
|
37
|
+
fixed = fix_tool_call_id({
|
|
38
|
+
"id": "toolu_abc123",
|
|
39
|
+
"function": {"name": "search", "arguments": "{}"},
|
|
40
|
+
})
|
|
41
|
+
assert fixed["id"] == "toolu_abc123"
|
|
42
|
+
|
|
43
|
+
|
|
44
|
+
def test_ensure_toolu_tool_call_id() -> None:
|
|
45
|
+
assert ensure_toolu_tool_call_id("call_0000").startswith("toolu_")
|
|
46
|
+
assert ensure_toolu_tool_call_id("abc") == "toolu_abc"
|
|
47
|
+
assert ensure_toolu_tool_call_id("toolu_xyz") == "toolu_xyz"
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{echotools-2.4.4 → echotools-2.4.5}/src/echotools/exec/fncall/protocols/entml_patterns/__init__.py
RENAMED
|
File without changes
|
{echotools-2.4.4 → echotools-2.4.5}/src/echotools/exec/fncall/protocols/entml_patterns/invoke.py
RENAMED
|
File without changes
|
{echotools-2.4.4 → echotools-2.4.5}/src/echotools/exec/fncall/protocols/entml_patterns/params.py
RENAMED
|
File without changes
|
{echotools-2.4.4 → echotools-2.4.5}/src/echotools/exec/fncall/protocols/entml_patterns/regex.py
RENAMED
|
File without changes
|
{echotools-2.4.4 → echotools-2.4.5}/src/echotools/exec/fncall/protocols/entml_patterns/strip.py
RENAMED
|
File without changes
|
{echotools-2.4.4 → echotools-2.4.5}/src/echotools/exec/fncall/protocols/entml_schema/__init__.py
RENAMED
|
File without changes
|
{echotools-2.4.4 → echotools-2.4.5}/src/echotools/exec/fncall/protocols/entml_schema/mangled.py
RENAMED
|
File without changes
|
{echotools-2.4.4 → echotools-2.4.5}/src/echotools/exec/fncall/protocols/entml_schema/validate.py
RENAMED
|
File without changes
|
{echotools-2.4.4 → echotools-2.4.5}/src/echotools/exec/fncall/protocols/entml_stream/__init__.py
RENAMED
|
File without changes
|
{echotools-2.4.4 → echotools-2.4.5}/src/echotools/exec/fncall/protocols/entml_stream/body.py
RENAMED
|
File without changes
|
{echotools-2.4.4 → echotools-2.4.5}/src/echotools/exec/fncall/protocols/entml_stream/snap.py
RENAMED
|
File without changes
|
{echotools-2.4.4 → echotools-2.4.5}/src/echotools/exec/fncall/protocols/entml_think/__init__.py
RENAMED
|
File without changes
|
|
File without changes
|
{echotools-2.4.4 → echotools-2.4.5}/src/echotools/exec/fncall/protocols/entml_think/filter.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{echotools-2.4.4 → echotools-2.4.5}/src/echotools/exec/fncall/protocols/entml_think/parse.py
RENAMED
|
File without changes
|
{echotools-2.4.4 → echotools-2.4.5}/src/echotools/exec/fncall/protocols/entml_tool/__init__.py
RENAMED
|
File without changes
|
{echotools-2.4.4 → echotools-2.4.5}/src/echotools/exec/fncall/protocols/entml_tool/comment.py
RENAMED
|
File without changes
|
{echotools-2.4.4 → echotools-2.4.5}/src/echotools/exec/fncall/protocols/entml_tool/invoke.py
RENAMED
|
File without changes
|
|
File without changes
|
{echotools-2.4.4 → echotools-2.4.5}/src/echotools/exec/fncall/protocols/entml_tool/values.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|