echotools 2.3.93__tar.gz → 2.3.94__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.3.93 → echotools-2.3.94}/PKG-INFO +1 -1
- {echotools-2.3.93 → echotools-2.3.94}/pyproject.toml +1 -1
- {echotools-2.3.93 → echotools-2.3.94}/src/echotools.egg-info/PKG-INFO +1 -1
- {echotools-2.3.93 → echotools-2.3.94}/src/tests/test_entml_protocol.py +10 -6
- {echotools-2.3.93 → echotools-2.3.94}/README.md +0 -0
- {echotools-2.3.93 → echotools-2.3.94}/setup.cfg +0 -0
- {echotools-2.3.93 → echotools-2.3.94}/src/echotools/__init__.py +0 -0
- {echotools-2.3.93 → echotools-2.3.94}/src/echotools/base/cache/__init__.py +0 -0
- {echotools-2.3.93 → echotools-2.3.94}/src/echotools/base/cache/list_cache.py +0 -0
- {echotools-2.3.93 → echotools-2.3.94}/src/echotools/base/cache/memory_cache.py +0 -0
- {echotools-2.3.93 → echotools-2.3.94}/src/echotools/base/config/__init__.py +0 -0
- {echotools-2.3.93 → echotools-2.3.94}/src/echotools/base/config/base.py +0 -0
- {echotools-2.3.93 → echotools-2.3.94}/src/echotools/base/config/center.py +0 -0
- {echotools-2.3.93 → echotools-2.3.94}/src/echotools/base/config/center_notify.py +0 -0
- {echotools-2.3.93 → echotools-2.3.94}/src/echotools/base/config/center_template.py +0 -0
- {echotools-2.3.93 → echotools-2.3.94}/src/echotools/base/config/loader.py +0 -0
- {echotools-2.3.93 → echotools-2.3.94}/src/echotools/base/config/merge.py +0 -0
- {echotools-2.3.93 → echotools-2.3.94}/src/echotools/base/errors/__init__.py +0 -0
- {echotools-2.3.93 → echotools-2.3.94}/src/echotools/base/errors/base.py +0 -0
- {echotools-2.3.93 → echotools-2.3.94}/src/echotools/base/errors/classify.py +0 -0
- {echotools-2.3.93 → echotools-2.3.94}/src/echotools/base/errors/common.py +0 -0
- {echotools-2.3.93 → echotools-2.3.94}/src/echotools/base/errors/http.py +0 -0
- {echotools-2.3.93 → echotools-2.3.94}/src/echotools/base/ids/__init__.py +0 -0
- {echotools-2.3.93 → echotools-2.3.94}/src/echotools/base/ids/generator.py +0 -0
- {echotools-2.3.93 → echotools-2.3.94}/src/echotools/base/io/__init__.py +0 -0
- {echotools-2.3.93 → echotools-2.3.94}/src/echotools/base/io/io_utils.py +0 -0
- {echotools-2.3.93 → echotools-2.3.94}/src/echotools/base/io/printstream.py +0 -0
- {echotools-2.3.93 → echotools-2.3.94}/src/echotools/base/logger/__init__.py +0 -0
- {echotools-2.3.93 → echotools-2.3.94}/src/echotools/base/logger/manager.py +0 -0
- {echotools-2.3.93 → echotools-2.3.94}/src/echotools/base/retry/__init__.py +0 -0
- {echotools-2.3.93 → echotools-2.3.94}/src/echotools/base/retry/retry.py +0 -0
- {echotools-2.3.93 → echotools-2.3.94}/src/echotools/compat.py +0 -0
- {echotools-2.3.93 → echotools-2.3.94}/src/echotools/exec/dispatch/__init__.py +0 -0
- {echotools-2.3.93 → echotools-2.3.94}/src/echotools/exec/dispatch/candidate.py +0 -0
- {echotools-2.3.93 → echotools-2.3.94}/src/echotools/exec/dispatch/dispatcher.py +0 -0
- {echotools-2.3.93 → echotools-2.3.94}/src/echotools/exec/dispatch/proxy_selector.py +0 -0
- {echotools-2.3.93 → echotools-2.3.94}/src/echotools/exec/dispatch/race.py +0 -0
- {echotools-2.3.93 → echotools-2.3.94}/src/echotools/exec/dispatch/selector.py +0 -0
- {echotools-2.3.93 → echotools-2.3.94}/src/echotools/exec/dispatch/usage.py +0 -0
- {echotools-2.3.93 → echotools-2.3.94}/src/echotools/exec/fncall/__init__.py +0 -0
- {echotools-2.3.93 → echotools-2.3.94}/src/echotools/exec/fncall/parsers/__init__.py +0 -0
- {echotools-2.3.93 → echotools-2.3.94}/src/echotools/exec/fncall/parsers/stream.py +0 -0
- {echotools-2.3.93 → echotools-2.3.94}/src/echotools/exec/fncall/parsers/stream_delta.py +0 -0
- {echotools-2.3.93 → echotools-2.3.94}/src/echotools/exec/fncall/parsers/stream_feed.py +0 -0
- {echotools-2.3.93 → echotools-2.3.94}/src/echotools/exec/fncall/parsers/stream_final.py +0 -0
- {echotools-2.3.93 → echotools-2.3.94}/src/echotools/exec/fncall/parsers/xml_params.py +0 -0
- {echotools-2.3.93 → echotools-2.3.94}/src/echotools/exec/fncall/parsers/xml_parser.py +0 -0
- {echotools-2.3.93 → echotools-2.3.94}/src/echotools/exec/fncall/prompt/__init__.py +0 -0
- {echotools-2.3.93 → echotools-2.3.94}/src/echotools/exec/fncall/prompt/behavior_blocks.py +0 -0
- {echotools-2.3.93 → echotools-2.3.94}/src/echotools/exec/fncall/prompt/history.py +0 -0
- {echotools-2.3.93 → echotools-2.3.94}/src/echotools/exec/fncall/prompt/history_format.py +0 -0
- {echotools-2.3.93 → echotools-2.3.94}/src/echotools/exec/fncall/prompt/inject.py +2 -2
- {echotools-2.3.93 → echotools-2.3.94}/src/echotools/exec/fncall/prompt/prompt_helpers.py +0 -0
- {echotools-2.3.93 → echotools-2.3.94}/src/echotools/exec/fncall/prompt/templates.py +0 -0
- {echotools-2.3.93 → echotools-2.3.94}/src/echotools/exec/fncall/protocols/__init__.py +0 -0
- {echotools-2.3.93 → echotools-2.3.94}/src/echotools/exec/fncall/protocols/entml.py +8 -8
- {echotools-2.3.93 → echotools-2.3.94}/src/echotools/exec/fncall/protocols/entml_invoke.py +0 -0
- {echotools-2.3.93 → echotools-2.3.94}/src/echotools/exec/fncall/protocols/entml_patterns.py +0 -0
- {echotools-2.3.93 → echotools-2.3.94}/src/echotools/exec/fncall/protocols/entml_schema.py +0 -0
- {echotools-2.3.93 → echotools-2.3.94}/src/echotools/exec/fncall/protocols/entml_stream/__init__.py +0 -0
- {echotools-2.3.93 → echotools-2.3.94}/src/echotools/exec/fncall/protocols/entml_stream/body.py +0 -0
- {echotools-2.3.93 → echotools-2.3.94}/src/echotools/exec/fncall/protocols/entml_stream/snap.py +0 -0
- {echotools-2.3.93 → echotools-2.3.94}/src/echotools/exec/fncall/protocols/entml_think/__init__.py +0 -0
- {echotools-2.3.93 → echotools-2.3.94}/src/echotools/exec/fncall/protocols/entml_think/blocks.py +0 -0
- {echotools-2.3.93 → echotools-2.3.94}/src/echotools/exec/fncall/protocols/entml_think/core.py +0 -0
- {echotools-2.3.93 → echotools-2.3.94}/src/echotools/exec/fncall/protocols/entml_think/filter.py +0 -0
- {echotools-2.3.93 → echotools-2.3.94}/src/echotools/exec/fncall/protocols/entml_think/hist.py +0 -0
- {echotools-2.3.93 → echotools-2.3.94}/src/echotools/exec/fncall/protocols/entml_think/hold.py +0 -0
- {echotools-2.3.93 → echotools-2.3.94}/src/echotools/exec/fncall/protocols/entml_think/parse.py +0 -0
- {echotools-2.3.93 → echotools-2.3.94}/src/echotools/exec/fncall/registry.py +0 -0
- {echotools-2.3.93 → echotools-2.3.94}/src/echotools/exec/fncall/shared/__init__.py +0 -0
- {echotools-2.3.93 → echotools-2.3.94}/src/echotools/exec/fncall/shared/coercion.py +0 -0
- {echotools-2.3.93 → echotools-2.3.94}/src/echotools/exec/fncall/shared/history_markup.py +0 -0
- {echotools-2.3.93 → echotools-2.3.94}/src/echotools/exec/fncall/shared/loop_detect.py +0 -0
- {echotools-2.3.93 → echotools-2.3.94}/src/echotools/exec/fncall/shared/normalization.py +0 -0
- {echotools-2.3.93 → echotools-2.3.94}/src/echotools/exec/fncall/shared/schema_render.py +0 -0
- {echotools-2.3.93 → echotools-2.3.94}/src/echotools/exec/fncall/shared/xml_helpers.py +0 -0
- {echotools-2.3.93 → echotools-2.3.94}/src/echotools/exec/keys.py +0 -0
- {echotools-2.3.93 → echotools-2.3.94}/src/echotools/exec/lifecycle/__init__.py +0 -0
- {echotools-2.3.93 → echotools-2.3.94}/src/echotools/exec/lifecycle/manager.py +0 -0
- {echotools-2.3.93 → echotools-2.3.94}/src/echotools/exec/lifecycle/updater.py +0 -0
- {echotools-2.3.93 → echotools-2.3.94}/src/echotools/exec/lifecycle/updater_pull.py +0 -0
- {echotools-2.3.93 → echotools-2.3.94}/src/echotools/exec/process/__init__.py +0 -0
- {echotools-2.3.93 → echotools-2.3.94}/src/echotools/exec/process/port.py +0 -0
- {echotools-2.3.93 → echotools-2.3.94}/src/echotools/exec/protocol/__init__.py +0 -0
- {echotools-2.3.93 → echotools-2.3.94}/src/echotools/exec/protocol/base.py +0 -0
- {echotools-2.3.93 → echotools-2.3.94}/src/echotools/exec/terminal/__init__.py +0 -0
- {echotools-2.3.93 → echotools-2.3.94}/src/echotools/exec/terminal/conpty.py +0 -0
- {echotools-2.3.93 → echotools-2.3.94}/src/echotools/exec/terminal/local/__init__.py +0 -0
- {echotools-2.3.93 → echotools-2.3.94}/src/echotools/exec/terminal/local/core.py +0 -0
- {echotools-2.3.93 → echotools-2.3.94}/src/echotools/exec/terminal/local/proc.py +0 -0
- {echotools-2.3.93 → echotools-2.3.94}/src/echotools/exec/terminal/local/unix.py +0 -0
- {echotools-2.3.93 → echotools-2.3.94}/src/echotools/exec/terminal/local/win.py +0 -0
- {echotools-2.3.93 → echotools-2.3.94}/src/echotools/exec/terminal/sanitize.py +0 -0
- {echotools-2.3.93 → echotools-2.3.94}/src/echotools/exec/terminal/session/__init__.py +0 -0
- {echotools-2.3.93 → echotools-2.3.94}/src/echotools/exec/terminal/session/base.py +0 -0
- {echotools-2.3.93 → echotools-2.3.94}/src/echotools/exec/terminal/session/client.py +0 -0
- {echotools-2.3.93 → echotools-2.3.94}/src/echotools/exec/terminal/ssh.py +0 -0
- {echotools-2.3.93 → echotools-2.3.94}/src/echotools/exec/terminal/tmux.py +0 -0
- {echotools-2.3.93 → echotools-2.3.94}/src/echotools/media/console/__init__.py +0 -0
- {echotools-2.3.93 → echotools-2.3.94}/src/echotools/media/console/charmap.py +0 -0
- {echotools-2.3.93 → echotools-2.3.94}/src/echotools/media/console/spinner.py +0 -0
- {echotools-2.3.93 → echotools-2.3.94}/src/echotools/media/console/ui.py +0 -0
- {echotools-2.3.93 → echotools-2.3.94}/src/echotools/media/console/uicore/mixins/__init__.py +0 -0
- {echotools-2.3.93 → echotools-2.3.94}/src/echotools/media/console/uicore/mixins/uibase.py +0 -0
- {echotools-2.3.93 → echotools-2.3.94}/src/echotools/media/console/uicore/mixins/uicmds.py +0 -0
- {echotools-2.3.93 → echotools-2.3.94}/src/echotools/media/console/uicore/mixins/uiinteract.py +0 -0
- {echotools-2.3.93 → echotools-2.3.94}/src/echotools/media/console/uicore/mixins/uioutput.py +0 -0
- {echotools-2.3.93 → echotools-2.3.94}/src/echotools/media/console/uicore/mixins/uistream.py +0 -0
- {echotools-2.3.93 → echotools-2.3.94}/src/echotools/media/console/uicore/ui_console.py +0 -0
- {echotools-2.3.93 → echotools-2.3.94}/src/echotools/media/console/uicore/ui_io.py +0 -0
- {echotools-2.3.93 → echotools-2.3.94}/src/echotools/media/console/uicore/ui_log.py +0 -0
- {echotools-2.3.93 → echotools-2.3.94}/src/echotools/media/console/uicore/ui_platform.py +0 -0
- {echotools-2.3.93 → echotools-2.3.94}/src/echotools/media/console/uicore/ui_text.py +0 -0
- {echotools-2.3.93 → echotools-2.3.94}/src/echotools/media/console/uicore/ui_types.py +0 -0
- {echotools-2.3.93 → echotools-2.3.94}/src/echotools/media/console/uilayout/ui_countdown.py +0 -0
- {echotools-2.3.93 → echotools-2.3.94}/src/echotools/media/console/uilayout/ui_layout.py +0 -0
- {echotools-2.3.93 → echotools-2.3.94}/src/echotools/media/console/uilayout/ui_misc.py +0 -0
- {echotools-2.3.93 → echotools-2.3.94}/src/echotools/media/console/uilayout/ui_panel.py +0 -0
- {echotools-2.3.93 → echotools-2.3.94}/src/echotools/media/console/uilayout/ui_table.py +0 -0
- {echotools-2.3.93 → echotools-2.3.94}/src/echotools/media/console/uilayout/ui_tree.py +0 -0
- {echotools-2.3.93 → echotools-2.3.94}/src/echotools/media/console/uiwidgets/ui_box.py +0 -0
- {echotools-2.3.93 → echotools-2.3.94}/src/echotools/media/console/uiwidgets/ui_editor.py +0 -0
- {echotools-2.3.93 → echotools-2.3.94}/src/echotools/media/console/uiwidgets/ui_progress.py +0 -0
- {echotools-2.3.93 → echotools-2.3.94}/src/echotools/media/console/uiwidgets/ui_select.py +0 -0
- {echotools-2.3.93 → echotools-2.3.94}/src/echotools/media/console/uiwidgets/ui_stream.py +0 -0
- {echotools-2.3.93 → echotools-2.3.94}/src/echotools/media/events/__init__.py +0 -0
- {echotools-2.3.93 → echotools-2.3.94}/src/echotools/media/events/bus.py +0 -0
- {echotools-2.3.93 → echotools-2.3.94}/src/echotools/media/events/event.py +0 -0
- {echotools-2.3.93 → echotools-2.3.94}/src/echotools/media/spinner/__init__.py +0 -0
- {echotools-2.3.93 → echotools-2.3.94}/src/echotools/media/spinner/spinner.py +0 -0
- {echotools-2.3.93 → echotools-2.3.94}/src/echotools/media/spinner/spinner_color.py +0 -0
- {echotools-2.3.93 → echotools-2.3.94}/src/echotools/media/tracing/__init__.py +0 -0
- {echotools-2.3.93 → echotools-2.3.94}/src/echotools/media/tracing/context.py +0 -0
- {echotools-2.3.93 → echotools-2.3.94}/src/echotools/media/tracing/span.py +0 -0
- {echotools-2.3.93 → echotools-2.3.94}/src/echotools/media/tracing/tracer.py +0 -0
- {echotools-2.3.93 → echotools-2.3.94}/src/echotools/media/translate.py +0 -0
- {echotools-2.3.93 → echotools-2.3.94}/src/echotools/media/watcher/__init__.py +0 -0
- {echotools-2.3.93 → echotools-2.3.94}/src/echotools/media/watcher/file_watcher.py +0 -0
- {echotools-2.3.93 → echotools-2.3.94}/src/echotools/media/web/__init__.py +0 -0
- {echotools-2.3.93 → echotools-2.3.94}/src/echotools/media/web/application.py +0 -0
- {echotools-2.3.93 → echotools-2.3.94}/src/echotools/media/web/broker.py +0 -0
- {echotools-2.3.93 → echotools-2.3.94}/src/echotools/media/web/input_box/app.js +0 -0
- {echotools-2.3.93 → echotools-2.3.94}/src/echotools/media/web/input_box/components/filezone.js +0 -0
- {echotools-2.3.93 → echotools-2.3.94}/src/echotools/media/web/input_box/components/motionkit.js +0 -0
- {echotools-2.3.93 → echotools-2.3.94}/src/echotools/media/web/input_box/components/sendbutton.js +0 -0
- {echotools-2.3.93 → echotools-2.3.94}/src/echotools/media/web/input_box/components/sortablelist.css +0 -0
- {echotools-2.3.93 → echotools-2.3.94}/src/echotools/media/web/input_box/components/sortablelist.js +0 -0
- {echotools-2.3.93 → echotools-2.3.94}/src/echotools/media/web/input_box/components/textinput.js +0 -0
- {echotools-2.3.93 → echotools-2.3.94}/src/echotools/media/web/input_box/components/voiceinput.js +0 -0
- {echotools-2.3.93 → echotools-2.3.94}/src/echotools/media/web/input_box/fonts/inter-500.woff2 +0 -0
- {echotools-2.3.93 → echotools-2.3.94}/src/echotools/media/web/input_box/fonts/inter-600.woff2 +0 -0
- {echotools-2.3.93 → echotools-2.3.94}/src/echotools/media/web/input_box/fonts/inter400.woff2 +0 -0
- {echotools-2.3.93 → echotools-2.3.94}/src/echotools/media/web/input_box/inputbox.css +0 -0
- {echotools-2.3.93 → echotools-2.3.94}/src/echotools/media/web/input_box/inputbox.js +0 -0
- {echotools-2.3.93 → echotools-2.3.94}/src/echotools/media/web/input_box/style.css +0 -0
- {echotools-2.3.93 → echotools-2.3.94}/src/echotools/media/web/input_box/voicegif.js +0 -0
- {echotools-2.3.93 → echotools-2.3.94}/src/echotools/media/web/middleware.py +0 -0
- {echotools-2.3.93 → echotools-2.3.94}/src/echotools/media/web/stats.py +0 -0
- {echotools-2.3.93 → echotools-2.3.94}/src/echotools/media/web/utils.py +0 -0
- {echotools-2.3.93 → echotools-2.3.94}/src/echotools/plat/files/__init__.py +0 -0
- {echotools-2.3.93 → echotools-2.3.94}/src/echotools/plat/files/file_util.py +0 -0
- {echotools-2.3.93 → echotools-2.3.94}/src/echotools/plat/network/__init__.py +0 -0
- {echotools-2.3.93 → echotools-2.3.94}/src/echotools/plat/network/http_utils.py +0 -0
- {echotools-2.3.93 → echotools-2.3.94}/src/echotools/plat/plugin/__init__.py +0 -0
- {echotools-2.3.93 → echotools-2.3.94}/src/echotools/plat/plugin/base.py +0 -0
- {echotools-2.3.93 → echotools-2.3.94}/src/echotools/plat/plugin/discovery.py +0 -0
- {echotools-2.3.93 → echotools-2.3.94}/src/echotools/plat/plugin/registry.py +0 -0
- {echotools-2.3.93 → echotools-2.3.94}/src/echotools/plat/plugin/registry_ops.py +0 -0
- {echotools-2.3.93 → echotools-2.3.94}/src/echotools/plat/proxy/__init__.py +0 -0
- {echotools-2.3.93 → echotools-2.3.94}/src/echotools/plat/proxy/manager.py +0 -0
- {echotools-2.3.93 → echotools-2.3.94}/src/echotools/plat/runtime/__init__.py +0 -0
- {echotools-2.3.93 → echotools-2.3.94}/src/echotools/plat/runtime/collector.py +0 -0
- {echotools-2.3.93 → echotools-2.3.94}/src/echotools/plat/scheduler/__init__.py +0 -0
- {echotools-2.3.93 → echotools-2.3.94}/src/echotools/plat/scheduler/scheduler.py +0 -0
- {echotools-2.3.93 → echotools-2.3.94}/src/echotools/plat/sdk/__init__.py +0 -0
- {echotools-2.3.93 → echotools-2.3.94}/src/echotools/plat/sdk/facade.py +0 -0
- {echotools-2.3.93 → echotools-2.3.94}/src/echotools/version.py +0 -0
- {echotools-2.3.93 → echotools-2.3.94}/src/echotools.egg-info/SOURCES.txt +0 -0
- {echotools-2.3.93 → echotools-2.3.94}/src/echotools.egg-info/dependency_links.txt +0 -0
- {echotools-2.3.93 → echotools-2.3.94}/src/echotools.egg-info/requires.txt +0 -0
- {echotools-2.3.93 → echotools-2.3.94}/src/echotools.egg-info/top_level.txt +0 -0
- {echotools-2.3.93 → echotools-2.3.94}/src/tests/bench_import.py +0 -0
- {echotools-2.3.93 → echotools-2.3.94}/src/tests/conftest.py +0 -0
- {echotools-2.3.93 → echotools-2.3.94}/src/tests/fixtures/__init__.py +0 -0
- {echotools-2.3.93 → echotools-2.3.94}/src/tests/fixtures/simulated_fake_history_markup_responses.py +0 -0
- {echotools-2.3.93 → echotools-2.3.94}/src/tests/fixtures/simulated_fault_thinking_responses.py +0 -0
- {echotools-2.3.93 → echotools-2.3.94}/src/tests/fixtures/simulated_llm_tool_responses.py +0 -0
- {echotools-2.3.93 → echotools-2.3.94}/src/tests/test_adversarial_stream_splits.py +0 -0
- {echotools-2.3.93 → echotools-2.3.94}/src/tests/test_cache_retry.py +0 -0
- {echotools-2.3.93 → echotools-2.3.94}/src/tests/test_completion.py +0 -0
- {echotools-2.3.93 → echotools-2.3.94}/src/tests/test_config.py +0 -0
- {echotools-2.3.93 → echotools-2.3.94}/src/tests/test_config_extended.py +0 -0
- {echotools-2.3.93 → echotools-2.3.94}/src/tests/test_console.py +0 -0
- {echotools-2.3.93 → echotools-2.3.94}/src/tests/test_coverage_core.py +0 -0
- {echotools-2.3.93 → echotools-2.3.94}/src/tests/test_dispatch.py +0 -0
- {echotools-2.3.93 → echotools-2.3.94}/src/tests/test_dispatch_extended.py +0 -0
- {echotools-2.3.93 → echotools-2.3.94}/src/tests/test_dispatch_race.py +0 -0
- {echotools-2.3.93 → echotools-2.3.94}/src/tests/test_entml_agent_output_formats.py +0 -0
- {echotools-2.3.93 → echotools-2.3.94}/src/tests/test_entml_bare_invoke_format.py +0 -0
- {echotools-2.3.93 → echotools-2.3.94}/src/tests/test_entml_batch_stream_comprehensive.py +0 -0
- {echotools-2.3.93 → echotools-2.3.94}/src/tests/test_entml_invoke_known_tool_gate.py +0 -0
- {echotools-2.3.93 → echotools-2.3.94}/src/tests/test_entml_parser_comprehensive.py +0 -0
- {echotools-2.3.93 → echotools-2.3.94}/src/tests/test_entml_stream_json.py +0 -0
- {echotools-2.3.93 → echotools-2.3.94}/src/tests/test_entml_stream_json_exhaustive.py +0 -0
- {echotools-2.3.93 → echotools-2.3.94}/src/tests/test_entml_thinking_history.py +0 -0
- {echotools-2.3.93 → echotools-2.3.94}/src/tests/test_entml_thinking_parse.py +0 -0
- {echotools-2.3.93 → echotools-2.3.94}/src/tests/test_entml_tool_parse_leak.py +0 -0
- {echotools-2.3.93 → echotools-2.3.94}/src/tests/test_entml_tool_pipeline.py +2 -2
- {echotools-2.3.93 → echotools-2.3.94}/src/tests/test_entml_tools.py +0 -0
- {echotools-2.3.93 → echotools-2.3.94}/src/tests/test_errors.py +0 -0
- {echotools-2.3.93 → echotools-2.3.94}/src/tests/test_errors_common.py +0 -0
- {echotools-2.3.93 → echotools-2.3.94}/src/tests/test_events.py +0 -0
- {echotools-2.3.93 → echotools-2.3.94}/src/tests/test_events_event.py +0 -0
- {echotools-2.3.93 → echotools-2.3.94}/src/tests/test_facade.py +0 -0
- {echotools-2.3.93 → echotools-2.3.94}/src/tests/test_fake_history_markup_batch.py +0 -0
- {echotools-2.3.93 → echotools-2.3.94}/src/tests/test_fake_history_markup_invoke_preserve.py +0 -0
- {echotools-2.3.93 → echotools-2.3.94}/src/tests/test_fake_history_markup_reply_protect.py +0 -0
- {echotools-2.3.93 → echotools-2.3.94}/src/tests/test_fake_history_markup_stream.py +0 -0
- {echotools-2.3.93 → echotools-2.3.94}/src/tests/test_fault_thinking_close_batch.py +0 -0
- {echotools-2.3.93 → echotools-2.3.94}/src/tests/test_fault_thinking_close_stream.py +0 -0
- {echotools-2.3.93 → echotools-2.3.94}/src/tests/test_fncall.py +0 -0
- {echotools-2.3.93 → echotools-2.3.94}/src/tests/test_fncall_stream_thinking.py +0 -0
- {echotools-2.3.93 → echotools-2.3.94}/src/tests/test_history_markup_filter.py +0 -0
- {echotools-2.3.93 → echotools-2.3.94}/src/tests/test_ids.py +0 -0
- {echotools-2.3.93 → echotools-2.3.94}/src/tests/test_imports.py +0 -0
- {echotools-2.3.93 → echotools-2.3.94}/src/tests/test_io.py +0 -0
- {echotools-2.3.93 → echotools-2.3.94}/src/tests/test_keys.py +0 -0
- {echotools-2.3.93 → echotools-2.3.94}/src/tests/test_lifecycle.py +0 -0
- {echotools-2.3.93 → echotools-2.3.94}/src/tests/test_logger.py +0 -0
- {echotools-2.3.93 → echotools-2.3.94}/src/tests/test_merge.py +0 -0
- {echotools-2.3.93 → echotools-2.3.94}/src/tests/test_model_branch_matrix.py +0 -0
- {echotools-2.3.93 → echotools-2.3.94}/src/tests/test_plugin.py +0 -0
- {echotools-2.3.93 → echotools-2.3.94}/src/tests/test_printstream.py +0 -0
- {echotools-2.3.93 → echotools-2.3.94}/src/tests/test_protocols.py +0 -0
- {echotools-2.3.93 → echotools-2.3.94}/src/tests/test_proxy.py +0 -0
- {echotools-2.3.93 → echotools-2.3.94}/src/tests/test_proxy_selector.py +0 -0
- {echotools-2.3.93 → echotools-2.3.94}/src/tests/test_runtime.py +0 -0
- {echotools-2.3.93 → echotools-2.3.94}/src/tests/test_scheduler.py +0 -0
- {echotools-2.3.93 → echotools-2.3.94}/src/tests/test_simulated_llm_tool_parse.py +0 -0
- {echotools-2.3.93 → echotools-2.3.94}/src/tests/test_stream_partial_json_parity.py +0 -0
- {echotools-2.3.93 → echotools-2.3.94}/src/tests/test_stream_realtime_parse.py +0 -0
- {echotools-2.3.93 → echotools-2.3.94}/src/tests/test_tracing.py +0 -0
- {echotools-2.3.93 → echotools-2.3.94}/src/tests/test_usage.py +0 -0
- {echotools-2.3.93 → echotools-2.3.94}/src/tests/test_web.py +0 -0
- {echotools-2.3.93 → echotools-2.3.94}/src/tests/test_web_broker.py +0 -0
|
@@ -382,15 +382,15 @@ def test_render_prompt_thinking_after_current_user() -> None:
|
|
|
382
382
|
current_user_message="new",
|
|
383
383
|
protocol_options={"thinking_mode": "on", "max_thinking_length": 1000},
|
|
384
384
|
)
|
|
385
|
-
assert prompt.index("In this environment") < prompt.index("<
|
|
385
|
+
assert prompt.index("In this environment") < prompt.index("<entml:conversation_history>\n")
|
|
386
|
+
idx_hist = prompt.index("<entml:conversation_history>\n")
|
|
386
387
|
idx_fc = prompt.index("<function_calling_behavior>\n")
|
|
387
388
|
idx_behavior = prompt.index("<thinking_behavior>\n")
|
|
388
|
-
idx_hist = prompt.index("<entml:conversation_history>\n")
|
|
389
389
|
idx_hard = prompt.index("<entml:hard_constraint_restatement>\n")
|
|
390
390
|
idx_user = prompt.index("<current_user_message>\n")
|
|
391
391
|
idx_max = prompt.index("<entml:max_thinking_length>")
|
|
392
392
|
idx_mode = prompt.index("<entml:thinking_mode>")
|
|
393
|
-
assert
|
|
393
|
+
assert idx_hist < idx_fc < idx_behavior < idx_hard < idx_user < idx_max < idx_mode
|
|
394
394
|
assert prompt.rstrip().endswith("</entml:thinking_mode>")
|
|
395
395
|
|
|
396
396
|
|
|
@@ -516,7 +516,9 @@ def test_entml_history_tool_invoke_reminder_when_tools_in_history() -> None:
|
|
|
516
516
|
{"role": "tool", "tool_call_id": "call_1", "content": "found 3"},
|
|
517
517
|
{"role": "user", "content": "summarize"},
|
|
518
518
|
]
|
|
519
|
-
content = inject_fncall(
|
|
519
|
+
content = inject_fncall(
|
|
520
|
+
msgs, tools, proto, protocol_options={"thinking_level": "high"},
|
|
521
|
+
)[0]["content"]
|
|
520
522
|
assert '<entml:invoke name="search">' in content
|
|
521
523
|
assert '"query": "docs"' in content or "docs" in content
|
|
522
524
|
assert "<!-- Tool Result ID:call_1 -->" in content
|
|
@@ -525,11 +527,13 @@ def test_entml_history_tool_invoke_reminder_when_tools_in_history() -> None:
|
|
|
525
527
|
assert "<entml:funtions_results>" in content
|
|
526
528
|
assert "<function_calling_behavior>" in content
|
|
527
529
|
assert "IMPORTANT: The <entml:funtions_results> block is a top-level block" in content
|
|
528
|
-
fc_idx = content.index("<function_calling_behavior>\n")
|
|
529
530
|
hist_idx = content.index("<entml:conversation_history>\n")
|
|
530
531
|
results_idx = content.index("<entml:funtions_results>\n")
|
|
532
|
+
fc_idx = content.index("<function_calling_behavior>\n")
|
|
533
|
+
behavior_idx = content.index("<thinking_behavior>\n")
|
|
534
|
+
hard_idx = content.index("<entml:hard_constraint_restatement>\n")
|
|
531
535
|
user_idx = content.index("<current_user_message>\n")
|
|
532
|
-
assert fc_idx <
|
|
536
|
+
assert hist_idx < results_idx < fc_idx < behavior_idx < hard_idx < user_idx
|
|
533
537
|
|
|
534
538
|
|
|
535
539
|
def test_strip_entml_from_user_content() -> None:
|
|
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
|
|
@@ -148,13 +148,13 @@ def _build_entml_no_tools_prompt(
|
|
|
148
148
|
sections.append(
|
|
149
149
|
f"<user_system_prompt>\n{user_system_prompt.strip()}\n</user_system_prompt>"
|
|
150
150
|
)
|
|
151
|
+
if history_text.strip():
|
|
152
|
+
sections.append(format_entml_conversation_history(history_text))
|
|
151
153
|
thinking_behavior = build_entml_thinking_behavior_section(
|
|
152
154
|
protocol_options, history_text=history_text
|
|
153
155
|
)
|
|
154
156
|
if thinking_behavior:
|
|
155
157
|
sections.append(thinking_behavior)
|
|
156
|
-
if history_text.strip():
|
|
157
|
-
sections.append(format_entml_conversation_history(history_text))
|
|
158
158
|
if current_user_message is not None:
|
|
159
159
|
sections.append(format_entml_current_user_message(current_user_message))
|
|
160
160
|
thinking_meta = build_entml_thinking_meta_section(protocol_options)
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
@@ -233,6 +233,14 @@ class EntmlProtocol(ToolProtocol):
|
|
|
233
233
|
f"<history_markup_warning>\n{history_markup_warning}\n</history_markup_warning>"
|
|
234
234
|
)
|
|
235
235
|
|
|
236
|
+
if history_text:
|
|
237
|
+
sections.append(
|
|
238
|
+
format_entml_conversation_history(history_text, _HISTORY_CLARIFY_EN)
|
|
239
|
+
)
|
|
240
|
+
|
|
241
|
+
if functions_results_text.strip():
|
|
242
|
+
sections.append(functions_results_text.strip())
|
|
243
|
+
|
|
236
244
|
if tool_descs:
|
|
237
245
|
sections.append(format_function_calling_behavior())
|
|
238
246
|
|
|
@@ -242,14 +250,6 @@ class EntmlProtocol(ToolProtocol):
|
|
|
242
250
|
if thinking_behavior:
|
|
243
251
|
sections.append(thinking_behavior)
|
|
244
252
|
|
|
245
|
-
if history_text:
|
|
246
|
-
sections.append(
|
|
247
|
-
format_entml_conversation_history(history_text, _HISTORY_CLARIFY_EN)
|
|
248
|
-
)
|
|
249
|
-
|
|
250
|
-
if functions_results_text.strip():
|
|
251
|
-
sections.append(functions_results_text.strip())
|
|
252
|
-
|
|
253
253
|
if tool_descs:
|
|
254
254
|
sections.append(format_hard_constraint_restatement())
|
|
255
255
|
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{echotools-2.3.93 → echotools-2.3.94}/src/echotools/exec/fncall/protocols/entml_stream/__init__.py
RENAMED
|
File without changes
|
{echotools-2.3.93 → echotools-2.3.94}/src/echotools/exec/fncall/protocols/entml_stream/body.py
RENAMED
|
File without changes
|
{echotools-2.3.93 → echotools-2.3.94}/src/echotools/exec/fncall/protocols/entml_stream/snap.py
RENAMED
|
File without changes
|
{echotools-2.3.93 → echotools-2.3.94}/src/echotools/exec/fncall/protocols/entml_think/__init__.py
RENAMED
|
File without changes
|
{echotools-2.3.93 → echotools-2.3.94}/src/echotools/exec/fncall/protocols/entml_think/blocks.py
RENAMED
|
File without changes
|
{echotools-2.3.93 → echotools-2.3.94}/src/echotools/exec/fncall/protocols/entml_think/core.py
RENAMED
|
File without changes
|
{echotools-2.3.93 → echotools-2.3.94}/src/echotools/exec/fncall/protocols/entml_think/filter.py
RENAMED
|
File without changes
|
{echotools-2.3.93 → echotools-2.3.94}/src/echotools/exec/fncall/protocols/entml_think/hist.py
RENAMED
|
File without changes
|
{echotools-2.3.93 → echotools-2.3.94}/src/echotools/exec/fncall/protocols/entml_think/hold.py
RENAMED
|
File without changes
|
{echotools-2.3.93 → echotools-2.3.94}/src/echotools/exec/fncall/protocols/entml_think/parse.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
|
{echotools-2.3.93 → echotools-2.3.94}/src/echotools/media/console/uicore/mixins/uiinteract.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
|
{echotools-2.3.93 → echotools-2.3.94}/src/echotools/media/web/input_box/components/filezone.js
RENAMED
|
File without changes
|
{echotools-2.3.93 → echotools-2.3.94}/src/echotools/media/web/input_box/components/motionkit.js
RENAMED
|
File without changes
|
{echotools-2.3.93 → echotools-2.3.94}/src/echotools/media/web/input_box/components/sendbutton.js
RENAMED
|
File without changes
|
{echotools-2.3.93 → echotools-2.3.94}/src/echotools/media/web/input_box/components/sortablelist.css
RENAMED
|
File without changes
|
{echotools-2.3.93 → echotools-2.3.94}/src/echotools/media/web/input_box/components/sortablelist.js
RENAMED
|
File without changes
|
{echotools-2.3.93 → echotools-2.3.94}/src/echotools/media/web/input_box/components/textinput.js
RENAMED
|
File without changes
|
{echotools-2.3.93 → echotools-2.3.94}/src/echotools/media/web/input_box/components/voiceinput.js
RENAMED
|
File without changes
|
{echotools-2.3.93 → echotools-2.3.94}/src/echotools/media/web/input_box/fonts/inter-500.woff2
RENAMED
|
File without changes
|
{echotools-2.3.93 → echotools-2.3.94}/src/echotools/media/web/input_box/fonts/inter-600.woff2
RENAMED
|
File without changes
|
{echotools-2.3.93 → echotools-2.3.94}/src/echotools/media/web/input_box/fonts/inter400.woff2
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
|
{echotools-2.3.93 → echotools-2.3.94}/src/tests/fixtures/simulated_fake_history_markup_responses.py
RENAMED
|
File without changes
|
{echotools-2.3.93 → echotools-2.3.94}/src/tests/fixtures/simulated_fault_thinking_responses.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
|
|
@@ -757,9 +757,9 @@ class TestBuildMechanisms:
|
|
|
757
757
|
idx_tools = prompt.index("### search")
|
|
758
758
|
idx_sys = prompt.index("<user_system_prompt>")
|
|
759
759
|
idx_loop = prompt.index("<loop_warning>")
|
|
760
|
+
idx_hist = prompt.index("<entml:conversation_history>\n")
|
|
760
761
|
idx_fc = prompt.index("<function_calling_behavior>\n")
|
|
761
762
|
idx_behavior = prompt.index("<thinking_behavior>\n")
|
|
762
|
-
idx_hist = prompt.index("<entml:conversation_history>\n")
|
|
763
763
|
idx_hard = prompt.index("<entml:hard_constraint_restatement>\n")
|
|
764
764
|
idx_user = prompt.index("<current_user_message>\n")
|
|
765
765
|
idx_max = prompt.index("<entml:max_thinking_length>")
|
|
@@ -768,9 +768,9 @@ class TestBuildMechanisms:
|
|
|
768
768
|
idx_tools
|
|
769
769
|
< idx_sys
|
|
770
770
|
< idx_loop
|
|
771
|
+
< idx_hist
|
|
771
772
|
< idx_fc
|
|
772
773
|
< idx_behavior
|
|
773
|
-
< idx_hist
|
|
774
774
|
< idx_hard
|
|
775
775
|
< idx_user
|
|
776
776
|
< idx_max
|
|
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
|