teddy-cli 0.1.7__tar.gz → 0.1.8__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 (144) hide show
  1. teddy_cli-0.1.8/.gitignore +107 -0
  2. teddy_cli-0.1.8/PKG-INFO +30 -0
  3. {teddy_cli-0.1.7 → teddy_cli-0.1.8}/pyproject.toml +53 -47
  4. {teddy_cli-0.1.7 → teddy_cli-0.1.8}/src/teddy_executor/__main__.py +3 -3
  5. teddy_cli-0.1.7/PKG-INFO +0 -36
  6. {teddy_cli-0.1.7 → teddy_cli-0.1.8}/LICENSE +0 -0
  7. {teddy_cli-0.1.7 → teddy_cli-0.1.8}/src/teddy_executor/__init__.py +0 -0
  8. {teddy_cli-0.1.7 → teddy_cli-0.1.8}/src/teddy_executor/adapters/__init__.py +0 -0
  9. {teddy_cli-0.1.7 → teddy_cli-0.1.8}/src/teddy_executor/adapters/inbound/__init__.py +0 -0
  10. {teddy_cli-0.1.7 → teddy_cli-0.1.8}/src/teddy_executor/adapters/inbound/cli_formatter.py +0 -0
  11. {teddy_cli-0.1.7 → teddy_cli-0.1.8}/src/teddy_executor/adapters/inbound/cli_helpers.py +0 -0
  12. {teddy_cli-0.1.7 → teddy_cli-0.1.8}/src/teddy_executor/adapters/inbound/console_plan_reviewer.py +0 -0
  13. {teddy_cli-0.1.7 → teddy_cli-0.1.8}/src/teddy_executor/adapters/inbound/session_cli_handlers.py +0 -0
  14. {teddy_cli-0.1.7 → teddy_cli-0.1.8}/src/teddy_executor/adapters/inbound/textual_plan_reviewer.py +0 -0
  15. {teddy_cli-0.1.7 → teddy_cli-0.1.8}/src/teddy_executor/adapters/inbound/textual_plan_reviewer_app.py +0 -0
  16. {teddy_cli-0.1.7 → teddy_cli-0.1.8}/src/teddy_executor/adapters/inbound/textual_plan_reviewer_editor.py +0 -0
  17. {teddy_cli-0.1.7 → teddy_cli-0.1.8}/src/teddy_executor/adapters/inbound/textual_plan_reviewer_execution.py +0 -0
  18. {teddy_cli-0.1.7 → teddy_cli-0.1.8}/src/teddy_executor/adapters/inbound/textual_plan_reviewer_helpers.py +0 -0
  19. {teddy_cli-0.1.7 → teddy_cli-0.1.8}/src/teddy_executor/adapters/inbound/textual_plan_reviewer_logic.py +0 -0
  20. {teddy_cli-0.1.7 → teddy_cli-0.1.8}/src/teddy_executor/adapters/inbound/textual_plan_reviewer_previews.py +0 -0
  21. {teddy_cli-0.1.7 → teddy_cli-0.1.8}/src/teddy_executor/adapters/inbound/textual_plan_reviewer_widgets.py +0 -0
  22. {teddy_cli-0.1.7 → teddy_cli-0.1.8}/src/teddy_executor/adapters/outbound/__init__.py +0 -0
  23. {teddy_cli-0.1.7 → teddy_cli-0.1.8}/src/teddy_executor/adapters/outbound/console_interactor.py +0 -0
  24. {teddy_cli-0.1.7 → teddy_cli-0.1.8}/src/teddy_executor/adapters/outbound/console_interactor_ask_loop.py +0 -0
  25. {teddy_cli-0.1.7 → teddy_cli-0.1.8}/src/teddy_executor/adapters/outbound/console_interactor_helpers.py +0 -0
  26. {teddy_cli-0.1.7 → teddy_cli-0.1.8}/src/teddy_executor/adapters/outbound/console_tooling.py +0 -0
  27. {teddy_cli-0.1.7 → teddy_cli-0.1.8}/src/teddy_executor/adapters/outbound/filesystem_helpers.py +0 -0
  28. {teddy_cli-0.1.7 → teddy_cli-0.1.8}/src/teddy_executor/adapters/outbound/litellm_adapter.py +0 -0
  29. {teddy_cli-0.1.7 → teddy_cli-0.1.8}/src/teddy_executor/adapters/outbound/local_file_system_adapter.py +0 -0
  30. {teddy_cli-0.1.7 → teddy_cli-0.1.8}/src/teddy_executor/adapters/outbound/local_repo_tree_generator.py +0 -0
  31. {teddy_cli-0.1.7 → teddy_cli-0.1.8}/src/teddy_executor/adapters/outbound/openrouter_hydrator.py +0 -0
  32. {teddy_cli-0.1.7 → teddy_cli-0.1.8}/src/teddy_executor/adapters/outbound/shell_adapter.py +0 -0
  33. {teddy_cli-0.1.7 → teddy_cli-0.1.8}/src/teddy_executor/adapters/outbound/shell_command_builder.py +0 -0
  34. {teddy_cli-0.1.7 → teddy_cli-0.1.8}/src/teddy_executor/adapters/outbound/system_environment_adapter.py +0 -0
  35. {teddy_cli-0.1.7 → teddy_cli-0.1.8}/src/teddy_executor/adapters/outbound/system_environment_inspector.py +0 -0
  36. {teddy_cli-0.1.7 → teddy_cli-0.1.8}/src/teddy_executor/adapters/outbound/system_time_adapter.py +0 -0
  37. {teddy_cli-0.1.7 → teddy_cli-0.1.8}/src/teddy_executor/adapters/outbound/web_scraper_adapter.py +0 -0
  38. {teddy_cli-0.1.7 → teddy_cli-0.1.8}/src/teddy_executor/adapters/outbound/web_searcher_adapter.py +0 -0
  39. {teddy_cli-0.1.7 → teddy_cli-0.1.8}/src/teddy_executor/adapters/outbound/yaml_config_adapter.py +0 -0
  40. {teddy_cli-0.1.7 → teddy_cli-0.1.8}/src/teddy_executor/container.py +0 -0
  41. {teddy_cli-0.1.7 → teddy_cli-0.1.8}/src/teddy_executor/core/__init__.py +0 -0
  42. {teddy_cli-0.1.7 → teddy_cli-0.1.8}/src/teddy_executor/core/domain/__init__.py +0 -0
  43. {teddy_cli-0.1.7 → teddy_cli-0.1.8}/src/teddy_executor/core/domain/models/__init__.py +0 -0
  44. {teddy_cli-0.1.7 → teddy_cli-0.1.8}/src/teddy_executor/core/domain/models/action_ports.py +0 -0
  45. {teddy_cli-0.1.7 → teddy_cli-0.1.8}/src/teddy_executor/core/domain/models/change_set.py +0 -0
  46. {teddy_cli-0.1.7 → teddy_cli-0.1.8}/src/teddy_executor/core/domain/models/exceptions.py +0 -0
  47. {teddy_cli-0.1.7 → teddy_cli-0.1.8}/src/teddy_executor/core/domain/models/execution_report.py +0 -0
  48. {teddy_cli-0.1.7 → teddy_cli-0.1.8}/src/teddy_executor/core/domain/models/orchestrator_ports.py +0 -0
  49. {teddy_cli-0.1.7 → teddy_cli-0.1.8}/src/teddy_executor/core/domain/models/plan.py +0 -0
  50. {teddy_cli-0.1.7 → teddy_cli-0.1.8}/src/teddy_executor/core/domain/models/planning_ports.py +0 -0
  51. {teddy_cli-0.1.7 → teddy_cli-0.1.8}/src/teddy_executor/core/domain/models/project_context.py +0 -0
  52. {teddy_cli-0.1.7 → teddy_cli-0.1.8}/src/teddy_executor/core/domain/models/report_assembly_data.py +0 -0
  53. {teddy_cli-0.1.7 → teddy_cli-0.1.8}/src/teddy_executor/core/domain/models/session.py +0 -0
  54. {teddy_cli-0.1.7 → teddy_cli-0.1.8}/src/teddy_executor/core/domain/models/shell_output.py +0 -0
  55. {teddy_cli-0.1.7 → teddy_cli-0.1.8}/src/teddy_executor/core/domain/models/web_search_results.py +0 -0
  56. {teddy_cli-0.1.7 → teddy_cli-0.1.8}/src/teddy_executor/core/ports/__init__.py +0 -0
  57. {teddy_cli-0.1.7 → teddy_cli-0.1.8}/src/teddy_executor/core/ports/inbound/__init__.py +0 -0
  58. {teddy_cli-0.1.7 → teddy_cli-0.1.8}/src/teddy_executor/core/ports/inbound/edit_simulator.py +0 -0
  59. {teddy_cli-0.1.7 → teddy_cli-0.1.8}/src/teddy_executor/core/ports/inbound/get_context_use_case.py +0 -0
  60. {teddy_cli-0.1.7 → teddy_cli-0.1.8}/src/teddy_executor/core/ports/inbound/init.py +0 -0
  61. {teddy_cli-0.1.7 → teddy_cli-0.1.8}/src/teddy_executor/core/ports/inbound/plan_parser.py +0 -0
  62. {teddy_cli-0.1.7 → teddy_cli-0.1.8}/src/teddy_executor/core/ports/inbound/plan_reviewer.py +0 -0
  63. {teddy_cli-0.1.7 → teddy_cli-0.1.8}/src/teddy_executor/core/ports/inbound/plan_validator.py +0 -0
  64. {teddy_cli-0.1.7 → teddy_cli-0.1.8}/src/teddy_executor/core/ports/inbound/planning_use_case.py +0 -0
  65. {teddy_cli-0.1.7 → teddy_cli-0.1.8}/src/teddy_executor/core/ports/inbound/run_plan_use_case.py +0 -0
  66. {teddy_cli-0.1.7 → teddy_cli-0.1.8}/src/teddy_executor/core/ports/outbound/__init__.py +0 -0
  67. {teddy_cli-0.1.7 → teddy_cli-0.1.8}/src/teddy_executor/core/ports/outbound/config_service.py +0 -0
  68. {teddy_cli-0.1.7 → teddy_cli-0.1.8}/src/teddy_executor/core/ports/outbound/environment_inspector.py +0 -0
  69. {teddy_cli-0.1.7 → teddy_cli-0.1.8}/src/teddy_executor/core/ports/outbound/execution_report_assembler.py +0 -0
  70. {teddy_cli-0.1.7 → teddy_cli-0.1.8}/src/teddy_executor/core/ports/outbound/file_system_manager.py +0 -0
  71. {teddy_cli-0.1.7 → teddy_cli-0.1.8}/src/teddy_executor/core/ports/outbound/llm_client.py +0 -0
  72. {teddy_cli-0.1.7 → teddy_cli-0.1.8}/src/teddy_executor/core/ports/outbound/markdown_report_formatter.py +0 -0
  73. {teddy_cli-0.1.7 → teddy_cli-0.1.8}/src/teddy_executor/core/ports/outbound/prompt_manager.py +0 -0
  74. {teddy_cli-0.1.7 → teddy_cli-0.1.8}/src/teddy_executor/core/ports/outbound/repo_tree_generator.py +0 -0
  75. {teddy_cli-0.1.7 → teddy_cli-0.1.8}/src/teddy_executor/core/ports/outbound/session_loop_guard.py +0 -0
  76. {teddy_cli-0.1.7 → teddy_cli-0.1.8}/src/teddy_executor/core/ports/outbound/session_manager.py +0 -0
  77. {teddy_cli-0.1.7 → teddy_cli-0.1.8}/src/teddy_executor/core/ports/outbound/session_repository.py +0 -0
  78. {teddy_cli-0.1.7 → teddy_cli-0.1.8}/src/teddy_executor/core/ports/outbound/shell_executor.py +0 -0
  79. {teddy_cli-0.1.7 → teddy_cli-0.1.8}/src/teddy_executor/core/ports/outbound/system_environment.py +0 -0
  80. {teddy_cli-0.1.7 → teddy_cli-0.1.8}/src/teddy_executor/core/ports/outbound/time_service.py +0 -0
  81. {teddy_cli-0.1.7 → teddy_cli-0.1.8}/src/teddy_executor/core/ports/outbound/user_interactor.py +0 -0
  82. {teddy_cli-0.1.7 → teddy_cli-0.1.8}/src/teddy_executor/core/ports/outbound/web_scraper.py +0 -0
  83. {teddy_cli-0.1.7 → teddy_cli-0.1.8}/src/teddy_executor/core/ports/outbound/web_searcher.py +0 -0
  84. {teddy_cli-0.1.7 → teddy_cli-0.1.8}/src/teddy_executor/core/services/__init__.py +0 -0
  85. {teddy_cli-0.1.7 → teddy_cli-0.1.8}/src/teddy_executor/core/services/action_changeset_builder.py +0 -0
  86. {teddy_cli-0.1.7 → teddy_cli-0.1.8}/src/teddy_executor/core/services/action_diff_manager.py +0 -0
  87. {teddy_cli-0.1.7 → teddy_cli-0.1.8}/src/teddy_executor/core/services/action_dispatcher.py +0 -0
  88. {teddy_cli-0.1.7 → teddy_cli-0.1.8}/src/teddy_executor/core/services/action_executor.py +0 -0
  89. {teddy_cli-0.1.7 → teddy_cli-0.1.8}/src/teddy_executor/core/services/action_factory.py +0 -0
  90. {teddy_cli-0.1.7 → teddy_cli-0.1.8}/src/teddy_executor/core/services/action_parser_complex.py +0 -0
  91. {teddy_cli-0.1.7 → teddy_cli-0.1.8}/src/teddy_executor/core/services/action_parser_strategies.py +0 -0
  92. {teddy_cli-0.1.7 → teddy_cli-0.1.8}/src/teddy_executor/core/services/context_service.py +0 -0
  93. {teddy_cli-0.1.7 → teddy_cli-0.1.8}/src/teddy_executor/core/services/edit_simulator.py +0 -0
  94. {teddy_cli-0.1.7 → teddy_cli-0.1.8}/src/teddy_executor/core/services/execution_orchestrator.py +0 -0
  95. {teddy_cli-0.1.7 → teddy_cli-0.1.8}/src/teddy_executor/core/services/execution_report_assembler.py +0 -0
  96. {teddy_cli-0.1.7 → teddy_cli-0.1.8}/src/teddy_executor/core/services/init_service.py +0 -0
  97. {teddy_cli-0.1.7 → teddy_cli-0.1.8}/src/teddy_executor/core/services/markdown_plan_parser.py +0 -0
  98. {teddy_cli-0.1.7 → teddy_cli-0.1.8}/src/teddy_executor/core/services/markdown_report_formatter.py +0 -0
  99. {teddy_cli-0.1.7 → teddy_cli-0.1.8}/src/teddy_executor/core/services/parser_infrastructure.py +0 -0
  100. {teddy_cli-0.1.7 → teddy_cli-0.1.8}/src/teddy_executor/core/services/parser_metadata.py +0 -0
  101. {teddy_cli-0.1.7 → teddy_cli-0.1.8}/src/teddy_executor/core/services/parser_reporting.py +0 -0
  102. {teddy_cli-0.1.7 → teddy_cli-0.1.8}/src/teddy_executor/core/services/plan_validator.py +0 -0
  103. {teddy_cli-0.1.7 → teddy_cli-0.1.8}/src/teddy_executor/core/services/planning_service.py +0 -0
  104. {teddy_cli-0.1.7 → teddy_cli-0.1.8}/src/teddy_executor/core/services/prompt_manager.py +0 -0
  105. {teddy_cli-0.1.7 → teddy_cli-0.1.8}/src/teddy_executor/core/services/session_lifecycle_manager.py +0 -0
  106. {teddy_cli-0.1.7 → teddy_cli-0.1.8}/src/teddy_executor/core/services/session_loop_guard.py +0 -0
  107. {teddy_cli-0.1.7 → teddy_cli-0.1.8}/src/teddy_executor/core/services/session_orchestrator.py +0 -0
  108. {teddy_cli-0.1.7 → teddy_cli-0.1.8}/src/teddy_executor/core/services/session_planner.py +0 -0
  109. {teddy_cli-0.1.7 → teddy_cli-0.1.8}/src/teddy_executor/core/services/session_pruning_service.py +0 -0
  110. {teddy_cli-0.1.7 → teddy_cli-0.1.8}/src/teddy_executor/core/services/session_replanner.py +0 -0
  111. {teddy_cli-0.1.7 → teddy_cli-0.1.8}/src/teddy_executor/core/services/session_repository.py +0 -0
  112. {teddy_cli-0.1.7 → teddy_cli-0.1.8}/src/teddy_executor/core/services/session_service.py +0 -0
  113. {teddy_cli-0.1.7 → teddy_cli-0.1.8}/src/teddy_executor/core/services/templates/execution_report.md.j2 +0 -0
  114. {teddy_cli-0.1.7 → teddy_cli-0.1.8}/src/teddy_executor/core/services/update_checker.py +0 -0
  115. {teddy_cli-0.1.7 → teddy_cli-0.1.8}/src/teddy_executor/core/services/validation_rules/__init__.py +0 -0
  116. {teddy_cli-0.1.7 → teddy_cli-0.1.8}/src/teddy_executor/core/services/validation_rules/edit.py +0 -0
  117. {teddy_cli-0.1.7 → teddy_cli-0.1.8}/src/teddy_executor/core/services/validation_rules/edit_matcher.py +0 -0
  118. {teddy_cli-0.1.7 → teddy_cli-0.1.8}/src/teddy_executor/core/services/validation_rules/edit_matcher_heuristics.py +0 -0
  119. {teddy_cli-0.1.7 → teddy_cli-0.1.8}/src/teddy_executor/core/services/validation_rules/execute.py +0 -0
  120. {teddy_cli-0.1.7 → teddy_cli-0.1.8}/src/teddy_executor/core/services/validation_rules/filesystem.py +0 -0
  121. {teddy_cli-0.1.7 → teddy_cli-0.1.8}/src/teddy_executor/core/services/validation_rules/helpers.py +0 -0
  122. {teddy_cli-0.1.7 → teddy_cli-0.1.8}/src/teddy_executor/core/services/validation_rules/message.py +0 -0
  123. {teddy_cli-0.1.7 → teddy_cli-0.1.8}/src/teddy_executor/core/utils/__init__.py +0 -0
  124. {teddy_cli-0.1.7 → teddy_cli-0.1.8}/src/teddy_executor/core/utils/diff.py +0 -0
  125. {teddy_cli-0.1.7 → teddy_cli-0.1.8}/src/teddy_executor/core/utils/io.py +0 -0
  126. {teddy_cli-0.1.7 → teddy_cli-0.1.8}/src/teddy_executor/core/utils/markdown.py +0 -0
  127. {teddy_cli-0.1.7 → teddy_cli-0.1.8}/src/teddy_executor/core/utils/serialization.py +0 -0
  128. {teddy_cli-0.1.7 → teddy_cli-0.1.8}/src/teddy_executor/core/utils/string.py +0 -0
  129. {teddy_cli-0.1.7 → teddy_cli-0.1.8}/src/teddy_executor/prompts.py +0 -0
  130. {teddy_cli-0.1.7 → teddy_cli-0.1.8}/src/teddy_executor/registries/__init__.py +0 -0
  131. {teddy_cli-0.1.7 → teddy_cli-0.1.8}/src/teddy_executor/registries/infrastructure.py +0 -0
  132. {teddy_cli-0.1.7 → teddy_cli-0.1.8}/src/teddy_executor/registries/reviewer.py +0 -0
  133. {teddy_cli-0.1.7 → teddy_cli-0.1.8}/src/teddy_executor/registries/validators.py +0 -0
  134. {teddy_cli-0.1.7 → teddy_cli-0.1.8}/src/teddy_executor/resources/__init__.py +0 -0
  135. {teddy_cli-0.1.7 → teddy_cli-0.1.8}/src/teddy_executor/resources/config/.gitignore +0 -0
  136. {teddy_cli-0.1.7 → teddy_cli-0.1.8}/src/teddy_executor/resources/config/__init__.py +0 -0
  137. {teddy_cli-0.1.7 → teddy_cli-0.1.8}/src/teddy_executor/resources/config/config.yaml +0 -0
  138. {teddy_cli-0.1.7 → teddy_cli-0.1.8}/src/teddy_executor/resources/config/init.context +0 -0
  139. {teddy_cli-0.1.7 → teddy_cli-0.1.8}/src/teddy_executor/resources/config/prompts/architect.xml +0 -0
  140. {teddy_cli-0.1.7 → teddy_cli-0.1.8}/src/teddy_executor/resources/config/prompts/assistant.xml +0 -0
  141. {teddy_cli-0.1.7 → teddy_cli-0.1.8}/src/teddy_executor/resources/config/prompts/debugger.xml +0 -0
  142. {teddy_cli-0.1.7 → teddy_cli-0.1.8}/src/teddy_executor/resources/config/prompts/developer.xml +0 -0
  143. {teddy_cli-0.1.7 → teddy_cli-0.1.8}/src/teddy_executor/resources/config/prompts/pathfinder.xml +0 -0
  144. {teddy_cli-0.1.7 → teddy_cli-0.1.8}/src/teddy_executor/resources/config/prompts/prototyper.xml +0 -0
@@ -0,0 +1,107 @@
1
+ # Teddy-specific ignores
2
+
3
+ # Byte-compiled / optimized / DLL files
4
+ __pycache__/
5
+ *.py[cod]
6
+ *$py.class
7
+
8
+ # C extensions
9
+ *.so
10
+
11
+ # Distribution / packaging
12
+ .Python
13
+ build/
14
+ develop-eggs/
15
+ dist/
16
+ downloads/
17
+ eggs/
18
+ .eggs/
19
+ lib/
20
+ lib64/
21
+ parts/
22
+ sdist/
23
+ var/
24
+ wheels/
25
+ pip-wheel-metadata/
26
+ share/python-wheels/
27
+ *.egg-info/
28
+ .installed.cfg
29
+ *.egg
30
+ MANIFEST
31
+ node_modules
32
+
33
+ # PyInstaller
34
+ # Usually these files are written by a python script from a template
35
+ # before PyInstaller builds the exe, so as to inject date/other infos into it.
36
+ *.manifest
37
+ *.spec
38
+
39
+ # Installer logs
40
+ pip-log.txt
41
+ pip-delete-this-directory.txt
42
+
43
+ # Unit test / coverage reports
44
+ htmlcov/
45
+ .tox/
46
+ .nox/
47
+ .coverage
48
+ .coverage.*
49
+ .cache
50
+ nosetests.xml
51
+ coverage.xml
52
+ *.cover
53
+ *.py,cover
54
+ .hypothesis/
55
+ .pytest_cache/
56
+
57
+ # Environments
58
+ .env
59
+ .venv
60
+ env/
61
+ venv/
62
+ ENV/
63
+ env.bak/
64
+ venv.bak/
65
+
66
+ # Spyder project settings
67
+ .spyderproject
68
+ .spyproject
69
+
70
+ # Rope project settings
71
+ .ropeproject
72
+
73
+ # mkdocs documentation
74
+ /site
75
+
76
+ # mypy
77
+ .mypy_cache/
78
+ .dmypy.json
79
+ dmypy.json
80
+
81
+ # Pyre type checker
82
+ .pyre/
83
+
84
+ # IDE settings
85
+ .idea/
86
+ .vscode/
87
+
88
+ # OS-generated files
89
+ .DS_Store
90
+ Thumbs.db
91
+ debug_page.html
92
+ debug_screenshot.png
93
+ error_screenshot.png
94
+
95
+ # Do not ignore critical project configuration files
96
+ !/.pre-commit-config.yaml
97
+ !/.github/workflows/ci.yml
98
+ !/src/teddy_executor/resources/config/
99
+ !/src/teddy_executor/resources/config/**
100
+ /src/teddy_executor/resources/config/**/__pycache__/
101
+
102
+ # Test detritus
103
+ .tmp
104
+ .teddy
105
+
106
+ # Archived Folders
107
+ *archive
@@ -0,0 +1,30 @@
1
+ Metadata-Version: 2.4
2
+ Name: teddy-cli
3
+ Version: 0.1.8
4
+ Summary: A local-first, file-based AI coding workflow that applies the UNIX philosophy to AI collaboration.
5
+ Author: Raphael Atteritano
6
+ License: AGPL-3.0-only
7
+ License-File: LICENSE
8
+ Requires-Python: <3.15,>=3.11
9
+ Requires-Dist: bandit<1.8.0,>=1.7.9
10
+ Requires-Dist: beautifulsoup4<5,>=4.14.3
11
+ Requires-Dist: ddgs<10,>=9.10.0
12
+ Requires-Dist: detect-secrets<2.0,>=1.4
13
+ Requires-Dist: httpx<0.29,>=0.28.1
14
+ Requires-Dist: jinja2<4,>=3.1.6
15
+ Requires-Dist: litellm<1.83.8,>=1.83.7
16
+ Requires-Dist: lxml<7,>=6.1.0
17
+ Requires-Dist: mistletoe<2,>=1.3.0
18
+ Requires-Dist: pathspec<1,>=0.12.1
19
+ Requires-Dist: pip-audit<2.8.0,>=2.7.3
20
+ Requires-Dist: playwright
21
+ Requires-Dist: punq<1,>=0.7.0
22
+ Requires-Dist: pyperclip
23
+ Requires-Dist: python-dotenv>=1.0.1
24
+ Requires-Dist: pyyaml<7.0,>=6.0
25
+ Requires-Dist: requests<3,>=2.33.0
26
+ Requires-Dist: textual<9,>=8.1.0
27
+ Requires-Dist: tld<1.0,>=0.10
28
+ Requires-Dist: trafilatura<3,>=2.0.0
29
+ Requires-Dist: typer[all]
30
+ Requires-Dist: urllib3<3,>=2.7.0
@@ -1,56 +1,62 @@
1
- [tool.poetry]
1
+ [project]
2
2
  name = "teddy-cli"
3
- version = "0.1.7"
3
+ version = "0.1.8"
4
4
  description = "A local-first, file-based AI coding workflow that applies the UNIX philosophy to AI collaboration."
5
- authors = ["Raphael Atteritano"]
6
- license = "AGPL-3.0-only"
7
- packages = [{ include = "teddy_executor", from = "src" }]
5
+ authors = [{ name = "Raphael Atteritano" }]
6
+ license = { text = "AGPL-3.0-only" }
7
+ requires-python = ">=3.11, <3.15"
8
+ dependencies = [
9
+ "typer[all]",
10
+ "pyperclip",
11
+ "playwright",
12
+ "httpx>=0.28.1,<0.29",
13
+ "beautifulsoup4>=4.14.3,<5",
14
+ "requests>=2.33.0,<3",
15
+ "ddgs>=9.10.0,<10",
16
+ "pathspec>=0.12.1,<1",
17
+ "punq>=0.7.0,<1",
18
+ "mistletoe>=1.3.0,<2",
19
+ "jinja2>=3.1.6,<4",
20
+ "trafilatura>=2.0.0,<3",
21
+ "lxml>=6.1.0,<7",
22
+ "python-dotenv>=1.0.1",
23
+ "litellm>=1.83.7,<1.83.8",
24
+ "pyyaml>=6.0,<7.0",
25
+ "detect-secrets>=1.4,<2.0",
26
+ "bandit>=1.7.9,<1.8.0",
27
+ "pip-audit>=2.7.3,<2.8.0",
28
+ "textual>=8.1.0,<9",
29
+ "urllib3>=2.7.0,<3",
30
+ "tld>=0.10,<1.0",
31
+ ]
32
+ [project.scripts]
33
+ teddy = "teddy_executor.__main__:app"
8
34
 
9
- [tool.poetry.dependencies]
10
- python = ">=3.11, <3.15"
11
- typer = { version = "*", extras = ["all"] }
12
- pyperclip = "*"
13
- playwright = "*"
14
- httpx = "^0.28.1"
15
- beautifulsoup4 = "^4.14.3"
16
- requests = "^2.33.0"
17
- ddgs = "^9.10.0"
18
- pathspec = "^0.12.1"
19
- punq = "^0.7.0"
20
- mistletoe = "^1.3.0"
21
- jinja2 = "^3.1.6"
22
- trafilatura = "^2.0.0"
23
- lxml = "^6.1.0"
24
- python-dotenv = ">=1.0.1"
25
- litellm = ">=1.83.7,<1.83.8"
26
- pyyaml = ">=6.0,<7.0"
27
- detect-secrets = ">=1.4,<2.0"
28
- bandit = ">=1.7.9,<1.8.0"
29
- pip-audit = ">=2.7.3,<2.8.0"
30
- textual = "^8.1.0"
31
- urllib3 = "^2.7.0"
32
- tld = ">=0.10,<1.0"
35
+ [dependency-groups]
36
+ dev = [
37
+ "pytest>=9.0.3,<10",
38
+ "ruff",
39
+ "mypy",
40
+ "pre-commit",
41
+ "responses>=0.25.8,<1",
42
+ "pytest-httpserver>=1.1.3,<2",
43
+ "types-requests>=2.32.4.20250913,<3",
44
+ "pytest-timeout>=2.4.0,<3",
45
+ "pyfakefs>=6.1.1,<7",
46
+ "pytest-cov>=7.0.0,<8",
47
+ "types-pyyaml>=6.0.12.20250915,<7",
48
+ "pytest-xdist>=3.8.0,<4",
49
+ ]
33
50
 
34
- [tool.poetry.group.dev.dependencies]
35
- pytest = "^9.0.3"
36
- ruff = "*"
37
- mypy = "*"
38
- pre-commit = "*"
39
- responses = "^0.25.8"
40
- pytest-httpserver = "^1.1.3"
41
- types-requests = "^2.32.4.20250913"
42
- pytest-timeout = "^2.4.0"
43
- pyfakefs = "^6.1.1"
44
- pytest-cov = "^7.0.0"
45
- types-pyyaml = "^6.0.12.20250915"
46
- pytest-xdist = "^3.8.0"
51
+ [build-system]
52
+ requires = ["hatchling"]
53
+ build-backend = "hatchling.build"
47
54
 
48
- [tool.poetry.scripts]
49
- teddy = "teddy_executor.__main__:app"
55
+ [tool.hatch.build.targets.wheel]
56
+ packages = ["src/teddy_executor"]
50
57
 
51
- [build-system]
52
- requires = ["poetry-core"]
53
- build-backend = "poetry.core.masonry.api"
58
+ [tool.hatch.build]
59
+ include = ["src/teddy_executor"]
54
60
 
55
61
  [tool.ruff]
56
62
  line-length = 88
@@ -282,18 +282,18 @@ def update(
282
282
  if is_channel_switch:
283
283
  typer.echo(f"You are running the latest experimental version ({current}).")
284
284
  typer.echo(
285
- "To switch to the stable release, run: pipx uninstall teddy-cli && pipx install teddy-cli"
285
+ "To switch to the stable release, run: uv tool install teddy-cli --force"
286
286
  )
287
287
  typer.echo("To apply prompt updates, run: teddy init prompts")
288
288
  elif experimental:
289
289
  typer.echo(f"A new experimental version {latest} is available.")
290
290
  typer.echo(
291
- "To upgrade, run: pipx upgrade teddy-cli --pip-args '--index-url https://test.pypi.org/simple/'"
291
+ "To upgrade, run: uv tool install teddy-cli --index-url https://test.pypi.org/simple/ --extra-index-url https://pypi.org/simple/ --index-strategy unsafe-best-match"
292
292
  )
293
293
  typer.echo("To apply prompt updates, run: teddy init prompts")
294
294
  else:
295
295
  typer.echo(f"A new version {latest} is available.")
296
- typer.echo("To upgrade, run: pipx upgrade teddy-cli")
296
+ typer.echo("To upgrade, run: uv tool upgrade teddy-cli")
297
297
  typer.echo("To apply prompt updates, run: teddy init prompts")
298
298
 
299
299
 
teddy_cli-0.1.7/PKG-INFO DELETED
@@ -1,36 +0,0 @@
1
- Metadata-Version: 2.4
2
- Name: teddy-cli
3
- Version: 0.1.7
4
- Summary: A local-first, file-based AI coding workflow that applies the UNIX philosophy to AI collaboration.
5
- License: AGPL-3.0-only
6
- License-File: LICENSE
7
- Author: Raphael Atteritano
8
- Requires-Python: >=3.11,<3.15
9
- Classifier: License :: OSI Approved :: GNU Affero General Public License v3
10
- Classifier: Programming Language :: Python :: 3
11
- Classifier: Programming Language :: Python :: 3.11
12
- Classifier: Programming Language :: Python :: 3.12
13
- Classifier: Programming Language :: Python :: 3.13
14
- Classifier: Programming Language :: Python :: 3.14
15
- Requires-Dist: bandit (>=1.7.9,<1.8.0)
16
- Requires-Dist: beautifulsoup4 (>=4.14.3,<5.0.0)
17
- Requires-Dist: ddgs (>=9.10.0,<10.0.0)
18
- Requires-Dist: detect-secrets (>=1.4,<2.0)
19
- Requires-Dist: httpx (>=0.28.1,<0.29.0)
20
- Requires-Dist: jinja2 (>=3.1.6,<4.0.0)
21
- Requires-Dist: litellm (>=1.83.7,<1.83.8)
22
- Requires-Dist: lxml (>=6.1.0,<7.0.0)
23
- Requires-Dist: mistletoe (>=1.3.0,<2.0.0)
24
- Requires-Dist: pathspec (>=0.12.1,<0.13.0)
25
- Requires-Dist: pip-audit (>=2.7.3,<2.8.0)
26
- Requires-Dist: playwright
27
- Requires-Dist: punq (>=0.7.0,<0.8.0)
28
- Requires-Dist: pyperclip
29
- Requires-Dist: python-dotenv (>=1.0.1)
30
- Requires-Dist: pyyaml (>=6.0,<7.0)
31
- Requires-Dist: requests (>=2.33.0,<3.0.0)
32
- Requires-Dist: textual (>=8.1.0,<9.0.0)
33
- Requires-Dist: tld (>=0.10,<1.0)
34
- Requires-Dist: trafilatura (>=2.0.0,<3.0.0)
35
- Requires-Dist: typer[all]
36
- Requires-Dist: urllib3 (>=2.7.0,<3.0.0)
File without changes