utim-cli 2.2.3__tar.gz → 2.3.1__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.2.3 → utim_cli-2.3.1}/CHANGELOG.md +10 -0
- {utim_cli-2.2.3/utim_cli.egg-info → utim_cli-2.3.1}/PKG-INFO +1 -1
- {utim_cli-2.2.3 → utim_cli-2.3.1}/pyproject.toml +3 -2
- utim_cli-2.3.1/utim/__init__.py +76 -0
- {utim_cli-2.2.3 → utim_cli-2.3.1}/utim_cli/__init__.py +1 -1
- {utim_cli-2.2.3 → utim_cli-2.3.1}/utim_cli/_version.py +1 -1
- {utim_cli-2.2.3 → utim_cli-2.3.1}/utim_cli/agent.py +12 -1
- utim_cli-2.3.1/utim_cli/ask_helper.py +652 -0
- {utim_cli-2.2.3 → utim_cli-2.3.1}/utim_cli/brain.py +199 -24
- {utim_cli-2.2.3 → utim_cli-2.3.1}/utim_cli/constants.py +2 -0
- {utim_cli-2.2.3 → utim_cli-2.3.1}/utim_cli/context_pruner.py +32 -19
- {utim_cli-2.2.3 → utim_cli-2.3.1}/utim_cli/orchestrator.py +761 -382
- utim_cli-2.3.1/utim_cli/sdk/__init__.py +52 -0
- utim_cli-2.3.1/utim_cli/sdk/config.py +41 -0
- utim_cli-2.3.1/utim_cli/sdk/context.py +67 -0
- utim_cli-2.3.1/utim_cli/sdk/events.py +166 -0
- utim_cli-2.3.1/utim_cli/sdk/handlers.py +60 -0
- utim_cli-2.3.1/utim_cli/sdk/session.py +333 -0
- utim_cli-2.3.1/utim_cli/sdk/sidecar.py +164 -0
- utim_cli-2.3.1/utim_cli/server/admin_auth.py +163 -0
- {utim_cli-2.2.3 → utim_cli-2.3.1}/utim_cli/server/auth.py +46 -0
- {utim_cli-2.2.3 → utim_cli-2.3.1}/utim_cli/server/db.py +62 -11
- {utim_cli-2.2.3 → utim_cli-2.3.1}/utim_cli/server/docs_md/docs.md +1 -0
- {utim_cli-2.2.3 → utim_cli-2.3.1}/utim_cli/server/docs_md/features.md +1 -0
- utim_cli-2.3.1/utim_cli/server/local_llm.py +39 -0
- {utim_cli-2.2.3 → utim_cli-2.3.1}/utim_cli/server/micro_batcher.py +114 -69
- utim_cli-2.3.1/utim_cli/server/model_agent.py +41 -0
- {utim_cli-2.2.3 → utim_cli-2.3.1}/utim_cli/server/models.py +120 -75
- utim_cli-2.3.1/utim_cli/server/pricing_updater.py +215 -0
- {utim_cli-2.2.3 → utim_cli-2.3.1}/utim_cli/server/router.py +266 -51
- {utim_cli-2.2.3 → utim_cli-2.3.1}/utim_cli/server/routes/completion_routes.py +37 -31
- {utim_cli-2.2.3 → utim_cli-2.3.1}/utim_cli/server/routes/rewards_routes.py +15 -19
- utim_cli-2.3.1/utim_cli/server/server.py +94 -0
- {utim_cli-2.2.3 → utim_cli-2.3.1}/utim_cli/share.py +99 -99
- {utim_cli-2.2.3 → utim_cli-2.3.1}/utim_cli/state.py +1 -0
- utim_cli-2.3.1/utim_cli/subagent_manager.py +1280 -0
- utim_cli-2.3.1/utim_cli/task_dispatcher.py +414 -0
- {utim_cli-2.2.3 → utim_cli-2.3.1}/utim_cli/tools.py +521 -39
- {utim_cli-2.2.3 → utim_cli-2.3.1}/utim_cli/tui/marketplace_layout_engine.py +21 -21
- {utim_cli-2.2.3 → utim_cli-2.3.1}/utim_cli/tui/mcp_dialog.py +2 -2
- {utim_cli-2.2.3 → utim_cli-2.3.1}/utim_cli/tui/miniagents_dialog.py +21 -23
- {utim_cli-2.2.3 → utim_cli-2.3.1}/utim_cli/tui/model_dialog.py +142 -414
- {utim_cli-2.2.3 → utim_cli-2.3.1}/utim_cli/tui/skills_dialog.py +19 -23
- {utim_cli-2.2.3 → utim_cli-2.3.1}/utim_cli/tui/subagents_dialog.py +2 -2
- {utim_cli-2.2.3 → utim_cli-2.3.1}/utim_cli/utim.py +535 -96
- {utim_cli-2.2.3 → utim_cli-2.3.1/utim_cli.egg-info}/PKG-INFO +1 -1
- {utim_cli-2.2.3 → utim_cli-2.3.1}/utim_cli.egg-info/SOURCES.txt +11 -0
- {utim_cli-2.2.3 → utim_cli-2.3.1}/utim_cli.egg-info/top_level.txt +1 -0
- utim_cli-2.2.3/utim_cli/server/local_llm.py +0 -380
- utim_cli-2.2.3/utim_cli/server/model_agent.py +0 -233
- utim_cli-2.2.3/utim_cli/server/pricing_updater.py +0 -144
- utim_cli-2.2.3/utim_cli/server/server.py +0 -60
- utim_cli-2.2.3/utim_cli/subagent_manager.py +0 -724
- {utim_cli-2.2.3 → utim_cli-2.3.1}/LICENSE +0 -0
- {utim_cli-2.2.3 → utim_cli-2.3.1}/MANIFEST.in +0 -0
- {utim_cli-2.2.3 → utim_cli-2.3.1}/README.md +0 -0
- {utim_cli-2.2.3 → utim_cli-2.3.1}/setup.cfg +0 -0
- {utim_cli-2.2.3 → utim_cli-2.3.1}/setup.py +0 -0
- {utim_cli-2.2.3 → utim_cli-2.3.1}/utim_cli/_check_obj.py +0 -0
- {utim_cli-2.2.3 → utim_cli-2.3.1}/utim_cli/_find_mcp.py +0 -0
- {utim_cli-2.2.3 → utim_cli-2.3.1}/utim_cli/_find_plan.py +0 -0
- {utim_cli-2.2.3 → utim_cli-2.3.1}/utim_cli/_find_tool.py +0 -0
- {utim_cli-2.2.3 → utim_cli-2.3.1}/utim_cli/_patch_multimodal.py +0 -0
- {utim_cli-2.2.3 → utim_cli-2.3.1}/utim_cli/_test_regex.py +0 -0
- {utim_cli-2.2.3 → utim_cli-2.3.1}/utim_cli/auth.py +0 -0
- {utim_cli-2.2.3 → utim_cli-2.3.1}/utim_cli/backup.py +0 -0
- {utim_cli-2.2.3 → utim_cli-2.3.1}/utim_cli/billing.py +0 -0
- {utim_cli-2.2.3 → utim_cli-2.3.1}/utim_cli/blender_agent.py +0 -0
- {utim_cli-2.2.3 → utim_cli-2.3.1}/utim_cli/bootstrap.py +0 -0
- {utim_cli-2.2.3 → utim_cli-2.3.1}/utim_cli/client_utils.py +0 -0
- {utim_cli-2.2.3 → utim_cli-2.3.1}/utim_cli/config.py +0 -0
- {utim_cli-2.2.3 → utim_cli-2.3.1}/utim_cli/doctor.py +0 -0
- {utim_cli-2.2.3 → utim_cli-2.3.1}/utim_cli/harbor.py +0 -0
- {utim_cli-2.2.3 → utim_cli-2.3.1}/utim_cli/knowledge_graph.py +0 -0
- {utim_cli-2.2.3 → utim_cli-2.3.1}/utim_cli/local_db.py +0 -0
- {utim_cli-2.2.3 → utim_cli-2.3.1}/utim_cli/logger.py +0 -0
- {utim_cli-2.2.3 → utim_cli-2.3.1}/utim_cli/mcp_clean_wrapper.py +0 -0
- {utim_cli-2.2.3 → utim_cli-2.3.1}/utim_cli/mcp_client.py +0 -0
- {utim_cli-2.2.3 → utim_cli-2.3.1}/utim_cli/mcp_registry.json +0 -0
- {utim_cli-2.2.3 → utim_cli-2.3.1}/utim_cli/models.txt +0 -0
- {utim_cli-2.2.3 → utim_cli-2.3.1}/utim_cli/reflection.py +0 -0
- {utim_cli-2.2.3 → utim_cli-2.3.1}/utim_cli/report.py +0 -0
- {utim_cli-2.2.3 → utim_cli-2.3.1}/utim_cli/scrapy_search.py +0 -0
- {utim_cli-2.2.3 → utim_cli-2.3.1}/utim_cli/server/__init__.py +0 -0
- {utim_cli-2.2.3 → utim_cli-2.3.1}/utim_cli/server/attribution.py +0 -0
- {utim_cli-2.2.3 → utim_cli-2.3.1}/utim_cli/server/audit_log.py +0 -0
- {utim_cli-2.2.3 → utim_cli-2.3.1}/utim_cli/server/batch_processor.py +0 -0
- {utim_cli-2.2.3 → utim_cli-2.3.1}/utim_cli/server/captcha.py +0 -0
- {utim_cli-2.2.3 → utim_cli-2.3.1}/utim_cli/server/cli_auth.py +0 -0
- {utim_cli-2.2.3 → utim_cli-2.3.1}/utim_cli/server/docs_md/SECRET_PROVISIONING.md +0 -0
- {utim_cli-2.2.3 → utim_cli-2.3.1}/utim_cli/server/docs_md/about.md +0 -0
- {utim_cli-2.2.3 → utim_cli-2.3.1}/utim_cli/server/docs_md/changelog.md +0 -0
- {utim_cli-2.2.3 → utim_cli-2.3.1}/utim_cli/server/docs_md/license.md +0 -0
- {utim_cli-2.2.3 → utim_cli-2.3.1}/utim_cli/server/docs_md/pricing.md +0 -0
- {utim_cli-2.2.3 → utim_cli-2.3.1}/utim_cli/server/docs_md/privacy.md +0 -0
- {utim_cli-2.2.3 → utim_cli-2.3.1}/utim_cli/server/docs_md/refund.md +0 -0
- {utim_cli-2.2.3 → utim_cli-2.3.1}/utim_cli/server/docs_md/support.md +0 -0
- {utim_cli-2.2.3 → utim_cli-2.3.1}/utim_cli/server/docs_md/terms.md +0 -0
- {utim_cli-2.2.3 → utim_cli-2.3.1}/utim_cli/server/email_utils.py +0 -0
- {utim_cli-2.2.3 → utim_cli-2.3.1}/utim_cli/server/exchange_rate.py +0 -0
- {utim_cli-2.2.3 → utim_cli-2.3.1}/utim_cli/server/firebase.py +0 -0
- {utim_cli-2.2.3 → utim_cli-2.3.1}/utim_cli/server/fix_duplicate_users.py +0 -0
- {utim_cli-2.2.3 → utim_cli-2.3.1}/utim_cli/server/history.py +0 -0
- {utim_cli-2.2.3 → utim_cli-2.3.1}/utim_cli/server/logging_config.py +0 -0
- {utim_cli-2.2.3 → utim_cli-2.3.1}/utim_cli/server/provision_build.py +0 -0
- {utim_cli-2.2.3 → utim_cli-2.3.1}/utim_cli/server/rate_limit.py +0 -0
- {utim_cli-2.2.3 → utim_cli-2.3.1}/utim_cli/server/rewards_engine.py +0 -0
- {utim_cli-2.2.3 → utim_cli-2.3.1}/utim_cli/server/routes/__init__.py +0 -0
- {utim_cli-2.2.3 → utim_cli-2.3.1}/utim_cli/server/routes/auth_routes.py +0 -0
- {utim_cli-2.2.3 → utim_cli-2.3.1}/utim_cli/server/routes/billing_routes.py +0 -0
- {utim_cli-2.2.3 → utim_cli-2.3.1}/utim_cli/server/routes/credit_routes.py +0 -0
- {utim_cli-2.2.3 → utim_cli-2.3.1}/utim_cli/server/routes/feedback_routes.py +0 -0
- {utim_cli-2.2.3 → utim_cli-2.3.1}/utim_cli/server/routes/marketplace_routes.py +0 -0
- {utim_cli-2.2.3 → utim_cli-2.3.1}/utim_cli/server/routes/quota_routes.py +0 -0
- {utim_cli-2.2.3 → utim_cli-2.3.1}/utim_cli/server/routes/quota_share_routes.py +0 -0
- {utim_cli-2.2.3 → utim_cli-2.3.1}/utim_cli/server/routes/referral_routes.py +0 -0
- {utim_cli-2.2.3 → utim_cli-2.3.1}/utim_cli/server/routes/security_routes.py +0 -0
- {utim_cli-2.2.3 → utim_cli-2.3.1}/utim_cli/server/routes/session_routes.py +0 -0
- {utim_cli-2.2.3 → utim_cli-2.3.1}/utim_cli/server/routes/share_routes.py +0 -0
- {utim_cli-2.2.3 → utim_cli-2.3.1}/utim_cli/server/storage_nodes.py +0 -0
- {utim_cli-2.2.3 → utim_cli-2.3.1}/utim_cli/share_tui.py +0 -0
- {utim_cli-2.2.3 → utim_cli-2.3.1}/utim_cli/situational_scoring.py +0 -0
- {utim_cli-2.2.3 → utim_cli-2.3.1}/utim_cli/tui/__init__.py +0 -0
- {utim_cli-2.2.3 → utim_cli-2.3.1}/utim_cli/tui/feedback_dialog.py +0 -0
- {utim_cli-2.2.3 → utim_cli-2.3.1}/utim_cli/tui/history_dialog.py +0 -0
- {utim_cli-2.2.3 → utim_cli-2.3.1}/utim_cli/tui/marketplace_app_state.py +0 -0
- {utim_cli-2.2.3 → utim_cli-2.3.1}/utim_cli/tui/marketplace_dialog.py +0 -0
- {utim_cli-2.2.3 → utim_cli-2.3.1}/utim_cli/tui/publish_dialog.py +0 -0
- {utim_cli-2.2.3 → utim_cli-2.3.1}/utim_cli/tui/quota_dialog.py +0 -0
- {utim_cli-2.2.3 → utim_cli-2.3.1}/utim_cli/tui/quota_redeem_dialog.py +0 -0
- {utim_cli-2.2.3 → utim_cli-2.3.1}/utim_cli/tui/quota_share_dialog.py +0 -0
- {utim_cli-2.2.3 → utim_cli-2.3.1}/utim_cli/tui/resume_dialog.py +0 -0
- {utim_cli-2.2.3 → utim_cli-2.3.1}/utim_cli/tui/rewards_tui.py +0 -0
- {utim_cli-2.2.3 → utim_cli-2.3.1}/utim_cli/tui/thinking_display.py +0 -0
- {utim_cli-2.2.3 → utim_cli-2.3.1}/utim_cli/tui/tools_dialog.py +0 -0
- {utim_cli-2.2.3 → utim_cli-2.3.1}/utim_cli/tui/update_dialog.py +0 -0
- {utim_cli-2.2.3 → utim_cli-2.3.1}/utim_cli/utilities.py +0 -0
- {utim_cli-2.2.3 → utim_cli-2.3.1}/utim_cli/utimmodel.txt +0 -0
- {utim_cli-2.2.3 → utim_cli-2.3.1}/utim_cli/vector_memory.py +0 -0
- {utim_cli-2.2.3 → utim_cli-2.3.1}/utim_cli/wheel.py +0 -0
- {utim_cli-2.2.3 → utim_cli-2.3.1}/utim_cli/workspace.py +0 -0
- {utim_cli-2.2.3 → utim_cli-2.3.1}/utim_cli.egg-info/dependency_links.txt +0 -0
- {utim_cli-2.2.3 → utim_cli-2.3.1}/utim_cli.egg-info/entry_points.txt +0 -0
- {utim_cli-2.2.3 → utim_cli-2.3.1}/utim_cli.egg-info/requires.txt +0 -0
|
@@ -1,5 +1,15 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## [2.3.1] - 2026-08-19
|
|
4
|
+
|
|
5
|
+
### 🛠️ Fixes & Enhancements
|
|
6
|
+
- Major bug fixes in agent loop and enhancements
|
|
7
|
+
|
|
8
|
+
## [2.3.0] - 2026-08-18
|
|
9
|
+
|
|
10
|
+
### 🚀 Features & Enhancements
|
|
11
|
+
- **UTIM Sidecar**: UTIM sidecar is here. Use `/ask` command with your prompt to activate sidecar while your agent is running for parallel research.
|
|
12
|
+
|
|
3
13
|
## [2.2.3] - 2026-08-16
|
|
4
14
|
|
|
5
15
|
### 🛠️ Fixes & Minor Polish
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.1
|
|
2
2
|
Name: utim-cli
|
|
3
|
-
Version: 2.
|
|
3
|
+
Version: 2.3.1
|
|
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
|
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "utim-cli"
|
|
7
|
-
version = "2.
|
|
7
|
+
version = "2.3.1"
|
|
8
8
|
|
|
9
9
|
description = "UTIM – Universal Terminal Intelligence Manager. A powerful agentic AI coding assistant for your terminal."
|
|
10
10
|
readme = "README.md"
|
|
@@ -93,7 +93,7 @@ utimlite = "utim_cli.utim:main_cli_entry"
|
|
|
93
93
|
|
|
94
94
|
|
|
95
95
|
[tool.setuptools.packages.find]
|
|
96
|
-
include = ["utim_cli*"]
|
|
96
|
+
include = ["utim*", "utim_cli*"]
|
|
97
97
|
exclude = ["tests*", "landing*", "scripts*"]
|
|
98
98
|
|
|
99
99
|
[tool.setuptools.package-data]
|
|
@@ -101,6 +101,7 @@ utim_cli = ["mcp_registry.json", "_version.py", "utimmodel.txt", "models.txt", "
|
|
|
101
101
|
|
|
102
102
|
|
|
103
103
|
[tool.pytest.ini_options]
|
|
104
|
+
addopts = "-m 'not benchmark and not slow and not integration' --ignore=tests/test_benchmark.py --ignore=tests/bench_agent.py"
|
|
104
105
|
markers = [
|
|
105
106
|
"smoke: fast install validation tests (no live credentials required)",
|
|
106
107
|
"slow: tests that make network calls or take more than 10 seconds",
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
"""
|
|
2
|
+
UTIM Developer SDK
|
|
3
|
+
------------------
|
|
4
|
+
Unified autonomous coding agent SDK.
|
|
5
|
+
|
|
6
|
+
Quickstart:
|
|
7
|
+
import utim
|
|
8
|
+
|
|
9
|
+
session = utim.Session()
|
|
10
|
+
async for event in session.send_message("Explain this codebase"):
|
|
11
|
+
if event.type == utim.EventType.TOKEN:
|
|
12
|
+
print(event.text, end="", flush=True)
|
|
13
|
+
"""
|
|
14
|
+
try:
|
|
15
|
+
from utim_cli._version import VERSION as __version__
|
|
16
|
+
except ImportError:
|
|
17
|
+
__version__ = "2.3.0"
|
|
18
|
+
|
|
19
|
+
# Developer-friendly core classes (similar to `import genai` / `import openai`)
|
|
20
|
+
from utim_cli.sdk.session import UtimSession as Session
|
|
21
|
+
from utim_cli.sdk.config import UtimConfig as Config
|
|
22
|
+
from utim_cli.sdk.context import IDEContext, Diagnostic
|
|
23
|
+
from utim_cli.sdk.events import (
|
|
24
|
+
AgentEvent,
|
|
25
|
+
UtimEventType as EventType,
|
|
26
|
+
TokenStreamEvent,
|
|
27
|
+
ThoughtStreamEvent,
|
|
28
|
+
ToolCallStartEvent,
|
|
29
|
+
ToolCallEndEvent,
|
|
30
|
+
FileEditEvent,
|
|
31
|
+
CommandExecEvent,
|
|
32
|
+
ConfirmationRequestEvent,
|
|
33
|
+
PlanUpdateEvent,
|
|
34
|
+
SubagentEvent,
|
|
35
|
+
TurnEndEvent,
|
|
36
|
+
)
|
|
37
|
+
from utim_cli.sdk.handlers import (
|
|
38
|
+
ConfirmationHandler,
|
|
39
|
+
AutoApprovalHandler,
|
|
40
|
+
CallbackApprovalHandler,
|
|
41
|
+
)
|
|
42
|
+
from utim_cli.sdk.sidecar import UtimSidecarServer as SidecarServer
|
|
43
|
+
|
|
44
|
+
# Backwards compatible alias names
|
|
45
|
+
UtimSession = Session
|
|
46
|
+
UtimConfig = Config
|
|
47
|
+
UtimEventType = EventType
|
|
48
|
+
UtimSidecarServer = SidecarServer
|
|
49
|
+
|
|
50
|
+
__all__ = [
|
|
51
|
+
"__version__",
|
|
52
|
+
"Session",
|
|
53
|
+
"Config",
|
|
54
|
+
"IDEContext",
|
|
55
|
+
"Diagnostic",
|
|
56
|
+
"EventType",
|
|
57
|
+
"AgentEvent",
|
|
58
|
+
"TokenStreamEvent",
|
|
59
|
+
"ThoughtStreamEvent",
|
|
60
|
+
"ToolCallStartEvent",
|
|
61
|
+
"ToolCallEndEvent",
|
|
62
|
+
"FileEditEvent",
|
|
63
|
+
"CommandExecEvent",
|
|
64
|
+
"ConfirmationRequestEvent",
|
|
65
|
+
"PlanUpdateEvent",
|
|
66
|
+
"SubagentEvent",
|
|
67
|
+
"TurnEndEvent",
|
|
68
|
+
"ConfirmationHandler",
|
|
69
|
+
"AutoApprovalHandler",
|
|
70
|
+
"CallbackApprovalHandler",
|
|
71
|
+
"SidecarServer",
|
|
72
|
+
"UtimSession",
|
|
73
|
+
"UtimConfig",
|
|
74
|
+
"UtimEventType",
|
|
75
|
+
"UtimSidecarServer",
|
|
76
|
+
]
|
|
@@ -111,7 +111,18 @@ class ReActAgent:
|
|
|
111
111
|
if func_name == "read_file":
|
|
112
112
|
lines = result.split("\n")
|
|
113
113
|
summary.append(f"{len(lines)} lines", style="dim white")
|
|
114
|
-
elif func_name
|
|
114
|
+
elif func_name == "write_file":
|
|
115
|
+
filepath = args.get("filepath", args.get("path", ""))
|
|
116
|
+
new_content = args.get("content") or args.get("code") or args.get("text") or ""
|
|
117
|
+
if not new_content and filepath and os.path.exists(filepath):
|
|
118
|
+
try:
|
|
119
|
+
with open(filepath, "r", encoding="utf-8", errors="ignore") as _f:
|
|
120
|
+
new_content = _f.read()
|
|
121
|
+
except Exception:
|
|
122
|
+
pass
|
|
123
|
+
lines = new_content.splitlines() if new_content else []
|
|
124
|
+
summary.append(f"{len(lines)} lines", style="dim white")
|
|
125
|
+
elif func_name == "edit_file":
|
|
115
126
|
first = result.strip().splitlines()[0][:80] if result.strip() else "done"
|
|
116
127
|
summary.append(first, style="dim white")
|
|
117
128
|
elif func_name == "run_command":
|