yee88 0.6.1__tar.gz → 0.6.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 (270) hide show
  1. {yee88-0.6.1 → yee88-0.6.3}/PKG-INFO +1 -1
  2. {yee88-0.6.1 → yee88-0.6.3}/changelog.md +6 -0
  3. {yee88-0.6.1 → yee88-0.6.3}/pyproject.toml +1 -1
  4. yee88-0.6.3/src/yee88/__init__.py +1 -0
  5. {yee88-0.6.1 → yee88-0.6.3}/src/yee88/runners/claude.py +3 -0
  6. {yee88-0.6.1 → yee88-0.6.3}/src/yee88/runners/codex.py +14 -0
  7. {yee88-0.6.1 → yee88-0.6.3}/src/yee88/runners/opencode.py +3 -3
  8. {yee88-0.6.1 → yee88-0.6.3}/src/yee88/runners/pi.py +3 -0
  9. {yee88-0.6.1 → yee88-0.6.3}/src/yee88/telegram/commands/model.py +42 -1
  10. yee88-0.6.1/src/yee88/__init__.py +0 -1
  11. {yee88-0.6.1 → yee88-0.6.3}/.codex/AGENTS.md +0 -0
  12. {yee88-0.6.1 → yee88-0.6.3}/.github/workflows/ci.yml +0 -0
  13. {yee88-0.6.1 → yee88-0.6.3}/.github/workflows/release.yml +0 -0
  14. {yee88-0.6.1 → yee88-0.6.3}/.gitignore +0 -0
  15. {yee88-0.6.1 → yee88-0.6.3}/.sisyphus/plans/yee88-architecture-review.md +0 -0
  16. {yee88-0.6.1 → yee88-0.6.3}/Justfile +0 -0
  17. {yee88-0.6.1 → yee88-0.6.3}/LICENSE +0 -0
  18. {yee88-0.6.1 → yee88-0.6.3}/README.md +0 -0
  19. {yee88-0.6.1 → yee88-0.6.3}/docs/assets/favicon.svg +0 -0
  20. {yee88-0.6.1 → yee88-0.6.3}/docs/assets/logo.svg +0 -0
  21. {yee88-0.6.1 → yee88-0.6.3}/docs/assets/og-image.jpg +0 -0
  22. {yee88-0.6.1 → yee88-0.6.3}/docs/assets/takopi.svg +0 -0
  23. {yee88-0.6.1 → yee88-0.6.3}/docs/developing.md +0 -0
  24. {yee88-0.6.1 → yee88-0.6.3}/docs/explanation/architecture.md +0 -0
  25. {yee88-0.6.1 → yee88-0.6.3}/docs/explanation/index.md +0 -0
  26. {yee88-0.6.1 → yee88-0.6.3}/docs/explanation/module-map.md +0 -0
  27. {yee88-0.6.1 → yee88-0.6.3}/docs/explanation/plugin-system.md +0 -0
  28. {yee88-0.6.1 → yee88-0.6.3}/docs/explanation/routing-and-sessions.md +0 -0
  29. {yee88-0.6.1 → yee88-0.6.3}/docs/how-to/add-a-runner.md +0 -0
  30. {yee88-0.6.1 → yee88-0.6.3}/docs/how-to/chat-sessions.md +0 -0
  31. {yee88-0.6.1 → yee88-0.6.3}/docs/how-to/dev-setup.md +0 -0
  32. {yee88-0.6.1 → yee88-0.6.3}/docs/how-to/file-transfer.md +0 -0
  33. {yee88-0.6.1 → yee88-0.6.3}/docs/how-to/index.md +0 -0
  34. {yee88-0.6.1 → yee88-0.6.3}/docs/how-to/projects.md +0 -0
  35. {yee88-0.6.1 → yee88-0.6.3}/docs/how-to/route-by-chat.md +0 -0
  36. {yee88-0.6.1 → yee88-0.6.3}/docs/how-to/schedule-tasks.md +0 -0
  37. {yee88-0.6.1 → yee88-0.6.3}/docs/how-to/switch-engines.md +0 -0
  38. {yee88-0.6.1 → yee88-0.6.3}/docs/how-to/topics.md +0 -0
  39. {yee88-0.6.1 → yee88-0.6.3}/docs/how-to/troubleshooting.md +0 -0
  40. {yee88-0.6.1 → yee88-0.6.3}/docs/how-to/voice-notes.md +0 -0
  41. {yee88-0.6.1 → yee88-0.6.3}/docs/how-to/worktrees.md +0 -0
  42. {yee88-0.6.1 → yee88-0.6.3}/docs/how-to/write-a-plugin.md +0 -0
  43. {yee88-0.6.1 → yee88-0.6.3}/docs/index.md +0 -0
  44. {yee88-0.6.1 → yee88-0.6.3}/docs/javascripts/hero-chat.js +0 -0
  45. {yee88-0.6.1 → yee88-0.6.3}/docs/overrides/.icons/takopi/takopi.svg +0 -0
  46. {yee88-0.6.1 → yee88-0.6.3}/docs/overrides/main.html +0 -0
  47. {yee88-0.6.1 → yee88-0.6.3}/docs/plugins.md +0 -0
  48. {yee88-0.6.1 → yee88-0.6.3}/docs/reference/agents/index.md +0 -0
  49. {yee88-0.6.1 → yee88-0.6.3}/docs/reference/agents/invariants.md +0 -0
  50. {yee88-0.6.1 → yee88-0.6.3}/docs/reference/agents/repo-map.md +0 -0
  51. {yee88-0.6.1 → yee88-0.6.3}/docs/reference/commands-and-directives.md +0 -0
  52. {yee88-0.6.1 → yee88-0.6.3}/docs/reference/config.md +0 -0
  53. {yee88-0.6.1 → yee88-0.6.3}/docs/reference/context-resolution.md +0 -0
  54. {yee88-0.6.1 → yee88-0.6.3}/docs/reference/env-vars.md +0 -0
  55. {yee88-0.6.1 → yee88-0.6.3}/docs/reference/index.md +0 -0
  56. {yee88-0.6.1 → yee88-0.6.3}/docs/reference/plugin-api.md +0 -0
  57. {yee88-0.6.1 → yee88-0.6.3}/docs/reference/plugins.md +0 -0
  58. {yee88-0.6.1 → yee88-0.6.3}/docs/reference/runners/claude/runner.md +0 -0
  59. {yee88-0.6.1 → yee88-0.6.3}/docs/reference/runners/claude/stream-json-cheatsheet.md +0 -0
  60. {yee88-0.6.1 → yee88-0.6.3}/docs/reference/runners/claude/takopi-events.md +0 -0
  61. {yee88-0.6.1 → yee88-0.6.3}/docs/reference/runners/codex/exec-json-cheatsheet.md +0 -0
  62. {yee88-0.6.1 → yee88-0.6.3}/docs/reference/runners/codex/takopi-events.md +0 -0
  63. {yee88-0.6.1 → yee88-0.6.3}/docs/reference/runners/index.md +0 -0
  64. {yee88-0.6.1 → yee88-0.6.3}/docs/reference/runners/opencode/runner.md +0 -0
  65. {yee88-0.6.1 → yee88-0.6.3}/docs/reference/runners/opencode/stream-json-cheatsheet.md +0 -0
  66. {yee88-0.6.1 → yee88-0.6.3}/docs/reference/runners/opencode/takopi-events.md +0 -0
  67. {yee88-0.6.1 → yee88-0.6.3}/docs/reference/runners/pi/runner.md +0 -0
  68. {yee88-0.6.1 → yee88-0.6.3}/docs/reference/runners/pi/stream-json-cheatsheet.md +0 -0
  69. {yee88-0.6.1 → yee88-0.6.3}/docs/reference/runners/pi/takopi-events.md +0 -0
  70. {yee88-0.6.1 → yee88-0.6.3}/docs/reference/specification.md +0 -0
  71. {yee88-0.6.1 → yee88-0.6.3}/docs/reference/transports/telegram.md +0 -0
  72. {yee88-0.6.1 → yee88-0.6.3}/docs/stylesheets/admonitions.css +0 -0
  73. {yee88-0.6.1 → yee88-0.6.3}/docs/stylesheets/hero-chat.css +0 -0
  74. {yee88-0.6.1 → yee88-0.6.3}/docs/stylesheets/workflow-preview.css +0 -0
  75. {yee88-0.6.1 → yee88-0.6.3}/docs/tutorials/conversation-modes.md +0 -0
  76. {yee88-0.6.1 → yee88-0.6.3}/docs/tutorials/first-run.md +0 -0
  77. {yee88-0.6.1 → yee88-0.6.3}/docs/tutorials/index.md +0 -0
  78. {yee88-0.6.1 → yee88-0.6.3}/docs/tutorials/install.md +0 -0
  79. {yee88-0.6.1 → yee88-0.6.3}/docs/tutorials/multi-engine.md +0 -0
  80. {yee88-0.6.1 → yee88-0.6.3}/docs/tutorials/projects-and-branches.md +0 -0
  81. {yee88-0.6.1 → yee88-0.6.3}/docs/user-guide-zh.md +0 -0
  82. {yee88-0.6.1 → yee88-0.6.3}/docs/user-guide.md +0 -0
  83. {yee88-0.6.1 → yee88-0.6.3}/readme.md +0 -0
  84. {yee88-0.6.1 → yee88-0.6.3}/scripts/commit_notify.py +0 -0
  85. {yee88-0.6.1 → yee88-0.6.3}/scripts/docs_build_cf.sh +0 -0
  86. {yee88-0.6.1 → yee88-0.6.3}/scripts/docs_prebuild.py +0 -0
  87. {yee88-0.6.1 → yee88-0.6.3}/scripts/onboarding_preview.py +0 -0
  88. {yee88-0.6.1 → yee88-0.6.3}/scripts/release_notify.py +0 -0
  89. {yee88-0.6.1 → yee88-0.6.3}/src/yee88/api.py +0 -0
  90. {yee88-0.6.1 → yee88-0.6.3}/src/yee88/backends.py +0 -0
  91. {yee88-0.6.1 → yee88-0.6.3}/src/yee88/backends_helpers.py +0 -0
  92. {yee88-0.6.1 → yee88-0.6.3}/src/yee88/cli/__init__.py +0 -0
  93. {yee88-0.6.1 → yee88-0.6.3}/src/yee88/cli/config.py +0 -0
  94. {yee88-0.6.1 → yee88-0.6.3}/src/yee88/cli/cron.py +0 -0
  95. {yee88-0.6.1 → yee88-0.6.3}/src/yee88/cli/doctor.py +0 -0
  96. {yee88-0.6.1 → yee88-0.6.3}/src/yee88/cli/init.py +0 -0
  97. {yee88-0.6.1 → yee88-0.6.3}/src/yee88/cli/onboarding_cmd.py +0 -0
  98. {yee88-0.6.1 → yee88-0.6.3}/src/yee88/cli/plugins.py +0 -0
  99. {yee88-0.6.1 → yee88-0.6.3}/src/yee88/cli/reload.py +0 -0
  100. {yee88-0.6.1 → yee88-0.6.3}/src/yee88/cli/run.py +0 -0
  101. {yee88-0.6.1 → yee88-0.6.3}/src/yee88/cli/topic.py +0 -0
  102. {yee88-0.6.1 → yee88-0.6.3}/src/yee88/commands.py +0 -0
  103. {yee88-0.6.1 → yee88-0.6.3}/src/yee88/config.py +0 -0
  104. {yee88-0.6.1 → yee88-0.6.3}/src/yee88/config_migrations.py +0 -0
  105. {yee88-0.6.1 → yee88-0.6.3}/src/yee88/config_watch.py +0 -0
  106. {yee88-0.6.1 → yee88-0.6.3}/src/yee88/context.py +0 -0
  107. {yee88-0.6.1 → yee88-0.6.3}/src/yee88/cron/__init__.py +0 -0
  108. {yee88-0.6.1 → yee88-0.6.3}/src/yee88/cron/manager.py +0 -0
  109. {yee88-0.6.1 → yee88-0.6.3}/src/yee88/cron/models.py +0 -0
  110. {yee88-0.6.1 → yee88-0.6.3}/src/yee88/cron/scheduler.py +0 -0
  111. {yee88-0.6.1 → yee88-0.6.3}/src/yee88/directives.py +0 -0
  112. {yee88-0.6.1 → yee88-0.6.3}/src/yee88/engines.py +0 -0
  113. {yee88-0.6.1 → yee88-0.6.3}/src/yee88/events.py +0 -0
  114. {yee88-0.6.1 → yee88-0.6.3}/src/yee88/ids.py +0 -0
  115. {yee88-0.6.1 → yee88-0.6.3}/src/yee88/lockfile.py +0 -0
  116. {yee88-0.6.1 → yee88-0.6.3}/src/yee88/logging.py +0 -0
  117. {yee88-0.6.1 → yee88-0.6.3}/src/yee88/markdown.py +0 -0
  118. {yee88-0.6.1 → yee88-0.6.3}/src/yee88/model.py +0 -0
  119. {yee88-0.6.1 → yee88-0.6.3}/src/yee88/plugins.py +0 -0
  120. {yee88-0.6.1 → yee88-0.6.3}/src/yee88/presenter.py +0 -0
  121. {yee88-0.6.1 → yee88-0.6.3}/src/yee88/progress.py +0 -0
  122. {yee88-0.6.1 → yee88-0.6.3}/src/yee88/router.py +0 -0
  123. {yee88-0.6.1 → yee88-0.6.3}/src/yee88/runner.py +0 -0
  124. {yee88-0.6.1 → yee88-0.6.3}/src/yee88/runner_bridge.py +0 -0
  125. {yee88-0.6.1 → yee88-0.6.3}/src/yee88/runners/__init__.py +0 -0
  126. {yee88-0.6.1 → yee88-0.6.3}/src/yee88/runners/mock.py +0 -0
  127. {yee88-0.6.1 → yee88-0.6.3}/src/yee88/runners/run_options.py +0 -0
  128. {yee88-0.6.1 → yee88-0.6.3}/src/yee88/runners/tool_actions.py +0 -0
  129. {yee88-0.6.1 → yee88-0.6.3}/src/yee88/runtime_loader.py +0 -0
  130. {yee88-0.6.1 → yee88-0.6.3}/src/yee88/scheduler.py +0 -0
  131. {yee88-0.6.1 → yee88-0.6.3}/src/yee88/schemas/__init__.py +0 -0
  132. {yee88-0.6.1 → yee88-0.6.3}/src/yee88/schemas/claude.py +0 -0
  133. {yee88-0.6.1 → yee88-0.6.3}/src/yee88/schemas/codex.py +0 -0
  134. {yee88-0.6.1 → yee88-0.6.3}/src/yee88/schemas/opencode.py +0 -0
  135. {yee88-0.6.1 → yee88-0.6.3}/src/yee88/schemas/pi.py +0 -0
  136. {yee88-0.6.1 → yee88-0.6.3}/src/yee88/settings.py +0 -0
  137. {yee88-0.6.1 → yee88-0.6.3}/src/yee88/skills/yee88/SKILL.md +0 -0
  138. {yee88-0.6.1 → yee88-0.6.3}/src/yee88/telegram/__init__.py +0 -0
  139. {yee88-0.6.1 → yee88-0.6.3}/src/yee88/telegram/api_models.py +0 -0
  140. {yee88-0.6.1 → yee88-0.6.3}/src/yee88/telegram/api_schemas.py +0 -0
  141. {yee88-0.6.1 → yee88-0.6.3}/src/yee88/telegram/backend.py +0 -0
  142. {yee88-0.6.1 → yee88-0.6.3}/src/yee88/telegram/bridge.py +0 -0
  143. {yee88-0.6.1 → yee88-0.6.3}/src/yee88/telegram/chat_prefs.py +0 -0
  144. {yee88-0.6.1 → yee88-0.6.3}/src/yee88/telegram/chat_sessions.py +0 -0
  145. {yee88-0.6.1 → yee88-0.6.3}/src/yee88/telegram/client.py +0 -0
  146. {yee88-0.6.1 → yee88-0.6.3}/src/yee88/telegram/client_api.py +0 -0
  147. {yee88-0.6.1 → yee88-0.6.3}/src/yee88/telegram/commands/__init__.py +0 -0
  148. {yee88-0.6.1 → yee88-0.6.3}/src/yee88/telegram/commands/agent.py +0 -0
  149. {yee88-0.6.1 → yee88-0.6.3}/src/yee88/telegram/commands/cancel.py +0 -0
  150. {yee88-0.6.1 → yee88-0.6.3}/src/yee88/telegram/commands/dispatch.py +0 -0
  151. {yee88-0.6.1 → yee88-0.6.3}/src/yee88/telegram/commands/executor.py +0 -0
  152. {yee88-0.6.1 → yee88-0.6.3}/src/yee88/telegram/commands/file_transfer.py +0 -0
  153. {yee88-0.6.1 → yee88-0.6.3}/src/yee88/telegram/commands/handlers.py +0 -0
  154. {yee88-0.6.1 → yee88-0.6.3}/src/yee88/telegram/commands/media.py +0 -0
  155. {yee88-0.6.1 → yee88-0.6.3}/src/yee88/telegram/commands/menu.py +0 -0
  156. {yee88-0.6.1 → yee88-0.6.3}/src/yee88/telegram/commands/overrides.py +0 -0
  157. {yee88-0.6.1 → yee88-0.6.3}/src/yee88/telegram/commands/parse.py +0 -0
  158. {yee88-0.6.1 → yee88-0.6.3}/src/yee88/telegram/commands/plan.py +0 -0
  159. {yee88-0.6.1 → yee88-0.6.3}/src/yee88/telegram/commands/reasoning.py +0 -0
  160. {yee88-0.6.1 → yee88-0.6.3}/src/yee88/telegram/commands/reply.py +0 -0
  161. {yee88-0.6.1 → yee88-0.6.3}/src/yee88/telegram/commands/topics.py +0 -0
  162. {yee88-0.6.1 → yee88-0.6.3}/src/yee88/telegram/commands/trigger.py +0 -0
  163. {yee88-0.6.1 → yee88-0.6.3}/src/yee88/telegram/context.py +0 -0
  164. {yee88-0.6.1 → yee88-0.6.3}/src/yee88/telegram/engine_defaults.py +0 -0
  165. {yee88-0.6.1 → yee88-0.6.3}/src/yee88/telegram/engine_overrides.py +0 -0
  166. {yee88-0.6.1 → yee88-0.6.3}/src/yee88/telegram/files.py +0 -0
  167. {yee88-0.6.1 → yee88-0.6.3}/src/yee88/telegram/loop.py +0 -0
  168. {yee88-0.6.1 → yee88-0.6.3}/src/yee88/telegram/onboarding.py +0 -0
  169. {yee88-0.6.1 → yee88-0.6.3}/src/yee88/telegram/outbox.py +0 -0
  170. {yee88-0.6.1 → yee88-0.6.3}/src/yee88/telegram/parsing.py +0 -0
  171. {yee88-0.6.1 → yee88-0.6.3}/src/yee88/telegram/render.py +0 -0
  172. {yee88-0.6.1 → yee88-0.6.3}/src/yee88/telegram/state_store.py +0 -0
  173. {yee88-0.6.1 → yee88-0.6.3}/src/yee88/telegram/topic_state.py +0 -0
  174. {yee88-0.6.1 → yee88-0.6.3}/src/yee88/telegram/topics.py +0 -0
  175. {yee88-0.6.1 → yee88-0.6.3}/src/yee88/telegram/trigger_mode.py +0 -0
  176. {yee88-0.6.1 → yee88-0.6.3}/src/yee88/telegram/types.py +0 -0
  177. {yee88-0.6.1 → yee88-0.6.3}/src/yee88/telegram/voice.py +0 -0
  178. {yee88-0.6.1 → yee88-0.6.3}/src/yee88/transport.py +0 -0
  179. {yee88-0.6.1 → yee88-0.6.3}/src/yee88/transport_runtime.py +0 -0
  180. {yee88-0.6.1 → yee88-0.6.3}/src/yee88/transports.py +0 -0
  181. {yee88-0.6.1 → yee88-0.6.3}/src/yee88/utils/__init__.py +0 -0
  182. {yee88-0.6.1 → yee88-0.6.3}/src/yee88/utils/git.py +0 -0
  183. {yee88-0.6.1 → yee88-0.6.3}/src/yee88/utils/json_state.py +0 -0
  184. {yee88-0.6.1 → yee88-0.6.3}/src/yee88/utils/paths.py +0 -0
  185. {yee88-0.6.1 → yee88-0.6.3}/src/yee88/utils/streams.py +0 -0
  186. {yee88-0.6.1 → yee88-0.6.3}/src/yee88/utils/subprocess.py +0 -0
  187. {yee88-0.6.1 → yee88-0.6.3}/src/yee88/worktrees.py +0 -0
  188. {yee88-0.6.1 → yee88-0.6.3}/tests/__init__.py +0 -0
  189. {yee88-0.6.1 → yee88-0.6.3}/tests/conftest.py +0 -0
  190. {yee88-0.6.1 → yee88-0.6.3}/tests/factories.py +0 -0
  191. {yee88-0.6.1 → yee88-0.6.3}/tests/fixtures/claude_stream_json_session.jsonl +0 -0
  192. {yee88-0.6.1 → yee88-0.6.3}/tests/fixtures/codex_exec_json_all_formats.jsonl +0 -0
  193. {yee88-0.6.1 → yee88-0.6.3}/tests/fixtures/codex_exec_json_all_formats.txt +0 -0
  194. {yee88-0.6.1 → yee88-0.6.3}/tests/fixtures/opencode_run_json.jsonl +0 -0
  195. {yee88-0.6.1 → yee88-0.6.3}/tests/fixtures/opencode_stream_error.jsonl +0 -0
  196. {yee88-0.6.1 → yee88-0.6.3}/tests/fixtures/opencode_stream_success.jsonl +0 -0
  197. {yee88-0.6.1 → yee88-0.6.3}/tests/fixtures/opencode_stream_success_no_reason.jsonl +0 -0
  198. {yee88-0.6.1 → yee88-0.6.3}/tests/fixtures/pi_print_mode_events.jsonl +0 -0
  199. {yee88-0.6.1 → yee88-0.6.3}/tests/fixtures/pi_stream_error.jsonl +0 -0
  200. {yee88-0.6.1 → yee88-0.6.3}/tests/fixtures/pi_stream_success.jsonl +0 -0
  201. {yee88-0.6.1 → yee88-0.6.3}/tests/plugin_fixtures.py +0 -0
  202. {yee88-0.6.1 → yee88-0.6.3}/tests/telegram_fakes.py +0 -0
  203. {yee88-0.6.1 → yee88-0.6.3}/tests/test_api_exports.py +0 -0
  204. {yee88-0.6.1 → yee88-0.6.3}/tests/test_auto_router.py +0 -0
  205. {yee88-0.6.1 → yee88-0.6.3}/tests/test_claude_runner.py +0 -0
  206. {yee88-0.6.1 → yee88-0.6.3}/tests/test_claude_schema.py +0 -0
  207. {yee88-0.6.1 → yee88-0.6.3}/tests/test_cli_auto_router.py +0 -0
  208. {yee88-0.6.1 → yee88-0.6.3}/tests/test_cli_chat_id.py +0 -0
  209. {yee88-0.6.1 → yee88-0.6.3}/tests/test_cli_commands.py +0 -0
  210. {yee88-0.6.1 → yee88-0.6.3}/tests/test_cli_config.py +0 -0
  211. {yee88-0.6.1 → yee88-0.6.3}/tests/test_cli_doctor.py +0 -0
  212. {yee88-0.6.1 → yee88-0.6.3}/tests/test_cli_helpers.py +0 -0
  213. {yee88-0.6.1 → yee88-0.6.3}/tests/test_codex_runner_helpers.py +0 -0
  214. {yee88-0.6.1 → yee88-0.6.3}/tests/test_codex_schema.py +0 -0
  215. {yee88-0.6.1 → yee88-0.6.3}/tests/test_codex_tool_result_summary.py +0 -0
  216. {yee88-0.6.1 → yee88-0.6.3}/tests/test_command_registry.py +0 -0
  217. {yee88-0.6.1 → yee88-0.6.3}/tests/test_config_store.py +0 -0
  218. {yee88-0.6.1 → yee88-0.6.3}/tests/test_config_watch.py +0 -0
  219. {yee88-0.6.1 → yee88-0.6.3}/tests/test_engine_discovery.py +0 -0
  220. {yee88-0.6.1 → yee88-0.6.3}/tests/test_exec_bridge.py +0 -0
  221. {yee88-0.6.1 → yee88-0.6.3}/tests/test_exec_render.py +0 -0
  222. {yee88-0.6.1 → yee88-0.6.3}/tests/test_exec_runner.py +0 -0
  223. {yee88-0.6.1 → yee88-0.6.3}/tests/test_git_utils.py +0 -0
  224. {yee88-0.6.1 → yee88-0.6.3}/tests/test_lockfile.py +0 -0
  225. {yee88-0.6.1 → yee88-0.6.3}/tests/test_onboarding.py +0 -0
  226. {yee88-0.6.1 → yee88-0.6.3}/tests/test_onboarding_helpers.py +0 -0
  227. {yee88-0.6.1 → yee88-0.6.3}/tests/test_onboarding_interactive.py +0 -0
  228. {yee88-0.6.1 → yee88-0.6.3}/tests/test_opencode_runner.py +0 -0
  229. {yee88-0.6.1 → yee88-0.6.3}/tests/test_opencode_schema.py +0 -0
  230. {yee88-0.6.1 → yee88-0.6.3}/tests/test_paths.py +0 -0
  231. {yee88-0.6.1 → yee88-0.6.3}/tests/test_pi_runner.py +0 -0
  232. {yee88-0.6.1 → yee88-0.6.3}/tests/test_pi_schema.py +0 -0
  233. {yee88-0.6.1 → yee88-0.6.3}/tests/test_plugins.py +0 -0
  234. {yee88-0.6.1 → yee88-0.6.3}/tests/test_projects_config.py +0 -0
  235. {yee88-0.6.1 → yee88-0.6.3}/tests/test_rendering.py +0 -0
  236. {yee88-0.6.1 → yee88-0.6.3}/tests/test_runner_contract.py +0 -0
  237. {yee88-0.6.1 → yee88-0.6.3}/tests/test_runner_run_options.py +0 -0
  238. {yee88-0.6.1 → yee88-0.6.3}/tests/test_runner_utils.py +0 -0
  239. {yee88-0.6.1 → yee88-0.6.3}/tests/test_runtime_loader.py +0 -0
  240. {yee88-0.6.1 → yee88-0.6.3}/tests/test_settings.py +0 -0
  241. {yee88-0.6.1 → yee88-0.6.3}/tests/test_settings_contract.py +0 -0
  242. {yee88-0.6.1 → yee88-0.6.3}/tests/test_subprocess.py +0 -0
  243. {yee88-0.6.1 → yee88-0.6.3}/tests/test_telegram_agent_trigger_commands.py +0 -0
  244. {yee88-0.6.1 → yee88-0.6.3}/tests/test_telegram_backend.py +0 -0
  245. {yee88-0.6.1 → yee88-0.6.3}/tests/test_telegram_bridge.py +0 -0
  246. {yee88-0.6.1 → yee88-0.6.3}/tests/test_telegram_chat_prefs.py +0 -0
  247. {yee88-0.6.1 → yee88-0.6.3}/tests/test_telegram_chat_sessions.py +0 -0
  248. {yee88-0.6.1 → yee88-0.6.3}/tests/test_telegram_client.py +0 -0
  249. {yee88-0.6.1 → yee88-0.6.3}/tests/test_telegram_client_api.py +0 -0
  250. {yee88-0.6.1 → yee88-0.6.3}/tests/test_telegram_context_helpers.py +0 -0
  251. {yee88-0.6.1 → yee88-0.6.3}/tests/test_telegram_engine_defaults.py +0 -0
  252. {yee88-0.6.1 → yee88-0.6.3}/tests/test_telegram_engine_overrides.py +0 -0
  253. {yee88-0.6.1 → yee88-0.6.3}/tests/test_telegram_file_transfer_helpers.py +0 -0
  254. {yee88-0.6.1 → yee88-0.6.3}/tests/test_telegram_files.py +0 -0
  255. {yee88-0.6.1 → yee88-0.6.3}/tests/test_telegram_incoming.py +0 -0
  256. {yee88-0.6.1 → yee88-0.6.3}/tests/test_telegram_media_command.py +0 -0
  257. {yee88-0.6.1 → yee88-0.6.3}/tests/test_telegram_polling.py +0 -0
  258. {yee88-0.6.1 → yee88-0.6.3}/tests/test_telegram_queue.py +0 -0
  259. {yee88-0.6.1 → yee88-0.6.3}/tests/test_telegram_topic_state.py +0 -0
  260. {yee88-0.6.1 → yee88-0.6.3}/tests/test_telegram_topics_command.py +0 -0
  261. {yee88-0.6.1 → yee88-0.6.3}/tests/test_telegram_topics_helpers.py +0 -0
  262. {yee88-0.6.1 → yee88-0.6.3}/tests/test_telegram_trigger_mode.py +0 -0
  263. {yee88-0.6.1 → yee88-0.6.3}/tests/test_telegram_voice.py +0 -0
  264. {yee88-0.6.1 → yee88-0.6.3}/tests/test_tool_actions.py +0 -0
  265. {yee88-0.6.1 → yee88-0.6.3}/tests/test_transport.py +0 -0
  266. {yee88-0.6.1 → yee88-0.6.3}/tests/test_transport_registry.py +0 -0
  267. {yee88-0.6.1 → yee88-0.6.3}/tests/test_transport_runtime.py +0 -0
  268. {yee88-0.6.1 → yee88-0.6.3}/tests/test_worktrees.py +0 -0
  269. {yee88-0.6.1 → yee88-0.6.3}/uv.lock +0 -0
  270. {yee88-0.6.1 → yee88-0.6.3}/zensical.toml +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: yee88
3
- Version: 0.6.1
3
+ Version: 0.6.3
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,5 +1,11 @@
1
1
  # changelog
2
2
 
3
+ ## v0.6.2 (2026-01-31)
4
+
5
+ ### changes
6
+
7
+ - optimize system_prompt handling: only prepend on first run to save tokens
8
+
3
9
  ## v0.6.0 (2026-01-31)
4
10
 
5
11
  ### features
@@ -1,7 +1,7 @@
1
1
  [project]
2
2
  name = "yee88"
3
3
  authors = [{name = "yee.wang"}]
4
- version = "0.6.1"
4
+ version = "0.6.3"
5
5
  description = "Telegram bridge for Codex, Claude Code, and other agent CLIs."
6
6
  readme = "README.md"
7
7
  license = { file = "LICENSE" }
@@ -0,0 +1 @@
1
+ __version__ = "0.6.2"
@@ -311,6 +311,9 @@ class ClaudeRunner(ResumeTokenMixin, JsonlSubprocessRunner):
311
311
  args.extend(["--allowedTools", allowed_tools])
312
312
  if self.dangerously_skip_permissions is True:
313
313
  args.append("--dangerously-skip-permissions")
314
+ # Apply system prompt as prefix only on first run (when resume is None)
315
+ if resume is None and run_options is not None and run_options.system:
316
+ prompt = f"{run_options.system}\n\n---\n\n{prompt}"
314
317
  args.append("--")
315
318
  args.append(prompt)
316
319
  return args
@@ -405,6 +405,7 @@ class CodexRunner(ResumeTokenMixin, JsonlSubprocessRunner):
405
405
  engine: EngineId = ENGINE
406
406
  resume_re = _RESUME_RE
407
407
  logger = logger
408
+ model: str | None = None
408
409
 
409
410
  def __init__(
410
411
  self,
@@ -453,6 +454,19 @@ class CodexRunner(ResumeTokenMixin, JsonlSubprocessRunner):
453
454
  args.append("-")
454
455
  return args
455
456
 
457
+ def stdin_payload(
458
+ self,
459
+ prompt: str,
460
+ resume: ResumeToken | None,
461
+ *,
462
+ state: Any,
463
+ ) -> bytes | None:
464
+ run_options = get_run_options()
465
+ # Apply system prompt as prefix only on first run (when resume is None)
466
+ if resume is None and run_options is not None and run_options.system:
467
+ prompt = f"{run_options.system}\n\n---\n\n{prompt}"
468
+ return prompt.encode()
469
+
456
470
  def new_state(self, prompt: str, resume: ResumeToken | None) -> CodexRunState:
457
471
  return CodexRunState(factory=EventFactory(ENGINE))
458
472
 
@@ -335,9 +335,9 @@ class OpenCodeRunner(ResumeTokenMixin, JsonlSubprocessRunner):
335
335
  model = run_options.model
336
336
  if model is not None:
337
337
  args.extend(["--model", str(model)])
338
- # Apply system prompt as prefix if provided
339
- if run_options is not None and run_options.system:
340
- prompt = f"{run_options.system}\n\n{prompt}"
338
+ # Apply system prompt as prefix only on first run (when resume is None)
339
+ if resume is None and run_options is not None and run_options.system:
340
+ prompt = f"{run_options.system}\n\n---\n\n{prompt}"
341
341
  args.extend(["--", prompt])
342
342
  return args
343
343
 
@@ -333,6 +333,9 @@ class PiRunner(ResumeTokenMixin, JsonlSubprocessRunner):
333
333
  if model:
334
334
  args.extend(["--model", model])
335
335
  args.extend(["--session", state.resume.value])
336
+ # Apply system prompt as prefix only on first run (when resume is None)
337
+ if resume is None and run_options is not None and run_options.system:
338
+ prompt = f"{run_options.system}\n\n---\n\n{prompt}"
336
339
  args.append(self._sanitize_prompt(prompt))
337
340
  return args
338
341
 
@@ -29,7 +29,7 @@ MODEL_SELECT_CALLBACK_PREFIX = "yee88:model_select:"
29
29
 
30
30
  MODEL_USAGE = (
31
31
  "usage: `/model`, `/model status`, `/model set <model>`, "
32
- "`/model set <engine> <model>`, or `/model clear [engine]`"
32
+ "`/model set <engine> <model>`, `/model clear [engine]`, or `/model reset`"
33
33
  )
34
34
 
35
35
 
@@ -339,4 +339,45 @@ async def _handle_model_command(
339
339
  await reply(text="chat model override cleared.")
340
340
  return
341
341
 
342
+ if action == "reset":
343
+ if len(tokens) > 1:
344
+ await reply(text=MODEL_USAGE)
345
+ return
346
+ if not await require_admin_or_private(
347
+ cfg,
348
+ msg,
349
+ missing_sender="cannot verify sender for model overrides.",
350
+ failed_member="failed to verify model override permissions.",
351
+ denied="changing model overrides is restricted to group admins.",
352
+ ):
353
+ return
354
+
355
+ cleared_engines = []
356
+ for engine in engine_ids:
357
+ scope = await apply_engine_override(
358
+ reply=reply,
359
+ tkey=tkey,
360
+ topic_store=topic_store,
361
+ chat_prefs=chat_prefs,
362
+ chat_id=msg.chat_id,
363
+ engine=engine,
364
+ update=lambda current: EngineOverrides(
365
+ model=None,
366
+ reasoning=current.reasoning if current is not None else None,
367
+ ),
368
+ topic_unavailable="topic model overrides are unavailable.",
369
+ chat_unavailable="chat model overrides are unavailable (no config path).",
370
+ )
371
+ if scope is not None:
372
+ cleared_engines.append(engine)
373
+
374
+ if cleared_engines:
375
+ engines_list = ", ".join(cleared_engines)
376
+ await reply(
377
+ text=f"all model overrides reset to default for engines: {engines_list}"
378
+ )
379
+ else:
380
+ await reply(text="no model overrides to reset.")
381
+ return
382
+
342
383
  await reply(text=MODEL_USAGE)
@@ -1 +0,0 @@
1
- __version__ = "0.6.1"
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