comodor 0.10.2__tar.gz → 0.10.3__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 (177) hide show
  1. {comodor-0.10.2 → comodor-0.10.3}/PKG-INFO +1 -1
  2. {comodor-0.10.2 → comodor-0.10.3}/src/comodor/_version.py +2 -2
  3. {comodor-0.10.2 → comodor-0.10.3}/src/comodor/setup.py +30 -3
  4. {comodor-0.10.2 → comodor-0.10.3}/.gitignore +0 -0
  5. {comodor-0.10.2 → comodor-0.10.3}/LICENSE +0 -0
  6. {comodor-0.10.2 → comodor-0.10.3}/README.md +0 -0
  7. {comodor-0.10.2 → comodor-0.10.3}/docs/README.md +0 -0
  8. {comodor-0.10.2 → comodor-0.10.3}/pyproject.toml +0 -0
  9. {comodor-0.10.2 → comodor-0.10.3}/src/comodor/__init__.py +0 -0
  10. {comodor-0.10.2 → comodor-0.10.3}/src/comodor/__main__.py +0 -0
  11. {comodor-0.10.2 → comodor-0.10.3}/src/comodor/agent/__init__.py +0 -0
  12. {comodor-0.10.2 → comodor-0.10.3}/src/comodor/agent/context.py +0 -0
  13. {comodor-0.10.2 → comodor-0.10.3}/src/comodor/agent/loop.py +0 -0
  14. {comodor-0.10.2 → comodor-0.10.3}/src/comodor/agent/prompts.py +0 -0
  15. {comodor-0.10.2 → comodor-0.10.3}/src/comodor/agent/spawn.py +0 -0
  16. {comodor-0.10.2 → comodor-0.10.3}/src/comodor/agent/tokens.py +0 -0
  17. {comodor-0.10.2 → comodor-0.10.3}/src/comodor/browser/__init__.py +0 -0
  18. {comodor-0.10.2 → comodor-0.10.3}/src/comodor/browser/cdp.py +0 -0
  19. {comodor-0.10.2 → comodor-0.10.3}/src/comodor/browser/launch.py +0 -0
  20. {comodor-0.10.2 → comodor-0.10.3}/src/comodor/browser/page.py +0 -0
  21. {comodor-0.10.2 → comodor-0.10.3}/src/comodor/catalogue.py +0 -0
  22. {comodor-0.10.2 → comodor-0.10.3}/src/comodor/cli.py +0 -0
  23. {comodor-0.10.2 → comodor-0.10.3}/src/comodor/config.py +0 -0
  24. {comodor-0.10.2 → comodor-0.10.3}/src/comodor/desktop/__init__.py +0 -0
  25. {comodor-0.10.2 → comodor-0.10.3}/src/comodor/desktop/guard.py +0 -0
  26. {comodor-0.10.2 → comodor-0.10.3}/src/comodor/desktop/keys.py +0 -0
  27. {comodor-0.10.2 → comodor-0.10.3}/src/comodor/desktop/overlay.py +0 -0
  28. {comodor-0.10.2 → comodor-0.10.3}/src/comodor/desktop/png.py +0 -0
  29. {comodor-0.10.2 → comodor-0.10.3}/src/comodor/desktop/screen.py +0 -0
  30. {comodor-0.10.2 → comodor-0.10.3}/src/comodor/desktop/win32.py +0 -0
  31. {comodor-0.10.2 → comodor-0.10.3}/src/comodor/doctor.py +0 -0
  32. {comodor-0.10.2 → comodor-0.10.3}/src/comodor/events.py +0 -0
  33. {comodor-0.10.2 → comodor-0.10.3}/src/comodor/help.py +0 -0
  34. {comodor-0.10.2 → comodor-0.10.3}/src/comodor/learning/__init__.py +0 -0
  35. {comodor-0.10.2 → comodor-0.10.3}/src/comodor/learning/associations.py +0 -0
  36. {comodor-0.10.2 → comodor-0.10.3}/src/comodor/learning/bm25.py +0 -0
  37. {comodor-0.10.2 → comodor-0.10.3}/src/comodor/learning/hotindex.py +0 -0
  38. {comodor-0.10.2 → comodor-0.10.3}/src/comodor/learning/memory.py +0 -0
  39. {comodor-0.10.2 → comodor-0.10.3}/src/comodor/learning/progress.py +0 -0
  40. {comodor-0.10.2 → comodor-0.10.3}/src/comodor/learning/reflect.py +0 -0
  41. {comodor-0.10.2 → comodor-0.10.3}/src/comodor/learning/rules.py +0 -0
  42. {comodor-0.10.2 → comodor-0.10.3}/src/comodor/learning/signals.py +0 -0
  43. {comodor-0.10.2 → comodor-0.10.3}/src/comodor/learning/store.py +0 -0
  44. {comodor-0.10.2 → comodor-0.10.3}/src/comodor/learning/writer.py +0 -0
  45. {comodor-0.10.2 → comodor-0.10.3}/src/comodor/mcp/__init__.py +0 -0
  46. {comodor-0.10.2 → comodor-0.10.3}/src/comodor/mcp/catalogue.py +0 -0
  47. {comodor-0.10.2 → comodor-0.10.3}/src/comodor/mcp/commands.py +0 -0
  48. {comodor-0.10.2 → comodor-0.10.3}/src/comodor/mcp/http.py +0 -0
  49. {comodor-0.10.2 → comodor-0.10.3}/src/comodor/mcp/manager.py +0 -0
  50. {comodor-0.10.2 → comodor-0.10.3}/src/comodor/mcp/protocol.py +0 -0
  51. {comodor-0.10.2 → comodor-0.10.3}/src/comodor/migrate.py +0 -0
  52. {comodor-0.10.2 → comodor-0.10.3}/src/comodor/net/__init__.py +0 -0
  53. {comodor-0.10.2 → comodor-0.10.3}/src/comodor/net/http.py +0 -0
  54. {comodor-0.10.2 → comodor-0.10.3}/src/comodor/net/sse.py +0 -0
  55. {comodor-0.10.2 → comodor-0.10.3}/src/comodor/paths.py +0 -0
  56. {comodor-0.10.2 → comodor-0.10.3}/src/comodor/providers/__init__.py +0 -0
  57. {comodor-0.10.2 → comodor-0.10.3}/src/comodor/providers/anthropic.py +0 -0
  58. {comodor-0.10.2 → comodor-0.10.3}/src/comodor/providers/base.py +0 -0
  59. {comodor-0.10.2 → comodor-0.10.3}/src/comodor/providers/caching.py +0 -0
  60. {comodor-0.10.2 → comodor-0.10.3}/src/comodor/providers/fake.py +0 -0
  61. {comodor-0.10.2 → comodor-0.10.3}/src/comodor/providers/gateway.py +0 -0
  62. {comodor-0.10.2 → comodor-0.10.3}/src/comodor/providers/openai_compat.py +0 -0
  63. {comodor-0.10.2 → comodor-0.10.3}/src/comodor/providers/registry.py +0 -0
  64. {comodor-0.10.2 → comodor-0.10.3}/src/comodor/safety/__init__.py +0 -0
  65. {comodor-0.10.2 → comodor-0.10.3}/src/comodor/safety/checkpoints.py +0 -0
  66. {comodor-0.10.2 → comodor-0.10.3}/src/comodor/safety/permissions.py +0 -0
  67. {comodor-0.10.2 → comodor-0.10.3}/src/comodor/safety/redact.py +0 -0
  68. {comodor-0.10.2 → comodor-0.10.3}/src/comodor/session/__init__.py +0 -0
  69. {comodor-0.10.2 → comodor-0.10.3}/src/comodor/session/search.py +0 -0
  70. {comodor-0.10.2 → comodor-0.10.3}/src/comodor/session/store.py +0 -0
  71. {comodor-0.10.2 → comodor-0.10.3}/src/comodor/skills/__init__.py +0 -0
  72. {comodor-0.10.2 → comodor-0.10.3}/src/comodor/skills/catalogue.py +0 -0
  73. {comodor-0.10.2 → comodor-0.10.3}/src/comodor/skills/commands.py +0 -0
  74. {comodor-0.10.2 → comodor-0.10.3}/src/comodor/skills/examples.py +0 -0
  75. {comodor-0.10.2 → comodor-0.10.3}/src/comodor/skills/loader.py +0 -0
  76. {comodor-0.10.2 → comodor-0.10.3}/src/comodor/skills/propose.py +0 -0
  77. {comodor-0.10.2 → comodor-0.10.3}/src/comodor/skills/registry.py +0 -0
  78. {comodor-0.10.2 → comodor-0.10.3}/src/comodor/tools/__init__.py +0 -0
  79. {comodor-0.10.2 → comodor-0.10.3}/src/comodor/tools/base.py +0 -0
  80. {comodor-0.10.2 → comodor-0.10.3}/src/comodor/tools/browse.py +0 -0
  81. {comodor-0.10.2 → comodor-0.10.3}/src/comodor/tools/browser.py +0 -0
  82. {comodor-0.10.2 → comodor-0.10.3}/src/comodor/tools/computer.py +0 -0
  83. {comodor-0.10.2 → comodor-0.10.3}/src/comodor/tools/delegate.py +0 -0
  84. {comodor-0.10.2 → comodor-0.10.3}/src/comodor/tools/fs.py +0 -0
  85. {comodor-0.10.2 → comodor-0.10.3}/src/comodor/tools/history.py +0 -0
  86. {comodor-0.10.2 → comodor-0.10.3}/src/comodor/tools/mcp.py +0 -0
  87. {comodor-0.10.2 → comodor-0.10.3}/src/comodor/tools/overflow.py +0 -0
  88. {comodor-0.10.2 → comodor-0.10.3}/src/comodor/tools/registry.py +0 -0
  89. {comodor-0.10.2 → comodor-0.10.3}/src/comodor/tools/search.py +0 -0
  90. {comodor-0.10.2 → comodor-0.10.3}/src/comodor/tools/shell.py +0 -0
  91. {comodor-0.10.2 → comodor-0.10.3}/src/comodor/tools/skills.py +0 -0
  92. {comodor-0.10.2 → comodor-0.10.3}/src/comodor/tools/todo.py +0 -0
  93. {comodor-0.10.2 → comodor-0.10.3}/src/comodor/tools/web.py +0 -0
  94. {comodor-0.10.2 → comodor-0.10.3}/src/comodor/ui/__init__.py +0 -0
  95. {comodor-0.10.2 → comodor-0.10.3}/src/comodor/ui/app.py +0 -0
  96. {comodor-0.10.2 → comodor-0.10.3}/src/comodor/ui/banner.py +0 -0
  97. {comodor-0.10.2 → comodor-0.10.3}/src/comodor/ui/bidi.py +0 -0
  98. {comodor-0.10.2 → comodor-0.10.3}/src/comodor/ui/chooser.py +0 -0
  99. {comodor-0.10.2 → comodor-0.10.3}/src/comodor/ui/clipboard.py +0 -0
  100. {comodor-0.10.2 → comodor-0.10.3}/src/comodor/ui/console.py +0 -0
  101. {comodor-0.10.2 → comodor-0.10.3}/src/comodor/ui/input/__init__.py +0 -0
  102. {comodor-0.10.2 → comodor-0.10.3}/src/comodor/ui/input/keys.py +0 -0
  103. {comodor-0.10.2 → comodor-0.10.3}/src/comodor/ui/input/reader.py +0 -0
  104. {comodor-0.10.2 → comodor-0.10.3}/src/comodor/ui/layout.py +0 -0
  105. {comodor-0.10.2 → comodor-0.10.3}/src/comodor/ui/markdown.py +0 -0
  106. {comodor-0.10.2 → comodor-0.10.3}/src/comodor/ui/screen.py +0 -0
  107. {comodor-0.10.2 → comodor-0.10.3}/src/comodor/ui/theme.py +0 -0
  108. {comodor-0.10.2 → comodor-0.10.3}/src/comodor/ui/widgets/__init__.py +0 -0
  109. {comodor-0.10.2 → comodor-0.10.3}/src/comodor/ui/widgets/buttons.py +0 -0
  110. {comodor-0.10.2 → comodor-0.10.3}/src/comodor/ui/widgets/chat.py +0 -0
  111. {comodor-0.10.2 → comodor-0.10.3}/src/comodor/ui/widgets/history.py +0 -0
  112. {comodor-0.10.2 → comodor-0.10.3}/src/comodor/ui/widgets/overlay.py +0 -0
  113. {comodor-0.10.2 → comodor-0.10.3}/src/comodor/ui/widgets/panel.py +0 -0
  114. {comodor-0.10.2 → comodor-0.10.3}/src/comodor/ui/widgets/progress.py +0 -0
  115. {comodor-0.10.2 → comodor-0.10.3}/src/comodor/ui/widgets/prompt.py +0 -0
  116. {comodor-0.10.2 → comodor-0.10.3}/src/comodor/ui/widgets/statusbar.py +0 -0
  117. {comodor-0.10.2 → comodor-0.10.3}/src/comodor/ui/widgets/toast.py +0 -0
  118. {comodor-0.10.2 → comodor-0.10.3}/src/comodor/uninstall.py +0 -0
  119. {comodor-0.10.2 → comodor-0.10.3}/src/comodor/update.py +0 -0
  120. {comodor-0.10.2 → comodor-0.10.3}/src/comodor/web/__init__.py +0 -0
  121. {comodor-0.10.2 → comodor-0.10.3}/src/comodor/web/commands.py +0 -0
  122. {comodor-0.10.2 → comodor-0.10.3}/src/comodor/web/index.html +0 -0
  123. {comodor-0.10.2 → comodor-0.10.3}/src/comodor/web/server.py +0 -0
  124. {comodor-0.10.2 → comodor-0.10.3}/src/comodor/web/session.py +0 -0
  125. {comodor-0.10.2 → comodor-0.10.3}/src/comodor/web/ui.css +0 -0
  126. {comodor-0.10.2 → comodor-0.10.3}/src/comodor/web/ui.js +0 -0
  127. {comodor-0.10.2 → comodor-0.10.3}/src/comodor/web/vazirmatn-OFL.txt +0 -0
  128. {comodor-0.10.2 → comodor-0.10.3}/src/comodor/web/vazirmatn.woff2 +0 -0
  129. {comodor-0.10.2 → comodor-0.10.3}/src/comodor/workspace.py +0 -0
  130. {comodor-0.10.2 → comodor-0.10.3}/tests/conftest.py +0 -0
  131. {comodor-0.10.2 → comodor-0.10.3}/tests/support/fake_mcp_server.py +0 -0
  132. {comodor-0.10.2 → comodor-0.10.3}/tests/test_agent_loop.py +0 -0
  133. {comodor-0.10.2 → comodor-0.10.3}/tests/test_app.py +0 -0
  134. {comodor-0.10.2 → comodor-0.10.3}/tests/test_associations.py +0 -0
  135. {comodor-0.10.2 → comodor-0.10.3}/tests/test_banner.py +0 -0
  136. {comodor-0.10.2 → comodor-0.10.3}/tests/test_bidi.py +0 -0
  137. {comodor-0.10.2 → comodor-0.10.3}/tests/test_browser.py +0 -0
  138. {comodor-0.10.2 → comodor-0.10.3}/tests/test_caching.py +0 -0
  139. {comodor-0.10.2 → comodor-0.10.3}/tests/test_chooser.py +0 -0
  140. {comodor-0.10.2 → comodor-0.10.3}/tests/test_computer_tool.py +0 -0
  141. {comodor-0.10.2 → comodor-0.10.3}/tests/test_config_save.py +0 -0
  142. {comodor-0.10.2 → comodor-0.10.3}/tests/test_copy_and_bands.py +0 -0
  143. {comodor-0.10.2 → comodor-0.10.3}/tests/test_delegate.py +0 -0
  144. {comodor-0.10.2 → comodor-0.10.3}/tests/test_desktop.py +0 -0
  145. {comodor-0.10.2 → comodor-0.10.3}/tests/test_doctor.py +0 -0
  146. {comodor-0.10.2 → comodor-0.10.3}/tests/test_help.py +0 -0
  147. {comodor-0.10.2 → comodor-0.10.3}/tests/test_history.py +0 -0
  148. {comodor-0.10.2 → comodor-0.10.3}/tests/test_import_command.py +0 -0
  149. {comodor-0.10.2 → comodor-0.10.3}/tests/test_input.py +0 -0
  150. {comodor-0.10.2 → comodor-0.10.3}/tests/test_layout.py +0 -0
  151. {comodor-0.10.2 → comodor-0.10.3}/tests/test_learning.py +0 -0
  152. {comodor-0.10.2 → comodor-0.10.3}/tests/test_markdown.py +0 -0
  153. {comodor-0.10.2 → comodor-0.10.3}/tests/test_mcp.py +0 -0
  154. {comodor-0.10.2 → comodor-0.10.3}/tests/test_mcp_http.py +0 -0
  155. {comodor-0.10.2 → comodor-0.10.3}/tests/test_migrate.py +0 -0
  156. {comodor-0.10.2 → comodor-0.10.3}/tests/test_overflow.py +0 -0
  157. {comodor-0.10.2 → comodor-0.10.3}/tests/test_overlay.py +0 -0
  158. {comodor-0.10.2 → comodor-0.10.3}/tests/test_performance.py +0 -0
  159. {comodor-0.10.2 → comodor-0.10.3}/tests/test_prefix_stability.py +0 -0
  160. {comodor-0.10.2 → comodor-0.10.3}/tests/test_progress.py +0 -0
  161. {comodor-0.10.2 → comodor-0.10.3}/tests/test_propose.py +0 -0
  162. {comodor-0.10.2 → comodor-0.10.3}/tests/test_providers.py +0 -0
  163. {comodor-0.10.2 → comodor-0.10.3}/tests/test_real_browser.py +0 -0
  164. {comodor-0.10.2 → comodor-0.10.3}/tests/test_real_desktop.py +0 -0
  165. {comodor-0.10.2 → comodor-0.10.3}/tests/test_real_web_ui.py +0 -0
  166. {comodor-0.10.2 → comodor-0.10.3}/tests/test_reflex.py +0 -0
  167. {comodor-0.10.2 → comodor-0.10.3}/tests/test_run_loop.py +0 -0
  168. {comodor-0.10.2 → comodor-0.10.3}/tests/test_setup.py +0 -0
  169. {comodor-0.10.2 → comodor-0.10.3}/tests/test_setup_import.py +0 -0
  170. {comodor-0.10.2 → comodor-0.10.3}/tests/test_skill_budget.py +0 -0
  171. {comodor-0.10.2 → comodor-0.10.3}/tests/test_skill_catalogue.py +0 -0
  172. {comodor-0.10.2 → comodor-0.10.3}/tests/test_skills.py +0 -0
  173. {comodor-0.10.2 → comodor-0.10.3}/tests/test_switching_model.py +0 -0
  174. {comodor-0.10.2 → comodor-0.10.3}/tests/test_tools.py +0 -0
  175. {comodor-0.10.2 → comodor-0.10.3}/tests/test_uninstall.py +0 -0
  176. {comodor-0.10.2 → comodor-0.10.3}/tests/test_update.py +0 -0
  177. {comodor-0.10.2 → comodor-0.10.3}/tests/test_web.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: comodor
3
- Version: 0.10.2
3
+ Version: 0.10.3
4
4
  Summary: Comodor — a self-improving terminal coding agent with a Rich TUI
5
5
  Project-URL: Homepage, https://comodor.ai
6
6
  Project-URL: Repository, https://github.com/ifekri/Comodor
@@ -18,7 +18,7 @@ version_tuple: tuple[int | str, ...]
18
18
  commit_id: str | None
19
19
  __commit_id__: str | None
20
20
 
21
- __version__ = version = '0.10.2'
22
- __version_tuple__ = version_tuple = (0, 10, 2)
21
+ __version__ = version = '0.10.3'
22
+ __version_tuple__ = version_tuple = (0, 10, 3)
23
23
 
24
24
  __commit_id__ = commit_id = None
@@ -95,6 +95,7 @@ class SetupWizard:
95
95
  """
96
96
  if self._keys:
97
97
  self.console.clear()
98
+ self._crown()
98
99
  self._recap()
99
100
  self.console.print()
100
101
  self.console.print(
@@ -104,6 +105,29 @@ class SetupWizard:
104
105
  )
105
106
  )
106
107
 
108
+ def _crown(self) -> None:
109
+ """The wordmark, at the top of whatever is about to be drawn.
110
+
111
+ Every question clears the screen, so this is a header rather than a
112
+ repetition — without it each step arrives on a blank terminal with
113
+ nothing on it naming the program doing the asking.
114
+
115
+ It shrinks on a short terminal as well as on a narrow one. Five rows
116
+ of logo on a twenty-row screen is five rows the questions do not get,
117
+ which is the same trade the width rule already makes.
118
+ """
119
+ from .ui.banner import TAGLINE, wordmark
120
+
121
+ size = self.console.size
122
+ if size.height < 22 or size.width < 51:
123
+ self.console.print(Text.assemble(
124
+ ("Comodor", self.theme.style("accent", bold=True)),
125
+ (f" {TAGLINE}", self.theme.style("dim")),
126
+ ))
127
+ return
128
+ self.console.print(wordmark(self.theme, size.width))
129
+ self.console.print(Text(f" {TAGLINE}", style=self.theme.style("dim")))
130
+
107
131
  def _recap(self) -> None:
108
132
  """The questions already answered, one quiet line each."""
109
133
  if not self._done:
@@ -419,9 +443,10 @@ class SetupWizard:
419
443
  return chosen
420
444
 
421
445
  def _banner(self) -> None:
446
+
447
+ self.console.print()
448
+ self._crown()
422
449
  body = Text.assemble(
423
- ("Comodor", self.theme.style("accent", bold=True)),
424
- (" — it learns the way you correct it.\n\n", self.theme.style("text")),
425
450
  ("A few questions, once. The answers are saved to\n",
426
451
  self.theme.style("dim")),
427
452
  (str(self.config.paths.config_file), self.theme.style("value")),
@@ -430,7 +455,6 @@ class SetupWizard:
430
455
  ("/settings", self.theme.style("accent")),
431
456
  (".", self.theme.style("dim")),
432
457
  )
433
- self.console.print()
434
458
  self.console.print(Panel(body, box=self.theme.box,
435
459
  border_style=self.theme.style("border"),
436
460
  padding=(1, 2)))
@@ -669,6 +693,9 @@ class SetupWizard:
669
693
  return done
670
694
 
671
695
  def finish(self, config: Config) -> None:
696
+ if self._keys:
697
+ self.console.clear()
698
+ self._crown()
672
699
  entry = config.active()
673
700
  body = Text.assemble(
674
701
  ("Ready.\n\n", self.theme.style("good", bold=True)),
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes
File without changes