mita-code 0.1.0__tar.gz → 0.1.1a0__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.
Files changed (90) hide show
  1. {mita_code-0.1.0 → mita_code-0.1.1a0}/PKG-INFO +11 -7
  2. {mita_code-0.1.0 → mita_code-0.1.1a0}/README.md +3 -3
  3. {mita_code-0.1.0 → mita_code-0.1.1a0}/pyproject.toml +24 -4
  4. {mita_code-0.1.0 → mita_code-0.1.1a0}/src/mita/agent/context.py +2 -2
  5. mita_code-0.1.1a0/src/mita/agent/loop.py +690 -0
  6. {mita_code-0.1.0 → mita_code-0.1.1a0}/src/mita/cli.py +398 -163
  7. {mita_code-0.1.0 → mita_code-0.1.1a0}/src/mita/config/defaults.py +27 -1
  8. mita_code-0.1.1a0/src/mita/config/loader.py +133 -0
  9. mita_code-0.1.1a0/src/mita/config/schema.py +363 -0
  10. mita_code-0.1.1a0/src/mita/config/toml_writer.py +119 -0
  11. mita_code-0.1.1a0/src/mita/config/trust.py +87 -0
  12. {mita_code-0.1.0 → mita_code-0.1.1a0}/src/mita/hooks/manager.py +12 -26
  13. {mita_code-0.1.0 → mita_code-0.1.1a0}/src/mita/hooks/runner.py +22 -6
  14. mita_code-0.1.1a0/src/mita/index/__init__.py +10 -0
  15. mita_code-0.1.1a0/src/mita/index/embeddings.py +76 -0
  16. {mita_code-0.1.0 → mita_code-0.1.1a0}/src/mita/index/manager.py +72 -40
  17. mita_code-0.1.1a0/src/mita/index/parser.py +532 -0
  18. {mita_code-0.1.0 → mita_code-0.1.1a0}/src/mita/index/retriever.py +24 -13
  19. mita_code-0.1.1a0/src/mita/index/store.py +372 -0
  20. mita_code-0.1.1a0/src/mita/llm/__init__.py +1 -0
  21. mita_code-0.1.1a0/src/mita/llm/context.py +76 -0
  22. mita_code-0.1.1a0/src/mita/llm/factory.py +114 -0
  23. mita_code-0.1.1a0/src/mita/llm/health.py +21 -0
  24. mita_code-0.1.1a0/src/mita/llm/providers.py +120 -0
  25. {mita_code-0.1.0 → mita_code-0.1.1a0}/src/mita/memory/discovery.py +8 -2
  26. {mita_code-0.1.0 → mita_code-0.1.1a0}/src/mita/memory/loader.py +10 -2
  27. {mita_code-0.1.0 → mita_code-0.1.1a0}/src/mita/memory/manager.py +13 -12
  28. {mita_code-0.1.0 → mita_code-0.1.1a0}/src/mita/models/manager.py +24 -14
  29. {mita_code-0.1.0 → mita_code-0.1.1a0}/src/mita/models/ollama_client.py +11 -0
  30. {mita_code-0.1.0 → mita_code-0.1.1a0}/src/mita/models/server.py +2 -11
  31. mita_code-0.1.1a0/src/mita/plugins/manager.py +355 -0
  32. mita_code-0.1.1a0/src/mita/sessions/__init__.py +18 -0
  33. mita_code-0.1.1a0/src/mita/sessions/manager.py +128 -0
  34. mita_code-0.1.1a0/src/mita/sessions/restore.py +26 -0
  35. mita_code-0.1.1a0/src/mita/sessions/store.py +223 -0
  36. mita_code-0.1.1a0/src/mita/sessions/tracker.py +81 -0
  37. {mita_code-0.1.0 → mita_code-0.1.1a0}/src/mita/skills/executor.py +11 -2
  38. {mita_code-0.1.0 → mita_code-0.1.1a0}/src/mita/skills/loader.py +3 -0
  39. {mita_code-0.1.0 → mita_code-0.1.1a0}/src/mita/tools/builtins/__init__.py +3 -1
  40. {mita_code-0.1.0 → mita_code-0.1.1a0}/src/mita/tools/builtins/file_edit.py +7 -1
  41. {mita_code-0.1.0 → mita_code-0.1.1a0}/src/mita/tools/builtins/file_read.py +19 -2
  42. {mita_code-0.1.0 → mita_code-0.1.1a0}/src/mita/tools/builtins/file_write.py +6 -0
  43. {mita_code-0.1.0 → mita_code-0.1.1a0}/src/mita/tools/builtins/git.py +9 -22
  44. {mita_code-0.1.0 → mita_code-0.1.1a0}/src/mita/tools/builtins/glob_tool.py +25 -6
  45. {mita_code-0.1.0 → mita_code-0.1.1a0}/src/mita/tools/builtins/grep_tool.py +32 -5
  46. {mita_code-0.1.0 → mita_code-0.1.1a0}/src/mita/tools/builtins/shell.py +29 -24
  47. {mita_code-0.1.0 → mita_code-0.1.1a0}/src/mita/tools/executor.py +37 -6
  48. {mita_code-0.1.0 → mita_code-0.1.1a0}/src/mita/tools/registry.py +1 -1
  49. mita_code-0.1.1a0/src/mita/tools/safety.py +277 -0
  50. {mita_code-0.1.0 → mita_code-0.1.1a0}/src/mita/tools/schema.py +49 -6
  51. {mita_code-0.1.0 → mita_code-0.1.1a0}/src/mita/ui/display.py +36 -10
  52. {mita_code-0.1.0 → mita_code-0.1.1a0}/src/mita/ui/repl.py +32 -4
  53. mita_code-0.1.1a0/src/mita/ui/sink.py +181 -0
  54. mita_code-0.1.1a0/src/mita/ui/tui/__init__.py +1 -0
  55. mita_code-0.1.1a0/src/mita/ui/tui/app.py +267 -0
  56. mita_code-0.1.0/src/mita/agent/loop.py +0 -594
  57. mita_code-0.1.0/src/mita/config/loader.py +0 -53
  58. mita_code-0.1.0/src/mita/config/schema.py +0 -131
  59. mita_code-0.1.0/src/mita/index/__init__.py +0 -1
  60. mita_code-0.1.0/src/mita/index/embeddings.py +0 -49
  61. mita_code-0.1.0/src/mita/index/parser.py +0 -331
  62. mita_code-0.1.0/src/mita/index/store.py +0 -143
  63. mita_code-0.1.0/src/mita/llm/__init__.py +0 -1
  64. mita_code-0.1.0/src/mita/llm/client.py +0 -86
  65. mita_code-0.1.0/src/mita/llm/instructor.py +0 -80
  66. mita_code-0.1.0/src/mita/llm/streaming.py +0 -58
  67. mita_code-0.1.0/src/mita/plugins/client.py +0 -152
  68. mita_code-0.1.0/src/mita/plugins/manager.py +0 -210
  69. mita_code-0.1.0/src/mita/tools/safety.py +0 -91
  70. {mita_code-0.1.0 → mita_code-0.1.1a0}/LICENSE +0 -0
  71. {mita_code-0.1.0 → mita_code-0.1.1a0}/src/mita/__init__.py +0 -0
  72. {mita_code-0.1.0 → mita_code-0.1.1a0}/src/mita/__main__.py +0 -0
  73. {mita_code-0.1.0 → mita_code-0.1.1a0}/src/mita/agent/__init__.py +0 -0
  74. {mita_code-0.1.0 → mita_code-0.1.1a0}/src/mita/agent/conversation.py +0 -0
  75. {mita_code-0.1.0 → mita_code-0.1.1a0}/src/mita/agent/system_prompt.py +0 -0
  76. {mita_code-0.1.0 → mita_code-0.1.1a0}/src/mita/config/__init__.py +0 -0
  77. {mita_code-0.1.0 → mita_code-0.1.1a0}/src/mita/hooks/__init__.py +0 -0
  78. {mita_code-0.1.0 → mita_code-0.1.1a0}/src/mita/memory/__init__.py +0 -0
  79. {mita_code-0.1.0 → mita_code-0.1.1a0}/src/mita/models/__init__.py +0 -0
  80. {mita_code-0.1.0 → mita_code-0.1.1a0}/src/mita/models/hardware.py +0 -0
  81. {mita_code-0.1.0 → mita_code-0.1.1a0}/src/mita/models/recommender.py +0 -0
  82. {mita_code-0.1.0 → mita_code-0.1.1a0}/src/mita/models/registry.py +0 -0
  83. {mita_code-0.1.0 → mita_code-0.1.1a0}/src/mita/plugins/__init__.py +0 -0
  84. {mita_code-0.1.0 → mita_code-0.1.1a0}/src/mita/py.typed +0 -0
  85. {mita_code-0.1.0 → mita_code-0.1.1a0}/src/mita/skills/__init__.py +0 -0
  86. {mita_code-0.1.0 → mita_code-0.1.1a0}/src/mita/skills/manager.py +0 -0
  87. {mita_code-0.1.0 → mita_code-0.1.1a0}/src/mita/tools/__init__.py +0 -0
  88. {mita_code-0.1.0 → mita_code-0.1.1a0}/src/mita/ui/__init__.py +0 -0
  89. {mita_code-0.1.0 → mita_code-0.1.1a0}/src/mita/ui/spinner.py +0 -0
  90. {mita_code-0.1.0 → mita_code-0.1.1a0}/src/mita/ui/theme.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: mita-code
3
- Version: 0.1.0
3
+ Version: 0.1.1a0
4
4
  Summary: Local-first, terminal-native agentic coding assistant powered by Ollama
5
5
  License: Apache-2.0
6
6
  License-File: LICENSE
@@ -19,10 +19,13 @@ Classifier: Programming Language :: Python :: 3.13
19
19
  Classifier: Programming Language :: Python :: 3.14
20
20
  Classifier: Topic :: Software Development
21
21
  Classifier: Typing :: Typed
22
- Requires-Dist: instructor (>=1.14.5,<2.0.0)
23
22
  Requires-Dist: lancedb (==0.25.3)
24
- Requires-Dist: litellm (>=1.82.0,<2.0.0)
25
- Requires-Dist: mcp (>=1.0.0)
23
+ Requires-Dist: langchain (>=1.4.0,<2.0.0)
24
+ Requires-Dist: langchain-core (>=1.6.3,<2.0.0)
25
+ Requires-Dist: langchain-mcp-adapters (>=0.3.2,<0.4.0)
26
+ Requires-Dist: langchain-ollama (>=1.1.0,<2.0.0)
27
+ Requires-Dist: langchain-openai (>=1.6.2,<2.0.0)
28
+ Requires-Dist: langgraph (>=1.2.11,<2.0.0)
26
29
  Requires-Dist: ollama (>=0.3.0)
27
30
  Requires-Dist: pandas (>=3.0.1,<4.0.0)
28
31
  Requires-Dist: prompt-toolkit (>=3.0.52,<4.0.0)
@@ -30,6 +33,7 @@ Requires-Dist: psutil (>=5.9.0)
30
33
  Requires-Dist: pydantic (>=2.0.0)
31
34
  Requires-Dist: pyyaml (>=6.0)
32
35
  Requires-Dist: rich (>=13.0.0)
36
+ Requires-Dist: textual (>=0.80.0,<0.81.0)
33
37
  Requires-Dist: tree-sitter (>=0.23.0)
34
38
  Requires-Dist: tree-sitter-language-pack (>=0.6.0)
35
39
  Requires-Dist: typer (>=0.9.0)
@@ -208,12 +212,12 @@ Higher-specificity files take priority. Each file is capped at 200 lines.
208
212
  | CLI | [Typer](https://typer.tiangolo.com/) |
209
213
  | Terminal UI | [Rich](https://rich.readthedocs.io/) |
210
214
  | LLM Runtime | [Ollama](https://ollama.com) |
211
- | LLM Client | [LiteLLM](https://github.com/BerriAI/litellm) |
212
- | Structured Output | [Instructor](https://github.com/instructor-ai/instructor) |
215
+ | LLM Client | [LangChain](https://www.langchain.com/) (`ChatOllama` / `ChatOpenAI`) |
216
+ | Agent orchestration | [LangGraph](https://www.langchain.com/langgraph) |
213
217
  | Vector Store | [LanceDB](https://lancedb.com/) |
214
218
  | Code Parsing | [Tree-sitter](https://tree-sitter.github.io/) |
215
219
  | Config | TOML (stdlib `tomllib`) |
216
- | Plugins | [MCP](https://modelcontextprotocol.io/) |
220
+ | Plugins | [MCP](https://modelcontextprotocol.io/) via `langchain-mcp-adapters` |
217
221
 
218
222
  ## Contributing
219
223
 
@@ -166,12 +166,12 @@ Higher-specificity files take priority. Each file is capped at 200 lines.
166
166
  | CLI | [Typer](https://typer.tiangolo.com/) |
167
167
  | Terminal UI | [Rich](https://rich.readthedocs.io/) |
168
168
  | LLM Runtime | [Ollama](https://ollama.com) |
169
- | LLM Client | [LiteLLM](https://github.com/BerriAI/litellm) |
170
- | Structured Output | [Instructor](https://github.com/instructor-ai/instructor) |
169
+ | LLM Client | [LangChain](https://www.langchain.com/) (`ChatOllama` / `ChatOpenAI`) |
170
+ | Agent orchestration | [LangGraph](https://www.langchain.com/langgraph) |
171
171
  | Vector Store | [LanceDB](https://lancedb.com/) |
172
172
  | Code Parsing | [Tree-sitter](https://tree-sitter.github.io/) |
173
173
  | Config | TOML (stdlib `tomllib`) |
174
- | Plugins | [MCP](https://modelcontextprotocol.io/) |
174
+ | Plugins | [MCP](https://modelcontextprotocol.io/) via `langchain-mcp-adapters` |
175
175
 
176
176
  ## Contributing
177
177
 
@@ -1,6 +1,6 @@
1
1
  [tool.poetry]
2
2
  name = "mita-code"
3
- version = "0.1.0"
3
+ version = "0.1.1a0"
4
4
  description = "Local-first, terminal-native agentic coding assistant powered by Ollama"
5
5
  readme = "README.md"
6
6
  license = "Apache-2.0"
@@ -37,15 +37,19 @@ rich = ">=13.0.0"
37
37
  pydantic = ">=2.0.0"
38
38
  psutil = ">=5.9.0"
39
39
  ollama = ">=0.3.0"
40
- litellm = "^1.82.0"
41
- instructor = "^1.14.5"
42
40
  prompt-toolkit = "^3.0.52"
43
41
  lancedb = "0.25.3"
44
42
  tree-sitter = ">=0.23.0"
45
43
  tree-sitter-language-pack = ">=0.6.0"
46
44
  pandas = "^3.0.1"
47
45
  pyyaml = ">=6.0"
48
- mcp = ">=1.0.0"
46
+ textual = "^0.80.0"
47
+ langchain = "^1.4.0"
48
+ langchain-core = "^1.6.3"
49
+ langchain-ollama = "^1.1.0"
50
+ langchain-openai = "^1.6.2"
51
+ langchain-mcp-adapters = "^0.3.2"
52
+ langgraph = "^1.2.11"
49
53
 
50
54
  [tool.poetry.group.dev.dependencies]
51
55
  pytest = ">=8.0.0"
@@ -57,6 +61,7 @@ invoke = ">=2.0.0"
57
61
  isort = ">=5.12.0"
58
62
  types-psutil = ">=5.9.0"
59
63
  types-pyyaml = "^6.0.12.20250915"
64
+ pytest-cov = "^7.1.0"
60
65
 
61
66
 
62
67
  [tool.poetry.group.docs.dependencies]
@@ -88,3 +93,18 @@ line_length = 100
88
93
  [tool.pytest.ini_options]
89
94
  testpaths = ["tests"]
90
95
  asyncio_mode = "auto"
96
+ addopts = "--cov=mita --cov-report=term-missing"
97
+
98
+ [tool.coverage.run]
99
+ source = ["src/mita"]
100
+ branch = true
101
+
102
+ [tool.coverage.report]
103
+ fail_under = 80
104
+ show_missing = true
105
+ exclude_lines = [
106
+ "pragma: no cover",
107
+ "if TYPE_CHECKING:",
108
+ "if __name__ == .__main__.",
109
+ "@overload",
110
+ ]
@@ -30,8 +30,8 @@ def assemble_context(
30
30
  """
31
31
  working_dir = cwd or Path.cwd()
32
32
 
33
- # Load memory from MITA.md files
34
- memory_content = load_memory(cwd=working_dir)
33
+ # Load memory from MITA.md files, honoring the configured memory limits.
34
+ memory_content = load_memory(cwd=working_dir, settings=config.memory)
35
35
 
36
36
  # Build system prompt
37
37
  system_prompt = build_system_prompt(