yee88 0.7.1__tar.gz → 0.8.0__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 (271) hide show
  1. {yee88-0.7.1 → yee88-0.8.0}/PKG-INFO +1 -1
  2. {yee88-0.7.1 → yee88-0.8.0}/pyproject.toml +1 -1
  3. {yee88-0.7.1 → yee88-0.8.0}/src/yee88/cron/manager.py +2 -0
  4. {yee88-0.7.1 → yee88-0.8.0}/src/yee88/cron/models.py +3 -0
  5. {yee88-0.7.1 → yee88-0.8.0}/src/yee88/telegram/loop.py +21 -2
  6. {yee88-0.7.1 → yee88-0.8.0}/.codex/AGENTS.md +0 -0
  7. {yee88-0.7.1 → yee88-0.8.0}/.github/workflows/ci.yml +0 -0
  8. {yee88-0.7.1 → yee88-0.8.0}/.github/workflows/release.yml +0 -0
  9. {yee88-0.7.1 → yee88-0.8.0}/.gitignore +0 -0
  10. {yee88-0.7.1 → yee88-0.8.0}/Justfile +0 -0
  11. {yee88-0.7.1 → yee88-0.8.0}/LICENSE +0 -0
  12. {yee88-0.7.1 → yee88-0.8.0}/README.md +0 -0
  13. {yee88-0.7.1 → yee88-0.8.0}/changelog.md +0 -0
  14. {yee88-0.7.1 → yee88-0.8.0}/docs/assets/favicon.svg +0 -0
  15. {yee88-0.7.1 → yee88-0.8.0}/docs/assets/logo.svg +0 -0
  16. {yee88-0.7.1 → yee88-0.8.0}/docs/assets/og-image.jpg +0 -0
  17. {yee88-0.7.1 → yee88-0.8.0}/docs/assets/takopi.svg +0 -0
  18. {yee88-0.7.1 → yee88-0.8.0}/docs/developing.md +0 -0
  19. {yee88-0.7.1 → yee88-0.8.0}/docs/explanation/architecture.md +0 -0
  20. {yee88-0.7.1 → yee88-0.8.0}/docs/explanation/index.md +0 -0
  21. {yee88-0.7.1 → yee88-0.8.0}/docs/explanation/module-map.md +0 -0
  22. {yee88-0.7.1 → yee88-0.8.0}/docs/explanation/plugin-system.md +0 -0
  23. {yee88-0.7.1 → yee88-0.8.0}/docs/explanation/routing-and-sessions.md +0 -0
  24. {yee88-0.7.1 → yee88-0.8.0}/docs/how-to/add-a-runner.md +0 -0
  25. {yee88-0.7.1 → yee88-0.8.0}/docs/how-to/chat-sessions.md +0 -0
  26. {yee88-0.7.1 → yee88-0.8.0}/docs/how-to/dev-setup.md +0 -0
  27. {yee88-0.7.1 → yee88-0.8.0}/docs/how-to/file-transfer.md +0 -0
  28. {yee88-0.7.1 → yee88-0.8.0}/docs/how-to/index.md +0 -0
  29. {yee88-0.7.1 → yee88-0.8.0}/docs/how-to/projects.md +0 -0
  30. {yee88-0.7.1 → yee88-0.8.0}/docs/how-to/route-by-chat.md +0 -0
  31. {yee88-0.7.1 → yee88-0.8.0}/docs/how-to/schedule-tasks.md +0 -0
  32. {yee88-0.7.1 → yee88-0.8.0}/docs/how-to/switch-engines.md +0 -0
  33. {yee88-0.7.1 → yee88-0.8.0}/docs/how-to/topics.md +0 -0
  34. {yee88-0.7.1 → yee88-0.8.0}/docs/how-to/troubleshooting.md +0 -0
  35. {yee88-0.7.1 → yee88-0.8.0}/docs/how-to/voice-notes.md +0 -0
  36. {yee88-0.7.1 → yee88-0.8.0}/docs/how-to/worktrees.md +0 -0
  37. {yee88-0.7.1 → yee88-0.8.0}/docs/how-to/write-a-plugin.md +0 -0
  38. {yee88-0.7.1 → yee88-0.8.0}/docs/index.md +0 -0
  39. {yee88-0.7.1 → yee88-0.8.0}/docs/javascripts/hero-chat.js +0 -0
  40. {yee88-0.7.1 → yee88-0.8.0}/docs/overrides/.icons/takopi/takopi.svg +0 -0
  41. {yee88-0.7.1 → yee88-0.8.0}/docs/overrides/main.html +0 -0
  42. {yee88-0.7.1 → yee88-0.8.0}/docs/plugins.md +0 -0
  43. {yee88-0.7.1 → yee88-0.8.0}/docs/reference/agents/index.md +0 -0
  44. {yee88-0.7.1 → yee88-0.8.0}/docs/reference/agents/invariants.md +0 -0
  45. {yee88-0.7.1 → yee88-0.8.0}/docs/reference/agents/repo-map.md +0 -0
  46. {yee88-0.7.1 → yee88-0.8.0}/docs/reference/commands-and-directives.md +0 -0
  47. {yee88-0.7.1 → yee88-0.8.0}/docs/reference/config.md +0 -0
  48. {yee88-0.7.1 → yee88-0.8.0}/docs/reference/context-resolution.md +0 -0
  49. {yee88-0.7.1 → yee88-0.8.0}/docs/reference/env-vars.md +0 -0
  50. {yee88-0.7.1 → yee88-0.8.0}/docs/reference/index.md +0 -0
  51. {yee88-0.7.1 → yee88-0.8.0}/docs/reference/plugin-api.md +0 -0
  52. {yee88-0.7.1 → yee88-0.8.0}/docs/reference/plugins.md +0 -0
  53. {yee88-0.7.1 → yee88-0.8.0}/docs/reference/runners/claude/runner.md +0 -0
  54. {yee88-0.7.1 → yee88-0.8.0}/docs/reference/runners/claude/stream-json-cheatsheet.md +0 -0
  55. {yee88-0.7.1 → yee88-0.8.0}/docs/reference/runners/claude/takopi-events.md +0 -0
  56. {yee88-0.7.1 → yee88-0.8.0}/docs/reference/runners/codex/exec-json-cheatsheet.md +0 -0
  57. {yee88-0.7.1 → yee88-0.8.0}/docs/reference/runners/codex/takopi-events.md +0 -0
  58. {yee88-0.7.1 → yee88-0.8.0}/docs/reference/runners/index.md +0 -0
  59. {yee88-0.7.1 → yee88-0.8.0}/docs/reference/runners/opencode/runner.md +0 -0
  60. {yee88-0.7.1 → yee88-0.8.0}/docs/reference/runners/opencode/stream-json-cheatsheet.md +0 -0
  61. {yee88-0.7.1 → yee88-0.8.0}/docs/reference/runners/opencode/takopi-events.md +0 -0
  62. {yee88-0.7.1 → yee88-0.8.0}/docs/reference/runners/pi/runner.md +0 -0
  63. {yee88-0.7.1 → yee88-0.8.0}/docs/reference/runners/pi/stream-json-cheatsheet.md +0 -0
  64. {yee88-0.7.1 → yee88-0.8.0}/docs/reference/runners/pi/takopi-events.md +0 -0
  65. {yee88-0.7.1 → yee88-0.8.0}/docs/reference/specification.md +0 -0
  66. {yee88-0.7.1 → yee88-0.8.0}/docs/reference/transports/telegram.md +0 -0
  67. {yee88-0.7.1 → yee88-0.8.0}/docs/stylesheets/admonitions.css +0 -0
  68. {yee88-0.7.1 → yee88-0.8.0}/docs/stylesheets/hero-chat.css +0 -0
  69. {yee88-0.7.1 → yee88-0.8.0}/docs/stylesheets/workflow-preview.css +0 -0
  70. {yee88-0.7.1 → yee88-0.8.0}/docs/tutorials/conversation-modes.md +0 -0
  71. {yee88-0.7.1 → yee88-0.8.0}/docs/tutorials/first-run.md +0 -0
  72. {yee88-0.7.1 → yee88-0.8.0}/docs/tutorials/index.md +0 -0
  73. {yee88-0.7.1 → yee88-0.8.0}/docs/tutorials/install.md +0 -0
  74. {yee88-0.7.1 → yee88-0.8.0}/docs/tutorials/multi-engine.md +0 -0
  75. {yee88-0.7.1 → yee88-0.8.0}/docs/tutorials/projects-and-branches.md +0 -0
  76. {yee88-0.7.1 → yee88-0.8.0}/docs/user-guide-zh.md +0 -0
  77. {yee88-0.7.1 → yee88-0.8.0}/docs/user-guide.md +0 -0
  78. {yee88-0.7.1 → yee88-0.8.0}/readme.md +0 -0
  79. {yee88-0.7.1 → yee88-0.8.0}/scripts/commit_notify.py +0 -0
  80. {yee88-0.7.1 → yee88-0.8.0}/scripts/docs_build_cf.sh +0 -0
  81. {yee88-0.7.1 → yee88-0.8.0}/scripts/docs_prebuild.py +0 -0
  82. {yee88-0.7.1 → yee88-0.8.0}/scripts/onboarding_preview.py +0 -0
  83. {yee88-0.7.1 → yee88-0.8.0}/scripts/release_notify.py +0 -0
  84. {yee88-0.7.1 → yee88-0.8.0}/src/yee88/__init__.py +0 -0
  85. {yee88-0.7.1 → yee88-0.8.0}/src/yee88/api.py +0 -0
  86. {yee88-0.7.1 → yee88-0.8.0}/src/yee88/backends.py +0 -0
  87. {yee88-0.7.1 → yee88-0.8.0}/src/yee88/backends_helpers.py +0 -0
  88. {yee88-0.7.1 → yee88-0.8.0}/src/yee88/cli/__init__.py +0 -0
  89. {yee88-0.7.1 → yee88-0.8.0}/src/yee88/cli/config.py +0 -0
  90. {yee88-0.7.1 → yee88-0.8.0}/src/yee88/cli/cron.py +0 -0
  91. {yee88-0.7.1 → yee88-0.8.0}/src/yee88/cli/doctor.py +0 -0
  92. {yee88-0.7.1 → yee88-0.8.0}/src/yee88/cli/handoff.py +0 -0
  93. {yee88-0.7.1 → yee88-0.8.0}/src/yee88/cli/init.py +0 -0
  94. {yee88-0.7.1 → yee88-0.8.0}/src/yee88/cli/onboarding_cmd.py +0 -0
  95. {yee88-0.7.1 → yee88-0.8.0}/src/yee88/cli/plugins.py +0 -0
  96. {yee88-0.7.1 → yee88-0.8.0}/src/yee88/cli/reload.py +0 -0
  97. {yee88-0.7.1 → yee88-0.8.0}/src/yee88/cli/run.py +0 -0
  98. {yee88-0.7.1 → yee88-0.8.0}/src/yee88/cli/topic.py +0 -0
  99. {yee88-0.7.1 → yee88-0.8.0}/src/yee88/commands.py +0 -0
  100. {yee88-0.7.1 → yee88-0.8.0}/src/yee88/config.py +0 -0
  101. {yee88-0.7.1 → yee88-0.8.0}/src/yee88/config_migrations.py +0 -0
  102. {yee88-0.7.1 → yee88-0.8.0}/src/yee88/config_watch.py +0 -0
  103. {yee88-0.7.1 → yee88-0.8.0}/src/yee88/context.py +0 -0
  104. {yee88-0.7.1 → yee88-0.8.0}/src/yee88/cron/__init__.py +0 -0
  105. {yee88-0.7.1 → yee88-0.8.0}/src/yee88/cron/scheduler.py +0 -0
  106. {yee88-0.7.1 → yee88-0.8.0}/src/yee88/directives.py +0 -0
  107. {yee88-0.7.1 → yee88-0.8.0}/src/yee88/engines.py +0 -0
  108. {yee88-0.7.1 → yee88-0.8.0}/src/yee88/events.py +0 -0
  109. {yee88-0.7.1 → yee88-0.8.0}/src/yee88/ids.py +0 -0
  110. {yee88-0.7.1 → yee88-0.8.0}/src/yee88/lockfile.py +0 -0
  111. {yee88-0.7.1 → yee88-0.8.0}/src/yee88/logging.py +0 -0
  112. {yee88-0.7.1 → yee88-0.8.0}/src/yee88/markdown.py +0 -0
  113. {yee88-0.7.1 → yee88-0.8.0}/src/yee88/model.py +0 -0
  114. {yee88-0.7.1 → yee88-0.8.0}/src/yee88/plugins.py +0 -0
  115. {yee88-0.7.1 → yee88-0.8.0}/src/yee88/presenter.py +0 -0
  116. {yee88-0.7.1 → yee88-0.8.0}/src/yee88/progress.py +0 -0
  117. {yee88-0.7.1 → yee88-0.8.0}/src/yee88/router.py +0 -0
  118. {yee88-0.7.1 → yee88-0.8.0}/src/yee88/runner.py +0 -0
  119. {yee88-0.7.1 → yee88-0.8.0}/src/yee88/runner_bridge.py +0 -0
  120. {yee88-0.7.1 → yee88-0.8.0}/src/yee88/runners/__init__.py +0 -0
  121. {yee88-0.7.1 → yee88-0.8.0}/src/yee88/runners/claude.py +0 -0
  122. {yee88-0.7.1 → yee88-0.8.0}/src/yee88/runners/codex.py +0 -0
  123. {yee88-0.7.1 → yee88-0.8.0}/src/yee88/runners/mock.py +0 -0
  124. {yee88-0.7.1 → yee88-0.8.0}/src/yee88/runners/opencode.py +0 -0
  125. {yee88-0.7.1 → yee88-0.8.0}/src/yee88/runners/pi.py +0 -0
  126. {yee88-0.7.1 → yee88-0.8.0}/src/yee88/runners/run_options.py +0 -0
  127. {yee88-0.7.1 → yee88-0.8.0}/src/yee88/runners/tool_actions.py +0 -0
  128. {yee88-0.7.1 → yee88-0.8.0}/src/yee88/runtime_loader.py +0 -0
  129. {yee88-0.7.1 → yee88-0.8.0}/src/yee88/scheduler.py +0 -0
  130. {yee88-0.7.1 → yee88-0.8.0}/src/yee88/schemas/__init__.py +0 -0
  131. {yee88-0.7.1 → yee88-0.8.0}/src/yee88/schemas/claude.py +0 -0
  132. {yee88-0.7.1 → yee88-0.8.0}/src/yee88/schemas/codex.py +0 -0
  133. {yee88-0.7.1 → yee88-0.8.0}/src/yee88/schemas/opencode.py +0 -0
  134. {yee88-0.7.1 → yee88-0.8.0}/src/yee88/schemas/pi.py +0 -0
  135. {yee88-0.7.1 → yee88-0.8.0}/src/yee88/settings.py +0 -0
  136. {yee88-0.7.1 → yee88-0.8.0}/src/yee88/skills/yee88/SKILL.md +0 -0
  137. {yee88-0.7.1 → yee88-0.8.0}/src/yee88/telegram/__init__.py +0 -0
  138. {yee88-0.7.1 → yee88-0.8.0}/src/yee88/telegram/api_models.py +0 -0
  139. {yee88-0.7.1 → yee88-0.8.0}/src/yee88/telegram/api_schemas.py +0 -0
  140. {yee88-0.7.1 → yee88-0.8.0}/src/yee88/telegram/backend.py +0 -0
  141. {yee88-0.7.1 → yee88-0.8.0}/src/yee88/telegram/bridge.py +0 -0
  142. {yee88-0.7.1 → yee88-0.8.0}/src/yee88/telegram/chat_prefs.py +0 -0
  143. {yee88-0.7.1 → yee88-0.8.0}/src/yee88/telegram/chat_sessions.py +0 -0
  144. {yee88-0.7.1 → yee88-0.8.0}/src/yee88/telegram/client.py +0 -0
  145. {yee88-0.7.1 → yee88-0.8.0}/src/yee88/telegram/client_api.py +0 -0
  146. {yee88-0.7.1 → yee88-0.8.0}/src/yee88/telegram/commands/__init__.py +0 -0
  147. {yee88-0.7.1 → yee88-0.8.0}/src/yee88/telegram/commands/agent.py +0 -0
  148. {yee88-0.7.1 → yee88-0.8.0}/src/yee88/telegram/commands/cancel.py +0 -0
  149. {yee88-0.7.1 → yee88-0.8.0}/src/yee88/telegram/commands/dispatch.py +0 -0
  150. {yee88-0.7.1 → yee88-0.8.0}/src/yee88/telegram/commands/executor.py +0 -0
  151. {yee88-0.7.1 → yee88-0.8.0}/src/yee88/telegram/commands/file_transfer.py +0 -0
  152. {yee88-0.7.1 → yee88-0.8.0}/src/yee88/telegram/commands/handlers.py +0 -0
  153. {yee88-0.7.1 → yee88-0.8.0}/src/yee88/telegram/commands/media.py +0 -0
  154. {yee88-0.7.1 → yee88-0.8.0}/src/yee88/telegram/commands/menu.py +0 -0
  155. {yee88-0.7.1 → yee88-0.8.0}/src/yee88/telegram/commands/model.py +0 -0
  156. {yee88-0.7.1 → yee88-0.8.0}/src/yee88/telegram/commands/overrides.py +0 -0
  157. {yee88-0.7.1 → yee88-0.8.0}/src/yee88/telegram/commands/parse.py +0 -0
  158. {yee88-0.7.1 → yee88-0.8.0}/src/yee88/telegram/commands/plan.py +0 -0
  159. {yee88-0.7.1 → yee88-0.8.0}/src/yee88/telegram/commands/reasoning.py +0 -0
  160. {yee88-0.7.1 → yee88-0.8.0}/src/yee88/telegram/commands/reply.py +0 -0
  161. {yee88-0.7.1 → yee88-0.8.0}/src/yee88/telegram/commands/topics.py +0 -0
  162. {yee88-0.7.1 → yee88-0.8.0}/src/yee88/telegram/commands/trigger.py +0 -0
  163. {yee88-0.7.1 → yee88-0.8.0}/src/yee88/telegram/context.py +0 -0
  164. {yee88-0.7.1 → yee88-0.8.0}/src/yee88/telegram/engine_defaults.py +0 -0
  165. {yee88-0.7.1 → yee88-0.8.0}/src/yee88/telegram/engine_overrides.py +0 -0
  166. {yee88-0.7.1 → yee88-0.8.0}/src/yee88/telegram/files.py +0 -0
  167. {yee88-0.7.1 → yee88-0.8.0}/src/yee88/telegram/onboarding.py +0 -0
  168. {yee88-0.7.1 → yee88-0.8.0}/src/yee88/telegram/outbox.py +0 -0
  169. {yee88-0.7.1 → yee88-0.8.0}/src/yee88/telegram/parsing.py +0 -0
  170. {yee88-0.7.1 → yee88-0.8.0}/src/yee88/telegram/render.py +0 -0
  171. {yee88-0.7.1 → yee88-0.8.0}/src/yee88/telegram/state_store.py +0 -0
  172. {yee88-0.7.1 → yee88-0.8.0}/src/yee88/telegram/topic_state.py +0 -0
  173. {yee88-0.7.1 → yee88-0.8.0}/src/yee88/telegram/topics.py +0 -0
  174. {yee88-0.7.1 → yee88-0.8.0}/src/yee88/telegram/trigger_mode.py +0 -0
  175. {yee88-0.7.1 → yee88-0.8.0}/src/yee88/telegram/types.py +0 -0
  176. {yee88-0.7.1 → yee88-0.8.0}/src/yee88/telegram/voice.py +0 -0
  177. {yee88-0.7.1 → yee88-0.8.0}/src/yee88/transport.py +0 -0
  178. {yee88-0.7.1 → yee88-0.8.0}/src/yee88/transport_runtime.py +0 -0
  179. {yee88-0.7.1 → yee88-0.8.0}/src/yee88/transports.py +0 -0
  180. {yee88-0.7.1 → yee88-0.8.0}/src/yee88/utils/__init__.py +0 -0
  181. {yee88-0.7.1 → yee88-0.8.0}/src/yee88/utils/git.py +0 -0
  182. {yee88-0.7.1 → yee88-0.8.0}/src/yee88/utils/json_state.py +0 -0
  183. {yee88-0.7.1 → yee88-0.8.0}/src/yee88/utils/paths.py +0 -0
  184. {yee88-0.7.1 → yee88-0.8.0}/src/yee88/utils/streams.py +0 -0
  185. {yee88-0.7.1 → yee88-0.8.0}/src/yee88/utils/subprocess.py +0 -0
  186. {yee88-0.7.1 → yee88-0.8.0}/src/yee88/worktrees.py +0 -0
  187. {yee88-0.7.1 → yee88-0.8.0}/tests/__init__.py +0 -0
  188. {yee88-0.7.1 → yee88-0.8.0}/tests/conftest.py +0 -0
  189. {yee88-0.7.1 → yee88-0.8.0}/tests/factories.py +0 -0
  190. {yee88-0.7.1 → yee88-0.8.0}/tests/fixtures/claude_stream_json_session.jsonl +0 -0
  191. {yee88-0.7.1 → yee88-0.8.0}/tests/fixtures/codex_exec_json_all_formats.jsonl +0 -0
  192. {yee88-0.7.1 → yee88-0.8.0}/tests/fixtures/codex_exec_json_all_formats.txt +0 -0
  193. {yee88-0.7.1 → yee88-0.8.0}/tests/fixtures/opencode_run_json.jsonl +0 -0
  194. {yee88-0.7.1 → yee88-0.8.0}/tests/fixtures/opencode_stream_error.jsonl +0 -0
  195. {yee88-0.7.1 → yee88-0.8.0}/tests/fixtures/opencode_stream_success.jsonl +0 -0
  196. {yee88-0.7.1 → yee88-0.8.0}/tests/fixtures/opencode_stream_success_no_reason.jsonl +0 -0
  197. {yee88-0.7.1 → yee88-0.8.0}/tests/fixtures/pi_print_mode_events.jsonl +0 -0
  198. {yee88-0.7.1 → yee88-0.8.0}/tests/fixtures/pi_stream_error.jsonl +0 -0
  199. {yee88-0.7.1 → yee88-0.8.0}/tests/fixtures/pi_stream_success.jsonl +0 -0
  200. {yee88-0.7.1 → yee88-0.8.0}/tests/plugin_fixtures.py +0 -0
  201. {yee88-0.7.1 → yee88-0.8.0}/tests/telegram_fakes.py +0 -0
  202. {yee88-0.7.1 → yee88-0.8.0}/tests/test_api_exports.py +0 -0
  203. {yee88-0.7.1 → yee88-0.8.0}/tests/test_auto_router.py +0 -0
  204. {yee88-0.7.1 → yee88-0.8.0}/tests/test_claude_runner.py +0 -0
  205. {yee88-0.7.1 → yee88-0.8.0}/tests/test_claude_schema.py +0 -0
  206. {yee88-0.7.1 → yee88-0.8.0}/tests/test_cli_auto_router.py +0 -0
  207. {yee88-0.7.1 → yee88-0.8.0}/tests/test_cli_chat_id.py +0 -0
  208. {yee88-0.7.1 → yee88-0.8.0}/tests/test_cli_commands.py +0 -0
  209. {yee88-0.7.1 → yee88-0.8.0}/tests/test_cli_config.py +0 -0
  210. {yee88-0.7.1 → yee88-0.8.0}/tests/test_cli_doctor.py +0 -0
  211. {yee88-0.7.1 → yee88-0.8.0}/tests/test_cli_helpers.py +0 -0
  212. {yee88-0.7.1 → yee88-0.8.0}/tests/test_codex_runner_helpers.py +0 -0
  213. {yee88-0.7.1 → yee88-0.8.0}/tests/test_codex_schema.py +0 -0
  214. {yee88-0.7.1 → yee88-0.8.0}/tests/test_codex_tool_result_summary.py +0 -0
  215. {yee88-0.7.1 → yee88-0.8.0}/tests/test_command_registry.py +0 -0
  216. {yee88-0.7.1 → yee88-0.8.0}/tests/test_config_store.py +0 -0
  217. {yee88-0.7.1 → yee88-0.8.0}/tests/test_config_watch.py +0 -0
  218. {yee88-0.7.1 → yee88-0.8.0}/tests/test_cron_manager.py +0 -0
  219. {yee88-0.7.1 → yee88-0.8.0}/tests/test_cron_scheduler.py +0 -0
  220. {yee88-0.7.1 → yee88-0.8.0}/tests/test_engine_discovery.py +0 -0
  221. {yee88-0.7.1 → yee88-0.8.0}/tests/test_exec_bridge.py +0 -0
  222. {yee88-0.7.1 → yee88-0.8.0}/tests/test_exec_render.py +0 -0
  223. {yee88-0.7.1 → yee88-0.8.0}/tests/test_exec_runner.py +0 -0
  224. {yee88-0.7.1 → yee88-0.8.0}/tests/test_git_utils.py +0 -0
  225. {yee88-0.7.1 → yee88-0.8.0}/tests/test_lockfile.py +0 -0
  226. {yee88-0.7.1 → yee88-0.8.0}/tests/test_onboarding.py +0 -0
  227. {yee88-0.7.1 → yee88-0.8.0}/tests/test_onboarding_helpers.py +0 -0
  228. {yee88-0.7.1 → yee88-0.8.0}/tests/test_onboarding_interactive.py +0 -0
  229. {yee88-0.7.1 → yee88-0.8.0}/tests/test_opencode_runner.py +0 -0
  230. {yee88-0.7.1 → yee88-0.8.0}/tests/test_opencode_schema.py +0 -0
  231. {yee88-0.7.1 → yee88-0.8.0}/tests/test_paths.py +0 -0
  232. {yee88-0.7.1 → yee88-0.8.0}/tests/test_pi_runner.py +0 -0
  233. {yee88-0.7.1 → yee88-0.8.0}/tests/test_pi_schema.py +0 -0
  234. {yee88-0.7.1 → yee88-0.8.0}/tests/test_plugins.py +0 -0
  235. {yee88-0.7.1 → yee88-0.8.0}/tests/test_projects_config.py +0 -0
  236. {yee88-0.7.1 → yee88-0.8.0}/tests/test_rendering.py +0 -0
  237. {yee88-0.7.1 → yee88-0.8.0}/tests/test_runner_contract.py +0 -0
  238. {yee88-0.7.1 → yee88-0.8.0}/tests/test_runner_run_options.py +0 -0
  239. {yee88-0.7.1 → yee88-0.8.0}/tests/test_runner_utils.py +0 -0
  240. {yee88-0.7.1 → yee88-0.8.0}/tests/test_runtime_loader.py +0 -0
  241. {yee88-0.7.1 → yee88-0.8.0}/tests/test_settings.py +0 -0
  242. {yee88-0.7.1 → yee88-0.8.0}/tests/test_settings_contract.py +0 -0
  243. {yee88-0.7.1 → yee88-0.8.0}/tests/test_subprocess.py +0 -0
  244. {yee88-0.7.1 → yee88-0.8.0}/tests/test_telegram_agent_trigger_commands.py +0 -0
  245. {yee88-0.7.1 → yee88-0.8.0}/tests/test_telegram_backend.py +0 -0
  246. {yee88-0.7.1 → yee88-0.8.0}/tests/test_telegram_bridge.py +0 -0
  247. {yee88-0.7.1 → yee88-0.8.0}/tests/test_telegram_chat_prefs.py +0 -0
  248. {yee88-0.7.1 → yee88-0.8.0}/tests/test_telegram_chat_sessions.py +0 -0
  249. {yee88-0.7.1 → yee88-0.8.0}/tests/test_telegram_client.py +0 -0
  250. {yee88-0.7.1 → yee88-0.8.0}/tests/test_telegram_client_api.py +0 -0
  251. {yee88-0.7.1 → yee88-0.8.0}/tests/test_telegram_context_helpers.py +0 -0
  252. {yee88-0.7.1 → yee88-0.8.0}/tests/test_telegram_engine_defaults.py +0 -0
  253. {yee88-0.7.1 → yee88-0.8.0}/tests/test_telegram_engine_overrides.py +0 -0
  254. {yee88-0.7.1 → yee88-0.8.0}/tests/test_telegram_file_transfer_helpers.py +0 -0
  255. {yee88-0.7.1 → yee88-0.8.0}/tests/test_telegram_files.py +0 -0
  256. {yee88-0.7.1 → yee88-0.8.0}/tests/test_telegram_incoming.py +0 -0
  257. {yee88-0.7.1 → yee88-0.8.0}/tests/test_telegram_media_command.py +0 -0
  258. {yee88-0.7.1 → yee88-0.8.0}/tests/test_telegram_polling.py +0 -0
  259. {yee88-0.7.1 → yee88-0.8.0}/tests/test_telegram_queue.py +0 -0
  260. {yee88-0.7.1 → yee88-0.8.0}/tests/test_telegram_topic_state.py +0 -0
  261. {yee88-0.7.1 → yee88-0.8.0}/tests/test_telegram_topics_command.py +0 -0
  262. {yee88-0.7.1 → yee88-0.8.0}/tests/test_telegram_topics_helpers.py +0 -0
  263. {yee88-0.7.1 → yee88-0.8.0}/tests/test_telegram_trigger_mode.py +0 -0
  264. {yee88-0.7.1 → yee88-0.8.0}/tests/test_telegram_voice.py +0 -0
  265. {yee88-0.7.1 → yee88-0.8.0}/tests/test_tool_actions.py +0 -0
  266. {yee88-0.7.1 → yee88-0.8.0}/tests/test_transport.py +0 -0
  267. {yee88-0.7.1 → yee88-0.8.0}/tests/test_transport_registry.py +0 -0
  268. {yee88-0.7.1 → yee88-0.8.0}/tests/test_transport_runtime.py +0 -0
  269. {yee88-0.7.1 → yee88-0.8.0}/tests/test_worktrees.py +0 -0
  270. {yee88-0.7.1 → yee88-0.8.0}/uv.lock +0 -0
  271. {yee88-0.7.1 → yee88-0.8.0}/zensical.toml +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: yee88
3
- Version: 0.7.1
3
+ Version: 0.8.0
4
4
  Summary: Telegram bridge for Codex, Claude Code, and other agent CLIs.
5
5
  Project-URL: Homepage, https://github.com/banteg/yee88
6
6
  Project-URL: Documentation, https://yee88.dev/
@@ -1,7 +1,7 @@
1
1
  [project]
2
2
  name = "yee88"
3
3
  authors = [{name = "yee.wang"}]
4
- version = "0.7.1"
4
+ version = "0.8.0"
5
5
  description = "Telegram bridge for Codex, Claude Code, and other agent CLIs."
6
6
  readme = "README.md"
7
7
  license = { file = "LICENSE" }
@@ -76,6 +76,8 @@ class CronManager:
76
76
  "last_run": job.last_run,
77
77
  "next_run": job.next_run,
78
78
  "one_time": job.one_time,
79
+ "engine": job.engine,
80
+ "model": job.model,
79
81
  }
80
82
  for job in self.jobs
81
83
  ]
@@ -1,4 +1,5 @@
1
1
  from dataclasses import dataclass
2
+ from typing import Optional
2
3
 
3
4
 
4
5
  @dataclass
@@ -11,3 +12,5 @@ class CronJob:
11
12
  last_run: str = ""
12
13
  next_run: str = ""
13
14
  one_time: bool = False
15
+ engine: Optional[str] = None
16
+ model: Optional[str] = None
@@ -1092,7 +1092,9 @@ async def run_main_loop(
1092
1092
 
1093
1093
  async def _execute_cron_job(job: CronJob) -> None:
1094
1094
  try:
1095
+ from ..model import EngineId
1095
1096
  context = RunContext(project=job.project) if job.project else None
1097
+ engine_override: EngineId | None = job.engine if job.engine else None
1096
1098
  await run_job(
1097
1099
  chat_id=cfg.chat_id,
1098
1100
  user_msg_id=0,
@@ -1101,6 +1103,9 @@ async def run_main_loop(
1101
1103
  context=context,
1102
1104
  thread_id=None,
1103
1105
  force_hide_resume_line=True,
1106
+ force_new_session=True,
1107
+ run_options_model=job.model,
1108
+ engine_override=engine_override,
1104
1109
  )
1105
1110
  except Exception as exc:
1106
1111
  logger.error(
@@ -1168,6 +1173,8 @@ async def run_main_loop(
1168
1173
  engine_override: EngineId | None = None,
1169
1174
  progress_ref: MessageRef | None = None,
1170
1175
  force_hide_resume_line: bool = False,
1176
+ force_new_session: bool = False,
1177
+ run_options_model: str | None = None,
1171
1178
  ) -> None:
1172
1179
  topic_key = (
1173
1180
  (chat_id, thread_id)
@@ -1178,6 +1185,9 @@ async def run_main_loop(
1178
1185
  )
1179
1186
  else None
1180
1187
  )
1188
+ if force_new_session:
1189
+ topic_key = None
1190
+ chat_session_key = None
1181
1191
  stateful_mode = topic_key is not None or chat_session_key is not None
1182
1192
  show_resume_line = False if force_hide_resume_line else should_show_resume_line(
1183
1193
  show_resume_line=cfg.show_resume_line,
@@ -1186,7 +1196,7 @@ async def run_main_loop(
1186
1196
  )
1187
1197
  engine_for_overrides = (
1188
1198
  resume_token.engine
1189
- if resume_token is not None
1199
+ if resume_token is not None and not force_new_session
1190
1200
  else engine_override
1191
1201
  if engine_override is not None
1192
1202
  else cfg.runtime.resolve_engine(
@@ -1203,6 +1213,15 @@ async def run_main_loop(
1203
1213
  topic_store=state.topic_store,
1204
1214
  system_prompt=cfg.runtime.resolve_system_prompt(context),
1205
1215
  )
1216
+ if run_options_model:
1217
+ if run_options is None:
1218
+ run_options = EngineRunOptions(model=run_options_model)
1219
+ else:
1220
+ run_options = EngineRunOptions(
1221
+ model=run_options_model,
1222
+ reasoning=run_options.reasoning,
1223
+ system=run_options.system,
1224
+ )
1206
1225
  await run_engine(
1207
1226
  exec_cfg=cfg.exec_cfg,
1208
1227
  runtime=cfg.runtime,
@@ -1210,7 +1229,7 @@ async def run_main_loop(
1210
1229
  chat_id=chat_id,
1211
1230
  user_msg_id=user_msg_id,
1212
1231
  text=text,
1213
- resume_token=resume_token,
1232
+ resume_token=None if force_new_session else resume_token,
1214
1233
  context=context,
1215
1234
  reply_ref=reply_ref,
1216
1235
  on_thread_known=wrap_on_thread_known(
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
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
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