notebook-intelligence 5.2.0__tar.gz → 5.2.1__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.
- {notebook_intelligence-5.2.0 → notebook_intelligence-5.2.1}/PKG-INFO +1 -1
- {notebook_intelligence-5.2.0 → notebook_intelligence-5.2.1}/notebook_intelligence/_version.py +1 -1
- {notebook_intelligence-5.2.0 → notebook_intelligence-5.2.1}/notebook_intelligence/api.py +31 -5
- {notebook_intelligence-5.2.0 → notebook_intelligence-5.2.1}/notebook_intelligence/claude.py +10 -1
- {notebook_intelligence-5.2.0 → notebook_intelligence-5.2.1}/notebook_intelligence/extension.py +15 -5
- {notebook_intelligence-5.2.0 → notebook_intelligence-5.2.1}/notebook_intelligence/labextension/package.json +2 -2
- {notebook_intelligence-5.2.0 → notebook_intelligence-5.2.1}/notebook_intelligence/labextension/schemas/@plmbr/notebook-intelligence/package.json.orig +1 -1
- notebook_intelligence-5.2.1/notebook_intelligence/labextension/static/490.ca1d1006275ec50e58e8.js +1 -0
- notebook_intelligence-5.2.1/notebook_intelligence/labextension/static/537.211b1ccdcc268aa3fd2d.js +1 -0
- notebook_intelligence-5.2.0/notebook_intelligence/labextension/static/745.f63673e66e02301096f4.js → notebook_intelligence-5.2.1/notebook_intelligence/labextension/static/745.e077633fb1e31ec9da96.js +2 -2
- {notebook_intelligence-5.2.0 → notebook_intelligence-5.2.1}/notebook_intelligence/labextension/static/editor.worker.js +1 -1
- notebook_intelligence-5.2.1/notebook_intelligence/labextension/static/remoteEntry.66f4a7743a2091e5cae6.js +1 -0
- {notebook_intelligence-5.2.0 → notebook_intelligence-5.2.1}/package.json +1 -1
- notebook_intelligence-5.2.1/tests/test_user_input_wait.py +79 -0
- {notebook_intelligence-5.2.0 → notebook_intelligence-5.2.1}/tests/test_ws_callback_handler_leak.py +40 -3
- notebook_intelligence-5.2.0/notebook_intelligence/labextension/static/490.0bb3c8f42aa0d46ba19e.js +0 -1
- notebook_intelligence-5.2.0/notebook_intelligence/labextension/static/537.568c2bffd0f1d082b034.js +0 -1
- notebook_intelligence-5.2.0/notebook_intelligence/labextension/static/remoteEntry.542e0ded69d4368a8e30.js +0 -1
- {notebook_intelligence-5.2.0 → notebook_intelligence-5.2.1}/.copier-answers.yml +0 -0
- {notebook_intelligence-5.2.0 → notebook_intelligence-5.2.1}/.editorconfig +0 -0
- {notebook_intelligence-5.2.0 → notebook_intelligence-5.2.1}/.gitignore +0 -0
- {notebook_intelligence-5.2.0 → notebook_intelligence-5.2.1}/.husky/_/.gitignore +0 -0
- {notebook_intelligence-5.2.0 → notebook_intelligence-5.2.1}/.husky/_/applypatch-msg +0 -0
- {notebook_intelligence-5.2.0 → notebook_intelligence-5.2.1}/.husky/_/commit-msg +0 -0
- {notebook_intelligence-5.2.0 → notebook_intelligence-5.2.1}/.husky/_/h +0 -0
- {notebook_intelligence-5.2.0 → notebook_intelligence-5.2.1}/.husky/_/husky.sh +0 -0
- {notebook_intelligence-5.2.0 → notebook_intelligence-5.2.1}/.husky/_/post-applypatch +0 -0
- {notebook_intelligence-5.2.0 → notebook_intelligence-5.2.1}/.husky/_/post-checkout +0 -0
- {notebook_intelligence-5.2.0 → notebook_intelligence-5.2.1}/.husky/_/post-commit +0 -0
- {notebook_intelligence-5.2.0 → notebook_intelligence-5.2.1}/.husky/_/post-merge +0 -0
- {notebook_intelligence-5.2.0 → notebook_intelligence-5.2.1}/.husky/_/post-rewrite +0 -0
- {notebook_intelligence-5.2.0 → notebook_intelligence-5.2.1}/.husky/_/pre-applypatch +0 -0
- {notebook_intelligence-5.2.0 → notebook_intelligence-5.2.1}/.husky/_/pre-auto-gc +0 -0
- {notebook_intelligence-5.2.0 → notebook_intelligence-5.2.1}/.husky/_/pre-commit +0 -0
- {notebook_intelligence-5.2.0 → notebook_intelligence-5.2.1}/.husky/_/pre-merge-commit +0 -0
- {notebook_intelligence-5.2.0 → notebook_intelligence-5.2.1}/.husky/_/pre-push +0 -0
- {notebook_intelligence-5.2.0 → notebook_intelligence-5.2.1}/.husky/_/pre-rebase +0 -0
- {notebook_intelligence-5.2.0 → notebook_intelligence-5.2.1}/.husky/_/prepare-commit-msg +0 -0
- {notebook_intelligence-5.2.0 → notebook_intelligence-5.2.1}/.husky/pre-commit +0 -0
- {notebook_intelligence-5.2.0 → notebook_intelligence-5.2.1}/.prettierignore +0 -0
- {notebook_intelligence-5.2.0 → notebook_intelligence-5.2.1}/.vscode/extensions.json +0 -0
- {notebook_intelligence-5.2.0 → notebook_intelligence-5.2.1}/.vscode/settings.json +0 -0
- {notebook_intelligence-5.2.0 → notebook_intelligence-5.2.1}/.yarnrc.yml +0 -0
- {notebook_intelligence-5.2.0 → notebook_intelligence-5.2.1}/CHANGELOG.md +0 -0
- {notebook_intelligence-5.2.0 → notebook_intelligence-5.2.1}/CONTRIBUTING.md +0 -0
- {notebook_intelligence-5.2.0 → notebook_intelligence-5.2.1}/LICENSE +0 -0
- {notebook_intelligence-5.2.0 → notebook_intelligence-5.2.1}/PRIVACY.md +0 -0
- {notebook_intelligence-5.2.0 → notebook_intelligence-5.2.1}/README.md +0 -0
- {notebook_intelligence-5.2.0 → notebook_intelligence-5.2.1}/RELEASE.md +0 -0
- {notebook_intelligence-5.2.0 → notebook_intelligence-5.2.1}/SECURITY.md +0 -0
- {notebook_intelligence-5.2.0 → notebook_intelligence-5.2.1}/benchmarks/claude_perf/README.md +0 -0
- {notebook_intelligence-5.2.0 → notebook_intelligence-5.2.1}/benchmarks/claude_perf/bench_nbi_ws.py +0 -0
- {notebook_intelligence-5.2.0 → notebook_intelligence-5.2.1}/benchmarks/claude_perf/bench_runner.py +0 -0
- {notebook_intelligence-5.2.0 → notebook_intelligence-5.2.1}/benchmarks/claude_perf/bench_terminal.py +0 -0
- {notebook_intelligence-5.2.0 → notebook_intelligence-5.2.1}/benchmarks/claude_perf/prompts.py +0 -0
- {notebook_intelligence-5.2.0 → notebook_intelligence-5.2.1}/benchmarks/claude_perf/report.py +0 -0
- {notebook_intelligence-5.2.0 → notebook_intelligence-5.2.1}/benchmarks/claude_perf/stats.py +0 -0
- {notebook_intelligence-5.2.0 → notebook_intelligence-5.2.1}/docs/admin-guide.md +0 -0
- {notebook_intelligence-5.2.0 → notebook_intelligence-5.2.1}/docs/admin-tour-config.md +0 -0
- {notebook_intelligence-5.2.0 → notebook_intelligence-5.2.1}/docs/rulesets.md +0 -0
- {notebook_intelligence-5.2.0 → notebook_intelligence-5.2.1}/docs/skills.md +0 -0
- {notebook_intelligence-5.2.0 → notebook_intelligence-5.2.1}/docs/troubleshooting.md +0 -0
- {notebook_intelligence-5.2.0 → notebook_intelligence-5.2.1}/install.json +0 -0
- {notebook_intelligence-5.2.0 → notebook_intelligence-5.2.1}/jest.config.js +0 -0
- {notebook_intelligence-5.2.0 → notebook_intelligence-5.2.1}/jupyter-config/server-config/notebook_intelligence.json +0 -0
- {notebook_intelligence-5.2.0 → notebook_intelligence-5.2.1}/notebook_intelligence/__init__.py +0 -0
- {notebook_intelligence-5.2.0 → notebook_intelligence-5.2.1}/notebook_intelligence/_claude_cli.py +0 -0
- {notebook_intelligence-5.2.0 → notebook_intelligence-5.2.1}/notebook_intelligence/ai_service_manager.py +0 -0
- {notebook_intelligence-5.2.0 → notebook_intelligence-5.2.1}/notebook_intelligence/base_chat_participant.py +0 -0
- {notebook_intelligence-5.2.0 → notebook_intelligence-5.2.1}/notebook_intelligence/built_in_toolsets.py +0 -0
- {notebook_intelligence-5.2.0 → notebook_intelligence-5.2.1}/notebook_intelligence/cell_output.py +0 -0
- {notebook_intelligence-5.2.0 → notebook_intelligence-5.2.1}/notebook_intelligence/claude_mcp_manager.py +0 -0
- {notebook_intelligence-5.2.0 → notebook_intelligence-5.2.1}/notebook_intelligence/claude_sessions.py +0 -0
- {notebook_intelligence-5.2.0 → notebook_intelligence-5.2.1}/notebook_intelligence/config.py +0 -0
- {notebook_intelligence-5.2.0 → notebook_intelligence-5.2.1}/notebook_intelligence/context_factory.py +0 -0
- {notebook_intelligence-5.2.0 → notebook_intelligence-5.2.1}/notebook_intelligence/feature_flags.py +0 -0
- {notebook_intelligence-5.2.0 → notebook_intelligence-5.2.1}/notebook_intelligence/github_copilot.py +0 -0
- {notebook_intelligence-5.2.0 → notebook_intelligence-5.2.1}/notebook_intelligence/github_copilot_chat_participant.py +0 -0
- {notebook_intelligence-5.2.0 → notebook_intelligence-5.2.1}/notebook_intelligence/labextension/schemas/@plmbr/notebook-intelligence/plugin.json +0 -0
- {notebook_intelligence-5.2.0 → notebook_intelligence-5.2.1}/notebook_intelligence/labextension/static/196.da0c2020639344d5c419.js +0 -0
- {notebook_intelligence-5.2.0 → notebook_intelligence-5.2.1}/notebook_intelligence/labextension/static/1b55f12eca93ba6743e7.ttf +0 -0
- {notebook_intelligence-5.2.0 → notebook_intelligence-5.2.1}/notebook_intelligence/labextension/static/327.47473c656f6c27efa1dc.js +0 -0
- {notebook_intelligence-5.2.0 → notebook_intelligence-5.2.1}/notebook_intelligence/labextension/static/327.47473c656f6c27efa1dc.js.LICENSE.txt +0 -0
- {notebook_intelligence-5.2.0 → notebook_intelligence-5.2.1}/notebook_intelligence/labextension/static/631.f00d05d8305a78ec8301.js +0 -0
- {notebook_intelligence-5.2.0 → notebook_intelligence-5.2.1}/notebook_intelligence/labextension/static/671.1b1a53f5f75bff82950b.js +0 -0
- {notebook_intelligence-5.2.0 → notebook_intelligence-5.2.1}/notebook_intelligence/labextension/static/694.2ebfa9714301d9260bf0.js +0 -0
- {notebook_intelligence-5.2.0 → notebook_intelligence-5.2.1}/notebook_intelligence/labextension/static/728.14572b771377e7f3a104.js +0 -0
- /notebook_intelligence-5.2.0/notebook_intelligence/labextension/static/745.f63673e66e02301096f4.js.LICENSE.txt → /notebook_intelligence-5.2.1/notebook_intelligence/labextension/static/745.e077633fb1e31ec9da96.js.LICENSE.txt +0 -0
- {notebook_intelligence-5.2.0 → notebook_intelligence-5.2.1}/notebook_intelligence/labextension/static/977.b917f705175326af0e5d.js +0 -0
- {notebook_intelligence-5.2.0 → notebook_intelligence-5.2.1}/notebook_intelligence/labextension/static/be02dcbf2787b0b29ec8.module.wasm +0 -0
- {notebook_intelligence-5.2.0 → notebook_intelligence-5.2.1}/notebook_intelligence/labextension/static/e589c9ba04e3e5a90081.module.wasm +0 -0
- {notebook_intelligence-5.2.0 → notebook_intelligence-5.2.1}/notebook_intelligence/labextension/static/editor.worker.js.LICENSE.txt +0 -0
- {notebook_intelligence-5.2.0 → notebook_intelligence-5.2.1}/notebook_intelligence/labextension/static/style.js +0 -0
- {notebook_intelligence-5.2.0 → notebook_intelligence-5.2.1}/notebook_intelligence/labextension/static/third-party-licenses.json +0 -0
- {notebook_intelligence-5.2.0 → notebook_intelligence-5.2.1}/notebook_intelligence/llm_providers/github_copilot_llm_provider.py +0 -0
- {notebook_intelligence-5.2.0 → notebook_intelligence-5.2.1}/notebook_intelligence/llm_providers/litellm_compatible_llm_provider.py +0 -0
- {notebook_intelligence-5.2.0 → notebook_intelligence-5.2.1}/notebook_intelligence/llm_providers/ollama_llm_provider.py +0 -0
- {notebook_intelligence-5.2.0 → notebook_intelligence-5.2.1}/notebook_intelligence/llm_providers/openai_compatible_llm_provider.py +0 -0
- {notebook_intelligence-5.2.0 → notebook_intelligence-5.2.1}/notebook_intelligence/mcp_client.py +0 -0
- {notebook_intelligence-5.2.0 → notebook_intelligence-5.2.1}/notebook_intelligence/mcp_config_validation.py +0 -0
- {notebook_intelligence-5.2.0 → notebook_intelligence-5.2.1}/notebook_intelligence/mcp_manager.py +0 -0
- {notebook_intelligence-5.2.0 → notebook_intelligence-5.2.1}/notebook_intelligence/mcp_policy.py +0 -0
- {notebook_intelligence-5.2.0 → notebook_intelligence-5.2.1}/notebook_intelligence/plugin_manager.py +0 -0
- {notebook_intelligence-5.2.0 → notebook_intelligence-5.2.1}/notebook_intelligence/prompts.py +0 -0
- {notebook_intelligence-5.2.0 → notebook_intelligence-5.2.1}/notebook_intelligence/rule_injector.py +0 -0
- {notebook_intelligence-5.2.0 → notebook_intelligence-5.2.1}/notebook_intelligence/rule_manager.py +0 -0
- {notebook_intelligence-5.2.0 → notebook_intelligence-5.2.1}/notebook_intelligence/ruleset.py +0 -0
- {notebook_intelligence-5.2.0 → notebook_intelligence-5.2.1}/notebook_intelligence/skill_github_import.py +0 -0
- {notebook_intelligence-5.2.0 → notebook_intelligence-5.2.1}/notebook_intelligence/skill_manager.py +0 -0
- {notebook_intelligence-5.2.0 → notebook_intelligence-5.2.1}/notebook_intelligence/skill_manifest.py +0 -0
- {notebook_intelligence-5.2.0 → notebook_intelligence-5.2.1}/notebook_intelligence/skill_reconciler.py +0 -0
- {notebook_intelligence-5.2.0 → notebook_intelligence-5.2.1}/notebook_intelligence/skillset.py +0 -0
- {notebook_intelligence-5.2.0 → notebook_intelligence-5.2.1}/notebook_intelligence/tour_config.py +0 -0
- {notebook_intelligence-5.2.0 → notebook_intelligence-5.2.1}/notebook_intelligence/util.py +0 -0
- {notebook_intelligence-5.2.0 → notebook_intelligence-5.2.1}/pyproject.toml +0 -0
- {notebook_intelligence-5.2.0 → notebook_intelligence-5.2.1}/schema/plugin.json +0 -0
- {notebook_intelligence-5.2.0 → notebook_intelligence-5.2.1}/setup.py +0 -0
- {notebook_intelligence-5.2.0 → notebook_intelligence-5.2.1}/tests/conftest.py +0 -0
- {notebook_intelligence-5.2.0 → notebook_intelligence-5.2.1}/tests/fixtures/rules/01-test-global.md +0 -0
- {notebook_intelligence-5.2.0 → notebook_intelligence-5.2.1}/tests/fixtures/rules/02-test-security.md +0 -0
- {notebook_intelligence-5.2.0 → notebook_intelligence-5.2.1}/tests/fixtures/rules/03-invalid-rule.md +0 -0
- {notebook_intelligence-5.2.0 → notebook_intelligence-5.2.1}/tests/fixtures/rules/modes/agent/01-test-production.md +0 -0
- {notebook_intelligence-5.2.0 → notebook_intelligence-5.2.1}/tests/fixtures/rules/modes/ask/01-test-exploration.md +0 -0
- {notebook_intelligence-5.2.0 → notebook_intelligence-5.2.1}/tests/fixtures/rules/modes/inline-chat/01-test-quick.md +0 -0
- {notebook_intelligence-5.2.0 → notebook_intelligence-5.2.1}/tests/test_ai_service_manager_integration.py +0 -0
- {notebook_intelligence-5.2.0 → notebook_intelligence-5.2.1}/tests/test_api_hygiene.py +0 -0
- {notebook_intelligence-5.2.0 → notebook_intelligence-5.2.1}/tests/test_base_chat_participant_integration.py +0 -0
- {notebook_intelligence-5.2.0 → notebook_intelligence-5.2.1}/tests/test_builtin_file_read.py +0 -0
- {notebook_intelligence-5.2.0 → notebook_intelligence-5.2.1}/tests/test_builtin_toolset_cwd_sandbox.py +0 -0
- {notebook_intelligence-5.2.0 → notebook_intelligence-5.2.1}/tests/test_cell_output.py +0 -0
- {notebook_intelligence-5.2.0 → notebook_intelligence-5.2.1}/tests/test_cell_output_features_response.py +0 -0
- {notebook_intelligence-5.2.0 → notebook_intelligence-5.2.1}/tests/test_claude_client.py +0 -0
- {notebook_intelligence-5.2.0 → notebook_intelligence-5.2.1}/tests/test_claude_mcp_manager.py +0 -0
- {notebook_intelligence-5.2.0 → notebook_intelligence-5.2.1}/tests/test_claude_models.py +0 -0
- {notebook_intelligence-5.2.0 → notebook_intelligence-5.2.1}/tests/test_claude_sessions.py +0 -0
- {notebook_intelligence-5.2.0 → notebook_intelligence-5.2.1}/tests/test_claude_sessions_handler.py +0 -0
- {notebook_intelligence-5.2.0 → notebook_intelligence-5.2.1}/tests/test_claude_system_prompt.py +0 -0
- {notebook_intelligence-5.2.0 → notebook_intelligence-5.2.1}/tests/test_claude_tool_humanizer.py +0 -0
- {notebook_intelligence-5.2.0 → notebook_intelligence-5.2.1}/tests/test_claude_tool_path_sandbox.py +0 -0
- {notebook_intelligence-5.2.0 → notebook_intelligence-5.2.1}/tests/test_coding_agent_launchers.py +0 -0
- {notebook_intelligence-5.2.0 → notebook_intelligence-5.2.1}/tests/test_config_atomic_save.py +0 -0
- {notebook_intelligence-5.2.0 → notebook_intelligence-5.2.1}/tests/test_config_integration.py +0 -0
- {notebook_intelligence-5.2.0 → notebook_intelligence-5.2.1}/tests/test_context_factory.py +0 -0
- {notebook_intelligence-5.2.0 → notebook_intelligence-5.2.1}/tests/test_default_password_refusal.py +0 -0
- {notebook_intelligence-5.2.0 → notebook_intelligence-5.2.1}/tests/test_end_to_end_rule_integration.py +0 -0
- {notebook_intelligence-5.2.0 → notebook_intelligence-5.2.1}/tests/test_feature_flags.py +0 -0
- {notebook_intelligence-5.2.0 → notebook_intelligence-5.2.1}/tests/test_feedback.py +0 -0
- {notebook_intelligence-5.2.0 → notebook_intelligence-5.2.1}/tests/test_file_upload.py +0 -0
- {notebook_intelligence-5.2.0 → notebook_intelligence-5.2.1}/tests/test_github_copilot_llm_provider.py +0 -0
- {notebook_intelligence-5.2.0 → notebook_intelligence-5.2.1}/tests/test_github_copilot_user_data_mode.py +0 -0
- {notebook_intelligence-5.2.0 → notebook_intelligence-5.2.1}/tests/test_image_context.py +0 -0
- {notebook_intelligence-5.2.0 → notebook_intelligence-5.2.1}/tests/test_lazy_provider_imports.py +0 -0
- {notebook_intelligence-5.2.0 → notebook_intelligence-5.2.1}/tests/test_mcp_client_shim.py +0 -0
- {notebook_intelligence-5.2.0 → notebook_intelligence-5.2.1}/tests/test_mcp_config_validation.py +0 -0
- {notebook_intelligence-5.2.0 → notebook_intelligence-5.2.1}/tests/test_mcp_manager.py +0 -0
- {notebook_intelligence-5.2.0 → notebook_intelligence-5.2.1}/tests/test_mcp_manager_command_allowlist.py +0 -0
- {notebook_intelligence-5.2.0 → notebook_intelligence-5.2.1}/tests/test_mcp_policy.py +0 -0
- {notebook_intelligence-5.2.0 → notebook_intelligence-5.2.1}/tests/test_models.py +0 -0
- {notebook_intelligence-5.2.0 → notebook_intelligence-5.2.1}/tests/test_openai_compatible_llm_provider.py +0 -0
- {notebook_intelligence-5.2.0 → notebook_intelligence-5.2.1}/tests/test_permission_modes.py +0 -0
- {notebook_intelligence-5.2.0 → notebook_intelligence-5.2.1}/tests/test_plugin_manager.py +0 -0
- {notebook_intelligence-5.2.0 → notebook_intelligence-5.2.1}/tests/test_policy_gate.py +0 -0
- {notebook_intelligence-5.2.0 → notebook_intelligence-5.2.1}/tests/test_process_tree_teardown.py +0 -0
- {notebook_intelligence-5.2.0 → notebook_intelligence-5.2.1}/tests/test_redact_process_secrets.py +0 -0
- {notebook_intelligence-5.2.0 → notebook_intelligence-5.2.1}/tests/test_response_emitter.py +0 -0
- {notebook_intelligence-5.2.0 → notebook_intelligence-5.2.1}/tests/test_rule_auto_reload.py +0 -0
- {notebook_intelligence-5.2.0 → notebook_intelligence-5.2.1}/tests/test_rule_injector.py +0 -0
- {notebook_intelligence-5.2.0 → notebook_intelligence-5.2.1}/tests/test_rule_manager.py +0 -0
- {notebook_intelligence-5.2.0 → notebook_intelligence-5.2.1}/tests/test_safe_anchor_uri.py +0 -0
- {notebook_intelligence-5.2.0 → notebook_intelligence-5.2.1}/tests/test_skill_fetch_redirects.py +0 -0
- {notebook_intelligence-5.2.0 → notebook_intelligence-5.2.1}/tests/test_skill_github_import.py +0 -0
- {notebook_intelligence-5.2.0 → notebook_intelligence-5.2.1}/tests/test_skill_manager.py +0 -0
- {notebook_intelligence-5.2.0 → notebook_intelligence-5.2.1}/tests/test_skill_manifest.py +0 -0
- {notebook_intelligence-5.2.0 → notebook_intelligence-5.2.1}/tests/test_skill_reconciler.py +0 -0
- {notebook_intelligence-5.2.0 → notebook_intelligence-5.2.1}/tests/test_skills_handlers.py +0 -0
- {notebook_intelligence-5.2.0 → notebook_intelligence-5.2.1}/tests/test_tour_config.py +0 -0
- {notebook_intelligence-5.2.0 → notebook_intelligence-5.2.1}/tests/test_websocket_handler_integration.py +0 -0
- {notebook_intelligence-5.2.0 → notebook_intelligence-5.2.1}/tests/test_ws_handler_auth.py +0 -0
- {notebook_intelligence-5.2.0 → notebook_intelligence-5.2.1}/tests/ts/__mocks__/jupyterlab-apputils.ts +0 -0
- {notebook_intelligence-5.2.0 → notebook_intelligence-5.2.1}/tests/ts/__mocks__/jupyterlab-filebrowser.ts +0 -0
- {notebook_intelligence-5.2.0 → notebook_intelligence-5.2.1}/tests/ts/__mocks__/svg.ts +0 -0
- {notebook_intelligence-5.2.0 → notebook_intelligence-5.2.1}/tests/ts/__mocks__/tiktoken.ts +0 -0
- {notebook_intelligence-5.2.0 → notebook_intelligence-5.2.1}/tests/ts/ask-user-question.test.tsx +0 -0
- {notebook_intelligence-5.2.0 → notebook_intelligence-5.2.1}/tests/ts/cell-output-bundle.test.ts +0 -0
- {notebook_intelligence-5.2.0 → notebook_intelligence-5.2.1}/tests/ts/cell-output-features.test.ts +0 -0
- {notebook_intelligence-5.2.0 → notebook_intelligence-5.2.1}/tests/ts/cell-output-toolbar.test.ts +0 -0
- {notebook_intelligence-5.2.0 → notebook_intelligence-5.2.1}/tests/ts/chat-progress-feedback.test.ts +0 -0
- {notebook_intelligence-5.2.0 → notebook_intelligence-5.2.1}/tests/ts/checkbox.test.tsx +0 -0
- {notebook_intelligence-5.2.0 → notebook_intelligence-5.2.1}/tests/ts/choose-workspace-directory.test.ts +0 -0
- {notebook_intelligence-5.2.0 → notebook_intelligence-5.2.1}/tests/ts/claude-mcp-paste.test.ts +0 -0
- {notebook_intelligence-5.2.0 → notebook_intelligence-5.2.1}/tests/ts/coding-agent-launchers.test.ts +0 -0
- {notebook_intelligence-5.2.0 → notebook_intelligence-5.2.1}/tests/ts/launcher-picker.test.tsx +0 -0
- {notebook_intelligence-5.2.0 → notebook_intelligence-5.2.1}/tests/ts/markdown-renderer.test.tsx +0 -0
- {notebook_intelligence-5.2.0 → notebook_intelligence-5.2.1}/tests/ts/mcp-util.test.ts +0 -0
- {notebook_intelligence-5.2.0 → notebook_intelligence-5.2.1}/tests/ts/notebook-generation.test.ts +0 -0
- {notebook_intelligence-5.2.0 → notebook_intelligence-5.2.1}/tests/ts/open-file-refresh-watcher.test.ts +0 -0
- {notebook_intelligence-5.2.0 → notebook_intelligence-5.2.1}/tests/ts/permission-mode-select.test.tsx +0 -0
- {notebook_intelligence-5.2.0 → notebook_intelligence-5.2.1}/tests/ts/plugins-panel.test.tsx +0 -0
- {notebook_intelligence-5.2.0 → notebook_intelligence-5.2.1}/tests/ts/safe-anchor.test.tsx +0 -0
- {notebook_intelligence-5.2.0 → notebook_intelligence-5.2.1}/tests/ts/setup.ts +0 -0
- {notebook_intelligence-5.2.0 → notebook_intelligence-5.2.1}/tests/ts/skill-wire-format.test.ts +0 -0
- {notebook_intelligence-5.2.0 → notebook_intelligence-5.2.1}/tests/ts/task-target-notebook.test.ts +0 -0
- {notebook_intelligence-5.2.0 → notebook_intelligence-5.2.1}/tests/ts/terminal-drag.test.ts +0 -0
- {notebook_intelligence-5.2.0 → notebook_intelligence-5.2.1}/tests/ts/tool-call-card.test.tsx +0 -0
- {notebook_intelligence-5.2.0 → notebook_intelligence-5.2.1}/tests/ts/tool-call-group.test.tsx +0 -0
- {notebook_intelligence-5.2.0 → notebook_intelligence-5.2.1}/tests/ts/tool-call-stream.test.ts +0 -0
- {notebook_intelligence-5.2.0 → notebook_intelligence-5.2.1}/tests/ts/tour-config.test.ts +0 -0
- {notebook_intelligence-5.2.0 → notebook_intelligence-5.2.1}/tests/ts/tour-events.test.ts +0 -0
- {notebook_intelligence-5.2.0 → notebook_intelligence-5.2.1}/tests/ts/tour-overlay.test.tsx +0 -0
- {notebook_intelligence-5.2.0 → notebook_intelligence-5.2.1}/tests/ts/tour-state.test.ts +0 -0
- {notebook_intelligence-5.2.0 → notebook_intelligence-5.2.1}/tests/ts/tsconfig.json +0 -0
- {notebook_intelligence-5.2.0 → notebook_intelligence-5.2.1}/tests/ts/utils.test.ts +0 -0
- {notebook_intelligence-5.2.0 → notebook_intelligence-5.2.1}/tests/ts/workspace-skips.test.ts +0 -0
- {notebook_intelligence-5.2.0 → notebook_intelligence-5.2.1}/tsconfig.json +0 -0
- {notebook_intelligence-5.2.0 → notebook_intelligence-5.2.1}/ui-tests/.eslintrc.js +0 -0
- {notebook_intelligence-5.2.0 → notebook_intelligence-5.2.1}/ui-tests/README.md +0 -0
- {notebook_intelligence-5.2.0 → notebook_intelligence-5.2.1}/ui-tests/jupyter_server_test_config.py +0 -0
- {notebook_intelligence-5.2.0 → notebook_intelligence-5.2.1}/ui-tests/package.json +0 -0
- {notebook_intelligence-5.2.0 → notebook_intelligence-5.2.1}/ui-tests/playwright.config.ts +0 -0
- {notebook_intelligence-5.2.0 → notebook_intelligence-5.2.1}/ui-tests/tests/cell-output.spec.ts +0 -0
- {notebook_intelligence-5.2.0 → notebook_intelligence-5.2.1}/ui-tests/tests/chat-sidebar.spec.ts +0 -0
- {notebook_intelligence-5.2.0 → notebook_intelligence-5.2.1}/ui-tests/tests/claude-mcp-patch.spec.ts +0 -0
- {notebook_intelligence-5.2.0 → notebook_intelligence-5.2.1}/ui-tests/tests/extension.spec.ts +0 -0
- {notebook_intelligence-5.2.0 → notebook_intelligence-5.2.1}/ui-tests/tests/helpers.ts +0 -0
- {notebook_intelligence-5.2.0 → notebook_intelligence-5.2.1}/ui-tests/tests/launcher.spec.ts +0 -0
- {notebook_intelligence-5.2.0 → notebook_intelligence-5.2.1}/ui-tests/tests/notebook-toolbar.spec.ts +0 -0
- {notebook_intelligence-5.2.0 → notebook_intelligence-5.2.1}/ui-tests/tsconfig.json +0 -0
- {notebook_intelligence-5.2.0 → notebook_intelligence-5.2.1}/ui-tests/yarn.lock +0 -0
- {notebook_intelligence-5.2.0 → notebook_intelligence-5.2.1}/webpack.config.js +0 -0
- {notebook_intelligence-5.2.0 → notebook_intelligence-5.2.1}/yarn.lock +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: notebook_intelligence
|
|
3
|
-
Version: 5.2.
|
|
3
|
+
Version: 5.2.1
|
|
4
4
|
Summary: AI coding assistant for JupyterLab
|
|
5
5
|
Project-URL: Homepage, https://github.com/plmbr/notebook-intelligence
|
|
6
6
|
Project-URL: Bug Tracker, https://github.com/plmbr/notebook-intelligence/issues
|
|
@@ -2,6 +2,7 @@
|
|
|
2
2
|
|
|
3
3
|
import asyncio
|
|
4
4
|
import json
|
|
5
|
+
import time
|
|
5
6
|
from typing import Any, Callable, Dict, Union, Optional
|
|
6
7
|
from dataclasses import asdict, dataclass
|
|
7
8
|
from enum import Enum
|
|
@@ -309,6 +310,24 @@ class ChatResponse:
|
|
|
309
310
|
self._user_input_signal: SignalImpl = SignalImpl()
|
|
310
311
|
self._run_ui_command_response_signal: SignalImpl = SignalImpl()
|
|
311
312
|
self.participant_id = ''
|
|
313
|
+
# Cumulative wall-clock seconds spent blocked on a user reply (tool
|
|
314
|
+
# approval, plan confirm, AskUserQuestion), plus the start of any wait
|
|
315
|
+
# currently in progress. Consumers subtract this from a response
|
|
316
|
+
# timeout so a slow human approval isn't mistaken for an unresponsive
|
|
317
|
+
# agent, which previously timed out the turn and wedged the next one
|
|
318
|
+
# (issue #381).
|
|
319
|
+
self._user_input_wait_total = 0.0
|
|
320
|
+
self._user_input_wait_started = None
|
|
321
|
+
|
|
322
|
+
@property
|
|
323
|
+
def user_input_wait_seconds(self) -> float:
|
|
324
|
+
"""Total time this response has spent awaiting user input, including
|
|
325
|
+
any wait still in progress."""
|
|
326
|
+
total = self._user_input_wait_total
|
|
327
|
+
started = self._user_input_wait_started
|
|
328
|
+
if started is not None:
|
|
329
|
+
total += time.time() - started
|
|
330
|
+
return total
|
|
312
331
|
|
|
313
332
|
@property
|
|
314
333
|
def message_id(self) -> str:
|
|
@@ -335,12 +354,19 @@ class ChatResponse:
|
|
|
335
354
|
resp["data"] = data['data']
|
|
336
355
|
|
|
337
356
|
response.user_input_signal.connect(_on_user_input)
|
|
357
|
+
response._user_input_wait_started = time.time()
|
|
338
358
|
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
359
|
+
try:
|
|
360
|
+
while True:
|
|
361
|
+
if resp["data"] is not None:
|
|
362
|
+
return resp["data"]
|
|
363
|
+
await asyncio.sleep(0.1)
|
|
364
|
+
finally:
|
|
365
|
+
response.user_input_signal.disconnect(_on_user_input)
|
|
366
|
+
started = response._user_input_wait_started
|
|
367
|
+
if started is not None:
|
|
368
|
+
response._user_input_wait_total += time.time() - started
|
|
369
|
+
response._user_input_wait_started = None
|
|
344
370
|
|
|
345
371
|
async def run_ui_command(self, command: str, args: dict = {}) -> None:
|
|
346
372
|
raise NotImplementedError
|
|
@@ -1175,6 +1175,12 @@ class ClaudeCodeClient():
|
|
|
1175
1175
|
|
|
1176
1176
|
start_time = time.time()
|
|
1177
1177
|
last_heartbeat = start_time
|
|
1178
|
+
# Time the agent spends blocked on a tool approval (or any user input)
|
|
1179
|
+
# must not count toward the response timeout: a slow human reply isn't
|
|
1180
|
+
# an unresponsive agent. Without this, a long approval wait timed out
|
|
1181
|
+
# the turn and left the worker mid-request, wedging later prompts
|
|
1182
|
+
# (issue #381).
|
|
1183
|
+
response_obj = event_args.get("response") if event_args else None
|
|
1178
1184
|
|
|
1179
1185
|
try:
|
|
1180
1186
|
while True:
|
|
@@ -1227,7 +1233,10 @@ class ClaudeCodeClient():
|
|
|
1227
1233
|
"success": False,
|
|
1228
1234
|
"error": "Claude agent is not running",
|
|
1229
1235
|
}
|
|
1230
|
-
|
|
1236
|
+
elapsed = time.time() - start_time
|
|
1237
|
+
if response_obj is not None:
|
|
1238
|
+
elapsed -= response_obj.user_input_wait_seconds
|
|
1239
|
+
if elapsed > CLAUDE_AGENT_CLIENT_RESPONSE_TIMEOUT:
|
|
1231
1240
|
return {
|
|
1232
1241
|
"data": None,
|
|
1233
1242
|
"success": False,
|
{notebook_intelligence-5.2.0 → notebook_intelligence-5.2.1}/notebook_intelligence/extension.py
RENAMED
|
@@ -2632,11 +2632,21 @@ class WebsocketCopilotHandler(WebSocketMixin, websocket.WebSocketHandler, Jupyte
|
|
|
2632
2632
|
handlers.cancel_token.cancel_request()
|
|
2633
2633
|
|
|
2634
2634
|
def on_close(self):
|
|
2635
|
-
#
|
|
2636
|
-
#
|
|
2637
|
-
#
|
|
2638
|
-
#
|
|
2639
|
-
#
|
|
2635
|
+
# Cancel any requests still in flight at disconnect, then drop their
|
|
2636
|
+
# handlers. Clearing alone isn't enough: a turn parked on a tool
|
|
2637
|
+
# approval no longer self-resolves via the response timeout (the
|
|
2638
|
+
# approval wait is excluded from it, #381), so without an explicit
|
|
2639
|
+
# cancel its worker thread and the Claude subprocess would spin until
|
|
2640
|
+
# the server restarts. Cancelling makes the poll loop tear the
|
|
2641
|
+
# subprocess down and return.
|
|
2642
|
+
# Snapshot first: a worker thread finishing its request pops its own
|
|
2643
|
+
# entry (see _run_request_thread), which would otherwise raise
|
|
2644
|
+
# "dictionary changed size during iteration" here on the IOLoop thread.
|
|
2645
|
+
for handlers in list(self._messageCallbackHandlers.values()):
|
|
2646
|
+
try:
|
|
2647
|
+
handlers.cancel_token.cancel_request()
|
|
2648
|
+
except Exception as e:
|
|
2649
|
+
log.warning(f"Error cancelling in-flight request on close: {e}")
|
|
2640
2650
|
self._messageCallbackHandlers.clear()
|
|
2641
2651
|
|
|
2642
2652
|
async def handle_inline_completions(prefix, suffix, language, filename, response_emitter, cancel_token):
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@plmbr/notebook-intelligence",
|
|
3
|
-
"version": "5.2.
|
|
3
|
+
"version": "5.2.1",
|
|
4
4
|
"description": "AI coding assistant for JupyterLab",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"AI",
|
|
@@ -152,7 +152,7 @@
|
|
|
152
152
|
}
|
|
153
153
|
},
|
|
154
154
|
"_build": {
|
|
155
|
-
"load": "static/remoteEntry.
|
|
155
|
+
"load": "static/remoteEntry.66f4a7743a2091e5cae6.js",
|
|
156
156
|
"extension": "./extension",
|
|
157
157
|
"style": "./style"
|
|
158
158
|
}
|