echotools 2.3.73__tar.gz → 2.3.74__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.73 → echotools-2.3.74}/PKG-INFO +1 -1
- {echotools-2.3.73 → echotools-2.3.74}/pyproject.toml +1 -1
- {echotools-2.3.73 → echotools-2.3.74}/src/echotools/exec/fncall/protocols/entml_invoke.py +2 -1
- {echotools-2.3.73 → echotools-2.3.74}/src/echotools/exec/fncall/protocols/entml_values.py +13 -0
- {echotools-2.3.73 → echotools-2.3.74}/src/echotools.egg-info/PKG-INFO +1 -1
- {echotools-2.3.73 → echotools-2.3.74}/src/tests/test_entml_protocol.py +35 -0
- {echotools-2.3.73 → echotools-2.3.74}/README.md +0 -0
- {echotools-2.3.73 → echotools-2.3.74}/docs/README.md +0 -0
- {echotools-2.3.73 → echotools-2.3.74}/setup.cfg +0 -0
- {echotools-2.3.73 → echotools-2.3.74}/src/echotools/__init__.py +0 -0
- {echotools-2.3.73 → echotools-2.3.74}/src/echotools/base/cache/__init__.py +0 -0
- {echotools-2.3.73 → echotools-2.3.74}/src/echotools/base/cache/list_cache.py +0 -0
- {echotools-2.3.73 → echotools-2.3.74}/src/echotools/base/cache/memory_cache.py +0 -0
- {echotools-2.3.73 → echotools-2.3.74}/src/echotools/base/config/__init__.py +0 -0
- {echotools-2.3.73 → echotools-2.3.74}/src/echotools/base/config/base.py +0 -0
- {echotools-2.3.73 → echotools-2.3.74}/src/echotools/base/config/center.py +0 -0
- {echotools-2.3.73 → echotools-2.3.74}/src/echotools/base/config/center_notify.py +0 -0
- {echotools-2.3.73 → echotools-2.3.74}/src/echotools/base/config/center_template.py +0 -0
- {echotools-2.3.73 → echotools-2.3.74}/src/echotools/base/config/loader.py +0 -0
- {echotools-2.3.73 → echotools-2.3.74}/src/echotools/base/config/merge.py +0 -0
- {echotools-2.3.73 → echotools-2.3.74}/src/echotools/base/errors/__init__.py +0 -0
- {echotools-2.3.73 → echotools-2.3.74}/src/echotools/base/errors/base.py +0 -0
- {echotools-2.3.73 → echotools-2.3.74}/src/echotools/base/errors/classify.py +0 -0
- {echotools-2.3.73 → echotools-2.3.74}/src/echotools/base/errors/common.py +0 -0
- {echotools-2.3.73 → echotools-2.3.74}/src/echotools/base/errors/http.py +0 -0
- {echotools-2.3.73 → echotools-2.3.74}/src/echotools/base/ids/__init__.py +0 -0
- {echotools-2.3.73 → echotools-2.3.74}/src/echotools/base/ids/generator.py +0 -0
- {echotools-2.3.73 → echotools-2.3.74}/src/echotools/base/io/__init__.py +0 -0
- {echotools-2.3.73 → echotools-2.3.74}/src/echotools/base/io/io_utils.py +0 -0
- {echotools-2.3.73 → echotools-2.3.74}/src/echotools/base/io/printstream.py +0 -0
- {echotools-2.3.73 → echotools-2.3.74}/src/echotools/base/logger/__init__.py +0 -0
- {echotools-2.3.73 → echotools-2.3.74}/src/echotools/base/logger/manager.py +0 -0
- {echotools-2.3.73 → echotools-2.3.74}/src/echotools/base/retry/__init__.py +0 -0
- {echotools-2.3.73 → echotools-2.3.74}/src/echotools/base/retry/retry.py +0 -0
- {echotools-2.3.73 → echotools-2.3.74}/src/echotools/compat.py +0 -0
- {echotools-2.3.73 → echotools-2.3.74}/src/echotools/exec/dispatch/__init__.py +0 -0
- {echotools-2.3.73 → echotools-2.3.74}/src/echotools/exec/dispatch/candidate.py +0 -0
- {echotools-2.3.73 → echotools-2.3.74}/src/echotools/exec/dispatch/dispatcher.py +0 -0
- {echotools-2.3.73 → echotools-2.3.74}/src/echotools/exec/dispatch/proxy_selector.py +0 -0
- {echotools-2.3.73 → echotools-2.3.74}/src/echotools/exec/dispatch/race.py +0 -0
- {echotools-2.3.73 → echotools-2.3.74}/src/echotools/exec/dispatch/selector.py +0 -0
- {echotools-2.3.73 → echotools-2.3.74}/src/echotools/exec/dispatch/usage.py +0 -0
- {echotools-2.3.73 → echotools-2.3.74}/src/echotools/exec/fncall/__init__.py +0 -0
- {echotools-2.3.73 → echotools-2.3.74}/src/echotools/exec/fncall/parsers/__init__.py +0 -0
- {echotools-2.3.73 → echotools-2.3.74}/src/echotools/exec/fncall/parsers/stream.py +0 -0
- {echotools-2.3.73 → echotools-2.3.74}/src/echotools/exec/fncall/parsers/xml_params.py +0 -0
- {echotools-2.3.73 → echotools-2.3.74}/src/echotools/exec/fncall/parsers/xml_parser.py +0 -0
- {echotools-2.3.73 → echotools-2.3.74}/src/echotools/exec/fncall/prompt/__init__.py +0 -0
- {echotools-2.3.73 → echotools-2.3.74}/src/echotools/exec/fncall/prompt/history.py +0 -0
- {echotools-2.3.73 → echotools-2.3.74}/src/echotools/exec/fncall/prompt/history_format.py +0 -0
- {echotools-2.3.73 → echotools-2.3.74}/src/echotools/exec/fncall/prompt/inject.py +0 -0
- {echotools-2.3.73 → echotools-2.3.74}/src/echotools/exec/fncall/prompt/prompt_helpers.py +0 -0
- {echotools-2.3.73 → echotools-2.3.74}/src/echotools/exec/fncall/prompt/templates.py +0 -0
- {echotools-2.3.73 → echotools-2.3.74}/src/echotools/exec/fncall/protocols/__init__.py +0 -0
- {echotools-2.3.73 → echotools-2.3.74}/src/echotools/exec/fncall/protocols/entml.py +0 -0
- {echotools-2.3.73 → echotools-2.3.74}/src/echotools/exec/fncall/protocols/entml_patterns.py +0 -0
- {echotools-2.3.73 → echotools-2.3.74}/src/echotools/exec/fncall/protocols/entml_stream_json.py +0 -0
- {echotools-2.3.73 → echotools-2.3.74}/src/echotools/exec/fncall/protocols/entml_think/__init__.py +0 -0
- {echotools-2.3.73 → echotools-2.3.74}/src/echotools/exec/fncall/protocols/entml_think/core.py +0 -0
- {echotools-2.3.73 → echotools-2.3.74}/src/echotools/exec/fncall/protocols/entml_think/hist.py +0 -0
- {echotools-2.3.73 → echotools-2.3.74}/src/echotools/exec/fncall/protocols/entml_think/parse.py +0 -0
- {echotools-2.3.73 → echotools-2.3.74}/src/echotools/exec/fncall/protocols/entml_tools.py +0 -0
- {echotools-2.3.73 → echotools-2.3.74}/src/echotools/exec/fncall/registry.py +0 -0
- {echotools-2.3.73 → echotools-2.3.74}/src/echotools/exec/fncall/shared/__init__.py +0 -0
- {echotools-2.3.73 → echotools-2.3.74}/src/echotools/exec/fncall/shared/coercion.py +0 -0
- {echotools-2.3.73 → echotools-2.3.74}/src/echotools/exec/fncall/shared/history_markup.py +0 -0
- {echotools-2.3.73 → echotools-2.3.74}/src/echotools/exec/fncall/shared/loop_detect.py +0 -0
- {echotools-2.3.73 → echotools-2.3.74}/src/echotools/exec/fncall/shared/normalization.py +0 -0
- {echotools-2.3.73 → echotools-2.3.74}/src/echotools/exec/fncall/shared/schema_render.py +0 -0
- {echotools-2.3.73 → echotools-2.3.74}/src/echotools/exec/fncall/shared/xml_helpers.py +0 -0
- {echotools-2.3.73 → echotools-2.3.74}/src/echotools/exec/keys.py +0 -0
- {echotools-2.3.73 → echotools-2.3.74}/src/echotools/exec/lifecycle/__init__.py +0 -0
- {echotools-2.3.73 → echotools-2.3.74}/src/echotools/exec/lifecycle/manager.py +0 -0
- {echotools-2.3.73 → echotools-2.3.74}/src/echotools/exec/lifecycle/updater.py +0 -0
- {echotools-2.3.73 → echotools-2.3.74}/src/echotools/exec/lifecycle/updater_pull.py +0 -0
- {echotools-2.3.73 → echotools-2.3.74}/src/echotools/exec/process/__init__.py +0 -0
- {echotools-2.3.73 → echotools-2.3.74}/src/echotools/exec/process/port.py +0 -0
- {echotools-2.3.73 → echotools-2.3.74}/src/echotools/exec/protocol/__init__.py +0 -0
- {echotools-2.3.73 → echotools-2.3.74}/src/echotools/exec/protocol/base.py +0 -0
- {echotools-2.3.73 → echotools-2.3.74}/src/echotools/exec/terminal/__init__.py +0 -0
- {echotools-2.3.73 → echotools-2.3.74}/src/echotools/exec/terminal/conpty.py +0 -0
- {echotools-2.3.73 → echotools-2.3.74}/src/echotools/exec/terminal/local/__init__.py +0 -0
- {echotools-2.3.73 → echotools-2.3.74}/src/echotools/exec/terminal/local/core.py +0 -0
- {echotools-2.3.73 → echotools-2.3.74}/src/echotools/exec/terminal/local/proc.py +0 -0
- {echotools-2.3.73 → echotools-2.3.74}/src/echotools/exec/terminal/local/unix.py +0 -0
- {echotools-2.3.73 → echotools-2.3.74}/src/echotools/exec/terminal/local/win.py +0 -0
- {echotools-2.3.73 → echotools-2.3.74}/src/echotools/exec/terminal/sanitize.py +0 -0
- {echotools-2.3.73 → echotools-2.3.74}/src/echotools/exec/terminal/session/__init__.py +0 -0
- {echotools-2.3.73 → echotools-2.3.74}/src/echotools/exec/terminal/session/base.py +0 -0
- {echotools-2.3.73 → echotools-2.3.74}/src/echotools/exec/terminal/session/client.py +0 -0
- {echotools-2.3.73 → echotools-2.3.74}/src/echotools/exec/terminal/ssh.py +0 -0
- {echotools-2.3.73 → echotools-2.3.74}/src/echotools/exec/terminal/tmux.py +0 -0
- {echotools-2.3.73 → echotools-2.3.74}/src/echotools/media/console/__init__.py +0 -0
- {echotools-2.3.73 → echotools-2.3.74}/src/echotools/media/console/charmap.py +0 -0
- {echotools-2.3.73 → echotools-2.3.74}/src/echotools/media/console/spinner.py +0 -0
- {echotools-2.3.73 → echotools-2.3.74}/src/echotools/media/console/ui.py +0 -0
- {echotools-2.3.73 → echotools-2.3.74}/src/echotools/media/console/uicore/mixins/__init__.py +0 -0
- {echotools-2.3.73 → echotools-2.3.74}/src/echotools/media/console/uicore/mixins/uibase.py +0 -0
- {echotools-2.3.73 → echotools-2.3.74}/src/echotools/media/console/uicore/mixins/uicmds.py +0 -0
- {echotools-2.3.73 → echotools-2.3.74}/src/echotools/media/console/uicore/mixins/uiinteract.py +0 -0
- {echotools-2.3.73 → echotools-2.3.74}/src/echotools/media/console/uicore/mixins/uioutput.py +0 -0
- {echotools-2.3.73 → echotools-2.3.74}/src/echotools/media/console/uicore/mixins/uistream.py +0 -0
- {echotools-2.3.73 → echotools-2.3.74}/src/echotools/media/console/uicore/ui_console.py +0 -0
- {echotools-2.3.73 → echotools-2.3.74}/src/echotools/media/console/uicore/ui_io.py +0 -0
- {echotools-2.3.73 → echotools-2.3.74}/src/echotools/media/console/uicore/ui_log.py +0 -0
- {echotools-2.3.73 → echotools-2.3.74}/src/echotools/media/console/uicore/ui_platform.py +0 -0
- {echotools-2.3.73 → echotools-2.3.74}/src/echotools/media/console/uicore/ui_text.py +0 -0
- {echotools-2.3.73 → echotools-2.3.74}/src/echotools/media/console/uicore/ui_types.py +0 -0
- {echotools-2.3.73 → echotools-2.3.74}/src/echotools/media/console/uilayout/ui_countdown.py +0 -0
- {echotools-2.3.73 → echotools-2.3.74}/src/echotools/media/console/uilayout/ui_layout.py +0 -0
- {echotools-2.3.73 → echotools-2.3.74}/src/echotools/media/console/uilayout/ui_misc.py +0 -0
- {echotools-2.3.73 → echotools-2.3.74}/src/echotools/media/console/uilayout/ui_panel.py +0 -0
- {echotools-2.3.73 → echotools-2.3.74}/src/echotools/media/console/uilayout/ui_table.py +0 -0
- {echotools-2.3.73 → echotools-2.3.74}/src/echotools/media/console/uilayout/ui_tree.py +0 -0
- {echotools-2.3.73 → echotools-2.3.74}/src/echotools/media/console/uiwidgets/ui_box.py +0 -0
- {echotools-2.3.73 → echotools-2.3.74}/src/echotools/media/console/uiwidgets/ui_editor.py +0 -0
- {echotools-2.3.73 → echotools-2.3.74}/src/echotools/media/console/uiwidgets/ui_progress.py +0 -0
- {echotools-2.3.73 → echotools-2.3.74}/src/echotools/media/console/uiwidgets/ui_select.py +0 -0
- {echotools-2.3.73 → echotools-2.3.74}/src/echotools/media/console/uiwidgets/ui_stream.py +0 -0
- {echotools-2.3.73 → echotools-2.3.74}/src/echotools/media/events/__init__.py +0 -0
- {echotools-2.3.73 → echotools-2.3.74}/src/echotools/media/events/bus.py +0 -0
- {echotools-2.3.73 → echotools-2.3.74}/src/echotools/media/events/event.py +0 -0
- {echotools-2.3.73 → echotools-2.3.74}/src/echotools/media/spinner/__init__.py +0 -0
- {echotools-2.3.73 → echotools-2.3.74}/src/echotools/media/spinner/spinner.py +0 -0
- {echotools-2.3.73 → echotools-2.3.74}/src/echotools/media/spinner/spinner_color.py +0 -0
- {echotools-2.3.73 → echotools-2.3.74}/src/echotools/media/tracing/__init__.py +0 -0
- {echotools-2.3.73 → echotools-2.3.74}/src/echotools/media/tracing/context.py +0 -0
- {echotools-2.3.73 → echotools-2.3.74}/src/echotools/media/tracing/span.py +0 -0
- {echotools-2.3.73 → echotools-2.3.74}/src/echotools/media/tracing/tracer.py +0 -0
- {echotools-2.3.73 → echotools-2.3.74}/src/echotools/media/translate.py +0 -0
- {echotools-2.3.73 → echotools-2.3.74}/src/echotools/media/watcher/__init__.py +0 -0
- {echotools-2.3.73 → echotools-2.3.74}/src/echotools/media/watcher/file_watcher.py +0 -0
- {echotools-2.3.73 → echotools-2.3.74}/src/echotools/media/web/__init__.py +0 -0
- {echotools-2.3.73 → echotools-2.3.74}/src/echotools/media/web/application.py +0 -0
- {echotools-2.3.73 → echotools-2.3.74}/src/echotools/media/web/broker.py +0 -0
- {echotools-2.3.73 → echotools-2.3.74}/src/echotools/media/web/input_box/app.js +0 -0
- {echotools-2.3.73 → echotools-2.3.74}/src/echotools/media/web/input_box/components/filezone.js +0 -0
- {echotools-2.3.73 → echotools-2.3.74}/src/echotools/media/web/input_box/components/motionkit.js +0 -0
- {echotools-2.3.73 → echotools-2.3.74}/src/echotools/media/web/input_box/components/sendbutton.js +0 -0
- {echotools-2.3.73 → echotools-2.3.74}/src/echotools/media/web/input_box/components/sortablelist.css +0 -0
- {echotools-2.3.73 → echotools-2.3.74}/src/echotools/media/web/input_box/components/sortablelist.js +0 -0
- {echotools-2.3.73 → echotools-2.3.74}/src/echotools/media/web/input_box/components/textinput.js +0 -0
- {echotools-2.3.73 → echotools-2.3.74}/src/echotools/media/web/input_box/components/voiceinput.js +0 -0
- {echotools-2.3.73 → echotools-2.3.74}/src/echotools/media/web/input_box/fonts/inter-500.woff2 +0 -0
- {echotools-2.3.73 → echotools-2.3.74}/src/echotools/media/web/input_box/fonts/inter-600.woff2 +0 -0
- {echotools-2.3.73 → echotools-2.3.74}/src/echotools/media/web/input_box/fonts/inter400.woff2 +0 -0
- {echotools-2.3.73 → echotools-2.3.74}/src/echotools/media/web/input_box/inputbox.css +0 -0
- {echotools-2.3.73 → echotools-2.3.74}/src/echotools/media/web/input_box/inputbox.js +0 -0
- {echotools-2.3.73 → echotools-2.3.74}/src/echotools/media/web/input_box/style.css +0 -0
- {echotools-2.3.73 → echotools-2.3.74}/src/echotools/media/web/input_box/voicegif.js +0 -0
- {echotools-2.3.73 → echotools-2.3.74}/src/echotools/media/web/middleware.py +0 -0
- {echotools-2.3.73 → echotools-2.3.74}/src/echotools/media/web/stats.py +0 -0
- {echotools-2.3.73 → echotools-2.3.74}/src/echotools/media/web/utils.py +0 -0
- {echotools-2.3.73 → echotools-2.3.74}/src/echotools/plat/files/__init__.py +0 -0
- {echotools-2.3.73 → echotools-2.3.74}/src/echotools/plat/files/file_util.py +0 -0
- {echotools-2.3.73 → echotools-2.3.74}/src/echotools/plat/network/__init__.py +0 -0
- {echotools-2.3.73 → echotools-2.3.74}/src/echotools/plat/network/http_utils.py +0 -0
- {echotools-2.3.73 → echotools-2.3.74}/src/echotools/plat/plugin/__init__.py +0 -0
- {echotools-2.3.73 → echotools-2.3.74}/src/echotools/plat/plugin/base.py +0 -0
- {echotools-2.3.73 → echotools-2.3.74}/src/echotools/plat/plugin/discovery.py +0 -0
- {echotools-2.3.73 → echotools-2.3.74}/src/echotools/plat/plugin/registry.py +0 -0
- {echotools-2.3.73 → echotools-2.3.74}/src/echotools/plat/plugin/registry_ops.py +0 -0
- {echotools-2.3.73 → echotools-2.3.74}/src/echotools/plat/proxy/__init__.py +0 -0
- {echotools-2.3.73 → echotools-2.3.74}/src/echotools/plat/proxy/manager.py +0 -0
- {echotools-2.3.73 → echotools-2.3.74}/src/echotools/plat/runtime/__init__.py +0 -0
- {echotools-2.3.73 → echotools-2.3.74}/src/echotools/plat/runtime/collector.py +0 -0
- {echotools-2.3.73 → echotools-2.3.74}/src/echotools/plat/scheduler/__init__.py +0 -0
- {echotools-2.3.73 → echotools-2.3.74}/src/echotools/plat/scheduler/scheduler.py +0 -0
- {echotools-2.3.73 → echotools-2.3.74}/src/echotools/plat/sdk/__init__.py +0 -0
- {echotools-2.3.73 → echotools-2.3.74}/src/echotools/plat/sdk/facade.py +0 -0
- {echotools-2.3.73 → echotools-2.3.74}/src/echotools/version.py +0 -0
- {echotools-2.3.73 → echotools-2.3.74}/src/echotools.egg-info/SOURCES.txt +0 -0
- {echotools-2.3.73 → echotools-2.3.74}/src/echotools.egg-info/dependency_links.txt +0 -0
- {echotools-2.3.73 → echotools-2.3.74}/src/echotools.egg-info/requires.txt +0 -0
- {echotools-2.3.73 → echotools-2.3.74}/src/echotools.egg-info/top_level.txt +0 -0
- {echotools-2.3.73 → echotools-2.3.74}/src/tests/_check_parity.py +0 -0
- {echotools-2.3.73 → echotools-2.3.74}/src/tests/bench_import.py +0 -0
- {echotools-2.3.73 → echotools-2.3.74}/src/tests/conftest.py +0 -0
- {echotools-2.3.73 → echotools-2.3.74}/src/tests/fixtures/__init__.py +0 -0
- {echotools-2.3.73 → echotools-2.3.74}/src/tests/fixtures/simulated_fake_history_markup_responses.py +0 -0
- {echotools-2.3.73 → echotools-2.3.74}/src/tests/fixtures/simulated_fault_thinking_responses.py +0 -0
- {echotools-2.3.73 → echotools-2.3.74}/src/tests/fixtures/simulated_llm_tool_responses.py +0 -0
- {echotools-2.3.73 → echotools-2.3.74}/src/tests/test_adversarial_stream_splits.py +0 -0
- {echotools-2.3.73 → echotools-2.3.74}/src/tests/test_cache_retry.py +0 -0
- {echotools-2.3.73 → echotools-2.3.74}/src/tests/test_completion.py +0 -0
- {echotools-2.3.73 → echotools-2.3.74}/src/tests/test_config.py +0 -0
- {echotools-2.3.73 → echotools-2.3.74}/src/tests/test_config_extended.py +0 -0
- {echotools-2.3.73 → echotools-2.3.74}/src/tests/test_console.py +0 -0
- {echotools-2.3.73 → echotools-2.3.74}/src/tests/test_coverage_core.py +0 -0
- {echotools-2.3.73 → echotools-2.3.74}/src/tests/test_dispatch.py +0 -0
- {echotools-2.3.73 → echotools-2.3.74}/src/tests/test_dispatch_extended.py +0 -0
- {echotools-2.3.73 → echotools-2.3.74}/src/tests/test_dispatch_race.py +0 -0
- {echotools-2.3.73 → echotools-2.3.74}/src/tests/test_entml_agent_output_formats.py +0 -0
- {echotools-2.3.73 → echotools-2.3.74}/src/tests/test_entml_bare_invoke_format.py +0 -0
- {echotools-2.3.73 → echotools-2.3.74}/src/tests/test_entml_parser_comprehensive.py +0 -0
- {echotools-2.3.73 → echotools-2.3.74}/src/tests/test_entml_stream_json.py +0 -0
- {echotools-2.3.73 → echotools-2.3.74}/src/tests/test_entml_stream_json_exhaustive.py +0 -0
- {echotools-2.3.73 → echotools-2.3.74}/src/tests/test_entml_thinking_history.py +0 -0
- {echotools-2.3.73 → echotools-2.3.74}/src/tests/test_entml_thinking_parse.py +0 -0
- {echotools-2.3.73 → echotools-2.3.74}/src/tests/test_entml_tool_parse_leak.py +0 -0
- {echotools-2.3.73 → echotools-2.3.74}/src/tests/test_entml_tool_pipeline.py +0 -0
- {echotools-2.3.73 → echotools-2.3.74}/src/tests/test_entml_tools.py +0 -0
- {echotools-2.3.73 → echotools-2.3.74}/src/tests/test_errors.py +0 -0
- {echotools-2.3.73 → echotools-2.3.74}/src/tests/test_errors_common.py +0 -0
- {echotools-2.3.73 → echotools-2.3.74}/src/tests/test_events.py +0 -0
- {echotools-2.3.73 → echotools-2.3.74}/src/tests/test_events_event.py +0 -0
- {echotools-2.3.73 → echotools-2.3.74}/src/tests/test_facade.py +0 -0
- {echotools-2.3.73 → echotools-2.3.74}/src/tests/test_fake_history_markup_batch.py +0 -0
- {echotools-2.3.73 → echotools-2.3.74}/src/tests/test_fake_history_markup_invoke_preserve.py +0 -0
- {echotools-2.3.73 → echotools-2.3.74}/src/tests/test_fake_history_markup_reply_protect.py +0 -0
- {echotools-2.3.73 → echotools-2.3.74}/src/tests/test_fake_history_markup_stream.py +0 -0
- {echotools-2.3.73 → echotools-2.3.74}/src/tests/test_fault_thinking_close_batch.py +0 -0
- {echotools-2.3.73 → echotools-2.3.74}/src/tests/test_fault_thinking_close_stream.py +0 -0
- {echotools-2.3.73 → echotools-2.3.74}/src/tests/test_fncall.py +0 -0
- {echotools-2.3.73 → echotools-2.3.74}/src/tests/test_fncall_stream_thinking.py +0 -0
- {echotools-2.3.73 → echotools-2.3.74}/src/tests/test_history_markup_filter.py +0 -0
- {echotools-2.3.73 → echotools-2.3.74}/src/tests/test_ids.py +0 -0
- {echotools-2.3.73 → echotools-2.3.74}/src/tests/test_imports.py +0 -0
- {echotools-2.3.73 → echotools-2.3.74}/src/tests/test_io.py +0 -0
- {echotools-2.3.73 → echotools-2.3.74}/src/tests/test_keys.py +0 -0
- {echotools-2.3.73 → echotools-2.3.74}/src/tests/test_lifecycle.py +0 -0
- {echotools-2.3.73 → echotools-2.3.74}/src/tests/test_logger.py +0 -0
- {echotools-2.3.73 → echotools-2.3.74}/src/tests/test_merge.py +0 -0
- {echotools-2.3.73 → echotools-2.3.74}/src/tests/test_model_branch_matrix.py +0 -0
- {echotools-2.3.73 → echotools-2.3.74}/src/tests/test_plugin.py +0 -0
- {echotools-2.3.73 → echotools-2.3.74}/src/tests/test_printstream.py +0 -0
- {echotools-2.3.73 → echotools-2.3.74}/src/tests/test_protocols.py +0 -0
- {echotools-2.3.73 → echotools-2.3.74}/src/tests/test_proxy.py +0 -0
- {echotools-2.3.73 → echotools-2.3.74}/src/tests/test_proxy_selector.py +0 -0
- {echotools-2.3.73 → echotools-2.3.74}/src/tests/test_runtime.py +0 -0
- {echotools-2.3.73 → echotools-2.3.74}/src/tests/test_scheduler.py +0 -0
- {echotools-2.3.73 → echotools-2.3.74}/src/tests/test_simulated_llm_tool_parse.py +0 -0
- {echotools-2.3.73 → echotools-2.3.74}/src/tests/test_stream_partial_json_parity.py +0 -0
- {echotools-2.3.73 → echotools-2.3.74}/src/tests/test_stream_realtime_parse.py +0 -0
- {echotools-2.3.73 → echotools-2.3.74}/src/tests/test_tracing.py +0 -0
- {echotools-2.3.73 → echotools-2.3.74}/src/tests/test_usage.py +0 -0
- {echotools-2.3.73 → echotools-2.3.74}/src/tests/test_web.py +0 -0
- {echotools-2.3.73 → echotools-2.3.74}/src/tests/test_web_broker.py +0 -0
|
@@ -13,7 +13,7 @@ from .entml_patterns import (
|
|
|
13
13
|
normalize_entml_name,
|
|
14
14
|
parse_sub_tags,
|
|
15
15
|
)
|
|
16
|
-
from .entml_values import coerce_entml_arguments, coerce_entml_parameter_value
|
|
16
|
+
from .entml_values import coerce_entml_arguments, coerce_entml_parameter_value, _apply_common_param_aliases
|
|
17
17
|
|
|
18
18
|
|
|
19
19
|
def _parse_bare_invoke_children(
|
|
@@ -70,6 +70,7 @@ def parse_invoke_args(
|
|
|
70
70
|
)
|
|
71
71
|
|
|
72
72
|
_parse_bare_invoke_children(body, args, func_props)
|
|
73
|
+
_apply_common_param_aliases(args, func_props)
|
|
73
74
|
|
|
74
75
|
return args
|
|
75
76
|
|
|
@@ -71,6 +71,19 @@ def coerce_entml_parameter_value(
|
|
|
71
71
|
return stripped
|
|
72
72
|
|
|
73
73
|
|
|
74
|
+
def _apply_common_param_aliases(
|
|
75
|
+
args: Dict[str, Any],
|
|
76
|
+
func_props: Dict[str, Dict[str, Any]],
|
|
77
|
+
) -> None:
|
|
78
|
+
"""模型常把 ``path`` 写成 ``file_path`` / ``filepath``,按 schema 归一。"""
|
|
79
|
+
if not func_props or "path" not in func_props or "path" in args:
|
|
80
|
+
return
|
|
81
|
+
for alias in ("file_path", "filepath", "filePath"):
|
|
82
|
+
if alias in args:
|
|
83
|
+
args["path"] = args.pop(alias)
|
|
84
|
+
return
|
|
85
|
+
|
|
86
|
+
|
|
74
87
|
def coerce_entml_arguments(
|
|
75
88
|
args: Dict[str, Any],
|
|
76
89
|
func_name: str,
|
|
@@ -1106,6 +1106,41 @@ def test_entml_parse_bare_parameter_tags_in_invoke() -> None:
|
|
|
1106
1106
|
assert json.loads(stream_args[0]) == args, f"chunk={chunk}"
|
|
1107
1107
|
|
|
1108
1108
|
|
|
1109
|
+
def test_entml_parse_read_file_path_alias() -> None:
|
|
1110
|
+
"""Read 工具:模型输出 file_path 时映射为 schema 要求的 path。"""
|
|
1111
|
+
tools = [
|
|
1112
|
+
{
|
|
1113
|
+
"type": "function",
|
|
1114
|
+
"function": {
|
|
1115
|
+
"name": "Read",
|
|
1116
|
+
"parameters": {
|
|
1117
|
+
"type": "object",
|
|
1118
|
+
"properties": {
|
|
1119
|
+
"path": {"type": "string"},
|
|
1120
|
+
"line_offset": {"type": "integer"},
|
|
1121
|
+
"n_lines": {"type": "integer"},
|
|
1122
|
+
},
|
|
1123
|
+
"required": ["path"],
|
|
1124
|
+
},
|
|
1125
|
+
},
|
|
1126
|
+
}
|
|
1127
|
+
]
|
|
1128
|
+
schema_index = _build_param_schema_index(tools)
|
|
1129
|
+
sample = (
|
|
1130
|
+
'<entml:invoke name="Read">'
|
|
1131
|
+
'<entml:parameter name="file_path">X:/Project/foo.py</entml:parameter>'
|
|
1132
|
+
'<entml:parameter name="line_offset">122</entml:parameter>'
|
|
1133
|
+
'<entml:parameter name="n_lines">25</entml:parameter>'
|
|
1134
|
+
"</entml:invoke>"
|
|
1135
|
+
)
|
|
1136
|
+
calls = parse_entml_tool_calls(sample, tools, schema_index)
|
|
1137
|
+
args = json.loads(calls[0]["function"]["arguments"])
|
|
1138
|
+
assert "file_path" not in args
|
|
1139
|
+
assert args["path"] == "X:/Project/foo.py"
|
|
1140
|
+
assert args["line_offset"] == 122
|
|
1141
|
+
assert args["n_lines"] == 25
|
|
1142
|
+
|
|
1143
|
+
|
|
1109
1144
|
def test_entml_stream_same_tool_name_multiple_invokes() -> None:
|
|
1110
1145
|
"""同名连续 invoke 的流式 arguments 与 batch 一致。"""
|
|
1111
1146
|
from echotools.exec.fncall.parsers.stream import FncallStreamParser
|
|
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
|
|
File without changes
|
{echotools-2.3.73 → echotools-2.3.74}/src/echotools/exec/fncall/protocols/entml_stream_json.py
RENAMED
|
File without changes
|
{echotools-2.3.73 → echotools-2.3.74}/src/echotools/exec/fncall/protocols/entml_think/__init__.py
RENAMED
|
File without changes
|
{echotools-2.3.73 → echotools-2.3.74}/src/echotools/exec/fncall/protocols/entml_think/core.py
RENAMED
|
File without changes
|
{echotools-2.3.73 → echotools-2.3.74}/src/echotools/exec/fncall/protocols/entml_think/hist.py
RENAMED
|
File without changes
|
{echotools-2.3.73 → echotools-2.3.74}/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
|
|
File without changes
|
{echotools-2.3.73 → echotools-2.3.74}/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.73 → echotools-2.3.74}/src/echotools/media/web/input_box/components/filezone.js
RENAMED
|
File without changes
|
{echotools-2.3.73 → echotools-2.3.74}/src/echotools/media/web/input_box/components/motionkit.js
RENAMED
|
File without changes
|
{echotools-2.3.73 → echotools-2.3.74}/src/echotools/media/web/input_box/components/sendbutton.js
RENAMED
|
File without changes
|
{echotools-2.3.73 → echotools-2.3.74}/src/echotools/media/web/input_box/components/sortablelist.css
RENAMED
|
File without changes
|
{echotools-2.3.73 → echotools-2.3.74}/src/echotools/media/web/input_box/components/sortablelist.js
RENAMED
|
File without changes
|
{echotools-2.3.73 → echotools-2.3.74}/src/echotools/media/web/input_box/components/textinput.js
RENAMED
|
File without changes
|
{echotools-2.3.73 → echotools-2.3.74}/src/echotools/media/web/input_box/components/voiceinput.js
RENAMED
|
File without changes
|
{echotools-2.3.73 → echotools-2.3.74}/src/echotools/media/web/input_box/fonts/inter-500.woff2
RENAMED
|
File without changes
|
{echotools-2.3.73 → echotools-2.3.74}/src/echotools/media/web/input_box/fonts/inter-600.woff2
RENAMED
|
File without changes
|
{echotools-2.3.73 → echotools-2.3.74}/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
|
|
File without changes
|
{echotools-2.3.73 → echotools-2.3.74}/src/tests/fixtures/simulated_fake_history_markup_responses.py
RENAMED
|
File without changes
|
{echotools-2.3.73 → echotools-2.3.74}/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
|
|
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
|