utim-cli 2.4.1__tar.gz → 2.4.2__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.
- {utim_cli-2.4.1 → utim_cli-2.4.2}/CHANGELOG.md +14 -0
- {utim_cli-2.4.1/utim_cli.egg-info → utim_cli-2.4.2}/PKG-INFO +2 -1
- {utim_cli-2.4.1 → utim_cli-2.4.2}/pyproject.toml +2 -1
- {utim_cli-2.4.1 → utim_cli-2.4.2}/utim/__init__.py +1 -1
- {utim_cli-2.4.1 → utim_cli-2.4.2}/utim_cli/__init__.py +1 -1
- {utim_cli-2.4.1 → utim_cli-2.4.2}/utim_cli/_version.py +1 -1
- {utim_cli-2.4.1 → utim_cli-2.4.2}/utim_cli/agent.py +44 -0
- {utim_cli-2.4.1 → utim_cli-2.4.2}/utim_cli/architecture_indexer.py +269 -251
- {utim_cli-2.4.1 → utim_cli-2.4.2}/utim_cli/ask_helper.py +5 -4
- {utim_cli-2.4.1 → utim_cli-2.4.2}/utim_cli/bootstrap.py +7 -0
- {utim_cli-2.4.1 → utim_cli-2.4.2}/utim_cli/brain.py +179 -202
- {utim_cli-2.4.1 → utim_cli-2.4.2}/utim_cli/client_utils.py +185 -48
- {utim_cli-2.4.1 → utim_cli-2.4.2}/utim_cli/config.py +6 -1
- utim_cli-2.4.2/utim_cli/constants.py +118 -0
- {utim_cli-2.4.1 → utim_cli-2.4.2}/utim_cli/context_pruner.py +45 -46
- {utim_cli-2.4.1 → utim_cli-2.4.2}/utim_cli/crawler/engine.py +187 -14
- {utim_cli-2.4.1 → utim_cli-2.4.2}/utim_cli/harbor.py +212 -201
- {utim_cli-2.4.1 → utim_cli-2.4.2}/utim_cli/mcp_client.py +359 -359
- {utim_cli-2.4.1 → utim_cli-2.4.2}/utim_cli/orchestrator.py +204 -109
- {utim_cli-2.4.1 → utim_cli-2.4.2}/utim_cli/orchestrator_helpers.py +163 -193
- {utim_cli-2.4.1 → utim_cli-2.4.2}/utim_cli/orchestrator_llm_transport.py +134 -49
- {utim_cli-2.4.1 → utim_cli-2.4.2}/utim_cli/orchestrator_tool_exec.py +35 -9
- {utim_cli-2.4.1 → utim_cli-2.4.2}/utim_cli/orchestrator_turn_history.py +165 -34
- {utim_cli-2.4.1 → utim_cli-2.4.2}/utim_cli/plugins/schema.py +257 -257
- {utim_cli-2.4.1 → utim_cli-2.4.2}/utim_cli/reflection.py +43 -4
- {utim_cli-2.4.1 → utim_cli-2.4.2}/utim_cli/sdk/session.py +340 -340
- {utim_cli-2.4.1 → utim_cli-2.4.2}/utim_cli/server/admin_auth.py +6 -0
- utim_cli-2.4.2/utim_cli/server/api_models_db.py +1287 -0
- {utim_cli-2.4.1 → utim_cli-2.4.2}/utim_cli/server/auth.py +142 -22
- {utim_cli-2.4.1 → utim_cli-2.4.2}/utim_cli/server/captcha.py +74 -7
- {utim_cli-2.4.1 → utim_cli-2.4.2}/utim_cli/server/concurrency.py +40 -0
- {utim_cli-2.4.1 → utim_cli-2.4.2}/utim_cli/server/db.py +325 -18
- {utim_cli-2.4.1 → utim_cli-2.4.2}/utim_cli/server/docs_md/docs.md +1 -1
- {utim_cli-2.4.1 → utim_cli-2.4.2}/utim_cli/server/docs_md/pricing.md +24 -24
- {utim_cli-2.4.1 → utim_cli-2.4.2}/utim_cli/server/email_utils.py +80 -1
- {utim_cli-2.4.1 → utim_cli-2.4.2}/utim_cli/server/key_rotator.py +127 -2
- {utim_cli-2.4.1 → utim_cli-2.4.2}/utim_cli/server/logging_config.py +1 -1
- {utim_cli-2.4.1 → utim_cli-2.4.2}/utim_cli/server/micro_batcher.py +343 -343
- {utim_cli-2.4.1 → utim_cli-2.4.2}/utim_cli/server/models.py +535 -228
- utim_cli-2.4.2/utim_cli/server/platform_billing.py +217 -0
- {utim_cli-2.4.1 → utim_cli-2.4.2}/utim_cli/server/pricing_updater.py +211 -198
- utim_cli-2.4.2/utim_cli/server/provider_balance.py +472 -0
- utim_cli-2.4.2/utim_cli/server/provider_discovery.py +546 -0
- utim_cli-2.4.2/utim_cli/server/provider_router.py +847 -0
- utim_cli-2.4.2/utim_cli/server/rate_limit.py +112 -0
- {utim_cli-2.4.1 → utim_cli-2.4.2}/utim_cli/server/router.py +393 -149
- {utim_cli-2.4.1 → utim_cli-2.4.2}/utim_cli/server/routes/__init__.py +8 -0
- {utim_cli-2.4.1 → utim_cli-2.4.2}/utim_cli/server/routes/admin_db_routes.py +95 -0
- {utim_cli-2.4.1 → utim_cli-2.4.2}/utim_cli/server/routes/admin_providers_routes.py +68 -0
- utim_cli-2.4.2/utim_cli/server/routes/api_gateway_extensions_routes.py +544 -0
- utim_cli-2.4.2/utim_cli/server/routes/api_key_routes.py +117 -0
- utim_cli-2.4.2/utim_cli/server/routes/api_models_admin_routes.py +967 -0
- utim_cli-2.4.2/utim_cli/server/routes/api_models_public_routes.py +2879 -0
- {utim_cli-2.4.1 → utim_cli-2.4.2}/utim_cli/server/routes/auth_routes.py +100 -17
- {utim_cli-2.4.1 → utim_cli-2.4.2}/utim_cli/server/routes/billing_routes.py +276 -276
- {utim_cli-2.4.1 → utim_cli-2.4.2}/utim_cli/server/routes/completion_routes.py +261 -109
- {utim_cli-2.4.1 → utim_cli-2.4.2}/utim_cli/server/routes/credit_routes.py +2 -2
- {utim_cli-2.4.1 → utim_cli-2.4.2}/utim_cli/server/routes/feedback_routes.py +106 -88
- utim_cli-2.4.2/utim_cli/server/routes/provider_compat_routes.py +575 -0
- {utim_cli-2.4.1 → utim_cli-2.4.2}/utim_cli/server/routes/quota_routes.py +131 -102
- {utim_cli-2.4.1 → utim_cli-2.4.2}/utim_cli/server/routes/quota_share_routes.py +768 -768
- {utim_cli-2.4.1 → utim_cli-2.4.2}/utim_cli/server/routes/rewards_routes.py +95 -62
- {utim_cli-2.4.1 → utim_cli-2.4.2}/utim_cli/server/routes/session_routes.py +201 -201
- {utim_cli-2.4.1 → utim_cli-2.4.2}/utim_cli/server/routes/share_routes.py +369 -369
- utim_cli-2.4.2/utim_cli/server/routes/wallet_routes.py +193 -0
- {utim_cli-2.4.1 → utim_cli-2.4.2}/utim_cli/server/routes/webhook_routes.py +58 -7
- utim_cli-2.4.2/utim_cli/server/signup_guard.py +237 -0
- {utim_cli-2.4.1 → utim_cli-2.4.2}/utim_cli/server/utils.py +354 -3
- {utim_cli-2.4.1 → utim_cli-2.4.2}/utim_cli/state.py +1 -0
- {utim_cli-2.4.1 → utim_cli-2.4.2}/utim_cli/subagent_manager.py +1621 -1548
- {utim_cli-2.4.1 → utim_cli-2.4.2}/utim_cli/tools.py +1056 -82
- {utim_cli-2.4.1 → utim_cli-2.4.2}/utim_cli/tui/model_dialog.py +345 -73
- {utim_cli-2.4.1 → utim_cli-2.4.2}/utim_cli/tui/resume_dialog.py +1 -1
- {utim_cli-2.4.1 → utim_cli-2.4.2}/utim_cli/tui/tools_dialog.py +9 -1
- {utim_cli-2.4.1 → utim_cli-2.4.2}/utim_cli/utim.py +330 -60
- {utim_cli-2.4.1 → utim_cli-2.4.2}/utim_cli/voice.py +23 -6
- utim_cli-2.4.2/utim_cli/voice_coding.py +288 -0
- utim_cli-2.4.2/utim_cli/voice_events.py +409 -0
- utim_cli-2.4.2/utim_cli/voice_handler.py +695 -0
- utim_cli-2.4.2/utim_cli/voice_instant.py +233 -0
- utim_cli-2.4.2/utim_cli/voice_orchestrator.py +392 -0
- utim_cli-2.4.2/utim_cli/voice_session.py +964 -0
- utim_cli-2.4.2/utim_cli/voice_stt.py +502 -0
- utim_cli-2.4.2/utim_cli/voice_tts.py +955 -0
- {utim_cli-2.4.1 → utim_cli-2.4.2/utim_cli.egg-info}/PKG-INFO +2 -1
- {utim_cli-2.4.1 → utim_cli-2.4.2}/utim_cli.egg-info/SOURCES.txt +19 -0
- {utim_cli-2.4.1 → utim_cli-2.4.2}/utim_cli.egg-info/requires.txt +1 -0
- utim_cli-2.4.1/utim_cli/constants.py +0 -50
- utim_cli-2.4.1/utim_cli/server/rate_limit.py +0 -38
- utim_cli-2.4.1/utim_cli/voice_handler.py +0 -0
- {utim_cli-2.4.1 → utim_cli-2.4.2}/LICENSE +0 -0
- {utim_cli-2.4.1 → utim_cli-2.4.2}/MANIFEST.in +0 -0
- {utim_cli-2.4.1 → utim_cli-2.4.2}/README.md +0 -0
- {utim_cli-2.4.1 → utim_cli-2.4.2}/setup.cfg +0 -0
- {utim_cli-2.4.1 → utim_cli-2.4.2}/setup.py +0 -0
- {utim_cli-2.4.1 → utim_cli-2.4.2}/utim_cli/_chip_test.py +0 -0
- {utim_cli-2.4.1 → utim_cli-2.4.2}/utim_cli/_verify_repro.py +0 -0
- {utim_cli-2.4.1 → utim_cli-2.4.2}/utim_cli/_verify_syntax.py +0 -0
- {utim_cli-2.4.1 → utim_cli-2.4.2}/utim_cli/_wizard_smoke_test.py +0 -0
- {utim_cli-2.4.1 → utim_cli-2.4.2}/utim_cli/auth.py +0 -0
- {utim_cli-2.4.1 → utim_cli-2.4.2}/utim_cli/backup.py +0 -0
- {utim_cli-2.4.1 → utim_cli-2.4.2}/utim_cli/billing.py +0 -0
- {utim_cli-2.4.1 → utim_cli-2.4.2}/utim_cli/blender_agent.py +0 -0
- {utim_cli-2.4.1 → utim_cli-2.4.2}/utim_cli/builtin/skills/utim-guide/SKILL.md +0 -0
- {utim_cli-2.4.1 → utim_cli-2.4.2}/utim_cli/context_inspector.py +0 -0
- {utim_cli-2.4.1 → utim_cli-2.4.2}/utim_cli/crawler/__init__.py +0 -0
- {utim_cli-2.4.1 → utim_cli-2.4.2}/utim_cli/crawler/markdown_distiller.py +0 -0
- {utim_cli-2.4.1 → utim_cli-2.4.2}/utim_cli/dependency_manager.py +0 -0
- {utim_cli-2.4.1 → utim_cli-2.4.2}/utim_cli/doctor.py +0 -0
- {utim_cli-2.4.1 → utim_cli-2.4.2}/utim_cli/evidence_registry.py +0 -0
- {utim_cli-2.4.1 → utim_cli-2.4.2}/utim_cli/knowledge_graph.py +0 -0
- {utim_cli-2.4.1 → utim_cli-2.4.2}/utim_cli/local_db.py +0 -0
- {utim_cli-2.4.1 → utim_cli-2.4.2}/utim_cli/logger.py +0 -0
- {utim_cli-2.4.1 → utim_cli-2.4.2}/utim_cli/mcp_clean_wrapper.py +0 -0
- {utim_cli-2.4.1 → utim_cli-2.4.2}/utim_cli/mcp_registry.json +0 -0
- {utim_cli-2.4.1 → utim_cli-2.4.2}/utim_cli/models.txt +0 -0
- {utim_cli-2.4.1 → utim_cli-2.4.2}/utim_cli/personalities.py +0 -0
- {utim_cli-2.4.1 → utim_cli-2.4.2}/utim_cli/platform_installer.py +0 -0
- {utim_cli-2.4.1 → utim_cli-2.4.2}/utim_cli/plugins/__init__.py +0 -0
- {utim_cli-2.4.1 → utim_cli-2.4.2}/utim_cli/plugins/hooks.py +0 -0
- {utim_cli-2.4.1 → utim_cli-2.4.2}/utim_cli/plugins/loader.py +0 -0
- {utim_cli-2.4.1 → utim_cli-2.4.2}/utim_cli/plugins/manager.py +0 -0
- {utim_cli-2.4.1 → utim_cli-2.4.2}/utim_cli/plugins/registry.py +0 -0
- {utim_cli-2.4.1 → utim_cli-2.4.2}/utim_cli/plugins/runtime.py +0 -0
- {utim_cli-2.4.1 → utim_cli-2.4.2}/utim_cli/plugins/tool_loader.py +0 -0
- {utim_cli-2.4.1 → utim_cli-2.4.2}/utim_cli/report.py +0 -0
- {utim_cli-2.4.1 → utim_cli-2.4.2}/utim_cli/scrapy_search.py +0 -0
- {utim_cli-2.4.1 → utim_cli-2.4.2}/utim_cli/sdk/__init__.py +0 -0
- {utim_cli-2.4.1 → utim_cli-2.4.2}/utim_cli/sdk/config.py +0 -0
- {utim_cli-2.4.1 → utim_cli-2.4.2}/utim_cli/sdk/context.py +0 -0
- {utim_cli-2.4.1 → utim_cli-2.4.2}/utim_cli/sdk/events.py +0 -0
- {utim_cli-2.4.1 → utim_cli-2.4.2}/utim_cli/sdk/handlers.py +0 -0
- {utim_cli-2.4.1 → utim_cli-2.4.2}/utim_cli/sdk/sidecar.py +0 -0
- {utim_cli-2.4.1 → utim_cli-2.4.2}/utim_cli/server/__init__.py +0 -0
- {utim_cli-2.4.1 → utim_cli-2.4.2}/utim_cli/server/attribution.py +0 -0
- {utim_cli-2.4.1 → utim_cli-2.4.2}/utim_cli/server/audit_log.py +0 -0
- {utim_cli-2.4.1 → utim_cli-2.4.2}/utim_cli/server/batch_processor.py +0 -0
- {utim_cli-2.4.1 → utim_cli-2.4.2}/utim_cli/server/cli_auth.py +0 -0
- {utim_cli-2.4.1 → utim_cli-2.4.2}/utim_cli/server/docs_md/SECRET_PROVISIONING.md +0 -0
- {utim_cli-2.4.1 → utim_cli-2.4.2}/utim_cli/server/docs_md/about.md +0 -0
- {utim_cli-2.4.1 → utim_cli-2.4.2}/utim_cli/server/docs_md/changelog.md +0 -0
- {utim_cli-2.4.1 → utim_cli-2.4.2}/utim_cli/server/docs_md/features.md +0 -0
- {utim_cli-2.4.1 → utim_cli-2.4.2}/utim_cli/server/docs_md/license.md +0 -0
- {utim_cli-2.4.1 → utim_cli-2.4.2}/utim_cli/server/docs_md/privacy.md +0 -0
- {utim_cli-2.4.1 → utim_cli-2.4.2}/utim_cli/server/docs_md/refund.md +0 -0
- {utim_cli-2.4.1 → utim_cli-2.4.2}/utim_cli/server/docs_md/support.md +0 -0
- {utim_cli-2.4.1 → utim_cli-2.4.2}/utim_cli/server/docs_md/terms.md +0 -0
- {utim_cli-2.4.1 → utim_cli-2.4.2}/utim_cli/server/exchange_rate.py +0 -0
- {utim_cli-2.4.1 → utim_cli-2.4.2}/utim_cli/server/firebase.py +0 -0
- {utim_cli-2.4.1 → utim_cli-2.4.2}/utim_cli/server/fix_duplicate_users.py +0 -0
- {utim_cli-2.4.1 → utim_cli-2.4.2}/utim_cli/server/history.py +0 -0
- {utim_cli-2.4.1 → utim_cli-2.4.2}/utim_cli/server/local_llm.py +0 -0
- {utim_cli-2.4.1 → utim_cli-2.4.2}/utim_cli/server/model_agent.py +0 -0
- {utim_cli-2.4.1 → utim_cli-2.4.2}/utim_cli/server/plan_integrity.py +0 -0
- {utim_cli-2.4.1 → utim_cli-2.4.2}/utim_cli/server/provision_build.py +0 -0
- {utim_cli-2.4.1 → utim_cli-2.4.2}/utim_cli/server/rewards_engine.py +0 -0
- {utim_cli-2.4.1 → utim_cli-2.4.2}/utim_cli/server/routes/admin_bonus_routes.py +0 -0
- {utim_cli-2.4.1 → utim_cli-2.4.2}/utim_cli/server/routes/marketplace_routes.py +0 -0
- {utim_cli-2.4.1 → utim_cli-2.4.2}/utim_cli/server/routes/referral_routes.py +0 -0
- {utim_cli-2.4.1 → utim_cli-2.4.2}/utim_cli/server/routes/security_routes.py +0 -0
- {utim_cli-2.4.1 → utim_cli-2.4.2}/utim_cli/server/security_alerts.py +0 -0
- {utim_cli-2.4.1 → utim_cli-2.4.2}/utim_cli/server/server.py +0 -0
- {utim_cli-2.4.1 → utim_cli-2.4.2}/utim_cli/server/storage_nodes.py +0 -0
- {utim_cli-2.4.1 → utim_cli-2.4.2}/utim_cli/share.py +0 -0
- {utim_cli-2.4.1 → utim_cli-2.4.2}/utim_cli/share_tui.py +0 -0
- {utim_cli-2.4.1 → utim_cli-2.4.2}/utim_cli/situational_scoring.py +0 -0
- {utim_cli-2.4.1 → utim_cli-2.4.2}/utim_cli/syntax_fix.py +0 -0
- {utim_cli-2.4.1 → utim_cli-2.4.2}/utim_cli/task_dispatcher.py +0 -0
- {utim_cli-2.4.1 → utim_cli-2.4.2}/utim_cli/task_logger.py +0 -0
- {utim_cli-2.4.1 → utim_cli-2.4.2}/utim_cli/tools_grep.py +0 -0
- {utim_cli-2.4.1 → utim_cli-2.4.2}/utim_cli/tui/__init__.py +0 -0
- {utim_cli-2.4.1 → utim_cli-2.4.2}/utim_cli/tui/compression_dialog.py +0 -0
- {utim_cli-2.4.1 → utim_cli-2.4.2}/utim_cli/tui/feedback_dialog.py +0 -0
- {utim_cli-2.4.1 → utim_cli-2.4.2}/utim_cli/tui/history_dialog.py +0 -0
- {utim_cli-2.4.1 → utim_cli-2.4.2}/utim_cli/tui/marketplace_app_state.py +0 -0
- {utim_cli-2.4.1 → utim_cli-2.4.2}/utim_cli/tui/marketplace_dialog.py +0 -0
- {utim_cli-2.4.1 → utim_cli-2.4.2}/utim_cli/tui/marketplace_layout_engine.py +0 -0
- {utim_cli-2.4.1 → utim_cli-2.4.2}/utim_cli/tui/mcp_dialog.py +0 -0
- {utim_cli-2.4.1 → utim_cli-2.4.2}/utim_cli/tui/miniagents_dialog.py +0 -0
- {utim_cli-2.4.1 → utim_cli-2.4.2}/utim_cli/tui/personality_dialog.py +0 -0
- {utim_cli-2.4.1 → utim_cli-2.4.2}/utim_cli/tui/plugins_dialog.py +0 -0
- {utim_cli-2.4.1 → utim_cli-2.4.2}/utim_cli/tui/publish_dialog.py +0 -0
- {utim_cli-2.4.1 → utim_cli-2.4.2}/utim_cli/tui/quota_dialog.py +0 -0
- {utim_cli-2.4.1 → utim_cli-2.4.2}/utim_cli/tui/quota_redeem_dialog.py +0 -0
- {utim_cli-2.4.1 → utim_cli-2.4.2}/utim_cli/tui/quota_share_dialog.py +0 -0
- {utim_cli-2.4.1 → utim_cli-2.4.2}/utim_cli/tui/rewards_tui.py +0 -0
- {utim_cli-2.4.1 → utim_cli-2.4.2}/utim_cli/tui/skills_dialog.py +0 -0
- {utim_cli-2.4.1 → utim_cli-2.4.2}/utim_cli/tui/subagents_dialog.py +0 -0
- {utim_cli-2.4.1 → utim_cli-2.4.2}/utim_cli/tui/tasks_dialog.py +0 -0
- {utim_cli-2.4.1 → utim_cli-2.4.2}/utim_cli/tui/thinking_display.py +0 -0
- {utim_cli-2.4.1 → utim_cli-2.4.2}/utim_cli/tui/update_dialog.py +0 -0
- {utim_cli-2.4.1 → utim_cli-2.4.2}/utim_cli/update_checker.py +0 -0
- {utim_cli-2.4.1 → utim_cli-2.4.2}/utim_cli/utilities.py +0 -0
- {utim_cli-2.4.1 → utim_cli-2.4.2}/utim_cli/utimmodel.txt +0 -0
- {utim_cli-2.4.1 → utim_cli-2.4.2}/utim_cli/vector_memory.py +0 -0
- {utim_cli-2.4.1 → utim_cli-2.4.2}/utim_cli/wheel.py +0 -0
- {utim_cli-2.4.1 → utim_cli-2.4.2}/utim_cli/workspace.py +0 -0
- {utim_cli-2.4.1 → utim_cli-2.4.2}/utim_cli.egg-info/dependency_links.txt +0 -0
- {utim_cli-2.4.1 → utim_cli-2.4.2}/utim_cli.egg-info/entry_points.txt +0 -0
- {utim_cli-2.4.1 → utim_cli-2.4.2}/utim_cli.egg-info/top_level.txt +0 -0
|
@@ -1,5 +1,19 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [2.4.2] - 2026-10-13
|
|
4
|
+
|
|
5
|
+
### 🤖 Sub-Agent Swarm Model Configuration & Hardcoded Lock
|
|
6
|
+
- **Swarm Model Settings in `/model`**: Added a dedicated configuration section in the `/model` dialog allowing users to choose the model used across all swarm subagents.
|
|
7
|
+
- **Strict User Lock**: When a specific model is selected, it is hardcoded—the main agent cannot override or change it, even if custom `model_id` parameters are passed to `invoke_subagents`.
|
|
8
|
+
- **Dynamic Auto Mode**: Added a "Let the agent decide (Auto)" option allowing the main agent to dynamically assign models per task or fall back to its active model.
|
|
9
|
+
|
|
10
|
+
### ⚡ Non-Interactive Command Execution (`--hard-skip-perms`)
|
|
11
|
+
- **Hard Skip Permissions**: Added the `--hard-skip-perms` CLI flag, `UTIM_HARD_SKIP_PERMS=1` environment variable, and `/hard-skip-perms` slash command.
|
|
12
|
+
- **Unrestricted Command Execution**: Automatically approves terminal commands without prompting for user confirmation, even for unsafe or destructive commands.
|
|
13
|
+
|
|
14
|
+
### 🐛 Bug Fixes
|
|
15
|
+
- **Premature Halting Fix**: Fixed an issue where the model abruptly stopped if it completed inspection tools and emitted an action promise without executing further mutation tools, now triggering an automatic continuation nudge.
|
|
16
|
+
|
|
3
17
|
## [2.4.1] - 2026-09-18
|
|
4
18
|
|
|
5
19
|
### Bug Fixes
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: utim-cli
|
|
3
|
-
Version: 2.4.
|
|
3
|
+
Version: 2.4.2
|
|
4
4
|
Summary: UTIM – Universal Terminal Intelligence Manager. A powerful agentic AI coding assistant for your terminal.
|
|
5
5
|
License: Emend AI Proprietary EULA
|
|
6
6
|
Project-URL: Homepage, https://utim.dev
|
|
@@ -22,6 +22,7 @@ Description-Content-Type: text/markdown
|
|
|
22
22
|
License-File: LICENSE
|
|
23
23
|
Requires-Dist: requests==2.31.0
|
|
24
24
|
Requires-Dist: aiohttp>=3.9.5
|
|
25
|
+
Requires-Dist: httpx>=0.25.0
|
|
25
26
|
Requires-Dist: python-dotenv==1.0.1
|
|
26
27
|
Requires-Dist: urllib3==1.26.18
|
|
27
28
|
Requires-Dist: charset-normalizer==3.3.2
|
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "utim-cli"
|
|
7
|
-
version = "2.4.
|
|
7
|
+
version = "2.4.2"
|
|
8
8
|
|
|
9
9
|
description = "UTIM – Universal Terminal Intelligence Manager. A powerful agentic AI coding assistant for your terminal."
|
|
10
10
|
readme = "README.md"
|
|
@@ -25,6 +25,7 @@ classifiers = [
|
|
|
25
25
|
dependencies = [
|
|
26
26
|
"requests==2.31.0",
|
|
27
27
|
"aiohttp>=3.9.5",
|
|
28
|
+
"httpx>=0.25.0",
|
|
28
29
|
"python-dotenv==1.0.1",
|
|
29
30
|
"urllib3==1.26.18",
|
|
30
31
|
"charset-normalizer==3.3.2",
|
|
@@ -14,7 +14,7 @@ Quickstart:
|
|
|
14
14
|
try:
|
|
15
15
|
from utim_cli._version import VERSION as __version__
|
|
16
16
|
except ImportError:
|
|
17
|
-
__version__ = "2.4.
|
|
17
|
+
__version__ = "2.4.2"
|
|
18
18
|
|
|
19
19
|
# Developer-friendly core classes (similar to `import genai` / `import openai`)
|
|
20
20
|
from utim_cli.sdk.session import UtimSession as Session
|
|
@@ -454,6 +454,15 @@ class ReActAgent:
|
|
|
454
454
|
"tool_calls": tool_calls,
|
|
455
455
|
})
|
|
456
456
|
|
|
457
|
+
# Clear any stale vision images and videos from a previous iteration
|
|
458
|
+
try:
|
|
459
|
+
import utim_cli.tools as _tools_module
|
|
460
|
+
_tools_module._pending_vision_images.clear()
|
|
461
|
+
_tools_module._pending_vision_videos.clear()
|
|
462
|
+
_tools_module._active_model_id = self.model_id
|
|
463
|
+
except Exception:
|
|
464
|
+
pass
|
|
465
|
+
|
|
457
466
|
# Execute each tool call
|
|
458
467
|
for i, tc in enumerate(tool_calls):
|
|
459
468
|
result = self._execute_tool_call(tc)
|
|
@@ -465,6 +474,41 @@ class ReActAgent:
|
|
|
465
474
|
"tool_call_id": tc_id,
|
|
466
475
|
"content": result,
|
|
467
476
|
})
|
|
477
|
+
|
|
478
|
+
# Drain and inject vision images & native videos into conversation
|
|
479
|
+
try:
|
|
480
|
+
import utim_cli.tools as _tools_module
|
|
481
|
+
_vision_queue = getattr(_tools_module, "_pending_vision_images", [])
|
|
482
|
+
for _vimg in list(_vision_queue or []):
|
|
483
|
+
self.messages.append({
|
|
484
|
+
"role": "user",
|
|
485
|
+
"content": [
|
|
486
|
+
{"type": "text", "text": _vimg.get("group_header") or f"[{_vimg.get('meta', 'Image')}]"},
|
|
487
|
+
{
|
|
488
|
+
"type": "image_url",
|
|
489
|
+
"image_url": {"url": f"data:{_vimg['mime']};base64,{_vimg['b64']}"},
|
|
490
|
+
},
|
|
491
|
+
],
|
|
492
|
+
})
|
|
493
|
+
if _vision_queue:
|
|
494
|
+
_vision_queue.clear()
|
|
495
|
+
|
|
496
|
+
_video_queue = getattr(_tools_module, "_pending_vision_videos", [])
|
|
497
|
+
for _vent in list(_video_queue or []):
|
|
498
|
+
self.messages.append({
|
|
499
|
+
"role": "user",
|
|
500
|
+
"content": [
|
|
501
|
+
{"type": "text", "text": _vent.get("header") or f"[Video: {_vent.get('filepath', '')}]"},
|
|
502
|
+
{
|
|
503
|
+
"type": "video_url",
|
|
504
|
+
"video_url": {"url": f"data:{_vent['mime']};base64,{_vent['b64']}"},
|
|
505
|
+
},
|
|
506
|
+
],
|
|
507
|
+
})
|
|
508
|
+
if _video_queue:
|
|
509
|
+
_video_queue.clear()
|
|
510
|
+
except Exception:
|
|
511
|
+
pass
|
|
468
512
|
else:
|
|
469
513
|
self.console.print(f"\n[bold yellow]Agent paused after reaching maximum iterations ({max_iterations}).[/bold yellow]")
|
|
470
514
|
self.console.print("[dim]You can type 'continue' to resume the task.[/dim]\n")
|