geny-executor 2.40.0__tar.gz → 2.42.0__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.
- {geny_executor-2.40.0 → geny_executor-2.42.0}/PKG-INFO +1 -1
- {geny_executor-2.40.0 → geny_executor-2.42.0}/pyproject.toml +1 -1
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/core/environment.py +15 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/core/pipeline.py +95 -4
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/stages/s01_input/artifact/default/normalizers.py +23 -12
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/stages/s01_input/types.py +17 -3
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/stages/s03_system/artifact/default/stage.py +13 -3
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/stages/s10_tool/artifact/default/stage.py +3 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/tools/base.py +6 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/tools/built_in/__init__.py +17 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/tools/built_in/tool_search_tool.py +115 -44
- geny_executor-2.42.0/src/geny_executor/tools/built_in/workspace_tools.py +336 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/tools/provider.py +11 -2
- geny_executor-2.42.0/src/geny_executor/tools/registry.py +225 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/unit/test_adhoc_providers.py +15 -4
- geny_executor-2.42.0/tests/unit/test_core_deferred_tools.py +463 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/unit/test_mcp_lifecycle.py +6 -3
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/unit/test_skill_tool.py +3 -1
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/unit/test_tool_provider.py +3 -2
- geny_executor-2.42.0/tests/unit/test_workspace_tools.py +153 -0
- geny_executor-2.40.0/src/geny_executor/tools/registry.py +0 -101
- {geny_executor-2.40.0 → geny_executor-2.42.0}/.gitignore +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/LICENSE +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/NOTICE +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/README.md +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/README_ko.md +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/__init__.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/channels/__init__.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/channels/built_in.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/channels/factory.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/channels/send_message_channel.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/channels/user_file_channel.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/core/__init__.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/core/artifact.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/core/builder.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/core/compaction.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/core/config.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/core/diff.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/core/environment_control.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/core/errors.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/core/introspection.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/core/manifest_factory.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/core/mutation.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/core/presets.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/core/result.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/core/schema.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/core/shared_keys.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/core/slot.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/core/snapshot.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/core/stage.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/core/state.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/core/token_estimate.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/cron/__init__.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/cron/runner.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/cron/store_abc.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/cron/store_impl/__init__.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/cron/store_impl/file_backed.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/cron/store_impl/in_memory.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/cron/types.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/events/__init__.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/events/bus.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/events/catalog.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/events/types.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/gateway/__init__.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/gateway/adapter.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/gateway/discord.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/gateway/factory.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/gateway/runner.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/gateway/slack.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/gateway/telegram.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/gateway/types.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/gateway/ws_base.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/history/__init__.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/history/ab_test.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/history/cost.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/history/models.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/history/monitor.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/history/replay.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/history/service.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/hooks/__init__.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/hooks/config.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/hooks/events.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/hooks/runner.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/llm_client/__init__.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/llm_client/_cli_runtime.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/llm_client/anthropic.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/llm_client/base.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/llm_client/claude_code.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/llm_client/credentials.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/llm_client/google.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/llm_client/local_probe.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/llm_client/model_discovery.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/llm_client/openai.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/llm_client/openai_compatible.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/llm_client/profiles.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/llm_client/registry.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/llm_client/translators/__init__.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/llm_client/translators/_canonical.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/llm_client/translators/_cli.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/llm_client/types.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/llm_client/vllm.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/memory/__init__.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/memory/_locks.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/memory/_progressive.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/memory/composite/__init__.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/memory/composite/handles.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/memory/composite/provider.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/memory/composite/routing.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/memory/composite/snapshot.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/memory/embedding/__init__.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/memory/embedding/client.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/memory/embedding/google.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/memory/embedding/local.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/memory/embedding/openai.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/memory/embedding/registry.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/memory/embedding/voyage.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/memory/factory.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/memory/graph_rank.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/memory/presets.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/memory/provider.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/memory/providers/__init__.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/memory/providers/ephemeral.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/memory/providers/file/__init__.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/memory/providers/file/config.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/memory/providers/file/frontmatter.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/memory/providers/file/graph_edges.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/memory/providers/file/index_store.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/memory/providers/file/layout.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/memory/providers/file/ltm_store.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/memory/providers/file/notes_store.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/memory/providers/file/provider.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/memory/providers/file/snapshot.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/memory/providers/file/stm_store.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/memory/providers/file/timezone.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/memory/providers/file/vector_store.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/memory/providers/sql/__init__.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/memory/providers/sql/config.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/memory/providers/sql/connection.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/memory/providers/sql/index_store.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/memory/providers/sql/ltm_store.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/memory/providers/sql/notes_store.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/memory/providers/sql/provider.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/memory/providers/sql/schema.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/memory/providers/sql/snapshot.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/memory/providers/sql/stm_store.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/memory/providers/sql/vector_store.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/memory/retriever.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/memory/rollup.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/memory/strategy.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/notifications/__init__.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/notifications/registry.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/permission/__init__.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/permission/loader.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/permission/matrix.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/permission/types.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/py.typed +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/runtime/__init__.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/runtime/task_executors.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/runtime/task_runner.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/security/__init__.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/security/import_validator.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/security/script_sandbox.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/session/__init__.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/session/freshness.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/session/manager.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/session/persistence.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/session/session.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/settings/__init__.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/settings/loader.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/settings/section_registry.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/skills/__init__.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/skills/bundled/batch/SKILL.md +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/skills/bundled/debug/SKILL.md +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/skills/bundled/environment/REFERENCE.md +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/skills/bundled/environment/SKILL.md +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/skills/bundled/loop/SKILL.md +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/skills/bundled/lorem-ipsum/SKILL.md +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/skills/bundled/simplify/SKILL.md +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/skills/bundled/skillify/SKILL.md +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/skills/bundled/stuck/SKILL.md +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/skills/bundled/tool-builder/REFERENCE.md +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/skills/bundled/tool-builder/SKILL.md +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/skills/bundled/verify/SKILL.md +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/skills/bundled_skills.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/skills/fork.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/skills/frontmatter.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/skills/loader.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/skills/mcp_bridge.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/skills/path_match.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/skills/registry.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/skills/shell_blocks.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/skills/skill_tool.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/skills/types.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/skills/watcher.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/slash_commands/__init__.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/slash_commands/built_in/__init__.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/slash_commands/built_in/_helpers.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/slash_commands/built_in/cancel.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/slash_commands/built_in/clear.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/slash_commands/built_in/compact.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/slash_commands/built_in/config.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/slash_commands/built_in/context.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/slash_commands/built_in/cost.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/slash_commands/built_in/help.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/slash_commands/built_in/memory.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/slash_commands/built_in/model.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/slash_commands/built_in/preset_info.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/slash_commands/built_in/status.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/slash_commands/built_in/tasks.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/slash_commands/md_template.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/slash_commands/parser.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/slash_commands/registry.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/slash_commands/types.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/stages/__init__.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/stages/s01_input/__init__.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/stages/s01_input/artifact/__init__.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/stages/s01_input/artifact/default/__init__.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/stages/s01_input/artifact/default/stage.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/stages/s01_input/artifact/default/validators.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/stages/s01_input/interface.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/stages/s01_input/normalizers.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/stages/s01_input/stage.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/stages/s01_input/validators.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/stages/s02_context/__init__.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/stages/s02_context/artifact/__init__.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/stages/s02_context/artifact/default/__init__.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/stages/s02_context/artifact/default/compactors.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/stages/s02_context/artifact/default/retrievers.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/stages/s02_context/artifact/default/stage.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/stages/s02_context/artifact/default/strategies.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/stages/s02_context/compactors.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/stages/s02_context/interface.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/stages/s02_context/retrievers.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/stages/s02_context/stage.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/stages/s02_context/strategies.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/stages/s02_context/types.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/stages/s03_system/__init__.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/stages/s03_system/artifact/__init__.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/stages/s03_system/artifact/default/__init__.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/stages/s03_system/artifact/default/builders.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/stages/s03_system/builders.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/stages/s03_system/interface.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/stages/s03_system/persona/__init__.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/stages/s03_system/persona/builder.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/stages/s03_system/persona/provider.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/stages/s03_system/stage.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/stages/s04_guard/__init__.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/stages/s04_guard/artifact/__init__.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/stages/s04_guard/artifact/default/__init__.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/stages/s04_guard/artifact/default/guards.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/stages/s04_guard/artifact/default/stage.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/stages/s04_guard/guards.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/stages/s04_guard/interface.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/stages/s04_guard/stage.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/stages/s04_guard/types.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/stages/s05_cache/__init__.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/stages/s05_cache/artifact/__init__.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/stages/s05_cache/artifact/default/__init__.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/stages/s05_cache/artifact/default/stage.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/stages/s05_cache/artifact/default/strategies.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/stages/s05_cache/interface.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/stages/s05_cache/stage.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/stages/s05_cache/strategies.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/stages/s06_api/__init__.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/stages/s06_api/_translate.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/stages/s06_api/artifact/__init__.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/stages/s06_api/artifact/default/__init__.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/stages/s06_api/artifact/default/providers.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/stages/s06_api/artifact/default/retry.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/stages/s06_api/artifact/default/router.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/stages/s06_api/artifact/default/stage.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/stages/s06_api/artifact/default/tool_loop.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/stages/s06_api/artifact/google/__init__.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/stages/s06_api/artifact/google/providers.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/stages/s06_api/artifact/openai/__init__.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/stages/s06_api/artifact/openai/providers.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/stages/s06_api/interface.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/stages/s06_api/providers.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/stages/s06_api/retry.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/stages/s06_api/stage.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/stages/s06_api/types.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/stages/s07_token/__init__.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/stages/s07_token/artifact/__init__.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/stages/s07_token/artifact/default/__init__.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/stages/s07_token/artifact/default/pricing.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/stages/s07_token/artifact/default/stage.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/stages/s07_token/artifact/default/trackers.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/stages/s07_token/interface.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/stages/s07_token/pricing.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/stages/s07_token/stage.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/stages/s07_token/trackers.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/stages/s08_think/__init__.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/stages/s08_think/artifact/default/__init__.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/stages/s08_think/artifact/default/budget.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/stages/s08_think/artifact/default/processors.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/stages/s08_think/artifact/default/stage.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/stages/s08_think/interface.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/stages/s08_think/processors.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/stages/s08_think/stage.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/stages/s08_think/types.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/stages/s09_parse/__init__.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/stages/s09_parse/artifact/default/__init__.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/stages/s09_parse/artifact/default/parsers.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/stages/s09_parse/artifact/default/signals.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/stages/s09_parse/artifact/default/stage.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/stages/s09_parse/interface.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/stages/s09_parse/parsers.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/stages/s09_parse/signals.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/stages/s09_parse/stage.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/stages/s09_parse/types.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/stages/s10_tool/__init__.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/stages/s10_tool/artifact/__init__.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/stages/s10_tool/artifact/default/__init__.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/stages/s10_tool/artifact/default/executors.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/stages/s10_tool/artifact/default/routers.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/stages/s10_tool/dispatcher.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/stages/s10_tool/executors.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/stages/s10_tool/interface.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/stages/s10_tool/persistence.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/stages/s10_tool/routers.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/stages/s10_tool/stage.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/stages/s10_tool/state_mutation.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/stages/s10_tool/streaming.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/stages/s11_tool_review/__init__.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/stages/s11_tool_review/artifact/__init__.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/stages/s11_tool_review/artifact/default/__init__.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/stages/s11_tool_review/artifact/default/reviewers.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/stages/s11_tool_review/artifact/default/stage.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/stages/s11_tool_review/interface.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/stages/s12_agent/__init__.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/stages/s12_agent/artifact/__init__.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/stages/s12_agent/artifact/default/__init__.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/stages/s12_agent/artifact/default/orchestrators.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/stages/s12_agent/artifact/default/stage.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/stages/s12_agent/interface.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/stages/s12_agent/orchestrators.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/stages/s12_agent/persistent_subagent.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/stages/s12_agent/stage.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/stages/s12_agent/subagent_catalog.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/stages/s12_agent/subagent_type.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/stages/s12_agent/types.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/stages/s13_task_registry/__init__.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/stages/s13_task_registry/artifact/__init__.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/stages/s13_task_registry/artifact/default/__init__.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/stages/s13_task_registry/artifact/default/file_backed_registry.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/stages/s13_task_registry/artifact/default/policies.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/stages/s13_task_registry/artifact/default/registry.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/stages/s13_task_registry/artifact/default/stage.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/stages/s13_task_registry/interface.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/stages/s13_task_registry/types.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/stages/s14_evaluate/__init__.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/stages/s14_evaluate/artifact/__init__.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/stages/s14_evaluate/artifact/adaptive/__init__.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/stages/s14_evaluate/artifact/adaptive/strategy.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/stages/s14_evaluate/artifact/default/__init__.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/stages/s14_evaluate/artifact/default/stage.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/stages/s14_evaluate/artifact/default/strategies.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/stages/s14_evaluate/interface.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/stages/s14_evaluate/stage.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/stages/s14_evaluate/strategies.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/stages/s14_evaluate/types.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/stages/s15_hitl/__init__.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/stages/s15_hitl/artifact/__init__.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/stages/s15_hitl/artifact/default/__init__.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/stages/s15_hitl/artifact/default/requesters.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/stages/s15_hitl/artifact/default/stage.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/stages/s15_hitl/artifact/default/timeouts.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/stages/s15_hitl/interface.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/stages/s15_hitl/types.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/stages/s16_loop/__init__.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/stages/s16_loop/artifact/__init__.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/stages/s16_loop/artifact/default/__init__.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/stages/s16_loop/artifact/default/controllers.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/stages/s16_loop/artifact/default/stage.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/stages/s16_loop/controllers.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/stages/s16_loop/interface.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/stages/s16_loop/stage.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/stages/s17_emit/__init__.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/stages/s17_emit/artifact/__init__.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/stages/s17_emit/artifact/default/__init__.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/stages/s17_emit/artifact/default/emitters.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/stages/s17_emit/artifact/default/stage.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/stages/s17_emit/emitters.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/stages/s17_emit/interface.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/stages/s17_emit/stage.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/stages/s17_emit/types.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/stages/s18_memory/__init__.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/stages/s18_memory/_dehydrate.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/stages/s18_memory/artifact/__init__.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/stages/s18_memory/artifact/default/__init__.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/stages/s18_memory/artifact/default/persistence.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/stages/s18_memory/artifact/default/stage.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/stages/s18_memory/artifact/default/strategies.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/stages/s18_memory/insight.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/stages/s18_memory/interface.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/stages/s18_memory/persistence.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/stages/s18_memory/stage.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/stages/s18_memory/strategies.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/stages/s19_summarize/__init__.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/stages/s19_summarize/artifact/__init__.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/stages/s19_summarize/artifact/default/__init__.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/stages/s19_summarize/artifact/default/importance.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/stages/s19_summarize/artifact/default/stage.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/stages/s19_summarize/artifact/default/summarizers.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/stages/s19_summarize/frequency_policy.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/stages/s19_summarize/interface.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/stages/s19_summarize/types.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/stages/s20_persist/__init__.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/stages/s20_persist/artifact/__init__.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/stages/s20_persist/artifact/default/__init__.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/stages/s20_persist/artifact/default/frequencies.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/stages/s20_persist/artifact/default/persisters.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/stages/s20_persist/artifact/default/stage.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/stages/s20_persist/interface.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/stages/s20_persist/restore.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/stages/s20_persist/types.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/stages/s21_yield/__init__.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/stages/s21_yield/artifact/__init__.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/stages/s21_yield/artifact/default/__init__.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/stages/s21_yield/artifact/default/formatters.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/stages/s21_yield/artifact/default/multi_format.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/stages/s21_yield/artifact/default/stage.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/stages/s21_yield/formatters.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/stages/s21_yield/interface.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/stages/s21_yield/stage.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/tools/__init__.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/tools/_sandbox.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/tools/adhoc.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/tools/built_in/_path_guard.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/tools/built_in/_web_search_backends.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/tools/built_in/agent_tool.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/tools/built_in/ask_user_question_tool.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/tools/built_in/bash_tool.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/tools/built_in/cron_tools.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/tools/built_in/dev_tools.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/tools/built_in/edit_tool.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/tools/built_in/env_tools.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/tools/built_in/glob_tool.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/tools/built_in/google_tools.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/tools/built_in/grep_tool.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/tools/built_in/mcp_wrapper_tools.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/tools/built_in/notebook_edit_tool.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/tools/built_in/operator_tools.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/tools/built_in/plan_mode_tools.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/tools/built_in/push_notification_tool.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/tools/built_in/read_tool.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/tools/built_in/sandbox_exec_tool.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/tools/built_in/send_message_tool.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/tools/built_in/subagent_tools.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/tools/built_in/task_tools.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/tools/built_in/todo_write_tool.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/tools/built_in/web_fetch_tool.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/tools/built_in/web_search_tool.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/tools/built_in/worktree_tools.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/tools/built_in/write_tool.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/tools/composer.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/tools/errors.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/tools/mcp/__init__.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/tools/mcp/adapter.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/tools/mcp/credentials.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/tools/mcp/errors.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/tools/mcp/manager.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/tools/mcp/oauth.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/tools/mcp/state.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/tools/mcp/uri.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/tools/plugin.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/tools/providers.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/tools/sandbox.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/tools/scope.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/tools/stage_binding.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/workspace/__init__.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/workspace/stack.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/workspace/types.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/__init__.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/_fixtures/__init__.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/_fixtures/fake_claude.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/_fixtures/fake_echo_cli.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/_fixtures/geny_manifest_layout.json +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/_fixtures/manifest_entries.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/completeness/__init__.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/completeness/conftest.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/completeness/fixtures/__init__.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/completeness/fixtures/adapter/__init__.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/completeness/fixtures/adapter/adapter.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/completeness/test_c1_six_layer_retrieval.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/completeness/test_c2_execution_recording.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/completeness/test_c3_reflection_and_promotion.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/completeness/test_c4_rest_coverage.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/completeness/test_c5_embedding_migration.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/completeness/test_c6_session_resume.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/completeness/test_c7_adapter_parity.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/completeness/test_spec_loads.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/contract/__init__.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/contract/memory_provider_contract.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/contract/test_embedding_clients.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/contract/test_error_codes_stability.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/contract/test_memory_embedding_credentials.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/contract/test_memory_provider_auto_vector.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/contract/test_memory_provider_composite.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/contract/test_memory_provider_composite_routing.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/contract/test_memory_provider_curated_global.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/contract/test_memory_provider_ephemeral.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/contract/test_memory_provider_factory.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/contract/test_memory_provider_file.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/contract/test_memory_provider_file_layout.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/contract/test_memory_provider_file_vector.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/contract/test_memory_provider_sql.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/contract/test_memory_provider_sql_dialect.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/contract/test_memory_provider_sql_schema.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/contract/test_memory_provider_sql_vector.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/contract/test_memory_vector_breaker.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/contract/test_stage_uniformity.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/integration/test_cycle_ab_cross_import.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/integration/test_integration.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/llm_client/__init__.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/llm_client/conformance/__init__.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/llm_client/conformance/harness.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/llm_client/conformance/test_anthropic.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/llm_client/conformance/test_claude_code_cli.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/llm_client/conformance/test_google.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/llm_client/conformance/test_local_providers.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/llm_client/conformance/test_openai.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/llm_client/conformance/test_vllm.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/llm_client/golden/__init__.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/llm_client/golden/cli-2.1.149-json.json +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/llm_client/golden/cli-2.1.149-json.meta +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/llm_client/golden/cli-2.1.149-stream.jsonl +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/llm_client/golden/cli-2.1.149-stream.meta +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/llm_client/golden/cli-2.1.162-stream.jsonl +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/llm_client/golden/cli-2.1.162-stream.meta +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/llm_client/golden/test_golden_replay.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/llm_client/live/__init__.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/llm_client/live/test_live_canaries.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/llm_client/unit/__init__.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/llm_client/unit/test_anthropic_build_kwargs.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/llm_client/unit/test_anthropic_classify.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/llm_client/unit/test_base_client.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/llm_client/unit/test_claude_code.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/llm_client/unit/test_cli_cancellation.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/llm_client/unit/test_cli_event_forwarding.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/llm_client/unit/test_cli_runtime.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/llm_client/unit/test_container_runner.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/llm_client/unit/test_credentials.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/llm_client/unit/test_google_classify.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/llm_client/unit/test_local_probe.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/llm_client/unit/test_local_tool_repair.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/llm_client/unit/test_openai_client.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/llm_client/unit/test_profiles.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/llm_client/unit/test_translators_cli_claude_code.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/unit/__init__.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/unit/test_adaptive_model_router.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/unit/test_adaptive_router_configure.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/unit/test_adaptive_thinking_budget.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/unit/test_agent_tool.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/unit/test_api_timeout_kwarg.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/unit/test_artifact_metadata.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/unit/test_ask_user_question_tool.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/unit/test_attach_llm_client_guard.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/unit/test_binary_classify_manifest.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/unit/test_budget_compaction_recovery.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/unit/test_built_in_autoregister.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/unit/test_builtin_capabilities.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/unit/test_builtin_channels.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/unit/test_builtin_features.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/unit/test_cache_prefix_key.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/unit/test_cancellation.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/unit/test_claude_code_nonstream_prompt.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/unit/test_cli_mcp_passthrough.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/unit/test_composite_set_hooks.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/unit/test_concurrent_runs.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/unit/test_config_liveness.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/unit/test_cron_runner.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/unit/test_cron_store.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/unit/test_cron_tools.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/unit/test_dev_tools.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/unit/test_diff_order_keyed.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/unit/test_dynamic_persona_builder.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/unit/test_embedding_error_classification.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/unit/test_errors_categories.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/unit/test_evaluation_chain.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/unit/test_evaluation_chain_configure.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/unit/test_event_catalog.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/unit/test_event_channel_unification.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/unit/test_event_correlation.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/unit/test_external_tool_resolution.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/unit/test_forge_tool.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/unit/test_fork_multi_provider.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/unit/test_from_manifest_strict_validation.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/unit/test_gateway.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/unit/test_gateway_ws.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/unit/test_geny_prod_manifest_repro.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/unit/test_graph_edges.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/unit/test_graph_rank.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/unit/test_guard_fail_fast.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/unit/test_hierarchical_sidecars.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/unit/test_hook_gate_split.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/unit/test_hook_in_process.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/unit/test_hook_runner.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/unit/test_hook_taxonomy.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/unit/test_hooks_and_shared_keys.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/unit/test_host_selections_resolve.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/unit/test_index_list_categories.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/unit/test_index_render_vault_map.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/unit/test_interaction_fields.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/unit/test_internal_agentic_loop.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/unit/test_introspection.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/unit/test_llm_client_base.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/unit/test_llm_client_capabilities.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/unit/test_llm_client_registry.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/unit/test_llm_client_request_types.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/unit/test_llm_client_state.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/unit/test_llm_compactor_selfwire.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/unit/test_llm_summary_compactor.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/unit/test_loop_agnostic_lock.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/unit/test_manifest_factory.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/unit/test_manifest_from_dict_hygiene.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/unit/test_manifest_memory_wiring.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/unit/test_manifest_provider_validation.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/unit/test_manifest_subagents_memory_sections.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/unit/test_manifest_v2.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/unit/test_manifest_v3_migration.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/unit/test_mcp_annotations_attach.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/unit/test_mcp_credential_store.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/unit/test_mcp_fsm.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/unit/test_mcp_namespace.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/unit/test_mcp_oauth.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/unit/test_mcp_prompts_skills_bridge.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/unit/test_mcp_resource_retriever.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/unit/test_mcp_uri.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/unit/test_mcp_wrapper_tools.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/unit/test_memory_aware_retriever.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/unit/test_memory_hooks_after_callbacks.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/unit/test_memory_metadata_extension.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/unit/test_memory_rollup.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/unit/test_model_discovery.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/unit/test_model_overrides.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/unit/test_multi_dim_budget_configure.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/unit/test_multi_dim_budget_controller.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/unit/test_multi_format_yield.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/unit/test_multi_provider.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/unit/test_multimodal.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/unit/test_note_graph_queries.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/unit/test_notebook_edit_tool.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/unit/test_notes_load_pinned.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/unit/test_operator_tools.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/unit/test_ordered_emitter_chain.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/unit/test_permission_matrix.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/unit/test_permission_mode_promotions.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/unit/test_permission_posture.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/unit/test_persistent_subagent.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/unit/test_phase1_foundation.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/unit/test_phase1_pipeline.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/unit/test_phase2_agent_loop.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/unit/test_phase2_tools.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/unit/test_phase3_context_memory.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/unit/test_phase4_think_agent_evaluate.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/unit/test_phase5_emit_presets_mcp.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/unit/test_phase5_environment.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/unit/test_phase6_history.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/unit/test_phase6_integration.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/unit/test_phase7_security.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/unit/test_phase9a_preset_regen.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/unit/test_phase9a_scaffolding.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/unit/test_pipeline_aclose.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/unit/test_pipeline_attach_runtime.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/unit/test_pipeline_events_tap.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/unit/test_pipeline_from_manifest.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/unit/test_pipeline_hook_lifecycle.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/unit/test_pipeline_session_runtime.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/unit/test_plan_mode_tools.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/unit/test_primary_provider_and_build_reports.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/unit/test_progressive_disclosure.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/unit/test_provider_driven_strategy.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/unit/test_push_notification_tool.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/unit/test_refresh_backlinks_extension.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/unit/test_refresh_runtime_and_run_lock.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/unit/test_resolve_model_config.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/unit/test_restore_bad_strategy_config.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/unit/test_reviewer_policy_configure.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/unit/test_runtime_task_runner.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/unit/test_s06_chunk_forwarding.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/unit/test_s06_provider_selection.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/unit/test_s13_file_backed_registry.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/unit/test_s13_task_registry_output.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/unit/test_s19_frequency_policy.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/unit/test_s9b1_tool_review.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/unit/test_s9b2_task_registry.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/unit/test_s9b3_hitl.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/unit/test_s9b4_summarize.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/unit/test_s9b5_persist.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/unit/test_s9c1_pipeline_resume.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/unit/test_s9c2_restore_state.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/unit/test_sandbox_attach.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/unit/test_sandbox_exec_tool.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/unit/test_sandbox_tools.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/unit/test_self_modifying_env.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/unit/test_send_message_tool.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/unit/test_settings_loader.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/unit/test_skill_level3_resources.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/unit/test_skill_phase_10_1.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/unit/test_skill_phase_10_2.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/unit/test_skill_phase_10_3.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/unit/test_skill_phase_10_4_bundled.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/unit/test_skill_phase_10_5_fork.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/unit/test_skill_phase_10_6_killer.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/unit/test_skill_phase_10_7_watcher.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/unit/test_skill_richer_schema.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/unit/test_skills_foundation.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/unit/test_slash_built_in_control.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/unit/test_slash_built_in_introspection.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/unit/test_slash_commands.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/unit/test_slash_md_template.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/unit/test_stage10_ask_hitl.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/unit/test_stage10_hook_wiring.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/unit/test_stage10_partition_executor.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/unit/test_stage10_permission_matrix.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/unit/test_stage19_session_summary.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/unit/test_state_mutation_wiring.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/unit/test_state_shared_and_local.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/unit/test_stm_append_event.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/unit/test_strategy_config_roundtrip.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/unit/test_streaming_tool_executor.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/unit/test_structured_output_parser.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/unit/test_structured_reflection.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/unit/test_subagent_catalog.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/unit/test_subagent_credential_propagation.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/unit/test_subagent_descriptor.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/unit/test_subagent_manifest_compile.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/unit/test_subagent_orchestrator_zero_arg.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/unit/test_subagent_parallel.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/unit/test_subagent_pipeline_lifecycle.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/unit/test_subagent_type_orchestrator.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/unit/test_task_tools.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/unit/test_todo_write_tool.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/unit/test_tool_abc_uplift.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/unit/test_tool_call_events.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/unit/test_tool_errors.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/unit/test_tool_lifecycle_hooks.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/unit/test_tool_plugins.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/unit/test_tool_result_persistence.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/unit/test_tool_search_tool.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/unit/test_tool_stage_max_concurrency.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/unit/test_turn_boundary_state.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/unit/test_validate_manifest.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/unit/test_vault_map_drill.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/unit/test_web_fetch_tool.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/unit/test_web_search_backends.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/unit/test_web_search_tool.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/unit/test_workspace.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/unit/test_workspace_propagation.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/unit/test_workspace_tools_integration.py +0 -0
- {geny_executor-2.40.0 → geny_executor-2.42.0}/tests/unit/test_worktree_tools.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: geny-executor
|
|
3
|
-
Version: 2.
|
|
3
|
+
Version: 2.42.0
|
|
4
4
|
Summary: Harness-engineered agent pipeline library with 21-stage dual-abstraction architecture, built on the Anthropic API
|
|
5
5
|
Project-URL: Homepage, https://github.com/CocoRoF/geny-executor
|
|
6
6
|
Project-URL: Repository, https://github.com/CocoRoF/geny-executor
|
|
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "geny-executor"
|
|
7
|
-
version = "2.
|
|
7
|
+
version = "2.42.0"
|
|
8
8
|
description = "Harness-engineered agent pipeline library with 21-stage dual-abstraction architecture, built on the Anthropic API"
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
license = "Apache-2.0"
|
|
@@ -80,6 +80,16 @@ class ToolsSnapshot:
|
|
|
80
80
|
manifest only records *which provider-backed names are active* for
|
|
81
81
|
this environment. The pipeline resolves each name against the
|
|
82
82
|
``adhoc_providers`` passed to :meth:`Pipeline.from_manifest`.
|
|
83
|
+
|
|
84
|
+
``core_overrides`` (2.42.0) flips individual tools between *core*
|
|
85
|
+
(schema shipped to the LLM on every request) and *deferred*
|
|
86
|
+
(registered + dispatchable, but only discoverable at runtime via
|
|
87
|
+
the ``ToolSearch`` built-in). Defaults when a name is absent:
|
|
88
|
+
framework built-ins are core, everything else (external / provider
|
|
89
|
+
/ MCP tools) is deferred. Keys are exact tool names; a trailing
|
|
90
|
+
``*`` matches by prefix (e.g. ``"mcp__github__*": true`` promotes a
|
|
91
|
+
whole MCP server whose tool names are only known after discovery).
|
|
92
|
+
Exact keys win over wildcard keys.
|
|
83
93
|
"""
|
|
84
94
|
|
|
85
95
|
built_in: List[str] = field(default_factory=list)
|
|
@@ -87,6 +97,7 @@ class ToolsSnapshot:
|
|
|
87
97
|
mcp_servers: List[Dict[str, Any]] = field(default_factory=list)
|
|
88
98
|
external: List[str] = field(default_factory=list)
|
|
89
99
|
scope: Dict[str, Any] = field(default_factory=dict)
|
|
100
|
+
core_overrides: Dict[str, bool] = field(default_factory=dict)
|
|
90
101
|
|
|
91
102
|
def to_dict(self) -> Dict[str, Any]:
|
|
92
103
|
return {
|
|
@@ -95,6 +106,7 @@ class ToolsSnapshot:
|
|
|
95
106
|
"mcp_servers": list(self.mcp_servers),
|
|
96
107
|
"external": list(self.external),
|
|
97
108
|
"scope": dict(self.scope),
|
|
109
|
+
"core_overrides": dict(self.core_overrides),
|
|
98
110
|
}
|
|
99
111
|
|
|
100
112
|
@classmethod
|
|
@@ -105,6 +117,9 @@ class ToolsSnapshot:
|
|
|
105
117
|
mcp_servers=data.get("mcp_servers", []),
|
|
106
118
|
external=data.get("external", []),
|
|
107
119
|
scope=data.get("scope", {}),
|
|
120
|
+
core_overrides={
|
|
121
|
+
str(k): bool(v) for k, v in (data.get("core_overrides") or {}).items()
|
|
122
|
+
},
|
|
108
123
|
)
|
|
109
124
|
|
|
110
125
|
|
|
@@ -444,6 +444,64 @@ class DroppedStage:
|
|
|
444
444
|
error: str
|
|
445
445
|
|
|
446
446
|
|
|
447
|
+
def _resolve_core_flag(
|
|
448
|
+
name: str,
|
|
449
|
+
overrides: Mapping[str, bool],
|
|
450
|
+
default: bool,
|
|
451
|
+
) -> bool:
|
|
452
|
+
"""Resolve a tool's core/deferred exposure from ``manifest.tools.core_overrides``.
|
|
453
|
+
|
|
454
|
+
Exact-name keys win; otherwise the longest matching trailing-``*``
|
|
455
|
+
prefix key applies (``"mcp__github__*"`` — MCP tool names are only
|
|
456
|
+
known after discovery, so per-server toggles need the wildcard);
|
|
457
|
+
otherwise *default* (built-ins: core, everything else: deferred).
|
|
458
|
+
"""
|
|
459
|
+
if name in overrides:
|
|
460
|
+
return bool(overrides[name])
|
|
461
|
+
best_len = -1
|
|
462
|
+
best_val = default
|
|
463
|
+
for key, val in overrides.items():
|
|
464
|
+
if key.endswith("*") and name.startswith(key[:-1]) and len(key) > best_len:
|
|
465
|
+
best_len = len(key)
|
|
466
|
+
best_val = bool(val)
|
|
467
|
+
return best_val
|
|
468
|
+
|
|
469
|
+
|
|
470
|
+
def _core_overrides_from_manifest(manifest: "EnvironmentManifest") -> Dict[str, bool]:
|
|
471
|
+
"""Read ``manifest.tools.core_overrides`` defensively (old manifests lack it)."""
|
|
472
|
+
raw = getattr(manifest.tools, "core_overrides", None) or {}
|
|
473
|
+
return {str(k): bool(v) for k, v in raw.items()} if isinstance(raw, Mapping) else {}
|
|
474
|
+
|
|
475
|
+
|
|
476
|
+
def _ensure_tool_search_reachable(registry: "ToolRegistry") -> None:
|
|
477
|
+
"""Guarantee deferred tools stay discoverable.
|
|
478
|
+
|
|
479
|
+
A registry that holds deferred (non-core) tools without an exposed
|
|
480
|
+
``ToolSearch`` would strand them — the LLM could never learn they
|
|
481
|
+
exist. Auto-register the built-in ``ToolSearch`` as core in that
|
|
482
|
+
case, and force it back to core if a manifest override demoted it
|
|
483
|
+
while deferred tools remain.
|
|
484
|
+
"""
|
|
485
|
+
if not registry.list_deferred():
|
|
486
|
+
return
|
|
487
|
+
existing = registry.get("ToolSearch")
|
|
488
|
+
if existing is None:
|
|
489
|
+
from geny_executor.tools.built_in.tool_search_tool import ToolSearchTool
|
|
490
|
+
|
|
491
|
+
registry.register(ToolSearchTool(), core=True)
|
|
492
|
+
logger.info(
|
|
493
|
+
"ToolSearch auto-registered (core): %d deferred tool(s) need a discovery path",
|
|
494
|
+
len(registry.list_deferred()),
|
|
495
|
+
)
|
|
496
|
+
elif not registry.is_core("ToolSearch"):
|
|
497
|
+
registry.set_core("ToolSearch", True)
|
|
498
|
+
logger.warning(
|
|
499
|
+
"ToolSearch forced back to core — %d deferred tool(s) would be "
|
|
500
|
+
"unreachable with it deferred/demoted",
|
|
501
|
+
len(registry.list_deferred()),
|
|
502
|
+
)
|
|
503
|
+
|
|
504
|
+
|
|
447
505
|
def _register_built_in_tools(
|
|
448
506
|
manifest: "EnvironmentManifest",
|
|
449
507
|
registry: "ToolRegistry",
|
|
@@ -484,6 +542,8 @@ def _register_built_in_tools(
|
|
|
484
542
|
if names == ["*"]:
|
|
485
543
|
names = list(BUILT_IN_TOOL_CLASSES.keys())
|
|
486
544
|
|
|
545
|
+
core_overrides = _core_overrides_from_manifest(manifest)
|
|
546
|
+
|
|
487
547
|
for name in names:
|
|
488
548
|
cls = BUILT_IN_TOOL_CLASSES.get(name)
|
|
489
549
|
if cls is None:
|
|
@@ -499,7 +559,9 @@ def _register_built_in_tools(
|
|
|
499
559
|
if report is not None:
|
|
500
560
|
report.shadowed.append(name)
|
|
501
561
|
continue
|
|
502
|
-
|
|
562
|
+
# Framework built-ins are core (upfront schema) by default;
|
|
563
|
+
# manifest.tools.core_overrides can defer individual names.
|
|
564
|
+
registry.register(cls(), core=_resolve_core_flag(name, core_overrides, True))
|
|
503
565
|
if report is not None:
|
|
504
566
|
report.resolved.append(name)
|
|
505
567
|
|
|
@@ -541,6 +603,8 @@ def _register_external_tools(
|
|
|
541
603
|
if not raw_entries:
|
|
542
604
|
return
|
|
543
605
|
|
|
606
|
+
core_overrides = _core_overrides_from_manifest(manifest)
|
|
607
|
+
|
|
544
608
|
# Normalize entries → (name, required). Malformed entries warn and
|
|
545
609
|
# count as unresolved-but-unnamed; they cannot be required because
|
|
546
610
|
# we cannot even tell what the author wanted.
|
|
@@ -627,7 +691,13 @@ def _register_external_tools(
|
|
|
627
691
|
# intentionally hardened by the host).
|
|
628
692
|
report.shadowed.append(name)
|
|
629
693
|
report.resolved.append(name)
|
|
630
|
-
|
|
694
|
+
# Host-supplied (external) tools are deferred by default — the
|
|
695
|
+
# LLM discovers them via ToolSearch. core_overrides opts a name
|
|
696
|
+
# into upfront exposure; an external entry shadowing a framework
|
|
697
|
+
# built-in keeps the built-in's core default so the replacement
|
|
698
|
+
# is invisible to the model.
|
|
699
|
+
default_core = registry.is_core(name) if registry.get(name) is not None else False
|
|
700
|
+
registry.register(tool, core=_resolve_core_flag(name, core_overrides, default_core))
|
|
631
701
|
|
|
632
702
|
|
|
633
703
|
def _gate_unconfigured_tools(
|
|
@@ -1248,6 +1318,9 @@ class Pipeline:
|
|
|
1248
1318
|
# (no-op when satisfied_config is None). Runs after both registration
|
|
1249
1319
|
# passes so it sees the full built-in + external surface.
|
|
1250
1320
|
_gate_unconfigured_tools(registry, satisfied_config, resolution_report)
|
|
1321
|
+
# Deferred tools need a live discovery path; from_manifest_async
|
|
1322
|
+
# re-checks after providers + MCP land more registrations.
|
|
1323
|
+
_ensure_tool_search_reachable(registry)
|
|
1251
1324
|
pipeline.tool_resolution_report = resolution_report
|
|
1252
1325
|
pipeline._tool_registry = registry
|
|
1253
1326
|
# Retain the adhoc providers so the self-modifying-environment controller
|
|
@@ -1430,9 +1503,16 @@ class Pipeline:
|
|
|
1430
1503
|
# MCP adapters arrive. Name collisions at this layer are logged
|
|
1431
1504
|
# by ``register_providers``; MCP registrations would still fail
|
|
1432
1505
|
# cleanly via the registry's own dedupe if they conflicted.
|
|
1506
|
+
# Provider-shipped tools are deferred by default (ToolSearch
|
|
1507
|
+
# discovery); manifest.tools.core_overrides opts names in.
|
|
1508
|
+
core_overrides = _core_overrides_from_manifest(manifest)
|
|
1433
1509
|
started_providers: List["ToolProvider"] = []
|
|
1434
1510
|
if tool_providers:
|
|
1435
|
-
started_providers = await register_providers(
|
|
1511
|
+
started_providers = await register_providers(
|
|
1512
|
+
list(tool_providers),
|
|
1513
|
+
registry,
|
|
1514
|
+
core_resolver=lambda name: _resolve_core_flag(name, core_overrides, False),
|
|
1515
|
+
)
|
|
1436
1516
|
|
|
1437
1517
|
manager = MCPManager()
|
|
1438
1518
|
|
|
@@ -1481,8 +1561,15 @@ class Pipeline:
|
|
|
1481
1561
|
try:
|
|
1482
1562
|
await manager.connect_all(configs)
|
|
1483
1563
|
adapters = await manager.discover_all()
|
|
1564
|
+
# MCP tools are deferred by default (ToolSearch
|
|
1565
|
+
# discovery); core_overrides opts names in — the
|
|
1566
|
+
# trailing-* form covers whole servers whose tool
|
|
1567
|
+
# names are only known after discovery.
|
|
1484
1568
|
for adapter in adapters:
|
|
1485
|
-
registry.register(
|
|
1569
|
+
registry.register(
|
|
1570
|
+
adapter,
|
|
1571
|
+
core=_resolve_core_flag(adapter.name, core_overrides, False),
|
|
1572
|
+
)
|
|
1486
1573
|
except BaseException:
|
|
1487
1574
|
# Unwind providers if MCP bring-up fails mid-flight so no
|
|
1488
1575
|
# half-started resources leak out.
|
|
@@ -1492,6 +1579,10 @@ class Pipeline:
|
|
|
1492
1579
|
await manager.disconnect_all()
|
|
1493
1580
|
raise
|
|
1494
1581
|
|
|
1582
|
+
# Providers + MCP may have added deferred tools after the sync
|
|
1583
|
+
# from_manifest pass — re-check the discovery path.
|
|
1584
|
+
_ensure_tool_search_reachable(registry)
|
|
1585
|
+
|
|
1495
1586
|
pipeline._mcp_manager = manager
|
|
1496
1587
|
pipeline._tool_registry = registry
|
|
1497
1588
|
pipeline._tool_providers = started_providers
|
|
@@ -210,25 +210,36 @@ class MultimodalNormalizer(InputNormalizer):
|
|
|
210
210
|
block["_meta"] = meta
|
|
211
211
|
return block
|
|
212
212
|
|
|
213
|
+
# Anthropic PDF limit is ~32MB request size; stay safely under it.
|
|
214
|
+
_PDF_MAX_BYTES = 24 * 1024 * 1024
|
|
215
|
+
|
|
213
216
|
def _make_file_block(self, file: Dict[str, Any]) -> Dict[str, Any]:
|
|
214
217
|
"""Convert any accepted shape into a canonical file block.
|
|
215
218
|
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
219
|
+
PDFs referenced by a local ``file://`` URI (or absolute path) are
|
|
220
|
+
loaded and base64-attached here so ``to_blocks()`` can emit a native
|
|
221
|
+
Anthropic ``document`` block — the model reads the actual PDF instead
|
|
222
|
+
of a ``[attached file: …]`` placeholder. Other formats keep the
|
|
223
|
+
metadata-only shape (hosts hand those to the agent's file tools).
|
|
220
224
|
"""
|
|
225
|
+
mime = (
|
|
226
|
+
file.get("mime_type")
|
|
227
|
+
or file.get("media_type")
|
|
228
|
+
or file.get("mimeType")
|
|
229
|
+
or "application/octet-stream"
|
|
230
|
+
)
|
|
231
|
+
data = file.get("data") or file.get("base64")
|
|
232
|
+
url = file.get("url")
|
|
233
|
+
if mime == "application/pdf" and not data and url:
|
|
234
|
+
resolved = _resolve_local_image_source(url) # generic local-file reader
|
|
235
|
+
if resolved is not None and len(resolved[0]) <= self._PDF_MAX_BYTES:
|
|
236
|
+
data = base64.b64encode(resolved[0]).decode("ascii")
|
|
221
237
|
return {
|
|
222
238
|
"type": "file",
|
|
223
239
|
"name": file.get("name") or file.get("filename"),
|
|
224
|
-
"mime_type":
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
or file.get("mimeType")
|
|
228
|
-
or "application/octet-stream"
|
|
229
|
-
),
|
|
230
|
-
"url": file.get("url"),
|
|
231
|
-
"data": file.get("data") or file.get("base64"),
|
|
240
|
+
"mime_type": mime,
|
|
241
|
+
"url": url,
|
|
242
|
+
"data": data,
|
|
232
243
|
"size": file.get("size"),
|
|
233
244
|
"sha256": file.get("sha256"),
|
|
234
245
|
"attachment_id": file.get("attachment_id"),
|
|
@@ -78,11 +78,25 @@ class NormalizedInput:
|
|
|
78
78
|
for img in self.images:
|
|
79
79
|
blocks.append(img)
|
|
80
80
|
for f in self.files:
|
|
81
|
-
# TODO: PDF 등을 Anthropic ``document`` block 으로 매핑하고
|
|
82
|
-
# 본문 추출 (PyPDF, OCR 등) 후 text 블록으로 인라인하는 경로
|
|
83
|
-
# 추가. 현재는 메타데이터를 텍스트로 노출만 한다.
|
|
84
81
|
name = f.get("name") or f.get("filename") or "unnamed"
|
|
85
82
|
mime = f.get("mime_type") or f.get("media_type") or "application/octet-stream"
|
|
83
|
+
data = f.get("data")
|
|
84
|
+
if mime == "application/pdf" and data:
|
|
85
|
+
# Native Anthropic ``document`` block — the model reads the PDF
|
|
86
|
+
# itself (the normalizer base64-loads local PDFs).
|
|
87
|
+
blocks.append(
|
|
88
|
+
{
|
|
89
|
+
"type": "document",
|
|
90
|
+
"source": {
|
|
91
|
+
"type": "base64",
|
|
92
|
+
"media_type": "application/pdf",
|
|
93
|
+
"data": data,
|
|
94
|
+
},
|
|
95
|
+
}
|
|
96
|
+
)
|
|
97
|
+
continue
|
|
98
|
+
# Other formats: metadata placeholder — hosts route the real bytes
|
|
99
|
+
# to the agent's file tools (e.g. a staged workspace copy).
|
|
86
100
|
blocks.append(
|
|
87
101
|
{
|
|
88
102
|
"type": "text",
|
|
@@ -164,14 +164,24 @@ class SystemStage(Stage[Any, Any]):
|
|
|
164
164
|
# Register tools in state if registry provided. Snapshotted on the first
|
|
165
165
|
# turn, then rebuilt only when the live registry's version moves — so a
|
|
166
166
|
# tool/skill enabled/disabled/created mid-session (self-modifying
|
|
167
|
-
# environment),
|
|
168
|
-
# version guard keeps the steady-state cost
|
|
167
|
+
# environment), an MCP re-seed, or a ToolSearch activation takes effect
|
|
168
|
+
# on the next iteration. The version guard keeps the steady-state cost
|
|
169
|
+
# at one int compare per turn.
|
|
170
|
+
#
|
|
171
|
+
# Only *exposed* tools ship to the model: core tools plus deferred
|
|
172
|
+
# tools a ToolSearch hit activated. Deferred tools stay registered
|
|
173
|
+
# (Stage 10 can still dispatch them) but their schemas stay out of
|
|
174
|
+
# the request payload until discovered — that's the token contract.
|
|
169
175
|
if self._tool_registry is not None:
|
|
170
176
|
reg_version = getattr(self._tool_registry, "version", None)
|
|
171
177
|
if not state.tools or (
|
|
172
178
|
reg_version is not None and reg_version != state.tools_version
|
|
173
179
|
):
|
|
174
|
-
|
|
180
|
+
try:
|
|
181
|
+
state.tools = self._tool_registry.to_api_format(exposed_only=True)
|
|
182
|
+
except TypeError:
|
|
183
|
+
# Host passed a registry-alike without exposure support.
|
|
184
|
+
state.tools = self._tool_registry.to_api_format()
|
|
175
185
|
if reg_version is not None:
|
|
176
186
|
state.tools_version = reg_version
|
|
177
187
|
|
|
@@ -208,6 +208,9 @@ class ToolStage(Stage[Any, Any]):
|
|
|
208
208
|
# can see the live tool descriptors + shared state. Tools
|
|
209
209
|
# MUST NOT mutate — use state_mutations / state_apply instead.
|
|
210
210
|
state_view=state,
|
|
211
|
+
# The live registry — ToolSearch searches the FULL catalogue
|
|
212
|
+
# through it (deferred tools included) and activates matches.
|
|
213
|
+
tool_registry=self._registry,
|
|
211
214
|
# Phase 5: propagate the host-attached HookRunner so the
|
|
212
215
|
# router can fire PRE_TOOL_USE / POST_TOOL_USE / POST_TOOL_
|
|
213
216
|
# FAILURE around dispatch. ``None`` is the default no-op.
|
|
@@ -157,6 +157,12 @@ class ToolContext:
|
|
|
157
157
|
# means the host did not enable self-modification. Typed ``Any`` to avoid a
|
|
158
158
|
# core import cycle.
|
|
159
159
|
environment: Optional[Any] = None
|
|
160
|
+
# The live ToolRegistry backing this session (set by Stage 10). ToolSearch
|
|
161
|
+
# reads the FULL catalogue from it — including deferred tools whose schemas
|
|
162
|
+
# are not in ``state.tools`` — and promotes matches via ``activate()``.
|
|
163
|
+
# ``None`` (default) preserves the state_view/built-in fallback path.
|
|
164
|
+
# Typed ``Any`` to avoid importing the registry from this base module.
|
|
165
|
+
tool_registry: Optional[Any] = None
|
|
160
166
|
extras: Dict[str, Any] = field(default_factory=dict)
|
|
161
167
|
|
|
162
168
|
|
|
@@ -52,6 +52,12 @@ from geny_executor.tools.built_in.operator_tools import (
|
|
|
52
52
|
SendUserFileTool,
|
|
53
53
|
)
|
|
54
54
|
from geny_executor.tools.built_in.read_tool import ReadTool
|
|
55
|
+
from geny_executor.tools.built_in.workspace_tools import (
|
|
56
|
+
SandboxFetchTool,
|
|
57
|
+
SandboxInfoTool,
|
|
58
|
+
SandboxPutTool,
|
|
59
|
+
WorkspaceInfoTool,
|
|
60
|
+
)
|
|
55
61
|
from geny_executor.tools.built_in.cron_tools import (
|
|
56
62
|
CronCreateTool,
|
|
57
63
|
CronDeleteTool,
|
|
@@ -123,6 +129,10 @@ BUILT_IN_TOOL_CLASSES: Dict[str, Type[Tool]] = {
|
|
|
123
129
|
"Config": ConfigTool,
|
|
124
130
|
"Monitor": MonitorTool,
|
|
125
131
|
"SendUserFile": SendUserFileTool,
|
|
132
|
+
"WorkspaceInfo": WorkspaceInfoTool,
|
|
133
|
+
"SandboxInfo": SandboxInfoTool,
|
|
134
|
+
"SandboxPut": SandboxPutTool,
|
|
135
|
+
"SandboxFetch": SandboxFetchTool,
|
|
126
136
|
"SendMessage": SendMessageTool,
|
|
127
137
|
"CronCreate": CronCreateTool,
|
|
128
138
|
"CronDelete": CronDeleteTool,
|
|
@@ -173,6 +183,9 @@ BUILT_IN_TOOL_FEATURES: Dict[str, List[str]] = {
|
|
|
173
183
|
"worktree": ["EnterWorktree", "ExitWorktree"],
|
|
174
184
|
"dev": ["LSP", "REPL", "Brief"],
|
|
175
185
|
"operator": ["Config", "Monitor", "SendUserFile"],
|
|
186
|
+
# The session's two file spaces: inspect the host-side files workspace,
|
|
187
|
+
# check the sandbox, and move files between them.
|
|
188
|
+
"workspace": ["WorkspaceInfo", "SandboxInfo", "SandboxPut", "SandboxFetch"],
|
|
176
189
|
"messaging": ["SendMessage"],
|
|
177
190
|
"cron": ["CronCreate", "CronDelete", "CronList"],
|
|
178
191
|
"environment": ["env"],
|
|
@@ -280,6 +293,10 @@ __all__ = [
|
|
|
280
293
|
"ExitPlanModeTool",
|
|
281
294
|
"EnvTool",
|
|
282
295
|
"SandboxExecTool",
|
|
296
|
+
"WorkspaceInfoTool",
|
|
297
|
+
"SandboxInfoTool",
|
|
298
|
+
"SandboxPutTool",
|
|
299
|
+
"SandboxFetchTool",
|
|
283
300
|
"BUILT_IN_TOOL_CLASSES",
|
|
284
301
|
"BUILT_IN_TOOL_FEATURES",
|
|
285
302
|
"get_builtin_tools",
|
{geny_executor-2.40.0 → geny_executor-2.42.0}/src/geny_executor/tools/built_in/tool_search_tool.py
RENAMED
|
@@ -1,23 +1,35 @@
|
|
|
1
|
-
"""ToolSearch — discovery
|
|
1
|
+
"""ToolSearch — deferred-tool discovery + activation.
|
|
2
2
|
|
|
3
3
|
Cycle 20260424 executor uplift — Phase 3 Week 6.
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
4
|
+
2.42.0 — upgraded from a list-introspection helper to the discovery
|
|
5
|
+
half of the core/deferred tool contract.
|
|
6
|
+
|
|
7
|
+
The pipeline no longer ships every tool schema to the LLM upfront.
|
|
8
|
+
*Core* tools (framework built-ins by default, plus anything the
|
|
9
|
+
manifest's ``tools.core_overrides`` promotes) are always in the
|
|
10
|
+
request payload; everything else — host/external tools, provider
|
|
11
|
+
bundles, MCP adapters — is registered but *deferred*: dispatchable,
|
|
12
|
+
yet invisible to the model until discovered here.
|
|
13
|
+
|
|
14
|
+
``ToolSearch`` is that discovery path. Pass it a keyword query and it:
|
|
15
|
+
|
|
16
|
+
1. Searches the FULL catalogue via ``ToolContext.tool_registry``
|
|
17
|
+
(Stage 10 binds the live :class:`ToolRegistry`), deferred tools
|
|
18
|
+
included.
|
|
19
|
+
2. Ranks matches (name > description > schema, see :func:`_rank`).
|
|
20
|
+
3. **Activates** every deferred match — ``registry.activate(name)``
|
|
21
|
+
bumps the registry version, so Stage 3 rebuilds ``state.tools`` on
|
|
22
|
+
the next loop iteration and the activated schemas reach the model
|
|
23
|
+
on its very next step within the same turn.
|
|
24
|
+
|
|
25
|
+
Fallback sources when no registry handle is bound (bare harnesses,
|
|
26
|
+
older hosts):
|
|
27
|
+
|
|
28
|
+
1. ``ToolContext.state_view.tools`` — the live API-format descriptors
|
|
29
|
+
the LLM already sees (pre-2.42 behaviour; search only, nothing to
|
|
30
|
+
activate).
|
|
31
|
+
2. The built-in catalogue (``BUILT_IN_TOOL_CLASSES``) so the tool
|
|
32
|
+
still produces useful output in isolation.
|
|
21
33
|
|
|
22
34
|
Ranking is simple: a hit on the tool ``name`` beats a hit on the
|
|
23
35
|
``description``; exact name match beats substring; case-insensitive
|
|
@@ -34,16 +46,16 @@ from typing import Any, Dict, List, Optional, Tuple
|
|
|
34
46
|
|
|
35
47
|
from geny_executor.tools.base import Tool, ToolCapabilities, ToolContext, ToolResult
|
|
36
48
|
|
|
37
|
-
_DEFAULT_LIMIT =
|
|
49
|
+
_DEFAULT_LIMIT = 10
|
|
38
50
|
_HARD_LIMIT = 100
|
|
39
51
|
|
|
40
52
|
|
|
41
53
|
def _fallback_descriptors() -> List[Dict[str, Any]]:
|
|
42
54
|
"""Build descriptors from the built-in catalogue.
|
|
43
55
|
|
|
44
|
-
Only used when ``state_view`` is
|
|
45
|
-
|
|
46
|
-
the same.
|
|
56
|
+
Only used when neither ``tool_registry`` nor ``state_view`` is
|
|
57
|
+
available. Mirrors the shape of the Anthropic API tool descriptor
|
|
58
|
+
so rank logic can treat every source the same.
|
|
47
59
|
"""
|
|
48
60
|
# Local import to avoid the package-init circular dependency.
|
|
49
61
|
from geny_executor.tools.built_in import BUILT_IN_TOOL_CLASSES
|
|
@@ -120,17 +132,19 @@ def _rank(descriptor: Dict[str, Any], query: str) -> int:
|
|
|
120
132
|
|
|
121
133
|
|
|
122
134
|
class ToolSearchTool(Tool):
|
|
123
|
-
"""
|
|
135
|
+
"""Discover tools from the full catalogue — and activate deferred ones.
|
|
124
136
|
|
|
125
|
-
Usage: the LLM calls ``ToolSearch({"query": "
|
|
137
|
+
Usage: the LLM calls ``ToolSearch({"query": "spreadsheet"})`` and
|
|
126
138
|
gets back something like::
|
|
127
139
|
|
|
128
|
-
Matching 2
|
|
129
|
-
1.
|
|
130
|
-
2.
|
|
140
|
+
Matching 2 tool(s) for 'spreadsheet':
|
|
141
|
+
1. xlsx_edit — Edit XLSX workbooks in place. [activated]
|
|
142
|
+
2. Read — Read a file from the filesystem. [available]
|
|
143
|
+
Activated tool schemas become available on your next step.
|
|
131
144
|
|
|
132
|
-
|
|
133
|
-
|
|
145
|
+
Matches already exposed to the model are tagged ``[available]``;
|
|
146
|
+
deferred matches are tagged ``[activated]`` — their full schemas
|
|
147
|
+
enter the tool list on the next loop iteration.
|
|
134
148
|
"""
|
|
135
149
|
|
|
136
150
|
@property
|
|
@@ -140,9 +154,11 @@ class ToolSearchTool(Tool):
|
|
|
140
154
|
@property
|
|
141
155
|
def description(self) -> str:
|
|
142
156
|
return (
|
|
143
|
-
"
|
|
144
|
-
"
|
|
145
|
-
"tool
|
|
157
|
+
"Search the full tool catalog by keyword — it contains more "
|
|
158
|
+
"tools than your current tool list. Matching tools that are "
|
|
159
|
+
"not yet in your tool list are activated automatically and "
|
|
160
|
+
"become callable on your next step. Use this whenever no "
|
|
161
|
+
"visible tool fits the task."
|
|
146
162
|
)
|
|
147
163
|
|
|
148
164
|
@property
|
|
@@ -155,15 +171,18 @@ class ToolSearchTool(Tool):
|
|
|
155
171
|
"description": (
|
|
156
172
|
"Keyword query. Multi-word queries require every "
|
|
157
173
|
"token to match somewhere (name / description / "
|
|
158
|
-
"input schema)."
|
|
174
|
+
"input schema). An exact tool name is the most "
|
|
175
|
+
"precise query."
|
|
159
176
|
),
|
|
160
177
|
"minLength": 1,
|
|
161
178
|
},
|
|
162
179
|
"limit": {
|
|
163
180
|
"type": "integer",
|
|
164
181
|
"description": (
|
|
165
|
-
f"Maximum number of matches to return
|
|
166
|
-
f"{_DEFAULT_LIMIT}, hard cap
|
|
182
|
+
f"Maximum number of matches to return (and thus to "
|
|
183
|
+
f"activate). Default {_DEFAULT_LIMIT}, hard cap "
|
|
184
|
+
f"{_HARD_LIMIT}. Keep it small to avoid bloating "
|
|
185
|
+
f"your tool list."
|
|
167
186
|
),
|
|
168
187
|
"exclusiveMinimum": 0,
|
|
169
188
|
},
|
|
@@ -186,7 +205,8 @@ class ToolSearchTool(Tool):
|
|
|
186
205
|
limit = int(input.get("limit", _DEFAULT_LIMIT))
|
|
187
206
|
limit = max(1, min(_HARD_LIMIT, limit))
|
|
188
207
|
|
|
189
|
-
|
|
208
|
+
registry = getattr(context, "tool_registry", None)
|
|
209
|
+
descriptors = self._collect_descriptors(context, registry)
|
|
190
210
|
ranked: List[Tuple[int, Dict[str, Any]]] = []
|
|
191
211
|
for desc in descriptors:
|
|
192
212
|
score = _rank(desc, query)
|
|
@@ -206,13 +226,31 @@ class ToolSearchTool(Tool):
|
|
|
206
226
|
},
|
|
207
227
|
)
|
|
208
228
|
|
|
229
|
+
# Promote deferred matches: activate() bumps the registry
|
|
230
|
+
# version, Stage 3 rebuilds state.tools next iteration, and the
|
|
231
|
+
# schemas reach the model on its next step within this turn.
|
|
232
|
+
activated: List[str] = []
|
|
233
|
+
if registry is not None:
|
|
234
|
+
for _, desc in top:
|
|
235
|
+
name = str(desc.get("name", ""))
|
|
236
|
+
if desc.get("_deferred") and self._activate(registry, name):
|
|
237
|
+
activated.append(name)
|
|
238
|
+
|
|
209
239
|
lines = [f"Matching {len(top)} tool(s) for {query!r}:"]
|
|
210
240
|
for i, (score, desc) in enumerate(top, 1):
|
|
211
241
|
name = desc.get("name", "?")
|
|
212
242
|
d = str(desc.get("description", "")).strip()
|
|
213
243
|
# Keep descriptions on one line for easy scanning.
|
|
214
244
|
one_liner = d.splitlines()[0] if d else "(no description)"
|
|
215
|
-
|
|
245
|
+
tag = ""
|
|
246
|
+
if registry is not None:
|
|
247
|
+
tag = " [activated]" if name in activated else " [available]"
|
|
248
|
+
lines.append(f"{i}. {name} — {one_liner}{tag}")
|
|
249
|
+
if activated:
|
|
250
|
+
lines.append(
|
|
251
|
+
"Activated tool schemas become available on your next step — "
|
|
252
|
+
"call them then."
|
|
253
|
+
)
|
|
216
254
|
|
|
217
255
|
return ToolResult(
|
|
218
256
|
content="\n".join(lines),
|
|
@@ -223,18 +261,51 @@ class ToolSearchTool(Tool):
|
|
|
223
261
|
{"name": d.get("name"), "score": s, "description": d.get("description")}
|
|
224
262
|
for s, d in top
|
|
225
263
|
],
|
|
264
|
+
"activated": activated,
|
|
226
265
|
"searched": len(descriptors),
|
|
227
266
|
},
|
|
228
267
|
)
|
|
229
268
|
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
269
|
+
@staticmethod
|
|
270
|
+
def _activate(registry: Any, name: str) -> bool:
|
|
271
|
+
"""Best-effort ``registry.activate(name)`` — never breaks the search."""
|
|
272
|
+
activate = getattr(registry, "activate", None)
|
|
273
|
+
if not callable(activate):
|
|
274
|
+
return False
|
|
275
|
+
try:
|
|
276
|
+
return bool(activate(name))
|
|
277
|
+
except Exception:
|
|
278
|
+
return False
|
|
279
|
+
|
|
280
|
+
def _collect_descriptors(
|
|
281
|
+
self, context: ToolContext, registry: Optional[Any]
|
|
282
|
+
) -> List[Dict[str, Any]]:
|
|
283
|
+
"""Prefer the live registry (full catalogue), then ``state_view``, then built-ins.
|
|
284
|
+
|
|
285
|
+
The registry path is what Stage 10 configures at runtime — it
|
|
286
|
+
covers MCP tools, custom host tools, skills, everything,
|
|
287
|
+
*including deferred tools whose schemas the model has not seen*.
|
|
288
|
+
Each descriptor is annotated with a private ``_deferred`` flag
|
|
289
|
+
so ``execute`` knows which matches need activation. The
|
|
290
|
+
``state_view`` path is the pre-2.42 behaviour (exposed tools
|
|
291
|
+
only); the built-in catalogue is a graceful default for test
|
|
292
|
+
harnesses running executors without a Stage wrapper.
|
|
237
293
|
"""
|
|
294
|
+
if registry is not None:
|
|
295
|
+
try:
|
|
296
|
+
out: List[Dict[str, Any]] = []
|
|
297
|
+
for tool in registry.list_all():
|
|
298
|
+
desc = tool.to_api_format()
|
|
299
|
+
if isinstance(desc, dict):
|
|
300
|
+
is_exposed = getattr(registry, "is_exposed", None)
|
|
301
|
+
desc["_deferred"] = (
|
|
302
|
+
not bool(is_exposed(tool.name)) if callable(is_exposed) else False
|
|
303
|
+
)
|
|
304
|
+
out.append(desc)
|
|
305
|
+
if out:
|
|
306
|
+
return out
|
|
307
|
+
except Exception:
|
|
308
|
+
pass # fall through to the view/built-in sources
|
|
238
309
|
view: Optional[Any] = getattr(context, "state_view", None)
|
|
239
310
|
if view is not None:
|
|
240
311
|
tools = getattr(view, "tools", None)
|