illusion-code 0.1.3__tar.gz → 0.1.4__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 (432) hide show
  1. {illusion_code-0.1.3 → illusion_code-0.1.4}/PKG-INFO +210 -44
  2. {illusion_code-0.1.3 → illusion_code-0.1.4}/README.md +209 -43
  3. {illusion_code-0.1.3 → illusion_code-0.1.4}/README.zh-CN.md +207 -41
  4. {illusion_code-0.1.3 → illusion_code-0.1.4}/frontend/terminal/package-lock.json +3 -1
  5. {illusion_code-0.1.3 → illusion_code-0.1.4}/frontend/terminal/package.json +2 -1
  6. {illusion_code-0.1.3 → illusion_code-0.1.4}/frontend/terminal/src/App.tsx +6 -3
  7. {illusion_code-0.1.3 → illusion_code-0.1.4}/frontend/terminal/src/components/ConversationView.tsx +49 -139
  8. {illusion_code-0.1.3 → illusion_code-0.1.4}/frontend/terminal/src/components/TodoPanel.tsx +13 -1
  9. illusion_code-0.1.4/frontend/terminal/src/components/ToolCallDisplay.tsx +116 -0
  10. illusion_code-0.1.4/frontend/terminal/src/hooks/useAnimationFrame.ts +63 -0
  11. {illusion_code-0.1.3 → illusion_code-0.1.4}/frontend/terminal/src/hooks/useBackendSession.ts +45 -0
  12. illusion_code-0.1.4/frontend/terminal/src/hooks/useBlink.ts +31 -0
  13. illusion_code-0.1.4/frontend/terminal/src/tools/ToolInterface.ts +62 -0
  14. illusion_code-0.1.4/frontend/terminal/src/tools/implementations/AgentTool.ts +63 -0
  15. illusion_code-0.1.4/frontend/terminal/src/tools/implementations/BashTool.ts +88 -0
  16. illusion_code-0.1.4/frontend/terminal/src/tools/implementations/CronTool.ts +23 -0
  17. illusion_code-0.1.4/frontend/terminal/src/tools/implementations/EditTool.ts +64 -0
  18. illusion_code-0.1.4/frontend/terminal/src/tools/implementations/GenericTool.ts +49 -0
  19. illusion_code-0.1.4/frontend/terminal/src/tools/implementations/LspTool.ts +35 -0
  20. illusion_code-0.1.4/frontend/terminal/src/tools/implementations/McpTool.ts +25 -0
  21. illusion_code-0.1.4/frontend/terminal/src/tools/implementations/NotebookTool.ts +25 -0
  22. illusion_code-0.1.4/frontend/terminal/src/tools/implementations/PlanTool.ts +21 -0
  23. illusion_code-0.1.4/frontend/terminal/src/tools/implementations/ReadTool.ts +74 -0
  24. illusion_code-0.1.4/frontend/terminal/src/tools/implementations/SearchTool.ts +97 -0
  25. illusion_code-0.1.4/frontend/terminal/src/tools/implementations/SkillTool.ts +22 -0
  26. illusion_code-0.1.4/frontend/terminal/src/tools/implementations/TaskTool.ts +35 -0
  27. illusion_code-0.1.4/frontend/terminal/src/tools/implementations/WebTool.ts +51 -0
  28. illusion_code-0.1.4/frontend/terminal/src/tools/implementations/WorktreeTool.ts +18 -0
  29. illusion_code-0.1.4/frontend/terminal/src/tools/implementations/WriteTool.ts +51 -0
  30. illusion_code-0.1.4/frontend/terminal/src/tools/registry.ts +189 -0
  31. {illusion_code-0.1.3 → illusion_code-0.1.4}/frontend/terminal/src/types.ts +20 -0
  32. illusion_code-0.1.4/frontend/terminal/src/version.ts +9 -0
  33. {illusion_code-0.1.3 → illusion_code-0.1.4}/frontend/web/package-lock.json +20 -2
  34. {illusion_code-0.1.3 → illusion_code-0.1.4}/frontend/web/package.json +2 -1
  35. illusion_code-0.1.4/frontend/web/src/version.ts +9 -0
  36. {illusion_code-0.1.3 → illusion_code-0.1.4}/frontend/web/tsconfig.json +2 -1
  37. illusion_code-0.1.4/frontend/web/tsconfig.node.json +13 -0
  38. illusion_code-0.1.4/frontend/web/vite.config.ts +32 -0
  39. {illusion_code-0.1.3 → illusion_code-0.1.4}/pyproject.toml +1 -1
  40. {illusion_code-0.1.3 → illusion_code-0.1.4}/scripts/hatch_build.py +19 -0
  41. {illusion_code-0.1.3 → illusion_code-0.1.4}/scripts/publish.py +0 -1
  42. illusion_code-0.1.4/scripts/sync_version.py +138 -0
  43. {illusion_code-0.1.3 → illusion_code-0.1.4}/src/illusion/__init__.py +1 -1
  44. {illusion_code-0.1.3 → illusion_code-0.1.4}/src/illusion/commands/session.py +27 -9
  45. {illusion_code-0.1.3 → illusion_code-0.1.4}/src/illusion/config/settings.py +1 -2
  46. {illusion_code-0.1.3 → illusion_code-0.1.4}/src/illusion/engine/query.py +64 -31
  47. {illusion_code-0.1.3 → illusion_code-0.1.4}/src/illusion/engine/query_engine.py +26 -1
  48. {illusion_code-0.1.3 → illusion_code-0.1.4}/src/illusion/engine/stream_events.py +22 -0
  49. illusion_code-0.1.4/src/illusion/hooks/__init__.py +59 -0
  50. illusion_code-0.1.4/src/illusion/hooks/events.py +43 -0
  51. illusion_code-0.1.4/src/illusion/hooks/executor.py +463 -0
  52. illusion_code-0.1.4/src/illusion/hooks/loader.py +115 -0
  53. illusion_code-0.1.4/src/illusion/hooks/register_hooks.py +58 -0
  54. illusion_code-0.1.4/src/illusion/hooks/schemas.py +129 -0
  55. illusion_code-0.1.4/src/illusion/hooks/session_hooks.py +116 -0
  56. illusion_code-0.1.4/src/illusion/hooks/types.py +168 -0
  57. illusion_code-0.1.4/src/illusion/hooks/utils.py +13 -0
  58. illusion_code-0.1.4/src/illusion/plugins/loader.py +278 -0
  59. illusion_code-0.1.4/src/illusion/plugins/options.py +45 -0
  60. illusion_code-0.1.4/src/illusion/plugins/schemas.py +31 -0
  61. {illusion_code-0.1.3 → illusion_code-0.1.4}/src/illusion/services/session_storage.py +40 -3
  62. illusion_code-0.1.4/src/illusion/skills/loader.py +270 -0
  63. illusion_code-0.1.4/src/illusion/skills/types.py +31 -0
  64. {illusion_code-0.1.3 → illusion_code-0.1.4}/src/illusion/swarm/agent_executor.py +11 -2
  65. illusion_code-0.1.4/src/illusion/tools/skill_tool.py +116 -0
  66. {illusion_code-0.1.3 → illusion_code-0.1.4}/src/illusion/ui/backend_host.py +104 -40
  67. {illusion_code-0.1.3 → illusion_code-0.1.4}/src/illusion/ui/protocol.py +16 -0
  68. {illusion_code-0.1.3 → illusion_code-0.1.4}/src/illusion/ui/runtime.py +42 -10
  69. {illusion_code-0.1.3 → illusion_code-0.1.4}/tests/api/test_anthropic_client.py +0 -5
  70. {illusion_code-0.1.3 → illusion_code-0.1.4}/tests/api/test_client.py +0 -1
  71. {illusion_code-0.1.3 → illusion_code-0.1.4}/tests/api/test_codex_client.py +0 -6
  72. {illusion_code-0.1.3 → illusion_code-0.1.4}/tests/api/test_fallback/346/217/220/347/244/272.py +1 -2
  73. {illusion_code-0.1.3 → illusion_code-0.1.4}/tests/api/test_openai_client.py +0 -6
  74. {illusion_code-0.1.3 → illusion_code-0.1.4}/tests/commands/init/test_orchestrator.py +1 -2
  75. {illusion_code-0.1.3 → illusion_code-0.1.4}/tests/commands/init/test_sections.py +0 -2
  76. {illusion_code-0.1.3 → illusion_code-0.1.4}/tests/commands/test_effort_command.py +2 -3
  77. {illusion_code-0.1.3 → illusion_code-0.1.4}/tests/config/test_i18n.py +1 -2
  78. {illusion_code-0.1.3 → illusion_code-0.1.4}/tests/config/test_settings.py +0 -2
  79. {illusion_code-0.1.3 → illusion_code-0.1.4}/tests/engine/test_query_engine.py +0 -2
  80. {illusion_code-0.1.3 → illusion_code-0.1.4}/tests/integration/test_effort_integration.py +0 -2
  81. {illusion_code-0.1.3 → illusion_code-0.1.4}/tests/services/lsp/test_lsp_config.py +0 -1
  82. {illusion_code-0.1.3 → illusion_code-0.1.4}/tests/services/lsp/test_lsp_manager.py +0 -1
  83. {illusion_code-0.1.3 → illusion_code-0.1.4}/tests/test_auth/test_external.py +2 -2
  84. {illusion_code-0.1.3 → illusion_code-0.1.4}/tests/test_commands/test_registry.py +1 -2
  85. {illusion_code-0.1.3 → illusion_code-0.1.4}/tests/test_engine/test_query_engine.py +3 -2
  86. {illusion_code-0.1.3 → illusion_code-0.1.4}/tests/test_hooks/test_executor.py +5 -4
  87. {illusion_code-0.1.3 → illusion_code-0.1.4}/tests/test_plugins/test_lifecycle_flow.py +2 -2
  88. {illusion_code-0.1.3 → illusion_code-0.1.4}/tests/test_plugins/test_loader.py +6 -6
  89. {illusion_code-0.1.3 → illusion_code-0.1.4}/tests/test_prompts/test_environment.py +0 -1
  90. illusion_code-0.1.4/tests/test_scripts/test_sync_version.py +103 -0
  91. {illusion_code-0.1.3 → illusion_code-0.1.4}/tests/test_services/test_compact.py +1 -1
  92. {illusion_code-0.1.3 → illusion_code-0.1.4}/tests/test_services/test_cron_scheduler.py +0 -1
  93. {illusion_code-0.1.3 → illusion_code-0.1.4}/tests/test_services/test_session_storage.py +52 -0
  94. {illusion_code-0.1.3 → illusion_code-0.1.4}/tests/test_swarm/test_agent_executor.py +0 -5
  95. {illusion_code-0.1.3 → illusion_code-0.1.4}/tests/test_swarm/test_imports.py +0 -15
  96. {illusion_code-0.1.3 → illusion_code-0.1.4}/tests/test_swarm/test_in_process.py +0 -2
  97. {illusion_code-0.1.3 → illusion_code-0.1.4}/tests/test_tools/test_core_tools.py +0 -1
  98. {illusion_code-0.1.3 → illusion_code-0.1.4}/tests/test_tools/test_integration.py +0 -1
  99. {illusion_code-0.1.3 → illusion_code-0.1.4}/tests/test_tools/test_shell_common.py +0 -1
  100. {illusion_code-0.1.3 → illusion_code-0.1.4}/tests/test_ui/test_react_backend.py +1 -1
  101. {illusion_code-0.1.3 → illusion_code-0.1.4}/tests/test_untested_features.py +6 -8
  102. illusion_code-0.1.3/frontend/terminal/src/components/ToolCallDisplay.tsx +0 -226
  103. illusion_code-0.1.3/frontend/web/vite.config.ts +0 -15
  104. illusion_code-0.1.3/src/illusion/hooks/__init__.py +0 -67
  105. illusion_code-0.1.3/src/illusion/hooks/events.py +0 -43
  106. illusion_code-0.1.3/src/illusion/hooks/executor.py +0 -397
  107. illusion_code-0.1.3/src/illusion/hooks/loader.py +0 -133
  108. illusion_code-0.1.3/src/illusion/hooks/schemas.py +0 -121
  109. illusion_code-0.1.3/src/illusion/hooks/types.py +0 -86
  110. illusion_code-0.1.3/src/illusion/plugins/loader.py +0 -301
  111. illusion_code-0.1.3/src/illusion/plugins/schemas.py +0 -51
  112. illusion_code-0.1.3/src/illusion/skills/loader.py +0 -219
  113. illusion_code-0.1.3/src/illusion/skills/types.py +0 -24
  114. illusion_code-0.1.3/src/illusion/tools/skill_tool.py +0 -86
  115. {illusion_code-0.1.3 → illusion_code-0.1.4}/.github/workflows/publish.yml +0 -0
  116. {illusion_code-0.1.3 → illusion_code-0.1.4}/.gitignore +0 -0
  117. {illusion_code-0.1.3 → illusion_code-0.1.4}/.python-version +0 -0
  118. {illusion_code-0.1.3 → illusion_code-0.1.4}/LICENSE +0 -0
  119. {illusion_code-0.1.3 → illusion_code-0.1.4}/docs/images/image1.png +0 -0
  120. {illusion_code-0.1.3 → illusion_code-0.1.4}/docs/images/image2.png +0 -0
  121. {illusion_code-0.1.3 → illusion_code-0.1.4}/frontend/terminal/build.mjs +0 -0
  122. {illusion_code-0.1.3 → illusion_code-0.1.4}/frontend/terminal/src/components/CommandPicker.tsx +0 -0
  123. {illusion_code-0.1.3 → illusion_code-0.1.4}/frontend/terminal/src/components/Composer.tsx +0 -0
  124. {illusion_code-0.1.3 → illusion_code-0.1.4}/frontend/terminal/src/components/ComposerController.tsx +0 -0
  125. {illusion_code-0.1.3 → illusion_code-0.1.4}/frontend/terminal/src/components/Footer.tsx +0 -0
  126. {illusion_code-0.1.3 → illusion_code-0.1.4}/frontend/terminal/src/components/MarkdownContent.tsx +0 -0
  127. {illusion_code-0.1.3 → illusion_code-0.1.4}/frontend/terminal/src/components/MarkdownTable.tsx +0 -0
  128. {illusion_code-0.1.3 → illusion_code-0.1.4}/frontend/terminal/src/components/ModalHost.tsx +0 -0
  129. {illusion_code-0.1.3 → illusion_code-0.1.4}/frontend/terminal/src/components/MultilineTextInput.tsx +0 -0
  130. {illusion_code-0.1.3 → illusion_code-0.1.4}/frontend/terminal/src/components/PromptInput.tsx +0 -0
  131. {illusion_code-0.1.3 → illusion_code-0.1.4}/frontend/terminal/src/components/SelectModal.tsx +0 -0
  132. {illusion_code-0.1.3 → illusion_code-0.1.4}/frontend/terminal/src/components/SidePanel.tsx +0 -0
  133. {illusion_code-0.1.3 → illusion_code-0.1.4}/frontend/terminal/src/components/Spinner.tsx +0 -0
  134. {illusion_code-0.1.3 → illusion_code-0.1.4}/frontend/terminal/src/components/StatusBar.tsx +0 -0
  135. {illusion_code-0.1.3 → illusion_code-0.1.4}/frontend/terminal/src/components/SwarmPanel.tsx +0 -0
  136. {illusion_code-0.1.3 → illusion_code-0.1.4}/frontend/terminal/src/components/TranscriptPane.tsx +0 -0
  137. {illusion_code-0.1.3 → illusion_code-0.1.4}/frontend/terminal/src/components/WelcomeBanner.tsx +0 -0
  138. {illusion_code-0.1.3 → illusion_code-0.1.4}/frontend/terminal/src/hooks/useTerminalSize.ts +0 -0
  139. {illusion_code-0.1.3 → illusion_code-0.1.4}/frontend/terminal/src/i18n.ts +0 -0
  140. {illusion_code-0.1.3 → illusion_code-0.1.4}/frontend/terminal/src/index.tsx +0 -0
  141. {illusion_code-0.1.3 → illusion_code-0.1.4}/frontend/terminal/src/theme/ThemeContext.tsx +0 -0
  142. {illusion_code-0.1.3 → illusion_code-0.1.4}/frontend/terminal/src/theme/builtinThemes.ts +0 -0
  143. {illusion_code-0.1.3 → illusion_code-0.1.4}/frontend/terminal/src/utils/markdown.ts +0 -0
  144. {illusion_code-0.1.3 → illusion_code-0.1.4}/frontend/terminal/src/utils/thinking.ts +0 -0
  145. {illusion_code-0.1.3 → illusion_code-0.1.4}/frontend/terminal/tsconfig.json +0 -0
  146. {illusion_code-0.1.3 → illusion_code-0.1.4}/frontend/web/index.html +0 -0
  147. {illusion_code-0.1.3 → illusion_code-0.1.4}/frontend/web/postcss.config.js +0 -0
  148. {illusion_code-0.1.3 → illusion_code-0.1.4}/frontend/web/src/App.tsx +0 -0
  149. {illusion_code-0.1.3 → illusion_code-0.1.4}/frontend/web/src/components/ChatArea.tsx +0 -0
  150. {illusion_code-0.1.3 → illusion_code-0.1.4}/frontend/web/src/components/MessageBubble.tsx +0 -0
  151. {illusion_code-0.1.3 → illusion_code-0.1.4}/frontend/web/src/components/ModalCard.tsx +0 -0
  152. {illusion_code-0.1.3 → illusion_code-0.1.4}/frontend/web/src/components/PromptInput.tsx +0 -0
  153. {illusion_code-0.1.3 → illusion_code-0.1.4}/frontend/web/src/components/RightPanel.tsx +0 -0
  154. {illusion_code-0.1.3 → illusion_code-0.1.4}/frontend/web/src/components/Sidebar.tsx +0 -0
  155. {illusion_code-0.1.3 → illusion_code-0.1.4}/frontend/web/src/components/TodoPanel.tsx +0 -0
  156. {illusion_code-0.1.3 → illusion_code-0.1.4}/frontend/web/src/components/Toolbar.tsx +0 -0
  157. {illusion_code-0.1.3 → illusion_code-0.1.4}/frontend/web/src/components/WelcomeScreen.tsx +0 -0
  158. {illusion_code-0.1.3 → illusion_code-0.1.4}/frontend/web/src/hooks/useWebSocketSession.ts +0 -0
  159. {illusion_code-0.1.3 → illusion_code-0.1.4}/frontend/web/src/i18n.ts +0 -0
  160. {illusion_code-0.1.3 → illusion_code-0.1.4}/frontend/web/src/index.css +0 -0
  161. {illusion_code-0.1.3 → illusion_code-0.1.4}/frontend/web/src/main.tsx +0 -0
  162. {illusion_code-0.1.3 → illusion_code-0.1.4}/frontend/web/src/remarkSuperscript.ts +0 -0
  163. {illusion_code-0.1.3 → illusion_code-0.1.4}/frontend/web/src/types/protocol.ts +0 -0
  164. {illusion_code-0.1.3 → illusion_code-0.1.4}/frontend/web/src/vite-env.d.ts +0 -0
  165. {illusion_code-0.1.3 → illusion_code-0.1.4}/frontend/web/tailwind.config.js +0 -0
  166. {illusion_code-0.1.3 → illusion_code-0.1.4}/scripts/build_frontend.py +0 -0
  167. {illusion_code-0.1.3 → illusion_code-0.1.4}/src/illusion/__main__.py +0 -0
  168. {illusion_code-0.1.3 → illusion_code-0.1.4}/src/illusion/api/__init__.py +0 -0
  169. {illusion_code-0.1.3 → illusion_code-0.1.4}/src/illusion/api/client.py +0 -0
  170. {illusion_code-0.1.3 → illusion_code-0.1.4}/src/illusion/api/codex_client.py +0 -0
  171. {illusion_code-0.1.3 → illusion_code-0.1.4}/src/illusion/api/compat.py +0 -0
  172. {illusion_code-0.1.3 → illusion_code-0.1.4}/src/illusion/api/effort.py +0 -0
  173. {illusion_code-0.1.3 → illusion_code-0.1.4}/src/illusion/api/errors.py +0 -0
  174. {illusion_code-0.1.3 → illusion_code-0.1.4}/src/illusion/api/openai_client.py +0 -0
  175. {illusion_code-0.1.3 → illusion_code-0.1.4}/src/illusion/api/provider.py +0 -0
  176. {illusion_code-0.1.3 → illusion_code-0.1.4}/src/illusion/api/registry.py +0 -0
  177. {illusion_code-0.1.3 → illusion_code-0.1.4}/src/illusion/api/usage.py +0 -0
  178. {illusion_code-0.1.3 → illusion_code-0.1.4}/src/illusion/auth/__init__.py +0 -0
  179. {illusion_code-0.1.3 → illusion_code-0.1.4}/src/illusion/auth/codex_oauth.py +0 -0
  180. {illusion_code-0.1.3 → illusion_code-0.1.4}/src/illusion/auth/copilot.py +0 -0
  181. {illusion_code-0.1.3 → illusion_code-0.1.4}/src/illusion/auth/external.py +0 -0
  182. {illusion_code-0.1.3 → illusion_code-0.1.4}/src/illusion/auth/flows.py +0 -0
  183. {illusion_code-0.1.3 → illusion_code-0.1.4}/src/illusion/auth/manager.py +0 -0
  184. {illusion_code-0.1.3 → illusion_code-0.1.4}/src/illusion/auth/storage.py +0 -0
  185. {illusion_code-0.1.3 → illusion_code-0.1.4}/src/illusion/bridge/__init__.py +0 -0
  186. {illusion_code-0.1.3 → illusion_code-0.1.4}/src/illusion/bridge/manager.py +0 -0
  187. {illusion_code-0.1.3 → illusion_code-0.1.4}/src/illusion/bridge/session_runner.py +0 -0
  188. {illusion_code-0.1.3 → illusion_code-0.1.4}/src/illusion/bridge/types.py +0 -0
  189. {illusion_code-0.1.3 → illusion_code-0.1.4}/src/illusion/bridge/work_secret.py +0 -0
  190. {illusion_code-0.1.3 → illusion_code-0.1.4}/src/illusion/cli.py +0 -0
  191. {illusion_code-0.1.3 → illusion_code-0.1.4}/src/illusion/commands/__init__.py +0 -0
  192. {illusion_code-0.1.3 → illusion_code-0.1.4}/src/illusion/commands/auth.py +0 -0
  193. {illusion_code-0.1.3 → illusion_code-0.1.4}/src/illusion/commands/bridge.py +0 -0
  194. {illusion_code-0.1.3 → illusion_code-0.1.4}/src/illusion/commands/context.py +0 -0
  195. {illusion_code-0.1.3 → illusion_code-0.1.4}/src/illusion/commands/git.py +0 -0
  196. {illusion_code-0.1.3 → illusion_code-0.1.4}/src/illusion/commands/helpers.py +0 -0
  197. {illusion_code-0.1.3 → illusion_code-0.1.4}/src/illusion/commands/init/__init__.py +0 -0
  198. {illusion_code-0.1.3 → illusion_code-0.1.4}/src/illusion/commands/init/analysis/__init__.py +0 -0
  199. {illusion_code-0.1.3 → illusion_code-0.1.4}/src/illusion/commands/init/analysis/architecture.py +0 -0
  200. {illusion_code-0.1.3 → illusion_code-0.1.4}/src/illusion/commands/init/analysis/conventions.py +0 -0
  201. {illusion_code-0.1.3 → illusion_code-0.1.4}/src/illusion/commands/init/analysis/dependencies.py +0 -0
  202. {illusion_code-0.1.3 → illusion_code-0.1.4}/src/illusion/commands/init/analysis/key_modules.py +0 -0
  203. {illusion_code-0.1.3 → illusion_code-0.1.4}/src/illusion/commands/init/extraction/__init__.py +0 -0
  204. {illusion_code-0.1.3 → illusion_code-0.1.4}/src/illusion/commands/init/extraction/lsp_symbols.py +0 -0
  205. {illusion_code-0.1.3 → illusion_code-0.1.4}/src/illusion/commands/init/extraction/readme.py +0 -0
  206. {illusion_code-0.1.3 → illusion_code-0.1.4}/src/illusion/commands/init/extraction/scanner.py +0 -0
  207. {illusion_code-0.1.3 → illusion_code-0.1.4}/src/illusion/commands/init/generation/__init__.py +0 -0
  208. {illusion_code-0.1.3 → illusion_code-0.1.4}/src/illusion/commands/init/generation/claudemd.py +0 -0
  209. {illusion_code-0.1.3 → illusion_code-0.1.4}/src/illusion/commands/init/generation/illusionmd.py +0 -0
  210. {illusion_code-0.1.3 → illusion_code-0.1.4}/src/illusion/commands/init/generation/memory_template.py +0 -0
  211. {illusion_code-0.1.3 → illusion_code-0.1.4}/src/illusion/commands/init/generation/rules.py +0 -0
  212. {illusion_code-0.1.3 → illusion_code-0.1.4}/src/illusion/commands/init/generation/sections.py +0 -0
  213. {illusion_code-0.1.3 → illusion_code-0.1.4}/src/illusion/commands/init/orchestrator.py +0 -0
  214. {illusion_code-0.1.3 → illusion_code-0.1.4}/src/illusion/commands/init/types.py +0 -0
  215. {illusion_code-0.1.3 → illusion_code-0.1.4}/src/illusion/commands/mcp.py +0 -0
  216. {illusion_code-0.1.3 → illusion_code-0.1.4}/src/illusion/commands/memory.py +0 -0
  217. {illusion_code-0.1.3 → illusion_code-0.1.4}/src/illusion/commands/misc.py +0 -0
  218. {illusion_code-0.1.3 → illusion_code-0.1.4}/src/illusion/commands/model.py +0 -0
  219. {illusion_code-0.1.3 → illusion_code-0.1.4}/src/illusion/commands/plugin.py +0 -0
  220. {illusion_code-0.1.3 → illusion_code-0.1.4}/src/illusion/commands/registry.py +0 -0
  221. {illusion_code-0.1.3 → illusion_code-0.1.4}/src/illusion/commands/rules.py +0 -0
  222. {illusion_code-0.1.3 → illusion_code-0.1.4}/src/illusion/commands/settings.py +0 -0
  223. {illusion_code-0.1.3 → illusion_code-0.1.4}/src/illusion/commands/types.py +0 -0
  224. {illusion_code-0.1.3 → illusion_code-0.1.4}/src/illusion/config/__init__.py +0 -0
  225. {illusion_code-0.1.3 → illusion_code-0.1.4}/src/illusion/config/i18n.py +0 -0
  226. {illusion_code-0.1.3 → illusion_code-0.1.4}/src/illusion/config/paths.py +0 -0
  227. {illusion_code-0.1.3 → illusion_code-0.1.4}/src/illusion/config/plan_file.py +0 -0
  228. {illusion_code-0.1.3 → illusion_code-0.1.4}/src/illusion/coordinator/__init__.py +0 -0
  229. {illusion_code-0.1.3 → illusion_code-0.1.4}/src/illusion/coordinator/agent_definitions.py +0 -0
  230. {illusion_code-0.1.3 → illusion_code-0.1.4}/src/illusion/coordinator/coordinator_mode.py +0 -0
  231. {illusion_code-0.1.3 → illusion_code-0.1.4}/src/illusion/engine/__init__.py +0 -0
  232. {illusion_code-0.1.3 → illusion_code-0.1.4}/src/illusion/engine/cost_tracker.py +0 -0
  233. {illusion_code-0.1.3 → illusion_code-0.1.4}/src/illusion/engine/messages.py +0 -0
  234. {illusion_code-0.1.3 → illusion_code-0.1.4}/src/illusion/hooks/hot_reload.py +0 -0
  235. {illusion_code-0.1.3 → illusion_code-0.1.4}/src/illusion/mcp/__init__.py +0 -0
  236. {illusion_code-0.1.3 → illusion_code-0.1.4}/src/illusion/mcp/client.py +0 -0
  237. {illusion_code-0.1.3 → illusion_code-0.1.4}/src/illusion/mcp/config.py +0 -0
  238. {illusion_code-0.1.3 → illusion_code-0.1.4}/src/illusion/mcp/types.py +0 -0
  239. {illusion_code-0.1.3 → illusion_code-0.1.4}/src/illusion/memory/__init__.py +0 -0
  240. {illusion_code-0.1.3 → illusion_code-0.1.4}/src/illusion/memory/manager.py +0 -0
  241. {illusion_code-0.1.3 → illusion_code-0.1.4}/src/illusion/memory/memdir.py +0 -0
  242. {illusion_code-0.1.3 → illusion_code-0.1.4}/src/illusion/memory/paths.py +0 -0
  243. {illusion_code-0.1.3 → illusion_code-0.1.4}/src/illusion/memory/scan.py +0 -0
  244. {illusion_code-0.1.3 → illusion_code-0.1.4}/src/illusion/memory/search.py +0 -0
  245. {illusion_code-0.1.3 → illusion_code-0.1.4}/src/illusion/memory/types.py +0 -0
  246. {illusion_code-0.1.3 → illusion_code-0.1.4}/src/illusion/output_styles/__init__.py +0 -0
  247. {illusion_code-0.1.3 → illusion_code-0.1.4}/src/illusion/output_styles/loader.py +0 -0
  248. {illusion_code-0.1.3 → illusion_code-0.1.4}/src/illusion/permissions/__init__.py +0 -0
  249. {illusion_code-0.1.3 → illusion_code-0.1.4}/src/illusion/permissions/checker.py +0 -0
  250. {illusion_code-0.1.3 → illusion_code-0.1.4}/src/illusion/permissions/modes.py +0 -0
  251. {illusion_code-0.1.3 → illusion_code-0.1.4}/src/illusion/platforms.py +0 -0
  252. {illusion_code-0.1.3 → illusion_code-0.1.4}/src/illusion/plugins/__init__.py +0 -0
  253. {illusion_code-0.1.3 → illusion_code-0.1.4}/src/illusion/plugins/installer.py +0 -0
  254. {illusion_code-0.1.3 → illusion_code-0.1.4}/src/illusion/plugins/types.py +0 -0
  255. {illusion_code-0.1.3 → illusion_code-0.1.4}/src/illusion/prompts/__init__.py +0 -0
  256. {illusion_code-0.1.3 → illusion_code-0.1.4}/src/illusion/prompts/claudemd.py +0 -0
  257. {illusion_code-0.1.3 → illusion_code-0.1.4}/src/illusion/prompts/context.py +0 -0
  258. {illusion_code-0.1.3 → illusion_code-0.1.4}/src/illusion/prompts/environment.py +0 -0
  259. {illusion_code-0.1.3 → illusion_code-0.1.4}/src/illusion/prompts/system_prompt.py +0 -0
  260. {illusion_code-0.1.3 → illusion_code-0.1.4}/src/illusion/sandbox/__init__.py +0 -0
  261. {illusion_code-0.1.3 → illusion_code-0.1.4}/src/illusion/sandbox/adapter.py +0 -0
  262. {illusion_code-0.1.3 → illusion_code-0.1.4}/src/illusion/services/__init__.py +0 -0
  263. {illusion_code-0.1.3 → illusion_code-0.1.4}/src/illusion/services/compact/__init__.py +0 -0
  264. {illusion_code-0.1.3 → illusion_code-0.1.4}/src/illusion/services/compact/auto_compact.py +0 -0
  265. {illusion_code-0.1.3 → illusion_code-0.1.4}/src/illusion/services/compact/compact_core.py +0 -0
  266. {illusion_code-0.1.3 → illusion_code-0.1.4}/src/illusion/services/compact/compact_prompt.py +0 -0
  267. {illusion_code-0.1.3 → illusion_code-0.1.4}/src/illusion/services/compact/constants.py +0 -0
  268. {illusion_code-0.1.3 → illusion_code-0.1.4}/src/illusion/services/compact/message_ops.py +0 -0
  269. {illusion_code-0.1.3 → illusion_code-0.1.4}/src/illusion/services/compact/microcompact.py +0 -0
  270. {illusion_code-0.1.3 → illusion_code-0.1.4}/src/illusion/services/compact/models.py +0 -0
  271. {illusion_code-0.1.3 → illusion_code-0.1.4}/src/illusion/services/compact/token_utils.py +0 -0
  272. {illusion_code-0.1.3 → illusion_code-0.1.4}/src/illusion/services/cron.py +0 -0
  273. {illusion_code-0.1.3 → illusion_code-0.1.4}/src/illusion/services/cron_scheduler.py +0 -0
  274. {illusion_code-0.1.3 → illusion_code-0.1.4}/src/illusion/services/file_history.py +0 -0
  275. {illusion_code-0.1.3 → illusion_code-0.1.4}/src/illusion/services/lsp/__init__.py +0 -0
  276. {illusion_code-0.1.3 → illusion_code-0.1.4}/src/illusion/services/lsp/client.py +0 -0
  277. {illusion_code-0.1.3 → illusion_code-0.1.4}/src/illusion/services/lsp/config.py +0 -0
  278. {illusion_code-0.1.3 → illusion_code-0.1.4}/src/illusion/services/lsp/manager.py +0 -0
  279. {illusion_code-0.1.3 → illusion_code-0.1.4}/src/illusion/services/lsp/types.py +0 -0
  280. {illusion_code-0.1.3 → illusion_code-0.1.4}/src/illusion/services/token_estimation.py +0 -0
  281. {illusion_code-0.1.3 → illusion_code-0.1.4}/src/illusion/skills/__init__.py +0 -0
  282. {illusion_code-0.1.3 → illusion_code-0.1.4}/src/illusion/skills/bundled/__init__.py +0 -0
  283. {illusion_code-0.1.3 → illusion_code-0.1.4}/src/illusion/skills/bundled/content/batch.md +0 -0
  284. {illusion_code-0.1.3 → illusion_code-0.1.4}/src/illusion/skills/bundled/content/coding-guidelines.md +0 -0
  285. {illusion_code-0.1.3 → illusion_code-0.1.4}/src/illusion/skills/bundled/content/debug.md +0 -0
  286. {illusion_code-0.1.3 → illusion_code-0.1.4}/src/illusion/skills/bundled/content/loop.md +0 -0
  287. {illusion_code-0.1.3 → illusion_code-0.1.4}/src/illusion/skills/bundled/content/remember.md +0 -0
  288. {illusion_code-0.1.3 → illusion_code-0.1.4}/src/illusion/skills/bundled/content/simplify.md +0 -0
  289. {illusion_code-0.1.3 → illusion_code-0.1.4}/src/illusion/skills/bundled/content/skillify.md +0 -0
  290. {illusion_code-0.1.3 → illusion_code-0.1.4}/src/illusion/skills/bundled/content/stuck.md +0 -0
  291. {illusion_code-0.1.3 → illusion_code-0.1.4}/src/illusion/skills/bundled/content/update-config.md +0 -0
  292. {illusion_code-0.1.3 → illusion_code-0.1.4}/src/illusion/skills/bundled/content/verify.md +0 -0
  293. {illusion_code-0.1.3 → illusion_code-0.1.4}/src/illusion/skills/registry.py +0 -0
  294. {illusion_code-0.1.3 → illusion_code-0.1.4}/src/illusion/state/__init__.py +0 -0
  295. {illusion_code-0.1.3 → illusion_code-0.1.4}/src/illusion/state/app_state.py +0 -0
  296. {illusion_code-0.1.3 → illusion_code-0.1.4}/src/illusion/state/store.py +0 -0
  297. {illusion_code-0.1.3 → illusion_code-0.1.4}/src/illusion/swarm/__init__.py +0 -0
  298. {illusion_code-0.1.3 → illusion_code-0.1.4}/src/illusion/swarm/in_process.py +0 -0
  299. {illusion_code-0.1.3 → illusion_code-0.1.4}/src/illusion/swarm/subprocess_backend.py +0 -0
  300. {illusion_code-0.1.3 → illusion_code-0.1.4}/src/illusion/swarm/team_helpers.py +0 -0
  301. {illusion_code-0.1.3 → illusion_code-0.1.4}/src/illusion/swarm/types.py +0 -0
  302. {illusion_code-0.1.3 → illusion_code-0.1.4}/src/illusion/swarm/worktree.py +0 -0
  303. {illusion_code-0.1.3 → illusion_code-0.1.4}/src/illusion/tasks/__init__.py +0 -0
  304. {illusion_code-0.1.3 → illusion_code-0.1.4}/src/illusion/tasks/local_agent_task.py +0 -0
  305. {illusion_code-0.1.3 → illusion_code-0.1.4}/src/illusion/tasks/local_shell_task.py +0 -0
  306. {illusion_code-0.1.3 → illusion_code-0.1.4}/src/illusion/tasks/manager.py +0 -0
  307. {illusion_code-0.1.3 → illusion_code-0.1.4}/src/illusion/tasks/stop_task.py +0 -0
  308. {illusion_code-0.1.3 → illusion_code-0.1.4}/src/illusion/tasks/types.py +0 -0
  309. {illusion_code-0.1.3 → illusion_code-0.1.4}/src/illusion/tools/__init__.py +0 -0
  310. {illusion_code-0.1.3 → illusion_code-0.1.4}/src/illusion/tools/agent_tool.py +0 -0
  311. {illusion_code-0.1.3 → illusion_code-0.1.4}/src/illusion/tools/ask_user_question_tool.py +0 -0
  312. {illusion_code-0.1.3 → illusion_code-0.1.4}/src/illusion/tools/base.py +0 -0
  313. {illusion_code-0.1.3 → illusion_code-0.1.4}/src/illusion/tools/bash_tool.py +0 -0
  314. {illusion_code-0.1.3 → illusion_code-0.1.4}/src/illusion/tools/config_tool.py +0 -0
  315. {illusion_code-0.1.3 → illusion_code-0.1.4}/src/illusion/tools/cron_tool.py +0 -0
  316. {illusion_code-0.1.3 → illusion_code-0.1.4}/src/illusion/tools/enter_plan_mode_tool.py +0 -0
  317. {illusion_code-0.1.3 → illusion_code-0.1.4}/src/illusion/tools/enter_worktree_tool.py +0 -0
  318. {illusion_code-0.1.3 → illusion_code-0.1.4}/src/illusion/tools/exit_plan_mode_tool.py +0 -0
  319. {illusion_code-0.1.3 → illusion_code-0.1.4}/src/illusion/tools/exit_worktree_tool.py +0 -0
  320. {illusion_code-0.1.3 → illusion_code-0.1.4}/src/illusion/tools/file_edit_tool.py +0 -0
  321. {illusion_code-0.1.3 → illusion_code-0.1.4}/src/illusion/tools/file_read_tool.py +0 -0
  322. {illusion_code-0.1.3 → illusion_code-0.1.4}/src/illusion/tools/file_write_tool.py +0 -0
  323. {illusion_code-0.1.3 → illusion_code-0.1.4}/src/illusion/tools/glob_tool.py +0 -0
  324. {illusion_code-0.1.3 → illusion_code-0.1.4}/src/illusion/tools/grep_tool.py +0 -0
  325. {illusion_code-0.1.3 → illusion_code-0.1.4}/src/illusion/tools/list_mcp_resources_tool.py +0 -0
  326. {illusion_code-0.1.3 → illusion_code-0.1.4}/src/illusion/tools/lsp_formatters.py +0 -0
  327. {illusion_code-0.1.3 → illusion_code-0.1.4}/src/illusion/tools/lsp_schemas.py +0 -0
  328. {illusion_code-0.1.3 → illusion_code-0.1.4}/src/illusion/tools/lsp_tool.py +0 -0
  329. {illusion_code-0.1.3 → illusion_code-0.1.4}/src/illusion/tools/mcp_auth_tool.py +0 -0
  330. {illusion_code-0.1.3 → illusion_code-0.1.4}/src/illusion/tools/mcp_tool.py +0 -0
  331. {illusion_code-0.1.3 → illusion_code-0.1.4}/src/illusion/tools/notebook_edit_tool.py +0 -0
  332. {illusion_code-0.1.3 → illusion_code-0.1.4}/src/illusion/tools/powershell_tool.py +0 -0
  333. {illusion_code-0.1.3 → illusion_code-0.1.4}/src/illusion/tools/read_mcp_resource_tool.py +0 -0
  334. {illusion_code-0.1.3 → illusion_code-0.1.4}/src/illusion/tools/repl_tool.py +0 -0
  335. {illusion_code-0.1.3 → illusion_code-0.1.4}/src/illusion/tools/send_message_tool.py +0 -0
  336. {illusion_code-0.1.3 → illusion_code-0.1.4}/src/illusion/tools/shell_common.py +0 -0
  337. {illusion_code-0.1.3 → illusion_code-0.1.4}/src/illusion/tools/sleep_tool.py +0 -0
  338. {illusion_code-0.1.3 → illusion_code-0.1.4}/src/illusion/tools/structured_output_tool.py +0 -0
  339. {illusion_code-0.1.3 → illusion_code-0.1.4}/src/illusion/tools/task_create_tool.py +0 -0
  340. {illusion_code-0.1.3 → illusion_code-0.1.4}/src/illusion/tools/task_get_tool.py +0 -0
  341. {illusion_code-0.1.3 → illusion_code-0.1.4}/src/illusion/tools/task_list_tool.py +0 -0
  342. {illusion_code-0.1.3 → illusion_code-0.1.4}/src/illusion/tools/task_output_tool.py +0 -0
  343. {illusion_code-0.1.3 → illusion_code-0.1.4}/src/illusion/tools/task_stop_tool.py +0 -0
  344. {illusion_code-0.1.3 → illusion_code-0.1.4}/src/illusion/tools/task_update_tool.py +0 -0
  345. {illusion_code-0.1.3 → illusion_code-0.1.4}/src/illusion/tools/team_create_tool.py +0 -0
  346. {illusion_code-0.1.3 → illusion_code-0.1.4}/src/illusion/tools/team_delete_tool.py +0 -0
  347. {illusion_code-0.1.3 → illusion_code-0.1.4}/src/illusion/tools/todo_write_tool.py +0 -0
  348. {illusion_code-0.1.3 → illusion_code-0.1.4}/src/illusion/tools/tool_search_tool.py +0 -0
  349. {illusion_code-0.1.3 → illusion_code-0.1.4}/src/illusion/tools/web_fetch_tool.py +0 -0
  350. {illusion_code-0.1.3 → illusion_code-0.1.4}/src/illusion/tools/web_search_tool.py +0 -0
  351. {illusion_code-0.1.3 → illusion_code-0.1.4}/src/illusion/ui/__init__.py +0 -0
  352. {illusion_code-0.1.3 → illusion_code-0.1.4}/src/illusion/ui/app.py +0 -0
  353. {illusion_code-0.1.3 → illusion_code-0.1.4}/src/illusion/ui/input.py +0 -0
  354. {illusion_code-0.1.3 → illusion_code-0.1.4}/src/illusion/ui/output.py +0 -0
  355. {illusion_code-0.1.3 → illusion_code-0.1.4}/src/illusion/ui/permission_dialog.py +0 -0
  356. {illusion_code-0.1.3 → illusion_code-0.1.4}/src/illusion/ui/permission_store.py +0 -0
  357. {illusion_code-0.1.3 → illusion_code-0.1.4}/src/illusion/ui/react_launcher.py +0 -0
  358. {illusion_code-0.1.3 → illusion_code-0.1.4}/src/illusion/ui/textual_app.py +0 -0
  359. {illusion_code-0.1.3 → illusion_code-0.1.4}/src/illusion/ui/web/__init__.py +0 -0
  360. {illusion_code-0.1.3 → illusion_code-0.1.4}/src/illusion/ui/web/server.py +0 -0
  361. {illusion_code-0.1.3 → illusion_code-0.1.4}/src/illusion/ui/web/ws_host.py +0 -0
  362. {illusion_code-0.1.3 → illusion_code-0.1.4}/src/illusion/utils/__init__.py +0 -0
  363. {illusion_code-0.1.3 → illusion_code-0.1.4}/src/illusion/utils/ripgrep.py +0 -0
  364. {illusion_code-0.1.3 → illusion_code-0.1.4}/src/illusion/utils/shell.py +0 -0
  365. {illusion_code-0.1.3 → illusion_code-0.1.4}/tests/__init__.py +0 -0
  366. {illusion_code-0.1.3 → illusion_code-0.1.4}/tests/api/test_effort.py +0 -0
  367. {illusion_code-0.1.3 → illusion_code-0.1.4}/tests/commands/init/__init__.py +0 -0
  368. {illusion_code-0.1.3 → illusion_code-0.1.4}/tests/commands/init/test_claudemd.py +0 -0
  369. {illusion_code-0.1.3 → illusion_code-0.1.4}/tests/commands/init/test_scanner.py +0 -0
  370. {illusion_code-0.1.3 → illusion_code-0.1.4}/tests/conftest.py +0 -0
  371. {illusion_code-0.1.3 → illusion_code-0.1.4}/tests/fixtures/fake_mcp_server.py +0 -0
  372. {illusion_code-0.1.3 → illusion_code-0.1.4}/tests/services/lsp/test_lsp_client.py +0 -0
  373. {illusion_code-0.1.3 → illusion_code-0.1.4}/tests/services/lsp/test_lsp_types.py +0 -0
  374. {illusion_code-0.1.3 → illusion_code-0.1.4}/tests/test_api/__init__.py +0 -0
  375. {illusion_code-0.1.3 → illusion_code-0.1.4}/tests/test_api/test_client.py +0 -0
  376. {illusion_code-0.1.3 → illusion_code-0.1.4}/tests/test_api/test_codex_client.py +0 -0
  377. {illusion_code-0.1.3 → illusion_code-0.1.4}/tests/test_api/test_compat.py +0 -0
  378. {illusion_code-0.1.3 → illusion_code-0.1.4}/tests/test_api/test_openai_client.py +0 -0
  379. {illusion_code-0.1.3 → illusion_code-0.1.4}/tests/test_bridge/test_core.py +0 -0
  380. {illusion_code-0.1.3 → illusion_code-0.1.4}/tests/test_bridge/test_session_flow.py +0 -0
  381. {illusion_code-0.1.3 → illusion_code-0.1.4}/tests/test_commands/__init__.py +0 -0
  382. {illusion_code-0.1.3 → illusion_code-0.1.4}/tests/test_commands/test_cli.py +0 -0
  383. {illusion_code-0.1.3 → illusion_code-0.1.4}/tests/test_commands/test_command_flows.py +0 -0
  384. {illusion_code-0.1.3 → illusion_code-0.1.4}/tests/test_config/__init__.py +0 -0
  385. {illusion_code-0.1.3 → illusion_code-0.1.4}/tests/test_config/test_paths.py +0 -0
  386. {illusion_code-0.1.3 → illusion_code-0.1.4}/tests/test_config/test_settings.py +0 -0
  387. {illusion_code-0.1.3 → illusion_code-0.1.4}/tests/test_coordinator/test_agent_definitions.py +0 -0
  388. {illusion_code-0.1.3 → illusion_code-0.1.4}/tests/test_coordinator/test_coordinator_mode.py +0 -0
  389. {illusion_code-0.1.3 → illusion_code-0.1.4}/tests/test_engine/__init__.py +0 -0
  390. {illusion_code-0.1.3 → illusion_code-0.1.4}/tests/test_engine/test_media_block.py +0 -0
  391. {illusion_code-0.1.3 → illusion_code-0.1.4}/tests/test_engine/test_tool_result_media.py +0 -0
  392. {illusion_code-0.1.3 → illusion_code-0.1.4}/tests/test_hooks/__init__.py +0 -0
  393. {illusion_code-0.1.3 → illusion_code-0.1.4}/tests/test_hooks_skills_plugins_real.py +0 -0
  394. {illusion_code-0.1.3 → illusion_code-0.1.4}/tests/test_mcp/__init__.py +0 -0
  395. {illusion_code-0.1.3 → illusion_code-0.1.4}/tests/test_mcp/test_integration.py +0 -0
  396. {illusion_code-0.1.3 → illusion_code-0.1.4}/tests/test_mcp/test_stdio_flow.py +0 -0
  397. {illusion_code-0.1.3 → illusion_code-0.1.4}/tests/test_memory/__init__.py +0 -0
  398. {illusion_code-0.1.3 → illusion_code-0.1.4}/tests/test_memory/test_memdir.py +0 -0
  399. {illusion_code-0.1.3 → illusion_code-0.1.4}/tests/test_merged_prs_on_autoagent.py +0 -0
  400. {illusion_code-0.1.3 → illusion_code-0.1.4}/tests/test_permissions/__init__.py +0 -0
  401. {illusion_code-0.1.3 → illusion_code-0.1.4}/tests/test_permissions/test_checker.py +0 -0
  402. {illusion_code-0.1.3 → illusion_code-0.1.4}/tests/test_platforms.py +0 -0
  403. {illusion_code-0.1.3 → illusion_code-0.1.4}/tests/test_plugins/__init__.py +0 -0
  404. {illusion_code-0.1.3 → illusion_code-0.1.4}/tests/test_prompts/__init__.py +0 -0
  405. {illusion_code-0.1.3 → illusion_code-0.1.4}/tests/test_prompts/test_claudemd.py +0 -0
  406. {illusion_code-0.1.3 → illusion_code-0.1.4}/tests/test_prompts/test_system_prompt.py +0 -0
  407. {illusion_code-0.1.3 → illusion_code-0.1.4}/tests/test_real_large_tasks.py +0 -0
  408. {illusion_code-0.1.3 → illusion_code-0.1.4}/tests/test_sandbox/test_adapter.py +0 -0
  409. {illusion_code-0.1.3 → illusion_code-0.1.4}/tests/test_services/test_cron.py +0 -0
  410. {illusion_code-0.1.3 → illusion_code-0.1.4}/tests/test_skills/test_loader.py +0 -0
  411. {illusion_code-0.1.3 → illusion_code-0.1.4}/tests/test_swarm/__init__.py +0 -0
  412. {illusion_code-0.1.3 → illusion_code-0.1.4}/tests/test_swarm/test_types.py +0 -0
  413. {illusion_code-0.1.3 → illusion_code-0.1.4}/tests/test_swarm/test_worktree.py +0 -0
  414. {illusion_code-0.1.3 → illusion_code-0.1.4}/tests/test_tasks/test_manager.py +0 -0
  415. {illusion_code-0.1.3 → illusion_code-0.1.4}/tests/test_tools/__init__.py +0 -0
  416. {illusion_code-0.1.3 → illusion_code-0.1.4}/tests/test_tools/test_agent_tool.py +0 -0
  417. {illusion_code-0.1.3 → illusion_code-0.1.4}/tests/test_tools/test_file_read_media.py +0 -0
  418. {illusion_code-0.1.3 → illusion_code-0.1.4}/tests/test_tools/test_glob_tool.py +0 -0
  419. {illusion_code-0.1.3 → illusion_code-0.1.4}/tests/test_tools/test_grep_tool.py +0 -0
  420. {illusion_code-0.1.3 → illusion_code-0.1.4}/tests/test_tools/test_integration_flows.py +0 -0
  421. {illusion_code-0.1.3 → illusion_code-0.1.4}/tests/test_tools/test_mcp_auth_tool.py +0 -0
  422. {illusion_code-0.1.3 → illusion_code-0.1.4}/tests/test_tools/test_ripgrep.py +0 -0
  423. {illusion_code-0.1.3 → illusion_code-0.1.4}/tests/test_tools/test_task_tools.py +0 -0
  424. {illusion_code-0.1.3 → illusion_code-0.1.4}/tests/test_tools/test_team_tools.py +0 -0
  425. {illusion_code-0.1.3 → illusion_code-0.1.4}/tests/test_tools/test_web_fetch_tool.py +0 -0
  426. {illusion_code-0.1.3 → illusion_code-0.1.4}/tests/test_ui/__init__.py +0 -0
  427. {illusion_code-0.1.3 → illusion_code-0.1.4}/tests/test_ui/test_modes.py +0 -0
  428. {illusion_code-0.1.3 → illusion_code-0.1.4}/tests/test_ui/test_permission_store.py +0 -0
  429. {illusion_code-0.1.3 → illusion_code-0.1.4}/tests/test_ui/test_react_launcher.py +0 -0
  430. {illusion_code-0.1.3 → illusion_code-0.1.4}/tests/test_ui/test_textual_app.py +0 -0
  431. {illusion_code-0.1.3 → illusion_code-0.1.4}/tests/test_utils/test_shell.py +0 -0
  432. {illusion_code-0.1.3 → illusion_code-0.1.4}/tests/ui/test_backend_host.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: illusion-code
3
- Version: 0.1.3
3
+ Version: 0.1.4
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
@@ -483,6 +483,8 @@ Built-in 7 specialized Agents:
483
483
  | `MEMORY.md` | Project root | Project-level | Memory entry file |
484
484
  | `.illusion/mcp/*.json` | Project root | Project-level | MCP server configuration |
485
485
  | `.illusion/rules/*.md` | Project root | Project-level | Project rule files |
486
+ | `.illusion/plugins/*/` | Global or project | Per-plugin | Plugin directories with skills, hooks, MCP |
487
+ | `.illusion/skills/*/` | Global or project | Per-skill | Skill directories with SKILL.md |
486
488
 
487
489
  #### Credentials File (credentials.json)
488
490
 
@@ -1035,56 +1037,128 @@ MCP servers from plugins are registered with the format `plugin_name:server_name
1035
1037
 
1036
1038
  ### Hook Configuration
1037
1039
 
1038
- Hooks allow executing custom operations when specific events occur.
1039
-
1040
- #### Supported Hook Types
1041
-
1042
- | Hook Event | Description |
1043
- |------------|-------------|
1044
- | `PRE_TOOL_USE` | Before tool execution |
1045
- | `POST_TOOL_USE` | After tool execution |
1046
- | `USER_PROMPT_SUBMIT` | After user prompt submission |
1047
-
1048
- #### Hook Configuration Example
1040
+ Hooks allow executing custom operations when specific events occur. The hook system is fully aligned with Claude Code.
1041
+
1042
+ #### Supported Hook Events (27 events)
1043
+
1044
+ | Event | Matcher Field | Description |
1045
+ |-------|---------------|-------------|
1046
+ | `PreToolUse` | tool_name | Before tool execution |
1047
+ | `PostToolUse` | tool_name | After tool execution |
1048
+ | `PostToolUseFailure` | tool_name | After tool execution fails |
1049
+ | `PermissionDenied` | tool_name | After auto mode classifier denies |
1050
+ | `Notification` | notification_type | When notifications are sent |
1051
+ | `UserPromptSubmit` | — | When user submits a prompt |
1052
+ | `SessionStart` | source | New session started (startup/resume/clear/compact) |
1053
+ | `SessionEnd` | reason | Session ending |
1054
+ | `Stop` | — | Before Claude concludes response |
1055
+ | `StopFailure` | error | Turn ends due to API error |
1056
+ | `SubagentStart` | agent_type | Subagent started |
1057
+ | `SubagentStop` | agent_type | Subagent concludes |
1058
+ | `PreCompact` | trigger | Before compaction (manual/auto) |
1059
+ | `PostCompact` | trigger | After compaction |
1060
+ | `PermissionRequest` | tool_name | Permission dialog displayed |
1061
+ | `Setup` | trigger | Repo setup (init/maintenance) |
1062
+ | `ConfigChange` | source | Configuration file changes |
1063
+ | `InstructionsLoaded` | load_reason | Instruction file loaded |
1064
+ | `WorktreeCreate` | — | Create worktree |
1065
+ | `WorktreeRemove` | — | Remove worktree |
1066
+ | `CwdChanged` | — | Working directory changes |
1067
+ | `FileChanged` | — | Watched file changes |
1068
+ | `TaskCreated` | — | Task being created |
1069
+ | `TaskCompleted` | — | Task being completed |
1070
+ | `TeammateIdle` | — | Teammate about to idle |
1071
+ | `Elicitation` | mcp_server_name | MCP elicitation request |
1072
+ | `ElicitationResult` | mcp_server_name | After user responds to elicitation |
1073
+
1074
+ #### Hook Configuration Format
1075
+
1076
+ Hooks use a matcher-based structure (aligned with Claude Code):
1049
1077
 
1050
1078
  ```json
1051
1079
  {
1052
1080
  "hooks": {
1053
- "PRE_TOOL_USE": [
1081
+ "PreToolUse": [
1054
1082
  {
1055
- "type": "command",
1056
- "command": "echo 'Tool: $TOOL_NAME' >> /tmp/tool.log",
1057
- "timeout_seconds": 30,
1058
- "block_on_failure": false
1083
+ "matcher": "Bash",
1084
+ "hooks": [
1085
+ {
1086
+ "type": "command",
1087
+ "command": "echo 'Tool: $ARGUMENTS' >> /tmp/tool.log",
1088
+ "timeout": 30
1089
+ }
1090
+ ]
1059
1091
  }
1060
1092
  ],
1061
- "POST_TOOL_USE": [
1093
+ "PostToolUse": [
1062
1094
  {
1063
- "type": "http",
1064
- "url": "https://hooks.example.com/tool-complete",
1065
- "headers": {"Authorization": "Bearer token"},
1066
- "timeout_seconds": 10
1095
+ "matcher": "Write|Edit",
1096
+ "hooks": [
1097
+ {
1098
+ "type": "http",
1099
+ "url": "https://hooks.example.com/tool-complete",
1100
+ "headers": {"Authorization": "Bearer token"}
1101
+ }
1102
+ ]
1067
1103
  }
1068
1104
  ],
1069
- "USER_PROMPT_SUBMIT": [
1105
+ "UserPromptSubmit": [
1070
1106
  {
1071
- "type": "prompt",
1072
- "prompt": "Check if user input contains sensitive information",
1073
- "block_on_failure": true
1107
+ "matcher": "",
1108
+ "hooks": [
1109
+ {
1110
+ "type": "prompt",
1111
+ "prompt": "Check if user input contains sensitive information"
1112
+ }
1113
+ ]
1074
1114
  }
1075
1115
  ]
1076
1116
  }
1077
1117
  }
1078
1118
  ```
1079
1119
 
1080
- #### Hook Type Details
1120
+ #### Matcher Patterns
1121
+
1122
+ The `matcher` field filters when hooks run:
1123
+
1124
+ | Pattern | Example | Behavior |
1125
+ |---------|---------|----------|
1126
+ | Empty / `*` | `""` | Matches everything |
1127
+ | Exact match | `"Bash"` | Matches exact tool name |
1128
+ | Pipe-separated | `"Write\|Edit"` | Matches any in list |
1129
+ | Regex | `"^git .*"` | Regex match against tool name |
1130
+
1131
+ #### Hook Types
1132
+
1133
+ | Type | Required | Optional | Description |
1134
+ |------|----------|----------|-------------|
1135
+ | `command` | `command` | `if`, `shell`, `timeout`, `statusMessage`, `once`, `async`, `asyncRewake` | Execute Shell command |
1136
+ | `prompt` | `prompt` | `if`, `model`, `timeout`, `statusMessage`, `once` | Use LLM for verification |
1137
+ | `http` | `url` | `if`, `timeout`, `headers`, `allowedEnvVars`, `statusMessage`, `once` | Send HTTP POST request |
1138
+ | `agent` | `prompt` | `if`, `model`, `timeout`, `statusMessage`, `once` | Use Agent for verification |
1081
1139
 
1082
- | Type | Required Fields | Optional Fields | Description |
1083
- |------|-----------------|-----------------|-------------|
1084
- | `command` | command | timeout_seconds, matcher, block_on_failure | Execute Shell command |
1085
- | `prompt` | prompt | model, timeout_seconds, matcher, block_on_failure | Use LLM for verification |
1086
- | `http` | url | headers, timeout_seconds, matcher, block_on_failure | Send HTTP request |
1087
- | `agent` | prompt | model, timeout_seconds, matcher, block_on_failure | Use Agent for verification |
1140
+ #### Common Hook Options
1141
+
1142
+ | Option | Type | Description |
1143
+ |--------|------|-------------|
1144
+ | `if` | string | Permission rule syntax filter (e.g. `"Bash(git *)"`) |
1145
+ | `timeout` | int | Timeout in seconds |
1146
+ | `once` | bool | If true, hook runs once then auto-removes |
1147
+ | `statusMessage` | string | Custom spinner message while hook runs |
1148
+
1149
+ #### Command Hook Environment Variables
1150
+
1151
+ Command hooks receive these environment variables:
1152
+
1153
+ | Variable | Description |
1154
+ |----------|-------------|
1155
+ | `CLAUDE_PROJECT_DIR` | Current working directory |
1156
+ | `CLAUDE_SESSION_ID` | Current session ID |
1157
+ | `CLAUDE_PLUGIN_ROOT` | Plugin installation directory (if from plugin) |
1158
+ | `CLAUDE_PLUGIN_DATA` | Plugin data directory |
1159
+ | `CLAUDE_ENV_FILE` | Write bash exports here to apply env to subsequent commands |
1160
+
1161
+ Use `$ARGUMENTS` in the command string to inject the hook input JSON.
1088
1162
 
1089
1163
  ---
1090
1164
 
@@ -1153,22 +1227,114 @@ Supported environment variables:
1153
1227
 
1154
1228
  ## 🔌 Extension Development
1155
1229
 
1156
- ### Hook System
1230
+ ### Plugin System
1157
1231
 
1158
- Supports multiple hook types:
1232
+ Plugins extend IllusionCode with skills, hooks, commands, and MCP servers. Plugin format is fully aligned with Claude Code.
1159
1233
 
1160
- - `PRE_TOOL_USE` - Before tool execution
1161
- - `POST_TOOL_USE` - After tool execution
1162
- - `USER_PROMPT_SUBMIT` - After user prompt submission
1234
+ #### Plugin Directory Structure
1163
1235
 
1164
- ### Plugin System
1236
+ ```
1237
+ my-plugin/
1238
+ ├── .claude-plugin/
1239
+ │ └── plugin.json # Plugin manifest
1240
+ ├── skills/ # Skills (subdirs with SKILL.md)
1241
+ │ ├── my-skill/
1242
+ │ │ └── SKILL.md
1243
+ │ └── another-skill.md
1244
+ ├── commands/ # Slash commands (.md files)
1245
+ ├── agents/ # Agent definitions (.md files)
1246
+ ├── hooks/
1247
+ │ └── hooks.json # Hook definitions
1248
+ ├── .mcp.json # MCP server configuration
1249
+ └── settings.json # Plugin default settings
1250
+ ```
1251
+
1252
+ #### Plugin Manifest (plugin.json)
1253
+
1254
+ ```json
1255
+ {
1256
+ "name": "my-plugin",
1257
+ "version": "1.0.0",
1258
+ "description": "My custom plugin",
1259
+ "enabled_by_default": true,
1260
+ "skills_dir": "skills",
1261
+ "hooks_file": "hooks.json"
1262
+ }
1263
+ ```
1264
+
1265
+ #### Plugin Installation
1266
+
1267
+ ```bash
1268
+ # Install from local path
1269
+ illusion plugin install /path/to/my-plugin
1165
1270
 
1166
- Defined through `plugin.json` manifest:
1271
+ # List installed plugins
1272
+ illusion plugin list
1273
+
1274
+ # Enable/disable
1275
+ illusion plugin enable my-plugin
1276
+ illusion plugin disable my-plugin
1277
+
1278
+ # Uninstall
1279
+ illusion plugin uninstall my-plugin
1280
+ ```
1281
+
1282
+ Plugins are installed to `~/.illusion/plugins/` (user-level) or `.illusion/plugins/` (project-level).
1283
+
1284
+ #### Plugin Hooks (hooks/hooks.json)
1285
+
1286
+ ```json
1287
+ {
1288
+ "hooks": {
1289
+ "SessionStart": [
1290
+ {
1291
+ "matcher": "startup|clear",
1292
+ "hooks": [
1293
+ {
1294
+ "type": "command",
1295
+ "command": "\"${CLAUDE_PLUGIN_ROOT}/hooks/init.cmd\""
1296
+ }
1297
+ ]
1298
+ }
1299
+ ]
1300
+ }
1301
+ }
1302
+ ```
1303
+
1304
+ Plugin hooks support `${CLAUDE_PLUGIN_ROOT}` and `${CLAUDE_PLUGIN_DATA}` variable substitution.
1305
+
1306
+ #### Skill Frontmatter
1307
+
1308
+ Skills defined in SKILL.md files support these frontmatter fields:
1309
+
1310
+ ```yaml
1311
+ ---
1312
+ description: What this skill does
1313
+ allowed-tools: Bash, Read, Write
1314
+ model: claude-sonnet-4-6
1315
+ context: fork
1316
+ effort: high
1317
+ hooks:
1318
+ PreToolUse:
1319
+ - matcher: Bash
1320
+ hooks:
1321
+ - type: command
1322
+ command: echo check
1323
+ ---
1324
+ ```
1325
+
1326
+ | Field | Type | Description |
1327
+ |-------|------|-------------|
1328
+ | `description` | string | Skill description (shown in skill list) |
1329
+ | `allowed-tools` | string | Comma-separated list of allowed tools |
1330
+ | `model` | string | Model override for this skill |
1331
+ | `context` | string | `inline` (expand into conversation) or `fork` (sub-agent) |
1332
+ | `effort` | string | Reasoning effort override |
1333
+ | `hooks` | object | Hooks to register when skill is invoked |
1334
+
1335
+ ### Hook System
1167
1336
 
1168
- - Skills
1169
- - Commands
1170
- - Hooks
1171
- - MCP Servers
1337
+ See [Hook Configuration](#hook-configuration) for the full hook documentation with 27 events and matcher-based format.
1172
1338
 
1173
1339
  ## 🧪 Development & Testing
1174
1340
 
@@ -435,6 +435,8 @@ Built-in 7 specialized Agents:
435
435
  | `MEMORY.md` | Project root | Project-level | Memory entry file |
436
436
  | `.illusion/mcp/*.json` | Project root | Project-level | MCP server configuration |
437
437
  | `.illusion/rules/*.md` | Project root | Project-level | Project rule files |
438
+ | `.illusion/plugins/*/` | Global or project | Per-plugin | Plugin directories with skills, hooks, MCP |
439
+ | `.illusion/skills/*/` | Global or project | Per-skill | Skill directories with SKILL.md |
438
440
 
439
441
  #### Credentials File (credentials.json)
440
442
 
@@ -987,56 +989,128 @@ MCP servers from plugins are registered with the format `plugin_name:server_name
987
989
 
988
990
  ### Hook Configuration
989
991
 
990
- Hooks allow executing custom operations when specific events occur.
991
-
992
- #### Supported Hook Types
993
-
994
- | Hook Event | Description |
995
- |------------|-------------|
996
- | `PRE_TOOL_USE` | Before tool execution |
997
- | `POST_TOOL_USE` | After tool execution |
998
- | `USER_PROMPT_SUBMIT` | After user prompt submission |
999
-
1000
- #### Hook Configuration Example
992
+ Hooks allow executing custom operations when specific events occur. The hook system is fully aligned with Claude Code.
993
+
994
+ #### Supported Hook Events (27 events)
995
+
996
+ | Event | Matcher Field | Description |
997
+ |-------|---------------|-------------|
998
+ | `PreToolUse` | tool_name | Before tool execution |
999
+ | `PostToolUse` | tool_name | After tool execution |
1000
+ | `PostToolUseFailure` | tool_name | After tool execution fails |
1001
+ | `PermissionDenied` | tool_name | After auto mode classifier denies |
1002
+ | `Notification` | notification_type | When notifications are sent |
1003
+ | `UserPromptSubmit` | — | When user submits a prompt |
1004
+ | `SessionStart` | source | New session started (startup/resume/clear/compact) |
1005
+ | `SessionEnd` | reason | Session ending |
1006
+ | `Stop` | — | Before Claude concludes response |
1007
+ | `StopFailure` | error | Turn ends due to API error |
1008
+ | `SubagentStart` | agent_type | Subagent started |
1009
+ | `SubagentStop` | agent_type | Subagent concludes |
1010
+ | `PreCompact` | trigger | Before compaction (manual/auto) |
1011
+ | `PostCompact` | trigger | After compaction |
1012
+ | `PermissionRequest` | tool_name | Permission dialog displayed |
1013
+ | `Setup` | trigger | Repo setup (init/maintenance) |
1014
+ | `ConfigChange` | source | Configuration file changes |
1015
+ | `InstructionsLoaded` | load_reason | Instruction file loaded |
1016
+ | `WorktreeCreate` | — | Create worktree |
1017
+ | `WorktreeRemove` | — | Remove worktree |
1018
+ | `CwdChanged` | — | Working directory changes |
1019
+ | `FileChanged` | — | Watched file changes |
1020
+ | `TaskCreated` | — | Task being created |
1021
+ | `TaskCompleted` | — | Task being completed |
1022
+ | `TeammateIdle` | — | Teammate about to idle |
1023
+ | `Elicitation` | mcp_server_name | MCP elicitation request |
1024
+ | `ElicitationResult` | mcp_server_name | After user responds to elicitation |
1025
+
1026
+ #### Hook Configuration Format
1027
+
1028
+ Hooks use a matcher-based structure (aligned with Claude Code):
1001
1029
 
1002
1030
  ```json
1003
1031
  {
1004
1032
  "hooks": {
1005
- "PRE_TOOL_USE": [
1033
+ "PreToolUse": [
1006
1034
  {
1007
- "type": "command",
1008
- "command": "echo 'Tool: $TOOL_NAME' >> /tmp/tool.log",
1009
- "timeout_seconds": 30,
1010
- "block_on_failure": false
1035
+ "matcher": "Bash",
1036
+ "hooks": [
1037
+ {
1038
+ "type": "command",
1039
+ "command": "echo 'Tool: $ARGUMENTS' >> /tmp/tool.log",
1040
+ "timeout": 30
1041
+ }
1042
+ ]
1011
1043
  }
1012
1044
  ],
1013
- "POST_TOOL_USE": [
1045
+ "PostToolUse": [
1014
1046
  {
1015
- "type": "http",
1016
- "url": "https://hooks.example.com/tool-complete",
1017
- "headers": {"Authorization": "Bearer token"},
1018
- "timeout_seconds": 10
1047
+ "matcher": "Write|Edit",
1048
+ "hooks": [
1049
+ {
1050
+ "type": "http",
1051
+ "url": "https://hooks.example.com/tool-complete",
1052
+ "headers": {"Authorization": "Bearer token"}
1053
+ }
1054
+ ]
1019
1055
  }
1020
1056
  ],
1021
- "USER_PROMPT_SUBMIT": [
1057
+ "UserPromptSubmit": [
1022
1058
  {
1023
- "type": "prompt",
1024
- "prompt": "Check if user input contains sensitive information",
1025
- "block_on_failure": true
1059
+ "matcher": "",
1060
+ "hooks": [
1061
+ {
1062
+ "type": "prompt",
1063
+ "prompt": "Check if user input contains sensitive information"
1064
+ }
1065
+ ]
1026
1066
  }
1027
1067
  ]
1028
1068
  }
1029
1069
  }
1030
1070
  ```
1031
1071
 
1032
- #### Hook Type Details
1072
+ #### Matcher Patterns
1073
+
1074
+ The `matcher` field filters when hooks run:
1075
+
1076
+ | Pattern | Example | Behavior |
1077
+ |---------|---------|----------|
1078
+ | Empty / `*` | `""` | Matches everything |
1079
+ | Exact match | `"Bash"` | Matches exact tool name |
1080
+ | Pipe-separated | `"Write\|Edit"` | Matches any in list |
1081
+ | Regex | `"^git .*"` | Regex match against tool name |
1082
+
1083
+ #### Hook Types
1084
+
1085
+ | Type | Required | Optional | Description |
1086
+ |------|----------|----------|-------------|
1087
+ | `command` | `command` | `if`, `shell`, `timeout`, `statusMessage`, `once`, `async`, `asyncRewake` | Execute Shell command |
1088
+ | `prompt` | `prompt` | `if`, `model`, `timeout`, `statusMessage`, `once` | Use LLM for verification |
1089
+ | `http` | `url` | `if`, `timeout`, `headers`, `allowedEnvVars`, `statusMessage`, `once` | Send HTTP POST request |
1090
+ | `agent` | `prompt` | `if`, `model`, `timeout`, `statusMessage`, `once` | Use Agent for verification |
1033
1091
 
1034
- | Type | Required Fields | Optional Fields | Description |
1035
- |------|-----------------|-----------------|-------------|
1036
- | `command` | command | timeout_seconds, matcher, block_on_failure | Execute Shell command |
1037
- | `prompt` | prompt | model, timeout_seconds, matcher, block_on_failure | Use LLM for verification |
1038
- | `http` | url | headers, timeout_seconds, matcher, block_on_failure | Send HTTP request |
1039
- | `agent` | prompt | model, timeout_seconds, matcher, block_on_failure | Use Agent for verification |
1092
+ #### Common Hook Options
1093
+
1094
+ | Option | Type | Description |
1095
+ |--------|------|-------------|
1096
+ | `if` | string | Permission rule syntax filter (e.g. `"Bash(git *)"`) |
1097
+ | `timeout` | int | Timeout in seconds |
1098
+ | `once` | bool | If true, hook runs once then auto-removes |
1099
+ | `statusMessage` | string | Custom spinner message while hook runs |
1100
+
1101
+ #### Command Hook Environment Variables
1102
+
1103
+ Command hooks receive these environment variables:
1104
+
1105
+ | Variable | Description |
1106
+ |----------|-------------|
1107
+ | `CLAUDE_PROJECT_DIR` | Current working directory |
1108
+ | `CLAUDE_SESSION_ID` | Current session ID |
1109
+ | `CLAUDE_PLUGIN_ROOT` | Plugin installation directory (if from plugin) |
1110
+ | `CLAUDE_PLUGIN_DATA` | Plugin data directory |
1111
+ | `CLAUDE_ENV_FILE` | Write bash exports here to apply env to subsequent commands |
1112
+
1113
+ Use `$ARGUMENTS` in the command string to inject the hook input JSON.
1040
1114
 
1041
1115
  ---
1042
1116
 
@@ -1105,22 +1179,114 @@ Supported environment variables:
1105
1179
 
1106
1180
  ## 🔌 Extension Development
1107
1181
 
1108
- ### Hook System
1182
+ ### Plugin System
1109
1183
 
1110
- Supports multiple hook types:
1184
+ Plugins extend IllusionCode with skills, hooks, commands, and MCP servers. Plugin format is fully aligned with Claude Code.
1111
1185
 
1112
- - `PRE_TOOL_USE` - Before tool execution
1113
- - `POST_TOOL_USE` - After tool execution
1114
- - `USER_PROMPT_SUBMIT` - After user prompt submission
1186
+ #### Plugin Directory Structure
1115
1187
 
1116
- ### Plugin System
1188
+ ```
1189
+ my-plugin/
1190
+ ├── .claude-plugin/
1191
+ │ └── plugin.json # Plugin manifest
1192
+ ├── skills/ # Skills (subdirs with SKILL.md)
1193
+ │ ├── my-skill/
1194
+ │ │ └── SKILL.md
1195
+ │ └── another-skill.md
1196
+ ├── commands/ # Slash commands (.md files)
1197
+ ├── agents/ # Agent definitions (.md files)
1198
+ ├── hooks/
1199
+ │ └── hooks.json # Hook definitions
1200
+ ├── .mcp.json # MCP server configuration
1201
+ └── settings.json # Plugin default settings
1202
+ ```
1203
+
1204
+ #### Plugin Manifest (plugin.json)
1205
+
1206
+ ```json
1207
+ {
1208
+ "name": "my-plugin",
1209
+ "version": "1.0.0",
1210
+ "description": "My custom plugin",
1211
+ "enabled_by_default": true,
1212
+ "skills_dir": "skills",
1213
+ "hooks_file": "hooks.json"
1214
+ }
1215
+ ```
1216
+
1217
+ #### Plugin Installation
1218
+
1219
+ ```bash
1220
+ # Install from local path
1221
+ illusion plugin install /path/to/my-plugin
1117
1222
 
1118
- Defined through `plugin.json` manifest:
1223
+ # List installed plugins
1224
+ illusion plugin list
1225
+
1226
+ # Enable/disable
1227
+ illusion plugin enable my-plugin
1228
+ illusion plugin disable my-plugin
1229
+
1230
+ # Uninstall
1231
+ illusion plugin uninstall my-plugin
1232
+ ```
1233
+
1234
+ Plugins are installed to `~/.illusion/plugins/` (user-level) or `.illusion/plugins/` (project-level).
1235
+
1236
+ #### Plugin Hooks (hooks/hooks.json)
1237
+
1238
+ ```json
1239
+ {
1240
+ "hooks": {
1241
+ "SessionStart": [
1242
+ {
1243
+ "matcher": "startup|clear",
1244
+ "hooks": [
1245
+ {
1246
+ "type": "command",
1247
+ "command": "\"${CLAUDE_PLUGIN_ROOT}/hooks/init.cmd\""
1248
+ }
1249
+ ]
1250
+ }
1251
+ ]
1252
+ }
1253
+ }
1254
+ ```
1255
+
1256
+ Plugin hooks support `${CLAUDE_PLUGIN_ROOT}` and `${CLAUDE_PLUGIN_DATA}` variable substitution.
1257
+
1258
+ #### Skill Frontmatter
1259
+
1260
+ Skills defined in SKILL.md files support these frontmatter fields:
1261
+
1262
+ ```yaml
1263
+ ---
1264
+ description: What this skill does
1265
+ allowed-tools: Bash, Read, Write
1266
+ model: claude-sonnet-4-6
1267
+ context: fork
1268
+ effort: high
1269
+ hooks:
1270
+ PreToolUse:
1271
+ - matcher: Bash
1272
+ hooks:
1273
+ - type: command
1274
+ command: echo check
1275
+ ---
1276
+ ```
1277
+
1278
+ | Field | Type | Description |
1279
+ |-------|------|-------------|
1280
+ | `description` | string | Skill description (shown in skill list) |
1281
+ | `allowed-tools` | string | Comma-separated list of allowed tools |
1282
+ | `model` | string | Model override for this skill |
1283
+ | `context` | string | `inline` (expand into conversation) or `fork` (sub-agent) |
1284
+ | `effort` | string | Reasoning effort override |
1285
+ | `hooks` | object | Hooks to register when skill is invoked |
1286
+
1287
+ ### Hook System
1119
1288
 
1120
- - Skills
1121
- - Commands
1122
- - Hooks
1123
- - MCP Servers
1289
+ See [Hook Configuration](#hook-configuration) for the full hook documentation with 27 events and matcher-based format.
1124
1290
 
1125
1291
  ## 🧪 Development & Testing
1126
1292