illusion-code 0.1.2__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.
- {illusion_code-0.1.2 → illusion_code-0.1.4}/PKG-INFO +210 -44
- {illusion_code-0.1.2 → illusion_code-0.1.4}/README.md +209 -43
- {illusion_code-0.1.2 → illusion_code-0.1.4}/README.zh-CN.md +207 -41
- {illusion_code-0.1.2 → illusion_code-0.1.4}/frontend/terminal/package-lock.json +3 -1
- {illusion_code-0.1.2 → illusion_code-0.1.4}/frontend/terminal/package.json +2 -1
- {illusion_code-0.1.2 → illusion_code-0.1.4}/frontend/terminal/src/App.tsx +6 -3
- {illusion_code-0.1.2 → illusion_code-0.1.4}/frontend/terminal/src/components/ConversationView.tsx +49 -139
- {illusion_code-0.1.2 → illusion_code-0.1.4}/frontend/terminal/src/components/TodoPanel.tsx +13 -1
- illusion_code-0.1.4/frontend/terminal/src/components/ToolCallDisplay.tsx +116 -0
- illusion_code-0.1.4/frontend/terminal/src/hooks/useAnimationFrame.ts +63 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/frontend/terminal/src/hooks/useBackendSession.ts +45 -0
- illusion_code-0.1.4/frontend/terminal/src/hooks/useBlink.ts +31 -0
- illusion_code-0.1.4/frontend/terminal/src/tools/ToolInterface.ts +62 -0
- illusion_code-0.1.4/frontend/terminal/src/tools/implementations/AgentTool.ts +63 -0
- illusion_code-0.1.4/frontend/terminal/src/tools/implementations/BashTool.ts +88 -0
- illusion_code-0.1.4/frontend/terminal/src/tools/implementations/CronTool.ts +23 -0
- illusion_code-0.1.4/frontend/terminal/src/tools/implementations/EditTool.ts +64 -0
- illusion_code-0.1.4/frontend/terminal/src/tools/implementations/GenericTool.ts +49 -0
- illusion_code-0.1.4/frontend/terminal/src/tools/implementations/LspTool.ts +35 -0
- illusion_code-0.1.4/frontend/terminal/src/tools/implementations/McpTool.ts +25 -0
- illusion_code-0.1.4/frontend/terminal/src/tools/implementations/NotebookTool.ts +25 -0
- illusion_code-0.1.4/frontend/terminal/src/tools/implementations/PlanTool.ts +21 -0
- illusion_code-0.1.4/frontend/terminal/src/tools/implementations/ReadTool.ts +74 -0
- illusion_code-0.1.4/frontend/terminal/src/tools/implementations/SearchTool.ts +97 -0
- illusion_code-0.1.4/frontend/terminal/src/tools/implementations/SkillTool.ts +22 -0
- illusion_code-0.1.4/frontend/terminal/src/tools/implementations/TaskTool.ts +35 -0
- illusion_code-0.1.4/frontend/terminal/src/tools/implementations/WebTool.ts +51 -0
- illusion_code-0.1.4/frontend/terminal/src/tools/implementations/WorktreeTool.ts +18 -0
- illusion_code-0.1.4/frontend/terminal/src/tools/implementations/WriteTool.ts +51 -0
- illusion_code-0.1.4/frontend/terminal/src/tools/registry.ts +189 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/frontend/terminal/src/types.ts +20 -0
- illusion_code-0.1.4/frontend/terminal/src/version.ts +9 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/frontend/web/package-lock.json +20 -2
- {illusion_code-0.1.2 → illusion_code-0.1.4}/frontend/web/package.json +2 -1
- illusion_code-0.1.4/frontend/web/src/version.ts +9 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/frontend/web/tsconfig.json +2 -1
- illusion_code-0.1.4/frontend/web/tsconfig.node.json +13 -0
- illusion_code-0.1.4/frontend/web/vite.config.ts +32 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/pyproject.toml +1 -1
- {illusion_code-0.1.2 → illusion_code-0.1.4}/scripts/hatch_build.py +19 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/scripts/publish.py +0 -1
- illusion_code-0.1.4/scripts/sync_version.py +138 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/src/illusion/__init__.py +3 -1
- {illusion_code-0.1.2 → illusion_code-0.1.4}/src/illusion/cli.py +2 -3
- {illusion_code-0.1.2 → illusion_code-0.1.4}/src/illusion/commands/misc.py +6 -4
- {illusion_code-0.1.2 → illusion_code-0.1.4}/src/illusion/commands/session.py +27 -9
- {illusion_code-0.1.2 → illusion_code-0.1.4}/src/illusion/config/settings.py +1 -2
- {illusion_code-0.1.2 → illusion_code-0.1.4}/src/illusion/engine/query.py +64 -31
- {illusion_code-0.1.2 → illusion_code-0.1.4}/src/illusion/engine/query_engine.py +26 -1
- {illusion_code-0.1.2 → illusion_code-0.1.4}/src/illusion/engine/stream_events.py +22 -0
- illusion_code-0.1.4/src/illusion/hooks/__init__.py +59 -0
- illusion_code-0.1.4/src/illusion/hooks/events.py +43 -0
- illusion_code-0.1.4/src/illusion/hooks/executor.py +463 -0
- illusion_code-0.1.4/src/illusion/hooks/loader.py +115 -0
- illusion_code-0.1.4/src/illusion/hooks/register_hooks.py +58 -0
- illusion_code-0.1.4/src/illusion/hooks/schemas.py +129 -0
- illusion_code-0.1.4/src/illusion/hooks/session_hooks.py +116 -0
- illusion_code-0.1.4/src/illusion/hooks/types.py +168 -0
- illusion_code-0.1.4/src/illusion/hooks/utils.py +13 -0
- illusion_code-0.1.4/src/illusion/plugins/loader.py +278 -0
- illusion_code-0.1.4/src/illusion/plugins/options.py +45 -0
- illusion_code-0.1.4/src/illusion/plugins/schemas.py +31 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/src/illusion/services/session_storage.py +40 -3
- illusion_code-0.1.4/src/illusion/skills/loader.py +270 -0
- illusion_code-0.1.4/src/illusion/skills/types.py +31 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/src/illusion/swarm/agent_executor.py +11 -2
- illusion_code-0.1.4/src/illusion/tools/skill_tool.py +116 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/src/illusion/ui/backend_host.py +104 -40
- {illusion_code-0.1.2 → illusion_code-0.1.4}/src/illusion/ui/protocol.py +16 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/src/illusion/ui/runtime.py +42 -10
- {illusion_code-0.1.2 → illusion_code-0.1.4}/tests/api/test_anthropic_client.py +0 -5
- {illusion_code-0.1.2 → illusion_code-0.1.4}/tests/api/test_client.py +0 -1
- {illusion_code-0.1.2 → illusion_code-0.1.4}/tests/api/test_codex_client.py +0 -6
- {illusion_code-0.1.2 → illusion_code-0.1.4}/tests/api/test_fallback/346/217/220/347/244/272.py +1 -2
- {illusion_code-0.1.2 → illusion_code-0.1.4}/tests/api/test_openai_client.py +0 -6
- {illusion_code-0.1.2 → illusion_code-0.1.4}/tests/commands/init/test_orchestrator.py +1 -2
- {illusion_code-0.1.2 → illusion_code-0.1.4}/tests/commands/init/test_sections.py +0 -2
- {illusion_code-0.1.2 → illusion_code-0.1.4}/tests/commands/test_effort_command.py +2 -3
- {illusion_code-0.1.2 → illusion_code-0.1.4}/tests/config/test_i18n.py +1 -2
- {illusion_code-0.1.2 → illusion_code-0.1.4}/tests/config/test_settings.py +0 -2
- {illusion_code-0.1.2 → illusion_code-0.1.4}/tests/engine/test_query_engine.py +0 -2
- {illusion_code-0.1.2 → illusion_code-0.1.4}/tests/integration/test_effort_integration.py +0 -2
- {illusion_code-0.1.2 → illusion_code-0.1.4}/tests/services/lsp/test_lsp_config.py +0 -1
- {illusion_code-0.1.2 → illusion_code-0.1.4}/tests/services/lsp/test_lsp_manager.py +0 -1
- {illusion_code-0.1.2 → illusion_code-0.1.4}/tests/test_auth/test_external.py +2 -2
- {illusion_code-0.1.2 → illusion_code-0.1.4}/tests/test_commands/test_registry.py +1 -2
- {illusion_code-0.1.2 → illusion_code-0.1.4}/tests/test_engine/test_query_engine.py +3 -2
- {illusion_code-0.1.2 → illusion_code-0.1.4}/tests/test_hooks/test_executor.py +5 -4
- {illusion_code-0.1.2 → illusion_code-0.1.4}/tests/test_plugins/test_lifecycle_flow.py +2 -2
- {illusion_code-0.1.2 → illusion_code-0.1.4}/tests/test_plugins/test_loader.py +6 -6
- {illusion_code-0.1.2 → illusion_code-0.1.4}/tests/test_prompts/test_environment.py +0 -1
- illusion_code-0.1.4/tests/test_scripts/test_sync_version.py +103 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/tests/test_services/test_compact.py +1 -1
- {illusion_code-0.1.2 → illusion_code-0.1.4}/tests/test_services/test_cron_scheduler.py +0 -1
- {illusion_code-0.1.2 → illusion_code-0.1.4}/tests/test_services/test_session_storage.py +52 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/tests/test_swarm/test_agent_executor.py +0 -5
- {illusion_code-0.1.2 → illusion_code-0.1.4}/tests/test_swarm/test_imports.py +0 -15
- {illusion_code-0.1.2 → illusion_code-0.1.4}/tests/test_swarm/test_in_process.py +0 -2
- {illusion_code-0.1.2 → illusion_code-0.1.4}/tests/test_tools/test_core_tools.py +0 -1
- {illusion_code-0.1.2 → illusion_code-0.1.4}/tests/test_tools/test_integration.py +0 -1
- {illusion_code-0.1.2 → illusion_code-0.1.4}/tests/test_tools/test_shell_common.py +0 -1
- {illusion_code-0.1.2 → illusion_code-0.1.4}/tests/test_ui/test_react_backend.py +1 -1
- {illusion_code-0.1.2 → illusion_code-0.1.4}/tests/test_untested_features.py +6 -8
- illusion_code-0.1.2/frontend/terminal/src/components/ToolCallDisplay.tsx +0 -226
- illusion_code-0.1.2/frontend/web/vite.config.ts +0 -15
- illusion_code-0.1.2/main.py +0 -6
- illusion_code-0.1.2/src/illusion/hooks/__init__.py +0 -67
- illusion_code-0.1.2/src/illusion/hooks/events.py +0 -43
- illusion_code-0.1.2/src/illusion/hooks/executor.py +0 -397
- illusion_code-0.1.2/src/illusion/hooks/loader.py +0 -133
- illusion_code-0.1.2/src/illusion/hooks/schemas.py +0 -121
- illusion_code-0.1.2/src/illusion/hooks/types.py +0 -86
- illusion_code-0.1.2/src/illusion/plugins/loader.py +0 -301
- illusion_code-0.1.2/src/illusion/plugins/schemas.py +0 -51
- illusion_code-0.1.2/src/illusion/skills/loader.py +0 -219
- illusion_code-0.1.2/src/illusion/skills/types.py +0 -24
- illusion_code-0.1.2/src/illusion/tools/skill_tool.py +0 -86
- {illusion_code-0.1.2 → illusion_code-0.1.4}/.github/workflows/publish.yml +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/.gitignore +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/.python-version +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/LICENSE +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/docs/images/image1.png +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/docs/images/image2.png +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/frontend/terminal/build.mjs +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/frontend/terminal/src/components/CommandPicker.tsx +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/frontend/terminal/src/components/Composer.tsx +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/frontend/terminal/src/components/ComposerController.tsx +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/frontend/terminal/src/components/Footer.tsx +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/frontend/terminal/src/components/MarkdownContent.tsx +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/frontend/terminal/src/components/MarkdownTable.tsx +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/frontend/terminal/src/components/ModalHost.tsx +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/frontend/terminal/src/components/MultilineTextInput.tsx +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/frontend/terminal/src/components/PromptInput.tsx +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/frontend/terminal/src/components/SelectModal.tsx +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/frontend/terminal/src/components/SidePanel.tsx +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/frontend/terminal/src/components/Spinner.tsx +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/frontend/terminal/src/components/StatusBar.tsx +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/frontend/terminal/src/components/SwarmPanel.tsx +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/frontend/terminal/src/components/TranscriptPane.tsx +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/frontend/terminal/src/components/WelcomeBanner.tsx +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/frontend/terminal/src/hooks/useTerminalSize.ts +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/frontend/terminal/src/i18n.ts +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/frontend/terminal/src/index.tsx +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/frontend/terminal/src/theme/ThemeContext.tsx +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/frontend/terminal/src/theme/builtinThemes.ts +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/frontend/terminal/src/utils/markdown.ts +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/frontend/terminal/src/utils/thinking.ts +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/frontend/terminal/tsconfig.json +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/frontend/web/index.html +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/frontend/web/postcss.config.js +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/frontend/web/src/App.tsx +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/frontend/web/src/components/ChatArea.tsx +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/frontend/web/src/components/MessageBubble.tsx +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/frontend/web/src/components/ModalCard.tsx +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/frontend/web/src/components/PromptInput.tsx +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/frontend/web/src/components/RightPanel.tsx +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/frontend/web/src/components/Sidebar.tsx +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/frontend/web/src/components/TodoPanel.tsx +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/frontend/web/src/components/Toolbar.tsx +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/frontend/web/src/components/WelcomeScreen.tsx +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/frontend/web/src/hooks/useWebSocketSession.ts +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/frontend/web/src/i18n.ts +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/frontend/web/src/index.css +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/frontend/web/src/main.tsx +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/frontend/web/src/remarkSuperscript.ts +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/frontend/web/src/types/protocol.ts +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/frontend/web/src/vite-env.d.ts +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/frontend/web/tailwind.config.js +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/scripts/build_frontend.py +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/src/illusion/__main__.py +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/src/illusion/api/__init__.py +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/src/illusion/api/client.py +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/src/illusion/api/codex_client.py +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/src/illusion/api/compat.py +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/src/illusion/api/effort.py +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/src/illusion/api/errors.py +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/src/illusion/api/openai_client.py +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/src/illusion/api/provider.py +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/src/illusion/api/registry.py +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/src/illusion/api/usage.py +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/src/illusion/auth/__init__.py +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/src/illusion/auth/codex_oauth.py +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/src/illusion/auth/copilot.py +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/src/illusion/auth/external.py +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/src/illusion/auth/flows.py +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/src/illusion/auth/manager.py +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/src/illusion/auth/storage.py +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/src/illusion/bridge/__init__.py +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/src/illusion/bridge/manager.py +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/src/illusion/bridge/session_runner.py +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/src/illusion/bridge/types.py +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/src/illusion/bridge/work_secret.py +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/src/illusion/commands/__init__.py +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/src/illusion/commands/auth.py +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/src/illusion/commands/bridge.py +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/src/illusion/commands/context.py +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/src/illusion/commands/git.py +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/src/illusion/commands/helpers.py +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/src/illusion/commands/init/__init__.py +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/src/illusion/commands/init/analysis/__init__.py +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/src/illusion/commands/init/analysis/architecture.py +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/src/illusion/commands/init/analysis/conventions.py +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/src/illusion/commands/init/analysis/dependencies.py +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/src/illusion/commands/init/analysis/key_modules.py +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/src/illusion/commands/init/extraction/__init__.py +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/src/illusion/commands/init/extraction/lsp_symbols.py +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/src/illusion/commands/init/extraction/readme.py +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/src/illusion/commands/init/extraction/scanner.py +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/src/illusion/commands/init/generation/__init__.py +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/src/illusion/commands/init/generation/claudemd.py +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/src/illusion/commands/init/generation/illusionmd.py +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/src/illusion/commands/init/generation/memory_template.py +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/src/illusion/commands/init/generation/rules.py +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/src/illusion/commands/init/generation/sections.py +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/src/illusion/commands/init/orchestrator.py +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/src/illusion/commands/init/types.py +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/src/illusion/commands/mcp.py +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/src/illusion/commands/memory.py +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/src/illusion/commands/model.py +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/src/illusion/commands/plugin.py +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/src/illusion/commands/registry.py +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/src/illusion/commands/rules.py +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/src/illusion/commands/settings.py +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/src/illusion/commands/types.py +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/src/illusion/config/__init__.py +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/src/illusion/config/i18n.py +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/src/illusion/config/paths.py +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/src/illusion/config/plan_file.py +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/src/illusion/coordinator/__init__.py +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/src/illusion/coordinator/agent_definitions.py +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/src/illusion/coordinator/coordinator_mode.py +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/src/illusion/engine/__init__.py +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/src/illusion/engine/cost_tracker.py +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/src/illusion/engine/messages.py +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/src/illusion/hooks/hot_reload.py +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/src/illusion/mcp/__init__.py +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/src/illusion/mcp/client.py +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/src/illusion/mcp/config.py +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/src/illusion/mcp/types.py +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/src/illusion/memory/__init__.py +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/src/illusion/memory/manager.py +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/src/illusion/memory/memdir.py +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/src/illusion/memory/paths.py +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/src/illusion/memory/scan.py +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/src/illusion/memory/search.py +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/src/illusion/memory/types.py +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/src/illusion/output_styles/__init__.py +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/src/illusion/output_styles/loader.py +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/src/illusion/permissions/__init__.py +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/src/illusion/permissions/checker.py +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/src/illusion/permissions/modes.py +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/src/illusion/platforms.py +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/src/illusion/plugins/__init__.py +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/src/illusion/plugins/installer.py +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/src/illusion/plugins/types.py +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/src/illusion/prompts/__init__.py +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/src/illusion/prompts/claudemd.py +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/src/illusion/prompts/context.py +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/src/illusion/prompts/environment.py +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/src/illusion/prompts/system_prompt.py +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/src/illusion/sandbox/__init__.py +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/src/illusion/sandbox/adapter.py +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/src/illusion/services/__init__.py +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/src/illusion/services/compact/__init__.py +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/src/illusion/services/compact/auto_compact.py +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/src/illusion/services/compact/compact_core.py +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/src/illusion/services/compact/compact_prompt.py +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/src/illusion/services/compact/constants.py +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/src/illusion/services/compact/message_ops.py +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/src/illusion/services/compact/microcompact.py +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/src/illusion/services/compact/models.py +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/src/illusion/services/compact/token_utils.py +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/src/illusion/services/cron.py +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/src/illusion/services/cron_scheduler.py +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/src/illusion/services/file_history.py +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/src/illusion/services/lsp/__init__.py +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/src/illusion/services/lsp/client.py +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/src/illusion/services/lsp/config.py +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/src/illusion/services/lsp/manager.py +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/src/illusion/services/lsp/types.py +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/src/illusion/services/token_estimation.py +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/src/illusion/skills/__init__.py +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/src/illusion/skills/bundled/__init__.py +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/src/illusion/skills/bundled/content/batch.md +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/src/illusion/skills/bundled/content/coding-guidelines.md +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/src/illusion/skills/bundled/content/debug.md +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/src/illusion/skills/bundled/content/loop.md +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/src/illusion/skills/bundled/content/remember.md +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/src/illusion/skills/bundled/content/simplify.md +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/src/illusion/skills/bundled/content/skillify.md +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/src/illusion/skills/bundled/content/stuck.md +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/src/illusion/skills/bundled/content/update-config.md +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/src/illusion/skills/bundled/content/verify.md +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/src/illusion/skills/registry.py +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/src/illusion/state/__init__.py +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/src/illusion/state/app_state.py +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/src/illusion/state/store.py +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/src/illusion/swarm/__init__.py +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/src/illusion/swarm/in_process.py +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/src/illusion/swarm/subprocess_backend.py +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/src/illusion/swarm/team_helpers.py +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/src/illusion/swarm/types.py +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/src/illusion/swarm/worktree.py +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/src/illusion/tasks/__init__.py +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/src/illusion/tasks/local_agent_task.py +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/src/illusion/tasks/local_shell_task.py +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/src/illusion/tasks/manager.py +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/src/illusion/tasks/stop_task.py +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/src/illusion/tasks/types.py +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/src/illusion/tools/__init__.py +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/src/illusion/tools/agent_tool.py +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/src/illusion/tools/ask_user_question_tool.py +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/src/illusion/tools/base.py +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/src/illusion/tools/bash_tool.py +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/src/illusion/tools/config_tool.py +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/src/illusion/tools/cron_tool.py +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/src/illusion/tools/enter_plan_mode_tool.py +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/src/illusion/tools/enter_worktree_tool.py +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/src/illusion/tools/exit_plan_mode_tool.py +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/src/illusion/tools/exit_worktree_tool.py +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/src/illusion/tools/file_edit_tool.py +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/src/illusion/tools/file_read_tool.py +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/src/illusion/tools/file_write_tool.py +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/src/illusion/tools/glob_tool.py +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/src/illusion/tools/grep_tool.py +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/src/illusion/tools/list_mcp_resources_tool.py +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/src/illusion/tools/lsp_formatters.py +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/src/illusion/tools/lsp_schemas.py +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/src/illusion/tools/lsp_tool.py +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/src/illusion/tools/mcp_auth_tool.py +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/src/illusion/tools/mcp_tool.py +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/src/illusion/tools/notebook_edit_tool.py +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/src/illusion/tools/powershell_tool.py +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/src/illusion/tools/read_mcp_resource_tool.py +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/src/illusion/tools/repl_tool.py +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/src/illusion/tools/send_message_tool.py +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/src/illusion/tools/shell_common.py +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/src/illusion/tools/sleep_tool.py +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/src/illusion/tools/structured_output_tool.py +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/src/illusion/tools/task_create_tool.py +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/src/illusion/tools/task_get_tool.py +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/src/illusion/tools/task_list_tool.py +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/src/illusion/tools/task_output_tool.py +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/src/illusion/tools/task_stop_tool.py +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/src/illusion/tools/task_update_tool.py +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/src/illusion/tools/team_create_tool.py +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/src/illusion/tools/team_delete_tool.py +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/src/illusion/tools/todo_write_tool.py +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/src/illusion/tools/tool_search_tool.py +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/src/illusion/tools/web_fetch_tool.py +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/src/illusion/tools/web_search_tool.py +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/src/illusion/ui/__init__.py +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/src/illusion/ui/app.py +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/src/illusion/ui/input.py +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/src/illusion/ui/output.py +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/src/illusion/ui/permission_dialog.py +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/src/illusion/ui/permission_store.py +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/src/illusion/ui/react_launcher.py +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/src/illusion/ui/textual_app.py +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/src/illusion/ui/web/__init__.py +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/src/illusion/ui/web/server.py +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/src/illusion/ui/web/ws_host.py +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/src/illusion/utils/__init__.py +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/src/illusion/utils/ripgrep.py +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/src/illusion/utils/shell.py +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/tests/__init__.py +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/tests/api/test_effort.py +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/tests/commands/init/__init__.py +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/tests/commands/init/test_claudemd.py +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/tests/commands/init/test_scanner.py +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/tests/conftest.py +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/tests/fixtures/fake_mcp_server.py +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/tests/services/lsp/test_lsp_client.py +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/tests/services/lsp/test_lsp_types.py +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/tests/test_api/__init__.py +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/tests/test_api/test_client.py +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/tests/test_api/test_codex_client.py +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/tests/test_api/test_compat.py +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/tests/test_api/test_openai_client.py +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/tests/test_bridge/test_core.py +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/tests/test_bridge/test_session_flow.py +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/tests/test_commands/__init__.py +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/tests/test_commands/test_cli.py +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/tests/test_commands/test_command_flows.py +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/tests/test_config/__init__.py +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/tests/test_config/test_paths.py +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/tests/test_config/test_settings.py +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/tests/test_coordinator/test_agent_definitions.py +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/tests/test_coordinator/test_coordinator_mode.py +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/tests/test_engine/__init__.py +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/tests/test_engine/test_media_block.py +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/tests/test_engine/test_tool_result_media.py +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/tests/test_hooks/__init__.py +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/tests/test_hooks_skills_plugins_real.py +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/tests/test_mcp/__init__.py +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/tests/test_mcp/test_integration.py +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/tests/test_mcp/test_stdio_flow.py +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/tests/test_memory/__init__.py +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/tests/test_memory/test_memdir.py +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/tests/test_merged_prs_on_autoagent.py +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/tests/test_permissions/__init__.py +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/tests/test_permissions/test_checker.py +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/tests/test_platforms.py +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/tests/test_plugins/__init__.py +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/tests/test_prompts/__init__.py +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/tests/test_prompts/test_claudemd.py +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/tests/test_prompts/test_system_prompt.py +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/tests/test_real_large_tasks.py +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/tests/test_sandbox/test_adapter.py +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/tests/test_services/test_cron.py +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/tests/test_skills/test_loader.py +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/tests/test_swarm/__init__.py +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/tests/test_swarm/test_types.py +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/tests/test_swarm/test_worktree.py +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/tests/test_tasks/test_manager.py +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/tests/test_tools/__init__.py +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/tests/test_tools/test_agent_tool.py +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/tests/test_tools/test_file_read_media.py +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/tests/test_tools/test_glob_tool.py +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/tests/test_tools/test_grep_tool.py +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/tests/test_tools/test_integration_flows.py +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/tests/test_tools/test_mcp_auth_tool.py +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/tests/test_tools/test_ripgrep.py +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/tests/test_tools/test_task_tools.py +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/tests/test_tools/test_team_tools.py +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/tests/test_tools/test_web_fetch_tool.py +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/tests/test_ui/__init__.py +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/tests/test_ui/test_modes.py +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/tests/test_ui/test_permission_store.py +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/tests/test_ui/test_react_launcher.py +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/tests/test_ui/test_textual_app.py +0 -0
- {illusion_code-0.1.2 → illusion_code-0.1.4}/tests/test_utils/test_shell.py +0 -0
- {illusion_code-0.1.2 → 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
|
+
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
|
|
1041
|
-
|
|
1042
|
-
|
|
|
1043
|
-
|
|
1044
|
-
| `
|
|
1045
|
-
| `
|
|
1046
|
-
| `
|
|
1047
|
-
|
|
1048
|
-
|
|
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
|
-
"
|
|
1081
|
+
"PreToolUse": [
|
|
1054
1082
|
{
|
|
1055
|
-
"
|
|
1056
|
-
"
|
|
1057
|
-
|
|
1058
|
-
|
|
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
|
-
"
|
|
1093
|
+
"PostToolUse": [
|
|
1062
1094
|
{
|
|
1063
|
-
"
|
|
1064
|
-
"
|
|
1065
|
-
|
|
1066
|
-
|
|
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
|
-
"
|
|
1105
|
+
"UserPromptSubmit": [
|
|
1070
1106
|
{
|
|
1071
|
-
"
|
|
1072
|
-
"
|
|
1073
|
-
|
|
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
|
-
####
|
|
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
|
-
|
|
1083
|
-
|
|
1084
|
-
|
|
|
1085
|
-
|
|
1086
|
-
| `
|
|
1087
|
-
| `
|
|
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
|
-
###
|
|
1230
|
+
### Plugin System
|
|
1157
1231
|
|
|
1158
|
-
|
|
1232
|
+
Plugins extend IllusionCode with skills, hooks, commands, and MCP servers. Plugin format is fully aligned with Claude Code.
|
|
1159
1233
|
|
|
1160
|
-
|
|
1161
|
-
- `POST_TOOL_USE` - After tool execution
|
|
1162
|
-
- `USER_PROMPT_SUBMIT` - After user prompt submission
|
|
1234
|
+
#### Plugin Directory Structure
|
|
1163
1235
|
|
|
1164
|
-
|
|
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
|
-
|
|
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
|
-
-
|
|
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
|
|
993
|
-
|
|
994
|
-
|
|
|
995
|
-
|
|
996
|
-
| `
|
|
997
|
-
| `
|
|
998
|
-
| `
|
|
999
|
-
|
|
1000
|
-
|
|
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
|
-
"
|
|
1033
|
+
"PreToolUse": [
|
|
1006
1034
|
{
|
|
1007
|
-
"
|
|
1008
|
-
"
|
|
1009
|
-
|
|
1010
|
-
|
|
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
|
-
"
|
|
1045
|
+
"PostToolUse": [
|
|
1014
1046
|
{
|
|
1015
|
-
"
|
|
1016
|
-
"
|
|
1017
|
-
|
|
1018
|
-
|
|
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
|
-
"
|
|
1057
|
+
"UserPromptSubmit": [
|
|
1022
1058
|
{
|
|
1023
|
-
"
|
|
1024
|
-
"
|
|
1025
|
-
|
|
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
|
-
####
|
|
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
|
-
|
|
1035
|
-
|
|
1036
|
-
|
|
|
1037
|
-
|
|
1038
|
-
| `
|
|
1039
|
-
| `
|
|
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
|
-
###
|
|
1182
|
+
### Plugin System
|
|
1109
1183
|
|
|
1110
|
-
|
|
1184
|
+
Plugins extend IllusionCode with skills, hooks, commands, and MCP servers. Plugin format is fully aligned with Claude Code.
|
|
1111
1185
|
|
|
1112
|
-
|
|
1113
|
-
- `POST_TOOL_USE` - After tool execution
|
|
1114
|
-
- `USER_PROMPT_SUBMIT` - After user prompt submission
|
|
1186
|
+
#### Plugin Directory Structure
|
|
1115
1187
|
|
|
1116
|
-
|
|
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
|
-
|
|
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
|
-
-
|
|
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
|
|