illusion-code 0.2.11__tar.gz → 0.2.12__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 (556) hide show
  1. {illusion_code-0.2.11 → illusion_code-0.2.12}/PKG-INFO +1 -1
  2. {illusion_code-0.2.11 → illusion_code-0.2.12}/frontend/terminal/package-lock.json +2 -2
  3. {illusion_code-0.2.11 → illusion_code-0.2.12}/frontend/terminal/package.json +1 -1
  4. {illusion_code-0.2.11 → illusion_code-0.2.12}/frontend/terminal/src/version.ts +1 -1
  5. {illusion_code-0.2.11 → illusion_code-0.2.12}/frontend/web/package-lock.json +2 -2
  6. {illusion_code-0.2.11 → illusion_code-0.2.12}/frontend/web/package.json +1 -1
  7. {illusion_code-0.2.11 → illusion_code-0.2.12}/frontend/web/src/version.ts +1 -1
  8. {illusion_code-0.2.11 → illusion_code-0.2.12}/pyproject.toml +1 -1
  9. {illusion_code-0.2.11 → illusion_code-0.2.12}/src/illusion/__init__.py +1 -1
  10. {illusion_code-0.2.11 → illusion_code-0.2.12}/src/illusion/channels/__init__.py +35 -64
  11. {illusion_code-0.2.11 → illusion_code-0.2.12}/src/illusion/channels/delivery.py +280 -127
  12. illusion_code-0.2.12/src/illusion/channels/exit_handler.py +37 -0
  13. {illusion_code-0.2.11 → illusion_code-0.2.12}/src/illusion/channels/feishu/ws_client.py +22 -3
  14. {illusion_code-0.2.11 → illusion_code-0.2.12}/src/illusion/channels/serve.py +57 -5
  15. illusion_code-0.2.12/src/illusion/channels/tools/cross_channel.py +332 -0
  16. {illusion_code-0.2.11 → illusion_code-0.2.12}/src/illusion/cli.py +73 -18
  17. {illusion_code-0.2.11 → illusion_code-0.2.12}/src/illusion/config/i18n.py +7 -3
  18. {illusion_code-0.2.11 → illusion_code-0.2.12}/src/illusion/prompts/channel_hints.py +9 -1
  19. {illusion_code-0.2.11 → illusion_code-0.2.12}/src/illusion/services/cron.py +3 -3
  20. {illusion_code-0.2.11 → illusion_code-0.2.12}/src/illusion/services/cron_scheduler.py +110 -39
  21. illusion_code-0.2.12/src/illusion/services/cron_serve.py +141 -0
  22. illusion_code-0.2.12/src/illusion/services/cron_spawn.py +137 -0
  23. {illusion_code-0.2.11 → illusion_code-0.2.12}/src/illusion/tools/cron_tool.py +51 -15
  24. illusion_code-0.2.12/src/illusion/utils/ref_count.py +199 -0
  25. illusion_code-0.2.12/tests/channels/test_channel_daemon_deprecated.py +57 -0
  26. illusion_code-0.2.12/tests/channels/test_exit_handler.py +61 -0
  27. illusion_code-0.2.12/tests/test_cli_exit_handler.py +48 -0
  28. {illusion_code-0.2.11 → illusion_code-0.2.12}/tests/test_services/test_cron_scheduler.py +46 -1
  29. illusion_code-0.2.12/tests/test_services/test_cron_serve.py +109 -0
  30. illusion_code-0.2.12/tests/test_services/test_cron_spawn.py +101 -0
  31. illusion_code-0.2.12/tests/test_utils/test_ref_count.py +138 -0
  32. {illusion_code-0.2.11 → illusion_code-0.2.12}/tests/unit/test_delivery.py +54 -23
  33. illusion_code-0.2.11/src/illusion/channels/exit_handler.py +0 -83
  34. illusion_code-0.2.11/src/illusion/channels/tools/cross_channel.py +0 -231
  35. illusion_code-0.2.11/tests/channels/test_exit_handler.py +0 -192
  36. illusion_code-0.2.11/tests/test_cli_exit_handler.py +0 -66
  37. {illusion_code-0.2.11 → illusion_code-0.2.12}/.github/workflows/publish.yml +0 -0
  38. {illusion_code-0.2.11 → illusion_code-0.2.12}/.gitignore +0 -0
  39. {illusion_code-0.2.11 → illusion_code-0.2.12}/.python-version +0 -0
  40. {illusion_code-0.2.11 → illusion_code-0.2.12}/LICENSE +0 -0
  41. {illusion_code-0.2.11 → illusion_code-0.2.12}/README.md +0 -0
  42. {illusion_code-0.2.11 → illusion_code-0.2.12}/README.zh-CN.md +0 -0
  43. {illusion_code-0.2.11 → illusion_code-0.2.12}/docs/en/architecture.md +0 -0
  44. {illusion_code-0.2.11 → illusion_code-0.2.12}/docs/en/channels.md +0 -0
  45. {illusion_code-0.2.11 → illusion_code-0.2.12}/docs/en/commands.md +0 -0
  46. {illusion_code-0.2.11 → illusion_code-0.2.12}/docs/en/extensions.md +0 -0
  47. {illusion_code-0.2.11 → illusion_code-0.2.12}/docs/en/getting-started.md +0 -0
  48. {illusion_code-0.2.11 → illusion_code-0.2.12}/docs/en/introduction.md +0 -0
  49. {illusion_code-0.2.11 → illusion_code-0.2.12}/docs/en/project-files.md +0 -0
  50. {illusion_code-0.2.11 → illusion_code-0.2.12}/docs/en/settings.md +0 -0
  51. {illusion_code-0.2.11 → illusion_code-0.2.12}/docs/images/IllusionCode.png +0 -0
  52. {illusion_code-0.2.11 → illusion_code-0.2.12}/docs/images/image1.png +0 -0
  53. {illusion_code-0.2.11 → illusion_code-0.2.12}/docs/images/image2.png +0 -0
  54. {illusion_code-0.2.11 → illusion_code-0.2.12}/docs/zh-CN/architecture.md +0 -0
  55. {illusion_code-0.2.11 → illusion_code-0.2.12}/docs/zh-CN/channels.md +0 -0
  56. {illusion_code-0.2.11 → illusion_code-0.2.12}/docs/zh-CN/commands.md +0 -0
  57. {illusion_code-0.2.11 → illusion_code-0.2.12}/docs/zh-CN/extensions.md +0 -0
  58. {illusion_code-0.2.11 → illusion_code-0.2.12}/docs/zh-CN/getting-started.md +0 -0
  59. {illusion_code-0.2.11 → illusion_code-0.2.12}/docs/zh-CN/introduction.md +0 -0
  60. {illusion_code-0.2.11 → illusion_code-0.2.12}/docs/zh-CN/project-files.md +0 -0
  61. {illusion_code-0.2.11 → illusion_code-0.2.12}/docs/zh-CN/settings.md +0 -0
  62. {illusion_code-0.2.11 → illusion_code-0.2.12}/frontend/terminal/build.mjs +0 -0
  63. {illusion_code-0.2.11 → illusion_code-0.2.12}/frontend/terminal/src/App.tsx +0 -0
  64. {illusion_code-0.2.11 → illusion_code-0.2.12}/frontend/terminal/src/components/CommandPicker.tsx +0 -0
  65. {illusion_code-0.2.11 → illusion_code-0.2.12}/frontend/terminal/src/components/Composer.tsx +0 -0
  66. {illusion_code-0.2.11 → illusion_code-0.2.12}/frontend/terminal/src/components/ComposerController.tsx +0 -0
  67. {illusion_code-0.2.11 → illusion_code-0.2.12}/frontend/terminal/src/components/ConversationView.tsx +0 -0
  68. {illusion_code-0.2.11 → illusion_code-0.2.12}/frontend/terminal/src/components/Footer.tsx +0 -0
  69. {illusion_code-0.2.11 → illusion_code-0.2.12}/frontend/terminal/src/components/MarkdownContent.tsx +0 -0
  70. {illusion_code-0.2.11 → illusion_code-0.2.12}/frontend/terminal/src/components/MarkdownTable.tsx +0 -0
  71. {illusion_code-0.2.11 → illusion_code-0.2.12}/frontend/terminal/src/components/ModalHost.tsx +0 -0
  72. {illusion_code-0.2.11 → illusion_code-0.2.12}/frontend/terminal/src/components/MultilineTextInput.tsx +0 -0
  73. {illusion_code-0.2.11 → illusion_code-0.2.12}/frontend/terminal/src/components/PromptInput.tsx +0 -0
  74. {illusion_code-0.2.11 → illusion_code-0.2.12}/frontend/terminal/src/components/QuestionNavigationBar.tsx +0 -0
  75. {illusion_code-0.2.11 → illusion_code-0.2.12}/frontend/terminal/src/components/QuestionPreviewBox.tsx +0 -0
  76. {illusion_code-0.2.11 → illusion_code-0.2.12}/frontend/terminal/src/components/SelectModal.tsx +0 -0
  77. {illusion_code-0.2.11 → illusion_code-0.2.12}/frontend/terminal/src/components/SidePanel.tsx +0 -0
  78. {illusion_code-0.2.11 → illusion_code-0.2.12}/frontend/terminal/src/components/Spinner.tsx +0 -0
  79. {illusion_code-0.2.11 → illusion_code-0.2.12}/frontend/terminal/src/components/StatusBar.tsx +0 -0
  80. {illusion_code-0.2.11 → illusion_code-0.2.12}/frontend/terminal/src/components/SwarmPanel.tsx +0 -0
  81. {illusion_code-0.2.11 → illusion_code-0.2.12}/frontend/terminal/src/components/TodoPanel.tsx +0 -0
  82. {illusion_code-0.2.11 → illusion_code-0.2.12}/frontend/terminal/src/components/ToolCallDisplay.tsx +0 -0
  83. {illusion_code-0.2.11 → illusion_code-0.2.12}/frontend/terminal/src/components/TranscriptPane.tsx +0 -0
  84. {illusion_code-0.2.11 → illusion_code-0.2.12}/frontend/terminal/src/components/WelcomeBanner.tsx +0 -0
  85. {illusion_code-0.2.11 → illusion_code-0.2.12}/frontend/terminal/src/hooks/useAnimationFrame.ts +0 -0
  86. {illusion_code-0.2.11 → illusion_code-0.2.12}/frontend/terminal/src/hooks/useBackendSession.ts +0 -0
  87. {illusion_code-0.2.11 → illusion_code-0.2.12}/frontend/terminal/src/hooks/useBlink.ts +0 -0
  88. {illusion_code-0.2.11 → illusion_code-0.2.12}/frontend/terminal/src/hooks/useQuestionState.ts +0 -0
  89. {illusion_code-0.2.11 → illusion_code-0.2.12}/frontend/terminal/src/hooks/useTerminalSize.ts +0 -0
  90. {illusion_code-0.2.11 → illusion_code-0.2.12}/frontend/terminal/src/i18n.ts +0 -0
  91. {illusion_code-0.2.11 → illusion_code-0.2.12}/frontend/terminal/src/index.tsx +0 -0
  92. {illusion_code-0.2.11 → illusion_code-0.2.12}/frontend/terminal/src/theme/ThemeContext.tsx +0 -0
  93. {illusion_code-0.2.11 → illusion_code-0.2.12}/frontend/terminal/src/theme/builtinThemes.ts +0 -0
  94. {illusion_code-0.2.11 → illusion_code-0.2.12}/frontend/terminal/src/tools/ToolInterface.ts +0 -0
  95. {illusion_code-0.2.11 → illusion_code-0.2.12}/frontend/terminal/src/tools/implementations/AgentTool.ts +0 -0
  96. {illusion_code-0.2.11 → illusion_code-0.2.12}/frontend/terminal/src/tools/implementations/BashTool.ts +0 -0
  97. {illusion_code-0.2.11 → illusion_code-0.2.12}/frontend/terminal/src/tools/implementations/CronTool.ts +0 -0
  98. {illusion_code-0.2.11 → illusion_code-0.2.12}/frontend/terminal/src/tools/implementations/EditTool.ts +0 -0
  99. {illusion_code-0.2.11 → illusion_code-0.2.12}/frontend/terminal/src/tools/implementations/GenericTool.ts +0 -0
  100. {illusion_code-0.2.11 → illusion_code-0.2.12}/frontend/terminal/src/tools/implementations/LspTool.ts +0 -0
  101. {illusion_code-0.2.11 → illusion_code-0.2.12}/frontend/terminal/src/tools/implementations/McpTool.ts +0 -0
  102. {illusion_code-0.2.11 → illusion_code-0.2.12}/frontend/terminal/src/tools/implementations/NotebookTool.ts +0 -0
  103. {illusion_code-0.2.11 → illusion_code-0.2.12}/frontend/terminal/src/tools/implementations/PlanTool.ts +0 -0
  104. {illusion_code-0.2.11 → illusion_code-0.2.12}/frontend/terminal/src/tools/implementations/ReadTool.ts +0 -0
  105. {illusion_code-0.2.11 → illusion_code-0.2.12}/frontend/terminal/src/tools/implementations/SearchTool.ts +0 -0
  106. {illusion_code-0.2.11 → illusion_code-0.2.12}/frontend/terminal/src/tools/implementations/SkillTool.ts +0 -0
  107. {illusion_code-0.2.11 → illusion_code-0.2.12}/frontend/terminal/src/tools/implementations/TaskTool.ts +0 -0
  108. {illusion_code-0.2.11 → illusion_code-0.2.12}/frontend/terminal/src/tools/implementations/WebTool.ts +0 -0
  109. {illusion_code-0.2.11 → illusion_code-0.2.12}/frontend/terminal/src/tools/implementations/WorktreeTool.ts +0 -0
  110. {illusion_code-0.2.11 → illusion_code-0.2.12}/frontend/terminal/src/tools/implementations/WriteTool.ts +0 -0
  111. {illusion_code-0.2.11 → illusion_code-0.2.12}/frontend/terminal/src/tools/registry.ts +0 -0
  112. {illusion_code-0.2.11 → illusion_code-0.2.12}/frontend/terminal/src/types.ts +0 -0
  113. {illusion_code-0.2.11 → illusion_code-0.2.12}/frontend/terminal/src/utils/markdown.ts +0 -0
  114. {illusion_code-0.2.11 → illusion_code-0.2.12}/frontend/terminal/src/utils/thinking.ts +0 -0
  115. {illusion_code-0.2.11 → illusion_code-0.2.12}/frontend/terminal/tsconfig.json +0 -0
  116. {illusion_code-0.2.11 → illusion_code-0.2.12}/frontend/web/index.html +0 -0
  117. {illusion_code-0.2.11 → illusion_code-0.2.12}/frontend/web/postcss.config.js +0 -0
  118. {illusion_code-0.2.11 → illusion_code-0.2.12}/frontend/web/src/App.tsx +0 -0
  119. {illusion_code-0.2.11 → illusion_code-0.2.12}/frontend/web/src/components/ChatArea.tsx +0 -0
  120. {illusion_code-0.2.11 → illusion_code-0.2.12}/frontend/web/src/components/ErrorBoundary.tsx +0 -0
  121. {illusion_code-0.2.11 → illusion_code-0.2.12}/frontend/web/src/components/MessageBubble.tsx +0 -0
  122. {illusion_code-0.2.11 → illusion_code-0.2.12}/frontend/web/src/components/ModalCard.tsx +0 -0
  123. {illusion_code-0.2.11 → illusion_code-0.2.12}/frontend/web/src/components/PromptInput.tsx +0 -0
  124. {illusion_code-0.2.11 → illusion_code-0.2.12}/frontend/web/src/components/RightPanel.tsx +0 -0
  125. {illusion_code-0.2.11 → illusion_code-0.2.12}/frontend/web/src/components/Sidebar.tsx +0 -0
  126. {illusion_code-0.2.11 → illusion_code-0.2.12}/frontend/web/src/components/TodoPanel.tsx +0 -0
  127. {illusion_code-0.2.11 → illusion_code-0.2.12}/frontend/web/src/components/Toolbar.tsx +0 -0
  128. {illusion_code-0.2.11 → illusion_code-0.2.12}/frontend/web/src/components/WelcomeScreen.tsx +0 -0
  129. {illusion_code-0.2.11 → illusion_code-0.2.12}/frontend/web/src/hooks/useTheme.ts +0 -0
  130. {illusion_code-0.2.11 → illusion_code-0.2.12}/frontend/web/src/hooks/useWebSocketSession.ts +0 -0
  131. {illusion_code-0.2.11 → illusion_code-0.2.12}/frontend/web/src/i18n.ts +0 -0
  132. {illusion_code-0.2.11 → illusion_code-0.2.12}/frontend/web/src/index.css +0 -0
  133. {illusion_code-0.2.11 → illusion_code-0.2.12}/frontend/web/src/main.tsx +0 -0
  134. {illusion_code-0.2.11 → illusion_code-0.2.12}/frontend/web/src/remarkSuperscript.ts +0 -0
  135. {illusion_code-0.2.11 → illusion_code-0.2.12}/frontend/web/src/types/protocol.ts +0 -0
  136. {illusion_code-0.2.11 → illusion_code-0.2.12}/frontend/web/src/utils/toolDisplayName.ts +0 -0
  137. {illusion_code-0.2.11 → illusion_code-0.2.12}/frontend/web/src/vite-env.d.ts +0 -0
  138. {illusion_code-0.2.11 → illusion_code-0.2.12}/frontend/web/tailwind.config.js +0 -0
  139. {illusion_code-0.2.11 → illusion_code-0.2.12}/frontend/web/tsconfig.json +0 -0
  140. {illusion_code-0.2.11 → illusion_code-0.2.12}/frontend/web/tsconfig.node.json +0 -0
  141. {illusion_code-0.2.11 → illusion_code-0.2.12}/frontend/web/vite.config.ts +0 -0
  142. {illusion_code-0.2.11 → illusion_code-0.2.12}/scripts/build_frontend.py +0 -0
  143. {illusion_code-0.2.11 → illusion_code-0.2.12}/scripts/hatch_build.py +0 -0
  144. {illusion_code-0.2.11 → illusion_code-0.2.12}/scripts/publish.py +0 -0
  145. {illusion_code-0.2.11 → illusion_code-0.2.12}/scripts/sync_version.py +0 -0
  146. {illusion_code-0.2.11 → illusion_code-0.2.12}/src/illusion/__main__.py +0 -0
  147. {illusion_code-0.2.11 → illusion_code-0.2.12}/src/illusion/api/__init__.py +0 -0
  148. {illusion_code-0.2.11 → illusion_code-0.2.12}/src/illusion/api/client.py +0 -0
  149. {illusion_code-0.2.11 → illusion_code-0.2.12}/src/illusion/api/codex_client.py +0 -0
  150. {illusion_code-0.2.11 → illusion_code-0.2.12}/src/illusion/api/compat.py +0 -0
  151. {illusion_code-0.2.11 → illusion_code-0.2.12}/src/illusion/api/effort.py +0 -0
  152. {illusion_code-0.2.11 → illusion_code-0.2.12}/src/illusion/api/errors.py +0 -0
  153. {illusion_code-0.2.11 → illusion_code-0.2.12}/src/illusion/api/openai_client.py +0 -0
  154. {illusion_code-0.2.11 → illusion_code-0.2.12}/src/illusion/api/provider.py +0 -0
  155. {illusion_code-0.2.11 → illusion_code-0.2.12}/src/illusion/api/registry.py +0 -0
  156. {illusion_code-0.2.11 → illusion_code-0.2.12}/src/illusion/api/usage.py +0 -0
  157. {illusion_code-0.2.11 → illusion_code-0.2.12}/src/illusion/auth/__init__.py +0 -0
  158. {illusion_code-0.2.11 → illusion_code-0.2.12}/src/illusion/auth/codex_oauth.py +0 -0
  159. {illusion_code-0.2.11 → illusion_code-0.2.12}/src/illusion/auth/copilot.py +0 -0
  160. {illusion_code-0.2.11 → illusion_code-0.2.12}/src/illusion/auth/external.py +0 -0
  161. {illusion_code-0.2.11 → illusion_code-0.2.12}/src/illusion/auth/flows.py +0 -0
  162. {illusion_code-0.2.11 → illusion_code-0.2.12}/src/illusion/auth/manager.py +0 -0
  163. {illusion_code-0.2.11 → illusion_code-0.2.12}/src/illusion/auth/storage.py +0 -0
  164. {illusion_code-0.2.11 → illusion_code-0.2.12}/src/illusion/bridge/__init__.py +0 -0
  165. {illusion_code-0.2.11 → illusion_code-0.2.12}/src/illusion/bridge/manager.py +0 -0
  166. {illusion_code-0.2.11 → illusion_code-0.2.12}/src/illusion/bridge/session_runner.py +0 -0
  167. {illusion_code-0.2.11 → illusion_code-0.2.12}/src/illusion/bridge/types.py +0 -0
  168. {illusion_code-0.2.11 → illusion_code-0.2.12}/src/illusion/bridge/work_secret.py +0 -0
  169. {illusion_code-0.2.11 → illusion_code-0.2.12}/src/illusion/channels/base.py +0 -0
  170. {illusion_code-0.2.11 → illusion_code-0.2.12}/src/illusion/channels/base_commands.py +0 -0
  171. {illusion_code-0.2.11 → illusion_code-0.2.12}/src/illusion/channels/config.py +0 -0
  172. {illusion_code-0.2.11 → illusion_code-0.2.12}/src/illusion/channels/feishu/__init__.py +0 -0
  173. {illusion_code-0.2.11 → illusion_code-0.2.12}/src/illusion/channels/feishu/adapter.py +0 -0
  174. {illusion_code-0.2.11 → illusion_code-0.2.12}/src/illusion/channels/feishu/commands.py +0 -0
  175. {illusion_code-0.2.11 → illusion_code-0.2.12}/src/illusion/channels/feishu/messaging.py +0 -0
  176. {illusion_code-0.2.11 → illusion_code-0.2.12}/src/illusion/channels/feishu/session_map.py +0 -0
  177. {illusion_code-0.2.11 → illusion_code-0.2.12}/src/illusion/channels/feishu/streaming.py +0 -0
  178. {illusion_code-0.2.11 → illusion_code-0.2.12}/src/illusion/channels/pid.py +0 -0
  179. {illusion_code-0.2.11 → illusion_code-0.2.12}/src/illusion/channels/qq/__init__.py +0 -0
  180. {illusion_code-0.2.11 → illusion_code-0.2.12}/src/illusion/channels/qq/adapter.py +0 -0
  181. {illusion_code-0.2.11 → illusion_code-0.2.12}/src/illusion/channels/qq/api.py +0 -0
  182. {illusion_code-0.2.11 → illusion_code-0.2.12}/src/illusion/channels/qq/commands.py +0 -0
  183. {illusion_code-0.2.11 → illusion_code-0.2.12}/src/illusion/channels/qq/session_map.py +0 -0
  184. {illusion_code-0.2.11 → illusion_code-0.2.12}/src/illusion/channels/qq/streaming.py +0 -0
  185. {illusion_code-0.2.11 → illusion_code-0.2.12}/src/illusion/channels/qq/ws_client.py +0 -0
  186. {illusion_code-0.2.11 → illusion_code-0.2.12}/src/illusion/channels/registry.py +0 -0
  187. {illusion_code-0.2.11 → illusion_code-0.2.12}/src/illusion/channels/tools/__init__.py +0 -0
  188. {illusion_code-0.2.11 → illusion_code-0.2.12}/src/illusion/channels/tools/feishu_doc.py +0 -0
  189. {illusion_code-0.2.11 → illusion_code-0.2.12}/src/illusion/channels/tools/feishu_drive.py +0 -0
  190. {illusion_code-0.2.11 → illusion_code-0.2.12}/src/illusion/channels/tools/media.py +0 -0
  191. {illusion_code-0.2.11 → illusion_code-0.2.12}/src/illusion/channels/weixin/__init__.py +0 -0
  192. {illusion_code-0.2.11 → illusion_code-0.2.12}/src/illusion/channels/weixin/adapter.py +0 -0
  193. {illusion_code-0.2.11 → illusion_code-0.2.12}/src/illusion/channels/weixin/commands.py +0 -0
  194. {illusion_code-0.2.11 → illusion_code-0.2.12}/src/illusion/channels/weixin/ilink_api.py +0 -0
  195. {illusion_code-0.2.11 → illusion_code-0.2.12}/src/illusion/channels/weixin/session_map.py +0 -0
  196. {illusion_code-0.2.11 → illusion_code-0.2.12}/src/illusion/commands/__init__.py +0 -0
  197. {illusion_code-0.2.11 → illusion_code-0.2.12}/src/illusion/commands/auth.py +0 -0
  198. {illusion_code-0.2.11 → illusion_code-0.2.12}/src/illusion/commands/bridge.py +0 -0
  199. {illusion_code-0.2.11 → illusion_code-0.2.12}/src/illusion/commands/context.py +0 -0
  200. {illusion_code-0.2.11 → illusion_code-0.2.12}/src/illusion/commands/git.py +0 -0
  201. {illusion_code-0.2.11 → illusion_code-0.2.12}/src/illusion/commands/helpers.py +0 -0
  202. {illusion_code-0.2.11 → illusion_code-0.2.12}/src/illusion/commands/init/__init__.py +0 -0
  203. {illusion_code-0.2.11 → illusion_code-0.2.12}/src/illusion/commands/init/analysis/__init__.py +0 -0
  204. {illusion_code-0.2.11 → illusion_code-0.2.12}/src/illusion/commands/init/analysis/architecture.py +0 -0
  205. {illusion_code-0.2.11 → illusion_code-0.2.12}/src/illusion/commands/init/analysis/conventions.py +0 -0
  206. {illusion_code-0.2.11 → illusion_code-0.2.12}/src/illusion/commands/init/analysis/dependencies.py +0 -0
  207. {illusion_code-0.2.11 → illusion_code-0.2.12}/src/illusion/commands/init/analysis/key_modules.py +0 -0
  208. {illusion_code-0.2.11 → illusion_code-0.2.12}/src/illusion/commands/init/extraction/__init__.py +0 -0
  209. {illusion_code-0.2.11 → illusion_code-0.2.12}/src/illusion/commands/init/extraction/lsp_symbols.py +0 -0
  210. {illusion_code-0.2.11 → illusion_code-0.2.12}/src/illusion/commands/init/extraction/readme.py +0 -0
  211. {illusion_code-0.2.11 → illusion_code-0.2.12}/src/illusion/commands/init/extraction/scanner.py +0 -0
  212. {illusion_code-0.2.11 → illusion_code-0.2.12}/src/illusion/commands/init/generation/__init__.py +0 -0
  213. {illusion_code-0.2.11 → illusion_code-0.2.12}/src/illusion/commands/init/generation/claudemd.py +0 -0
  214. {illusion_code-0.2.11 → illusion_code-0.2.12}/src/illusion/commands/init/generation/illusionmd.py +0 -0
  215. {illusion_code-0.2.11 → illusion_code-0.2.12}/src/illusion/commands/init/generation/memory_template.py +0 -0
  216. {illusion_code-0.2.11 → illusion_code-0.2.12}/src/illusion/commands/init/generation/rules.py +0 -0
  217. {illusion_code-0.2.11 → illusion_code-0.2.12}/src/illusion/commands/init/generation/sections.py +0 -0
  218. {illusion_code-0.2.11 → illusion_code-0.2.12}/src/illusion/commands/init/orchestrator.py +0 -0
  219. {illusion_code-0.2.11 → illusion_code-0.2.12}/src/illusion/commands/init/types.py +0 -0
  220. {illusion_code-0.2.11 → illusion_code-0.2.12}/src/illusion/commands/mcp.py +0 -0
  221. {illusion_code-0.2.11 → illusion_code-0.2.12}/src/illusion/commands/memory.py +0 -0
  222. {illusion_code-0.2.11 → illusion_code-0.2.12}/src/illusion/commands/misc.py +0 -0
  223. {illusion_code-0.2.11 → illusion_code-0.2.12}/src/illusion/commands/model.py +0 -0
  224. {illusion_code-0.2.11 → illusion_code-0.2.12}/src/illusion/commands/plugin.py +0 -0
  225. {illusion_code-0.2.11 → illusion_code-0.2.12}/src/illusion/commands/registry.py +0 -0
  226. {illusion_code-0.2.11 → illusion_code-0.2.12}/src/illusion/commands/rules.py +0 -0
  227. {illusion_code-0.2.11 → illusion_code-0.2.12}/src/illusion/commands/sandbox.py +0 -0
  228. {illusion_code-0.2.11 → illusion_code-0.2.12}/src/illusion/commands/session.py +0 -0
  229. {illusion_code-0.2.11 → illusion_code-0.2.12}/src/illusion/commands/settings.py +0 -0
  230. {illusion_code-0.2.11 → illusion_code-0.2.12}/src/illusion/commands/types.py +0 -0
  231. {illusion_code-0.2.11 → illusion_code-0.2.12}/src/illusion/config/__init__.py +0 -0
  232. {illusion_code-0.2.11 → illusion_code-0.2.12}/src/illusion/config/paths.py +0 -0
  233. {illusion_code-0.2.11 → illusion_code-0.2.12}/src/illusion/config/plan_file.py +0 -0
  234. {illusion_code-0.2.11 → illusion_code-0.2.12}/src/illusion/config/settings.py +0 -0
  235. {illusion_code-0.2.11 → illusion_code-0.2.12}/src/illusion/coordinator/__init__.py +0 -0
  236. {illusion_code-0.2.11 → illusion_code-0.2.12}/src/illusion/coordinator/agent_definitions.py +0 -0
  237. {illusion_code-0.2.11 → illusion_code-0.2.12}/src/illusion/coordinator/coordinator_mode.py +0 -0
  238. {illusion_code-0.2.11 → illusion_code-0.2.12}/src/illusion/engine/__init__.py +0 -0
  239. {illusion_code-0.2.11 → illusion_code-0.2.12}/src/illusion/engine/cost_tracker.py +0 -0
  240. {illusion_code-0.2.11 → illusion_code-0.2.12}/src/illusion/engine/messages.py +0 -0
  241. {illusion_code-0.2.11 → illusion_code-0.2.12}/src/illusion/engine/query.py +0 -0
  242. {illusion_code-0.2.11 → illusion_code-0.2.12}/src/illusion/engine/query_engine.py +0 -0
  243. {illusion_code-0.2.11 → illusion_code-0.2.12}/src/illusion/engine/stream_events.py +0 -0
  244. {illusion_code-0.2.11 → illusion_code-0.2.12}/src/illusion/hooks/__init__.py +0 -0
  245. {illusion_code-0.2.11 → illusion_code-0.2.12}/src/illusion/hooks/events.py +0 -0
  246. {illusion_code-0.2.11 → illusion_code-0.2.12}/src/illusion/hooks/executor.py +0 -0
  247. {illusion_code-0.2.11 → illusion_code-0.2.12}/src/illusion/hooks/hot_reload.py +0 -0
  248. {illusion_code-0.2.11 → illusion_code-0.2.12}/src/illusion/hooks/loader.py +0 -0
  249. {illusion_code-0.2.11 → illusion_code-0.2.12}/src/illusion/hooks/register_hooks.py +0 -0
  250. {illusion_code-0.2.11 → illusion_code-0.2.12}/src/illusion/hooks/schemas.py +0 -0
  251. {illusion_code-0.2.11 → illusion_code-0.2.12}/src/illusion/hooks/session_hooks.py +0 -0
  252. {illusion_code-0.2.11 → illusion_code-0.2.12}/src/illusion/hooks/types.py +0 -0
  253. {illusion_code-0.2.11 → illusion_code-0.2.12}/src/illusion/hooks/utils.py +0 -0
  254. {illusion_code-0.2.11 → illusion_code-0.2.12}/src/illusion/mcp/__init__.py +0 -0
  255. {illusion_code-0.2.11 → illusion_code-0.2.12}/src/illusion/mcp/client.py +0 -0
  256. {illusion_code-0.2.11 → illusion_code-0.2.12}/src/illusion/mcp/config.py +0 -0
  257. {illusion_code-0.2.11 → illusion_code-0.2.12}/src/illusion/mcp/types.py +0 -0
  258. {illusion_code-0.2.11 → illusion_code-0.2.12}/src/illusion/memory/__init__.py +0 -0
  259. {illusion_code-0.2.11 → illusion_code-0.2.12}/src/illusion/memory/manager.py +0 -0
  260. {illusion_code-0.2.11 → illusion_code-0.2.12}/src/illusion/memory/memdir.py +0 -0
  261. {illusion_code-0.2.11 → illusion_code-0.2.12}/src/illusion/memory/paths.py +0 -0
  262. {illusion_code-0.2.11 → illusion_code-0.2.12}/src/illusion/memory/scan.py +0 -0
  263. {illusion_code-0.2.11 → illusion_code-0.2.12}/src/illusion/memory/search.py +0 -0
  264. {illusion_code-0.2.11 → illusion_code-0.2.12}/src/illusion/memory/types.py +0 -0
  265. {illusion_code-0.2.11 → illusion_code-0.2.12}/src/illusion/output_styles/__init__.py +0 -0
  266. {illusion_code-0.2.11 → illusion_code-0.2.12}/src/illusion/output_styles/loader.py +0 -0
  267. {illusion_code-0.2.11 → illusion_code-0.2.12}/src/illusion/permissions/__init__.py +0 -0
  268. {illusion_code-0.2.11 → illusion_code-0.2.12}/src/illusion/permissions/checker.py +0 -0
  269. {illusion_code-0.2.11 → illusion_code-0.2.12}/src/illusion/permissions/loader.py +0 -0
  270. {illusion_code-0.2.11 → illusion_code-0.2.12}/src/illusion/permissions/modes.py +0 -0
  271. {illusion_code-0.2.11 → illusion_code-0.2.12}/src/illusion/permissions/schemas.py +0 -0
  272. {illusion_code-0.2.11 → illusion_code-0.2.12}/src/illusion/platforms.py +0 -0
  273. {illusion_code-0.2.11 → illusion_code-0.2.12}/src/illusion/plugins/__init__.py +0 -0
  274. {illusion_code-0.2.11 → illusion_code-0.2.12}/src/illusion/plugins/installer.py +0 -0
  275. {illusion_code-0.2.11 → illusion_code-0.2.12}/src/illusion/plugins/loader.py +0 -0
  276. {illusion_code-0.2.11 → illusion_code-0.2.12}/src/illusion/plugins/options.py +0 -0
  277. {illusion_code-0.2.11 → illusion_code-0.2.12}/src/illusion/plugins/schemas.py +0 -0
  278. {illusion_code-0.2.11 → illusion_code-0.2.12}/src/illusion/plugins/types.py +0 -0
  279. {illusion_code-0.2.11 → illusion_code-0.2.12}/src/illusion/prompts/__init__.py +0 -0
  280. {illusion_code-0.2.11 → illusion_code-0.2.12}/src/illusion/prompts/claudemd.py +0 -0
  281. {illusion_code-0.2.11 → illusion_code-0.2.12}/src/illusion/prompts/context.py +0 -0
  282. {illusion_code-0.2.11 → illusion_code-0.2.12}/src/illusion/prompts/environment.py +0 -0
  283. {illusion_code-0.2.11 → illusion_code-0.2.12}/src/illusion/prompts/system_prompt.py +0 -0
  284. {illusion_code-0.2.11 → illusion_code-0.2.12}/src/illusion/sandbox/__init__.py +0 -0
  285. {illusion_code-0.2.11 → illusion_code-0.2.12}/src/illusion/sandbox/adapter.py +0 -0
  286. {illusion_code-0.2.11 → illusion_code-0.2.12}/src/illusion/sandbox/platforms/__init__.py +0 -0
  287. {illusion_code-0.2.11 → illusion_code-0.2.12}/src/illusion/sandbox/platforms/base.py +0 -0
  288. {illusion_code-0.2.11 → illusion_code-0.2.12}/src/illusion/sandbox/platforms/linux.py +0 -0
  289. {illusion_code-0.2.11 → illusion_code-0.2.12}/src/illusion/sandbox/platforms/macos.py +0 -0
  290. {illusion_code-0.2.11 → illusion_code-0.2.12}/src/illusion/sandbox/platforms/windows.py +0 -0
  291. {illusion_code-0.2.11 → illusion_code-0.2.12}/src/illusion/sandbox/proxy/__init__.py +0 -0
  292. {illusion_code-0.2.11 → illusion_code-0.2.12}/src/illusion/sandbox/proxy/env_vars.py +0 -0
  293. {illusion_code-0.2.11 → illusion_code-0.2.12}/src/illusion/sandbox/runtime.py +0 -0
  294. {illusion_code-0.2.11 → illusion_code-0.2.12}/src/illusion/sandbox/symlink_protection.py +0 -0
  295. {illusion_code-0.2.11 → illusion_code-0.2.12}/src/illusion/sandbox/utils.py +0 -0
  296. {illusion_code-0.2.11 → illusion_code-0.2.12}/src/illusion/sandbox/violation_store.py +0 -0
  297. {illusion_code-0.2.11 → illusion_code-0.2.12}/src/illusion/services/__init__.py +0 -0
  298. {illusion_code-0.2.11 → illusion_code-0.2.12}/src/illusion/services/compact/__init__.py +0 -0
  299. {illusion_code-0.2.11 → illusion_code-0.2.12}/src/illusion/services/compact/auto_compact.py +0 -0
  300. {illusion_code-0.2.11 → illusion_code-0.2.12}/src/illusion/services/compact/compact_core.py +0 -0
  301. {illusion_code-0.2.11 → illusion_code-0.2.12}/src/illusion/services/compact/compact_prompt.py +0 -0
  302. {illusion_code-0.2.11 → illusion_code-0.2.12}/src/illusion/services/compact/constants.py +0 -0
  303. {illusion_code-0.2.11 → illusion_code-0.2.12}/src/illusion/services/compact/message_ops.py +0 -0
  304. {illusion_code-0.2.11 → illusion_code-0.2.12}/src/illusion/services/compact/microcompact.py +0 -0
  305. {illusion_code-0.2.11 → illusion_code-0.2.12}/src/illusion/services/compact/models.py +0 -0
  306. {illusion_code-0.2.11 → illusion_code-0.2.12}/src/illusion/services/compact/token_utils.py +0 -0
  307. {illusion_code-0.2.11 → illusion_code-0.2.12}/src/illusion/services/file_history.py +0 -0
  308. {illusion_code-0.2.11 → illusion_code-0.2.12}/src/illusion/services/lsp/__init__.py +0 -0
  309. {illusion_code-0.2.11 → illusion_code-0.2.12}/src/illusion/services/lsp/client.py +0 -0
  310. {illusion_code-0.2.11 → illusion_code-0.2.12}/src/illusion/services/lsp/config.py +0 -0
  311. {illusion_code-0.2.11 → illusion_code-0.2.12}/src/illusion/services/lsp/manager.py +0 -0
  312. {illusion_code-0.2.11 → illusion_code-0.2.12}/src/illusion/services/lsp/types.py +0 -0
  313. {illusion_code-0.2.11 → illusion_code-0.2.12}/src/illusion/services/session_storage.py +0 -0
  314. {illusion_code-0.2.11 → illusion_code-0.2.12}/src/illusion/services/token_estimation.py +0 -0
  315. {illusion_code-0.2.11 → illusion_code-0.2.12}/src/illusion/skills/__init__.py +0 -0
  316. {illusion_code-0.2.11 → illusion_code-0.2.12}/src/illusion/skills/bundled/__init__.py +0 -0
  317. {illusion_code-0.2.11 → illusion_code-0.2.12}/src/illusion/skills/bundled/content/batch.md +0 -0
  318. {illusion_code-0.2.11 → illusion_code-0.2.12}/src/illusion/skills/bundled/content/debug.md +0 -0
  319. {illusion_code-0.2.11 → illusion_code-0.2.12}/src/illusion/skills/bundled/content/loop.md +0 -0
  320. {illusion_code-0.2.11 → illusion_code-0.2.12}/src/illusion/skills/bundled/content/remember.md +0 -0
  321. {illusion_code-0.2.11 → illusion_code-0.2.12}/src/illusion/skills/bundled/content/simplify.md +0 -0
  322. {illusion_code-0.2.11 → illusion_code-0.2.12}/src/illusion/skills/bundled/content/skillify.md +0 -0
  323. {illusion_code-0.2.11 → illusion_code-0.2.12}/src/illusion/skills/bundled/content/stuck.md +0 -0
  324. {illusion_code-0.2.11 → illusion_code-0.2.12}/src/illusion/skills/bundled/content/update-config.md +0 -0
  325. {illusion_code-0.2.11 → illusion_code-0.2.12}/src/illusion/skills/bundled/content/verify.md +0 -0
  326. {illusion_code-0.2.11 → illusion_code-0.2.12}/src/illusion/skills/loader.py +0 -0
  327. {illusion_code-0.2.11 → illusion_code-0.2.12}/src/illusion/skills/registry.py +0 -0
  328. {illusion_code-0.2.11 → illusion_code-0.2.12}/src/illusion/skills/types.py +0 -0
  329. {illusion_code-0.2.11 → illusion_code-0.2.12}/src/illusion/state/__init__.py +0 -0
  330. {illusion_code-0.2.11 → illusion_code-0.2.12}/src/illusion/state/app_state.py +0 -0
  331. {illusion_code-0.2.11 → illusion_code-0.2.12}/src/illusion/state/store.py +0 -0
  332. {illusion_code-0.2.11 → illusion_code-0.2.12}/src/illusion/swarm/__init__.py +0 -0
  333. {illusion_code-0.2.11 → illusion_code-0.2.12}/src/illusion/swarm/agent_executor.py +0 -0
  334. {illusion_code-0.2.11 → illusion_code-0.2.12}/src/illusion/swarm/in_process.py +0 -0
  335. {illusion_code-0.2.11 → illusion_code-0.2.12}/src/illusion/swarm/subprocess_backend.py +0 -0
  336. {illusion_code-0.2.11 → illusion_code-0.2.12}/src/illusion/swarm/team_helpers.py +0 -0
  337. {illusion_code-0.2.11 → illusion_code-0.2.12}/src/illusion/swarm/types.py +0 -0
  338. {illusion_code-0.2.11 → illusion_code-0.2.12}/src/illusion/swarm/worktree.py +0 -0
  339. {illusion_code-0.2.11 → illusion_code-0.2.12}/src/illusion/tasks/__init__.py +0 -0
  340. {illusion_code-0.2.11 → illusion_code-0.2.12}/src/illusion/tasks/local_agent_task.py +0 -0
  341. {illusion_code-0.2.11 → illusion_code-0.2.12}/src/illusion/tasks/local_shell_task.py +0 -0
  342. {illusion_code-0.2.11 → illusion_code-0.2.12}/src/illusion/tasks/manager.py +0 -0
  343. {illusion_code-0.2.11 → illusion_code-0.2.12}/src/illusion/tasks/stop_task.py +0 -0
  344. {illusion_code-0.2.11 → illusion_code-0.2.12}/src/illusion/tasks/todo_sync.py +0 -0
  345. {illusion_code-0.2.11 → illusion_code-0.2.12}/src/illusion/tasks/types.py +0 -0
  346. {illusion_code-0.2.11 → illusion_code-0.2.12}/src/illusion/tools/__init__.py +0 -0
  347. {illusion_code-0.2.11 → illusion_code-0.2.12}/src/illusion/tools/agent_tool.py +0 -0
  348. {illusion_code-0.2.11 → illusion_code-0.2.12}/src/illusion/tools/ask_user_question_tool.py +0 -0
  349. {illusion_code-0.2.11 → illusion_code-0.2.12}/src/illusion/tools/base.py +0 -0
  350. {illusion_code-0.2.11 → illusion_code-0.2.12}/src/illusion/tools/bash_tool.py +0 -0
  351. {illusion_code-0.2.11 → illusion_code-0.2.12}/src/illusion/tools/config_tool.py +0 -0
  352. {illusion_code-0.2.11 → illusion_code-0.2.12}/src/illusion/tools/enter_plan_mode_tool.py +0 -0
  353. {illusion_code-0.2.11 → illusion_code-0.2.12}/src/illusion/tools/enter_worktree_tool.py +0 -0
  354. {illusion_code-0.2.11 → illusion_code-0.2.12}/src/illusion/tools/exit_plan_mode_tool.py +0 -0
  355. {illusion_code-0.2.11 → illusion_code-0.2.12}/src/illusion/tools/exit_worktree_tool.py +0 -0
  356. {illusion_code-0.2.11 → illusion_code-0.2.12}/src/illusion/tools/file_edit_tool.py +0 -0
  357. {illusion_code-0.2.11 → illusion_code-0.2.12}/src/illusion/tools/file_read_tool.py +0 -0
  358. {illusion_code-0.2.11 → illusion_code-0.2.12}/src/illusion/tools/file_write_tool.py +0 -0
  359. {illusion_code-0.2.11 → illusion_code-0.2.12}/src/illusion/tools/glob_tool.py +0 -0
  360. {illusion_code-0.2.11 → illusion_code-0.2.12}/src/illusion/tools/grep_tool.py +0 -0
  361. {illusion_code-0.2.11 → illusion_code-0.2.12}/src/illusion/tools/list_mcp_resources_tool.py +0 -0
  362. {illusion_code-0.2.11 → illusion_code-0.2.12}/src/illusion/tools/lsp_formatters.py +0 -0
  363. {illusion_code-0.2.11 → illusion_code-0.2.12}/src/illusion/tools/lsp_schemas.py +0 -0
  364. {illusion_code-0.2.11 → illusion_code-0.2.12}/src/illusion/tools/lsp_tool.py +0 -0
  365. {illusion_code-0.2.11 → illusion_code-0.2.12}/src/illusion/tools/mcp_auth_tool.py +0 -0
  366. {illusion_code-0.2.11 → illusion_code-0.2.12}/src/illusion/tools/mcp_tool.py +0 -0
  367. {illusion_code-0.2.11 → illusion_code-0.2.12}/src/illusion/tools/notebook_edit_tool.py +0 -0
  368. {illusion_code-0.2.11 → illusion_code-0.2.12}/src/illusion/tools/powershell_tool.py +0 -0
  369. {illusion_code-0.2.11 → illusion_code-0.2.12}/src/illusion/tools/read_mcp_resource_tool.py +0 -0
  370. {illusion_code-0.2.11 → illusion_code-0.2.12}/src/illusion/tools/repl_tool.py +0 -0
  371. {illusion_code-0.2.11 → illusion_code-0.2.12}/src/illusion/tools/send_message_tool.py +0 -0
  372. {illusion_code-0.2.11 → illusion_code-0.2.12}/src/illusion/tools/shell_common.py +0 -0
  373. {illusion_code-0.2.11 → illusion_code-0.2.12}/src/illusion/tools/skill_tool.py +0 -0
  374. {illusion_code-0.2.11 → illusion_code-0.2.12}/src/illusion/tools/sleep_tool.py +0 -0
  375. {illusion_code-0.2.11 → illusion_code-0.2.12}/src/illusion/tools/structured_output_tool.py +0 -0
  376. {illusion_code-0.2.11 → illusion_code-0.2.12}/src/illusion/tools/task_create_tool.py +0 -0
  377. {illusion_code-0.2.11 → illusion_code-0.2.12}/src/illusion/tools/task_get_tool.py +0 -0
  378. {illusion_code-0.2.11 → illusion_code-0.2.12}/src/illusion/tools/task_list_tool.py +0 -0
  379. {illusion_code-0.2.11 → illusion_code-0.2.12}/src/illusion/tools/task_output_tool.py +0 -0
  380. {illusion_code-0.2.11 → illusion_code-0.2.12}/src/illusion/tools/task_stop_tool.py +0 -0
  381. {illusion_code-0.2.11 → illusion_code-0.2.12}/src/illusion/tools/task_update_tool.py +0 -0
  382. {illusion_code-0.2.11 → illusion_code-0.2.12}/src/illusion/tools/team_create_tool.py +0 -0
  383. {illusion_code-0.2.11 → illusion_code-0.2.12}/src/illusion/tools/team_delete_tool.py +0 -0
  384. {illusion_code-0.2.11 → illusion_code-0.2.12}/src/illusion/tools/todo_write_tool.py +0 -0
  385. {illusion_code-0.2.11 → illusion_code-0.2.12}/src/illusion/tools/tool_search_tool.py +0 -0
  386. {illusion_code-0.2.11 → illusion_code-0.2.12}/src/illusion/tools/web_fetch_tool.py +0 -0
  387. {illusion_code-0.2.11 → illusion_code-0.2.12}/src/illusion/tools/web_search_tool.py +0 -0
  388. {illusion_code-0.2.11 → illusion_code-0.2.12}/src/illusion/ui/__init__.py +0 -0
  389. {illusion_code-0.2.11 → illusion_code-0.2.12}/src/illusion/ui/app.py +0 -0
  390. {illusion_code-0.2.11 → illusion_code-0.2.12}/src/illusion/ui/backend_host.py +0 -0
  391. {illusion_code-0.2.11 → illusion_code-0.2.12}/src/illusion/ui/input.py +0 -0
  392. {illusion_code-0.2.11 → illusion_code-0.2.12}/src/illusion/ui/output.py +0 -0
  393. {illusion_code-0.2.11 → illusion_code-0.2.12}/src/illusion/ui/permission_dialog.py +0 -0
  394. {illusion_code-0.2.11 → illusion_code-0.2.12}/src/illusion/ui/permission_store.py +0 -0
  395. {illusion_code-0.2.11 → illusion_code-0.2.12}/src/illusion/ui/protocol.py +0 -0
  396. {illusion_code-0.2.11 → illusion_code-0.2.12}/src/illusion/ui/react_launcher.py +0 -0
  397. {illusion_code-0.2.11 → illusion_code-0.2.12}/src/illusion/ui/runtime.py +0 -0
  398. {illusion_code-0.2.11 → illusion_code-0.2.12}/src/illusion/ui/textual_app.py +0 -0
  399. {illusion_code-0.2.11 → illusion_code-0.2.12}/src/illusion/ui/web/__init__.py +0 -0
  400. {illusion_code-0.2.11 → illusion_code-0.2.12}/src/illusion/ui/web/server.py +0 -0
  401. {illusion_code-0.2.11 → illusion_code-0.2.12}/src/illusion/ui/web/ws_host.py +0 -0
  402. {illusion_code-0.2.11 → illusion_code-0.2.12}/src/illusion/ui/web/ws_web_api.py +0 -0
  403. {illusion_code-0.2.11 → illusion_code-0.2.12}/src/illusion/utils/__init__.py +0 -0
  404. {illusion_code-0.2.11 → illusion_code-0.2.12}/src/illusion/utils/atomic_write.py +0 -0
  405. {illusion_code-0.2.11 → illusion_code-0.2.12}/src/illusion/utils/file_state_cache.py +0 -0
  406. {illusion_code-0.2.11 → illusion_code-0.2.12}/src/illusion/utils/ripgrep.py +0 -0
  407. {illusion_code-0.2.11 → illusion_code-0.2.12}/src/illusion/utils/shell.py +0 -0
  408. {illusion_code-0.2.11 → illusion_code-0.2.12}/tests/__init__.py +0 -0
  409. {illusion_code-0.2.11 → illusion_code-0.2.12}/tests/api/test_anthropic_client.py +0 -0
  410. {illusion_code-0.2.11 → illusion_code-0.2.12}/tests/api/test_client.py +0 -0
  411. {illusion_code-0.2.11 → illusion_code-0.2.12}/tests/api/test_codex_client.py +0 -0
  412. {illusion_code-0.2.11 → illusion_code-0.2.12}/tests/api/test_effort.py +0 -0
  413. {illusion_code-0.2.11 → illusion_code-0.2.12}/tests/api/test_fallback/346/217/220/347/244/272.py" +0 -0
  414. {illusion_code-0.2.11 → illusion_code-0.2.12}/tests/api/test_openai_client.py +0 -0
  415. {illusion_code-0.2.11 → illusion_code-0.2.12}/tests/channels/__init__.py +0 -0
  416. {illusion_code-0.2.11 → illusion_code-0.2.12}/tests/channels/feishu/__init__.py +0 -0
  417. {illusion_code-0.2.11 → illusion_code-0.2.12}/tests/channels/feishu/test_adapter.py +0 -0
  418. {illusion_code-0.2.11 → illusion_code-0.2.12}/tests/channels/feishu/test_commands.py +0 -0
  419. {illusion_code-0.2.11 → illusion_code-0.2.12}/tests/channels/feishu/test_session_map.py +0 -0
  420. {illusion_code-0.2.11 → illusion_code-0.2.12}/tests/channels/test_base.py +0 -0
  421. {illusion_code-0.2.11 → illusion_code-0.2.12}/tests/channels/test_base_commands.py +0 -0
  422. {illusion_code-0.2.11 → illusion_code-0.2.12}/tests/channels/test_config.py +0 -0
  423. {illusion_code-0.2.11 → illusion_code-0.2.12}/tests/channels/test_pid.py +0 -0
  424. {illusion_code-0.2.11 → illusion_code-0.2.12}/tests/channels/test_registry.py +0 -0
  425. {illusion_code-0.2.11 → illusion_code-0.2.12}/tests/channels/test_session_persist.py +0 -0
  426. {illusion_code-0.2.11 → illusion_code-0.2.12}/tests/channels/test_supervise.py +0 -0
  427. {illusion_code-0.2.11 → illusion_code-0.2.12}/tests/channels/test_tool_registration.py +0 -0
  428. {illusion_code-0.2.11 → illusion_code-0.2.12}/tests/channels/tools/__init__.py +0 -0
  429. {illusion_code-0.2.11 → illusion_code-0.2.12}/tests/channels/tools/test_feishu_doc.py +0 -0
  430. {illusion_code-0.2.11 → illusion_code-0.2.12}/tests/channels/tools/test_feishu_drive.py +0 -0
  431. {illusion_code-0.2.11 → illusion_code-0.2.12}/tests/channels/weixin/__init__.py +0 -0
  432. {illusion_code-0.2.11 → illusion_code-0.2.12}/tests/channels/weixin/test_adapter.py +0 -0
  433. {illusion_code-0.2.11 → illusion_code-0.2.12}/tests/channels/weixin/test_config.py +0 -0
  434. {illusion_code-0.2.11 → illusion_code-0.2.12}/tests/channels/weixin/test_ilink_api.py +0 -0
  435. {illusion_code-0.2.11 → illusion_code-0.2.12}/tests/channels/weixin/test_ilink_retry.py +0 -0
  436. {illusion_code-0.2.11 → illusion_code-0.2.12}/tests/channels/weixin/test_session_map.py +0 -0
  437. {illusion_code-0.2.11 → illusion_code-0.2.12}/tests/commands/init/__init__.py +0 -0
  438. {illusion_code-0.2.11 → illusion_code-0.2.12}/tests/commands/init/test_claudemd.py +0 -0
  439. {illusion_code-0.2.11 → illusion_code-0.2.12}/tests/commands/init/test_orchestrator.py +0 -0
  440. {illusion_code-0.2.11 → illusion_code-0.2.12}/tests/commands/init/test_scanner.py +0 -0
  441. {illusion_code-0.2.11 → illusion_code-0.2.12}/tests/commands/init/test_sections.py +0 -0
  442. {illusion_code-0.2.11 → illusion_code-0.2.12}/tests/commands/test_effort_command.py +0 -0
  443. {illusion_code-0.2.11 → illusion_code-0.2.12}/tests/config/test_i18n.py +0 -0
  444. {illusion_code-0.2.11 → illusion_code-0.2.12}/tests/config/test_settings.py +0 -0
  445. {illusion_code-0.2.11 → illusion_code-0.2.12}/tests/conftest.py +0 -0
  446. {illusion_code-0.2.11 → illusion_code-0.2.12}/tests/engine/test_query_engine.py +0 -0
  447. {illusion_code-0.2.11 → illusion_code-0.2.12}/tests/fixtures/fake_mcp_server.py +0 -0
  448. {illusion_code-0.2.11 → illusion_code-0.2.12}/tests/integration/test_effort_integration.py +0 -0
  449. {illusion_code-0.2.11 → illusion_code-0.2.12}/tests/services/lsp/test_lsp_client.py +0 -0
  450. {illusion_code-0.2.11 → illusion_code-0.2.12}/tests/services/lsp/test_lsp_config.py +0 -0
  451. {illusion_code-0.2.11 → illusion_code-0.2.12}/tests/services/lsp/test_lsp_manager.py +0 -0
  452. {illusion_code-0.2.11 → illusion_code-0.2.12}/tests/services/lsp/test_lsp_types.py +0 -0
  453. {illusion_code-0.2.11 → illusion_code-0.2.12}/tests/test_api/__init__.py +0 -0
  454. {illusion_code-0.2.11 → illusion_code-0.2.12}/tests/test_api/test_client.py +0 -0
  455. {illusion_code-0.2.11 → illusion_code-0.2.12}/tests/test_api/test_codex_client.py +0 -0
  456. {illusion_code-0.2.11 → illusion_code-0.2.12}/tests/test_api/test_compat.py +0 -0
  457. {illusion_code-0.2.11 → illusion_code-0.2.12}/tests/test_api/test_openai_client.py +0 -0
  458. {illusion_code-0.2.11 → illusion_code-0.2.12}/tests/test_auth/test_external.py +0 -0
  459. {illusion_code-0.2.11 → illusion_code-0.2.12}/tests/test_bridge/test_core.py +0 -0
  460. {illusion_code-0.2.11 → illusion_code-0.2.12}/tests/test_bridge/test_session_flow.py +0 -0
  461. {illusion_code-0.2.11 → illusion_code-0.2.12}/tests/test_commands/__init__.py +0 -0
  462. {illusion_code-0.2.11 → illusion_code-0.2.12}/tests/test_commands/test_cli.py +0 -0
  463. {illusion_code-0.2.11 → illusion_code-0.2.12}/tests/test_commands/test_command_flows.py +0 -0
  464. {illusion_code-0.2.11 → illusion_code-0.2.12}/tests/test_commands/test_registry.py +0 -0
  465. {illusion_code-0.2.11 → illusion_code-0.2.12}/tests/test_config/__init__.py +0 -0
  466. {illusion_code-0.2.11 → illusion_code-0.2.12}/tests/test_config/test_paths.py +0 -0
  467. {illusion_code-0.2.11 → illusion_code-0.2.12}/tests/test_config/test_settings.py +0 -0
  468. {illusion_code-0.2.11 → illusion_code-0.2.12}/tests/test_coordinator/test_agent_definitions.py +0 -0
  469. {illusion_code-0.2.11 → illusion_code-0.2.12}/tests/test_coordinator/test_coordinator_mode.py +0 -0
  470. {illusion_code-0.2.11 → illusion_code-0.2.12}/tests/test_engine/__init__.py +0 -0
  471. {illusion_code-0.2.11 → illusion_code-0.2.12}/tests/test_engine/test_media_block.py +0 -0
  472. {illusion_code-0.2.11 → illusion_code-0.2.12}/tests/test_engine/test_query_engine.py +0 -0
  473. {illusion_code-0.2.11 → illusion_code-0.2.12}/tests/test_engine/test_tool_result_media.py +0 -0
  474. {illusion_code-0.2.11 → illusion_code-0.2.12}/tests/test_hooks/__init__.py +0 -0
  475. {illusion_code-0.2.11 → illusion_code-0.2.12}/tests/test_hooks/test_executor.py +0 -0
  476. {illusion_code-0.2.11 → illusion_code-0.2.12}/tests/test_hooks/test_loader_permissions.py +0 -0
  477. {illusion_code-0.2.11 → illusion_code-0.2.12}/tests/test_hooks_skills_plugins_real.py +0 -0
  478. {illusion_code-0.2.11 → illusion_code-0.2.12}/tests/test_mcp/__init__.py +0 -0
  479. {illusion_code-0.2.11 → illusion_code-0.2.12}/tests/test_mcp/test_config_permissions.py +0 -0
  480. {illusion_code-0.2.11 → illusion_code-0.2.12}/tests/test_mcp/test_integration.py +0 -0
  481. {illusion_code-0.2.11 → illusion_code-0.2.12}/tests/test_mcp/test_stdio_flow.py +0 -0
  482. {illusion_code-0.2.11 → illusion_code-0.2.12}/tests/test_memory/__init__.py +0 -0
  483. {illusion_code-0.2.11 → illusion_code-0.2.12}/tests/test_memory/test_manager_permissions.py +0 -0
  484. {illusion_code-0.2.11 → illusion_code-0.2.12}/tests/test_memory/test_memdir.py +0 -0
  485. {illusion_code-0.2.11 → illusion_code-0.2.12}/tests/test_merged_prs_on_autoagent.py +0 -0
  486. {illusion_code-0.2.11 → illusion_code-0.2.12}/tests/test_permissions/__init__.py +0 -0
  487. {illusion_code-0.2.11 → illusion_code-0.2.12}/tests/test_permissions/test_checker.py +0 -0
  488. {illusion_code-0.2.11 → illusion_code-0.2.12}/tests/test_permissions/test_loader.py +0 -0
  489. {illusion_code-0.2.11 → illusion_code-0.2.12}/tests/test_permissions/test_project_permissions.py +0 -0
  490. {illusion_code-0.2.11 → illusion_code-0.2.12}/tests/test_platforms.py +0 -0
  491. {illusion_code-0.2.11 → illusion_code-0.2.12}/tests/test_plugins/__init__.py +0 -0
  492. {illusion_code-0.2.11 → illusion_code-0.2.12}/tests/test_plugins/test_lifecycle_flow.py +0 -0
  493. {illusion_code-0.2.11 → illusion_code-0.2.12}/tests/test_plugins/test_loader.py +0 -0
  494. {illusion_code-0.2.11 → illusion_code-0.2.12}/tests/test_plugins/test_loader_permissions.py +0 -0
  495. {illusion_code-0.2.11 → illusion_code-0.2.12}/tests/test_prompts/__init__.py +0 -0
  496. {illusion_code-0.2.11 → illusion_code-0.2.12}/tests/test_prompts/test_claudemd.py +0 -0
  497. {illusion_code-0.2.11 → illusion_code-0.2.12}/tests/test_prompts/test_claudemd_permissions.py +0 -0
  498. {illusion_code-0.2.11 → illusion_code-0.2.12}/tests/test_prompts/test_environment.py +0 -0
  499. {illusion_code-0.2.11 → illusion_code-0.2.12}/tests/test_prompts/test_system_prompt.py +0 -0
  500. {illusion_code-0.2.11 → illusion_code-0.2.12}/tests/test_qq_channel.py +0 -0
  501. {illusion_code-0.2.11 → illusion_code-0.2.12}/tests/test_real_large_tasks.py +0 -0
  502. {illusion_code-0.2.11 → illusion_code-0.2.12}/tests/test_sandbox/test_adapter.py +0 -0
  503. {illusion_code-0.2.11 → illusion_code-0.2.12}/tests/test_sandbox/test_config_schema.py +0 -0
  504. {illusion_code-0.2.11 → illusion_code-0.2.12}/tests/test_sandbox/test_platform_linux.py +0 -0
  505. {illusion_code-0.2.11 → illusion_code-0.2.12}/tests/test_sandbox/test_platform_macos.py +0 -0
  506. {illusion_code-0.2.11 → illusion_code-0.2.12}/tests/test_sandbox/test_platform_windows.py +0 -0
  507. {illusion_code-0.2.11 → illusion_code-0.2.12}/tests/test_sandbox/test_proxy_env_vars.py +0 -0
  508. {illusion_code-0.2.11 → illusion_code-0.2.12}/tests/test_sandbox/test_runtime.py +0 -0
  509. {illusion_code-0.2.11 → illusion_code-0.2.12}/tests/test_sandbox/test_symlink_protection.py +0 -0
  510. {illusion_code-0.2.11 → illusion_code-0.2.12}/tests/test_sandbox/test_utils.py +0 -0
  511. {illusion_code-0.2.11 → illusion_code-0.2.12}/tests/test_sandbox/test_violation_store.py +0 -0
  512. {illusion_code-0.2.11 → illusion_code-0.2.12}/tests/test_scripts/test_sync_version.py +0 -0
  513. {illusion_code-0.2.11 → illusion_code-0.2.12}/tests/test_services/test_compact.py +0 -0
  514. {illusion_code-0.2.11 → illusion_code-0.2.12}/tests/test_services/test_cron.py +0 -0
  515. {illusion_code-0.2.11 → illusion_code-0.2.12}/tests/test_services/test_session_storage.py +0 -0
  516. {illusion_code-0.2.11 → illusion_code-0.2.12}/tests/test_skills/test_loader.py +0 -0
  517. {illusion_code-0.2.11 → illusion_code-0.2.12}/tests/test_skills/test_loader_permissions.py +0 -0
  518. {illusion_code-0.2.11 → illusion_code-0.2.12}/tests/test_swarm/__init__.py +0 -0
  519. {illusion_code-0.2.11 → illusion_code-0.2.12}/tests/test_swarm/test_agent_executor.py +0 -0
  520. {illusion_code-0.2.11 → illusion_code-0.2.12}/tests/test_swarm/test_imports.py +0 -0
  521. {illusion_code-0.2.11 → illusion_code-0.2.12}/tests/test_swarm/test_in_process.py +0 -0
  522. {illusion_code-0.2.11 → illusion_code-0.2.12}/tests/test_swarm/test_types.py +0 -0
  523. {illusion_code-0.2.11 → illusion_code-0.2.12}/tests/test_swarm/test_worktree.py +0 -0
  524. {illusion_code-0.2.11 → illusion_code-0.2.12}/tests/test_tasks/test_manager.py +0 -0
  525. {illusion_code-0.2.11 → illusion_code-0.2.12}/tests/test_tools/__init__.py +0 -0
  526. {illusion_code-0.2.11 → illusion_code-0.2.12}/tests/test_tools/test_agent_tool.py +0 -0
  527. {illusion_code-0.2.11 → illusion_code-0.2.12}/tests/test_tools/test_core_tools.py +0 -0
  528. {illusion_code-0.2.11 → illusion_code-0.2.12}/tests/test_tools/test_file_read_media.py +0 -0
  529. {illusion_code-0.2.11 → illusion_code-0.2.12}/tests/test_tools/test_glob_tool.py +0 -0
  530. {illusion_code-0.2.11 → illusion_code-0.2.12}/tests/test_tools/test_grep_tool.py +0 -0
  531. {illusion_code-0.2.11 → illusion_code-0.2.12}/tests/test_tools/test_integration.py +0 -0
  532. {illusion_code-0.2.11 → illusion_code-0.2.12}/tests/test_tools/test_integration_flows.py +0 -0
  533. {illusion_code-0.2.11 → illusion_code-0.2.12}/tests/test_tools/test_mcp_auth_tool.py +0 -0
  534. {illusion_code-0.2.11 → illusion_code-0.2.12}/tests/test_tools/test_ripgrep.py +0 -0
  535. {illusion_code-0.2.11 → illusion_code-0.2.12}/tests/test_tools/test_shell_common.py +0 -0
  536. {illusion_code-0.2.11 → illusion_code-0.2.12}/tests/test_tools/test_task_tools.py +0 -0
  537. {illusion_code-0.2.11 → illusion_code-0.2.12}/tests/test_tools/test_team_tools.py +0 -0
  538. {illusion_code-0.2.11 → illusion_code-0.2.12}/tests/test_tools/test_web_fetch_tool.py +0 -0
  539. {illusion_code-0.2.11 → illusion_code-0.2.12}/tests/test_ui/__init__.py +0 -0
  540. {illusion_code-0.2.11 → illusion_code-0.2.12}/tests/test_ui/test_modes.py +0 -0
  541. {illusion_code-0.2.11 → illusion_code-0.2.12}/tests/test_ui/test_permission_store.py +0 -0
  542. {illusion_code-0.2.11 → illusion_code-0.2.12}/tests/test_ui/test_react_backend.py +0 -0
  543. {illusion_code-0.2.11 → illusion_code-0.2.12}/tests/test_ui/test_react_launcher.py +0 -0
  544. {illusion_code-0.2.11 → illusion_code-0.2.12}/tests/test_ui/test_textual_app.py +0 -0
  545. {illusion_code-0.2.11 → illusion_code-0.2.12}/tests/test_untested_features.py +0 -0
  546. {illusion_code-0.2.11 → illusion_code-0.2.12}/tests/test_utils/test_shell.py +0 -0
  547. {illusion_code-0.2.11 → illusion_code-0.2.12}/tests/ui/test_backend_host.py +0 -0
  548. {illusion_code-0.2.11 → illusion_code-0.2.12}/tests/ui/test_protocol_web.py +0 -0
  549. {illusion_code-0.2.11 → illusion_code-0.2.12}/tests/ui/test_web_api.py +0 -0
  550. {illusion_code-0.2.11 → illusion_code-0.2.12}/tests/unit/__init__.py +0 -0
  551. {illusion_code-0.2.11 → illusion_code-0.2.12}/tests/unit/test_channel_hints.py +0 -0
  552. {illusion_code-0.2.11 → illusion_code-0.2.12}/tests/unit/test_cross_channel.py +0 -0
  553. {illusion_code-0.2.11 → illusion_code-0.2.12}/tests/unit/test_feishu_streaming.py +0 -0
  554. {illusion_code-0.2.11 → illusion_code-0.2.12}/tests/unit/test_media_tools.py +0 -0
  555. {illusion_code-0.2.11 → illusion_code-0.2.12}/tests/unit/test_qq_streaming.py +0 -0
  556. {illusion_code-0.2.11 → illusion_code-0.2.12}/tests/unit/test_session_list_active.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: illusion-code
3
- Version: 0.2.11
3
+ Version: 0.2.12
4
4
  Summary: Open-source Python port of Claude Code - an AI-powered CLI coding assistant
5
5
  Project-URL: Homepage, https://github.com/YunTaiHua/illusion-code
6
6
  Project-URL: Repository, https://github.com/YunTaiHua/illusion-code
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "@illusion/terminal",
3
- "version": "0.2.11",
3
+ "version": "0.2.12",
4
4
  "lockfileVersion": 3,
5
5
  "requires": true,
6
6
  "packages": {
7
7
  "": {
8
8
  "name": "@illusion/terminal",
9
- "version": "0.2.11",
9
+ "version": "0.2.12",
10
10
  "dependencies": {
11
11
  "chalk": "^5.6.2",
12
12
  "ink": "^5.1.0",
@@ -24,5 +24,5 @@
24
24
  "tsx": "^4.19.2",
25
25
  "typescript": "^5.7.3"
26
26
  },
27
- "version": "0.2.11"
27
+ "version": "0.2.12"
28
28
  }
@@ -6,4 +6,4 @@
6
6
  */
7
7
 
8
8
  /** 当前版本号 */
9
- export const VERSION = '0.2.11';
9
+ export const VERSION = '0.2.12';
@@ -1,12 +1,12 @@
1
1
  {
2
2
  "name": "@illusion/web",
3
- "version": "0.2.11",
3
+ "version": "0.2.12",
4
4
  "lockfileVersion": 3,
5
5
  "requires": true,
6
6
  "packages": {
7
7
  "": {
8
8
  "name": "@illusion/web",
9
- "version": "0.2.11",
9
+ "version": "0.2.12",
10
10
  "dependencies": {
11
11
  "highlight.js": "^11.11.0",
12
12
  "react": "^18.3.1",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@illusion/web",
3
- "version": "0.2.11",
3
+ "version": "0.2.12",
4
4
  "private": true,
5
5
  "type": "module",
6
6
  "scripts": {
@@ -6,4 +6,4 @@
6
6
  */
7
7
 
8
8
  /** 当前版本号 */
9
- export const VERSION = '0.2.11';
9
+ export const VERSION = '0.2.12';
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "illusion-code"
7
- version = "0.2.11"
7
+ version = "0.2.12"
8
8
  description = "Open-source Python port of Claude Code - an AI-powered CLI coding assistant"
9
9
  readme = "README.md"
10
10
  license = "MIT"
@@ -23,4 +23,4 @@ IllusionCode 是一个 AI 驱动的编程助手,提供交互式会话和命令
23
23
 
24
24
  from __future__ import annotations
25
25
 
26
- __version__ = "0.2.11"
26
+ __version__ = "0.2.12"
@@ -21,6 +21,7 @@ from typing import TYPE_CHECKING, Any, cast
21
21
 
22
22
  from illusion.channels.config import load_channels_config
23
23
  from illusion.utils.atomic_write import atomic_write_text
24
+ from illusion.utils.ref_count import add_ref
24
25
 
25
26
  if TYPE_CHECKING:
26
27
  from illusion.channels.base import Channel, InboundMessage
@@ -88,7 +89,9 @@ def maybe_spawn_channel_daemon() -> subprocess.Popen[bytes] | None:
88
89
  except (FileNotFoundError, OSError):
89
90
  pass
90
91
  if stored_fp == current_fp:
91
- return None # 配置未变,跳过
92
+ # 配置未变,跳过 spawn,但追加引用
93
+ add_ref(data_dir / "daemon.refs", os.getpid())
94
+ return None
92
95
 
93
96
  # 配置已变,终止旧守护进程后重启(is_running 已确认存活)
94
97
  from illusion.channels.pid import read_pid
@@ -140,6 +143,7 @@ def maybe_spawn_channel_daemon() -> subprocess.Popen[bytes] | None:
140
143
  )
141
144
  pid_file.acquire(proc.pid)
142
145
  atomic_write_text(fingerprint_path, current_fp)
146
+ add_ref(data_dir / "daemon.refs", os.getpid())
143
147
  return proc
144
148
  except OSError as exc:
145
149
  logger.warning("启动渠道守护进程失败: %s", exc)
@@ -147,32 +151,23 @@ def maybe_spawn_channel_daemon() -> subprocess.Popen[bytes] | None:
147
151
 
148
152
 
149
153
  def kill_channel_daemon(proc: "subprocess.Popen[bytes] | None") -> None:
150
- """终止渠道守护进程子进程并释放 PID 文件。
154
+ """已废弃的渠道守护进程终止函数(noop)
151
155
 
152
- 供主命令(`illusion`)和 web 命令(`illusion web`)在退出时调用,
153
- 确保 ctrl+c / 正常退出后清理守护进程,避免孤儿进程。
154
-
155
- 幂等:proc None 或已退出时仅尝试释放 PID 文件。
156
+ .. deprecated::
157
+ 此函数为向后兼容保留。新方案采用引用计数:
158
+ 主程序退出时调用 remove_ref,守护进程自监控 refs 为空时自动退出。
159
+ 不再需要主动 kill 守护进程。
156
160
 
157
161
  Args:
158
- proc: `maybe_spawn_channel_daemon` 返回的 Popen 实例;None 时仅清 PID 文件
162
+ proc: 已废弃,忽略不处理
159
163
  """
160
- try:
161
- if proc is not None and proc.poll() is None:
162
- proc.terminate()
163
- try:
164
- proc.wait(timeout=3)
165
- except Exception: # noqa: BLE001
166
- proc.kill()
167
- except Exception: # noqa: BLE001
168
- pass
169
- finally:
170
- try:
171
- from illusion.channels.pid import PidFile
172
- from illusion.config.paths import get_channels_data_dir
173
- PidFile(get_channels_data_dir() / "daemon.pid").release()
174
- except Exception: # noqa: BLE001
175
- pass
164
+ import warnings
165
+ warnings.warn(
166
+ "kill_channel_daemon() 已废弃,请使用 remove_ref + 引用计数机制",
167
+ DeprecationWarning,
168
+ stacklevel=2,
169
+ )
170
+ return
176
171
 
177
172
 
178
173
  def is_channel_daemon_running() -> bool:
@@ -180,6 +175,10 @@ def is_channel_daemon_running() -> bool:
180
175
 
181
176
  用于退出时判断是否需要询问用户是否一同退出渠道。
182
177
 
178
+ Note:
179
+ 新方案采用引用计数后,此函数仅用于诊断/查询。
180
+ 退出处理已改为 remove_ref + 自监控,不再依赖此函数。
181
+
183
182
  Returns:
184
183
  bool: 守护进程在运行返回 True
185
184
  """
@@ -190,51 +189,23 @@ def is_channel_daemon_running() -> bool:
190
189
 
191
190
 
192
191
  def stop_channel_daemon_by_pid() -> bool:
193
- """通过 PID 文件停止渠道守护进程(不依赖 proc 引用)
192
+ """已废弃的渠道守护进程停止函数(noop)
194
193
 
195
- 供退出时交互式确认使用:无论当前进程是否是 spawn 者,
196
- 都可以通过 PID 文件停止守护进程。
197
-
198
- Windows 上用 taskkill /T /F 终止整个进程树(守护进程可能 spawn 了
199
- aiohttp/WS 子线程,单独 TerminateProcess 可能留下孤儿线程)。
200
- Unix 上用 SIGTERM 终止进程组。
194
+ .. deprecated::
195
+ 此函数为向后兼容保留。新方案采用引用计数:
196
+ 守护进程通过自监控 refs 为空时自动退出,
197
+ 不再需要通过 PID 主动停止。
201
198
 
202
199
  Returns:
203
- bool: 成功停止返回 True,守护进程不存在或已停止返回 False
200
+ bool: 始终返回 False
204
201
  """
205
- from illusion.config.paths import get_channels_data_dir
206
- from illusion.channels.pid import PidFile, read_pid
207
-
208
- pid_file = PidFile(get_channels_data_dir() / "daemon.pid")
209
- if not pid_file.is_running():
210
- pid_file.release()
211
- return False
212
-
213
- old_pid = read_pid(pid_file.path)
214
- if old_pid is not None:
215
- try:
216
- if os.name == "nt":
217
- # Windows: 用 taskkill /T /F 终止整个进程树
218
- # /T = 终止子进程,/F = 强制终止
219
- import subprocess as _sp
220
- _sp.run(
221
- ["taskkill", "/PID", str(old_pid), "/T", "/F"],
222
- capture_output=True, timeout=5,
223
- )
224
- else:
225
- # Unix: 用 SIGTERM 终止进程组
226
- import signal
227
- os.kill(old_pid, signal.SIGTERM)
228
- except (OSError, ProcessLookupError, Exception): # noqa: BLE001
229
- pass
230
- # 等待进程退出,最多 3 秒
231
- for _ in range(30):
232
- if not pid_file.is_running():
233
- break
234
- import time as _time
235
- _time.sleep(0.1)
236
- pid_file.release()
237
- return True
202
+ import warnings
203
+ warnings.warn(
204
+ "stop_channel_daemon_by_pid() 已废弃,请使用 remove_ref + 引用计数机制",
205
+ DeprecationWarning,
206
+ stacklevel=2,
207
+ )
208
+ return False
238
209
 
239
210
 
240
211
  class ChannelRunner: