MetaList 0.11.0__tar.gz → 0.12.0__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.
- {metalist-0.11.0 → metalist-0.12.0}/PKG-INFO +11 -1
- {metalist-0.11.0 → metalist-0.12.0}/README.md +10 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/api/routes/ai.py +8 -57
- {metalist-0.11.0 → metalist-0.12.0}/app/api/routes/notes.py +8 -6
- {metalist-0.11.0 → metalist-0.12.0}/app/api/transactions.py +3 -1
- {metalist-0.11.0 → metalist-0.12.0}/app/exception_boundaries.py +3 -1
- {metalist-0.11.0 → metalist-0.12.0}/app/main.py +8 -1
- {metalist-0.11.0 → metalist-0.12.0}/app/models/utils.py +4 -1
- metalist-0.12.0/app/services/agent/agent_loop.py +556 -0
- metalist-0.12.0/app/services/agent/agent_tools.py +464 -0
- metalist-0.12.0/app/services/agent/citation_tokens.py +62 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/services/agent/context.py +59 -258
- metalist-0.12.0/app/services/agent/execution_errors.py +7 -0
- metalist-0.12.0/app/services/agent/failure_explanations.py +164 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/services/agent/help_catalog.py +2 -23
- {metalist-0.11.0 → metalist-0.12.0}/app/services/agent/history.py +19 -1
- {metalist-0.11.0 → metalist-0.12.0}/app/services/agent/inference.py +29 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/services/agent/investigation.py +67 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/services/agent/model_policy.py +1 -2
- metalist-0.12.0/app/services/agent/note_aliases.py +77 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/services/agent/openai_inference.py +169 -1
- {metalist-0.11.0 → metalist-0.12.0}/app/services/agent/prompt_settings.py +8 -49
- {metalist-0.11.0 → metalist-0.12.0}/app/services/agent/prompts/__init__.py +1 -1
- metalist-0.12.0/app/services/agent/prompts/agent.md +125 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/services/agent/prompts/final-response.md +3 -5
- metalist-0.12.0/app/services/agent/prompts/system.md +28 -0
- metalist-0.12.0/app/services/agent/release_notes.py +50 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/services/agent/runtime.py +90 -1341
- {metalist-0.11.0 → metalist-0.12.0}/app/services/agent/scope.py +16 -1
- metalist-0.12.0/app/services/agent/skill_settings.py +130 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/services/agent/skills/__init__.py +0 -2
- {metalist-0.11.0 → metalist-0.12.0}/app/services/agent/skills/help-ai.md +45 -22
- {metalist-0.11.0 → metalist-0.12.0}/app/services/agent/skills/help-formatting.md +1 -1
- {metalist-0.11.0 → metalist-0.12.0}/app/services/agent/skills/help-menus.md +4 -8
- {metalist-0.11.0 → metalist-0.12.0}/app/services/agent/skills/help-notes.md +17 -3
- {metalist-0.11.0 → metalist-0.12.0}/app/services/agent/skills/help-privacy.md +1 -1
- metalist-0.12.0/app/services/agent/skills/help-releases.md +100 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/services/agent/skills/help-search.md +1 -1
- {metalist-0.11.0 → metalist-0.12.0}/app/services/agent/structured_inference.py +34 -17
- {metalist-0.11.0 → metalist-0.12.0}/app/services/agent/tagging.py +0 -15
- {metalist-0.11.0 → metalist-0.12.0}/app/services/agent/tagging_run.py +49 -37
- metalist-0.12.0/app/services/agent/tool_calling.py +147 -0
- metalist-0.12.0/app/services/agent/web_actions.py +214 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/services/agent/web_capabilities.py +21 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/services/agent/web_evidence.py +22 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/services/agent/web_fetch.py +16 -3
- {metalist-0.11.0 → metalist-0.12.0}/app/services/ai_chat_stream.py +5 -2
- {metalist-0.11.0 → metalist-0.12.0}/app/services/bulk_operation.py +31 -7
- {metalist-0.11.0 → metalist-0.12.0}/app/services/client_state_service.py +9 -22
- {metalist-0.11.0 → metalist-0.12.0}/app/services/content_formatting.py +2 -1
- {metalist-0.11.0 → metalist-0.12.0}/app/services/html_export.py +3 -2
- metalist-0.12.0/app/services/inline_image_dimensions.py +140 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/services/integrity.py +3 -2
- {metalist-0.11.0 → metalist-0.12.0}/app/services/markdown_rendering.py +16 -1
- {metalist-0.11.0 → metalist-0.12.0}/app/services/root_sorting.py +5 -3
- {metalist-0.11.0 → metalist-0.12.0}/app/services/search_index.py +25 -18
- {metalist-0.11.0 → metalist-0.12.0}/app/services/search_query.py +5 -1
- {metalist-0.11.0 → metalist-0.12.0}/app/services/snapshot.py +71 -10
- {metalist-0.11.0 → metalist-0.12.0}/app/startup_sanity.py +28 -1
- {metalist-0.11.0 → metalist-0.12.0}/app/static/config/agent-menu-actions.json +9 -9
- {metalist-0.11.0 → metalist-0.12.0}/app/static/config/command_palette_tags.json +6 -6
- {metalist-0.11.0 → metalist-0.12.0}/app/static/css/main.css +181 -142
- {metalist-0.11.0 → metalist-0.12.0}/app/static/js/main.js +2 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/static/js/modules/ai-chat/ai-chat-api.js +0 -9
- {metalist-0.11.0 → metalist-0.12.0}/app/static/js/modules/ai-chat/ai-chat-panel-controller.js +80 -32
- {metalist-0.11.0 → metalist-0.12.0}/app/static/js/modules/ai-chat/ai-chat-panel-service.js +0 -66
- metalist-0.12.0/app/static/js/modules/ai-chat/confirmation-card.js +93 -0
- metalist-0.12.0/app/static/js/modules/ai-chat/confirmation-question.js +28 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/static/js/modules/ai-chat/proposal-menu.js +6 -7
- {metalist-0.11.0 → metalist-0.12.0}/app/static/js/modules/api-client.js +7 -1
- {metalist-0.11.0 → metalist-0.12.0}/app/static/js/modules/auth.js +2 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/static/js/modules/command-palette/command-palette-controller.js +44 -79
- {metalist-0.11.0 → metalist-0.12.0}/app/static/js/modules/command-palette/endpoint-registry.js +10 -10
- {metalist-0.11.0 → metalist-0.12.0}/app/static/js/modules/config.js +0 -1
- {metalist-0.11.0 → metalist-0.12.0}/app/static/js/modules/error-overlay.js +22 -1
- {metalist-0.11.0 → metalist-0.12.0}/app/static/js/modules/excalidraw/excalidraw-actions.js +5 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/static/js/modules/excalidraw/excalidraw-preview-service.js +29 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/static/js/modules/expected-errors.js +9 -0
- metalist-0.12.0/app/static/js/modules/modals/visual-cues-modal.js +138 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/static/js/modules/mode-manager/actions/content-actions.js +2 -11
- {metalist-0.11.0 → metalist-0.12.0}/app/static/js/modules/mode-manager/actions/note-actions.js +64 -20
- {metalist-0.11.0 → metalist-0.12.0}/app/static/js/modules/mode-manager/actions/selection-actions.js +71 -4
- {metalist-0.11.0 → metalist-0.12.0}/app/static/js/modules/mode-manager/actions/ui-actions.js +30 -3
- {metalist-0.11.0 → metalist-0.12.0}/app/static/js/modules/mode-manager/events/keyboard-events.js +33 -5
- {metalist-0.11.0 → metalist-0.12.0}/app/static/js/modules/mode-manager/events/mouse-events.js +253 -30
- {metalist-0.11.0 → metalist-0.12.0}/app/static/js/modules/mode-manager/mode-manager-controller.js +2 -1
- {metalist-0.11.0 → metalist-0.12.0}/app/static/js/modules/mode-manager/services/animated-scroll-service.js +4 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/static/js/modules/mode-manager/services/collapse-editing-policy-service.js +8 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/static/js/modules/mode-manager/services/edit-session-collapse-policy-service.js +3 -1
- {metalist-0.11.0 → metalist-0.12.0}/app/static/js/modules/mode-manager/services/edit-session-collapse-service.js +9 -2
- {metalist-0.11.0 → metalist-0.12.0}/app/static/js/modules/mode-manager/services/file-image-preview-service.js +25 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/static/js/modules/mode-manager/services/file-reference-service.js +3 -2
- {metalist-0.11.0 → metalist-0.12.0}/app/static/js/modules/mode-manager/services/mermaid-render-service.js +49 -0
- metalist-0.12.0/app/static/js/modules/mode-manager/services/note-drag-indicator-service.js +117 -0
- metalist-0.12.0/app/static/js/modules/mode-manager/services/root-note-creation-service.js +34 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/static/js/modules/mode-manager/services/root-sort-service.js +24 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/static/js/modules/mode-manager/services/scroll-restoration-service.js +28 -3
- {metalist-0.11.0 → metalist-0.12.0}/app/static/js/modules/mode-manager/services/search-syntax-service.js +28 -0
- metalist-0.12.0/app/static/js/modules/mode-manager/services/viewport-hold-service.js +755 -0
- metalist-0.12.0/app/static/js/vendor/dompurify-3.4.16.min.js +7 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/templates/base.html +1 -1
- {metalist-0.11.0 → metalist-0.12.0}/app/templates/index.html +1 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/usecases/prioritize.py +5 -4
- {metalist-0.11.0 → metalist-0.12.0}/app/version.py +1 -1
- {metalist-0.11.0 → metalist-0.12.0}/metalist.egg-info/PKG-INFO +11 -1
- {metalist-0.11.0 → metalist-0.12.0}/metalist.egg-info/SOURCES.txt +19 -11
- metalist-0.11.0/app/services/agent/actions.py +0 -292
- metalist-0.11.0/app/services/agent/markdown_validation.py +0 -35
- metalist-0.11.0/app/services/agent/permissions.py +0 -30
- metalist-0.11.0/app/services/agent/prompts/help-response.md +0 -25
- metalist-0.11.0/app/services/agent/prompts/system.md +0 -92
- metalist-0.11.0/app/services/agent/prompts/tool-result.md +0 -2
- metalist-0.11.0/app/services/agent/skill_settings.py +0 -219
- metalist-0.11.0/app/services/agent/skills/scoped-investigation.md +0 -27
- metalist-0.11.0/app/services/agent/tools.py +0 -323
- metalist-0.11.0/app/static/js/modules/ai-chat/agent-prompt-service.js +0 -257
- metalist-0.11.0/app/static/js/modules/modals/agent-prompt-editor-modal.js +0 -347
- metalist-0.11.0/app/static/js/modules/mode-manager/services/viewport-hold-service.js +0 -75
- metalist-0.11.0/app/static/js/vendor/dompurify-3.4.13.min.js +0 -3
- {metalist-0.11.0 → metalist-0.12.0}/MANIFEST.in +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/__init__.py +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/api/__init__.py +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/api/deps.py +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/api/dev.py +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/api/middleware/auth.py +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/api/note_requests.py +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/api/request_auth.py +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/api/routes/app_updates.py +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/api/routes/auth.py +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/api/routes/backups.py +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/api/routes/files.py +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/api/routes/ontology.py +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/api/routes/reminders.py +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/api/routes/remote_images.py +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/api/routes/test.py +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/api/upload_limits.py +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/config.py +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/data_directory.py +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/db/__init__.py +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/db/backup_settings_sql.py +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/db/editable_files_migration.py +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/db/engine.py +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/db/file_schema.py +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/db/file_session.py +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/db/files_sql.py +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/db/link_titles_sql.py +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/db/live_recovery.py +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/db/migrations.py +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/db/notes_sql.py +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/db/ontology_rules_sql.py +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/db/reminders_sql.py +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/db/retire_sounds.py +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/db/schema.py +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/db/search_history_sql.py +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/db/session.py +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/db/settings_sql.py +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/db/tab_state_sql.py +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/db/version.py +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/encryption_audit.py +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/https_proxy.py +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/models/commands.py +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/models/database.py +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/models/entities.py +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/models/enums.py +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/models/linked_list.py +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/models/list_operations.py +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/models/list_traversal.py +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/models/note_crud.py +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/network_settings.py +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/presentation/__init__.py +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/presentation/render/__init__.py +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/presentation/render/note_renderer.py +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/presentation/templates.py +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/security/authenticated_logging.py +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/security/encryption.py +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/security/http_error_diagnostics.py +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/security/http_headers.py +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/security/note_html.py +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/security/request_boundary.py +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/security/request_hosts.py +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/security/sensitive_cache.py +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/security/sensitive_logging.py +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/security/shell_execution.py +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/security/validation_errors.py +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/server_runtime.py +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/services/__init__.py +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/services/agent/__init__.py +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/services/agent/cloud_privacy.py +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/services/agent/evidence_serialization.py +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/services/agent/judging.py +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/services/agent/menu_actions.py +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/services/agent/openai_cost_tracking.py +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/services/agent/retrieval_settings.py +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/services/agent/skills/help-data.md +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/services/agent/skills/help-references.md +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/services/agent/skills/help-reminders.md +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/services/agent/skills/help-tags.md +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/services/agent/skills/staged-summary.md +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/services/agent/skills/tag-proposals.md +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/services/agent/skills/web-browsing.md +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/services/agent/staged_summary.py +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/services/agent/token_estimation.py +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/services/agent/trace.py +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/services/agent/web_settings.py +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/services/ai_chat.py +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/services/ai_chat_rendering.py +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/services/app_update_worker.py +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/services/app_updates.py +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/services/auth.py +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/services/auth_cache_state.py +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/services/auth_service.py +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/services/backlink_index.py +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/services/backlinks.py +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/services/backup_service.py +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/services/backup_settings_service.py +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/services/content_cache.py +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/services/diagnostics.py +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/services/embedded_references.py +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/services/encryption.py +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/services/exception_capture.py +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/services/file_edit_sessions.py +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/services/file_registry.py +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/services/file_storage.py +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/services/footnote_layout.py +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/services/footnote_rendering.py +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/services/hierarchy.py +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/services/html_unformatting.py +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/services/hydration_state.py +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/services/image_size_formatting.py +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/services/inline_image_occurrences.py +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/services/input_errors.py +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/services/latex_rendering.py +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/services/link_titles.py +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/services/login_rate_limit.py +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/services/maintenance_mode.py +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/services/namespace_deletion_jobs.py +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/services/namespace_deletion_worker.py +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/services/namespace_rename_jobs.py +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/services/namespace_rename_worker.py +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/services/namespace_runtime_guard.py +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/services/namespace_switcher.py +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/services/note_fullscreen.py +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/services/note_image_tags.py +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/services/note_ordering.py +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/services/note_store.py +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/services/ontology_rules_store.py +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/services/openai_credentials.py +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/services/password_note_fields.py +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/services/public_http.py +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/services/reference_presentation.py +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/services/reminders.py +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/services/remote_image_proxy.py +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/services/request_recovery.py +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/services/resource_limits.py +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/services/runtime_generation.py +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/services/runtime_hardening.py +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/services/runtime_lock.py +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/services/search_history.py +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/services/search_history_storage.py +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/services/search_text.py +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/services/selected_text_tag.py +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/services/self_update.py +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/services/session_timeout_service.py +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/services/shell_session_service.py +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/services/store.py +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/services/structured_note_renderers.py +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/services/sync.py +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/services/sync_state.py +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/services/tab_state.py +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/services/tag_case.py +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/services/tag_ontology.py +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/services/tag_rename.py +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/services/tag_suggestions.py +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/services/tag_term_matching.py +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/services/test_reset.py +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/services/tokens.py +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/services/undo_state.py +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/services/update_backups.py +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/services/update_installer.py +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/services/update_preflight.py +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/services/view_cache.py +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/services/view_diff.py +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/services/view_state.py +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/services/windows_process_control.py +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/startup_environment.py +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/startup_js_sanity.py +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/startup_sanity_config.py +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/static/css/floating-notes.css +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/static/css/forms.css +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/static/img/favicon.ico +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/static/js/locked.js +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/static/js/modules/activity-tracker.js +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/static/js/modules/ai-chat/agent-menu-actions.js +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/static/js/modules/ai-chat/agent-retrieval-settings.js +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/static/js/modules/ai-chat/agent-web-settings.js +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/static/js/modules/ai-chat/ai-agent-debug-view.js +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/static/js/modules/ai-chat/ai-chat-message-placement.js +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/static/js/modules/ai-chat/ai-thinking-level-service.js +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/static/js/modules/ai-chat/bulk-elapsed-clock.js +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/static/js/modules/ai-chat/bulk-proposal-ui.js +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/static/js/modules/ai-chat/bulk-scope-question.js +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/static/js/modules/ai-chat/cloud-privacy-policy.js +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/static/js/modules/ai-chat/summary-batch-preview.js +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/static/js/modules/api-error-diagnostics.js +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/static/js/modules/api-failure-classification-service.js +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/static/js/modules/app-update-service.js +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/static/js/modules/application-state.js +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/static/js/modules/async-result.js +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/static/js/modules/client-state-api.js +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/static/js/modules/client-state-migration.js +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/static/js/modules/command-palette/activation-auth-policy.js +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/static/js/modules/command-palette/backup-command-availability.js +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/static/js/modules/command-palette/click-activation-service.js +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/static/js/modules/command-palette/note-layout-preferences.js +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/static/js/modules/command-palette/preferences-store.js +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/static/js/modules/command-palette/tag-config-loader.js +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/static/js/modules/command-palette/usage-store.js +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/static/js/modules/connectivity-monitor.js +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/static/js/modules/context-menu/context-menu-registry.js +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/static/js/modules/context-menu/context-menu-service.js +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/static/js/modules/context-menu/context-menu-target-service.js +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/static/js/modules/context-menu/input-caret-service.js +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/static/js/modules/disconnect-editing-state-service.js +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/static/js/modules/dom-utils-fixed.js +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/static/js/modules/dom-utils.js +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/static/js/modules/editor-commands.js +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/static/js/modules/editor-selection.js +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/static/js/modules/editor-toolbar.js +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/static/js/modules/elapsed-time.js +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/static/js/modules/error-handler.js +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/static/js/modules/excalidraw/excalidraw-autosave.js +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/static/js/modules/excalidraw/excalidraw-editor-service.js +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/static/js/modules/excalidraw/excalidraw-editor-state.js +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/static/js/modules/excalidraw/excalidraw-loader.js +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/static/js/modules/excalidraw/excalidraw-scene.js +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/static/js/modules/location-flags.js +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/static/js/modules/login-namespace-picker.js +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/static/js/modules/maintenance.js +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/static/js/modules/modals/ai-agent-settings-modal.js +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/static/js/modules/modals/alphabetize-root-notes-modal.js +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/static/js/modules/modals/backup-restore-modal.js +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/static/js/modules/modals/backup-result-modal.js +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/static/js/modules/modals/backup-retention-modal.js +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/static/js/modules/modals/backup-settings-modal.js +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/static/js/modules/modals/base-modal.js +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/static/js/modules/modals/confirmation-modal.js +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/static/js/modules/modals/delete-namespace-modal.js +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/static/js/modules/modals/delete-namespace-validation.js +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/static/js/modules/modals/help-modal.js +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/static/js/modules/modals/namespace-loading-page.js +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/static/js/modules/modals/namespace-modals.js +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/static/js/modules/modals/namespace-ports-profile.js +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/static/js/modules/modals/namespace-rename-validation.js +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/static/js/modules/modals/note-layout-appearance-modal.js +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/static/js/modules/modals/ontology-modal.js +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/static/js/modules/modals/password-modal.js +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/static/js/modules/modals/prioritize-modal.js +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/static/js/modules/modals/random-password-modal.js +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/static/js/modules/modals/reminder-modal.js +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/static/js/modules/modals/reset-updated-at-modal.js +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/static/js/modules/modals/search-suggestion-statistics-modal.js +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/static/js/modules/modals/session-timeout-modal.js +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/static/js/modules/modals/version-info-modal.js +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/static/js/modules/mode-manager/actions/history-actions.js +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/static/js/modules/mode-manager/actions/search-actions.js +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/static/js/modules/mode-manager/events/context-menu-events.js +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/static/js/modules/mode-manager/events/focus-events.js +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/static/js/modules/mode-manager/events/inactivity-events.js +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/static/js/modules/mode-manager/events/input-events.js +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/static/js/modules/mode-manager/events/search-events.js +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/static/js/modules/mode-manager/mode-context.js +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/static/js/modules/mode-manager/mode-logger.js +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/static/js/modules/mode-manager/services/add-style-service.js +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/static/js/modules/mode-manager/services/backlinks-navigation-service.js +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/static/js/modules/mode-manager/services/backlinks-panel-service.js +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/static/js/modules/mode-manager/services/clipboard-shortcut-policy-service.js +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/static/js/modules/mode-manager/services/collapse-affordance-service.js +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/static/js/modules/mode-manager/services/command-gate-service.js +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/static/js/modules/mode-manager/services/context-menu-target-service.js +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/static/js/modules/mode-manager/services/deselect-selection-state-service.js +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/static/js/modules/mode-manager/services/differential-view-service.js +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/static/js/modules/mode-manager/services/embedded-image-service.js +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/static/js/modules/mode-manager/services/file-drop-policy-service.js +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/static/js/modules/mode-manager/services/filtered-refresh-selection-service.js +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/static/js/modules/mode-manager/services/floating-note-dom.js +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/static/js/modules/mode-manager/services/floating-note-layout.js +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/static/js/modules/mode-manager/services/floating-note-service.js +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/static/js/modules/mode-manager/services/footnote-navigation-service.js +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/static/js/modules/mode-manager/services/history-selection-policy-service.js +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/static/js/modules/mode-manager/services/history-shortcut-policy-service.js +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/static/js/modules/mode-manager/services/html-paste-sanitizer-service.js +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/static/js/modules/mode-manager/services/image-context-menu-action-service.js +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/static/js/modules/mode-manager/services/image-file-insert-choice-modal-service.js +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/static/js/modules/mode-manager/services/infinite-scroll-service.js +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/static/js/modules/mode-manager/services/link-context-menu-action-service.js +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/static/js/modules/mode-manager/services/link-title-prefetch-service.js +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/static/js/modules/mode-manager/services/markdown-render-service.js +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/static/js/modules/mode-manager/services/note-click-target-service.js +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/static/js/modules/mode-manager/services/note-clipboard-write-service.js +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/static/js/modules/mode-manager/services/note-collapse-animation-service.js +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/static/js/modules/mode-manager/services/note-context-menu-action-service.js +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/static/js/modules/mode-manager/services/note-delete-shortcut-policy-service.js +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/static/js/modules/mode-manager/services/note-drag-service.js +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/static/js/modules/mode-manager/services/note-fullscreen-service.js +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/static/js/modules/mode-manager/services/note-reposition-animation-service.js +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/static/js/modules/mode-manager/services/note-split-service.js +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/static/js/modules/mode-manager/services/note-timestamp-hover-service.js +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/static/js/modules/mode-manager/services/password-clipboard-service.js +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/static/js/modules/mode-manager/services/polling-service.js +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/static/js/modules/mode-manager/services/reference-source-navigation-service.js +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/static/js/modules/mode-manager/services/remote-image-proxy-service.js +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/static/js/modules/mode-manager/services/remove-formatting-service.js +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/static/js/modules/mode-manager/services/root-date-separator-service.js +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/static/js/modules/mode-manager/services/root-sort-indicator-service.js +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/static/js/modules/mode-manager/services/scroll-anchor-service.js +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/static/js/modules/mode-manager/services/scroll-to-top-service.js +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/static/js/modules/mode-manager/services/search-contexts-overlay-service.js +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/static/js/modules/mode-manager/services/search-debounce-service.js +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/static/js/modules/mode-manager/services/search-input-service.js +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/static/js/modules/mode-manager/services/search-interaction-service.js +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/static/js/modules/mode-manager/services/search-redaction-reveal-service.js +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/static/js/modules/mode-manager/services/search-suggestion-statistics-service.js +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/static/js/modules/mode-manager/services/search-suggestion-window-labels-service.js +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/static/js/modules/mode-manager/services/search-suggestion-windows-service.js +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/static/js/modules/mode-manager/services/search-suggestions-service.js +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/static/js/modules/mode-manager/services/selected-formatting-removal-service.js +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/static/js/modules/mode-manager/services/selected-text-tag-service.js +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/static/js/modules/mode-manager/services/shell-output-service.js +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/static/js/modules/mode-manager/services/tab-dom-cache-service.js +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/static/js/modules/mode-manager/services/tab-drag-service.js +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/static/js/modules/mode-manager/services/tab-duplication-service.js +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/static/js/modules/mode-manager/services/tab-state-service.js +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/static/js/modules/mode-manager/services/tag-bar-service.js +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/static/js/modules/mode-manager/services/tag-input-selection-service.js +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/static/js/modules/mode-manager/services/tag-proposal-service.js +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/static/js/modules/mode-manager/services/tag-suggestions-service.js +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/static/js/modules/mode-manager/services/tag-syntax-service.js +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/static/js/modules/mode-manager/services/todo-toggle-editing-service.js +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/static/js/modules/mode-manager/services/untagged-view-indicator-service.js +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/static/js/modules/mode-manager/services/view-mode-search-shortcut-service.js +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/static/js/modules/note-html-sanitizer.js +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/static/js/modules/password-generator.js +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/static/js/modules/password-operation-response.js +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/static/js/modules/password-policy.js +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/static/js/modules/password-strength.js +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/static/js/modules/reminder-store.js +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/static/js/modules/reminder-surface-service.js +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/static/js/modules/selection-markers.js +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/static/js/modules/session-auth.js +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/static/js/modules/tag-token.js +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/static/js/modules/uuid.js +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/static/js/namespace-deleted.js +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/static/js/namespace-renamed.js +0 -0
- /metalist-0.11.0/app/static/js/vendor/dompurify-3.4.13.LICENSE.txt → /metalist-0.12.0/app/static/js/vendor/dompurify-3.4.16.LICENSE.txt +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/static/js/vendor/excalidraw-0.18.1-assets/excalidraw.css +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/static/js/vendor/excalidraw-0.18.1-assets/fonts/Assistant/Assistant-Bold.woff2 +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/static/js/vendor/excalidraw-0.18.1-assets/fonts/Assistant/Assistant-Medium.woff2 +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/static/js/vendor/excalidraw-0.18.1-assets/fonts/Assistant/Assistant-Regular.woff2 +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/static/js/vendor/excalidraw-0.18.1-assets/fonts/Assistant/Assistant-SemiBold.woff2 +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/static/js/vendor/excalidraw-0.18.1-assets/fonts/Cascadia/CascadiaCode-Regular.woff2 +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/static/js/vendor/excalidraw-0.18.1-assets/fonts/ComicShanns/ComicShanns-Regular-279a7b317d12eb88de06167bd672b4b4.woff2 +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/static/js/vendor/excalidraw-0.18.1-assets/fonts/ComicShanns/ComicShanns-Regular-6e066e8de2ac57ea9283adb9c24d7f0c.woff2 +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/static/js/vendor/excalidraw-0.18.1-assets/fonts/ComicShanns/ComicShanns-Regular-dc6a8806fa96795d7b3be5026f989a17.woff2 +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/static/js/vendor/excalidraw-0.18.1-assets/fonts/ComicShanns/ComicShanns-Regular-fcb0fc02dcbee4c9846b3e2508668039.woff2 +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/static/js/vendor/excalidraw-0.18.1-assets/fonts/Excalifont/Excalifont-Regular-349fac6ca4700ffec595a7150a0d1e1d.woff2 +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/static/js/vendor/excalidraw-0.18.1-assets/fonts/Excalifont/Excalifont-Regular-3f2c5db56cc93c5a6873b1361d730c16.woff2 +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/static/js/vendor/excalidraw-0.18.1-assets/fonts/Excalifont/Excalifont-Regular-41b173a47b57366892116a575a43e2b6.woff2 +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/static/js/vendor/excalidraw-0.18.1-assets/fonts/Excalifont/Excalifont-Regular-623ccf21b21ef6b3a0d87738f77eb071.woff2 +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/static/js/vendor/excalidraw-0.18.1-assets/fonts/Excalifont/Excalifont-Regular-a88b72a24fb54c9f94e3b5fdaa7481c9.woff2 +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/static/js/vendor/excalidraw-0.18.1-assets/fonts/Excalifont/Excalifont-Regular-b9dcf9d2e50a1eaf42fc664b50a3fd0d.woff2 +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/static/js/vendor/excalidraw-0.18.1-assets/fonts/Excalifont/Excalifont-Regular-be310b9bcd4f1a43f571c46df7809174.woff2 +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/static/js/vendor/excalidraw-0.18.1-assets/fonts/Lilita/Lilita-Regular-i7dPIFZ9Zz-WBtRtedDbYE98RXi4EwSsbg.woff2 +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/static/js/vendor/excalidraw-0.18.1-assets/fonts/Lilita/Lilita-Regular-i7dPIFZ9Zz-WBtRtedDbYEF8RXi4EwQ.woff2 +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/static/js/vendor/excalidraw-0.18.1-assets/fonts/Nunito/Nunito-Regular-XRXI3I6Li01BKofiOc5wtlZ2di8HDIkhdTA3j6zbXWjgevT5.woff2 +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/static/js/vendor/excalidraw-0.18.1-assets/fonts/Nunito/Nunito-Regular-XRXI3I6Li01BKofiOc5wtlZ2di8HDIkhdTQ3j6zbXWjgeg.woff2 +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/static/js/vendor/excalidraw-0.18.1-assets/fonts/Nunito/Nunito-Regular-XRXI3I6Li01BKofiOc5wtlZ2di8HDIkhdTk3j6zbXWjgevT5.woff2 +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/static/js/vendor/excalidraw-0.18.1-assets/fonts/Nunito/Nunito-Regular-XRXI3I6Li01BKofiOc5wtlZ2di8HDIkhdTo3j6zbXWjgevT5.woff2 +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/static/js/vendor/excalidraw-0.18.1-assets/fonts/Nunito/Nunito-Regular-XRXI3I6Li01BKofiOc5wtlZ2di8HDIkhdTs3j6zbXWjgevT5.woff2 +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/static/js/vendor/excalidraw-0.18.1-assets/fonts/Virgil/Virgil-Regular.woff2 +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/static/js/vendor/excalidraw-0.18.1.LICENSE.txt +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/static/js/vendor/excalidraw-0.18.1.min.js +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/static/js/vendor/markdown-it-14.3.2.LICENSE.txt +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/static/js/vendor/markdown-it-14.3.2.min.js +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/static/js/vendor/mermaid-11.16.1.LICENSE.txt +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/static/js/vendor/mermaid-11.16.1.min.js +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/static/js/vendor/zxcvbn-4.4.2.LICENSE.txt +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/static/js/vendor/zxcvbn-4.4.2.js +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/static/note-html-policy.json +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/static/video/login-startup.mp4 +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/templates/locked.html +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/templates/maintenance.html +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/templates/namespace_deleted.html +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/templates/namespace_renamed.html +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/templates/notes_list.html +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/upload_limits.py +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/usecases/__init__.py +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/usecases/add_selected_text_tag.py +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/usecases/alphabetize_root_notes.py +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/usecases/base.py +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/usecases/bulk_tag_proposals.py +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/usecases/collapse.py +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/usecases/copy_note.py +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/usecases/create_child.py +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/usecases/create_note.py +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/usecases/create_sibling.py +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/usecases/delete_subtree.py +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/usecases/delete_tag.py +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/usecases/expand.py +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/usecases/file_edit_session.py +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/usecases/indent.py +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/usecases/lock.py +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/usecases/move.py +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/usecases/move_to_top.py +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/usecases/outdent.py +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/usecases/paste_child.py +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/usecases/paste_sibling.py +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/usecases/prefetch_link_titles.py +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/usecases/redo.py +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/usecases/rename_tag.py +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/usecases/reset_updated_at.py +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/usecases/resize_image.py +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/usecases/run_shell.py +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/usecases/search_comment_autofill.py +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/usecases/search_context_tags.py +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/usecases/set_collapse_bulk.py +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/usecases/set_collapse_in_context.py +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/usecases/split_note.py +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/usecases/tag_proposals.py +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/usecases/toggle_reference_mode.py +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/usecases/toggle_todo_done.py +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/usecases/undo.py +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/usecases/unformat_content.py +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/usecases/update_content.py +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/usecases/view.py +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/utils/__init__.py +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/utils/encryption.py +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/app/utils/text_utils.py +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/convert-from-legacy.py +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/main.py +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/metalist.egg-info/dependency_links.txt +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/metalist.egg-info/entry_points.txt +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/metalist.egg-info/requires.txt +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/metalist.egg-info/top_level.txt +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/pyproject.toml +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/scripts/generate-lan-cert.sh +0 -0
- {metalist-0.11.0 → metalist-0.12.0}/setup.cfg +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: metalist
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.12.0
|
|
4
4
|
Summary: A minimalist single-user note-taking app with SSR, fast in-memory tree operations, and efficient sync.
|
|
5
5
|
Project-URL: Homepage, https://github.com/evolvingstuff/metalist
|
|
6
6
|
Project-URL: Repository, https://github.com/evolvingstuff/metalist
|
|
@@ -49,6 +49,16 @@ A minimalist single-user note-taking app focused on server-side rendering (SSR),
|
|
|
49
49
|
- Multi-tab search contexts with server-persisted scroll/search state (survives browser restarts)
|
|
50
50
|
- Manual namespace backups/restores to a user-selected backup folder with retention controls
|
|
51
51
|
|
|
52
|
+
## Changes in 0.12.0
|
|
53
|
+
|
|
54
|
+
- AI chat is now a tool-using agent: in one answer it can look up MetaList help, read and search the notes in your view, open web pages, and open menus, instead of picking a single route up front. Answers cite notes and web pages with clickable references, including each item listed from a web page.
|
|
55
|
+
- Nothing changes without your Yes: tag operations ask first with the exact change, and web addresses that carry words from your notes ask before opening. Summaries that fit in one pass start without a dialog, and summaries never block other edits while they run.
|
|
56
|
+
- "How do I change…" questions open the menu that holds the setting; release notes are part of the help. AI prompts and skills are no longer editable, and a $ button shows or hides the spend estimate.
|
|
57
|
+
- The AI is told only that a note is private, never which privacy setting hides it, and failed AI steps are explained in the chat.
|
|
58
|
+
- Leaving edit mode keeps your place, with no highlight; a collapsed note you changed stays expanded. Clicking into a note keeps the clicked spot under the pointer, including in diagrams and formulas.
|
|
59
|
+
- Dragging a note shows a ghost, a drop line and a direction cursor; the note lands where you dropped it without the page scrolling.
|
|
60
|
+
- Searches that cannot be parsed are explained politely instead of failing.
|
|
61
|
+
|
|
52
62
|
## Changes in 0.11.0
|
|
53
63
|
|
|
54
64
|
- Large namespaces stay fast while scrolling: only a band of root notes around the viewport is loaded, the server remembers what each tab shows so the browser no longer sends note hashes, and rendered notes are cached.
|
|
@@ -12,6 +12,16 @@ A minimalist single-user note-taking app focused on server-side rendering (SSR),
|
|
|
12
12
|
- Multi-tab search contexts with server-persisted scroll/search state (survives browser restarts)
|
|
13
13
|
- Manual namespace backups/restores to a user-selected backup folder with retention controls
|
|
14
14
|
|
|
15
|
+
## Changes in 0.12.0
|
|
16
|
+
|
|
17
|
+
- AI chat is now a tool-using agent: in one answer it can look up MetaList help, read and search the notes in your view, open web pages, and open menus, instead of picking a single route up front. Answers cite notes and web pages with clickable references, including each item listed from a web page.
|
|
18
|
+
- Nothing changes without your Yes: tag operations ask first with the exact change, and web addresses that carry words from your notes ask before opening. Summaries that fit in one pass start without a dialog, and summaries never block other edits while they run.
|
|
19
|
+
- "How do I change…" questions open the menu that holds the setting; release notes are part of the help. AI prompts and skills are no longer editable, and a $ button shows or hides the spend estimate.
|
|
20
|
+
- The AI is told only that a note is private, never which privacy setting hides it, and failed AI steps are explained in the chat.
|
|
21
|
+
- Leaving edit mode keeps your place, with no highlight; a collapsed note you changed stays expanded. Clicking into a note keeps the clicked spot under the pointer, including in diagrams and formulas.
|
|
22
|
+
- Dragging a note shows a ghost, a drop line and a direction cursor; the note lands where you dropped it without the page scrolling.
|
|
23
|
+
- Searches that cannot be parsed are explained politely instead of failing.
|
|
24
|
+
|
|
15
25
|
## Changes in 0.11.0
|
|
16
26
|
|
|
17
27
|
- Large namespaces stay fast while scrolling: only a band of root notes around the viewport is loaded, the server remembers what each tab shows so the browser no longer sends note hashes, and rendered notes are cached.
|
|
@@ -33,21 +33,17 @@ from app.services.agent.openai_inference import OpenAIInferenceAdapter
|
|
|
33
33
|
from app.services.agent.openai_inference import validate_openai_model
|
|
34
34
|
from app.services.agent.openai_cost_tracking import OpenAICostSnapshot
|
|
35
35
|
from app.services.agent.openai_cost_tracking import openai_cost_tracker
|
|
36
|
-
from app.services.agent.permissions import AgentPermissionPolicy
|
|
37
36
|
from app.services.agent.prompt_settings import AgentPromptSet
|
|
38
37
|
from app.services.agent.skill_settings import AgentSkillSet
|
|
39
38
|
from app.services.agent.retrieval_settings import AgentRetrievalSettings
|
|
40
39
|
from app.services.agent.scope import ScopedSearchSnapshot
|
|
41
40
|
from app.services.agent.prompt_settings import DEFAULT_AGENT_PROMPTS
|
|
42
|
-
from app.services.agent.prompt_settings import resolve_agent_prompt_set
|
|
43
41
|
from app.services.agent.retrieval_settings import resolve_agent_retrieval_settings
|
|
44
42
|
from app.services.agent.scope import AgentScopeDescriptor
|
|
45
43
|
from app.services.agent.scope import scoped_search_snapshot_factory
|
|
46
44
|
from app.services.agent.runtime import AgentRuntime
|
|
47
45
|
from app.services.agent.skill_settings import DEFAULT_AGENT_SKILLS
|
|
48
|
-
from app.services.agent.skill_settings import resolve_agent_skill_set
|
|
49
46
|
from app.services.agent.token_estimation import estimate_input_tokens
|
|
50
|
-
from app.services.agent.tools import read_only_agent_tools
|
|
51
47
|
from app.services.agent.trace import agent_trace_store
|
|
52
48
|
from app.services.agent.menu_actions import MenuResult, menu_action_store
|
|
53
49
|
from app.services.client_state_service import load_client_preferences
|
|
@@ -62,7 +58,7 @@ from app.services.agent.retrieval_settings import resolve_tagging_batch_tokens
|
|
|
62
58
|
from app.services.agent.web_settings import AgentWebSettings
|
|
63
59
|
from app.services.agent.web_settings import resolve_agent_web_settings
|
|
64
60
|
from app.services.agent.web_evidence import web_evidence_store
|
|
65
|
-
from app.services.agent.tagging import
|
|
61
|
+
from app.services.agent.tagging import TAGGING_POLICY_KEY
|
|
66
62
|
from app.usecases.bulk_tag_proposals import apply_bulk_proposals, prepare_proposal_changes
|
|
67
63
|
from app.services.bulk_operation import bulk_operation_guard
|
|
68
64
|
from app.services.tab_state import tab_state_store
|
|
@@ -79,8 +75,6 @@ def _agent_runtime(*, inference: InferenceAdapter) -> AgentRuntime:
|
|
|
79
75
|
context_builder=agent_context_builder,
|
|
80
76
|
inference=inference,
|
|
81
77
|
model_policy=SingleModelPolicy(),
|
|
82
|
-
permission_policy=AgentPermissionPolicy(),
|
|
83
|
-
tool_registry=read_only_agent_tools,
|
|
84
78
|
trace_store=agent_trace_store,
|
|
85
79
|
provider_label=inference.provider_label,
|
|
86
80
|
)
|
|
@@ -136,23 +130,6 @@ class CloudPrivacyPreviewResponse(BaseModel):
|
|
|
136
130
|
hidden_note_ids: list[str]
|
|
137
131
|
|
|
138
132
|
|
|
139
|
-
class AiSkillDefaultResponse(BaseModel):
|
|
140
|
-
skill_id: str
|
|
141
|
-
title: str
|
|
142
|
-
description: str
|
|
143
|
-
trigger_action: str
|
|
144
|
-
preference_key: str
|
|
145
|
-
content: str
|
|
146
|
-
superseded_preference_keys: list[str]
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
class AiPromptDefaultsResponse(BaseModel):
|
|
150
|
-
system_prompt: str
|
|
151
|
-
final_response_prompt: str
|
|
152
|
-
tool_result_prompt: str
|
|
153
|
-
skills: list[AiSkillDefaultResponse]
|
|
154
|
-
|
|
155
|
-
|
|
156
133
|
class AiChatRequest(BaseModel):
|
|
157
134
|
model_config = ConfigDict(extra="forbid")
|
|
158
135
|
|
|
@@ -384,32 +361,6 @@ def reset_openai_cost(
|
|
|
384
361
|
return _openai_cost_response(openai_cost_tracker.snapshot())
|
|
385
362
|
|
|
386
363
|
|
|
387
|
-
@router.get("/prompts/defaults", response_model=AiPromptDefaultsResponse)
|
|
388
|
-
def get_ai_prompt_defaults(
|
|
389
|
-
response: Response,
|
|
390
|
-
token: Annotated[str, Depends(require_request_auth_token)],
|
|
391
|
-
) -> AiPromptDefaultsResponse:
|
|
392
|
-
del token
|
|
393
|
-
response.headers["Cache-Control"] = "no-store"
|
|
394
|
-
return AiPromptDefaultsResponse(
|
|
395
|
-
system_prompt=DEFAULT_AGENT_PROMPTS.system_prompt,
|
|
396
|
-
final_response_prompt=DEFAULT_AGENT_PROMPTS.final_response_prompt,
|
|
397
|
-
tool_result_prompt=DEFAULT_AGENT_PROMPTS.tool_result_prompt,
|
|
398
|
-
skills=[
|
|
399
|
-
AiSkillDefaultResponse(
|
|
400
|
-
skill_id=skill.skill_id,
|
|
401
|
-
title=skill.title,
|
|
402
|
-
description=skill.description,
|
|
403
|
-
trigger_action=skill.trigger_action,
|
|
404
|
-
preference_key=skill.preference_key,
|
|
405
|
-
content=skill.content,
|
|
406
|
-
superseded_preference_keys=list(skill.superseded_preference_keys),
|
|
407
|
-
)
|
|
408
|
-
for skill in DEFAULT_AGENT_SKILLS.skills
|
|
409
|
-
],
|
|
410
|
-
)
|
|
411
|
-
|
|
412
|
-
|
|
413
364
|
@router.post(
|
|
414
365
|
"/cloud-privacy/preview",
|
|
415
366
|
response_model=CloudPrivacyPreviewResponse,
|
|
@@ -637,8 +588,8 @@ def stream_ai_chat(
|
|
|
637
588
|
session_key=session_key,
|
|
638
589
|
)
|
|
639
590
|
preferences = load_client_preferences(token=token)
|
|
640
|
-
prompts =
|
|
641
|
-
skills =
|
|
591
|
+
prompts = DEFAULT_AGENT_PROMPTS
|
|
592
|
+
skills = DEFAULT_AGENT_SKILLS
|
|
642
593
|
retrieval_settings = resolve_agent_retrieval_settings(
|
|
643
594
|
preferences=preferences,
|
|
644
595
|
provider=payload.provider,
|
|
@@ -731,11 +682,11 @@ async def _stream_runtime_events(
|
|
|
731
682
|
approx_input_tokens=initial_input_tokens, output_tokens_received=0, duration_ms=0.0)
|
|
732
683
|
yield dict(type='action_status', action=action, status='completed', label=ready_label,
|
|
733
684
|
approx_input_tokens=initial_input_tokens, output_tokens_received=0, duration_ms=0.0)
|
|
734
|
-
events = runtime.
|
|
685
|
+
events = runtime.stream_agent(session_key=session_key, base_url=base_url,
|
|
735
686
|
selected_model=payload.model, thinking_level=payload.thinking_level,
|
|
736
687
|
canonical_messages=provider_messages, prompts=prompts, skills=skills,
|
|
737
688
|
retrieval_settings=retrieval_settings, web_settings=web_settings,
|
|
738
|
-
frozen_scope=frozen_scope,
|
|
689
|
+
frozen_scope=frozen_scope, tagging_run=tagging_run)
|
|
739
690
|
try:
|
|
740
691
|
async for event in events:
|
|
741
692
|
yield event
|
|
@@ -771,6 +722,8 @@ class BulkAnswerRequest(BaseModel):
|
|
|
771
722
|
"prefix_focus_both",
|
|
772
723
|
"summarize_all",
|
|
773
724
|
"use_prefix",
|
|
725
|
+
"yes",
|
|
726
|
+
"no",
|
|
774
727
|
]
|
|
775
728
|
|
|
776
729
|
|
|
@@ -820,6 +773,4 @@ def manage_bulk_proposals(payload: BulkManageRequest, token: Annotated[str, Depe
|
|
|
820
773
|
@router.get("/proposals/settings")
|
|
821
774
|
def get_tagging_settings(token: Annotated[str, Depends(require_request_auth_token)]):
|
|
822
775
|
preferences = load_client_preferences(token=token)
|
|
823
|
-
return {"policy": preferences.get(TAGGING_POLICY_KEY, "")
|
|
824
|
-
"prompt": preferences.get(TAGGING_PROMPT_KEY, DEFAULT_TAGGING_PROMPT),
|
|
825
|
-
"default_prompt": DEFAULT_TAGGING_PROMPT}
|
|
776
|
+
return {"policy": preferences.get(TAGGING_POLICY_KEY, "")}
|
|
@@ -257,12 +257,9 @@ def view_diff(payload: ViewDiffRequest):
|
|
|
257
257
|
if normalized_search is not None:
|
|
258
258
|
if not isinstance(normalized_search, str):
|
|
259
259
|
raise HTTPException(status_code=400, detail="search must be a string or null")
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
if capture.captured_exception is not None:
|
|
264
|
-
exc = capture.captured_exception
|
|
265
|
-
raise HTTPException(status_code=400, detail=str(exc)) from exc
|
|
260
|
+
# Validated before anything changes; a search that does not parse is
|
|
261
|
+
# answered as rejected input (main.py), shown as a polite warning.
|
|
262
|
+
parse_search_query(normalized_search)
|
|
266
263
|
|
|
267
264
|
maybe_reset_on_context(client_id, undo_context)
|
|
268
265
|
|
|
@@ -285,14 +282,19 @@ def view_diff(payload: ViewDiffRequest):
|
|
|
285
282
|
if tab_view_empty:
|
|
286
283
|
warm_view = None
|
|
287
284
|
client_known_note_ids: set[str] = set()
|
|
285
|
+
# The tab's previous root order: a sorted tab keeps the edited note's root there.
|
|
286
|
+
previous_root_ids: list[str] = []
|
|
288
287
|
if warm_view is not None:
|
|
289
288
|
client_known_note_ids = set(warm_view.hash_by_id)
|
|
289
|
+
if None in warm_view.children_by_parent:
|
|
290
|
+
previous_root_ids = warm_view.children_by_parent[None]
|
|
290
291
|
|
|
291
292
|
state = build_view_state(
|
|
292
293
|
editing_note_id=normalized_editing_note_id,
|
|
293
294
|
search=normalized_search,
|
|
294
295
|
sort_mode=sort_mode,
|
|
295
296
|
client_known_note_ids=client_known_note_ids,
|
|
297
|
+
previous_root_ids=previous_root_ids,
|
|
296
298
|
visible_top_root_id=visible_top_root_id,
|
|
297
299
|
visible_bottom_root_id=visible_bottom_root_id,
|
|
298
300
|
is_untagged_view=is_untagged_view,
|
|
@@ -125,6 +125,8 @@ def assert_mutation_routes_wrapped(app: FastAPI) -> None:
|
|
|
125
125
|
def _check_bulk_guard(endpoint_name: str) -> None:
|
|
126
126
|
if endpoint_name in _STORAGE_TRANSITIONS and bulk_operation_guard.active_mutations > 1:
|
|
127
127
|
raise HTTPException(status_code=409, detail="Wait for the current request to finish before changing namespace storage.")
|
|
128
|
-
|
|
128
|
+
# Preferences never touch notes, and every operation reads them once when it
|
|
129
|
+
# starts, so saving them (e.g. the chat panel width) cannot disturb it.
|
|
130
|
+
permitted = {"answer_bulk_question", "preview_cloud_privacy", "put_ai_debug_details", "put_client_preferences"}
|
|
129
131
|
if bulk_operation_guard.operation_id and endpoint_name not in permitted:
|
|
130
132
|
raise HTTPException(status_code=409, detail="A bulk operation is running. Wait or cancel it before changing the app.")
|
|
@@ -14,7 +14,9 @@ CAPTURE_BOUNDARIES = {
|
|
|
14
14
|
'app/services/agent/web_fetch.py:_extract_pdf_content:pdf_capture': ('PyPdfError',),
|
|
15
15
|
'app/services/agent/web_fetch.py:_decode_web_text:encoding_capture': ('LookupError',),
|
|
16
16
|
'app/services/agent/web_fetch.py:handle_starttag:join_capture': ('ValueError',),
|
|
17
|
-
'app/services/agent/
|
|
17
|
+
'app/services/agent/web_actions.py:open_web_pages:evidence_capacity_capture': ('WebEvidenceCapacityError',),
|
|
18
|
+
# A model's tool call is untrusted input; rejected arguments are explained back to the model.
|
|
19
|
+
'app/services/agent/agent_tools.py:parse_tool_call:arguments_capture': ('ValidationError',),
|
|
18
20
|
# In-app updates translate only external transport, installation eligibility and job lookup errors.
|
|
19
21
|
'app/services/app_updates.py:check_for_update:eligibility': ('AppUpdateRejected',),
|
|
20
22
|
'app/services/app_updates.py:job_path:validation': ('ValueError',),
|
|
@@ -86,7 +86,7 @@ from urllib.parse import parse_qsl
|
|
|
86
86
|
from urllib.parse import urlencode
|
|
87
87
|
from urllib.parse import urlsplit
|
|
88
88
|
from urllib.parse import urlunsplit
|
|
89
|
-
from app.services.input_errors import NamespaceInputRejected
|
|
89
|
+
from app.services.input_errors import InputRejected, NamespaceInputRejected
|
|
90
90
|
|
|
91
91
|
logger.remove()
|
|
92
92
|
logger.add(
|
|
@@ -158,6 +158,13 @@ async def request_validation_error(request: Request, exc: RequestValidationError
|
|
|
158
158
|
return JSONResponse(status_code=422, content={"detail": summarize_validation_errors(exc.errors())})
|
|
159
159
|
|
|
160
160
|
|
|
161
|
+
@app.exception_handler(InputRejected)
|
|
162
|
+
async def handle_input_rejected(request: Request, exc: InputRejected):
|
|
163
|
+
# Expected, validated user-input failures (e.g. a search that does not
|
|
164
|
+
# parse): a polite 400 the browser shows as a warning, never a 500.
|
|
165
|
+
return JSONResponse(status_code=400, content={"detail": str(exc), "inputRejected": True})
|
|
166
|
+
|
|
167
|
+
|
|
161
168
|
@app.exception_handler(OntologyParseError)
|
|
162
169
|
async def handle_ontology_parse_error(request: Request, exc: OntologyParseError):
|
|
163
170
|
return JSONResponse(status_code=400, content={"detail": str(exc)})
|
|
@@ -17,6 +17,7 @@ from ..services.content_cache import (
|
|
|
17
17
|
)
|
|
18
18
|
from ..services.note_store import store as note_store
|
|
19
19
|
from app.presentation.render.note_renderer import render_read_only_mode
|
|
20
|
+
from app.services.markdown_rendering import strip_latex_source_attributes
|
|
20
21
|
from app.db.notes_sql import (
|
|
21
22
|
fetch_children_ordered,
|
|
22
23
|
fetch_note,
|
|
@@ -652,7 +653,9 @@ def render_note_data_read_only(note_data: Dict[str, Any]) -> Dict[str, Any]:
|
|
|
652
653
|
raise TypeError('note_data.children must be a list')
|
|
653
654
|
child_payloads = [{} for _ in children]
|
|
654
655
|
rendered.update(node)
|
|
655
|
-
rendered['content'] =
|
|
656
|
+
rendered['content'] = strip_latex_source_attributes(
|
|
657
|
+
render_read_only_mode(SimpleNamespace(content=content, tags=tags))
|
|
658
|
+
)
|
|
656
659
|
rendered['children'] = child_payloads
|
|
657
660
|
pending.extend(zip(children, child_payloads))
|
|
658
661
|
return root
|