brainiac-cli 0.20.42__tar.gz → 0.20.44__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {brainiac_cli-0.20.42/src/brainiac_cli.egg-info → brainiac_cli-0.20.44}/PKG-INFO +2 -2
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/pyproject.toml +21 -2
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/_version.py +1 -1
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/doctor_desktop.py +7 -3
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/doctor_plugins.py +49 -10
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44/src/brainiac_cli.egg-info}/PKG-INFO +2 -2
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brainiac_cli.egg-info/requires.txt +1 -1
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/LICENSE +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/MANIFEST.in +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/README.md +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/setup.cfg +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/__init__.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/__main__.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/_assets/AGENTS.md +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/_assets/assets/graph-explorer-template.html +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/_assets/overlay/template/brand/brand-guide.md +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/_assets/overlay/template/keywords/glossary.md +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/_assets/overlay/template/people/roster.md +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/_assets/overlay/template/voice/voice-profile.md +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/_assets/routines/manifest.json +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/_assets/scripts/brain-brief-mac.plist +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/_assets/scripts/brain-brief.sh +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/_assets/scripts/brain-synthesis-mac.plist +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/_assets/scripts/brain-synthesis.sh +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/_assets/scripts/brain_synthesis_codex.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/_assets/scripts/brainiac-alerts.sh +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/_assets/scripts/brainiac-egress-guard.sh +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/_assets/scripts/install-brief-mac.sh +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/_assets/scripts/install-brief-windows.ps1 +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/_assets/scripts/register_tasks.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/_assets/scripts/vm-boundary-probe.sh +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/_assets/scripts/vm-selftest.sh +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/_assets/templates/company.md +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/_assets/templates/concept.md +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/_assets/templates/daily.md +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/_assets/templates/decision.md +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/_assets/templates/deliverable.md +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/_assets/templates/meeting.md +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/_assets/templates/person.md +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/_assets/templates/project.md +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/_assets/templates/state-moc.md +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/_optional.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/alerts.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/alerts_render.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/alerts_staging.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/anchor.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/atomic_temp.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/attestation.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/audit.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/audit_chain.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/audit_drift.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/autolink.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/backup.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/brief.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/brief_render.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/capture.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/chunk.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/classification.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/cli.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/cli_cmds/__init__.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/cli_cmds/common_parser.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/cli_cmds/connect.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/cli_cmds/connect_parser.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/cli_cmds/eval.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/cli_cmds/eval_parser.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/cli_cmds/index_storage.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/cli_cmds/index_storage_parser.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/cli_cmds/ingest_storage.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/cli_cmds/ingest_storage_parser.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/cli_cmds/lifecycle.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/cli_cmds/lifecycle_parser.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/cli_cmds/maintenance.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/cli_cmds/maintenance_parser.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/cli_cmds/navigation.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/cli_cmds/navigation_parser.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/cli_cmds/owner_workflow.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/cli_cmds/owner_workflow_parser.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/cli_cmds/presentation.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/cli_cmds/presentation_parser.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/cli_cmds/retrieval.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/cli_cmds/retrieval_parser.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/cli_cmds/update.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/cli_cmds/update_parser.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/cli_cmds/versioning.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/cli_cmds/versioning_parser.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/cli_help.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/cli_read_record.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/cli_render.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/config.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/config_hostpaths.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/connect.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/context.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/conventions.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/conventions_scan.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/core/__init__.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/core/_audit.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/core/_briefing.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/core/_capture.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/core/_capture_staging.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/core/_durability.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/core/_health.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/core/_maintenance.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/core/_maintenance_state.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/core/_retrieval.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/core/_shared.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/core/_supersede_batch.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/core/_supersession.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/core/_supersession_journal.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/cowork_leak_artifact.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/cowork_leak_databases.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/cowork_leak_notes.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/cowork_leak_scan.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/cowork_snapshot_guard.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/cowork_staging.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/dbretry.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/deliverables_absorb.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/deliverables_apply.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/deliverables_ledger.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/deliverables_materialize.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/deliverables_previous.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/deliverables_readme.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/deliverables_shelf.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/deliverables_sync.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/doctor.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/doctor_checks.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/doctor_context.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/doctor_health.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/doctor_mount_leak.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/doctor_staging.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/doctor_vendor.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/doctor_vm.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/doctor_wiring.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/draft_drain.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/draft_update.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/egress.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/egress_terms.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/embed.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/embed_backends.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/embed_catalog.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/embed_onnx.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/embed_qwen.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/encryption.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/exceptions_cli.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/exceptions_page.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/exceptions_render.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/exceptions_tray.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/exceptions_verify.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/folds/__init__.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/folds/context.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/folds/daily.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/folds/deliverables.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/folds/golden.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/folds/graph.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/folds/intake.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/folds/invariants.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/folds/orchestrator.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/folds/organization.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/folds/preflight.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/folds/publish.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/folds/remediation.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/folds/remediation_bookkeeping.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/folds/reporting.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/folds/retention.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/folds/watchdogs.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/folds/weekly.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/frontmatter.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/golden_ops.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/golden_probe.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/golden_probe_cases.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/graph.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/graph_hygiene.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/graph_ops.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/graphify.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/graphify_edges.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/graphreport.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/graphreport_sections.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/graphreport_sections_2.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/guard_settings.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/healthreport.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/healthreport_sections.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/healthreport_unsigned.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/inbox.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/index/__init__.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/index/_connection.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/index/_families.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/index/_graph.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/index/_identity.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/index/_lifecycle.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/index/_models.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/index/_planning.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/index/_records.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/index/_retirement.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/index/_schema.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/index/_search.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/index/_settings.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/index/_shared.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/index/_tools.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/index/_zones.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/index_stages/__init__.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/index_stages/connection.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/index_stages/diagnostics.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/index_stages/duplicate_families.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/index_stages/near_duplicates.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/index_stages/rebuild.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/index_stages/reranking.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/index_stages/search.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/index_stages/search_finalization.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/index_stages/search_identity.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/index_stages/search_ranking.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/index_stages/sync.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/ingest/__init__.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/ingest/deliverables.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/ingest/handlers/__init__.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/ingest/handlers/base.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/ingest/handlers/concealment.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/ingest/handlers/concealment_gate.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/ingest/handlers/concealment_html.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/ingest/handlers/concealment_ledger.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/ingest/handlers/concealment_office.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/ingest/handlers/concealment_pdf.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/ingest/handlers/docx.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/ingest/handlers/email.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/ingest/handlers/html.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/ingest/handlers/image.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/ingest/handlers/ole.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/ingest/handlers/pdf.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/ingest/handlers/pptx.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/ingest/handlers/tables.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/ingest/handlers/text.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/ingest/handlers/xlsx.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/ingest/handlers/zip.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/ingest/pipeline.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/ingest/pipeline_duplicates.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/ingest/pipeline_files.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/ingest/pipeline_injection.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/ingest/pipeline_nested.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/ingest/pipeline_run.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/ingest/pipeline_stages.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/ingest/tierguard.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/ingest/tierguard_verdict.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/ingest/transcript.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/init.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/init_import.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/init_samples.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/init_seed.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/init_steps.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/injection_fold.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/injection_scan.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/interview.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/interview_apply.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/interview_detect.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/invariant_coverage.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/invariant_crosstier.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/invariant_deliverables.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/invariant_floors.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/invariant_ingest_guard.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/invariant_lane_health.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/invariant_reachability.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/invariant_shared.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/invariant_unsigned_notes.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/invariants.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/invariants_metrics.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/language.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/link_targets.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/lock.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/maintenance.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/maintenance_escalation.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/maintenance_folds.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/maintenance_folds_2.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/maintenance_folds_3.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/maintenance_folds_4.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/maintenance_golden.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/maintenance_graphfolds.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/maintenance_healthlog.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/maintenance_hotmd.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/maintenance_invariant_fields.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/maintenance_notify.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/maintenance_outcomes.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/maintenance_para.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/maintenance_recommendations.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/maintenance_retention.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/maintenance_sweep.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/maintenance_watchdog.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/mcp_adapter.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/mcp_capture_verbs.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/mcp_housekeeping_verbs.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/mcp_mediation.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/mcp_supersede_verbs.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/mcp_tools/__init__.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/mcp_tools/capture.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/mcp_tools/core_read.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/mcp_tools/housekeeping.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/mcp_tools/retrieval.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/mcp_tools/supersession.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/mcp_verbs.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/multihop.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/notes.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/originals_resolve.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/overlay.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/overlay_core.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/overlay_generated.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/overlay_keywords.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/overlay_rules.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/pathkey.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/progress.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/projection.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/provenance.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/provision.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/provision_mcp.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/provision_stage.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/provision_wire.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/querylog.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/querylog_digest.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/querylog_replay.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/querylog_status.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/read_log.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/reexec.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/remediation.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/remediation_answers.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/remediation_branches.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/remediation_converged.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/remediation_exceptions.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/remediation_exceptions_store.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/remediation_extract_retry.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/remediation_folds.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/remediation_questions.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/remediation_routing.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/remediation_schema.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/remediation_state.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/rerank.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/rerank_onnx.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/retrieval_ops.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/retro.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/session_hook.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/session_hook_settings.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/session_hook_spec.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/snapshot.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/status_ops.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/supersede_declared.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/sweepdirs.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/update.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/update_channels.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/update_channels_2.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/update_cos_guard.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/update_model.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/update_ops.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/update_plugins.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/update_state.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/update_venv.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/vectors.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/versionlink.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/versionlink_stages.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/vm_ceiling.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/vmstaging.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/workspaces.py +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brainiac_cli.egg-info/SOURCES.txt +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brainiac_cli.egg-info/dependency_links.txt +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brainiac_cli.egg-info/entry_points.txt +0 -0
- {brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brainiac_cli.egg-info/top_level.txt +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: brainiac-cli
|
|
3
|
-
Version: 0.20.
|
|
3
|
+
Version: 0.20.44
|
|
4
4
|
Summary: Brainiac — local any-LLM second-brain core engine + brain CLI (Markdown truth, derived SQLite index).
|
|
5
5
|
License-Expression: Apache-2.0
|
|
6
6
|
Project-URL: Homepage, https://github.com/Autopsias/brainiac
|
|
@@ -60,7 +60,7 @@ Requires-Dist: numpy>=1.24; extra == "eval"
|
|
|
60
60
|
Provides-Extra: quant-tools
|
|
61
61
|
Requires-Dist: onnx>=1.14; extra == "quant-tools"
|
|
62
62
|
Provides-Extra: mcp
|
|
63
|
-
Requires-Dist: mcp<2,>=1.
|
|
63
|
+
Requires-Dist: mcp<2,>=1.30.0; extra == "mcp"
|
|
64
64
|
Provides-Extra: index
|
|
65
65
|
Requires-Dist: regex>=2023.0.0; extra == "index"
|
|
66
66
|
Dynamic: license-file
|
|
@@ -8,7 +8,7 @@ build-backend = "setuptools.build_meta"
|
|
|
8
8
|
# check. The IMPORT package stays `brain` and the console script stays
|
|
9
9
|
# `brain` — only the distribution/project name changes.
|
|
10
10
|
name = "brainiac-cli"
|
|
11
|
-
version = "0.20.
|
|
11
|
+
version = "0.20.44"
|
|
12
12
|
description = "Brainiac — local any-LLM second-brain core engine + brain CLI (Markdown truth, derived SQLite index)."
|
|
13
13
|
readme = "README.md"
|
|
14
14
|
license = "Apache-2.0"
|
|
@@ -122,7 +122,10 @@ quant-tools = ["onnx>=1.14"]
|
|
|
122
122
|
# release pipeline's release-asset handshake gate, after it had already shipped).
|
|
123
123
|
# Upgrade path: port the adapter off FastMCP (mcp.server.lowlevel, or the
|
|
124
124
|
# separate `fastmcp` package) and lift the cap — a real migration, not a bump.
|
|
125
|
-
|
|
125
|
+
# >=1.30.0: CVE-2026-59951 (Streamable HTTP stateful sessions never reclaimed,
|
|
126
|
+
# unbounded memory) is fixed there. The FLOOR, not just the lock, for the same
|
|
127
|
+
# reason as pypdf above: a plain `pip install` reads this, not requirements.lock.
|
|
128
|
+
mcp = ["mcp>=1.30.0,<2"]
|
|
126
129
|
# Timeout-bounded regex engine (mrab-regex) used by BrainIndex.grep's --regex
|
|
127
130
|
# path (RET-04 hardening) as a ReDoS guard: regex.search(text, timeout=...)
|
|
128
131
|
# genuinely bounds catastrophic backtracking, unlike stdlib `re`. Absent ->
|
|
@@ -277,3 +280,19 @@ pythonpath = ["src"]
|
|
|
277
280
|
# artifact is ever distributed, re-run the code-origin audit gate first; only a
|
|
278
281
|
# recorded Legal clearance for internal-only conveyance may reinstate a fork.
|
|
279
282
|
# ---------------------------------------------------------------------------
|
|
283
|
+
|
|
284
|
+
[tool.ty.environment]
|
|
285
|
+
# The interpreter quality-ratchet.yml installs. tools/check_types.py passes
|
|
286
|
+
# --python sys.prefix, so imports resolve from that same environment.
|
|
287
|
+
python-version = "3.12"
|
|
288
|
+
# CI runs on ubuntu-latest; pinned so a Mac records the same `sys.platform`
|
|
289
|
+
# branches the runner judges.
|
|
290
|
+
python-platform = "linux"
|
|
291
|
+
|
|
292
|
+
[tool.ty.src]
|
|
293
|
+
# Authored Python: the package, its tools, the eval harness and the release
|
|
294
|
+
# scripts. `exclude` MIRRORS [tool.claude-quality].exclude above: a bare
|
|
295
|
+
# directory name there matches at any depth, so it is spelled `**/<name>` here.
|
|
296
|
+
# `_assets` is the generated mirror of tools/ + scripts/ inside src/brain/.
|
|
297
|
+
include = ["src", "tools", "eval", "scripts", "packaging"]
|
|
298
|
+
exclude = ["**/_plans", "**/_archive", "**/_evidence", "**/_assets"]
|
|
@@ -377,7 +377,11 @@ def check_mcp_server_code(config_path: Optional[Path] = None,
|
|
|
377
377
|
continue
|
|
378
378
|
at, version = installed
|
|
379
379
|
when = datetime.datetime.fromtimestamp(at).strftime("%Y-%m-%d %H:%M")
|
|
380
|
-
|
|
380
|
+
# Desktop runs each server under its `disclaimer --pgroup --` helper,
|
|
381
|
+
# which carries the same command line: count the server, not the
|
|
382
|
+
# wrapper too (it read "16 processes" for 8 servers, 2026-10-11).
|
|
383
|
+
starts = [start for _pid, start, cmd in procs
|
|
384
|
+
if command in cmd and "/Helpers/disclaimer " not in cmd]
|
|
381
385
|
old = [s for s in starts if s < at]
|
|
382
386
|
if not starts:
|
|
383
387
|
rows.append(_row(surface, NOT_DETECTABLE,
|
|
@@ -385,13 +389,13 @@ def check_mcp_server_code(config_path: Optional[Path] = None,
|
|
|
385
389
|
raw={"action_needed": False}))
|
|
386
390
|
elif old:
|
|
387
391
|
rows.append(_row(surface, MANUAL_REQUIRED,
|
|
388
|
-
f"{len(old)} of {len(starts)} running
|
|
392
|
+
f"{len(old)} of {len(starts)} running server(s) started before the "
|
|
389
393
|
f"engine was installed ({version}, {when}) — they still serve the old code",
|
|
390
394
|
remediation="quit Claude Desktop completely (Cmd+Q) and reopen it",
|
|
391
395
|
raw={"action_needed": True, "version": version}))
|
|
392
396
|
else:
|
|
393
397
|
rows.append(_row(surface, CURRENT,
|
|
394
|
-
f"{len(starts)} running
|
|
398
|
+
f"{len(starts)} running server(s), all started after the engine "
|
|
395
399
|
f"install ({version}, {when})", raw={"action_needed": False}))
|
|
396
400
|
return rows
|
|
397
401
|
|
|
@@ -237,6 +237,44 @@ def check_plugin_manifests(repo_root: Path, ssot: str) -> list[dict]:
|
|
|
237
237
|
# marketplace + installed_plugins.json are both local files, no network).
|
|
238
238
|
# --------------------------------------------------------------------------
|
|
239
239
|
|
|
240
|
+
def _plugin_copies(entries: list, folder_version: Optional[str] = None,
|
|
241
|
+
) -> tuple[list[dict], Optional[str], int]:
|
|
242
|
+
"""Each installed copy of one plugin as (scope, project_path, version),
|
|
243
|
+
plus the last unreadable installPath and the count of orphaned copies.
|
|
244
|
+
|
|
245
|
+
An orphaned copy is a project-scope entry whose project no longer exists
|
|
246
|
+
(a deleted worktree): Claude Code never loads it, and `brain update`
|
|
247
|
+
crashed running `claude plugin update` from the missing directory
|
|
248
|
+
(v0.20.42 deploy, 2026-10-11). It is not a copy to judge or update.
|
|
249
|
+
|
|
250
|
+
``folder_version`` is set when the marketplace is a local folder. Claude
|
|
251
|
+
Code then reads a project copy straight from that folder ("is read from
|
|
252
|
+
its folder: nothing to update") and never rewrites its registry record, so
|
|
253
|
+
the recorded cache path stays at an old version forever: judge the copy
|
|
254
|
+
by the folder it actually loads (false stale rows after 0.20.42)."""
|
|
255
|
+
copies, unreadable, orphaned = [], None, 0
|
|
256
|
+
for entry in entries:
|
|
257
|
+
if not isinstance(entry, dict):
|
|
258
|
+
unreadable = None
|
|
259
|
+
continue
|
|
260
|
+
project = entry.get("projectPath")
|
|
261
|
+
if entry.get("scope") in ("project", "local") and project and not Path(project).is_dir():
|
|
262
|
+
orphaned += 1
|
|
263
|
+
continue
|
|
264
|
+
if folder_version and entry.get("scope") in ("project", "local"):
|
|
265
|
+
copies.append({"scope": entry["scope"], "project_path": project,
|
|
266
|
+
"version": folder_version})
|
|
267
|
+
continue
|
|
268
|
+
install_path = entry.get("installPath")
|
|
269
|
+
pjson = _read_json(Path(install_path) / ".claude-plugin" / "plugin.json") if install_path else None
|
|
270
|
+
if not (pjson and pjson.get("version")):
|
|
271
|
+
unreadable = install_path
|
|
272
|
+
continue
|
|
273
|
+
copies.append({"scope": entry.get("scope") or "user",
|
|
274
|
+
"project_path": project, "version": pjson["version"]})
|
|
275
|
+
return copies, unreadable, orphaned
|
|
276
|
+
|
|
277
|
+
|
|
240
278
|
def check_installed_cli_plugins(
|
|
241
279
|
claude_home: Path, ssot: str, marketplace_name: str = "brainiac",
|
|
242
280
|
marketplace_dir: Optional[Path] = None,
|
|
@@ -246,6 +284,8 @@ def check_installed_cli_plugins(
|
|
|
246
284
|
# installLocation, NOT the hardcoded marketplaces/<name> dir — the caller
|
|
247
285
|
# passes the resolved dir; keep the hardcoded guess only as the fallback.
|
|
248
286
|
marketplace_dir = marketplace_dir or (claude_home / "plugins" / "marketplaces" / marketplace_name)
|
|
287
|
+
known = (_read_json(claude_home / "plugins" / "known_marketplaces.json") or {}).get(marketplace_name)
|
|
288
|
+
from_folder = ((known or {}).get("source") or {}).get("source") == "directory"
|
|
249
289
|
for pname in PLUGIN_NAMES:
|
|
250
290
|
surface = f"Installed CLI plugin ({pname})"
|
|
251
291
|
mkt_json = marketplace_dir / "plugins" / pname / ".claude-plugin" / "plugin.json"
|
|
@@ -289,16 +329,13 @@ def check_installed_cli_plugins(
|
|
|
289
329
|
# at its own version. Judge the oldest copy: reading only the first
|
|
290
330
|
# entry reported a stale copy current (or the reverse) by list order.
|
|
291
331
|
entries = plugin_entries if isinstance(plugin_entries, list) else [plugin_entries]
|
|
292
|
-
copies, unreadable =
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
copies.append({"scope": entry.get("scope") or "user",
|
|
300
|
-
"project_path": entry.get("projectPath"),
|
|
301
|
-
"version": pjson["version"]})
|
|
332
|
+
copies, unreadable, orphaned = _plugin_copies(entries, mkt_version if from_folder else None)
|
|
333
|
+
if orphaned and not copies and unreadable is None:
|
|
334
|
+
rows.append(_row(surface, NOT_DETECTABLE,
|
|
335
|
+
f"installed only for {orphaned} deleted project(s) "
|
|
336
|
+
f"(marketplace has {mkt_version})",
|
|
337
|
+
raw={"marketplace": mkt_version, "orphaned_copies": orphaned}))
|
|
338
|
+
continue
|
|
302
339
|
if unreadable is not None or not copies:
|
|
303
340
|
rows.append(_row(surface, UNKNOWN,
|
|
304
341
|
f"installed but version unreadable at {unreadable}"))
|
|
@@ -309,6 +346,8 @@ def check_installed_cli_plugins(
|
|
|
309
346
|
pick = min if stale_copies else max
|
|
310
347
|
installed_version = pick((c["version"] for c in copies), key=cmp_to_key(_compare))
|
|
311
348
|
where = "" if len(copies) == 1 else f" ({len(stale_copies)} of {len(copies)} copies behind)"
|
|
349
|
+
if orphaned:
|
|
350
|
+
where += f" ({orphaned} copy(ies) for deleted projects ignored)"
|
|
312
351
|
cmp_ = _compare(installed_version, mkt_version or "")
|
|
313
352
|
if cmp_ == 0:
|
|
314
353
|
rows.append(_row(surface, CURRENT, f"installed {installed_version} == marketplace {mkt_version}",
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: brainiac-cli
|
|
3
|
-
Version: 0.20.
|
|
3
|
+
Version: 0.20.44
|
|
4
4
|
Summary: Brainiac — local any-LLM second-brain core engine + brain CLI (Markdown truth, derived SQLite index).
|
|
5
5
|
License-Expression: Apache-2.0
|
|
6
6
|
Project-URL: Homepage, https://github.com/Autopsias/brainiac
|
|
@@ -60,7 +60,7 @@ Requires-Dist: numpy>=1.24; extra == "eval"
|
|
|
60
60
|
Provides-Extra: quant-tools
|
|
61
61
|
Requires-Dist: onnx>=1.14; extra == "quant-tools"
|
|
62
62
|
Provides-Extra: mcp
|
|
63
|
-
Requires-Dist: mcp<2,>=1.
|
|
63
|
+
Requires-Dist: mcp<2,>=1.30.0; extra == "mcp"
|
|
64
64
|
Provides-Extra: index
|
|
65
65
|
Requires-Dist: regex>=2023.0.0; extra == "index"
|
|
66
66
|
Dynamic: license-file
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/_assets/assets/graph-explorer-template.html
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/_assets/overlay/template/people/roster.md
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/_assets/scripts/brain-brief-mac.plist
RENAMED
|
File without changes
|
|
File without changes
|
{brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/_assets/scripts/brain-synthesis-mac.plist
RENAMED
|
File without changes
|
|
File without changes
|
{brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/_assets/scripts/brain_synthesis_codex.py
RENAMED
|
File without changes
|
|
File without changes
|
{brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/_assets/scripts/brainiac-egress-guard.sh
RENAMED
|
File without changes
|
{brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/_assets/scripts/install-brief-mac.sh
RENAMED
|
File without changes
|
{brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/_assets/scripts/install-brief-windows.ps1
RENAMED
|
File without changes
|
|
File without changes
|
{brainiac_cli-0.20.42 → brainiac_cli-0.20.44}/src/brain/_assets/scripts/vm-boundary-probe.sh
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|