teddy-cli 0.1.6__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.6 → teddy_cli-0.1.8}/pyproject.toml +53 -47
  4. {teddy_cli-0.1.6 → teddy_cli-0.1.8}/src/teddy_executor/__main__.py +3 -3
  5. {teddy_cli-0.1.6 → teddy_cli-0.1.8}/src/teddy_executor/adapters/inbound/session_cli_handlers.py +1 -2
  6. teddy_cli-0.1.6/PKG-INFO +0 -36
  7. {teddy_cli-0.1.6 → teddy_cli-0.1.8}/LICENSE +0 -0
  8. {teddy_cli-0.1.6 → teddy_cli-0.1.8}/src/teddy_executor/__init__.py +0 -0
  9. {teddy_cli-0.1.6 → teddy_cli-0.1.8}/src/teddy_executor/adapters/__init__.py +0 -0
  10. {teddy_cli-0.1.6 → teddy_cli-0.1.8}/src/teddy_executor/adapters/inbound/__init__.py +0 -0
  11. {teddy_cli-0.1.6 → teddy_cli-0.1.8}/src/teddy_executor/adapters/inbound/cli_formatter.py +0 -0
  12. {teddy_cli-0.1.6 → teddy_cli-0.1.8}/src/teddy_executor/adapters/inbound/cli_helpers.py +0 -0
  13. {teddy_cli-0.1.6 → teddy_cli-0.1.8}/src/teddy_executor/adapters/inbound/console_plan_reviewer.py +0 -0
  14. {teddy_cli-0.1.6 → teddy_cli-0.1.8}/src/teddy_executor/adapters/inbound/textual_plan_reviewer.py +0 -0
  15. {teddy_cli-0.1.6 → teddy_cli-0.1.8}/src/teddy_executor/adapters/inbound/textual_plan_reviewer_app.py +0 -0
  16. {teddy_cli-0.1.6 → teddy_cli-0.1.8}/src/teddy_executor/adapters/inbound/textual_plan_reviewer_editor.py +0 -0
  17. {teddy_cli-0.1.6 → teddy_cli-0.1.8}/src/teddy_executor/adapters/inbound/textual_plan_reviewer_execution.py +0 -0
  18. {teddy_cli-0.1.6 → teddy_cli-0.1.8}/src/teddy_executor/adapters/inbound/textual_plan_reviewer_helpers.py +0 -0
  19. {teddy_cli-0.1.6 → teddy_cli-0.1.8}/src/teddy_executor/adapters/inbound/textual_plan_reviewer_logic.py +0 -0
  20. {teddy_cli-0.1.6 → teddy_cli-0.1.8}/src/teddy_executor/adapters/inbound/textual_plan_reviewer_previews.py +0 -0
  21. {teddy_cli-0.1.6 → teddy_cli-0.1.8}/src/teddy_executor/adapters/inbound/textual_plan_reviewer_widgets.py +0 -0
  22. {teddy_cli-0.1.6 → teddy_cli-0.1.8}/src/teddy_executor/adapters/outbound/__init__.py +0 -0
  23. {teddy_cli-0.1.6 → teddy_cli-0.1.8}/src/teddy_executor/adapters/outbound/console_interactor.py +0 -0
  24. {teddy_cli-0.1.6 → teddy_cli-0.1.8}/src/teddy_executor/adapters/outbound/console_interactor_ask_loop.py +0 -0
  25. {teddy_cli-0.1.6 → teddy_cli-0.1.8}/src/teddy_executor/adapters/outbound/console_interactor_helpers.py +0 -0
  26. {teddy_cli-0.1.6 → teddy_cli-0.1.8}/src/teddy_executor/adapters/outbound/console_tooling.py +0 -0
  27. {teddy_cli-0.1.6 → teddy_cli-0.1.8}/src/teddy_executor/adapters/outbound/filesystem_helpers.py +0 -0
  28. {teddy_cli-0.1.6 → teddy_cli-0.1.8}/src/teddy_executor/adapters/outbound/litellm_adapter.py +0 -0
  29. {teddy_cli-0.1.6 → teddy_cli-0.1.8}/src/teddy_executor/adapters/outbound/local_file_system_adapter.py +0 -0
  30. {teddy_cli-0.1.6 → teddy_cli-0.1.8}/src/teddy_executor/adapters/outbound/local_repo_tree_generator.py +0 -0
  31. {teddy_cli-0.1.6 → teddy_cli-0.1.8}/src/teddy_executor/adapters/outbound/openrouter_hydrator.py +0 -0
  32. {teddy_cli-0.1.6 → teddy_cli-0.1.8}/src/teddy_executor/adapters/outbound/shell_adapter.py +0 -0
  33. {teddy_cli-0.1.6 → teddy_cli-0.1.8}/src/teddy_executor/adapters/outbound/shell_command_builder.py +0 -0
  34. {teddy_cli-0.1.6 → teddy_cli-0.1.8}/src/teddy_executor/adapters/outbound/system_environment_adapter.py +0 -0
  35. {teddy_cli-0.1.6 → teddy_cli-0.1.8}/src/teddy_executor/adapters/outbound/system_environment_inspector.py +0 -0
  36. {teddy_cli-0.1.6 → teddy_cli-0.1.8}/src/teddy_executor/adapters/outbound/system_time_adapter.py +0 -0
  37. {teddy_cli-0.1.6 → teddy_cli-0.1.8}/src/teddy_executor/adapters/outbound/web_scraper_adapter.py +0 -0
  38. {teddy_cli-0.1.6 → teddy_cli-0.1.8}/src/teddy_executor/adapters/outbound/web_searcher_adapter.py +0 -0
  39. {teddy_cli-0.1.6 → teddy_cli-0.1.8}/src/teddy_executor/adapters/outbound/yaml_config_adapter.py +0 -0
  40. {teddy_cli-0.1.6 → teddy_cli-0.1.8}/src/teddy_executor/container.py +0 -0
  41. {teddy_cli-0.1.6 → teddy_cli-0.1.8}/src/teddy_executor/core/__init__.py +0 -0
  42. {teddy_cli-0.1.6 → teddy_cli-0.1.8}/src/teddy_executor/core/domain/__init__.py +0 -0
  43. {teddy_cli-0.1.6 → teddy_cli-0.1.8}/src/teddy_executor/core/domain/models/__init__.py +0 -0
  44. {teddy_cli-0.1.6 → teddy_cli-0.1.8}/src/teddy_executor/core/domain/models/action_ports.py +0 -0
  45. {teddy_cli-0.1.6 → teddy_cli-0.1.8}/src/teddy_executor/core/domain/models/change_set.py +0 -0
  46. {teddy_cli-0.1.6 → teddy_cli-0.1.8}/src/teddy_executor/core/domain/models/exceptions.py +0 -0
  47. {teddy_cli-0.1.6 → teddy_cli-0.1.8}/src/teddy_executor/core/domain/models/execution_report.py +0 -0
  48. {teddy_cli-0.1.6 → teddy_cli-0.1.8}/src/teddy_executor/core/domain/models/orchestrator_ports.py +0 -0
  49. {teddy_cli-0.1.6 → teddy_cli-0.1.8}/src/teddy_executor/core/domain/models/plan.py +0 -0
  50. {teddy_cli-0.1.6 → teddy_cli-0.1.8}/src/teddy_executor/core/domain/models/planning_ports.py +0 -0
  51. {teddy_cli-0.1.6 → teddy_cli-0.1.8}/src/teddy_executor/core/domain/models/project_context.py +0 -0
  52. {teddy_cli-0.1.6 → teddy_cli-0.1.8}/src/teddy_executor/core/domain/models/report_assembly_data.py +0 -0
  53. {teddy_cli-0.1.6 → teddy_cli-0.1.8}/src/teddy_executor/core/domain/models/session.py +0 -0
  54. {teddy_cli-0.1.6 → teddy_cli-0.1.8}/src/teddy_executor/core/domain/models/shell_output.py +0 -0
  55. {teddy_cli-0.1.6 → teddy_cli-0.1.8}/src/teddy_executor/core/domain/models/web_search_results.py +0 -0
  56. {teddy_cli-0.1.6 → teddy_cli-0.1.8}/src/teddy_executor/core/ports/__init__.py +0 -0
  57. {teddy_cli-0.1.6 → teddy_cli-0.1.8}/src/teddy_executor/core/ports/inbound/__init__.py +0 -0
  58. {teddy_cli-0.1.6 → teddy_cli-0.1.8}/src/teddy_executor/core/ports/inbound/edit_simulator.py +0 -0
  59. {teddy_cli-0.1.6 → teddy_cli-0.1.8}/src/teddy_executor/core/ports/inbound/get_context_use_case.py +0 -0
  60. {teddy_cli-0.1.6 → teddy_cli-0.1.8}/src/teddy_executor/core/ports/inbound/init.py +0 -0
  61. {teddy_cli-0.1.6 → teddy_cli-0.1.8}/src/teddy_executor/core/ports/inbound/plan_parser.py +0 -0
  62. {teddy_cli-0.1.6 → teddy_cli-0.1.8}/src/teddy_executor/core/ports/inbound/plan_reviewer.py +0 -0
  63. {teddy_cli-0.1.6 → teddy_cli-0.1.8}/src/teddy_executor/core/ports/inbound/plan_validator.py +0 -0
  64. {teddy_cli-0.1.6 → teddy_cli-0.1.8}/src/teddy_executor/core/ports/inbound/planning_use_case.py +0 -0
  65. {teddy_cli-0.1.6 → teddy_cli-0.1.8}/src/teddy_executor/core/ports/inbound/run_plan_use_case.py +0 -0
  66. {teddy_cli-0.1.6 → teddy_cli-0.1.8}/src/teddy_executor/core/ports/outbound/__init__.py +0 -0
  67. {teddy_cli-0.1.6 → teddy_cli-0.1.8}/src/teddy_executor/core/ports/outbound/config_service.py +0 -0
  68. {teddy_cli-0.1.6 → teddy_cli-0.1.8}/src/teddy_executor/core/ports/outbound/environment_inspector.py +0 -0
  69. {teddy_cli-0.1.6 → teddy_cli-0.1.8}/src/teddy_executor/core/ports/outbound/execution_report_assembler.py +0 -0
  70. {teddy_cli-0.1.6 → teddy_cli-0.1.8}/src/teddy_executor/core/ports/outbound/file_system_manager.py +0 -0
  71. {teddy_cli-0.1.6 → teddy_cli-0.1.8}/src/teddy_executor/core/ports/outbound/llm_client.py +0 -0
  72. {teddy_cli-0.1.6 → teddy_cli-0.1.8}/src/teddy_executor/core/ports/outbound/markdown_report_formatter.py +0 -0
  73. {teddy_cli-0.1.6 → teddy_cli-0.1.8}/src/teddy_executor/core/ports/outbound/prompt_manager.py +0 -0
  74. {teddy_cli-0.1.6 → teddy_cli-0.1.8}/src/teddy_executor/core/ports/outbound/repo_tree_generator.py +0 -0
  75. {teddy_cli-0.1.6 → teddy_cli-0.1.8}/src/teddy_executor/core/ports/outbound/session_loop_guard.py +0 -0
  76. {teddy_cli-0.1.6 → teddy_cli-0.1.8}/src/teddy_executor/core/ports/outbound/session_manager.py +0 -0
  77. {teddy_cli-0.1.6 → teddy_cli-0.1.8}/src/teddy_executor/core/ports/outbound/session_repository.py +0 -0
  78. {teddy_cli-0.1.6 → teddy_cli-0.1.8}/src/teddy_executor/core/ports/outbound/shell_executor.py +0 -0
  79. {teddy_cli-0.1.6 → teddy_cli-0.1.8}/src/teddy_executor/core/ports/outbound/system_environment.py +0 -0
  80. {teddy_cli-0.1.6 → teddy_cli-0.1.8}/src/teddy_executor/core/ports/outbound/time_service.py +0 -0
  81. {teddy_cli-0.1.6 → teddy_cli-0.1.8}/src/teddy_executor/core/ports/outbound/user_interactor.py +0 -0
  82. {teddy_cli-0.1.6 → teddy_cli-0.1.8}/src/teddy_executor/core/ports/outbound/web_scraper.py +0 -0
  83. {teddy_cli-0.1.6 → teddy_cli-0.1.8}/src/teddy_executor/core/ports/outbound/web_searcher.py +0 -0
  84. {teddy_cli-0.1.6 → teddy_cli-0.1.8}/src/teddy_executor/core/services/__init__.py +0 -0
  85. {teddy_cli-0.1.6 → teddy_cli-0.1.8}/src/teddy_executor/core/services/action_changeset_builder.py +0 -0
  86. {teddy_cli-0.1.6 → teddy_cli-0.1.8}/src/teddy_executor/core/services/action_diff_manager.py +0 -0
  87. {teddy_cli-0.1.6 → teddy_cli-0.1.8}/src/teddy_executor/core/services/action_dispatcher.py +0 -0
  88. {teddy_cli-0.1.6 → teddy_cli-0.1.8}/src/teddy_executor/core/services/action_executor.py +0 -0
  89. {teddy_cli-0.1.6 → teddy_cli-0.1.8}/src/teddy_executor/core/services/action_factory.py +0 -0
  90. {teddy_cli-0.1.6 → teddy_cli-0.1.8}/src/teddy_executor/core/services/action_parser_complex.py +0 -0
  91. {teddy_cli-0.1.6 → teddy_cli-0.1.8}/src/teddy_executor/core/services/action_parser_strategies.py +0 -0
  92. {teddy_cli-0.1.6 → teddy_cli-0.1.8}/src/teddy_executor/core/services/context_service.py +0 -0
  93. {teddy_cli-0.1.6 → teddy_cli-0.1.8}/src/teddy_executor/core/services/edit_simulator.py +0 -0
  94. {teddy_cli-0.1.6 → teddy_cli-0.1.8}/src/teddy_executor/core/services/execution_orchestrator.py +0 -0
  95. {teddy_cli-0.1.6 → teddy_cli-0.1.8}/src/teddy_executor/core/services/execution_report_assembler.py +0 -0
  96. {teddy_cli-0.1.6 → teddy_cli-0.1.8}/src/teddy_executor/core/services/init_service.py +0 -0
  97. {teddy_cli-0.1.6 → teddy_cli-0.1.8}/src/teddy_executor/core/services/markdown_plan_parser.py +0 -0
  98. {teddy_cli-0.1.6 → teddy_cli-0.1.8}/src/teddy_executor/core/services/markdown_report_formatter.py +0 -0
  99. {teddy_cli-0.1.6 → teddy_cli-0.1.8}/src/teddy_executor/core/services/parser_infrastructure.py +0 -0
  100. {teddy_cli-0.1.6 → teddy_cli-0.1.8}/src/teddy_executor/core/services/parser_metadata.py +0 -0
  101. {teddy_cli-0.1.6 → teddy_cli-0.1.8}/src/teddy_executor/core/services/parser_reporting.py +0 -0
  102. {teddy_cli-0.1.6 → teddy_cli-0.1.8}/src/teddy_executor/core/services/plan_validator.py +0 -0
  103. {teddy_cli-0.1.6 → teddy_cli-0.1.8}/src/teddy_executor/core/services/planning_service.py +0 -0
  104. {teddy_cli-0.1.6 → teddy_cli-0.1.8}/src/teddy_executor/core/services/prompt_manager.py +0 -0
  105. {teddy_cli-0.1.6 → teddy_cli-0.1.8}/src/teddy_executor/core/services/session_lifecycle_manager.py +0 -0
  106. {teddy_cli-0.1.6 → teddy_cli-0.1.8}/src/teddy_executor/core/services/session_loop_guard.py +0 -0
  107. {teddy_cli-0.1.6 → teddy_cli-0.1.8}/src/teddy_executor/core/services/session_orchestrator.py +0 -0
  108. {teddy_cli-0.1.6 → teddy_cli-0.1.8}/src/teddy_executor/core/services/session_planner.py +0 -0
  109. {teddy_cli-0.1.6 → teddy_cli-0.1.8}/src/teddy_executor/core/services/session_pruning_service.py +0 -0
  110. {teddy_cli-0.1.6 → teddy_cli-0.1.8}/src/teddy_executor/core/services/session_replanner.py +0 -0
  111. {teddy_cli-0.1.6 → teddy_cli-0.1.8}/src/teddy_executor/core/services/session_repository.py +0 -0
  112. {teddy_cli-0.1.6 → teddy_cli-0.1.8}/src/teddy_executor/core/services/session_service.py +0 -0
  113. {teddy_cli-0.1.6 → teddy_cli-0.1.8}/src/teddy_executor/core/services/templates/execution_report.md.j2 +0 -0
  114. {teddy_cli-0.1.6 → teddy_cli-0.1.8}/src/teddy_executor/core/services/update_checker.py +0 -0
  115. {teddy_cli-0.1.6 → teddy_cli-0.1.8}/src/teddy_executor/core/services/validation_rules/__init__.py +0 -0
  116. {teddy_cli-0.1.6 → teddy_cli-0.1.8}/src/teddy_executor/core/services/validation_rules/edit.py +0 -0
  117. {teddy_cli-0.1.6 → teddy_cli-0.1.8}/src/teddy_executor/core/services/validation_rules/edit_matcher.py +0 -0
  118. {teddy_cli-0.1.6 → teddy_cli-0.1.8}/src/teddy_executor/core/services/validation_rules/edit_matcher_heuristics.py +0 -0
  119. {teddy_cli-0.1.6 → teddy_cli-0.1.8}/src/teddy_executor/core/services/validation_rules/execute.py +0 -0
  120. {teddy_cli-0.1.6 → teddy_cli-0.1.8}/src/teddy_executor/core/services/validation_rules/filesystem.py +0 -0
  121. {teddy_cli-0.1.6 → teddy_cli-0.1.8}/src/teddy_executor/core/services/validation_rules/helpers.py +0 -0
  122. {teddy_cli-0.1.6 → teddy_cli-0.1.8}/src/teddy_executor/core/services/validation_rules/message.py +0 -0
  123. {teddy_cli-0.1.6 → teddy_cli-0.1.8}/src/teddy_executor/core/utils/__init__.py +0 -0
  124. {teddy_cli-0.1.6 → teddy_cli-0.1.8}/src/teddy_executor/core/utils/diff.py +0 -0
  125. {teddy_cli-0.1.6 → teddy_cli-0.1.8}/src/teddy_executor/core/utils/io.py +0 -0
  126. {teddy_cli-0.1.6 → teddy_cli-0.1.8}/src/teddy_executor/core/utils/markdown.py +0 -0
  127. {teddy_cli-0.1.6 → teddy_cli-0.1.8}/src/teddy_executor/core/utils/serialization.py +0 -0
  128. {teddy_cli-0.1.6 → teddy_cli-0.1.8}/src/teddy_executor/core/utils/string.py +0 -0
  129. {teddy_cli-0.1.6 → teddy_cli-0.1.8}/src/teddy_executor/prompts.py +0 -0
  130. {teddy_cli-0.1.6 → teddy_cli-0.1.8}/src/teddy_executor/registries/__init__.py +0 -0
  131. {teddy_cli-0.1.6 → teddy_cli-0.1.8}/src/teddy_executor/registries/infrastructure.py +0 -0
  132. {teddy_cli-0.1.6 → teddy_cli-0.1.8}/src/teddy_executor/registries/reviewer.py +0 -0
  133. {teddy_cli-0.1.6 → teddy_cli-0.1.8}/src/teddy_executor/registries/validators.py +0 -0
  134. {teddy_cli-0.1.6 → teddy_cli-0.1.8}/src/teddy_executor/resources/__init__.py +0 -0
  135. {teddy_cli-0.1.6 → teddy_cli-0.1.8}/src/teddy_executor/resources/config/.gitignore +0 -0
  136. {teddy_cli-0.1.6 → teddy_cli-0.1.8}/src/teddy_executor/resources/config/__init__.py +0 -0
  137. {teddy_cli-0.1.6 → teddy_cli-0.1.8}/src/teddy_executor/resources/config/config.yaml +0 -0
  138. {teddy_cli-0.1.6 → teddy_cli-0.1.8}/src/teddy_executor/resources/config/init.context +0 -0
  139. {teddy_cli-0.1.6 → teddy_cli-0.1.8}/src/teddy_executor/resources/config/prompts/architect.xml +0 -0
  140. {teddy_cli-0.1.6 → teddy_cli-0.1.8}/src/teddy_executor/resources/config/prompts/assistant.xml +0 -0
  141. {teddy_cli-0.1.6 → teddy_cli-0.1.8}/src/teddy_executor/resources/config/prompts/debugger.xml +0 -0
  142. {teddy_cli-0.1.6 → teddy_cli-0.1.8}/src/teddy_executor/resources/config/prompts/developer.xml +0 -0
  143. {teddy_cli-0.1.6 → teddy_cli-0.1.8}/src/teddy_executor/resources/config/prompts/pathfinder.xml +0 -0
  144. {teddy_cli-0.1.6 → 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.6"
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: pip uninstall -y teddy-cli && pip 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: pip install --upgrade teddy-cli --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: pip install --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
 
@@ -183,8 +183,7 @@ def _display_update_notification(cache_path: Path) -> None:
183
183
  typer.echo(
184
184
  typer.style(
185
185
  f"ℹ A new version {latest} is available. "
186
- "To upgrade, run: pip install --upgrade teddy-cli\n"
187
- " To apply prompt updates: delete .teddy/prompts/ and run 'teddy init'",
186
+ "To upgrade, run: pipx upgrade teddy-cli\n",
188
187
  fg=typer.colors.YELLOW,
189
188
  )
190
189
  )
teddy_cli-0.1.6/PKG-INFO DELETED
@@ -1,36 +0,0 @@
1
- Metadata-Version: 2.4
2
- Name: teddy-cli
3
- Version: 0.1.6
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