Notebooklm
Install, authenticate, troubleshoot, and operate Gemini Notebook through the notebooklm-py CLI or typed async Python API. Use for notebook and source management, grounded chat and research, and artifact generation or download when the user mentions Gemini Notebook, notebooklm-py, the notebooklm CLI, or its Python API. Do not use for the generic Gemini API or unrelated content creation.
- Skill ID
- teng-lin/notebooklm-py/notebooklm
- Publisher
- teng-lin
- Repository
- notebooklm-py
- Installs
- 0
- Files
- 2165
- Synced
- Sep 23, 2026
Open any RiverX project, open the Skills panel in the chat, and search for this identifier. The files are fetched from the source repository at install time.
teng-lin/notebooklm-py/notebooklmInstalls these files- .dockerignore
- .env.example
- .gitattributes
- .github/ISSUE_TEMPLATE/bug_report.md
- .github/ISSUE_TEMPLATE/config.yml
- .github/ISSUE_TEMPLATE/feature_request.md
- .github/PULL_REQUEST_TEMPLATE.md
- .github/codeql-config.yml
- .github/dependabot.yml
- .github/workflows/auth-patch-audit.yml
- .github/workflows/claude.yml
- .github/workflows/codeql.yml
- .github/workflows/dependency-audit.yml
- .github/workflows/fault-stress.yml
- .github/workflows/nightly-checks.yml
- .github/workflows/nightly.yml
- .github/workflows/offline-qualification.yml
- .github/workflows/pages.yml
- .github/workflows/publish-docker.yml
- .github/workflows/publish-mcpb.yml
- .github/workflows/publish.yml
- .github/workflows/rpc-health.yml
- .github/workflows/test.yml
- .github/workflows/testpypi-publish.yml
- .github/workflows/verify-package.yml
- .gitignore
- .pre-commit-config.yaml
- AGENTS.md
- CHANGELOG.md
- CLAUDE.md
- CONTRIBUTING.md
- LICENSE
- Makefile
- README.md
- SECURITY.md
- SKILL.md
- deploy/.env.example
- deploy/.gitignore
- deploy/Dockerfile
- deploy/Makefile
- deploy/README.md
- deploy/docker-compose.build.yml
- deploy/docker-compose.yml
- deploy/setup.sh
- deploy/tailscale/funnel.json
- desktop-extension/.mcpbignore
- desktop-extension/README.md
- desktop-extension/manifest.json
- desktop-extension/run_server.py
- docs/adr/0000-template.md
- docs/adr/0001-layered-core-seams-and-property-bridge-policy.md
- docs/adr/0002-capability-protocol-pattern.md
- docs/adr/0003-auth-facade-write-through.md
- docs/adr/0004-loop-affinity-contract.md
- docs/adr/0005-idempotency-taxonomy.md
- docs/adr/0006-vcr-scrubber-strategy.md
- docs/adr/0007-test-monkeypatch-policy.md
- docs/adr/0008-cli-services-extraction-pattern.md
- docs/adr/0009-middleware-chain.md
- docs/adr/0010-session-kernel-split.md
- docs/adr/0011-schema-validation-policy.md
- docs/adr/0012-implementation-surface-convention.md
- docs/adr/0013-composable-session-capabilities.md
- docs/adr/0014-feature-local-runtime-adapters.md
- docs/adr/0015-json-envelope-contract-for-post-parse-click-exceptions.md
- docs/adr/0016-auth-identity-and-core-logger-compatibility.md
- docs/adr/0017-public-facade-private-implementation.md
- docs/adr/0018-deprecation-strategy.md
- docs/adr/0019-error-and-return-contract.md
- docs/adr/0020-sealed-async-result-types.md
- docs/adr/0021-transport-neutral-app-layer.md
- docs/adr/0022-regenerable-baselines.md
- docs/adr/0023-master-token-headless-auth.md
- docs/adr/0024-mcp-remote-file-transfer.md
- docs/adr/0025-mcp-tool-granularity.md
- docs/adr/0026-mcp-studio-surface.md
- docs/adr/0027-mcp-app-upload-widget.md
- docs/adr/0028-gemini-notebook-rename.md
- docs/adr/0029-canonical-storage-writer.md
- docs/adr/0030-one-recovery-ladder.md
- docs/adr/0031-credential-tier-auth-model.md
- docs/adr/0032-auth-domain-types.md
- docs/adr/0033-auth-consolidation-policy.md
- docs/adr/0034-auth-storage-object-model.md
- docs/adr/0035-mobile-resilience-transport.md
- docs/adr/0036-browser-acquisition-package.md
- docs/adr/0037-live-usage-and-quota-api.md
- docs/adr/0038-local-fault-injection-harness.md
- docs/adr/0039-backend-specific-credential-surfaces.md
- docs/adr/README.md
- docs/android/README.md
- docs/android/android-traffic-capture.md
- docs/android/artifact-contracts-and-live-validation.md
- docs/android/auth-research.md
- docs/android/blutter-dart3.13.patch
- docs/android/blutter-grpc-signature-evidence.md
- docs/android/capture.md
- docs/android/chat-session-control-evidence.md
- docs/android/copy-append-suggestion-evidence.md
- docs/android/deep-research-evidence.md
- docs/android/endpoints.md
- docs/android/enums.txt
- docs/android/file-transfer-evidence.md
- docs/android/grpc-capability-and-signature-evidence.md
- docs/android/grpc-runtime-parser-overrides.json
- docs/android/grpc-service-signature-exceptions.json
- docs/android/grpc-service-signature-inferences.json
- docs/android/proto-evidence-ledger.md
- docs/android/public-api-audit.md
- docs/android/resource-lifecycle-and-public-qualification.md
- docs/android/schema.proto
- docs/android/source-search-evidence.md
- docs/android/usage-quota-evidence.md
- docs/android/web-compat-seam-closure.md
- docs/architecture.md
- docs/auth-cookie-lifecycle.md
- docs/cli-exit-codes.md
- docs/cli-reference.md
- docs/configuration.md
- docs/conventions.md
- docs/deprecations.md
- docs/development.md
- docs/diagrams/01-system-overview.architecture.json
- docs/diagrams/01-system-overview.html
- docs/diagrams/02-adapters-and-app-layer.architecture.json
- docs/diagrams/02-adapters-and-app-layer.html
- docs/diagrams/03-client-runtime-and-transport.architecture.json
- docs/diagrams/03-client-runtime-and-transport.html
- docs/diagrams/04-authentication.architecture.json
- docs/diagrams/04-authentication.html
- docs/diagrams/05-feature-services.architecture.json
- docs/diagrams/05-feature-services.html
- docs/diagrams/06-backends-web-and-android.architecture.json
- docs/diagrams/06-backends-web-and-android.html
- docs/diagrams/07-rpc-call-path.html
- docs/diagrams/07-rpc-call-path.sequence.json
- docs/diagrams/08-artifacts-class-model.architecture.json
- docs/diagrams/08-artifacts-class-model.html
- docs/diagrams/09-exception-hierarchy.architecture.json
- docs/diagrams/09-exception-hierarchy.html
- docs/diagrams/10-login-workflow.html
- docs/diagrams/10-login-workflow.workflow.json
- docs/diagrams/11-chat-ask-sequence.html
- docs/diagrams/11-chat-ask-sequence.sequence.json
- docs/diagrams/12-source-ingest-dataflow.dataflow.json
- docs/diagrams/12-source-ingest-dataflow.html
- docs/diagrams/13-artifact-lifecycle.html
- docs/diagrams/13-artifact-lifecycle.lifecycle.json
- docs/diagrams/14-android-backend.architecture.json
- docs/diagrams/14-android-backend.html
- docs/diagrams/15-android-call-path.html
- docs/diagrams/15-android-call-path.sequence.json
- docs/diagrams/16-cli-subsystem.architecture.json
- docs/diagrams/16-cli-subsystem.html
- docs/diagrams/17-mcp-subsystem.architecture.json
- docs/diagrams/17-mcp-subsystem.html
- docs/diagrams/18-rest-server-subsystem.architecture.json
- docs/diagrams/18-rest-server-subsystem.html
- docs/diagrams/19-client-resource-lifecycle.html
- docs/diagrams/19-client-resource-lifecycle.lifecycle.json
- docs/diagrams/20-retry-policy-workflow.html
- docs/diagrams/20-retry-policy-workflow.workflow.json
- docs/diagrams/21-deep-research-lifecycle.html
- docs/diagrams/21-deep-research-lifecycle.lifecycle.json
- docs/diagrams/22-testing-and-guardrails.architecture.json
- docs/diagrams/22-testing-and-guardrails.html
- docs/diagrams/23-runtime-class-model.architecture.json
- docs/diagrams/23-runtime-class-model.html
- docs/diagrams/24-auth-class-model.architecture.json
- docs/diagrams/24-auth-class-model.html
- docs/diagrams/25-sources-class-model.architecture.json
- docs/diagrams/25-sources-class-model.html
- docs/diagrams/26-chat-notes-class-model.architecture.json
- docs/diagrams/26-chat-notes-class-model.html
- docs/diagrams/27-capability-contracts.architecture.json
- docs/diagrams/27-capability-contracts.html
- docs/diagrams/28-profile-auth-backend-selection.workflow.html
- docs/diagrams/28-profile-auth-backend-selection.workflow.json
- docs/diagrams/29-organization-and-sharing.architecture.html
- docs/diagrams/29-organization-and-sharing.architecture.json
- docs/diagrams/30-transfer-security-boundaries.dataflow.html
- docs/diagrams/30-transfer-security-boundaries.dataflow.json
- docs/diagrams/31-cold-auth-recovery.html
- docs/diagrams/31-cold-auth-recovery.sequence.json
- docs/diagrams/32-mcp-client-provider.html
- docs/diagrams/32-mcp-client-provider.sequence.json
- docs/diagrams/33-mcp-detached-chat-task.html
- docs/diagrams/33-mcp-detached-chat-task.lifecycle.json
- docs/diagrams/34-client-ownership-boundaries.architecture.json
- docs/diagrams/34-client-ownership-boundaries.html
- docs/diagrams/35-client-construction-and-lifecycle.html
- docs/diagrams/35-client-construction-and-lifecycle.lifecycle.json
- docs/diagrams/36-operation-deadline-and-cancellation.html
- docs/diagrams/36-operation-deadline-and-cancellation.sequence.json
- docs/diagrams/37-operation-journal-and-recovery.dataflow.json
- docs/diagrams/37-operation-journal-and-recovery.html
- docs/diagrams/38-adapter-prepare-confirm-execute.html
- docs/diagrams/38-adapter-prepare-confirm-execute.workflow.json
- docs/diagrams/39-fault-coverage.architecture.json
- docs/diagrams/39-fault-coverage.html
- docs/diagrams/40-fault-scenario-lifecycle.html
- docs/diagrams/40-fault-scenario-lifecycle.workflow.json
- docs/diagrams/README.md
- docs/e2e-quota-efficiency.md
- docs/fault-injection.md
- docs/installation.md
- docs/mcp-guide.md
- docs/python-api.md
- docs/quota-limits.md
- docs/refactor-history.md
- docs/releasing.md
- docs/rpc-development.md
- docs/rpc-reference.md
- docs/security.md
- docs/stability.md
- docs/troubleshooting.md
- docs/upgrading-to-0.8.0.md
- docs/web-android-public-behavior.md
- examples/bulk-import.py
- examples/chat.py
- examples/notes.py
- examples/quickstart.py
- examples/refresh_browser_cookies.py
- examples/research-to-podcast.py
- examples/video.py
- hatch_build.py
- notebooklm-py.png
- pyproject.toml
- scripts/__init__.py
- scripts/_ci_e2e_notebooks.py
- scripts/_ci_progress.py
- scripts/_ci_rpc_progress.py
- scripts/_live_auth_scenarios/__init__.py
- scripts/_live_auth_scenarios/_contract.py
- scripts/_live_auth_scenarios/browser_refresh.py
- scripts/_live_auth_scenarios/crash_safe_writer.py
- scripts/_live_auth_scenarios/master_token_recovery.py
- scripts/_live_auth_scenarios/mcp_recovery.py
- scripts/_live_auth_scenarios/rest_recovery.py
- scripts/_live_auth_scenarios/sibling_concurrent_reload.py
- scripts/_live_auth_scenarios/storage_reload.py
- scripts/_onetime_rescrub_cookies.py
- scripts/_onetime_retarget_cassette_hosts.py
- scripts/_strip_audit_refs.py
- scripts/_tracked_files.py
- scripts/aggregate_ci_e2e_outcomes.py
- scripts/android_grpc_canary.py
- scripts/api-compat-allowlist.json
- scripts/audit_auth_import_graph.py
- scripts/audit_auth_patch_sites.py
- scripts/audit_auth_shared_mutations.py
- scripts/audit_backend_coupling.py
- scripts/audit_public_api_compat.py
- scripts/audit_test_suite.py
- scripts/capture_mobile_grpc.js
- scripts/capture_rpc_registry.py
- scripts/check_action_pinning.py
- scripts/check_auth_behavior_scenario_policy.py
- scripts/check_auth_coverage_delta.py
- scripts/check_auth_lifecycle_cleanup_policy.py
- scripts/check_base_wheel.py
- scripts/check_ci_install_parity.py
- scripts/check_claude_md_freshness.py
- scripts/check_coverage_thresholds.py
- scripts/check_deprecation_targets.py
- scripts/check_docs_module_refs.py
- scripts/check_rpc_health.py
- scripts/check_workflow_permissions.py
- scripts/check_workflow_secret_gates.py
- scripts/decode_mobile_grpc.py
- scripts/diagnose_get_notebook.py
- scripts/extract_blutter_grpc_signatures.py
- scripts/live_auth_matrix.py
- scripts/manage_ci_e2e_notebooks.py
- scripts/materialize_ci_auth.py
- scripts/mcp_live_smoke.py
- scripts/parse_pbenums.py
- scripts/parse_pbschema.py
- scripts/regen_baselines.py
- scripts/regenerate_android_protos.py
- scripts/rescrub-cassettes.py
- scripts/scrub_rpc_har.py
- scripts/select_ci_account.py
- scripts/stress_fault_server.py
- scripts/test_taxonomy_inventory.py
- scripts/verify_ci_artifacts.py
- src/notebooklm/__init__.py
- src/notebooklm/__main__.py
- src/notebooklm/_adapter_support.py
- src/notebooklm/_android/__init__.py
- src/notebooklm/_android/account.py
- src/notebooklm/_android/artifact_collaborators.py
- src/notebooklm/_android/artifact_creation.py
- src/notebooklm/_android/artifact_mutations.py
- src/notebooklm/_android/artifact_note_mind_maps.py
- src/notebooklm/_android/artifact_outputs.py
- src/notebooklm/_android/artifact_proto.py
- src/notebooklm/_android/artifact_reads.py
- src/notebooklm/_android/artifact_transfers.py
- src/notebooklm/_android/artifacts.py
- src/notebooklm/_android/assembly.py
- src/notebooklm/_android/assets.py
- src/notebooklm/_android/auth.py
- src/notebooklm/_android/chat.py
- src/notebooklm/_android/codecs/__init__.py
- src/notebooklm/_android/codecs/account.py
- src/notebooklm/_android/codecs/artifacts.py
- src/notebooklm/_android/codecs/chat.py
- src/notebooklm/_android/codecs/documents.py
- src/notebooklm/_android/codecs/notebooks.py
- src/notebooklm/_android/codecs/notes.py
- src/notebooklm/_android/codecs/organization.py
- src/notebooklm/_android/codecs/research.py
- src/notebooklm/_android/codecs/sharing.py
- src/notebooklm/_android/codecs/sources.py
- src/notebooklm/_android/codecs/usage.py
- src/notebooklm/_android/collections.py
- src/notebooklm/_android/drive_staging.py
- src/notebooklm/_android/epoch.py
- src/notebooklm/_android/errors.py
- src/notebooklm/_android/evidence.py
- src/notebooklm/_android/labels.py
- src/notebooklm/_android/mind_maps.py
- src/notebooklm/_android/note_backed.py
- src/notebooklm/_android/notebooks.py
- src/notebooklm/_android/notes.py
- src/notebooklm/_android/organization.py
- src/notebooklm/_android/phenotype.py
- src/notebooklm/_android/play_books.py
- src/notebooklm/_android/proto/__init__.py
- src/notebooklm/_android/proto/google/internal/labs/tailwind/api/v1/quota_pb2.py
- src/notebooklm/_android/proto/google/internal/labs/tailwind/api/v1/quota_pb2_grpc.py
- src/notebooklm/_android/proto/google/internal/labs/tailwind/metering/v1/metering_pb2.py
- src/notebooklm/_android/proto/google/internal/labs/tailwind/metering/v1/metering_pb2_grpc.py
- src/notebooklm/_android/proto/google/internal/labs/tailwind/orchestration/v1/account_pb2.py
- src/notebooklm/_android/proto/google/internal/labs/tailwind/orchestration/v1/account_pb2_grpc.py
- src/notebooklm/_android/proto/google/internal/labs/tailwind/orchestration/v1/agency/supported_pb2.py
- src/notebooklm/_android/proto/google/internal/labs/tailwind/orchestration/v1/agency/supported_pb2_grpc.py
- src/notebooklm/_android/proto/google/internal/labs/tailwind/orchestration/v1/artifacts_pb2.py
- src/notebooklm/_android/proto/google/internal/labs/tailwind/orchestration/v1/artifacts_pb2_grpc.py
- src/notebooklm/_android/proto/google/internal/labs/tailwind/orchestration/v1/chat_pb2.py
- src/notebooklm/_android/proto/google/internal/labs/tailwind/orchestration/v1/chat_pb2_grpc.py
- src/notebooklm/_android/proto/google/internal/labs/tailwind/orchestration/v1/notebooks_pb2.py
- src/notebooklm/_android/proto/google/internal/labs/tailwind/orchestration/v1/notebooks_pb2_grpc.py
- src/notebooklm/_android/proto/google/internal/labs/tailwind/orchestration/v1/notes_pb2.py
- src/notebooklm/_android/proto/google/internal/labs/tailwind/orchestration/v1/notes_pb2_grpc.py
- src/notebooklm/_android/proto/google/internal/labs/tailwind/orchestration/v1/orchestration_service_pb2.py
- src/notebooklm/_android/proto/google/internal/labs/tailwind/orchestration/v1/orchestration_service_pb2_grpc.py
- src/notebooklm/_android/proto/google/internal/labs/tailwind/orchestration/v1/organization_pb2.py
- src/notebooklm/_android/proto/google/internal/labs/tailwind/orchestration/v1/organization_pb2_grpc.py
- src/notebooklm/_android/proto/google/internal/labs/tailwind/orchestration/v1/read_pb2.py
- src/notebooklm/_android/proto/google/internal/labs/tailwind/orchestration/v1/read_pb2_grpc.py
- src/notebooklm/_android/proto/google/internal/labs/tailwind/orchestration/v1/research_pb2.py
- src/notebooklm/_android/proto/google/internal/labs/tailwind/orchestration/v1/research_pb2_grpc.py
- src/notebooklm/_android/proto/google/internal/labs/tailwind/orchestration/v1/sources_pb2.py
- src/notebooklm/_android/proto/google/internal/labs/tailwind/orchestration/v1/sources_pb2_grpc.py
- src/notebooklm/_android/proto/google/internal/labs/tailwind/v1/source_settings_pb2.py
- src/notebooklm/_android/proto/google/internal/labs/tailwind/v1/source_settings_pb2_grpc.py
- src/notebooklm/_android/proto/labs/language/tailwind/common/protos/common_pb2.py
- src/notebooklm/_android/proto/labs/language/tailwind/common/protos/common_pb2_grpc.py
- src/notebooklm/_android/proto/labs/language/tailwind/common/protos/metadata_pb2.py
- src/notebooklm/_android/proto/labs/language/tailwind/common/protos/metadata_pb2_grpc.py
- src/notebooklm/_android/proto/labs/language/tailwind/common/protos/provenance_pb2.py
- src/notebooklm/_android/proto/labs/language/tailwind/common/protos/provenance_pb2_grpc.py
- src/notebooklm/_android/proto/labs/language/tailwind/sharing/sharing_pb2.py
- src/notebooklm/_android/proto/labs/language/tailwind/sharing/sharing_pb2_grpc.py
- src/notebooklm/_android/proto/notebooklm/android/wire/v1/organization_mutations_pb2.py
- src/notebooklm/_android/proto/notebooklm/android/wire/v1/organization_mutations_pb2_grpc.py
- src/notebooklm/_android/proto/notebooklm/android/wire/v1/sharing_pb2.py
- src/notebooklm/_android/proto/notebooklm/android/wire/v1/sharing_pb2_grpc.py
- src/notebooklm/_android/proto/notebooklm/experiments/v1/exptsandconfigs_pb2.py
- src/notebooklm/_android/proto/notebooklm/experiments/v1/exptsandconfigs_pb2_grpc.py
- src/notebooklm/_android/proto/notebooklm/internal/android/wire/v1/artifacts_pb2.py
- src/notebooklm/_android/proto/notebooklm/internal/android/wire/v1/artifacts_pb2_grpc.py
- src/notebooklm/_android/proto/notebooklm/internal/android/wire/v1/notebooks_pb2.py
- src/notebooklm/_android/proto/notebooklm/internal/android/wire/v1/notebooks_pb2_grpc.py
- src/notebooklm/_android/proto/notebooklm/internal/android/wire/v1/source_content_pb2.py
- src/notebooklm/_android/proto/notebooklm/internal/android/wire/v1/source_content_pb2_grpc.py
- src/notebooklm/_android/proto/notebooklm/internal/android/wire/v1/usage_pb2.py
- src/notebooklm/_android/proto/notebooklm/internal/android/wire/v1/usage_pb2_grpc.py
- src/notebooklm/_android/proto_src/google/internal/labs/tailwind/api/v1/quota.proto
- src/notebooklm/_android/proto_src/google/internal/labs/tailwind/metering/v1/metering.proto
- src/notebooklm/_android/proto_src/google/internal/labs/tailwind/orchestration/v1/account.proto
- src/notebooklm/_android/proto_src/google/internal/labs/tailwind/orchestration/v1/agency/supported.proto
- src/notebooklm/_android/proto_src/google/internal/labs/tailwind/orchestration/v1/artifacts.proto
- src/notebooklm/_android/proto_src/google/internal/labs/tailwind/orchestration/v1/chat.proto
- src/notebooklm/_android/proto_src/google/internal/labs/tailwind/orchestration/v1/notebooks.proto
- src/notebooklm/_android/proto_src/google/internal/labs/tailwind/orchestration/v1/notes.proto
- src/notebooklm/_android/proto_src/google/internal/labs/tailwind/orchestration/v1/orchestration_service.proto
- src/notebooklm/_android/proto_src/google/internal/labs/tailwind/orchestration/v1/organization.proto
- src/notebooklm/_android/proto_src/google/internal/labs/tailwind/orchestration/v1/read.proto
- src/notebooklm/_android/proto_src/google/internal/labs/tailwind/orchestration/v1/research.proto
- src/notebooklm/_android/proto_src/google/internal/labs/tailwind/orchestration/v1/sources.proto
- src/notebooklm/_android/proto_src/google/internal/labs/tailwind/v1/source_settings.proto
- src/notebooklm/_android/proto_src/labs/language/tailwind/common/protos/common.proto
- src/notebooklm/_android/proto_src/labs/language/tailwind/common/protos/metadata.proto
- src/notebooklm/_android/proto_src/labs/language/tailwind/common/protos/provenance.proto
- src/notebooklm/_android/proto_src/labs/language/tailwind/sharing/sharing.proto
- src/notebooklm/_android/proto_src/notebooklm/android/wire/v1/organization_mutations.proto
- src/notebooklm/_android/proto_src/notebooklm/android/wire/v1/sharing.proto
- src/notebooklm/_android/proto_src/notebooklm/experiments/v1/exptsandconfigs.proto
- src/notebooklm/_android/proto_src/notebooklm/internal/android/wire/v1/artifacts.proto
- src/notebooklm/_android/proto_src/notebooklm/internal/android/wire/v1/notebooks.proto
- src/notebooklm/_android/proto_src/notebooklm/internal/android/wire/v1/source_content.proto
- src/notebooklm/_android/proto_src/notebooklm/internal/android/wire/v1/usage.proto
- src/notebooklm/_android/raw.py
- src/notebooklm/_android/research.py
- src/notebooklm/_android/retry_policy.py
- src/notebooklm/_android/runtime.py
- src/notebooklm/_android/session.py
- src/notebooklm/_android/settings.py
- src/notebooklm/_android/sharing.py
- src/notebooklm/_android/source_batch.py
- src/notebooklm/_android/source_search.py
- src/notebooklm/_android/source_transfers.py
- src/notebooklm/_android/sources.py
- src/notebooklm/_android/upload.py
- src/notebooklm/_android/upload_deadlines.py
- src/notebooklm/_app/__init__.py
- src/notebooklm/_app/artifacts.py
- src/notebooklm/_app/auth_check.py
- src/notebooklm/_app/chat.py
- src/notebooklm/_app/client_config.py
- src/notebooklm/_app/collections.py
- src/notebooklm/_app/doctor.py
- src/notebooklm/_app/download.py
- src/notebooklm/_app/download_specs.py
- src/notebooklm/_app/errors.py
- src/notebooklm/_app/events.py
- src/notebooklm/_app/generate.py
- src/notebooklm/_app/generate_retry.py
- src/notebooklm/_app/generation_requests.py
- src/notebooklm/_app/labels.py
- src/notebooklm/_app/language.py
- src/notebooklm/_app/login_browser.py
- src/notebooklm/_app/login_cookie.py
- src/notebooklm/_app/master_token.py
- src/notebooklm/_app/mcp_install.py
- src/notebooklm/_app/notebooks.py
- src/notebooklm/_app/notes.py
- src/notebooklm/_app/pagination.py
- src/notebooklm/_app/profile.py
- src/notebooklm/_app/research.py
- src/notebooklm/_app/resolve.py
- src/notebooklm/_app/serialize.py
- src/notebooklm/_app/session.py
- src/notebooklm/_app/sharing.py
- src/notebooklm/_app/skill.py
- src/notebooklm/_app/source_add.py
- src/notebooklm/_app/source_batch.py
- src/notebooklm/_app/source_clean.py
- src/notebooklm/_app/source_content.py
- src/notebooklm/_app/source_listing.py
- src/notebooklm/_app/source_mutations.py
- src/notebooklm/_app/source_play_books.py
- src/notebooklm/_app/source_research.py
- src/notebooklm/_app/source_wait.py
- src/notebooklm/_app/views.py
- src/notebooklm/_artifact/__init__.py
- src/notebooklm/_artifact/_download_client.py
- src/notebooklm/_artifact/_guarded_transfer.py
- src/notebooklm/_artifact/_publication.py
- src/notebooklm/_artifact/_redirect_guard.py
- src/notebooklm/_artifact/creation.py
- src/notebooklm/_artifact/creation_normalized.py
- src/notebooklm/_artifact/creation_policy.py
- src/notebooklm/_artifact/creation_reports.py
- src/notebooklm/_artifact/download_selection.py
- src/notebooklm/_artifact/downloads.py
- src/notebooklm/_artifact/formatters.py
- src/notebooklm/_artifact/polling.py
- src/notebooklm/_artifact/validation.py
- src/notebooklm/_artifacts.py
- src/notebooklm/_atomic_io.py
- src/notebooklm/_auth/__init__.py
- src/notebooklm/_auth/account.py
- src/notebooklm/_auth/account_email.py
- src/notebooklm/_auth/account_repair.py
- src/notebooklm/_auth/account_types.py
- src/notebooklm/_auth/bound_refresh.py
- src/notebooklm/_auth/cookie_filter.py
- src/notebooklm/_auth/cookie_merge.py
- src/notebooklm/_auth/cookie_policy.py
- src/notebooklm/_auth/cookie_semantics.py
- src/notebooklm/_auth/cookie_types.py
- src/notebooklm/_auth/cookies.py
- src/notebooklm/_auth/credential_io.py
- src/notebooklm/_auth/extraction.py
- src/notebooklm/_auth/keepalive.py
- src/notebooklm/_auth/master_token.py
- src/notebooklm/_auth/master_token_bootstrap.py
- src/notebooklm/_auth/master_token_file.py
- src/notebooklm/_auth/master_token_types.py
- src/notebooklm/_auth/mint_service.py
- src/notebooklm/_auth/paths.py
- src/notebooklm/_auth/profile_account.py
- src/notebooklm/_auth/profile_document.py
- src/notebooklm/_auth/profile_migration.py
- src/notebooklm/_auth/profile_store.py
- src/notebooklm/_auth/psidts_recovery.py
- src/notebooklm/_auth/recovery.py
- src/notebooklm/_auth/recovery_rungs.py
- src/notebooklm/_auth/refresh.py
- src/notebooklm/_auth/single_flight.py
- src/notebooklm/_auth/storage.py
- src/notebooklm/_auth/storage_lock.py
- src/notebooklm/_auth/tokens.py
- src/notebooklm/_backoff.py
- src/notebooklm/_browser/__init__.py
- src/notebooklm/_browser/browser_capture.py
- src/notebooklm/_browser/browser_launch_errors.py
- src/notebooklm/_browser/headless_reauth.py
- src/notebooklm/_browser/navigation_errors.py
- src/notebooklm/_browser/oauth_token.py
- src/notebooklm/_callbacks.py
- src/notebooklm/_chat.py
- src/notebooklm/_client_assembly.py
- src/notebooklm/_client_compat.py
- src/notebooklm/_client_contracts.py
- src/notebooklm/_client_metrics.py
- src/notebooklm/_client_options.py
- src/notebooklm/_collections.py
- src/notebooklm/_conversation_cache.py
- src/notebooklm/_curl_cffi_transport.py
- src/notebooklm/_deadline.py
- src/notebooklm/_deprecation.py
- src/notebooklm/_env.py
- src/notebooklm/_hop_credentials.py
- src/notebooklm/_http_client_factory.py
- src/notebooklm/_idempotency.py
- src/notebooklm/_labels.py
- src/notebooklm/_logging.py
- src/notebooklm/_lookup.py
- src/notebooklm/_loop_affinity.py
- src/notebooklm/_loop_bound.py
- src/notebooklm/_mind_maps_api.py
- src/notebooklm/_notebook_metadata.py
- src/notebooklm/_notebooks.py
- src/notebooklm/_notes.py
- src/notebooklm/_polling_registry.py
- src/notebooklm/_redact.py
- src/notebooklm/_request_context.py
- src/notebooklm/_request_policy.py
- src/notebooklm/_research.py
- src/notebooklm/_research_import.py
- src/notebooklm/_runtime/__init__.py
- src/notebooklm/_runtime/auth_refresh_retry.py
- src/notebooklm/_runtime/call_supervisor.py
- src/notebooklm/_runtime/config.py
- src/notebooklm/_runtime/contracts.py
- src/notebooklm/_runtime/error_injection.py
- src/notebooklm/_runtime/helpers.py
- src/notebooklm/_runtime/init.py
- src/notebooklm/_runtime/lifecycle.py
- src/notebooklm/_runtime/operation_context.py
- src/notebooklm/_runtime/retry_budget.py
- src/notebooklm/_secrets.py
- src/notebooklm/_serving.py
- src/notebooklm/_settings.py
- src/notebooklm/_sharing.py
- src/notebooklm/_source/__init__.py
- src/notebooklm/_source/batch.py
- src/notebooklm/_source/delete_batch.py
- src/notebooklm/_source/drive.py
- src/notebooklm/_source/markdown.py
- src/notebooklm/_source/polling.py
- src/notebooklm/_sources.py
- src/notebooklm/_types/__init__.py
- src/notebooklm/_types/artifact_content.py
- src/notebooklm/_types/artifact_download.py
- src/notebooklm/_types/artifacts.py
- src/notebooklm/_types/chat.py
- src/notebooklm/_types/collections.py
- src/notebooklm/_types/common.py
- src/notebooklm/_types/documents.py
- src/notebooklm/_types/enums.py
- src/notebooklm/_types/labels.py
- src/notebooklm/_types/mind_maps.py
- src/notebooklm/_types/notebooks.py
- src/notebooklm/_types/notes.py
- src/notebooklm/_types/research.py
- src/notebooklm/_types/sharing.py
- src/notebooklm/_types/source_delete.py
- src/notebooklm/_types/sources.py
- src/notebooklm/_types/usage.py
- src/notebooklm/_url_utils.py
- src/notebooklm/_usage.py
- src/notebooklm/_version_check.py
- src/notebooklm/_version_info.py
- src/notebooklm/_web/__init__.py
- src/notebooklm/_web/artifact/__init__.py
- src/notebooklm/_web/artifact/downloads.py
- src/notebooklm/_web/artifact/generation.py
- src/notebooklm/_web/artifact/listing.py
- src/notebooklm/_web/artifact/table.py
- src/notebooklm/_web/artifacts.py
- src/notebooklm/_web/assembly.py
- src/notebooklm/_web/assets.py
- src/notebooklm/_web/chat.py
- src/notebooklm/_web/collections.py
- src/notebooklm/_web/contracts.py
- src/notebooklm/_web/labels.py
- src/notebooklm/_web/mind_maps.py
- src/notebooklm/_web/note_tasks.py
- src/notebooklm/_web/notebooks.py
- src/notebooklm/_web/notes.py
- src/notebooklm/_web/params/__init__.py
- src/notebooklm/_web/params/artifacts.py
- src/notebooklm/_web/params/chat_note.py
- src/notebooklm/_web/params/chat_session.py
- src/notebooklm/_web/params/chat_stream.py
- src/notebooklm/_web/params/collections.py
- src/notebooklm/_web/params/creation.py
- src/notebooklm/_web/params/labels.py
- src/notebooklm/_web/params/notebooks.py
- src/notebooklm/_web/params/sources.py
- src/notebooklm/_web/policy.py
- src/notebooklm/_web/raw.py
- src/notebooklm/_web/research.py
- src/notebooklm/_web/rows/__init__.py
- src/notebooklm/_web/rows/artifacts.py
- src/notebooklm/_web/rows/chat.py
- src/notebooklm/_web/rows/chat_stream.py
- src/notebooklm/_web/rows/chunks.py
- src/notebooklm/_web/rows/collections.py
- src/notebooklm/_web/rows/customization.py
- src/notebooklm/_web/rows/documents.py
- src/notebooklm/_web/rows/labels.py
- src/notebooklm/_web/rows/notebooks.py
- src/notebooklm/_web/rows/notes.py
- src/notebooklm/_web/rows/play_books.py
- src/notebooklm/_web/rows/research.py
- src/notebooklm/_web/rows/research_task.py
- src/notebooklm/_web/rows/sharing.py
- src/notebooklm/_web/rows/source_models.py
- src/notebooklm/_web/rows/sources.py
- src/notebooklm/_web/rows/transfers.py
- src/notebooklm/_web/rows/usage.py
- src/notebooklm/_web/settings.py
- src/notebooklm/_web/sharing.py
- src/notebooklm/_web/sources/__init__.py
- src/notebooklm/_web/sources/_upload_decode.py
- src/notebooklm/_web/sources/add.py
- src/notebooklm/_web/sources/batch.py
- src/notebooklm/_web/sources/content.py
- src/notebooklm/_web/sources/drive_import.py
- src/notebooklm/_web/sources/listing.py
- src/notebooklm/_web/sources/play_books.py
- src/notebooklm/_web/sources/search.py
- src/notebooklm/_web/sources/transfers.py
- src/notebooklm/_web/sources/upload.py
- src/notebooklm/_web/transport/__init__.py
- src/notebooklm/_web/transport/auth.py
- src/notebooklm/_web/transport/auth_refresh_retry.py
- src/notebooklm/_web/transport/chat.py
- src/notebooklm/_web/transport/composed.py
- src/notebooklm/_web/transport/config.py
- src/notebooklm/_web/transport/cookie_persistence.py
- src/notebooklm/_web/transport/error_injection.py
- src/notebooklm/_web/transport/errors.py
- src/notebooklm/_web/transport/executor.py
- src/notebooklm/_web/transport/init.py
- src/notebooklm/_web/transport/kernel.py
- src/notebooklm/_web/transport/lifecycle.py
- src/notebooklm/_web/transport/middleware/__init__.py
- src/notebooklm/_web/transport/middleware/auth_refresh.py
- src/notebooklm/_web/transport/middleware/chain.py
- src/notebooklm/_web/transport/middleware/chain_host.py
- src/notebooklm/_web/transport/middleware/context.py
- src/notebooklm/_web/transport/middleware/core.py
- src/notebooklm/_web/transport/middleware/error_injection.py
- src/notebooklm/_web/transport/middleware/retry.py
- src/notebooklm/_web/transport/middleware/tracing.py
- src/notebooklm/_web/transport/reqid_counter.py
- src/notebooklm/_web/transport/request_types.py
- src/notebooklm/_web/transport/runtime.py
- src/notebooklm/_web/transport/seams.py
- src/notebooklm/_web/transport/session_auth.py
- src/notebooklm/_web/transport/sidecar.py
- src/notebooklm/_web/transport/streaming_post.py
- src/notebooklm/_web/usage.py
- src/notebooklm/_web/wire/__init__.py
- src/notebooklm/_web/wire/decoder.py
- src/notebooklm/_web/wire/encoder.py
- src/notebooklm/_web/wire/overrides.py
- src/notebooklm/_web/wire/safe_index.py
- src/notebooklm/artifacts.py
- src/notebooklm/auth.py
- src/notebooklm/cli/__init__.py
- src/notebooklm/cli/_chromium_profiles.py
- src/notebooklm/cli/_cookie_import.py
- src/notebooklm/cli/_download_specs.py
- src/notebooklm/cli/_encoding.py
- src/notebooklm/cli/_firefox_containers.py
- src/notebooklm/cli/_generate_render.py
- src/notebooklm/cli/_session_render.py
- src/notebooklm/cli/_source_render.py
- src/notebooklm/cli/agent_cmd.py
- src/notebooklm/cli/agent_templates.py
- src/notebooklm/cli/artifact_cmd.py
- src/notebooklm/cli/auth_runtime.py
- src/notebooklm/cli/chat_cmd.py
- src/notebooklm/cli/collection_cmd.py
- src/notebooklm/cli/completion.py
- src/notebooklm/cli/context.py
- src/notebooklm/cli/doctor_cmd.py
- src/notebooklm/cli/download_cmd.py
- src/notebooklm/cli/download_helpers.py
- src/notebooklm/cli/error_handler.py
- src/notebooklm/cli/generate_cmd.py
- src/notebooklm/cli/grouped.py
- src/notebooklm/cli/helpers.py
- src/notebooklm/cli/input.py
- src/notebooklm/cli/label_cmd.py
- src/notebooklm/cli/language_cmd.py
- src/notebooklm/cli/master_token_login.py
- src/notebooklm/cli/mcp_cmd.py
- src/notebooklm/cli/note_cmd.py
- src/notebooklm/cli/notebook_cmd.py
- src/notebooklm/cli/options.py
- src/notebooklm/cli/playwright_login_io.py
- src/notebooklm/cli/polling_ui.py
- src/notebooklm/cli/profile_cmd.py
- src/notebooklm/cli/rendering.py
- src/notebooklm/cli/research_cmd.py
- src/notebooklm/cli/research_import.py
- src/notebooklm/cli/resolve.py
- src/notebooklm/cli/runtime.py
- src/notebooklm/cli/services/__init__.py
- src/notebooklm/cli/services/auth_diagnostics.py
- src/notebooklm/cli/services/auth_refresh.py
- src/notebooklm/cli/services/auth_source.py
- src/notebooklm/cli/services/confirming_mutation.py
- src/notebooklm/cli/services/download.py
- src/notebooklm/cli/services/label_listing.py
- src/notebooklm/cli/services/listing.py
- src/notebooklm/cli/services/login/__init__.py
- src/notebooklm/cli/services/login/browser_accounts.py
- src/notebooklm/cli/services/login/chromium_accounts.py
- src/notebooklm/cli/services/login/cookie_domains.py
- src/notebooklm/cli/services/login/cookie_jar.py
- src/notebooklm/cli/services/login/cookie_writes.py
- src/notebooklm/cli/services/login/exceptions.py
- src/notebooklm/cli/services/login/firefox_accounts.py
- src/notebooklm/cli/services/login/io_seam.py
- src/notebooklm/cli/services/login/master_token.py
- src/notebooklm/cli/services/login/outcomes.py
- src/notebooklm/cli/services/login/profile_targets.py
- src/notebooklm/cli/services/login/refresh.py
- src/notebooklm/cli/services/login/rookie_cookies_errors.py
- src/notebooklm/cli/services/playwright_login.py
- src/notebooklm/cli/services/playwright_redaction.py
- src/notebooklm/cli/services/polling.py
- src/notebooklm/cli/services/research.py
- src/notebooklm/cli/services/session_context.py
- src/notebooklm/cli/services/source_listing.py
- src/notebooklm/cli/services/source_mutations.py
- src/notebooklm/cli/services/source_research.py
- src/notebooklm/cli/services/source_serializers.py
- src/notebooklm/cli/session_cmd.py
- src/notebooklm/cli/share_cmd.py
- src/notebooklm/cli/skill_cmd.py
- src/notebooklm/cli/source_cmd.py
- src/notebooklm/cli/usage_cmd.py
- src/notebooklm/client.py
- src/notebooklm/config.py
- src/notebooklm/downloads.py
- src/notebooklm/exceptions.py
- src/notebooklm/io.py
- src/notebooklm/log.py
- src/notebooklm/mcp/__init__.py
- src/notebooklm/mcp/__main__.py
- src/notebooklm/mcp/_auth.py
- src/notebooklm/mcp/_batch.py
- src/notebooklm/mcp/_chattasks.py
- src/notebooklm/mcp/_clientprovider.py
- src/notebooklm/mcp/_coerce.py
- src/notebooklm/mcp/_confirm.py
- src/notebooklm/mcp/_context.py
- src/notebooklm/mcp/_errors.py
- src/notebooklm/mcp/_filelink.py
- src/notebooklm/mcp/_fileroutes.py
- src/notebooklm/mcp/_host_guard.py
- src/notebooklm/mcp/_hostupload.py
- src/notebooklm/mcp/_oauth.py
- src/notebooklm/mcp/_paginate.py
- src/notebooklm/mcp/_resolve.py
- src/notebooklm/mcp/_uploadwidget.py
- src/notebooklm/mcp/_urlcheck.py
- src/notebooklm/mcp/server.py
- src/notebooklm/mcp/tools/__init__.py
- src/notebooklm/mcp/tools/_content_sanity.py
- src/notebooklm/mcp/tools/_fileupload.py
- src/notebooklm/mcp/tools/_passthrough.py
- src/notebooklm/mcp/tools/_preview.py
- src/notebooklm/mcp/tools/_studio_download.py
- src/notebooklm/mcp/tools/_studio_items.py
- src/notebooklm/mcp/tools/_studio_payloads.py
- src/notebooklm/mcp/tools/_waitagg.py
- src/notebooklm/mcp/tools/chat.py
- src/notebooklm/mcp/tools/meta.py
- src/notebooklm/mcp/tools/notebooks.py
- src/notebooklm/mcp/tools/notes.py
- src/notebooklm/mcp/tools/research.py
- src/notebooklm/mcp/tools/sharing.py
- src/notebooklm/mcp/tools/sources.py
- src/notebooklm/mcp/tools/sources_drive.py
- src/notebooklm/mcp/tools/sources_playbooks.py
- src/notebooklm/mcp/tools/studio.py
- src/notebooklm/migration.py
- src/notebooklm/notebooklm_cli.py
- src/notebooklm/options.py
- src/notebooklm/outcomes.py
- src/notebooklm/paths.py
- src/notebooklm/py.typed
- src/notebooklm/raw.py
- src/notebooklm/research.py
- src/notebooklm/rpc/__init__.py
- src/notebooklm/rpc/_identifiers.py
- src/notebooklm/rpc/types.py
- src/notebooklm/server/__init__.py
- src/notebooklm/server/__main__.py
- src/notebooklm/server/_auth.py
- src/notebooklm/server/_context.py
- src/notebooklm/server/_errors.py
- src/notebooklm/server/_limits.py
- src/notebooklm/server/_pagination.py
- src/notebooklm/server/_pending.py
- src/notebooklm/server/app.py
- src/notebooklm/server/routes/__init__.py
- src/notebooklm/server/routes/_passthrough.py
- src/notebooklm/server/routes/artifacts.py
- src/notebooklm/server/routes/chat.py
- src/notebooklm/server/routes/meta.py
- src/notebooklm/server/routes/notebooks.py
- src/notebooklm/server/routes/notes.py
- src/notebooklm/server/routes/research.py
- src/notebooklm/server/routes/share.py
- src/notebooklm/server/routes/sources.py
- src/notebooklm/types.py
- src/notebooklm/urls.py
- src/notebooklm/utils.py
- tests/__init__.py
- tests/_baselines/__init__.py
- tests/_baselines/backend_boundary.py
- tests/_baselines/cli_contract.py
- tests/_baselines/guardrail_literals.py
- tests/_baselines/module_size.py
- tests/_baselines/registry.py
- tests/_baselines/storage_transaction_policy.py
- tests/_fault_server/__init__.py
- tests/_fault_server/adapter_cli_worker.py
- tests/_fault_server/adapter_lifecycle.py
- tests/_fault_server/adapter_lifecycle_worker.py
- tests/_fault_server/adapter_listener.py
- tests/_fault_server/adapter_registry.py
- tests/_fault_server/adapter_scenarios.py
- tests/_fault_server/android.py
- tests/_fault_server/android_cleanup.py
- tests/_fault_server/android_consistency.py
- tests/_fault_server/android_downloads.py
- tests/_fault_server/android_drive.py
- tests/_fault_server/android_protocol.py
- tests/_fault_server/android_resilience_scenarios.py
- tests/_fault_server/android_scenarios.py
- tests/_fault_server/android_transfers.py
- tests/_fault_server/auth_persistence_worker.py
- tests/_fault_server/common.py
- tests/_fault_server/curl_routing.py
- tests/_fault_server/curl_scenarios.py
- tests/_fault_server/environment.py
- tests/_fault_server/fixtures/loopback-test-cert.pem
- tests/_fault_server/fixtures/loopback-test-key.pem
- tests/_fault_server/grpc.py
- tests/_fault_server/http.py
- tests/_fault_server/http_framing.py
- tests/_fault_server/mcp_auth_startup_worker.py
- tests/_fault_server/mcp_startup_cleanup.py
- tests/_fault_server/mcp_startup_worker.py
- tests/_fault_server/mcp_stdio_session.py
- tests/_fault_server/process_death.py
- tests/_fault_server/process_death_worker.py
- tests/_fault_server/web.py
- tests/_fault_server/web_concurrency.py
- tests/_fault_server/web_connections.py
- tests/_fault_server/web_consistency.py
- tests/_fault_server/web_generation_faults.py
- tests/_fault_server/web_persistence.py
- tests/_fault_server/web_protocol.py
- tests/_fault_server/web_resilience_scenarios.py
- tests/_fault_server/web_saturation.py
- tests/_fault_server/web_scenarios.py
- tests/_fault_server/web_slow_responses.py
- tests/_fault_server/web_streaming.py
- tests/_fault_server/web_transfers.py
- tests/_fault_server/web_workflows.py
- tests/_fixtures/__init__.py
- tests/_fixtures/android_artifacts.py
- tests/_fixtures/chain.py
- tests/_fixtures/cli_exit_markers.py
- tests/_fixtures/cli_session.py
- tests/_fixtures/commands.py
- tests/_fixtures/conftest.py
- tests/_fixtures/creation_conformance.py
- tests/_fixtures/fake_core.py
- tests/_fixtures/integration_allow_no_vcr_files.txt
- tests/_fixtures/integration_allow_no_vcr_nodeids.txt
- tests/_fixtures/integration_vcr_allow_no_vcr_nodeids.txt
- tests/_fixtures/kernel_test_helpers.py
- tests/_fixtures/login_io.py
- tests/_fixtures/rpc_error_frames.py
- tests/_fixtures/session_reexport_baseline.txt
- tests/_guardrails/__init__.py
- tests/_guardrails/_adapter_import_boundary.py
- tests/_guardrails/_ast_reach_in.py
- tests/_guardrails/_ast_semantics.py
- tests/_guardrails/_cassette_shape_lint.py
- tests/_guardrails/_public_import_manifest.py
- tests/_guardrails/_v100_breaks.py
- tests/_guardrails/_wire_contract.py
- tests/_guardrails/_wire_schema.py
- tests/_guardrails/test_adapter_import_scanner.py
- tests/_guardrails/test_adapter_support_boundary.py
- tests/_guardrails/test_adr_reference_format.py
- tests/_guardrails/test_android_retry_manifest.py
- tests/_guardrails/test_app_boundary.py
- tests/_guardrails/test_app_host_literals_centralized.py
- tests/_guardrails/test_app_presentation_semantics.py
- tests/_guardrails/test_asyncio_loop_affinity_guard.py
- tests/_guardrails/test_auth_cold_recovery_coordinator_boundary.py
- tests/_guardrails/test_auth_cookie_docs.py
- tests/_guardrails/test_auth_cookie_filter_boundary.py
- tests/_guardrails/test_auth_cookie_merge_boundary.py
- tests/_guardrails/test_auth_credential_io_boundary.py
- tests/_guardrails/test_auth_master_token_bootstrap_boundary.py
- tests/_guardrails/test_auth_master_token_file_boundary.py
- tests/_guardrails/test_auth_master_token_types_boundary.py
- tests/_guardrails/test_auth_mint_service_boundary.py
- tests/_guardrails/test_auth_phase12c_boundaries.py
- tests/_guardrails/test_auth_profile_document_boundary.py
- tests/_guardrails/test_auth_profile_store_boundary.py
- tests/_guardrails/test_auth_refresh_profile_store_boundary.py
- tests/_guardrails/test_auth_source_consolidation.py
- tests/_guardrails/test_auth_storage_compatibility.py
- tests/_guardrails/test_auth_storage_lock_boundary.py
- tests/_guardrails/test_auth_stored_auth_boundary.py
- tests/_guardrails/test_auth_web_bootstrap_compatibility_island.py
- tests/_guardrails/test_authtokens_jar_sync.py
- tests/_guardrails/test_backend_abstract_contracts.py
- tests/_guardrails/test_backend_boundaries.py
- tests/_guardrails/test_backend_coupling_observability.py
- tests/_guardrails/test_browser_boundary.py
- tests/_guardrails/test_builtin_shadowed_annotations.py
- tests/_guardrails/test_cassette_shapes.py
- tests/_guardrails/test_cassettes_clean.py
- tests/_guardrails/test_classify_error_handler_consistency.py
- tests/_guardrails/test_cli_boundary.py
- tests/_guardrails/test_cli_json_output_coverage.py
- tests/_guardrails/test_cli_rpc_envelope.py
- tests/_guardrails/test_cli_vcr_coverage.py
- tests/_guardrails/test_client_composition.py
- tests/_guardrails/test_client_factory_parity.py
- tests/_guardrails/test_cookie_conversion_ratchet.py
- tests/_guardrails/test_cookie_persistence_boundary.py
- tests/_guardrails/test_docs_examples_idioms.py
- tests/_guardrails/test_docs_module_refs.py
- tests/_guardrails/test_download_spec_parity.py
- tests/_guardrails/test_error_contract_catch_ordering.py
- tests/_guardrails/test_error_handler_allowlist.py
- tests/_guardrails/test_generation_kind_exhaustiveness.py
- tests/_guardrails/test_golden_decode_coverage.py
- tests/_guardrails/test_import_footprint.py
- tests/_guardrails/test_install_docs.py
- tests/_guardrails/test_integration_allow_no_vcr_allowlist.py
- tests/_guardrails/test_login_init_is_reexport_only.py
- tests/_guardrails/test_login_package_dag.py
- tests/_guardrails/test_master_token_minting_denylist.py
- tests/_guardrails/test_master_token_path_single_site.py
- tests/_guardrails/test_mcp_boundary.py
- tests/_guardrails/test_mcp_classify_consistency.py
- tests/_guardrails/test_mcp_lazy_client_error_boundary.py
- tests/_guardrails/test_middleware_context_contract.py
- tests/_guardrails/test_module_size_ratchet.py
- tests/_guardrails/test_no_bare_tests_root_imports.py
- tests/_guardrails/test_no_cli_client_patch_surface.py
- tests/_guardrails/test_no_core_imports.py
- tests/_guardrails/test_no_cross_test_imports.py
- tests/_guardrails/test_no_deprecated_public_rpc_call_kwargs.py
- tests/_guardrails/test_no_facade_reach_in.py
- tests/_guardrails/test_no_flat_cookies_on_the_wire.py
- tests/_guardrails/test_no_forbidden_monkeypatches.py
- tests/_guardrails/test_no_inline_deprecation_warnings.py
- tests/_guardrails/test_no_large_inline_snapshots.py
- tests/_guardrails/test_no_legacy_rpc_callable_aliases.py
- tests/_guardrails/test_no_module_shadowing.py
- tests/_guardrails/test_no_pinned_cassette_values.py
- tests/_guardrails/test_no_raw_positional_rpc_indexing.py
- tests/_guardrails/test_no_session.py
- tests/_guardrails/test_no_storage_cookie_saver_patches.py
- tests/_guardrails/test_playwright_gateway.py
- tests/_guardrails/test_public_surface.py
- tests/_guardrails/test_public_surface_manifest.py
- tests/_guardrails/test_pypi_readme_substitutions.py
- tests/_guardrails/test_rotate_wire_contract.py
- tests/_guardrails/test_rpc_method_ids_only_in_types.py
- tests/_guardrails/test_runtime_secret_registry_parity.py
- tests/_guardrails/test_security_md_hosting_threat_model.py
- tests/_guardrails/test_server_boundary.py
- tests/_guardrails/test_server_classify_consistency.py
- tests/_guardrails/test_session_runtime_boundaries.py
- tests/_guardrails/test_source_policy_parity.py
- tests/_guardrails/test_storage_transaction_ratchet.py
- tests/_guardrails/test_storage_writer_boundary.py
- tests/_guardrails/test_string_patch_ratchet.py
- tests/_guardrails/test_studio_enum_manifest.py
- tests/_guardrails/test_test_dir_no_shadow.py
- tests/_guardrails/test_type_boundaries.py
- tests/_guardrails/test_unconfirmed_contract.py
- tests/_guardrails/test_v100_deprecation_coverage.py
- tests/_guardrails/test_v100_release_gate.py
- tests/_guardrails/test_web_android_public_behavior_inventory.py
- tests/_guardrails/test_web_transport_relocation.py
- tests/_guardrails/test_wire_contract.py
- tests/_helpers/__init__.py
- tests/_helpers/_v080_history.py
- tests/_helpers/android_grpc_cassette.py
- tests/_helpers/android_grpc_harness.py
- tests/_helpers/android_grpc_normalizers.py
- tests/_helpers/android_notes.py
- tests/_helpers/android_phenotype_http_cassette.py
- tests/_helpers/android_supervisor.py
- tests/_helpers/client_factory.py
- tests/_helpers/downloads.py
- tests/_helpers/operation.py
- tests/_helpers/play_book_http_cassette.py
- tests/_helpers/source_delete.py
- tests/cassette_patterns.py
- tests/cassettes/README.md
- tests/cassettes/android/act_on_sources_mind_map_recorded.grpc.json
- tests/cassettes/android/artifact_copy_recorded.grpc.json
- tests/cassettes/android/chat_session_control_recorded.grpc.json
- tests/cassettes/android/collection_lifecycle_recorded.grpc.json
- tests/cassettes/android/delete_chat_turns_recorded.grpc.json
- tests/cassettes/android/generate_audio_recorded.grpc.json
- tests/cassettes/android/generate_flashcards_recorded.grpc.json
- tests/cassettes/android/generate_free_form_streamed_recorded.grpc.json
- tests/cassettes/android/generate_notebook_guide_recorded.grpc.json
- tests/cassettes/android/generate_report_recorded.grpc.json
- tests/cassettes/android/generate_report_suggestions_recorded.grpc.json
- tests/cassettes/android/get_labels_recorded.grpc.json
- tests/cassettes/android/get_or_create_account_recorded.grpc.json
- tests/cassettes/android/get_project_details_recorded.grpc.json
- tests/cassettes/android/get_project_rich_recorded.grpc.json
- tests/cassettes/android/label_lifecycle_recorded.grpc.json
- tests/cassettes/android/list_artifacts_get_notes_recorded.grpc.json
- tests/cassettes/android/list_chat_sessions_turns_recorded.grpc.json
- tests/cassettes/android/list_discover_sources_job_recorded.grpc.json
- tests/cassettes/android/load_source_recorded.grpc.json
- tests/cassettes/android/mutate_account_recorded.grpc.json
- tests/cassettes/android/next_step_suggestions_recorded.grpc.json
- tests/cassettes/android/note_lifecycle_recorded.grpc.json
- tests/cassettes/android/notebook_lifecycle_recorded.grpc.json
- tests/cassettes/android/play_books_phenotype.yaml
- tests/cassettes/android/play_books_recorded.grpc.json
- tests/cassettes/android/quiz_lifecycle_recorded.grpc.json
- tests/cassettes/android/research_discover_recorded.grpc.json
- tests/cassettes/android/research_fast_cancel_recorded.grpc.json
- tests/cassettes/android/research_fast_import_recorded.grpc.json
- tests/cassettes/android/retrieve_relevant_chunks_recorded.grpc.json
- tests/cassettes/android/share_project_recorded.grpc.json
- tests/cassettes/android/source_lifecycle_recorded.grpc.json
- tests/cassettes/android/source_transfers_recorded.grpc.json
- tests/cassettes/android/usage_pro_recorded.grpc.json
- tests/cassettes/android/usage_standard_recorded.grpc.json
- tests/cassettes/web/artifacts_customization_choices.yaml
- tests/cassettes/web/artifacts_delete.yaml
- tests/cassettes/web/artifacts_download_data_table.yaml
- tests/cassettes/web/artifacts_download_flashcards.yaml
- tests/cassettes/web/artifacts_download_flashcards_markdown.yaml
- tests/cassettes/web/artifacts_download_mind_map.yaml
- tests/cassettes/web/artifacts_download_quiz.yaml
- tests/cassettes/web/artifacts_download_quiz_markdown.yaml
- tests/cassettes/web/artifacts_download_report.yaml
- tests/cassettes/web/artifacts_export_report.yaml
- tests/cassettes/web/artifacts_generate_flashcards.yaml
- tests/cassettes/web/artifacts_generate_quiz.yaml
- tests/cassettes/web/artifacts_generate_report.yaml
- tests/cassettes/web/artifacts_generate_study_guide.yaml
- tests/cassettes/web/artifacts_list.yaml
- tests/cassettes/web/artifacts_list_audio.yaml
- tests/cassettes/web/artifacts_list_data_tables.yaml
- tests/cassettes/web/artifacts_list_empty.yaml
- tests/cassettes/web/artifacts_list_flashcards.yaml
- tests/cassettes/web/artifacts_list_infographics.yaml
- tests/cassettes/web/artifacts_list_quizzes.yaml
- tests/cassettes/web/artifacts_list_reports.yaml
- tests/cassettes/web/artifacts_list_slide_decks.yaml
- tests/cassettes/web/artifacts_list_video.yaml
- tests/cassettes/web/artifacts_poll_rename_wait.yaml
- tests/cassettes/web/artifacts_rename.yaml
- tests/cassettes/web/artifacts_retry_failed.yaml
- tests/cassettes/web/artifacts_revise_slide.yaml
- tests/cassettes/web/artifacts_suggest_reports.yaml
- tests/cassettes/web/auth_rotate_cookies_refresh.yaml
- tests/cassettes/web/chat_ask.yaml
- tests/cassettes/web/chat_ask_multi_source.yaml
- tests/cassettes/web/chat_ask_oversized_rejection.yaml
- tests/cassettes/web/chat_ask_with_references.yaml
- tests/cassettes/web/chat_delete_conversation.yaml
- tests/cassettes/web/chat_get_conversation_turns.yaml
- tests/cassettes/web/chat_get_history.yaml
- tests/cassettes/web/chat_next_steps.yaml
- tests/cassettes/web/chat_session_control.yaml
- tests/cassettes/web/cli_auth.yaml
- tests/cassettes/web/cli_doctor.yaml
- tests/cassettes/web/cli_login_browser_cookies_check.yaml
- tests/cassettes/web/cli_notebook_create.yaml
- tests/cassettes/web/cli_notebook_delete.yaml
- tests/cassettes/web/cli_notebook_list.yaml
- tests/cassettes/web/cli_notebook_rename.yaml
- tests/cassettes/web/cli_profile.yaml
- tests/cassettes/web/cli_settings_set_language.yaml
- tests/cassettes/web/cli_share_add.yaml
- tests/cassettes/web/cli_share_remove.yaml
- tests/cassettes/web/cli_share_status.yaml
- tests/cassettes/web/collection_add.yaml
- tests/cassettes/web/collection_add_json.yaml
- tests/cassettes/web/collection_create.yaml
- tests/cassettes/web/collection_create_json.yaml
- tests/cassettes/web/collection_delete.yaml
- tests/cassettes/web/collection_delete_json.yaml
- tests/cassettes/web/collection_list.yaml
- tests/cassettes/web/collection_notebooks.yaml
- tests/cassettes/web/collection_remove.yaml
- tests/cassettes/web/collection_remove_json.yaml
- tests/cassettes/web/collection_rename.yaml
- tests/cassettes/web/collection_rename_json.yaml
- tests/cassettes/web/error_synthetic_429_rate_limit.yaml
- tests/cassettes/web/error_synthetic_500_server.yaml
- tests/cassettes/web/error_synthetic_stale_csrf.yaml
- tests/cassettes/web/examples/example_batchexecute_pattern.yaml
- tests/cassettes/web/examples/example_scrubbed_cookies.yaml
- tests/cassettes/web/generate_mind_map_chain.yaml
- tests/cassettes/web/generate_mind_map_interactive.yaml
- tests/cassettes/web/gzip_coverage/artifacts_revise_slide_gzipped.yaml
- tests/cassettes/web/label_add.yaml
- tests/cassettes/web/label_create.yaml
- tests/cassettes/web/label_delete.yaml
- tests/cassettes/web/label_emoji.yaml
- tests/cassettes/web/label_generate.yaml
- tests/cassettes/web/label_list.yaml
- tests/cassettes/web/label_remove.yaml
- tests/cassettes/web/label_rename.yaml
- tests/cassettes/web/label_sources.yaml
- tests/cassettes/web/mcp_chat_configure.yaml
- tests/cassettes/web/mcp_note_update.yaml
- tests/cassettes/web/mcp_studio_delete_artifact.yaml
- tests/cassettes/web/mcp_studio_delete_note.yaml
- tests/cassettes/web/mcp_studio_rename.yaml
- tests/cassettes/web/mind_maps_interactive.yaml
- tests/cassettes/web/notebook_zero_sources.yaml
- tests/cassettes/web/notebooks_copy.yaml
- tests/cassettes/web/notebooks_create.yaml
- tests/cassettes/web/notebooks_delete.yaml
- tests/cassettes/web/notebooks_emoji_update.yaml
- tests/cassettes/web/notebooks_get.yaml
- tests/cassettes/web/notebooks_get_description.yaml
- tests/cassettes/web/notebooks_get_raw.yaml
- tests/cassettes/web/notebooks_get_summary.yaml
- tests/cassettes/web/notebooks_list.yaml
- tests/cassettes/web/notebooks_remove_from_recent.yaml
- tests/cassettes/web/notebooks_rename.yaml
- tests/cassettes/web/notebooks_share.yaml
- tests/cassettes/web/notebooks_suggest_next_steps.yaml
- tests/cassettes/web/notebooks_suggest_prompts.yaml
- tests/cassettes/web/notes_create.yaml
- tests/cassettes/web/notes_create_and_update.yaml
- tests/cassettes/web/notes_delete.yaml
- tests/cassettes/web/notes_list.yaml
- tests/cassettes/web/notes_list_mind_maps.yaml
- tests/cassettes/web/real_api_get_notebook.yaml
- tests/cassettes/web/real_api_list_artifacts.yaml
- tests/cassettes/web/real_api_list_audio.yaml
- tests/cassettes/web/real_api_list_mind_maps.yaml
- tests/cassettes/web/real_api_list_notebooks.yaml
- tests/cassettes/web/real_api_list_quizzes.yaml
- tests/cassettes/web/real_api_list_reports.yaml
- tests/cassettes/web/real_api_list_sources.yaml
- tests/cassettes/web/research_cancel.yaml
- tests/cassettes/web/research_deep_poll_long.yaml
- tests/cassettes/web/research_discover.yaml
- tests/cassettes/web/research_import_sources.yaml
- tests/cassettes/web/research_import_sources_direct.yaml
- tests/cassettes/web/research_import_sources_populated.yaml
- tests/cassettes/web/research_import_verification.yaml
- tests/cassettes/web/research_poll.yaml
- tests/cassettes/web/research_poll_empty.yaml
- tests/cassettes/web/research_start_deep.yaml
- tests/cassettes/web/research_start_fast.yaml
- tests/cassettes/web/server_add_file.yaml
- tests/cassettes/web/server_download_mind_map.yaml
- tests/cassettes/web/server_generate_quiz.yaml
- tests/cassettes/web/settings_get_output_language.yaml
- tests/cassettes/web/settings_set_output_language.yaml
- tests/cassettes/web/sharing_get_status.yaml
- tests/cassettes/web/sharing_set_public.yaml
- tests/cassettes/web/source_list_label.yaml
- tests/cassettes/web/sources_add_drive.yaml
- tests/cassettes/web/sources_add_file.yaml
- tests/cassettes/web/sources_add_text.yaml
- tests/cassettes/web/sources_add_url.yaml
- tests/cassettes/web/sources_check_freshness.yaml
- tests/cassettes/web/sources_check_freshness_drive.yaml
- tests/cassettes/web/sources_delete.yaml
- tests/cassettes/web/sources_get_fulltext.yaml
- tests/cassettes/web/sources_get_guide.yaml
- tests/cassettes/web/sources_list.yaml
- tests/cassettes/web/sources_play_book_add.yaml
- tests/cassettes/web/sources_play_books.yaml
- tests/cassettes/web/sources_refresh.yaml
- tests/cassettes/web/sources_refresh_direct.yaml
- tests/cassettes/web/sources_rename.yaml
- tests/cassettes/web/sources_search.yaml
- tests/cassettes/web/sources_transfer_lifecycle.yaml
- tests/cassettes/web/sources_wait.yaml
- tests/cassettes/web/usage_pro.yaml
- tests/cassettes/web/usage_standard.yaml
- tests/cassettes/web/workflow_tracer_bullet.yaml
- tests/conftest.py
- tests/e2e/__init__.py
- tests/e2e/_android_collections_cleanup.py
- tests/e2e/_artifact_helpers.py
- tests/e2e/_collection_candidate.py
- tests/e2e/_generation_helpers.py
- tests/e2e/_generation_journal.py
- tests/e2e/_mcp_live_helpers.py
- tests/e2e/_progress.py
- tests/e2e/conftest.py
- tests/e2e/test_android_collections_conformance.py
- tests/e2e/test_android_notes_conformance.py
- tests/e2e/test_android_usage_conformance.py
- tests/e2e/test_app_host.py
- tests/e2e/test_artifact_copy.py
- tests/e2e/test_artifacts.py
- tests/e2e/test_chat.py
- tests/e2e/test_cli_live.py
- tests/e2e/test_collections.py
- tests/e2e/test_downloads.py
- tests/e2e/test_file_upload.py
- tests/e2e/test_generation.py
- tests/e2e/test_headless_reauth.py
- tests/e2e/test_interactive_mind_map.py
- tests/e2e/test_labels.py
- tests/e2e/test_mcp.py
- tests/e2e/test_mcp_contracts.py
- tests/e2e/test_mcp_http.py
- tests/e2e/test_notebooks.py
- tests/e2e/test_notes.py
- tests/e2e/test_research.py
- tests/e2e/test_research_import_verification.py
- tests/e2e/test_rpc_additions.py
- tests/e2e/test_server_live.py
- tests/e2e/test_server_process_live.py
- tests/e2e/test_settings.py
- tests/e2e/test_sharing.py
- tests/e2e/test_source_selection.py
- tests/e2e/test_sources.py
- tests/fixtures/android/android_descriptor_set.pb
- tests/fixtures/android/chat_wire.json
- tests/fixtures/android/external_method_manifest.csv
- tests/fixtures/android/get_notes_response.textproto
- tests/fixtures/android/get_project_details_response.textproto
- tests/fixtures/android/get_project_response.textproto
- tests/fixtures/android/latest_apk_grpc_paths.txt
- tests/fixtures/android/latest_apk_grpc_signatures.csv
- tests/fixtures/android/list_artifacts_response.textproto
- tests/fixtures/android/list_recently_viewed_projects_response.textproto
- tests/fixtures/android/notes_sharing_request_wires.json
- tests/fixtures/android/read_descriptor_set.pb
- tests/fixtures/android/usage_wire.json
- tests/fixtures/bad_cassettes/bad_byte_count.yaml
- tests/fixtures/bad_cassettes/bad_chat_ask.yaml
- tests/fixtures/bad_cassettes/bad_revise_slide.yaml
- tests/fixtures/bad_cassettes/bad_sharing.yaml
- tests/fixtures/bad_cassettes/bad_sid_starting_with_s.yaml
- tests/fixtures/baselines/auth_facade_patch_sites.json
- tests/fixtures/baselines/auth_family_patch_scorecard.json
- tests/fixtures/baselines/auth_import_graph.json
- tests/fixtures/baselines/auth_patch_sites.json
- tests/fixtures/baselines/auth_shared_mutations.json
- tests/fixtures/baselines/backend_boundary.json
- tests/fixtures/baselines/backend_runtime_coupling.json
- tests/fixtures/baselines/backend_static_coupling.json
- tests/fixtures/baselines/browser_import_graph.json
- tests/fixtures/baselines/browser_patch_sites.json
- tests/fixtures/baselines/guardrail_inline_literals.json
- tests/fixtures/baselines/module_size.json
- tests/fixtures/baselines/storage_transaction_policy.json
- tests/fixtures/baselines/types_all.json
- tests/fixtures/baselines/ungated_surface.json
- tests/fixtures/ci-platform-selection.json
- tests/fixtures/cli_contract_baseline.json
- tests/fixtures/e2e_prepared_role_contract.json
- tests/fixtures/e2e_template_contract.json
- tests/fixtures/notebooklm_html.html
- tests/fixtures/policies/auth_behavior_scenarios.json
- tests/fixtures/policies/auth_coverage_allowances.json
- tests/fixtures/policies/auth_lifecycle_cleanup.json
- tests/fixtures/policies/auth_patch_survivors.json
- tests/fixtures/rpc_golden/ADD_SOURCE.json
- tests/fixtures/rpc_golden/ADD_SOURCES_ASYNC.json
- tests/fixtures/rpc_golden/ADD_SOURCE_FILE.json
- tests/fixtures/rpc_golden/APPEND_SOURCE.json
- tests/fixtures/rpc_golden/CANCEL_GENERATION.json
- tests/fixtures/rpc_golden/CANCEL_RESEARCH.json
- tests/fixtures/rpc_golden/CHECK_SOURCE_FRESHNESS.json
- tests/fixtures/rpc_golden/COPY_ARTIFACTS.json
- tests/fixtures/rpc_golden/COPY_NOTEBOOK.json
- tests/fixtures/rpc_golden/COPY_SOURCES.json
- tests/fixtures/rpc_golden/CREATE_ARTIFACT.json
- tests/fixtures/rpc_golden/CREATE_LABEL.json
- tests/fixtures/rpc_golden/CREATE_NOTE.json
- tests/fixtures/rpc_golden/CREATE_NOTEBOOK.json
- tests/fixtures/rpc_golden/DELETE_ARTIFACT.json
- tests/fixtures/rpc_golden/DELETE_CONVERSATION.json
- tests/fixtures/rpc_golden/DELETE_LABEL.json
- tests/fixtures/rpc_golden/DELETE_NOTE.json
- tests/fixtures/rpc_golden/DELETE_NOTEBOOK.json
- tests/fixtures/rpc_golden/DELETE_SOURCE.json
- tests/fixtures/rpc_golden/DISCOVER_SOURCES.json
- tests/fixtures/rpc_golden/EXPORT_ARTIFACT.json
- tests/fixtures/rpc_golden/GENERATE_MIND_MAP.json
- tests/fixtures/rpc_golden/GET_ACCOUNT.json
- tests/fixtures/rpc_golden/GET_CHAT_SESSION_STATUS.json
- tests/fixtures/rpc_golden/GET_CONVERSATION_TURNS.json
- tests/fixtures/rpc_golden/GET_CUSTOMIZATION_CHOICES.json
- tests/fixtures/rpc_golden/GET_INTERACTIVE_HTML.json
- tests/fixtures/rpc_golden/GET_LAST_CONVERSATION_ID.json
- tests/fixtures/rpc_golden/GET_NOTEBOOK.json
- tests/fixtures/rpc_golden/GET_NOTES_AND_MIND_MAPS.json
- tests/fixtures/rpc_golden/GET_SHARE_STATUS.json
- tests/fixtures/rpc_golden/GET_SOURCE.json
- tests/fixtures/rpc_golden/GET_SOURCE_GUIDE.json
- tests/fixtures/rpc_golden/GET_SUGGESTED_REPORTS.json
- tests/fixtures/rpc_golden/GET_USER_SETTINGS.json
- tests/fixtures/rpc_golden/IMPORT_RESEARCH.json
- tests/fixtures/rpc_golden/LIST_ARTIFACTS.json
- tests/fixtures/rpc_golden/LIST_EXPERT_INTELLIGENCE_CONTENT.json
- tests/fixtures/rpc_golden/LIST_LABELS.json
- tests/fixtures/rpc_golden/LIST_NOTEBOOKS.json
- tests/fixtures/rpc_golden/LIST_QUOTA_SUMMARY.json
- tests/fixtures/rpc_golden/POLL_RESEARCH.json
- tests/fixtures/rpc_golden/README.md
- tests/fixtures/rpc_golden/REFRESH_SOURCE.json
- tests/fixtures/rpc_golden/REMOVE_RECENTLY_VIEWED.json
- tests/fixtures/rpc_golden/RENAME_ARTIFACT.json
- tests/fixtures/rpc_golden/RENAME_NOTEBOOK.json
- tests/fixtures/rpc_golden/RETRIEVE_RELEVANT_CHUNKS.json
- tests/fixtures/rpc_golden/RETRY_ARTIFACT.json
- tests/fixtures/rpc_golden/REVISE_SLIDE.json
- tests/fixtures/rpc_golden/SET_USER_SETTINGS.json
- tests/fixtures/rpc_golden/SHARE_ARTIFACT.json
- tests/fixtures/rpc_golden/SHARE_NOTEBOOK.json
- tests/fixtures/rpc_golden/START_DEEP_RESEARCH.json
- tests/fixtures/rpc_golden/START_FAST_RESEARCH.json
- tests/fixtures/rpc_golden/SUGGEST_NEXT_STEPS.json
- tests/fixtures/rpc_golden/SUGGEST_PROMPTS.json
- tests/fixtures/rpc_golden/SUMMARIZE.json
- tests/fixtures/rpc_golden/UPDATE_LABEL.json
- tests/fixtures/rpc_golden/UPDATE_NOTE.json
- tests/fixtures/rpc_golden/UPDATE_SOURCE.json
- tests/fixtures/test_relevance_ledger.json
- tests/integration/README.md
- tests/integration/__init__.py
- tests/integration/_golden_assert.py
- tests/integration/_vcr_helpers.py
- tests/integration/cli_vcr/README.md
- tests/integration/cli_vcr/__init__.py
- tests/integration/cli_vcr/_cassette_expectations.py
- tests/integration/cli_vcr/_fixtures.py
- tests/integration/cli_vcr/conftest.py
- tests/integration/cli_vcr/test_artifacts.py
- tests/integration/cli_vcr/test_auth.py
- tests/integration/cli_vcr/test_chat.py
- tests/integration/cli_vcr/test_collection.py
- tests/integration/cli_vcr/test_doctor.py
- tests/integration/cli_vcr/test_downloads.py
- tests/integration/cli_vcr/test_error_contract.py
- tests/integration/cli_vcr/test_generate.py
- tests/integration/cli_vcr/test_label.py
- tests/integration/cli_vcr/test_login_browser_cookies.py
- tests/integration/cli_vcr/test_notebook.py
- tests/integration/cli_vcr/test_notebooks.py
- tests/integration/cli_vcr/test_notes.py
- tests/integration/cli_vcr/test_profile.py
- tests/integration/cli_vcr/test_research.py
- tests/integration/cli_vcr/test_settings.py
- tests/integration/cli_vcr/test_share.py
- tests/integration/cli_vcr/test_sources.py
- tests/integration/cli_vcr/test_usage.py
- tests/integration/concurrency/README.md
- tests/integration/concurrency/__init__.py
- tests/integration/concurrency/conftest.py
- tests/integration/concurrency/helpers.py
- tests/integration/concurrency/test_add_file_toctou.py
- tests/integration/concurrency/test_aexit_exception_masking.py
- tests/integration/concurrency/test_artifact_poll_dedupe.py
- tests/integration/concurrency/test_auth_snapshot_torn_read.py
- tests/integration/concurrency/test_chat_history_race.py
- tests/integration/concurrency/test_cross_loop_affinity.py
- tests/integration/concurrency/test_download_blocks_loop.py
- tests/integration/concurrency/test_harness_smoke.py
- tests/integration/concurrency/test_helpers.py
- tests/integration/concurrency/test_keepalive_path_canonicalize.py
- tests/integration/concurrency/test_max_concurrent_rpcs.py
- tests/integration/concurrency/test_note_create_cancel.py
- tests/integration/concurrency/test_pool_tuning.py
- tests/integration/concurrency/test_rate_limit_default.py
- tests/integration/concurrency/test_refresh_cancellation_propagation.py
- tests/integration/concurrency/test_refresh_cmd_race.py
- tests/integration/concurrency/test_research_task_crosswire.py
- tests/integration/concurrency/test_upload_blocks_loop.py
- tests/integration/concurrency/test_upload_cancel_dangling_session.py
- tests/integration/concurrency/test_upload_timeout_config.py
- tests/integration/concurrency/test_wait_for_sources_leak.py
- tests/integration/conftest.py
- tests/integration/faults/__init__.py
- tests/integration/faults/conftest.py
- tests/integration/faults/test_adapter_faults.py
- tests/integration/faults/test_android_faults.py
- tests/integration/faults/test_auth_persistence.py
- tests/integration/faults/test_consistency_faults.py
- tests/integration/faults/test_curl_faults.py
- tests/integration/faults/test_local_persistence.py
- tests/integration/faults/test_mcp_auth_startup.py
- tests/integration/faults/test_mcp_startup.py
- tests/integration/faults/test_mcp_stdio_shutdown.py
- tests/integration/faults/test_process_death.py
- tests/integration/faults/test_protocol_limits.py
- tests/integration/faults/test_saturation.py
- tests/integration/faults/test_web_faults.py
- tests/integration/faults/test_web_workflows.py
- tests/integration/mcp_vcr/__init__.py
- tests/integration/mcp_vcr/conftest.py
- tests/integration/mcp_vcr/test_artifacts.py
- tests/integration/mcp_vcr/test_chat.py
- tests/integration/mcp_vcr/test_error_contract.py
- tests/integration/mcp_vcr/test_notebooks.py
- tests/integration/mcp_vcr/test_notes.py
- tests/integration/mcp_vcr/test_research.py
- tests/integration/mcp_vcr/test_sharing.py
- tests/integration/mcp_vcr/test_sources.py
- tests/integration/mcp_vcr/test_studio_mutations.py
- tests/integration/test_android_grpc_cassette.py
- tests/integration/test_artifact_generation_idempotency.py
- tests/integration/test_artifacts_integration.py
- tests/integration/test_auth_refresh_vcr.py
- tests/integration/test_auto_refresh.py
- tests/integration/test_chat_delete_conversation_vcr.py
- tests/integration/test_chat_multi_source_vcr.py
- tests/integration/test_chat_next_steps_vcr.py
- tests/integration/test_chat_oversized_rejection_vcr.py
- tests/integration/test_chat_session_control_vcr.py
- tests/integration/test_curl_cffi_cassette_conformance.py
- tests/integration/test_curl_cffi_transport_integration.py
- tests/integration/test_empty_results_vcr.py
- tests/integration/test_error_paths_vcr.py
- tests/integration/test_golden_decoded_vcr.py
- tests/integration/test_golden_decoded_vcr_expansion.py
- tests/integration/test_gzip_cassette_replay.py
- tests/integration/test_mind_map_chain_vcr.py
- tests/integration/test_mind_maps_vcr.py
- tests/integration/test_notebook_copy_vcr.py
- tests/integration/test_notebook_emoji_vcr.py
- tests/integration/test_notebooks_integration.py
- tests/integration/test_notebooks_suggest_prompts_vcr.py
- tests/integration/test_notes_idempotency.py
- tests/integration/test_notes_integration.py
- tests/integration/test_play_books_integration.py
- tests/integration/test_play_books_vcr.py
- tests/integration/test_polling_vcr.py
- tests/integration/test_research_cancel_vcr.py
- tests/integration/test_research_deep_poll_vcr.py
- tests/integration/test_research_discover_vcr.py
- tests/integration/test_research_idempotency.py
- tests/integration/test_research_import_verification_vcr.py
- tests/integration/test_rpc_gap_backfill_vcr.py
- tests/integration/test_rpc_seam_matrix.py
- tests/integration/test_save_chat_as_note_integration.py
- tests/integration/test_session_integration.py
- tests/integration/test_settings_integration.py
- tests/integration/test_sharing_integration.py
- tests/integration/test_side_effects_idempotency.py
- tests/integration/test_source_search_vcr.py
- tests/integration/test_sources_integration.py
- tests/integration/test_transfer_rpcs_vcr.py
- tests/integration/test_usage_vcr.py
- tests/integration/test_vcr_comprehensive.py
- tests/integration/test_vcr_example.py
- tests/integration/test_vcr_real_api.py
- tests/integration/test_workflow_tracer_vcr.py
- tests/qualification/__init__.py
- tests/qualification/historical/__init__.py
- tests/qualification/historical/test_client_operation_contract_inventory.py
- tests/qualification/historical/test_no_session_cmd_patch_surface.py
- tests/qualification/historical/test_no_session_compat_bridges.py
- tests/qualification/historical/test_v080_deprecation_coverage.py
- tests/qualification/historical/test_v080_release_gate.py
- tests/scripts/cassette_repair_allowlist.txt
- tests/scripts/check_cassettes_clean.py
- tests/scripts/check_method_coverage.py
- tests/scripts/compress_polling_cassette.py
- tests/scripts/generate_relevance_ledger.py
- tests/scripts/inject_gzip_into_cassette.py
- tests/scripts/record_mcp_studio_cassettes.py
- tests/scripts/record_server_cassettes.py
- tests/scripts/setup-generation-notebook.py
- tests/server/__init__.py
- tests/server/conftest.py
- tests/server/fakes.py
- tests/server/test_android_notes.py
- tests/server/test_app_lifecycle.py
- tests/server/test_app_request_policy.py
- tests/server/test_artifacts.py
- tests/server/test_auth.py
- tests/server/test_backpressure.py
- tests/server/test_chat.py
- tests/server/test_e2e_loop.py
- tests/server/test_errors.py
- tests/server/test_hardening.py
- tests/server/test_integration_real_client.py
- tests/server/test_main.py
- tests/server/test_meta.py
- tests/server/test_notebooks.py
- tests/server/test_notes.py
- tests/server/test_research.py
- tests/server/test_route_manifest.py
- tests/server/test_share.py
- tests/server/test_source_batch_parity.py
- tests/server/test_sources.py
- tests/unit/__init__.py
- tests/unit/_golden_mappers.py
- tests/unit/android/test_account.py
- tests/unit/android/test_artifact_outputs.py
- tests/unit/android/test_artifact_proto_contract.py
- tests/unit/android/test_artifacts.py
- tests/unit/android/test_asset_downloads.py
- tests/unit/android/test_asset_transport_adapters.py
- tests/unit/android/test_asset_url_policy.py
- tests/unit/android/test_auth.py
- tests/unit/android/test_auth_lifecycle.py
- tests/unit/android/test_chat.py
- tests/unit/android/test_chat_codec.py
- tests/unit/android/test_chat_fake_server.py
- tests/unit/android/test_chat_proto_contract.py
- tests/unit/android/test_codec_lazy_exports.py
- tests/unit/android/test_collections_conformance_cleanup.py
- tests/unit/android/test_document_codec.py
- tests/unit/android/test_drive_download.py
- tests/unit/android/test_drive_staging.py
- tests/unit/android/test_errors.py
- tests/unit/android/test_evidence_hashes.py
- tests/unit/android/test_grpc_cassette.py
- tests/unit/android/test_grpc_cassette_harness.py
- tests/unit/android/test_grpc_service_manifest.py
- tests/unit/android/test_grpc_status_projection.py
- tests/unit/android/test_mind_maps.py
- tests/unit/android/test_note_codec.py
- tests/unit/android/test_notebook_codec.py
- tests/unit/android/test_notebook_mutations.py
- tests/unit/android/test_notebook_source_reads.py
- tests/unit/android/test_notes_frontend_parity.py
- tests/unit/android/test_notes_sharing.py
- tests/unit/android/test_notes_sharing_proto_contract.py
- tests/unit/android/test_organization_adapters.py
- tests/unit/android/test_organization_proto_contract.py
- tests/unit/android/test_phenotype.py
- tests/unit/android/test_proto_contract.py
- tests/unit/android/test_research.py
- tests/unit/android/test_research_guards.py
- tests/unit/android/test_session.py
- tests/unit/android/test_session_fake_server.py
- tests/unit/android/test_session_policy.py
- tests/unit/android/test_settings.py
- tests/unit/android/test_source_codec.py
- tests/unit/android/test_source_commit_paths.py
- tests/unit/android/test_source_proto_contract.py
- tests/unit/android/test_source_public_parity.py
- tests/unit/android/test_source_search.py
- tests/unit/android/test_source_upload.py
- tests/unit/android/test_source_writes.py
- tests/unit/android/test_transfers.py
- tests/unit/android/test_upload_helpers.py
- tests/unit/android/test_upload_pipeline.py
- tests/unit/android/test_usage.py
- tests/unit/app/__init__.py
- tests/unit/app/test_app_artifacts.py
- tests/unit/app/test_app_auth_check.py
- tests/unit/app/test_app_chat.py
- tests/unit/app/test_app_collections.py
- tests/unit/app/test_app_doctor.py
- tests/unit/app/test_app_download.py
- tests/unit/app/test_app_errors.py
- tests/unit/app/test_app_events.py
- tests/unit/app/test_app_generate.py
- tests/unit/app/test_app_generate_retry.py
- tests/unit/app/test_app_generation_requests.py
- tests/unit/app/test_app_labels.py
- tests/unit/app/test_app_language.py
- tests/unit/app/test_app_login_browser.py
- tests/unit/app/test_app_login_cookie.py
- tests/unit/app/test_app_mcp_install.py
- tests/unit/app/test_app_notebooks.py
- tests/unit/app/test_app_notes.py
- tests/unit/app/test_app_profile.py
- tests/unit/app/test_app_research.py
- tests/unit/app/test_app_resolve.py
- tests/unit/app/test_app_serialize.py
- tests/unit/app/test_app_serialize_mcp_equiv.py
- tests/unit/app/test_app_session.py
- tests/unit/app/test_app_sharing.py
- tests/unit/app/test_app_skill.py
- tests/unit/app/test_app_source_add.py
- tests/unit/app/test_app_source_batch.py
- tests/unit/app/test_app_source_clean.py
- tests/unit/app/test_app_source_content.py
- tests/unit/app/test_app_source_listing.py
- tests/unit/app/test_app_source_mutations.py
- tests/unit/app/test_app_source_play_books.py
- tests/unit/app/test_app_source_research.py
- tests/unit/app/test_app_source_wait.py
- tests/unit/app/test_download_registry_invariants.py
- tests/unit/cli/__init__.py
- tests/unit/cli/_session_helpers.py
- tests/unit/cli/conftest.py
- tests/unit/cli/test_agent.py
- tests/unit/cli/test_android_note.py
- tests/unit/cli/test_artifact.py
- tests/unit/cli/test_auth_refresh_cold_start.py
- tests/unit/cli/test_auth_subcommands.py
- tests/unit/cli/test_backend_selection.py
- tests/unit/cli/test_chat.py
- tests/unit/cli/test_chromium_account_enumeration.py
- tests/unit/cli/test_cli_contract.py
- tests/unit/cli/test_cli_mcp_parity.py
- tests/unit/cli/test_cli_rendering_permissions.py
- tests/unit/cli/test_cli_session_local.py
- tests/unit/cli/test_client_factory_seam.py
- tests/unit/cli/test_collection_cmd.py
- tests/unit/cli/test_completion.py
- tests/unit/cli/test_context_coverage.py
- tests/unit/cli/test_cookie_jar_enumerate.py
- tests/unit/cli/test_cookie_writes.py
- tests/unit/cli/test_doctor.py
- tests/unit/cli/test_download.py
- tests/unit/cli/test_download_characterization.py
- tests/unit/cli/test_encoding.py
- tests/unit/cli/test_error_handler.py
- tests/unit/cli/test_firefox_accounts.py
- tests/unit/cli/test_generate.py
- tests/unit/cli/test_generate_characterization.py
- tests/unit/cli/test_generate_render.py
- tests/unit/cli/test_grouped.py
- tests/unit/cli/test_help_text.py
- tests/unit/cli/test_helpers.py
- tests/unit/cli/test_helpers_compat.py
- tests/unit/cli/test_json_validation_contract.py
- tests/unit/cli/test_label_cmd.py
- tests/unit/cli/test_label_listing.py
- tests/unit/cli/test_language.py
- tests/unit/cli/test_login.py
- tests/unit/cli/test_login_chromium_fanout.py
- tests/unit/cli/test_login_cookie_app_adapters.py
- tests/unit/cli/test_login_cookie_recovery.py
- tests/unit/cli/test_login_io_seam.py
- tests/unit/cli/test_login_master_token.py
- tests/unit/cli/test_login_multi_account.py
- tests/unit/cli/test_login_refresh_coverage.py
- tests/unit/cli/test_mcp_install_cmd.py
- tests/unit/cli/test_note.py
- tests/unit/cli/test_notebook.py
- tests/unit/cli/test_options_validation.py
- tests/unit/cli/test_playwright_login_coverage.py
- tests/unit/cli/test_playwright_login_render_contract.py
- tests/unit/cli/test_playwright_login_stderr.py
- tests/unit/cli/test_profile.py
- tests/unit/cli/test_profile_account_app_adapters.py
- tests/unit/cli/test_prompt_file.py
- tests/unit/cli/test_quiet_enforcement.py
- tests/unit/cli/test_quiet_flag.py
- tests/unit/cli/test_research.py
- tests/unit/cli/test_research_characterization.py
- tests/unit/cli/test_resolve.py
- tests/unit/cli/test_resolver_characterization.py
- tests/unit/cli/test_rookie_cookies_errors.py
- tests/unit/cli/test_root_group.py
- tests/unit/cli/test_services_boundary.py
- tests/unit/cli/test_session_characterization.py
- tests/unit/cli/test_session_edge_cases.py
- tests/unit/cli/test_session_patch_surface.py
- tests/unit/cli/test_share.py
- tests/unit/cli/test_skill.py
- tests/unit/cli/test_source.py
- tests/unit/cli/test_source_characterization.py
- tests/unit/cli/test_source_cmd_coverage.py
- tests/unit/cli/test_source_content_rendering.py
- tests/unit/cli/test_source_play_books.py
- tests/unit/cli/test_source_refresh.py
- tests/unit/cli/test_source_search.py
- tests/unit/cli/test_status_clear.py
- tests/unit/cli/test_storage_context_isolation.py
- tests/unit/cli/test_suggest_prompts.py
- tests/unit/cli/test_transfer_commands.py
- tests/unit/cli/test_usage.py
- tests/unit/cli/test_use.py
- tests/unit/cli/test_use_fails_closed.py
- tests/unit/concurrency/__init__.py
- tests/unit/concurrency/test_auth_load_blocks_loop.py
- tests/unit/concurrency/test_close_cancellation_leak.py
- tests/unit/concurrency/test_download_collision.py
- tests/unit/concurrency/test_loop_affinity_guard.py
- tests/unit/concurrency/test_reqid_callback_outside_lock.py
- tests/unit/concurrency/test_session_close_refresh_race.py
- tests/unit/concurrency/test_source_url_workflow_supervision.py
- tests/unit/concurrency/test_synthetic_error_transport_guard.py
- tests/unit/conftest.py
- tests/unit/fixtures/chat_answer_row_with_citations.json
- tests/unit/fixtures/chat_stream_final_response.json
- tests/unit/fixtures/citation_fragment_with_tables.json
- tests/unit/fixtures/research_poll_deep_task.json
- tests/unit/fixtures/research_poll_task_metadata.json
- tests/unit/fixtures/save_chat_as_note_create_note_request.json
- tests/unit/fixtures/save_chat_as_note_create_note_response.json
- tests/unit/fixtures/source_fulltext_tailwind_doc.json
- tests/unit/mcp/__init__.py
- tests/unit/mcp/conftest.py
- tests/unit/mcp/test_android_notes.py
- tests/unit/mcp/test_await_upload.py
- tests/unit/mcp/test_chat.py
- tests/unit/mcp/test_chat_start.py
- tests/unit/mcp/test_clientprovider.py
- tests/unit/mcp/test_coerce.py
- tests/unit/mcp/test_confirm.py
- tests/unit/mcp/test_content_sanity_orchestration.py
- tests/unit/mcp/test_entrypoint.py
- tests/unit/mcp/test_errors.py
- tests/unit/mcp/test_file_tools.py
- tests/unit/mcp/test_file_transfer_config.py
- tests/unit/mcp/test_filelink.py
- tests/unit/mcp/test_fileroutes.py
- tests/unit/mcp/test_host_guard.py
- tests/unit/mcp/test_host_upload.py
- tests/unit/mcp/test_manifest.py
- tests/unit/mcp/test_meta.py
- tests/unit/mcp/test_notebooks.py
- tests/unit/mcp/test_notes.py
- tests/unit/mcp/test_remote_auth.py
- tests/unit/mcp/test_research.py
- tests/unit/mcp/test_resolve.py
- tests/unit/mcp/test_selfhosted_oauth.py
- tests/unit/mcp/test_server.py
- tests/unit/mcp/test_sharing.py
- tests/unit/mcp/test_source_json_contract.py
- tests/unit/mcp/test_sources.py
- tests/unit/mcp/test_sources_drive.py
- tests/unit/mcp/test_sources_playbooks.py
- tests/unit/mcp/test_stateless_env_guard.py
- tests/unit/mcp/test_stdio_source_add_roots.py
- tests/unit/mcp/test_studio.py
- tests/unit/mcp/test_studio_ref_matching.py
- tests/unit/mcp/test_tool_eval.py
- tests/unit/mcp/test_uploadwidget.py
- tests/unit/mcp/test_urlcheck.py
- tests/unit/mcp/test_widget_stateless_warn.py
- tests/unit/test_aggregate_ci_e2e_outcomes.py
- tests/unit/test_android_fault_cleanup.py
- tests/unit/test_android_fault_scenarios.py
- tests/unit/test_android_grpc_canary.py
- tests/unit/test_api_coverage.py
- tests/unit/test_app_master_token.py
- tests/unit/test_app_operation_scopes.py
- tests/unit/test_artifact_completeness.py
- tests/unit/test_artifact_content_metadata.py
- tests/unit/test_artifact_download_selection.py
- tests/unit/test_artifact_downloads.py
- tests/unit/test_artifact_downloads_coverage.py
- tests/unit/test_artifact_generation_prompt.py
- tests/unit/test_artifact_generation_service.py
- tests/unit/test_artifact_listing.py
- tests/unit/test_artifact_polling_paths.py
- tests/unit/test_artifact_rate_limit_retry.py
- tests/unit/test_artifact_row_shape_guards.py
- tests/unit/test_artifact_type_code_consistency.py
- tests/unit/test_artifacts_base.py
- tests/unit/test_artifacts_coverage.py
- tests/unit/test_artifacts_drift.py
- tests/unit/test_artifacts_helpers.py
- tests/unit/test_artifacts_mind_map_injection.py
- tests/unit/test_artifacts_polling_retries.py
- tests/unit/test_artifacts_row_adapter.py
- tests/unit/test_atomic_io.py
- tests/unit/test_atomic_update_json.py
- tests/unit/test_audit_auth_import_graph.py
- tests/unit/test_audit_auth_patch_sites.py
- tests/unit/test_audit_auth_shared_mutations.py
- tests/unit/test_auth_account.py
- tests/unit/test_auth_account_coverage.py
- tests/unit/test_auth_account_promotion.py
- tests/unit/test_auth_account_repair_service.py
- tests/unit/test_auth_behavior_scenario_policy.py
- tests/unit/test_auth_browser_facade.py
- tests/unit/test_auth_cold_recovery_coordinator.py
- tests/unit/test_auth_cold_start_recovery.py
- tests/unit/test_auth_cookie_header_routing.py
- tests/unit/test_auth_cookie_merge.py
- tests/unit/test_auth_cookie_policy.py
- tests/unit/test_auth_cookie_save_race.py
- tests/unit/test_auth_cookie_types.py
- tests/unit/test_auth_coverage_allowance_policy.py
- tests/unit/test_auth_credential_io.py
- tests/unit/test_auth_env_precedence_2083.py
- tests/unit/test_auth_extraction.py
- tests/unit/test_auth_fault_cleanup.py
- tests/unit/test_auth_headless_reauth.py
- tests/unit/test_auth_host_guidance.py
- tests/unit/test_auth_instance_invariant.py
- tests/unit/test_auth_issue_2061.py
- tests/unit/test_auth_keepalive.py
- tests/unit/test_auth_lifecycle_cleanup_policy.py
- tests/unit/test_auth_load_composition.py
- tests/unit/test_auth_lock_path_derivation.py
- tests/unit/test_auth_master_token.py
- tests/unit/test_auth_master_token_bootstrap.py
- tests/unit/test_auth_master_token_file.py
- tests/unit/test_auth_master_token_types.py
- tests/unit/test_auth_mint_service.py
- tests/unit/test_auth_patch_survivor_policy.py
- tests/unit/test_auth_profile_account.py
- tests/unit/test_auth_profile_document.py
- tests/unit/test_auth_profile_migration.py
- tests/unit/test_auth_profile_store.py
- tests/unit/test_auth_profile_store_account.py
- tests/unit/test_auth_profile_store_login.py
- tests/unit/test_auth_profile_store_minted.py
- tests/unit/test_auth_profile_store_remint.py
- tests/unit/test_auth_psidts_recovery.py
- tests/unit/test_auth_recovery_rungs.py
- tests/unit/test_auth_refresh.py
- tests/unit/test_auth_refresh_coverage.py
- tests/unit/test_auth_refresh_middleware.py
- tests/unit/test_auth_refresh_profile_store.py
- tests/unit/test_auth_refresh_retry.py
- tests/unit/test_auth_refresh_seam.py
- tests/unit/test_auth_remaining_branches.py
- tests/unit/test_auth_repr_redaction.py
- tests/unit/test_auth_session.py
- tests/unit/test_auth_session_headless_reauth.py
- tests/unit/test_auth_session_master_token.py
- tests/unit/test_auth_session_refresh_cmd.py
- tests/unit/test_auth_state_owners.py
- tests/unit/test_auth_storage.py
- tests/unit/test_auth_storage_lock.py
- tests/unit/test_auth_storage_read_policy_matrix.py
- tests/unit/test_auth_stored_auth.py
- tests/unit/test_auth_validate_heal_split.py
- tests/unit/test_authed_post_pipeline.py
- tests/unit/test_authtokens_jar_sync.py
- tests/unit/test_backend_selection.py
- tests/unit/test_backoff.py
- tests/unit/test_baseline_registry.py
- tests/unit/test_bound_bootstrap_policy.py
- tests/unit/test_bound_recovery_policy.py
- tests/unit/test_browser_capture_cdp_arm.py
- tests/unit/test_browser_capture_headless_arm.py
- tests/unit/test_browser_capture_launch_errors.py
- tests/unit/test_browser_oauth_token.py
- tests/unit/test_call_supervisor.py
- tests/unit/test_capture_rpc_registry.py
- tests/unit/test_cassette_patterns.py
- tests/unit/test_cassette_sanitizer.py
- tests/unit/test_chain_fixtures.py
- tests/unit/test_chain_wiring.py
- tests/unit/test_chat.py
- tests/unit/test_chat_ask_invariants.py
- tests/unit/test_chat_base.py
- tests/unit/test_chat_characterization.py
- tests/unit/test_chat_delete_conversation.py
- tests/unit/test_chat_error_payload.py
- tests/unit/test_chat_helpers.py
- tests/unit/test_chat_history.py
- tests/unit/test_chat_notes.py
- tests/unit/test_chat_passage_resolver.py
- tests/unit/test_chat_references.py
- tests/unit/test_chat_row_adapter.py
- tests/unit/test_chat_save_answer_as_note.py
- tests/unit/test_chat_session_control.py
- tests/unit/test_chat_transport.py
- tests/unit/test_check_action_pinning.py
- tests/unit/test_check_auth_coverage_delta.py
- tests/unit/test_check_coverage_thresholds.py
- tests/unit/test_check_deprecation_targets.py
- tests/unit/test_check_rpc_health.py
- tests/unit/test_check_workflow_secret_gates.py
- tests/unit/test_chromium_profiles.py
- tests/unit/test_chromium_profiles_coverage.py
- tests/unit/test_ci_account_pool_workflows.py
- tests/unit/test_ci_audit_scripts.py
- tests/unit/test_ci_install_parity.py
- tests/unit/test_ci_pool_static_contracts.py
- tests/unit/test_ci_progress.py
- tests/unit/test_ci_rpc_progress.py
- tests/unit/test_ci_selection_contracts.py
- tests/unit/test_ci_test_matrix.py
- tests/unit/test_citation_alignment.py
- tests/unit/test_claude_md_freshness.py
- tests/unit/test_claude_workflow_policy.py
- tests/unit/test_cli_source_delete.py
- tests/unit/test_cli_source_services.py
- tests/unit/test_client.py
- tests/unit/test_client_account_email.py
- tests/unit/test_client_keepalive.py
- tests/unit/test_client_lifecycle_waves.py
- tests/unit/test_client_metrics.py
- tests/unit/test_client_options.py
- tests/unit/test_collection_exceptions.py
- tests/unit/test_collection_model.py
- tests/unit/test_collection_params.py
- tests/unit/test_collections_api.py
- tests/unit/test_commit_evidence_matrix.py
- tests/unit/test_composition_primitives.py
- tests/unit/test_concurrency_cache_race.py
- tests/unit/test_concurrency_refresh_race.py
- tests/unit/test_confirming_mutation_service.py
- tests/unit/test_conversation.py
- tests/unit/test_conversation_cache.py
- tests/unit/test_cookie_domain_split.py
- tests/unit/test_cookie_persistence.py
- tests/unit/test_cookie_persistence_contract_guards.py
- tests/unit/test_cookie_persistence_profile_store.py
- tests/unit/test_cookie_redaction.py
- tests/unit/test_cookie_save_ordering.py
- tests/unit/test_copied_reference_artifacts.py
- tests/unit/test_creation_conformance.py
- tests/unit/test_curl_cffi_redirect_guard.py
- tests/unit/test_curl_cffi_transport_poc.py
- tests/unit/test_curl_fault_cleanup.py
- tests/unit/test_curl_fault_routing.py
- tests/unit/test_deadline.py
- tests/unit/test_decoder.py
- tests/unit/test_deploy_compose_default.py
- tests/unit/test_deprecation_helper.py
- tests/unit/test_docstrings.py
- tests/unit/test_download_helpers.py
- tests/unit/test_download_redirect_revalidation.py
- tests/unit/test_download_result.py
- tests/unit/test_download_service.py
- tests/unit/test_download_url.py
- tests/unit/test_drive_import.py
- tests/unit/test_e2e_collection_candidate.py
- tests/unit/test_e2e_conftest_options.py
- tests/unit/test_e2e_generation_journal.py
- tests/unit/test_e2e_managed_fixtures.py
- tests/unit/test_e2e_marker_hook.py
- tests/unit/test_e2e_quota_efficiency.py
- tests/unit/test_e2e_run_cli_encoding.py
- tests/unit/test_encoder.py
- tests/unit/test_env.py
- tests/unit/test_env_base_url.py
- tests/unit/test_error_injection_middleware.py
- tests/unit/test_exceptions.py
- tests/unit/test_extract_blutter_grpc_signatures.py
- tests/unit/test_fault_cohort_cleanup.py
- tests/unit/test_fault_mcp_startup_cleanup.py
- tests/unit/test_firefox_containers.py
- tests/unit/test_from_storage_dual_protocol.py
- tests/unit/test_generate_service.py
- tests/unit/test_generation_state.py
- tests/unit/test_get_or_none.py
- tests/unit/test_get_summary_drift.py
- tests/unit/test_historical_split.py
- tests/unit/test_home_isolation.py
- tests/unit/test_http_construction_seams.py
- tests/unit/test_http_fault_server.py
- tests/unit/test_idempotency_registry.py
- tests/unit/test_init_order.py
- tests/unit/test_inline_deprecations_gated.py
- tests/unit/test_interactive_mind_map.py
- tests/unit/test_interactive_mind_map_payload.py
- tests/unit/test_json_error_exit.py
- tests/unit/test_json_stdout_purity.py
- tests/unit/test_kernel.py
- tests/unit/test_label_exceptions.py
- tests/unit/test_label_model.py
- tests/unit/test_label_params.py
- tests/unit/test_label_row.py
- tests/unit/test_labels_api.py
- tests/unit/test_lazy_package_exports.py
- tests/unit/test_lazy_web_sidecar.py
- tests/unit/test_lifecycle_executor_reuse.py
- tests/unit/test_listing_service.py
- tests/unit/test_live_auth_matrix.py
- tests/unit/test_logging.py
- tests/unit/test_logging_correlation.py
- tests/unit/test_login_wait_navigation_failure.py
- tests/unit/test_login_wait_trace.py
- tests/unit/test_loop_bound.py
- tests/unit/test_manage_ci_e2e_notebooks.py
- tests/unit/test_materialize_ci_auth.py
- tests/unit/test_mcp_desktop_extension.py
- tests/unit/test_middleware_chain_builder.py
- tests/unit/test_middleware_chain_host.py
- tests/unit/test_middleware_types.py
- tests/unit/test_migration.py
- tests/unit/test_migration_lock.py
- tests/unit/test_mind_maps_api.py
- tests/unit/test_mind_maps_base.py
- tests/unit/test_module_entry_point.py
- tests/unit/test_mutation_null_status.py
- tests/unit/test_note_backed_mind_map_service.py
- tests/unit/test_note_service.py
- tests/unit/test_note_task_lifecycle.py
- tests/unit/test_notebook_api.py
- tests/unit/test_notebook_metadata.py
- tests/unit/test_notebooks_base.py
- tests/unit/test_notebooks_extractors.py
- tests/unit/test_notebooks_row_adapter.py
- tests/unit/test_notebooks_suggest_prompts.py
- tests/unit/test_notes_unit.py
- tests/unit/test_observability.py
- tests/unit/test_operation_context.py
- tests/unit/test_operation_journal.py
- tests/unit/test_operation_projection.py
- tests/unit/test_parse_pbenums.py
- tests/unit/test_parse_pbschema.py
- tests/unit/test_paths.py
- tests/unit/test_play_book_http_cassette.py
- tests/unit/test_play_books.py
- tests/unit/test_playwright_domain_filter.py
- tests/unit/test_playwright_marker_hook.py
- tests/unit/test_polling_registry.py
- tests/unit/test_polling_service.py
- tests/unit/test_prepared_artifact_downloads.py
- tests/unit/test_process_fault_cleanup.py
- tests/unit/test_profile_atomic_write.py
- tests/unit/test_public_api_behavior.py
- tests/unit/test_public_api_compat_audit.py
- tests/unit/test_public_api_contract.py
- tests/unit/test_public_decoder_deprecations.py
- tests/unit/test_public_shims.py
- tests/unit/test_public_typing_readiness.py
- tests/unit/test_quota_failure_detection.py
- tests/unit/test_rate_limit_retry.py
- tests/unit/test_raw_api.py
- tests/unit/test_reality_marker_hook.py
- tests/unit/test_refresh_cmd_redaction.py
- tests/unit/test_refresh_cmd_shlex.py
- tests/unit/test_refresh_lock_lazy_init.py
- tests/unit/test_refresh_lock_registry.py
- tests/unit/test_refresh_state_machine.py
- tests/unit/test_relevance_ledger.py
- tests/unit/test_replay_decision.py
- tests/unit/test_reqid_counter.py
- tests/unit/test_rescrub_cassettes_script.py
- tests/unit/test_research.py
- tests/unit/test_research_api.py
- tests/unit/test_research_import_helpers.py
- tests/unit/test_research_import_with_verification.py
- tests/unit/test_research_reconciliation.py
- tests/unit/test_research_row_adapter.py
- tests/unit/test_research_service.py
- tests/unit/test_research_task_parser.py
- tests/unit/test_response_preview.py
- tests/unit/test_retry_after.py
- tests/unit/test_retry_middleware.py
- tests/unit/test_row_adapters.py
- tests/unit/test_rpc_executor.py
- tests/unit/test_rpc_golden_payloads.py
- tests/unit/test_rpc_health_bundle_lane.py
- tests/unit/test_rpc_health_coverage.py
- tests/unit/test_rpc_health_rebrand_lane.py
- tests/unit/test_rpc_host_contract.py
- tests/unit/test_rpc_overrides.py
- tests/unit/test_rpc_types.py
- tests/unit/test_runtime_auth.py
- tests/unit/test_runtime_contracts.py
- tests/unit/test_runtime_helpers.py
- tests/unit/test_runtime_lifecycle.py
- tests/unit/test_safe_index.py
- tests/unit/test_saturation_fault_cleanup.py
- tests/unit/test_save_chat_as_note_encoder.py
- tests/unit/test_save_lock_contract.py
- tests/unit/test_scripts_auth_cookie_domains.py
- tests/unit/test_scrub_rpc_har.py
- tests/unit/test_select_artifact.py
- tests/unit/test_select_ci_account.py
- tests/unit/test_serving.py
- tests/unit/test_session_close.py
- tests/unit/test_session_reqid.py
- tests/unit/test_session_reqid_concurrent.py
- tests/unit/test_sharing_manager.py
- tests/unit/test_sharing_types.py
- tests/unit/test_skill_packaging.py
- tests/unit/test_source_add_service.py
- tests/unit/test_source_batch_add_service.py
- tests/unit/test_source_batch_outcomes.py
- tests/unit/test_source_batch_url_reconciliation_edges.py
- tests/unit/test_source_clean_large_batches.py
- tests/unit/test_source_content_renderer.py
- tests/unit/test_source_delete_outcomes.py
- tests/unit/test_source_drive_ref.py
- tests/unit/test_source_listing_service.py
- tests/unit/test_source_markdown.py
- tests/unit/test_source_polling_service.py
- tests/unit/test_source_search.py
- tests/unit/test_source_selection.py
- tests/unit/test_source_status.py
- tests/unit/test_source_symlink.py
- tests/unit/test_source_upload_coverage.py
- tests/unit/test_source_upload_pipeline.py
- tests/unit/test_sources_base.py
- tests/unit/test_sources_delete_many.py
- tests/unit/test_sources_row_adapter.py
- tests/unit/test_sources_upload.py
- tests/unit/test_sources_upload_delegation.py
- tests/unit/test_storage_writer.py
- tests/unit/test_streaming_chat_wire.py
- tests/unit/test_stress_fault_server.py
- tests/unit/test_strict_decode_default.py
- tests/unit/test_swallow_observability.py
- tests/unit/test_taxonomy_inventory.py
- tests/unit/test_tier_13_all_exports.py
- tests/unit/test_tier_enforcement_hook.py
- tests/unit/test_timeout_composition.py
- tests/unit/test_token_regex.py
- tests/unit/test_tracing_middleware.py
- tests/unit/test_tracked_files.py
- tests/unit/test_transfer_rpcs.py
- tests/unit/test_typed_returns_compat.py
- tests/unit/test_types.py
- tests/unit/test_url_utils.py
- tests/unit/test_usage.py
- tests/unit/test_usage_web.py
- tests/unit/test_user_settings_api.py
- tests/unit/test_vcr_body_matcher.py
- tests/unit/test_vcr_config.py
- tests/unit/test_vcr_scrubbing.py
- tests/unit/test_verify_ci_artifacts.py
- tests/unit/test_version_check.py
- tests/unit/test_version_gate.py
- tests/unit/test_version_info.py
- tests/unit/test_version_pyproject_sync.py
- tests/unit/test_warning_dedupe.py
- tests/unit/test_web_asset_lifecycle.py
- tests/unit/test_web_play_books_service.py
- tests/unit/test_web_request_policy.py
- tests/unit/test_web_resilience_cleanup.py
- tests/unit/test_web_transport_epoch_fence.py
- tests/unit/test_web_transport_lifecycle_edges.py
- tests/unit/test_web_workflow_scope.py
- tests/unit/test_windows_compatibility.py
- tests/unit/test_windows_lock.py
- tests/unit/test_with_client_handle_errors.py
- tests/unit/test_youtube_extraction.py
- tests/vcr_config.py
- uv.lock
What this skill tells the agent
Gemini Notebook Automation
Use the notebooklm CLI for agent workflows. Prefer --json and explicit IDs so every operation is inspectable and safe under concurrency. Use the typed async Python API only when the user requests application code or the CLI cannot express the workflow. The readiness, identity, authorization, and credential-handling rules below apply to both interfaces.
Setup and Authentication
Requires Python 3.10+. Install the package in the user's existing environment; do not create a separate environment unless requested:
pip install "notebooklm-py[browser]"
pip install "notebooklm-py[cookies]" # optional browser-cookie extractionIf system pip reports externally-managed-environment, do not use --break-system-packages. For CLI-only use, offer uv tool install "notebooklm-py[browser]" or the equivalent pipx command; for application code, use the user's active project environment.
For unattended or headless work, prefer durable profile-backed master-token auth over a copied cookie snapshot. Install pip install "notebooklm-py[headless]"; the one-time automatic OAuth capture also needs [browser]. On a trusted workstation run notebooklm login --master-token --account <email>, then deploy master_token.json, not storage_state.json, to the selected profile. NOTEBOOKLM_HOME selects the private base directory and NOTEBOOKLM_PROFILE selects its profile; defaults resolve to ~/.notebooklm/profiles/default/master_token.json.
In CI, NOTEBOOKLM_MASTER_TOKEN_JSON is a secret-transport convention, not an environment variable the package reads directly. Write its exact value to the selected profile's master_token.json with mode 0600, unset it, then run notebooklm auth refresh to mint storage_state.json. A sibling master token can automatically re-mint expired file-backed cookies. Inline NOTEBOOKLM_AUTH_JSON is only a short-lived fallback; it bypasses this recovery path.
Use PyPI or a release tag, not an unreleased main checkout. When available, consult the installation guide.
Before a workflow, verify real authentication rather than merely parsing the cookie file:
notebooklm auth check --test --jsonRequire .status == "ok" and .checks.token_fetch == true. If validation fails:
- With a display, run
notebooklm loginand validate again. - In a headless environment, install
[cookies]and usenotebooklm login --browser-cookies <browser>. Usenotebooklm auth inspect --browser <browser>first when account selection is unclear. - If previously valid cookies became stale, try
notebooklm auth refresh; usenotebooklm auth refresh --browser-cookies <browser>after signing back into the browser.
The normal --test preflight may heal and persist refreshed cookies. Add --passive when the check must be strictly read-only, including the failure-diagnosis workflow below.
notebooklm status reports selected-notebook context, not authentication.
Treat both auth files as bearer credentials: never print, log, or commit them. A master token is a durable full-account credential that survives password changes; use a dedicated account, protect it in a secret store and as 0600 on disk, and explicitly revoke it if exposed.
Operating Invariants
- Use
--jsonfor discovery and mutations, then retain the returned full UUIDs. Important envelopes are.notebook.idfromcreate,.source.idfromsource add, and.task_idfrom asynchronous generators.generate mind-mapinstead returnsmind_map,note_id, andkind; both kinds return a finished result with no task ID or separateartifact waitstep. - Pass
-n/--notebook <id>on every notebook-scoped command in automation or concurrent work. Do not rely onnotebooklm use. For every concurrent run, also set a uniqueNOTEBOOKLM_PROFILE=agent-<id>so context and profile writes are isolated. A new profile has no credentials: put amaster_token.jsoncopy in that profile and mint its storage before use. Never share one writablestorage_state.jsonacross agents. - After adding sources, retain every
.source.id, then runsource waitfor each before chat or generation. The add envelope has no status. Require wait exit 0 andstatus == "ready"; let the waiter handle media-specific transienterrorrows. - After an asynchronous generator returns a task/artifact ID, pass it positionally to
artifact waitwith-n <notebook_id>. Download that exact artifact with-a <artifact_id> -n <notebook_id>; never select the latest visible artifact. Mind-map generation returns its completed result directly and does not needartifact wait. - For overlapping research runs, always pass
--run-id <research_run_id>. - Use a host's background facility only when it actually exists. Keep wait and dependent download commands in one sequential job, and download only after the wait exits 0. Otherwise run in the foreground or return exact ID-pinned commands to the user.
Authorization Boundaries
Safe inspection and explicitly requested creation, source addition, chat, and prompt suggestion can run directly. Diagnose failures with read-only commands before attempting recovery.
Obtain confirmation immediately before an action when it was not already clearly authorized:
- destructive commands such as notebook/source/note/artifact/label/profile deletion, sharing removal, logout, clear, research cancellation, and
ask --new; language set, because the default mode changes the account-global output language (prefer a generation command's--languageoverride);- generation or long foreground waits, which can take minutes and be rate-limited;
- downloads, which write files;
research wait --import-all, which imports sources;ask --save-as-noteandhistory --save, which create notes.
User intent, not the presence of a CLI prompt, is the authorization boundary. After authorization, pass --yes/-y where supported. Most destructive JSON commands refuse to prompt without it, but some, including ask --new --json and share remove --json, execute without prompting. Never treat prompt absence as consent.
research cancel is fire-and-forget. After an authorized cancellation, verify the exact run with notebooklm research status -n <notebook_id> --run-id <research_run_id> --json.
Command Discovery
Use the installed CLI's help as the version-matched source of truth instead of guessing flags:
notebooklm --help
notebooklm source --help
notebooklm research --help
notebooklm generate --help
notebooklm artifact --help
notebooklm download --helpAlso inspect notebooklm --version and drill down to the exact command, such as notebooklm generate audio --help, whenever its help differs from this skill.
Common operations:
| Goal | Command |
|---|---|
| Check compute usage | notebooklm usage --json; notebooklm usage --categories for category availability and estimated costs |
| List or create notebooks | notebooklm list --json; notebooklm create "Title" --json |
| Add and wait for a source | notebooklm source add <input> -n <nb> --json; notebooklm source wait <src> -n <nb> |
| Chat | notebooklm ask "question" -n <nb> --json |
| Research | notebooklm source add-research "query" -n <nb> --mode fast --json (deep is also supported) |
| List or wait for artifacts | notebooklm artifact list -n <nb> --json; notebooklm artifact wait <id> -n <nb> |
| Generate | notebooklm generate <type> ... -n <nb> --json |
| Download | notebooklm download <type> <path> -n <nb> -a <artifact> |
For the full surface, consult the installed command help or, when available, the CLI reference. For application code, use the baseline below and, when available, the
Use this skill in a project
Open any RiverX project, search the Skills panel for teng-lin/notebooklm-py/notebooklm, and install it in one click.
