README.md
pyproject.toml
docs/README.md
src/echotools/__init__.py
src/echotools/compat.py
src/echotools/version.py
src/echotools.egg-info/PKG-INFO
src/echotools.egg-info/SOURCES.txt
src/echotools.egg-info/dependency_links.txt
src/echotools.egg-info/requires.txt
src/echotools.egg-info/top_level.txt
src/echotools/base/cache/__init__.py
src/echotools/base/cache/list_cache.py
src/echotools/base/cache/memory_cache.py
src/echotools/base/config/__init__.py
src/echotools/base/config/base.py
src/echotools/base/config/center.py
src/echotools/base/config/center_notify.py
src/echotools/base/config/center_template.py
src/echotools/base/config/loader.py
src/echotools/base/config/merge.py
src/echotools/base/errors/__init__.py
src/echotools/base/errors/base.py
src/echotools/base/errors/classify.py
src/echotools/base/errors/common.py
src/echotools/base/errors/http.py
src/echotools/base/ids/__init__.py
src/echotools/base/ids/generator.py
src/echotools/base/io/__init__.py
src/echotools/base/io/io_utils.py
src/echotools/base/io/printstream.py
src/echotools/base/logger/__init__.py
src/echotools/base/logger/manager.py
src/echotools/base/retry/__init__.py
src/echotools/base/retry/retry.py
src/echotools/exec/keys.py
src/echotools/exec/dispatch/__init__.py
src/echotools/exec/dispatch/candidate.py
src/echotools/exec/dispatch/dispatcher.py
src/echotools/exec/dispatch/proxy_selector.py
src/echotools/exec/dispatch/race.py
src/echotools/exec/dispatch/selector.py
src/echotools/exec/dispatch/usage.py
src/echotools/exec/fncall/__init__.py
src/echotools/exec/fncall/registry.py
src/echotools/exec/fncall/parsers/__init__.py
src/echotools/exec/fncall/parsers/stream.py
src/echotools/exec/fncall/parsers/xml_params.py
src/echotools/exec/fncall/parsers/xml_parser.py
src/echotools/exec/fncall/prompt/__init__.py
src/echotools/exec/fncall/prompt/history.py
src/echotools/exec/fncall/prompt/history_format.py
src/echotools/exec/fncall/prompt/inject.py
src/echotools/exec/fncall/prompt/prompt_helpers.py
src/echotools/exec/fncall/prompt/templates.py
src/echotools/exec/fncall/protocols/__init__.py
src/echotools/exec/fncall/protocols/entml.py
src/echotools/exec/fncall/protocols/entml_invoke.py
src/echotools/exec/fncall/protocols/entml_patterns.py
src/echotools/exec/fncall/protocols/entml_sanitize.py
src/echotools/exec/fncall/protocols/entml_thinking.py
src/echotools/exec/fncall/protocols/entml_thinking_history.py
src/echotools/exec/fncall/protocols/entml_thinking_parse.py
src/echotools/exec/fncall/protocols/entml_tools.py
src/echotools/exec/fncall/protocols/entml_values.py
src/echotools/exec/fncall/shared/__init__.py
src/echotools/exec/fncall/shared/coercion.py
src/echotools/exec/fncall/shared/loop_detect.py
src/echotools/exec/fncall/shared/normalization.py
src/echotools/exec/fncall/shared/schema_render.py
src/echotools/exec/fncall/shared/xml_helpers.py
src/echotools/exec/lifecycle/__init__.py
src/echotools/exec/lifecycle/manager.py
src/echotools/exec/lifecycle/updater.py
src/echotools/exec/lifecycle/updater_pull.py
src/echotools/exec/process/__init__.py
src/echotools/exec/process/port.py
src/echotools/exec/protocol/__init__.py
src/echotools/exec/protocol/base.py
src/echotools/exec/terminal/__init__.py
src/echotools/exec/terminal/conpty.py
src/echotools/exec/terminal/sanitize.py
src/echotools/exec/terminal/ssh.py
src/echotools/exec/terminal/tmux.py
src/echotools/exec/terminal/local/__init__.py
src/echotools/exec/terminal/local/core.py
src/echotools/exec/terminal/local/proc.py
src/echotools/exec/terminal/local/unix.py
src/echotools/exec/terminal/local/win.py
src/echotools/exec/terminal/session/__init__.py
src/echotools/exec/terminal/session/base.py
src/echotools/exec/terminal/session/client.py
src/echotools/media/translate.py
src/echotools/media/console/__init__.py
src/echotools/media/console/charmap.py
src/echotools/media/console/spinner.py
src/echotools/media/console/ui.py
src/echotools/media/events/__init__.py
src/echotools/media/events/bus.py
src/echotools/media/events/event.py
src/echotools/media/spinner/__init__.py
src/echotools/media/spinner/spinner.py
src/echotools/media/spinner/spinner_color.py
src/echotools/media/tracing/__init__.py
src/echotools/media/tracing/context.py
src/echotools/media/tracing/span.py
src/echotools/media/tracing/tracer.py
src/echotools/media/watcher/__init__.py
src/echotools/media/watcher/file_watcher.py
src/echotools/media/web/__init__.py
src/echotools/media/web/application.py
src/echotools/media/web/broker.py
src/echotools/media/web/middleware.py
src/echotools/media/web/stats.py
src/echotools/media/web/utils.py
src/echotools/media/web/input_box/app.js
src/echotools/media/web/input_box/inputbox.css
src/echotools/media/web/input_box/inputbox.js
src/echotools/media/web/input_box/style.css
src/echotools/media/web/input_box/voicegif.js
src/echotools/media/web/input_box/components/filezone.js
src/echotools/media/web/input_box/components/motionkit.js
src/echotools/media/web/input_box/components/sendbutton.js
src/echotools/media/web/input_box/components/sortablelist.css
src/echotools/media/web/input_box/components/sortablelist.js
src/echotools/media/web/input_box/components/textinput.js
src/echotools/media/web/input_box/components/voiceinput.js
src/echotools/media/web/input_box/fonts/inter-500.woff2
src/echotools/media/web/input_box/fonts/inter-600.woff2
src/echotools/media/web/input_box/fonts/inter400.woff2
src/echotools/media/web/input_box/fonts/tailwind.css
src/echotools/plat/files/__init__.py
src/echotools/plat/files/file_util.py
src/echotools/plat/network/__init__.py
src/echotools/plat/network/http_utils.py
src/echotools/plat/plugin/__init__.py
src/echotools/plat/plugin/base.py
src/echotools/plat/plugin/discovery.py
src/echotools/plat/plugin/registry.py
src/echotools/plat/plugin/registry_ops.py
src/echotools/plat/proxy/__init__.py
src/echotools/plat/proxy/manager.py
src/echotools/plat/runtime/__init__.py
src/echotools/plat/runtime/collector.py
src/echotools/plat/scheduler/__init__.py
src/echotools/plat/scheduler/scheduler.py
src/echotools/plat/sdk/__init__.py
src/echotools/plat/sdk/facade.py
src/tests/bench_import.py
src/tests/conftest.py
src/tests/test_cache_retry.py
src/tests/test_completion.py
src/tests/test_config.py
src/tests/test_config_extended.py
src/tests/test_console.py
src/tests/test_coverage_core.py
src/tests/test_dispatch.py
src/tests/test_dispatch_extended.py
src/tests/test_dispatch_race.py
src/tests/test_entml_protocol.py
src/tests/test_entml_thinking_history.py
src/tests/test_entml_thinking_parse.py
src/tests/test_entml_tools.py
src/tests/test_errors.py
src/tests/test_errors_common.py
src/tests/test_events.py
src/tests/test_events_event.py
src/tests/test_facade.py
src/tests/test_fncall.py
src/tests/test_ids.py
src/tests/test_imports.py
src/tests/test_io.py
src/tests/test_keys.py
src/tests/test_lifecycle.py
src/tests/test_logger.py
src/tests/test_merge.py
src/tests/test_plugin.py
src/tests/test_printstream.py
src/tests/test_protocols.py
src/tests/test_proxy.py
src/tests/test_proxy_selector.py
src/tests/test_runtime.py
src/tests/test_scheduler.py
src/tests/test_tracing.py
src/tests/test_usage.py
src/tests/test_web.py
src/tests/test_web_broker.py