todo-agent 0.1.1__py3-none-any.whl → 0.2.3__py3-none-any.whl

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.
todo_agent/main.py CHANGED
@@ -9,7 +9,7 @@ import sys
9
9
  from .interface.cli import CLI
10
10
 
11
11
 
12
- def main():
12
+ def main() -> None:
13
13
  """Main application entry point."""
14
14
  parser = argparse.ArgumentParser(
15
15
  description="Todo.sh LLM Agent - Natural language task management",
@@ -36,8 +36,16 @@ Examples:
36
36
 
37
37
  if args.command:
38
38
  # Single command mode
39
- response = cli.run_single_request(args.command)
40
- print(response)
39
+ # Handle special commands that don't need LLM processing
40
+ if args.command.lower() in ["help", "about"]:
41
+ if args.command.lower() == "help":
42
+ cli._print_help()
43
+ elif args.command.lower() == "about":
44
+ cli._print_about()
45
+ else:
46
+ # Process through LLM
47
+ response = cli.run_single_request(args.command)
48
+ print(response)
41
49
  else:
42
50
  # Interactive mode
43
51
  cli.run()
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: todo-agent
3
- Version: 0.1.1
3
+ Version: 0.2.3
4
4
  Summary: A natural language interface for todo.sh task management
5
5
  Author: codeprimate
6
6
  Maintainer: codeprimate
@@ -10,7 +10,7 @@ Project-URL: Documentation, https://github.com/codeprimate/todo-agent#readme
10
10
  Project-URL: Repository, https://github.com/codeprimate/todo-agent
11
11
  Project-URL: Bug Tracker, https://github.com/codeprimate/todo-agent/issues
12
12
  Keywords: todo,task-management,llm,natural-language,cli
13
- Classifier: Development Status :: 3 - Alpha
13
+ Classifier: Development Status :: 4 - Beta
14
14
  Classifier: Intended Audience :: Developers
15
15
  Classifier: Intended Audience :: End Users/Desktop
16
16
  Classifier: Operating System :: OS Independent
@@ -24,28 +24,25 @@ Classifier: Topic :: Text Processing :: Linguistic
24
24
  Requires-Python: >=3.8
25
25
  Description-Content-Type: text/markdown
26
26
  License-File: LICENSE
27
- Requires-Dist: requests>=2.31.0
28
- Requires-Dist: typing-extensions>=4.8.0
29
- Requires-Dist: types-requests>=2.31.0
30
- Requires-Dist: rich>=13.0.0
31
- Requires-Dist: tiktoken>=0.5.0
27
+ Requires-Dist: requests>=2.32.0
28
+ Requires-Dist: typing-extensions>=4.15.0
29
+ Requires-Dist: types-requests>=2.32.0
30
+ Requires-Dist: rich>=14.0.0
31
+ Requires-Dist: tiktoken>=0.11.0
32
32
  Provides-Extra: dev
33
- Requires-Dist: black>=23.0.0; extra == "dev"
34
- Requires-Dist: flake8>=6.0.0; extra == "dev"
35
- Requires-Dist: isort>=5.12.0; extra == "dev"
36
- Requires-Dist: mypy>=1.0.0; extra == "dev"
37
- Requires-Dist: pytest>=7.0.0; extra == "dev"
38
- Requires-Dist: pytest-cov>=4.0.0; extra == "dev"
39
- Requires-Dist: pre-commit>=3.0.0; extra == "dev"
40
- Requires-Dist: bandit>=1.7.0; extra == "dev"
41
- Requires-Dist: safety>=2.3.0; extra == "dev"
42
- Requires-Dist: sphinx>=6.0.0; extra == "dev"
43
- Requires-Dist: sphinx-rtd-theme>=1.2.0; extra == "dev"
44
- Requires-Dist: radon>=5.1.0; extra == "dev"
45
- Requires-Dist: xenon>=0.7.0; extra == "dev"
46
- Requires-Dist: build>=1.0.0; extra == "dev"
47
- Requires-Dist: twine>=4.0.0; extra == "dev"
48
- Requires-Dist: setuptools_scm[toml]>=6.2.0; extra == "dev"
33
+ Requires-Dist: ruff>=0.12.0; extra == "dev"
34
+ Requires-Dist: mypy>=1.17.0; extra == "dev"
35
+ Requires-Dist: pytest>=8.0.0; extra == "dev"
36
+ Requires-Dist: pytest-cov>=6.0.0; extra == "dev"
37
+ Requires-Dist: pre-commit>=4.0.0; extra == "dev"
38
+ Requires-Dist: bandit>=1.8.0; extra == "dev"
39
+ Requires-Dist: sphinx>=8.0.0; extra == "dev"
40
+ Requires-Dist: sphinx-rtd-theme>=3.0.0; extra == "dev"
41
+ Requires-Dist: radon>=6.0.0; extra == "dev"
42
+ Requires-Dist: xenon>=0.9.0; extra == "dev"
43
+ Requires-Dist: build>=1.2.0; extra == "dev"
44
+ Requires-Dist: twine>=6.0.0; extra == "dev"
45
+ Requires-Dist: setuptools_scm[toml]>=9.0.0; extra == "dev"
49
46
  Dynamic: license-file
50
47
 
51
48
  # Todo Agent
@@ -141,10 +138,15 @@ You can add this to your shell profile (`.bashrc`, `.zshrc`, etc.) to make it pe
141
138
  # Clone and install from source
142
139
  git clone https://github.com/codeprimate/todo-agent.git
143
140
  cd todo_agent
144
- pip install -e .
145
141
 
146
- # Or with development dependencies
147
- pip install -e ".[dev]"
142
+ # Option 1: Install built package locally
143
+ make install
144
+
145
+ # Option 2: Install in development mode with dev dependencies
146
+ make install-dev
147
+
148
+ # Option 3: Install in development mode (basic)
149
+ pip install -e .
148
150
  ```
149
151
 
150
152
  ### 2. Set up your LLM provider
@@ -224,14 +226,52 @@ The `TODO_FILE`, `DONE_FILE`, and `REPORT_FILE` are automatically inferred from
224
226
  # Clone and install
225
227
  git clone https://github.com/codeprimate/todo-agent.git
226
228
  cd todo_agent
227
- pip install -e ".[dev]"
228
229
 
229
- # Run tests
230
- pytest
230
+ # Install options:
231
+ # - Built package (like production install)
232
+ make install
233
+ # - Development mode with dev dependencies (recommended for development)
234
+ make install-dev
235
+ # - Basic development mode
236
+ pip install -e .
237
+
238
+ # Available Makefile tasks:
239
+ make test # Run tests with coverage
240
+ make format # Format and lint code
241
+ make lint # Run linting only
242
+ make build # Build package distribution
243
+ make clean # Clean build artifacts
244
+ make install # Build and install package locally
245
+ make install-dev # Install in development mode with dev dependencies
246
+ ```
247
+
248
+ ## Code Quality and Linting
249
+
250
+ This project uses comprehensive linting to maintain code quality:
251
+
252
+ ### Linting Tools
253
+ - **Ruff**: Fast Python linter and formatter (replaces Black, isort, and Flake8)
254
+ - **MyPy**: Static type checking
255
+ - **Bandit**: Security vulnerability scanning
256
+
257
+ **Note**: Ruff is configured to be compatible with Black's formatting style and provides 10-100x faster performance than traditional tools.
258
+
259
+ ### Pre-commit Hooks
260
+ Install pre-commit hooks for automatic linting on commits:
261
+ ```bash
262
+ pre-commit install
263
+ ```
264
+
265
+ ### Linting in Test Suite
266
+ Linting checks are integrated into the test suite via `tests/test_linting.py`. The `make test` command runs all tests including linting checks. You can also run linting tests separately:
267
+ ```bash
268
+ # Run linting tests only
269
+ pytest -m lint
270
+ ```
231
271
 
232
- # Format code
233
- black .
234
- isort .
272
+ ### Configuration Files
273
+ - `pyproject.toml`: Ruff, MyPy, and pytest configuration
274
+ - `.pre-commit-config.yaml`: Pre-commit hooks configuration
235
275
  ```
236
276
 
237
277
  ## Architecture
@@ -0,0 +1,28 @@
1
+ todo_agent/__init__.py,sha256=RUowhd14r3tqB_7rl83unGV8oBjra3UOIl7jix-33fk,254
2
+ todo_agent/_version.py,sha256=kBRz0P2plw1eVdIpt70W6m1LMbEIhLY3RyOfVGdubaI,704
3
+ todo_agent/main.py,sha256=-ryhMm4c4sz4e4anXI8B-CYnpEh5HIkmnYcnGxcWHDk,1628
4
+ todo_agent/core/__init__.py,sha256=QAZ4it63pXv5-DxtNcuSAmg7ZnCY5ackI5yycvKHr9I,365
5
+ todo_agent/core/conversation_manager.py,sha256=Mxjxn3BTjSnju6xryQcpOWdE8wWWJqTdDFTC86D9xc8,11639
6
+ todo_agent/core/exceptions.py,sha256=cPvvkIbKdI7l51wC7cE-ZxUi54P3nf2m7x2lMNMRFYM,399
7
+ todo_agent/core/todo_manager.py,sha256=wV-J_E_aK7yRNT-WbILKJgqBFhbcXDZa6Pb4IjbgGkU,7974
8
+ todo_agent/infrastructure/__init__.py,sha256=SGbHXgzq6U1DMgOfWPMsWEK99zjPSF-6gzy7xqc5fsI,284
9
+ todo_agent/infrastructure/config.py,sha256=zyp6qOlg1nN_awphivlgGNBE6fL0Hf66YgvWxR8ldyQ,2117
10
+ todo_agent/infrastructure/inference.py,sha256=XCM18hpHwWxDLV-31yO_UOYbqQ7lRjGz-PQduyp6Xio,10289
11
+ todo_agent/infrastructure/llm_client.py,sha256=ZoObyqaRP6i_eqGYGfJWGeWTJ-VNxpY70ay04vt2v_E,1390
12
+ todo_agent/infrastructure/llm_client_factory.py,sha256=SmPHNS4QifFI8CmsAz7uTcYjTdFzq8x9jVNybOmyerk,1884
13
+ todo_agent/infrastructure/logger.py,sha256=2ykG_0lyzmEGxDF6ZRl1qiTUGDuFeQgzv4Na6vRmXcM,4110
14
+ todo_agent/infrastructure/ollama_client.py,sha256=6WsjSftsHNt-CeScK6GSrJ_CMe80OiATT3idcJgPCBk,5654
15
+ todo_agent/infrastructure/openrouter_client.py,sha256=GVOJTzPDOKNdHEu-y-HQygMcLvrFw1KB6NZU_rJR3-c,6859
16
+ todo_agent/infrastructure/todo_shell.py,sha256=z6kqUKDX-i4DfYJKoOLiPLCp8y6m1HdTDLHTvmLpzMc,5801
17
+ todo_agent/infrastructure/token_counter.py,sha256=PCKheOVJbp1s89yhh_i6iKgURMt9mVoYkwjQJCc2xCE,4958
18
+ todo_agent/infrastructure/prompts/system_prompt.txt,sha256=uCb6yz3uDQdwcB8HJcF0y1_1b75oRtRnCMMHQLHI3NI,2415
19
+ todo_agent/interface/__init__.py,sha256=vDD3rQu4qDkpvVwGVtkDzE1M4IiSHYzTif4GbYSFWaI,457
20
+ todo_agent/interface/cli.py,sha256=audxpDafLw_o-pitqntUN0PpKUyWZap2wpHw4QUak_8,9926
21
+ todo_agent/interface/formatters.py,sha256=aJc-a2aUzi3tId46jFK3uwZnsOJiXBTTMT8I_46Jjlg,13181
22
+ todo_agent/interface/tools.py,sha256=mlPPLVwECYrTtOX8ysIORRfErIOJl43qlTvfdpy2Vbs,28559
23
+ todo_agent-0.2.3.dist-info/licenses/LICENSE,sha256=OXLcl0T2SZ8Pmy2_dmlvKuetivmyPd5m1q-Gyd-zaYY,35149
24
+ todo_agent-0.2.3.dist-info/METADATA,sha256=VvqQLIc4ExA92Oa-nhukv96wszxQnYSf7nlG09hiZt0,10047
25
+ todo_agent-0.2.3.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
26
+ todo_agent-0.2.3.dist-info/entry_points.txt,sha256=4W7LrCib6AXP5IZDwWRht8S5gutLu5oNfTJHGbt4oHs,52
27
+ todo_agent-0.2.3.dist-info/top_level.txt,sha256=a65mlPIhPZHuq2bRIi_sCMAIJsUddvXt171OBF6r6co,11
28
+ todo_agent-0.2.3.dist-info/RECORD,,
@@ -1,27 +0,0 @@
1
- todo_agent/__init__.py,sha256=RUowhd14r3tqB_7rl83unGV8oBjra3UOIl7jix-33fk,254
2
- todo_agent/_version.py,sha256=m8HxkqoKGw_wAJtc4ZokpJKNLXqp4zwnNhbnfDtro7w,704
3
- todo_agent/main.py,sha256=YUcCf6oYSnmbT4KfRK6uKzdPxbjLYtSdrRCWxRjTzAI,1247
4
- todo_agent/core/__init__.py,sha256=YM7c1CqWzlQlHerlxgLPsW0fABO3tpeV4NIUKma9bNc,365
5
- todo_agent/core/conversation_manager.py,sha256=dyNml0D6Lk8SDKSbd6GIC2SjUOlsAooRmMIMfNRlhzc,10896
6
- todo_agent/core/exceptions.py,sha256=cPvvkIbKdI7l51wC7cE-ZxUi54P3nf2m7x2lMNMRFYM,399
7
- todo_agent/core/todo_manager.py,sha256=puq2QWvZ4jblRoWfSmy2Zk-O-nXJVATJwa1cCFppjms,7960
8
- todo_agent/infrastructure/__init__.py,sha256=XeMvJ-ZvVz2pZmZthZrC4Qlk8VxwLHyIpqr3btUIHLE,284
9
- todo_agent/infrastructure/config.py,sha256=XYp3CJP51vJYA3vM_Dq5BLYn02vNuFE31qC45Zjml5I,2095
10
- todo_agent/infrastructure/inference.py,sha256=7TJKpIaBlOQ1NbBB3LOt2M9aO613jbr6aJNmmIUyNuo,9568
11
- todo_agent/infrastructure/llm_client.py,sha256=ZoObyqaRP6i_eqGYGfJWGeWTJ-VNxpY70ay04vt2v_E,1390
12
- todo_agent/infrastructure/llm_client_factory.py,sha256=-FD6gBflLB0zqpNASTSmr8Yxl5bHaxCOLlMWAcck60U,1715
13
- todo_agent/infrastructure/logger.py,sha256=JF3G1Yq6lB6YIgaXnxjCWy4zbP7TPEIdvDIpwRApn34,4247
14
- todo_agent/infrastructure/ollama_client.py,sha256=VgXPInI5KH6P1Ub9WYJyfYgKkVWbEuJxE_Bts-dke6o,5358
15
- todo_agent/infrastructure/openrouter_client.py,sha256=AzUSKWF3_9RfhSMzCn82tW2fu6W1uFe0NzgfInwnn0o,6601
16
- todo_agent/infrastructure/todo_shell.py,sha256=7CF6WnB2W4_v95kjr-DxrRQUDHfuCvUQtJ0NrhDGUow,5738
17
- todo_agent/infrastructure/token_counter.py,sha256=NC9-y4v7kJRFRlAYe1a7tW-pfFtE4qQslUpVxR-yssM,5121
18
- todo_agent/infrastructure/prompts/system_prompt.txt,sha256=uCb6yz3uDQdwcB8HJcF0y1_1b75oRtRnCMMHQLHI3NI,2415
19
- todo_agent/interface/__init__.py,sha256=7nnDEP7w2qYMQJPPzlojCOoYebqw6SmAqJ886CdwXT4,204
20
- todo_agent/interface/cli.py,sha256=2c7Pq6-_5URTbvN98_eWKf68m8gwXr6_TJ-XxtxikLc,8429
21
- todo_agent/interface/tools.py,sha256=QZce0HHk5BYmUrGTBLse49tg2C6o5p3pkbd2c99x4MQ,28500
22
- todo_agent-0.1.1.dist-info/licenses/LICENSE,sha256=OXLcl0T2SZ8Pmy2_dmlvKuetivmyPd5m1q-Gyd-zaYY,35149
23
- todo_agent-0.1.1.dist-info/METADATA,sha256=lSvqywYW84c-iUAbqkPv1wuOPYaPCgjvUR3dZJQWZwM,8635
24
- todo_agent-0.1.1.dist-info/WHEEL,sha256=_zCd3N1l69ArxyTb8rzEoP9TpbYXkqRFSNOD5OuxnTs,91
25
- todo_agent-0.1.1.dist-info/entry_points.txt,sha256=4W7LrCib6AXP5IZDwWRht8S5gutLu5oNfTJHGbt4oHs,52
26
- todo_agent-0.1.1.dist-info/top_level.txt,sha256=a65mlPIhPZHuq2bRIi_sCMAIJsUddvXt171OBF6r6co,11
27
- todo_agent-0.1.1.dist-info/RECORD,,