echotools 2.3.42__tar.gz → 2.3.43__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.42 → echotools-2.3.43}/PKG-INFO +1 -1
- {echotools-2.3.42 → echotools-2.3.43}/pyproject.toml +1 -1
- {echotools-2.3.42 → echotools-2.3.43}/src/echotools/exec/fncall/protocols/entml_think/core.py +21 -10
- {echotools-2.3.42 → echotools-2.3.43}/src/echotools.egg-info/PKG-INFO +1 -1
- {echotools-2.3.42 → echotools-2.3.43}/src/tests/test_entml_protocol.py +17 -11
- {echotools-2.3.42 → echotools-2.3.43}/README.md +0 -0
- {echotools-2.3.42 → echotools-2.3.43}/docs/README.md +0 -0
- {echotools-2.3.42 → echotools-2.3.43}/setup.cfg +0 -0
- {echotools-2.3.42 → echotools-2.3.43}/src/echotools/__init__.py +0 -0
- {echotools-2.3.42 → echotools-2.3.43}/src/echotools/base/cache/__init__.py +0 -0
- {echotools-2.3.42 → echotools-2.3.43}/src/echotools/base/cache/list_cache.py +0 -0
- {echotools-2.3.42 → echotools-2.3.43}/src/echotools/base/cache/memory_cache.py +0 -0
- {echotools-2.3.42 → echotools-2.3.43}/src/echotools/base/config/__init__.py +0 -0
- {echotools-2.3.42 → echotools-2.3.43}/src/echotools/base/config/base.py +0 -0
- {echotools-2.3.42 → echotools-2.3.43}/src/echotools/base/config/center.py +0 -0
- {echotools-2.3.42 → echotools-2.3.43}/src/echotools/base/config/center_notify.py +0 -0
- {echotools-2.3.42 → echotools-2.3.43}/src/echotools/base/config/center_template.py +0 -0
- {echotools-2.3.42 → echotools-2.3.43}/src/echotools/base/config/loader.py +0 -0
- {echotools-2.3.42 → echotools-2.3.43}/src/echotools/base/config/merge.py +0 -0
- {echotools-2.3.42 → echotools-2.3.43}/src/echotools/base/errors/__init__.py +0 -0
- {echotools-2.3.42 → echotools-2.3.43}/src/echotools/base/errors/base.py +0 -0
- {echotools-2.3.42 → echotools-2.3.43}/src/echotools/base/errors/classify.py +0 -0
- {echotools-2.3.42 → echotools-2.3.43}/src/echotools/base/errors/common.py +0 -0
- {echotools-2.3.42 → echotools-2.3.43}/src/echotools/base/errors/http.py +0 -0
- {echotools-2.3.42 → echotools-2.3.43}/src/echotools/base/ids/__init__.py +0 -0
- {echotools-2.3.42 → echotools-2.3.43}/src/echotools/base/ids/generator.py +0 -0
- {echotools-2.3.42 → echotools-2.3.43}/src/echotools/base/io/__init__.py +0 -0
- {echotools-2.3.42 → echotools-2.3.43}/src/echotools/base/io/io_utils.py +0 -0
- {echotools-2.3.42 → echotools-2.3.43}/src/echotools/base/io/printstream.py +0 -0
- {echotools-2.3.42 → echotools-2.3.43}/src/echotools/base/logger/__init__.py +0 -0
- {echotools-2.3.42 → echotools-2.3.43}/src/echotools/base/logger/manager.py +0 -0
- {echotools-2.3.42 → echotools-2.3.43}/src/echotools/base/retry/__init__.py +0 -0
- {echotools-2.3.42 → echotools-2.3.43}/src/echotools/base/retry/retry.py +0 -0
- {echotools-2.3.42 → echotools-2.3.43}/src/echotools/compat.py +0 -0
- {echotools-2.3.42 → echotools-2.3.43}/src/echotools/exec/dispatch/__init__.py +0 -0
- {echotools-2.3.42 → echotools-2.3.43}/src/echotools/exec/dispatch/candidate.py +0 -0
- {echotools-2.3.42 → echotools-2.3.43}/src/echotools/exec/dispatch/dispatcher.py +0 -0
- {echotools-2.3.42 → echotools-2.3.43}/src/echotools/exec/dispatch/proxy_selector.py +0 -0
- {echotools-2.3.42 → echotools-2.3.43}/src/echotools/exec/dispatch/race.py +0 -0
- {echotools-2.3.42 → echotools-2.3.43}/src/echotools/exec/dispatch/selector.py +0 -0
- {echotools-2.3.42 → echotools-2.3.43}/src/echotools/exec/dispatch/usage.py +0 -0
- {echotools-2.3.42 → echotools-2.3.43}/src/echotools/exec/fncall/__init__.py +0 -0
- {echotools-2.3.42 → echotools-2.3.43}/src/echotools/exec/fncall/parsers/__init__.py +0 -0
- {echotools-2.3.42 → echotools-2.3.43}/src/echotools/exec/fncall/parsers/stream.py +0 -0
- {echotools-2.3.42 → echotools-2.3.43}/src/echotools/exec/fncall/parsers/xml_params.py +0 -0
- {echotools-2.3.42 → echotools-2.3.43}/src/echotools/exec/fncall/parsers/xml_parser.py +0 -0
- {echotools-2.3.42 → echotools-2.3.43}/src/echotools/exec/fncall/prompt/__init__.py +0 -0
- {echotools-2.3.42 → echotools-2.3.43}/src/echotools/exec/fncall/prompt/history.py +0 -0
- {echotools-2.3.42 → echotools-2.3.43}/src/echotools/exec/fncall/prompt/history_format.py +0 -0
- {echotools-2.3.42 → echotools-2.3.43}/src/echotools/exec/fncall/prompt/inject.py +0 -0
- {echotools-2.3.42 → echotools-2.3.43}/src/echotools/exec/fncall/prompt/prompt_helpers.py +0 -0
- {echotools-2.3.42 → echotools-2.3.43}/src/echotools/exec/fncall/prompt/templates.py +0 -0
- {echotools-2.3.42 → echotools-2.3.43}/src/echotools/exec/fncall/protocols/__init__.py +0 -0
- {echotools-2.3.42 → echotools-2.3.43}/src/echotools/exec/fncall/protocols/entml.py +0 -0
- {echotools-2.3.42 → echotools-2.3.43}/src/echotools/exec/fncall/protocols/entml_invoke.py +0 -0
- {echotools-2.3.42 → echotools-2.3.43}/src/echotools/exec/fncall/protocols/entml_patterns.py +0 -0
- {echotools-2.3.42 → echotools-2.3.43}/src/echotools/exec/fncall/protocols/entml_think/__init__.py +0 -0
- {echotools-2.3.42 → echotools-2.3.43}/src/echotools/exec/fncall/protocols/entml_think/hist.py +0 -0
- {echotools-2.3.42 → echotools-2.3.43}/src/echotools/exec/fncall/protocols/entml_think/parse.py +0 -0
- {echotools-2.3.42 → echotools-2.3.43}/src/echotools/exec/fncall/protocols/entml_tools.py +0 -0
- {echotools-2.3.42 → echotools-2.3.43}/src/echotools/exec/fncall/protocols/entml_values.py +0 -0
- {echotools-2.3.42 → echotools-2.3.43}/src/echotools/exec/fncall/registry.py +0 -0
- {echotools-2.3.42 → echotools-2.3.43}/src/echotools/exec/fncall/shared/__init__.py +0 -0
- {echotools-2.3.42 → echotools-2.3.43}/src/echotools/exec/fncall/shared/coercion.py +0 -0
- {echotools-2.3.42 → echotools-2.3.43}/src/echotools/exec/fncall/shared/loop_detect.py +0 -0
- {echotools-2.3.42 → echotools-2.3.43}/src/echotools/exec/fncall/shared/normalization.py +0 -0
- {echotools-2.3.42 → echotools-2.3.43}/src/echotools/exec/fncall/shared/schema_render.py +0 -0
- {echotools-2.3.42 → echotools-2.3.43}/src/echotools/exec/fncall/shared/xml_helpers.py +0 -0
- {echotools-2.3.42 → echotools-2.3.43}/src/echotools/exec/keys.py +0 -0
- {echotools-2.3.42 → echotools-2.3.43}/src/echotools/exec/lifecycle/__init__.py +0 -0
- {echotools-2.3.42 → echotools-2.3.43}/src/echotools/exec/lifecycle/manager.py +0 -0
- {echotools-2.3.42 → echotools-2.3.43}/src/echotools/exec/lifecycle/updater.py +0 -0
- {echotools-2.3.42 → echotools-2.3.43}/src/echotools/exec/lifecycle/updater_pull.py +0 -0
- {echotools-2.3.42 → echotools-2.3.43}/src/echotools/exec/process/__init__.py +0 -0
- {echotools-2.3.42 → echotools-2.3.43}/src/echotools/exec/process/port.py +0 -0
- {echotools-2.3.42 → echotools-2.3.43}/src/echotools/exec/protocol/__init__.py +0 -0
- {echotools-2.3.42 → echotools-2.3.43}/src/echotools/exec/protocol/base.py +0 -0
- {echotools-2.3.42 → echotools-2.3.43}/src/echotools/exec/terminal/__init__.py +0 -0
- {echotools-2.3.42 → echotools-2.3.43}/src/echotools/exec/terminal/conpty.py +0 -0
- {echotools-2.3.42 → echotools-2.3.43}/src/echotools/exec/terminal/local/__init__.py +0 -0
- {echotools-2.3.42 → echotools-2.3.43}/src/echotools/exec/terminal/local/core.py +0 -0
- {echotools-2.3.42 → echotools-2.3.43}/src/echotools/exec/terminal/local/proc.py +0 -0
- {echotools-2.3.42 → echotools-2.3.43}/src/echotools/exec/terminal/local/unix.py +0 -0
- {echotools-2.3.42 → echotools-2.3.43}/src/echotools/exec/terminal/local/win.py +0 -0
- {echotools-2.3.42 → echotools-2.3.43}/src/echotools/exec/terminal/sanitize.py +0 -0
- {echotools-2.3.42 → echotools-2.3.43}/src/echotools/exec/terminal/session/__init__.py +0 -0
- {echotools-2.3.42 → echotools-2.3.43}/src/echotools/exec/terminal/session/base.py +0 -0
- {echotools-2.3.42 → echotools-2.3.43}/src/echotools/exec/terminal/session/client.py +0 -0
- {echotools-2.3.42 → echotools-2.3.43}/src/echotools/exec/terminal/ssh.py +0 -0
- {echotools-2.3.42 → echotools-2.3.43}/src/echotools/exec/terminal/tmux.py +0 -0
- {echotools-2.3.42 → echotools-2.3.43}/src/echotools/media/console/__init__.py +0 -0
- {echotools-2.3.42 → echotools-2.3.43}/src/echotools/media/console/charmap.py +0 -0
- {echotools-2.3.42 → echotools-2.3.43}/src/echotools/media/console/spinner.py +0 -0
- {echotools-2.3.42 → echotools-2.3.43}/src/echotools/media/console/ui.py +0 -0
- {echotools-2.3.42 → echotools-2.3.43}/src/echotools/media/events/__init__.py +0 -0
- {echotools-2.3.42 → echotools-2.3.43}/src/echotools/media/events/bus.py +0 -0
- {echotools-2.3.42 → echotools-2.3.43}/src/echotools/media/events/event.py +0 -0
- {echotools-2.3.42 → echotools-2.3.43}/src/echotools/media/spinner/__init__.py +0 -0
- {echotools-2.3.42 → echotools-2.3.43}/src/echotools/media/spinner/spinner.py +0 -0
- {echotools-2.3.42 → echotools-2.3.43}/src/echotools/media/spinner/spinner_color.py +0 -0
- {echotools-2.3.42 → echotools-2.3.43}/src/echotools/media/tracing/__init__.py +0 -0
- {echotools-2.3.42 → echotools-2.3.43}/src/echotools/media/tracing/context.py +0 -0
- {echotools-2.3.42 → echotools-2.3.43}/src/echotools/media/tracing/span.py +0 -0
- {echotools-2.3.42 → echotools-2.3.43}/src/echotools/media/tracing/tracer.py +0 -0
- {echotools-2.3.42 → echotools-2.3.43}/src/echotools/media/translate.py +0 -0
- {echotools-2.3.42 → echotools-2.3.43}/src/echotools/media/watcher/__init__.py +0 -0
- {echotools-2.3.42 → echotools-2.3.43}/src/echotools/media/watcher/file_watcher.py +0 -0
- {echotools-2.3.42 → echotools-2.3.43}/src/echotools/media/web/__init__.py +0 -0
- {echotools-2.3.42 → echotools-2.3.43}/src/echotools/media/web/application.py +0 -0
- {echotools-2.3.42 → echotools-2.3.43}/src/echotools/media/web/broker.py +0 -0
- {echotools-2.3.42 → echotools-2.3.43}/src/echotools/media/web/input_box/app.js +0 -0
- {echotools-2.3.42 → echotools-2.3.43}/src/echotools/media/web/input_box/components/filezone.js +0 -0
- {echotools-2.3.42 → echotools-2.3.43}/src/echotools/media/web/input_box/components/motionkit.js +0 -0
- {echotools-2.3.42 → echotools-2.3.43}/src/echotools/media/web/input_box/components/sendbutton.js +0 -0
- {echotools-2.3.42 → echotools-2.3.43}/src/echotools/media/web/input_box/components/sortablelist.css +0 -0
- {echotools-2.3.42 → echotools-2.3.43}/src/echotools/media/web/input_box/components/sortablelist.js +0 -0
- {echotools-2.3.42 → echotools-2.3.43}/src/echotools/media/web/input_box/components/textinput.js +0 -0
- {echotools-2.3.42 → echotools-2.3.43}/src/echotools/media/web/input_box/components/voiceinput.js +0 -0
- {echotools-2.3.42 → echotools-2.3.43}/src/echotools/media/web/input_box/fonts/inter-500.woff2 +0 -0
- {echotools-2.3.42 → echotools-2.3.43}/src/echotools/media/web/input_box/fonts/inter-600.woff2 +0 -0
- {echotools-2.3.42 → echotools-2.3.43}/src/echotools/media/web/input_box/fonts/inter400.woff2 +0 -0
- {echotools-2.3.42 → echotools-2.3.43}/src/echotools/media/web/input_box/fonts/tailwind.css +0 -0
- {echotools-2.3.42 → echotools-2.3.43}/src/echotools/media/web/input_box/inputbox.css +0 -0
- {echotools-2.3.42 → echotools-2.3.43}/src/echotools/media/web/input_box/inputbox.js +0 -0
- {echotools-2.3.42 → echotools-2.3.43}/src/echotools/media/web/input_box/style.css +0 -0
- {echotools-2.3.42 → echotools-2.3.43}/src/echotools/media/web/input_box/voicegif.js +0 -0
- {echotools-2.3.42 → echotools-2.3.43}/src/echotools/media/web/middleware.py +0 -0
- {echotools-2.3.42 → echotools-2.3.43}/src/echotools/media/web/stats.py +0 -0
- {echotools-2.3.42 → echotools-2.3.43}/src/echotools/media/web/utils.py +0 -0
- {echotools-2.3.42 → echotools-2.3.43}/src/echotools/plat/files/__init__.py +0 -0
- {echotools-2.3.42 → echotools-2.3.43}/src/echotools/plat/files/file_util.py +0 -0
- {echotools-2.3.42 → echotools-2.3.43}/src/echotools/plat/network/__init__.py +0 -0
- {echotools-2.3.42 → echotools-2.3.43}/src/echotools/plat/network/http_utils.py +0 -0
- {echotools-2.3.42 → echotools-2.3.43}/src/echotools/plat/plugin/__init__.py +0 -0
- {echotools-2.3.42 → echotools-2.3.43}/src/echotools/plat/plugin/base.py +0 -0
- {echotools-2.3.42 → echotools-2.3.43}/src/echotools/plat/plugin/discovery.py +0 -0
- {echotools-2.3.42 → echotools-2.3.43}/src/echotools/plat/plugin/registry.py +0 -0
- {echotools-2.3.42 → echotools-2.3.43}/src/echotools/plat/plugin/registry_ops.py +0 -0
- {echotools-2.3.42 → echotools-2.3.43}/src/echotools/plat/proxy/__init__.py +0 -0
- {echotools-2.3.42 → echotools-2.3.43}/src/echotools/plat/proxy/manager.py +0 -0
- {echotools-2.3.42 → echotools-2.3.43}/src/echotools/plat/runtime/__init__.py +0 -0
- {echotools-2.3.42 → echotools-2.3.43}/src/echotools/plat/runtime/collector.py +0 -0
- {echotools-2.3.42 → echotools-2.3.43}/src/echotools/plat/scheduler/__init__.py +0 -0
- {echotools-2.3.42 → echotools-2.3.43}/src/echotools/plat/scheduler/scheduler.py +0 -0
- {echotools-2.3.42 → echotools-2.3.43}/src/echotools/plat/sdk/__init__.py +0 -0
- {echotools-2.3.42 → echotools-2.3.43}/src/echotools/plat/sdk/facade.py +0 -0
- {echotools-2.3.42 → echotools-2.3.43}/src/echotools/version.py +0 -0
- {echotools-2.3.42 → echotools-2.3.43}/src/echotools.egg-info/SOURCES.txt +0 -0
- {echotools-2.3.42 → echotools-2.3.43}/src/echotools.egg-info/dependency_links.txt +0 -0
- {echotools-2.3.42 → echotools-2.3.43}/src/echotools.egg-info/requires.txt +0 -0
- {echotools-2.3.42 → echotools-2.3.43}/src/echotools.egg-info/top_level.txt +0 -0
- {echotools-2.3.42 → echotools-2.3.43}/src/tests/bench_import.py +0 -0
- {echotools-2.3.42 → echotools-2.3.43}/src/tests/conftest.py +0 -0
- {echotools-2.3.42 → echotools-2.3.43}/src/tests/test_cache_retry.py +0 -0
- {echotools-2.3.42 → echotools-2.3.43}/src/tests/test_completion.py +0 -0
- {echotools-2.3.42 → echotools-2.3.43}/src/tests/test_config.py +0 -0
- {echotools-2.3.42 → echotools-2.3.43}/src/tests/test_config_extended.py +0 -0
- {echotools-2.3.42 → echotools-2.3.43}/src/tests/test_console.py +0 -0
- {echotools-2.3.42 → echotools-2.3.43}/src/tests/test_coverage_core.py +0 -0
- {echotools-2.3.42 → echotools-2.3.43}/src/tests/test_dispatch.py +0 -0
- {echotools-2.3.42 → echotools-2.3.43}/src/tests/test_dispatch_extended.py +0 -0
- {echotools-2.3.42 → echotools-2.3.43}/src/tests/test_dispatch_race.py +0 -0
- {echotools-2.3.42 → echotools-2.3.43}/src/tests/test_entml_thinking_history.py +0 -0
- {echotools-2.3.42 → echotools-2.3.43}/src/tests/test_entml_thinking_parse.py +0 -0
- {echotools-2.3.42 → echotools-2.3.43}/src/tests/test_entml_tools.py +0 -0
- {echotools-2.3.42 → echotools-2.3.43}/src/tests/test_errors.py +0 -0
- {echotools-2.3.42 → echotools-2.3.43}/src/tests/test_errors_common.py +0 -0
- {echotools-2.3.42 → echotools-2.3.43}/src/tests/test_events.py +0 -0
- {echotools-2.3.42 → echotools-2.3.43}/src/tests/test_events_event.py +0 -0
- {echotools-2.3.42 → echotools-2.3.43}/src/tests/test_facade.py +0 -0
- {echotools-2.3.42 → echotools-2.3.43}/src/tests/test_fncall.py +0 -0
- {echotools-2.3.42 → echotools-2.3.43}/src/tests/test_fncall_stream_thinking.py +0 -0
- {echotools-2.3.42 → echotools-2.3.43}/src/tests/test_ids.py +0 -0
- {echotools-2.3.42 → echotools-2.3.43}/src/tests/test_imports.py +0 -0
- {echotools-2.3.42 → echotools-2.3.43}/src/tests/test_io.py +0 -0
- {echotools-2.3.42 → echotools-2.3.43}/src/tests/test_keys.py +0 -0
- {echotools-2.3.42 → echotools-2.3.43}/src/tests/test_lifecycle.py +0 -0
- {echotools-2.3.42 → echotools-2.3.43}/src/tests/test_logger.py +0 -0
- {echotools-2.3.42 → echotools-2.3.43}/src/tests/test_merge.py +0 -0
- {echotools-2.3.42 → echotools-2.3.43}/src/tests/test_plugin.py +0 -0
- {echotools-2.3.42 → echotools-2.3.43}/src/tests/test_printstream.py +0 -0
- {echotools-2.3.42 → echotools-2.3.43}/src/tests/test_protocols.py +0 -0
- {echotools-2.3.42 → echotools-2.3.43}/src/tests/test_proxy.py +0 -0
- {echotools-2.3.42 → echotools-2.3.43}/src/tests/test_proxy_selector.py +0 -0
- {echotools-2.3.42 → echotools-2.3.43}/src/tests/test_runtime.py +0 -0
- {echotools-2.3.42 → echotools-2.3.43}/src/tests/test_scheduler.py +0 -0
- {echotools-2.3.42 → echotools-2.3.43}/src/tests/test_tracing.py +0 -0
- {echotools-2.3.42 → echotools-2.3.43}/src/tests/test_usage.py +0 -0
- {echotools-2.3.42 → echotools-2.3.43}/src/tests/test_web.py +0 -0
- {echotools-2.3.42 → echotools-2.3.43}/src/tests/test_web_broker.py +0 -0
{echotools-2.3.42 → echotools-2.3.43}/src/echotools/exec/fncall/protocols/entml_think/core.py
RENAMED
|
@@ -53,11 +53,11 @@ _INJECTION_MODE_ALIASES: Dict[str, str] = {
|
|
|
53
53
|
}
|
|
54
54
|
|
|
55
55
|
_DEFAULT_MAX_BY_LEVEL: Dict[str, int] = {
|
|
56
|
-
"low":
|
|
57
|
-
"medium":
|
|
58
|
-
"high":
|
|
59
|
-
"xhigh":
|
|
60
|
-
"max":
|
|
56
|
+
"low": 12800,
|
|
57
|
+
"medium": 25600,
|
|
58
|
+
"high": 64000,
|
|
59
|
+
"xhigh": 102400,
|
|
60
|
+
"max": 134736,
|
|
61
61
|
}
|
|
62
62
|
|
|
63
63
|
_LEGACY_ON_DEFAULT_MAX = _DEFAULT_MAX_BY_LEVEL["medium"]
|
|
@@ -120,9 +120,12 @@ def parse_max_thinking_length(value: Any) -> Optional[int]:
|
|
|
120
120
|
def resolve_thinking_injection(
|
|
121
121
|
protocol_options: Optional[Dict[str, Any]] = None,
|
|
122
122
|
) -> Optional[Tuple[str, Optional[int]]]:
|
|
123
|
-
"""解析注入用 thinking_mode
|
|
123
|
+
"""解析注入用 thinking_mode 与 max_thinking_length。
|
|
124
124
|
|
|
125
|
-
|
|
125
|
+
- thinking_level 为 low|medium|high|xhigh|max 时,thinking_mode 直接传该挡位名。
|
|
126
|
+
- 仅 thinking_mode=on(无 level)时用 ``on``,并按 medium 默认长度。
|
|
127
|
+
- auto 传 ``auto``,无默认 max_thinking_length。
|
|
128
|
+
- none / off 返回 None,不注入任何思考相关内容。
|
|
126
129
|
"""
|
|
127
130
|
opts = protocol_options or {}
|
|
128
131
|
|
|
@@ -130,8 +133,12 @@ def resolve_thinking_injection(
|
|
|
130
133
|
if level is not None:
|
|
131
134
|
if level == "none":
|
|
132
135
|
return None
|
|
133
|
-
|
|
134
|
-
|
|
136
|
+
if level == "auto":
|
|
137
|
+
injection_mode = "auto"
|
|
138
|
+
default_max = None
|
|
139
|
+
else:
|
|
140
|
+
injection_mode = level
|
|
141
|
+
default_max = default_max_thinking_length_for_level(level)
|
|
135
142
|
else:
|
|
136
143
|
mode = normalize_thinking_mode(opts.get("thinking_mode"))
|
|
137
144
|
if mode is None or mode == "off":
|
|
@@ -144,8 +151,12 @@ def resolve_thinking_injection(
|
|
|
144
151
|
return injection_mode, max_length
|
|
145
152
|
|
|
146
153
|
|
|
154
|
+
def _uses_forced_thinking_behavior(injection_mode: str) -> bool:
|
|
155
|
+
return injection_mode != "auto"
|
|
156
|
+
|
|
157
|
+
|
|
147
158
|
def _format_thinking_behavior(injection_mode: str) -> str:
|
|
148
|
-
body = _THINKING_BEHAVIOR_ON if injection_mode
|
|
159
|
+
body = _THINKING_BEHAVIOR_ON if _uses_forced_thinking_behavior(injection_mode) else _THINKING_BEHAVIOR_AUTO
|
|
149
160
|
return f"<thinking_behavior>\n{body}\n</thinking_behavior>"
|
|
150
161
|
|
|
151
162
|
|
|
@@ -128,11 +128,11 @@ def test_normalize_thinking_level(raw, expected) -> None:
|
|
|
128
128
|
@pytest.mark.parametrize(
|
|
129
129
|
"level,expected",
|
|
130
130
|
[
|
|
131
|
-
("low",
|
|
132
|
-
("medium",
|
|
133
|
-
("high",
|
|
134
|
-
("xhigh",
|
|
135
|
-
("max",
|
|
131
|
+
("low", 12800),
|
|
132
|
+
("medium", 25600),
|
|
133
|
+
("high", 64000),
|
|
134
|
+
("xhigh", 102400),
|
|
135
|
+
("max", 134736),
|
|
136
136
|
("none", None),
|
|
137
137
|
("auto", None),
|
|
138
138
|
],
|
|
@@ -143,13 +143,13 @@ def test_default_max_thinking_length_for_level(level, expected) -> None:
|
|
|
143
143
|
|
|
144
144
|
def test_resolve_thinking_injection_levels() -> None:
|
|
145
145
|
assert resolve_thinking_injection({"thinking_level": "none"}) is None
|
|
146
|
-
assert resolve_thinking_injection({"thinking_level": "low"}) == ("
|
|
147
|
-
assert resolve_thinking_injection({"thinking_level": "high"}) == ("
|
|
146
|
+
assert resolve_thinking_injection({"thinking_level": "low"}) == ("low", 12800)
|
|
147
|
+
assert resolve_thinking_injection({"thinking_level": "high"}) == ("high", 64000)
|
|
148
148
|
assert resolve_thinking_injection({"thinking_level": "auto"}) == ("auto", None)
|
|
149
149
|
assert resolve_thinking_injection({
|
|
150
150
|
"thinking_level": "max",
|
|
151
151
|
"max_thinking_length": 1000,
|
|
152
|
-
}) == ("
|
|
152
|
+
}) == ("max", 1000)
|
|
153
153
|
|
|
154
154
|
|
|
155
155
|
def test_thinking_prompt_off() -> None:
|
|
@@ -163,18 +163,24 @@ def test_thinking_prompt_off() -> None:
|
|
|
163
163
|
def test_thinking_prompt_on_without_max_length() -> None:
|
|
164
164
|
section = build_entml_thinking_section({"thinking_mode": "on"})
|
|
165
165
|
assert "<entml:thinking_mode>on</entml:thinking_mode>" in section
|
|
166
|
-
assert "<entml:max_thinking_length>
|
|
166
|
+
assert "<entml:max_thinking_length>25600</entml:max_thinking_length>" in section
|
|
167
167
|
assert "<thinking_behavior>" in section
|
|
168
168
|
|
|
169
169
|
|
|
170
170
|
def test_thinking_prompt_on_by_level() -> None:
|
|
171
171
|
section = build_entml_thinking_section({"thinking_level": "low"})
|
|
172
|
-
assert "<entml:thinking_mode>
|
|
173
|
-
assert "<entml:max_thinking_length>
|
|
172
|
+
assert "<entml:thinking_mode>low</entml:thinking_mode>" in section
|
|
173
|
+
assert "<entml:max_thinking_length>12800</entml:max_thinking_length>" in section
|
|
174
174
|
assert "Never skip the thinking block" in section
|
|
175
175
|
assert "Your default is to think before it answers" in section
|
|
176
176
|
|
|
177
177
|
|
|
178
|
+
def test_thinking_prompt_medium_by_level() -> None:
|
|
179
|
+
section = build_entml_thinking_section({"thinking_level": "medium"})
|
|
180
|
+
assert "<entml:thinking_mode>medium</entml:thinking_mode>" in section
|
|
181
|
+
assert "<entml:max_thinking_length>25600</entml:max_thinking_length>" in section
|
|
182
|
+
|
|
183
|
+
|
|
178
184
|
def test_thinking_prompt_on() -> None:
|
|
179
185
|
section = build_entml_thinking_section({"thinking_mode": "on"})
|
|
180
186
|
assert "<entml:thinking_mode>on</entml:thinking_mode>" in section
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
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.42 → echotools-2.3.43}/src/echotools/exec/fncall/protocols/entml_think/__init__.py
RENAMED
|
File without changes
|
{echotools-2.3.42 → echotools-2.3.43}/src/echotools/exec/fncall/protocols/entml_think/hist.py
RENAMED
|
File without changes
|
{echotools-2.3.42 → echotools-2.3.43}/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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
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.42 → echotools-2.3.43}/src/echotools/media/web/input_box/components/filezone.js
RENAMED
|
File without changes
|
{echotools-2.3.42 → echotools-2.3.43}/src/echotools/media/web/input_box/components/motionkit.js
RENAMED
|
File without changes
|
{echotools-2.3.42 → echotools-2.3.43}/src/echotools/media/web/input_box/components/sendbutton.js
RENAMED
|
File without changes
|
{echotools-2.3.42 → echotools-2.3.43}/src/echotools/media/web/input_box/components/sortablelist.css
RENAMED
|
File without changes
|
{echotools-2.3.42 → echotools-2.3.43}/src/echotools/media/web/input_box/components/sortablelist.js
RENAMED
|
File without changes
|
{echotools-2.3.42 → echotools-2.3.43}/src/echotools/media/web/input_box/components/textinput.js
RENAMED
|
File without changes
|
{echotools-2.3.42 → echotools-2.3.43}/src/echotools/media/web/input_box/components/voiceinput.js
RENAMED
|
File without changes
|
{echotools-2.3.42 → echotools-2.3.43}/src/echotools/media/web/input_box/fonts/inter-500.woff2
RENAMED
|
File without changes
|
{echotools-2.3.42 → echotools-2.3.43}/src/echotools/media/web/input_box/fonts/inter-600.woff2
RENAMED
|
File without changes
|
{echotools-2.3.42 → echotools-2.3.43}/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
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|