neotoma 0.17.0 → 0.18.1
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.
- package/README.md +133 -254
- package/dist/actions.d.ts.map +1 -1
- package/dist/actions.js +105 -1
- package/dist/actions.js.map +1 -1
- package/dist/cli/commands/bundles.d.ts +15 -0
- package/dist/cli/commands/bundles.d.ts.map +1 -0
- package/dist/cli/commands/bundles.js +141 -0
- package/dist/cli/commands/bundles.js.map +1 -0
- package/dist/cli/commands/mirror.d.ts +17 -0
- package/dist/cli/commands/mirror.d.ts.map +1 -1
- package/dist/cli/commands/mirror.js +128 -0
- package/dist/cli/commands/mirror.js.map +1 -1
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +50 -19
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/parse_schema_fields.d.ts +26 -0
- package/dist/cli/parse_schema_fields.d.ts.map +1 -0
- package/dist/cli/parse_schema_fields.js +66 -0
- package/dist/cli/parse_schema_fields.js.map +1 -0
- package/dist/docs/api/rest_api.md +467 -0
- package/dist/docs/architecture/agentic_portfolio_overview.md +97 -0
- package/dist/docs/architecture/agentic_wallet_overview.md +91 -0
- package/dist/docs/architecture/architectural_decisions.md +466 -0
- package/dist/docs/architecture/architecture.md +836 -0
- package/dist/docs/architecture/blockchain_readiness_assessment.md +248 -0
- package/dist/docs/architecture/bounded_convergence.md +312 -0
- package/dist/docs/architecture/consistency.md +531 -0
- package/dist/docs/architecture/conversational_ux_architecture.md +241 -0
- package/dist/docs/architecture/determinism.md +873 -0
- package/dist/docs/architecture/idempotence_pattern.md +139 -0
- package/dist/docs/architecture/mcp_actions_assessment.md +182 -0
- package/dist/docs/architecture/ner_vs_schema_first_extraction.md +280 -0
- package/dist/docs/architecture/openapi_contract_flow.md +160 -0
- package/dist/docs/architecture/progressive_schema_enforcement.md +184 -0
- package/dist/docs/architecture/query_convergence.md +273 -0
- package/dist/docs/architecture/schema_compatibility_policy.md +118 -0
- package/dist/docs/architecture/schema_expansion.md +260 -0
- package/dist/docs/architecture/schema_handling.md +209 -0
- package/dist/docs/architecture/source_material_model.md +281 -0
- package/dist/docs/conventions/TEST_EXECUTION_IMPROVEMENTS.md +205 -0
- package/dist/docs/conventions/always_on_rules_review.md +66 -0
- package/dist/docs/conventions/code_conventions_implementation.md +111 -0
- package/dist/docs/conventions/code_conventions_plan.md +124 -0
- package/dist/docs/conventions/code_review_summary.md +96 -0
- package/dist/docs/conventions/documentation_standards.md +153 -0
- package/dist/docs/conventions/estimation_methodology.md +146 -0
- package/dist/docs/conventions/file_naming_migration_status.md +94 -0
- package/dist/docs/conventions/readme_generation_framework.md +230 -0
- package/dist/docs/conventions/time_tracking_template.md +60 -0
- package/dist/docs/conventions/web_content_fetching_rules.md +56 -0
- package/dist/docs/conventions/writing_style_guide.md +275 -0
- package/dist/docs/developer/aauth_overview.md +65 -0
- package/dist/docs/developer/agent_cli_configuration.md +156 -0
- package/dist/docs/developer/agent_docker_instructions.md +32 -0
- package/dist/docs/developer/agent_installation_instructions.md +10 -0
- package/dist/docs/developer/agent_instructions.md +52 -0
- package/dist/docs/developer/agent_instructions_overview.md +65 -0
- package/dist/docs/developer/agent_memory_failure_interactions_by_schema.md +75 -0
- package/dist/docs/developer/agent_memory_failure_modes.md +37 -0
- package/dist/docs/developer/agent_onboarding_confirmation.md +397 -0
- package/dist/docs/developer/agentic_eval_fixture_format.md +225 -0
- package/dist/docs/developer/canonical_walkthrough.md +137 -0
- package/dist/docs/developer/chatgpt_actions_setup.md +161 -0
- package/dist/docs/developer/chatgpt_app_readiness_audit.md +58 -0
- package/dist/docs/developer/chatgpt_app_submission_draft.md +46 -0
- package/dist/docs/developer/chatgpt_apps_auth_security.md +46 -0
- package/dist/docs/developer/chatgpt_apps_setup.md +90 -0
- package/dist/docs/developer/chatgpt_apps_validation_submission_checklist.md +71 -0
- package/dist/docs/developer/chatgpt_integration_instructions.md +151 -0
- package/dist/docs/developer/cli-banner-remaining-fix.md +80 -0
- package/dist/docs/developer/cli-banner-session-repl-fix.md +105 -0
- package/dist/docs/developer/cli-banner-user-data-dir-fix.md +124 -0
- package/dist/docs/developer/cli_agent_instructions.md +156 -0
- package/dist/docs/developer/cli_overview.md +207 -0
- package/dist/docs/developer/cli_reference.md +1132 -0
- package/dist/docs/developer/developer_preview_launch_checklist.md +147 -0
- package/dist/docs/developer/developer_preview_storage.md +35 -0
- package/dist/docs/developer/developer_release_manual_test_checklist.md +230 -0
- package/dist/docs/developer/development_workflow.md +308 -0
- package/dist/docs/developer/docker.md +47 -0
- package/dist/docs/developer/docs_index_route.md +196 -0
- package/dist/docs/developer/environment/CONNECTOR_SECRET_KEY_SETUP.md +96 -0
- package/dist/docs/developer/environment/DEV_CONNECTOR_SECRET_KEY_EXPLANATION.md +80 -0
- package/dist/docs/developer/environment/ENV_MAPPINGS_STATUS.md +86 -0
- package/dist/docs/developer/environment/ENV_VAR_NAMING_STRATEGY.md +145 -0
- package/dist/docs/developer/environment/MIGRATION_TO_SINGLE_VAR_NAMES.md +89 -0
- package/dist/docs/developer/environment/QUICK_START_1PASSWORD.md +126 -0
- package/dist/docs/developer/environment/README.md +27 -0
- package/dist/docs/developer/environment/SETUP_ENV_MAPPINGS.md +256 -0
- package/dist/docs/developer/environment_distinction_audit.md +43 -0
- package/dist/docs/developer/eval_requirements.md +76 -0
- package/dist/docs/developer/exit_rebuild_test.md +192 -0
- package/dist/docs/developer/fix_doc_inconsistencies_plan.md +63 -0
- package/dist/docs/developer/fleet_onboarding.md +141 -0
- package/dist/docs/developer/getting_started.md +140 -0
- package/dist/docs/developer/github_release_process.md +181 -0
- package/dist/docs/developer/github_release_supplement.example.md +93 -0
- package/dist/docs/developer/illustration_generator.md +93 -0
- package/dist/docs/developer/import_interpretation_debug.md +69 -0
- package/dist/docs/developer/inspector/README.md +72 -0
- package/dist/docs/developer/inspector/agents.md +41 -0
- package/dist/docs/developer/inspector/conversations.md +37 -0
- package/dist/docs/developer/inspector/dashboard.md +37 -0
- package/dist/docs/developer/inspector/entities.md +42 -0
- package/dist/docs/developer/inspector/observations_and_sources.md +49 -0
- package/dist/docs/developer/inspector/peers.md +30 -0
- package/dist/docs/developer/inspector/relationships_and_graph.md +40 -0
- package/dist/docs/developer/inspector/schemas.md +39 -0
- package/dist/docs/developer/inspector/search.md +34 -0
- package/dist/docs/developer/inspector/settings.md +32 -0
- package/dist/docs/developer/inspector/timeline.md +43 -0
- package/dist/docs/developer/issues_guide.md +85 -0
- package/dist/docs/developer/launchd_dev_servers.md +89 -0
- package/dist/docs/developer/launchd_prod_server.md +38 -0
- package/dist/docs/developer/launchd_watch_build.md +53 -0
- package/dist/docs/developer/macos_vm_testing.md +20 -0
- package/dist/docs/developer/mcp/compact_instructions.md +89 -0
- package/dist/docs/developer/mcp/instructions.md +317 -0
- package/dist/docs/developer/mcp/invalid_connection_id_handling.md +184 -0
- package/dist/docs/developer/mcp/mobile_setup.md +80 -0
- package/dist/docs/developer/mcp/proxy.md +89 -0
- package/dist/docs/developer/mcp/unauthenticated.md +30 -0
- package/dist/docs/developer/mcp_authentication_summary.md +73 -0
- package/dist/docs/developer/mcp_claude_code_setup.md +518 -0
- package/dist/docs/developer/mcp_connect_button_troubleshooting.md +8 -0
- package/dist/docs/developer/mcp_continue_setup.md +96 -0
- package/dist/docs/developer/mcp_cursor_setup.md +261 -0
- package/dist/docs/developer/mcp_https_testing.md +178 -0
- package/dist/docs/developer/mcp_https_testing_status.md +130 -0
- package/dist/docs/developer/mcp_https_tunnel_status.md +147 -0
- package/dist/docs/developer/mcp_ironclaw_setup.md +102 -0
- package/dist/docs/developer/mcp_letta_setup.md +150 -0
- package/dist/docs/developer/mcp_oauth_implementation.md +123 -0
- package/dist/docs/developer/mcp_oauth_migration_guide.md +196 -0
- package/dist/docs/developer/mcp_oauth_troubleshooting.md +154 -0
- package/dist/docs/developer/mcp_openclaw_setup.md +100 -0
- package/dist/docs/developer/mcp_overview.md +186 -0
- package/dist/docs/developer/mcp_server_examples_from_cursor_docs.md +485 -0
- package/dist/docs/developer/mcp_vscode_setup.md +127 -0
- package/dist/docs/developer/mcp_windsurf_setup.md +106 -0
- package/dist/docs/developer/mirror_guide.md +104 -0
- package/dist/docs/developer/mirror_writeback.md +38 -0
- package/dist/docs/developer/npm_scripts.md +121 -0
- package/dist/docs/developer/observation_architecture_documentation_integration.md +368 -0
- package/dist/docs/developer/package_scripts.md +5 -0
- package/dist/docs/developer/plans_guide.md +101 -0
- package/dist/docs/developer/pr_review_reading_list.md +101 -0
- package/dist/docs/developer/pre_release_checklist.md +165 -0
- package/dist/docs/developer/release_orchestrator.md +197 -0
- package/dist/docs/developer/repository_cleanup_plan.md +87 -0
- package/dist/docs/developer/resolved_blockers.md +49 -0
- package/dist/docs/developer/rule_neotoma_sync.md +78 -0
- package/dist/docs/developer/schema_initialization.md +182 -0
- package/dist/docs/developer/scripts_reference.md +142 -0
- package/dist/docs/developer/sdk_agent.md +178 -0
- package/dist/docs/developer/sdk_python.md +164 -0
- package/dist/docs/developer/secrets/README.md +15 -0
- package/dist/docs/developer/secrets/secrets_architecture.md +95 -0
- package/dist/docs/developer/secrets/secrets_manager_value.md +53 -0
- package/dist/docs/developer/secrets/secrets_secure_approach.md +103 -0
- package/dist/docs/developer/secrets/secrets_setup.md +116 -0
- package/dist/docs/developer/seo_analytics_verification.md +56 -0
- package/dist/docs/developer/shared_components_submodule_setup.md +273 -0
- package/dist/docs/developer/site_mdx_documentation.md +111 -0
- package/dist/docs/developer/skills_guide.md +125 -0
- package/dist/docs/developer/source_storage_by_reference.md +48 -0
- package/dist/docs/developer/spec_compliance_validation_system.md +261 -0
- package/dist/docs/developer/subscriptions_guide.md +76 -0
- package/dist/docs/developer/test_coverage_gap_analysis_plan.md +36 -0
- package/dist/docs/developer/transcript_ingestion.md +182 -0
- package/dist/docs/developer/tunnel_auth_audit_matrix.md +111 -0
- package/dist/docs/developer/tunnels.md +349 -0
- package/dist/docs/developer/vite_troubleshooting.md +111 -0
- package/dist/docs/examples/schema_breaking_change_reconciliation.md +488 -0
- package/dist/docs/foundation/adopter_dependency_commitments.md +188 -0
- package/dist/docs/foundation/ai_safety.md +10 -0
- package/dist/docs/foundation/bundles.md +175 -0
- package/dist/docs/foundation/composability_analysis.md +292 -0
- package/dist/docs/foundation/core_identity.md +64 -0
- package/dist/docs/foundation/data_models.md +133 -0
- package/dist/docs/foundation/developer_release_principles.md +381 -0
- package/dist/docs/foundation/documentation_design_system.md +505 -0
- package/dist/docs/foundation/entity_resolution.md +56 -0
- package/dist/docs/foundation/field_validation.md +88 -0
- package/dist/docs/foundation/file_ranking_heuristic.md +108 -0
- package/dist/docs/foundation/layered_architecture.md +132 -0
- package/dist/docs/foundation/mmry_comparison.md +179 -0
- package/dist/docs/foundation/philosophy.md +142 -0
- package/dist/docs/foundation/problem_statement.md +88 -0
- package/dist/docs/foundation/product_positioning.md +408 -0
- package/dist/docs/foundation/product_principles.md +27 -0
- package/dist/docs/foundation/quality_requirements.md +68 -0
- package/dist/docs/foundation/redlines.md +304 -0
- package/dist/docs/foundation/schema_agnostic_design_rules.md +112 -0
- package/dist/docs/foundation/scope_decisions.md +145 -0
- package/dist/docs/foundation/substrate_and_applications.md +67 -0
- package/dist/docs/foundation/timeline_events.md +30 -0
- package/dist/docs/foundation/user_workflows.md +38 -0
- package/dist/docs/foundation/what_to_store.md +184 -0
- package/dist/docs/getting_started/getting_started.md +76 -0
- package/dist/docs/getting_started/using_the_inspector.md +76 -0
- package/dist/docs/getting_started/what_is_neotoma.md +51 -0
- package/dist/docs/getting_started/working_with_your_memory.md +59 -0
- package/dist/docs/icp/icp_from_functionality.md +108 -0
- package/dist/docs/icp/icp_reconciliation.md +71 -0
- package/dist/docs/infrastructure/deployment.md +687 -0
- package/dist/docs/infrastructure/multi_tenant_deployment_topology.md +180 -0
- package/dist/docs/integrations/aauth_tbs_windows.md +213 -0
- package/dist/docs/integrations/aauth_tpm2_linux.md +191 -0
- package/dist/docs/integrations/aauth_yubikey.md +233 -0
- package/dist/docs/integrations/hooks/README.md +53 -0
- package/dist/docs/integrations/hooks/claude_agent_sdk.md +66 -0
- package/dist/docs/integrations/hooks/claude_code.md +52 -0
- package/dist/docs/integrations/hooks/codex_cli.md +35 -0
- package/dist/docs/integrations/hooks/cursor.md +63 -0
- package/dist/docs/integrations/hooks/opencode.md +57 -0
- package/dist/docs/integrations/matrix.md +83 -0
- package/dist/docs/integrations/openclaw.md +111 -0
- package/dist/docs/integrations/smithery_external_url.md +30 -0
- package/dist/docs/legal/README.md +85 -0
- package/dist/docs/legal/compliance.md +854 -0
- package/dist/docs/legal/privacy_policy.md +128 -0
- package/dist/docs/legal/privacy_policy_changelog.md +49 -0
- package/dist/docs/legal/site_privacy_notice.md +161 -0
- package/dist/docs/legal/site_terms_of_use.md +135 -0
- package/dist/docs/legal/terms_of_service.md +198 -0
- package/dist/docs/legal/terms_of_service_changelog.md +62 -0
- package/dist/docs/migration/llm_extraction_removal.md +387 -0
- package/dist/docs/migration/llm_interpretation_docs_update.md +132 -0
- package/dist/docs/observability/logging.md +50 -0
- package/dist/docs/observability/metrics_standard.md +38 -0
- package/dist/docs/observability/tracing.md +41 -0
- package/dist/docs/operations/agent_access_control.md +38 -0
- package/dist/docs/operations/configuration.md +82 -0
- package/dist/docs/operations/debugging/README.md +11 -0
- package/dist/docs/operations/debugging/error_debug_instructions.md +55 -0
- package/dist/docs/operations/deployment.md +41 -0
- package/dist/docs/operations/encryption.md +42 -0
- package/dist/docs/operations/health_check.md +73 -0
- package/dist/docs/operations/runbook.md +100 -0
- package/dist/docs/operations/running_the_server.md +50 -0
- package/dist/docs/reference/error_codes.md +482 -0
- package/dist/docs/security/advisories/2026-05-11-inspector-auth-bypass.md +222 -0
- package/dist/docs/security/advisories/2026-05-21-relationship-endpoint-tenant-isolation.md +88 -0
- package/dist/docs/security/advisories/README.md +65 -0
- package/dist/docs/security/practices.md +165 -0
- package/dist/docs/security/reviews/2026-06-02-pr1479-tenant-isolation.md +22 -0
- package/dist/docs/security/threat_model.md +159 -0
- package/dist/docs/site/site_doc_manifest.yaml +659 -0
- package/dist/docs/skills/core_workflows/close-session/SKILL.md +82 -0
- package/dist/docs/skills/core_workflows/get-context/SKILL.md +87 -0
- package/dist/docs/skills/core_workflows/start-session/SKILL.md +80 -0
- package/dist/docs/skills/skill_strategy.md +144 -0
- package/dist/docs/specs/DATA_MODELS.md +455 -0
- package/dist/docs/specs/GENERAL_REQUIREMENTS.md +30 -0
- package/dist/docs/specs/INTERNAL_MCP_RELEASE.md +300 -0
- package/dist/docs/specs/MCP_SPEC.md +2441 -0
- package/dist/docs/specs/METRICS_REQUIREMENTS.md +390 -0
- package/dist/docs/specs/NONFUNCTIONAL_REQUIREMENTS.md +98 -0
- package/dist/docs/specs/ONBOARDING_SPEC.md +656 -0
- package/dist/docs/specs/PARQUET_MCP_RESOURCES_SPEC.md +328 -0
- package/dist/docs/specs/TEST_PLAN.md +116 -0
- package/dist/docs/specs/UI_SPEC.md +93 -0
- package/dist/docs/specs/agent_evaluation_operational_long_running_agent.md +152 -0
- package/dist/docs/specs/agent_evaluation_optimization_playbook.md +76 -0
- package/dist/docs/specs/homepage_design_guidelines.md +400 -0
- package/dist/docs/specs/neotoma_color_palette.md +70 -0
- package/dist/docs/subsystems/aauth.md +287 -0
- package/dist/docs/subsystems/aauth_attestation.md +445 -0
- package/dist/docs/subsystems/aauth_cli_attestation.md +537 -0
- package/dist/docs/subsystems/accessibility.md +48 -0
- package/dist/docs/subsystems/agent_attribution_integration.md +536 -0
- package/dist/docs/subsystems/agent_capabilities.md +252 -0
- package/dist/docs/subsystems/agent_feedback_pipeline.md +28 -0
- package/dist/docs/subsystems/agentic_eval.md +604 -0
- package/dist/docs/subsystems/auth.md +256 -0
- package/dist/docs/subsystems/conflict_resolution.md +366 -0
- package/dist/docs/subsystems/conversation_turn.md +106 -0
- package/dist/docs/subsystems/deletion.md +501 -0
- package/dist/docs/subsystems/entities.md +191 -0
- package/dist/docs/subsystems/entity_field_semantics.md +141 -0
- package/dist/docs/subsystems/entity_merge.md +378 -0
- package/dist/docs/subsystems/entity_snapshots.md +228 -0
- package/dist/docs/subsystems/entity_submission.md +136 -0
- package/dist/docs/subsystems/errors.md +153 -0
- package/dist/docs/subsystems/events.md +77 -0
- package/dist/docs/subsystems/feedback_neotoma_forwarder.md +5 -0
- package/dist/docs/subsystems/github_entities.md +216 -0
- package/dist/docs/subsystems/guest_access_policy.md +124 -0
- package/dist/docs/subsystems/i18n.md +42 -0
- package/dist/docs/subsystems/ingestion/ingestion.md +772 -0
- package/dist/docs/subsystems/ingestion/state_machines.md +49 -0
- package/dist/docs/subsystems/interpretations.md +268 -0
- package/dist/docs/subsystems/issues.md +218 -0
- package/dist/docs/subsystems/markdown_mirror.md +211 -0
- package/dist/docs/subsystems/observation_architecture.md +391 -0
- package/dist/docs/subsystems/peer_sync.md +250 -0
- package/dist/docs/subsystems/plans.md +103 -0
- package/dist/docs/subsystems/privacy.md +71 -0
- package/dist/docs/subsystems/record_types.md +762 -0
- package/dist/docs/subsystems/reducer.md +517 -0
- package/dist/docs/subsystems/relationships.md +511 -0
- package/dist/docs/subsystems/release_notes.md +78 -0
- package/dist/docs/subsystems/repo_discovery_manifest.md +145 -0
- package/dist/docs/subsystems/sandbox_deployment.md +269 -0
- package/dist/docs/subsystems/schema.md +1213 -0
- package/dist/docs/subsystems/schema_registry.md +634 -0
- package/dist/docs/subsystems/schema_snapshots/README.md +231 -0
- package/dist/docs/subsystems/schema_snapshots/agent_message/README.md +7 -0
- package/dist/docs/subsystems/search/search.md +97 -0
- package/dist/docs/subsystems/sources.md +665 -0
- package/dist/docs/subsystems/subscriptions.md +143 -0
- package/dist/docs/subsystems/substrate_events.md +112 -0
- package/dist/docs/subsystems/timeline_events.md +265 -0
- package/dist/docs/subsystems/usage_digest.md +421 -0
- package/dist/docs/subsystems/vector_ops.md +72 -0
- package/dist/docs/testing/ROUTE_COVERAGE_MATRIX.md +106 -0
- package/dist/docs/testing/WHY_PARTIAL_ROUTE_COVERAGE.md +185 -0
- package/dist/docs/testing/automated_test_catalog.md +766 -0
- package/dist/docs/testing/cli_command_coverage_review.md +130 -0
- package/dist/docs/testing/fixtures_standard.md +202 -0
- package/dist/docs/testing/integration_run_reports.md +50 -0
- package/dist/docs/testing/manual_regression_checklist.md +142 -0
- package/dist/docs/testing/test_coverage_audit_summary.md +571 -0
- package/dist/docs/testing/testing_standard.md +205 -0
- package/dist/docs/ui/DESIGN_SYSTEM_UPDATE_SUMMARY.md +152 -0
- package/dist/docs/ui/SHADCN_INTEGRATION_COMPLETE.md +255 -0
- package/dist/docs/ui/design_system/accessibility.md +38 -0
- package/dist/docs/ui/design_system/authentication_components.md +38 -0
- package/dist/docs/ui/design_system/billing_components.md +36 -0
- package/dist/docs/ui/design_system/brand_alignment.md +35 -0
- package/dist/docs/ui/design_system/color_palette.md +95 -0
- package/dist/docs/ui/design_system/component_styles.md +241 -0
- package/dist/docs/ui/design_system/dark_mode.md +30 -0
- package/dist/docs/ui/design_system/data_visualization.md +72 -0
- package/dist/docs/ui/design_system/empty_states.md +47 -0
- package/dist/docs/ui/design_system/error_states.md +35 -0
- package/dist/docs/ui/design_system/file_upload_components.md +60 -0
- package/dist/docs/ui/design_system/future_considerations.md +19 -0
- package/dist/docs/ui/design_system/iconography.md +21 -0
- package/dist/docs/ui/design_system/icp_aesthetic_analysis.md +35 -0
- package/dist/docs/ui/design_system/icp_preference_alignment.md +33 -0
- package/dist/docs/ui/design_system/implementation_notes.md +119 -0
- package/dist/docs/ui/design_system/loading_states.md +40 -0
- package/dist/docs/ui/design_system/motion_and_animation.md +45 -0
- package/dist/docs/ui/design_system/navigation_components.md +63 -0
- package/dist/docs/ui/design_system/onboarding_components.md +48 -0
- package/dist/docs/ui/design_system/responsive_design.md +26 -0
- package/dist/docs/ui/design_system/search_components.md +32 -0
- package/dist/docs/ui/design_system/settings_components.md +29 -0
- package/dist/docs/ui/design_system/spacing_and_layout.md +67 -0
- package/dist/docs/ui/design_system/style_guide.md +395 -0
- package/dist/docs/ui/design_system/typography.md +88 -0
- package/dist/docs/ui/design_system/visual_hierarchy.md +64 -0
- package/dist/docs/ui/design_system.md +124 -0
- package/dist/docs/ui/dsl_spec.md +97 -0
- package/dist/docs/ui/inspector_shadcn_audit.md +116 -0
- package/dist/docs/ui/patterns/dashboard.md +58 -0
- package/dist/docs/ui/patterns/detail.md +68 -0
- package/dist/docs/ui/patterns/list.md +72 -0
- package/dist/docs/ui/patterns/navigation.md +314 -0
- package/dist/docs/ui/patterns/settings.md +52 -0
- package/dist/docs/ui/patterns/wizard.md +53 -0
- package/dist/docs/ui/prototype_guide.md +300 -0
- package/dist/docs/ui/shadcn_components.md +254 -0
- package/dist/docs/ui/style_guide_updates.md +74 -0
- package/dist/docs/use_cases/README.md +26 -0
- package/dist/docs/use_cases/agent_auth.md +34 -0
- package/dist/docs/use_cases/cases.md +36 -0
- package/dist/docs/use_cases/compliance.md +36 -0
- package/dist/docs/use_cases/contracts.md +36 -0
- package/dist/docs/use_cases/crm.md +37 -0
- package/dist/docs/use_cases/crypto_engineering.md +38 -0
- package/dist/docs/use_cases/customer_ops.md +34 -0
- package/dist/docs/use_cases/diligence.md +36 -0
- package/dist/docs/use_cases/financial_ops.md +36 -0
- package/dist/docs/use_cases/government.md +34 -0
- package/dist/docs/use_cases/healthcare.md +34 -0
- package/dist/docs/use_cases/logistics.md +34 -0
- package/dist/docs/use_cases/personal_data.md +40 -0
- package/dist/docs/use_cases/portfolio.md +36 -0
- package/dist/docs/use_cases/procurement.md +36 -0
- package/dist/docs/use_cases/trading.md +36 -0
- package/dist/docs/vocabulary/canonical_terms.md +319 -0
- package/dist/docs/vocabulary/plain_language.md +31 -0
- package/dist/inspector/assets/{access_policies-DqX8wCOh.js → access_policies-Bgx-SZYe.js} +1 -1
- package/dist/inspector/assets/{agent_badge-BPBS3uMg.js → agent_badge-C33tCpxh.js} +1 -1
- package/dist/inspector/assets/{agent_detail-EWEe8pQw.js → agent_detail-gfDjvyWc.js} +1 -1
- package/dist/inspector/assets/{agent_filter-C8MSuS1s.js → agent_filter-D4laqYjo.js} +1 -1
- package/dist/inspector/assets/{agent_grant_detail-BkYh2QOB.js → agent_grant_detail-YHMN0I36.js} +1 -1
- package/dist/inspector/assets/{agent_grant_form-D6s0NAkM.js → agent_grant_form-COhga3hy.js} +1 -1
- package/dist/inspector/assets/{agent_grants-ArpCmDAV.js → agent_grants-D6A_JuS2.js} +1 -1
- package/dist/inspector/assets/{agents-Dv-ZSd0Z.js → agents-BOoOc4bq.js} +1 -1
- package/dist/inspector/assets/{api_not_configured_state-BCs3n4p2.js → api_not_configured_state-DTvBRhie.js} +1 -1
- package/dist/inspector/assets/{attribution_card-BK3p5Ozr.js → attribution_card-BkbIJSjc.js} +1 -1
- package/dist/inspector/assets/{attribution_summary-BU0_cen7.js → attribution_summary-BbMRTGON.js} +1 -1
- package/dist/inspector/assets/bundles-C1Vbryad.js +1 -0
- package/dist/inspector/assets/{card-LbtEo1iL.js → card-VEtVMpk8.js} +1 -1
- package/dist/inspector/assets/{checkbox--c6oLHVn.js → checkbox-DUWnf3Dc.js} +1 -1
- package/dist/inspector/assets/{compliance-BDVV7407.js → compliance-LGZJfcc4.js} +1 -1
- package/dist/inspector/assets/{confirm-dialog-BwfOF1bJ.js → confirm-dialog-KxqCxG3b.js} +1 -1
- package/dist/inspector/assets/{conversation_common-CLRpv5uN.js → conversation_common-Dxo8dRpw.js} +1 -1
- package/dist/inspector/assets/{conversation_detail-C6F03oRa.js → conversation_detail-BWJ2Ip15.js} +1 -1
- package/dist/inspector/assets/{copy_id_button-URkA1AIn.js → copy_id_button-SJ2sUMK1.js} +1 -1
- package/dist/inspector/assets/{copyable_code_block-DmUGcwtD.js → copyable_code_block-xMzp8G09.js} +1 -1
- package/dist/inspector/assets/{corrections-CfIaT2uR.js → corrections-BJD1E6Zx.js} +1 -1
- package/dist/inspector/assets/{dashboard-oeogMao8.js → dashboard-BOnx6ZyM.js} +1 -1
- package/dist/inspector/assets/{data-table-D0iSnY-I.js → data-table-DW3TzIhP.js} +1 -1
- package/dist/inspector/assets/{design-BYxCHhir.js → design-C1T-vnFH.js} +1 -1
- package/dist/inspector/assets/{dialog-BJqR1eFl.js → dialog-DH8W3l6O.js} +1 -1
- package/dist/inspector/assets/{docs-BEoEp-8u.js → docs-D1LVDpcM.js} +1 -1
- package/dist/inspector/assets/{docs_page_layout-DBUApN4Q.js → docs_page_layout-D3eBLbl8.js} +1 -1
- package/dist/inspector/assets/{embed_graph-M4dJpTFE.js → embed_graph-yijK3iWa.js} +1 -1
- package/dist/inspector/assets/{empty_state-BBm0Ux3p.js → empty_state-BGnkG3yO.js} +1 -1
- package/dist/inspector/assets/{entities-DsHnaIN2.js → entities-Bm3dkUFI.js} +1 -1
- package/dist/inspector/assets/{entity_correct-0x-V9BzS.js → entity_correct-D5WJNaFc.js} +1 -1
- package/dist/inspector/assets/{entity_history-B2krP9-Q.js → entity_history-Ci7GWHy5.js} +1 -1
- package/dist/inspector/assets/{entity_history_sections-midIsmeO.js → entity_history_sections-u3aV-Lc9.js} +1 -1
- package/dist/inspector/assets/{entity_link-Cs_rl22K.js → entity_link-CNldR-lq.js} +1 -1
- package/dist/inspector/assets/{entity_relationships_by_type-DVR3Ptd0.js → entity_relationships_by_type-C0Gk2BTQ.js} +1 -1
- package/dist/inspector/assets/{entity_segment_page-DJ0oe1WS.js → entity_segment_page-Df2iD87C.js} +1 -1
- package/dist/inspector/assets/{entity_table_column_toggle-BhgF5QRv.js → entity_table_column_toggle-DZ1xAV_m.js} +1 -1
- package/dist/inspector/assets/{entity_timeline-vgOdIQLq.js → entity_timeline-BZ-s73b8.js} +1 -1
- package/dist/inspector/assets/{entity_types-MPptsQ-l.js → entity_types-Ba5ZqBUc.js} +1 -1
- package/dist/inspector/assets/{faq-CW1NqfAB.js → faq-BbETwvzl.js} +1 -1
- package/dist/inspector/assets/{graph_explorer-BoZAAFMF.js → graph_explorer-Bc3BPsM8.js} +1 -1
- package/dist/inspector/assets/{graph_layout-BWdHoaBK.js → graph_layout-BQDyyZaT.js} +1 -1
- package/dist/inspector/assets/{home-CA8tLdZF.js → home-BXy-o49i.js} +1 -1
- package/dist/inspector/assets/{index-BpRXWavv.js → index-BCtrS-q-.js} +912 -912
- package/dist/inspector/assets/{index-CX74A2uB.js → index-C4dL6o71.js} +1 -1
- package/dist/inspector/assets/{index-F-beGZt7.js → index-Cjh2Ys9W.js} +1 -1
- package/dist/inspector/assets/index-CzD1hfqq.css +1 -0
- package/dist/inspector/assets/{interpretations-BLIWIUk8.js → interpretations-BJVBv-H1.js} +1 -1
- package/dist/inspector/assets/interpretations-D2v1BxEQ.js +1 -0
- package/dist/inspector/assets/{issue_author_attribution-DuaU-Wo3.js → issue_author_attribution-Drv6KlfY.js} +1 -1
- package/dist/inspector/assets/{issue_detail-DVgu0HJp.js → issue_detail-DrT4ikoJ.js} +1 -1
- package/dist/inspector/assets/{issues-BXg_2DRV.js → issues-EjgDHAP9.js} +1 -1
- package/dist/inspector/assets/{json_viewer-_AIzujT9.js → json_viewer-CYiMb-da.js} +1 -1
- package/dist/inspector/assets/{label-y3zc8beU.js → label-SnZK36YD.js} +1 -1
- package/dist/inspector/assets/{live_relative_time-DbFGRoFl.js → live_relative_time-Cz6uD0Gt.js} +1 -1
- package/dist/inspector/assets/{mobile_filter_popover-BQFzI_Yi.js → mobile_filter_popover-B_m6VwNq.js} +1 -1
- package/dist/inspector/assets/{not_found-oXvkpaH3.js → not_found-DnFt1jGz.js} +1 -1
- package/dist/inspector/assets/{observations-BRpha5_Z.js → observations-iCGEnajZ.js} +1 -1
- package/dist/inspector/assets/{page_shell-Cbrq5cUm.js → page_shell-Cn1X2P68.js} +1 -1
- package/dist/inspector/assets/{pagination-DN4Dgc5j.js → pagination-CAf0CpCi.js} +1 -1
- package/dist/inspector/assets/{peer_detail-CW26phzc.js → peer_detail-D-TsrPmb.js} +1 -1
- package/dist/inspector/assets/{peers-BTwE7WIK.js → peers-CIrAlrYe.js} +1 -1
- package/dist/inspector/assets/{pin_primitive_button-DlQRA0Ly.js → pin_primitive_button-C7-VInsd.js} +1 -1
- package/dist/inspector/assets/{recent_activity-Cdl8j9I4.js → recent_activity-BkKsy8bS.js} +1 -1
- package/dist/inspector/assets/{recent_conversations-bn48T7JT.js → recent_conversations-CgO3k-zb.js} +1 -1
- package/dist/inspector/assets/{recent_conversations-C5S8-fw5.js → recent_conversations-DgVeHt13.js} +1 -1
- package/dist/inspector/assets/{recent_records_feed-DJEa5Qz2.js → recent_records_feed-DsdMzXJY.js} +1 -1
- package/dist/inspector/assets/record_activity-Dwe8CUqj.js +1 -0
- package/dist/inspector/assets/{relationship_detail-Brkr4082.js → relationship_detail-D5O0XvAg.js} +1 -1
- package/dist/inspector/assets/{relationship_panel_groups-nIqbW3ja.js → relationship_panel_groups-C4Ye9XdG.js} +1 -1
- package/dist/inspector/assets/{relationships-xYZfD_Z3.js → relationships-Ctq6oof6.js} +1 -1
- package/dist/inspector/assets/{relationships-CVD5V0hm.js → relationships-DicnNnZA.js} +1 -1
- package/dist/inspector/assets/{sandbox-C2XWUIY2.js → sandbox-BO0DD_0f.js} +1 -1
- package/dist/inspector/assets/{schema_detail-DXq76Qc2.js → schema_detail-innLJRVT.js} +1 -1
- package/dist/inspector/assets/{schemas-hgdiNDSk.js → schemas-AGqfE4h0.js} +1 -1
- package/dist/inspector/assets/{search-BPVGMWVr.js → search-DySMNkgQ.js} +1 -1
- package/dist/inspector/assets/{segmented_control-D82tExkk.js → segmented_control-DAeqcNHU.js} +1 -1
- package/dist/inspector/assets/{select-t5M14cjZ.js → select-Dj5oFvji.js} +1 -1
- package/dist/inspector/assets/{settings-WMfzYD_U.js → settings-DPSc-MsQ.js} +1 -1
- package/dist/inspector/assets/{source_content-CLc_cyFG.js → source_content-Biuq250n.js} +1 -1
- package/dist/inspector/assets/{source_content_open_button-DIoDgQ6W.js → source_content_open_button-BjEDZifP.js} +1 -1
- package/dist/inspector/assets/{source_detail-BiaJBzqF.js → source_detail-ToF80297.js} +1 -1
- package/dist/inspector/assets/{source_link-732z3cAZ.js → source_link-UvbCS8kH.js} +1 -1
- package/dist/inspector/assets/{sources-DCKoEB_r.js → sources-BdAjTWrY.js} +1 -1
- package/dist/inspector/assets/{subscriptions-stYdxhPr.js → subscriptions-BdisK-yb.js} +1 -1
- package/dist/inspector/assets/{switch-CgYsQ1Ot.js → switch-BVOxcgUR.js} +1 -1
- package/dist/inspector/assets/{tabs-Bt8qlpC7.js → tabs-9eXcV6jq.js} +1 -1
- package/dist/inspector/assets/{textarea-CPoAU7QC.js → textarea-d76JXYw-.js} +1 -1
- package/dist/inspector/assets/{timeline-DgIbBfG-.js → timeline-CWLYDyds.js} +1 -1
- package/dist/inspector/assets/{timeline-kqG6i0CM.js → timeline-ChTEisvC.js} +1 -1
- package/dist/inspector/assets/{timeline_event_detail-BfMJg5-T.js → timeline_event_detail-w1-wRXce.js} +1 -1
- package/dist/inspector/assets/{turn_detail-_TLd0aIH.js → turn_detail-CrvvkrfX.js} +1 -1
- package/dist/inspector/assets/{turns-Cenxia98.js → turns-C0TSjy95.js} +1 -1
- package/dist/inspector/assets/{use_agents-D3hZdXLy.js → use_agents-CRv6rDsh.js} +1 -1
- package/dist/inspector/assets/{use_entities-CqX3goTF.js → use_entities-Dxdt9oGZ.js} +1 -1
- package/dist/inspector/assets/use_interpretations-uhU4isO3.js +1 -0
- package/dist/inspector/assets/{use_mutations-iQ8uFWs-.js → use_mutations-lnvzn8c8.js} +1 -1
- package/dist/inspector/assets/{use_peers-Bp97c7Cs.js → use_peers-D1YPXbCo.js} +1 -1
- package/dist/inspector/assets/{use_relationships-COtpsgZE.js → use_relationships-BIacD5VK.js} +1 -1
- package/dist/inspector/assets/{use_stats-Dxhgij09.js → use_stats-pecBajli.js} +1 -1
- package/dist/inspector/assets/{use_timeline-cLYihgCn.js → use_timeline-7rcIc6M4.js} +1 -1
- package/dist/inspector/assets/{use_turns-BhiPeB4p.js → use_turns-C1_j8N2Q.js} +1 -1
- package/dist/inspector/assets/{world_time_event_timeline-C5aU32p5.js → world_time_event_timeline-CBDb4DzY.js} +1 -1
- package/dist/inspector/index.html +2 -2
- package/dist/repositories/sqlite/sqlite_client.d.ts.map +1 -1
- package/dist/repositories/sqlite/sqlite_client.js +8 -0
- package/dist/repositories/sqlite/sqlite_client.js.map +1 -1
- package/dist/scripts/seed_sandbox.js +117 -16
- package/dist/scripts/seed_sandbox.js.map +1 -1
- package/dist/server.d.ts +1 -0
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +222 -83
- package/dist/server.js.map +1 -1
- package/dist/services/bundles/_shared_schemas/interaction.d.ts +11 -0
- package/dist/services/bundles/_shared_schemas/interaction.d.ts.map +1 -0
- package/dist/services/bundles/_shared_schemas/interaction.js +14 -0
- package/dist/services/bundles/_shared_schemas/interaction.js.map +1 -0
- package/dist/services/bundles/_shared_schemas/session_close.d.ts +11 -0
- package/dist/services/bundles/_shared_schemas/session_close.d.ts.map +1 -0
- package/dist/services/bundles/_shared_schemas/session_close.js +14 -0
- package/dist/services/bundles/_shared_schemas/session_close.js.map +1 -0
- package/dist/services/bundles/_shared_schemas/shared_schema.d.ts +24 -0
- package/dist/services/bundles/_shared_schemas/shared_schema.d.ts.map +1 -0
- package/dist/services/bundles/_shared_schemas/shared_schema.js +17 -0
- package/dist/services/bundles/_shared_schemas/shared_schema.js.map +1 -0
- package/dist/services/bundles/activation.d.ts +56 -0
- package/dist/services/bundles/activation.d.ts.map +1 -0
- package/dist/services/bundles/activation.js +112 -0
- package/dist/services/bundles/activation.js.map +1 -0
- package/dist/services/bundles/core/manifest.yaml +29 -0
- package/dist/services/bundles/core_workflows/manifest.yaml +56 -0
- package/dist/services/bundles/core_workflows/skills/close-session/SKILL.md +23 -0
- package/dist/services/bundles/core_workflows/skills/get-context/SKILL.md +23 -0
- package/dist/services/bundles/core_workflows/skills/start-session/SKILL.md +23 -0
- package/dist/services/bundles/enforcement.d.ts +44 -0
- package/dist/services/bundles/enforcement.d.ts.map +1 -0
- package/dist/services/bundles/enforcement.js +60 -0
- package/dist/services/bundles/enforcement.js.map +1 -0
- package/dist/services/bundles/index.d.ts +11 -0
- package/dist/services/bundles/index.d.ts.map +1 -0
- package/dist/services/bundles/index.js +10 -0
- package/dist/services/bundles/index.js.map +1 -0
- package/dist/services/bundles/infrastructure/manifest.yaml +24 -0
- package/dist/services/bundles/loader.d.ts +96 -0
- package/dist/services/bundles/loader.d.ts.map +1 -0
- package/dist/services/bundles/loader.js +206 -0
- package/dist/services/bundles/loader.js.map +1 -0
- package/dist/services/bundles/manifest.d.ts +35 -0
- package/dist/services/bundles/manifest.d.ts.map +1 -0
- package/dist/services/bundles/manifest.js +144 -0
- package/dist/services/bundles/manifest.js.map +1 -0
- package/dist/services/bundles/state_store.d.ts +74 -0
- package/dist/services/bundles/state_store.d.ts.map +1 -0
- package/dist/services/bundles/state_store.js +161 -0
- package/dist/services/bundles/state_store.js.map +1 -0
- package/dist/services/bundles/types.d.ts +86 -0
- package/dist/services/bundles/types.d.ts.map +1 -0
- package/dist/services/bundles/types.js +12 -0
- package/dist/services/bundles/types.js.map +1 -0
- package/dist/services/bundles/use_cases/README.md +29 -0
- package/dist/services/bundles/use_cases/agent_auth.yaml +4 -0
- package/dist/services/bundles/use_cases/cases.yaml +4 -0
- package/dist/services/bundles/use_cases/compliance.yaml +4 -0
- package/dist/services/bundles/use_cases/contracts.yaml +4 -0
- package/dist/services/bundles/use_cases/crm.yaml +4 -0
- package/dist/services/bundles/use_cases/crypto_engineering.yaml +4 -0
- package/dist/services/bundles/use_cases/customer_ops.yaml +4 -0
- package/dist/services/bundles/use_cases/diligence.yaml +4 -0
- package/dist/services/bundles/use_cases/financial_ops.yaml +4 -0
- package/dist/services/bundles/use_cases/government.yaml +4 -0
- package/dist/services/bundles/use_cases/healthcare.yaml +4 -0
- package/dist/services/bundles/use_cases/logistics.yaml +4 -0
- package/dist/services/bundles/use_cases/personal_data.yaml +4 -0
- package/dist/services/bundles/use_cases/portfolio.yaml +4 -0
- package/dist/services/bundles/use_cases/procurement.yaml +4 -0
- package/dist/services/bundles/use_cases/trading.yaml +4 -0
- package/dist/services/canonical_mirror.d.ts +16 -0
- package/dist/services/canonical_mirror.d.ts.map +1 -1
- package/dist/services/canonical_mirror.js.map +1 -1
- package/dist/services/dashboard_stats.d.ts.map +1 -1
- package/dist/services/dashboard_stats.js +9 -7
- package/dist/services/dashboard_stats.js.map +1 -1
- package/dist/services/docs/bundled_nav.d.ts +22 -2
- package/dist/services/docs/bundled_nav.d.ts.map +1 -1
- package/dist/services/docs/bundled_nav.js +39 -3
- package/dist/services/docs/bundled_nav.js.map +1 -1
- package/dist/services/docs/doc_frontmatter.d.ts.map +1 -1
- package/dist/services/docs/doc_frontmatter.js +6 -0
- package/dist/services/docs/doc_frontmatter.js.map +1 -1
- package/dist/services/docs/docs_root.d.ts +32 -0
- package/dist/services/docs/docs_root.d.ts.map +1 -0
- package/dist/services/docs/docs_root.js +44 -0
- package/dist/services/docs/docs_root.js.map +1 -0
- package/dist/services/docs/index.d.ts +2 -0
- package/dist/services/docs/index.d.ts.map +1 -1
- package/dist/services/docs/index.js +3 -4
- package/dist/services/docs/index.js.map +1 -1
- package/dist/services/docs/index_builder.d.ts.map +1 -1
- package/dist/services/docs/index_builder.js +9 -1
- package/dist/services/docs/index_builder.js.map +1 -1
- package/dist/services/docs/render.d.ts.map +1 -1
- package/dist/services/docs/render.js +7 -1
- package/dist/services/docs/render.js.map +1 -1
- package/dist/services/docs/visibility.d.ts +50 -0
- package/dist/services/docs/visibility.d.ts.map +1 -1
- package/dist/services/docs/visibility.js +71 -0
- package/dist/services/docs/visibility.js.map +1 -1
- package/dist/services/entity_queries.d.ts +1 -1
- package/dist/services/entity_queries.d.ts.map +1 -1
- package/dist/services/entity_queries.js +27 -18
- package/dist/services/entity_queries.js.map +1 -1
- package/dist/services/entity_snapshot_at_time.d.ts +48 -0
- package/dist/services/entity_snapshot_at_time.d.ts.map +1 -0
- package/dist/services/entity_snapshot_at_time.js +155 -0
- package/dist/services/entity_snapshot_at_time.js.map +1 -0
- package/dist/services/interpretation.d.ts.map +1 -1
- package/dist/services/interpretation.js +25 -8
- package/dist/services/interpretation.js.map +1 -1
- package/dist/services/mirror_writeback.d.ts +133 -0
- package/dist/services/mirror_writeback.d.ts.map +1 -0
- package/dist/services/mirror_writeback.js +551 -0
- package/dist/services/mirror_writeback.js.map +1 -0
- package/dist/services/raw_storage.d.ts +44 -0
- package/dist/services/raw_storage.d.ts.map +1 -1
- package/dist/services/raw_storage.js +213 -0
- package/dist/services/raw_storage.js.map +1 -1
- package/dist/services/relationships.d.ts +3 -3
- package/dist/services/relationships.d.ts.map +1 -1
- package/dist/services/relationships.js +21 -11
- package/dist/services/relationships.js.map +1 -1
- package/dist/services/root_landing/index.d.ts.map +1 -1
- package/dist/services/root_landing/index.js +9 -2
- package/dist/services/root_landing/index.js.map +1 -1
- package/dist/services/schema_mode.d.ts +38 -0
- package/dist/services/schema_mode.d.ts.map +1 -0
- package/dist/services/schema_mode.js +63 -0
- package/dist/services/schema_mode.js.map +1 -0
- package/dist/services/schema_registry.d.ts +9 -1
- package/dist/services/schema_registry.d.ts.map +1 -1
- package/dist/services/schema_registry.js +8 -3
- package/dist/services/schema_registry.js.map +1 -1
- package/dist/shared/openapi_types.d.ts +6 -0
- package/dist/shared/openapi_types.d.ts.map +1 -1
- package/dist/tool_definitions.d.ts +1 -1
- package/dist/tool_definitions.d.ts.map +1 -1
- package/dist/tool_definitions.js +26 -0
- package/dist/tool_definitions.js.map +1 -1
- package/docs/developer/mcp/instructions.md +1 -0
- package/openapi.yaml +9 -0
- package/package.json +6 -2
- package/dist/inspector/assets/index-udxoE-9M.css +0 -1
- package/dist/inspector/assets/interpretations-BQYsmxWF.js +0 -1
- package/dist/inspector/assets/record_activity-HFiOItEX.js +0 -1
- package/dist/inspector/assets/use_interpretations-Dan6da1y.js +0 -1
package/README.md
CHANGED
|
@@ -1,117 +1,100 @@
|
|
|
1
1
|
# Neotoma
|
|
2
2
|
|
|
3
|
-
|
|
3
|
+
Neotoma is a deterministic, versioned state layer for AI agents. It ingests sources into immutable observations and computes reproducible entity snapshots with full provenance, exposed over an MCP server, a REST API, a CLI, and a bundled web Inspector.
|
|
4
4
|
|
|
5
|
-
|
|
5
|
+
It is built for developers building and operating AI agents who need a persistent, deterministic, auditable memory layer shared across tools. The same engine serves two further groups: individuals running a personal cross-assistant memory on a single-user install, and operators running a shared, multi-user instance with agent access control. Agents store structured records (contacts, tasks, transactions, decisions, events, and any other type) once and read them back across every tool and session, and the same observations always reduce to the same state.
|
|
6
6
|
|
|
7
|
-
**[neotoma.io](https://neotoma.io)** · **[
|
|
7
|
+
**[neotoma.io](https://neotoma.io)** · **[Install](https://neotoma.io/install)** · **[Documentation](https://neotoma.io/docs)** (also served in-app at `/docs`)
|
|
8
8
|
|
|
9
|
-
##
|
|
9
|
+
## What Neotoma is
|
|
10
10
|
|
|
11
|
-
|
|
11
|
+
Neotoma is a state layer, not a chat memory or a vector cache. It records immutable observations from your sources, resolves them into entities, and computes a current snapshot for each entity by reducing its observations in a deterministic order. Nothing is overwritten. Corrections and reinterpretations add new observations; the prior history stays intact and replayable.
|
|
12
12
|
|
|
13
|
-
|
|
14
|
-
- Facts conflict across tools — two agents store different versions of the same person
|
|
15
|
-
- Decisions execute without a reproducible trail — you can't trace why your agent acted
|
|
16
|
-
- Corrections don't stick — you fix something in Claude and it's wrong again in Cursor
|
|
13
|
+
Three properties hold across every interface:
|
|
17
14
|
|
|
18
|
-
|
|
15
|
+
- **Deterministic.** Entity IDs, observation IDs, event IDs, and reducer output are all derived from the inputs by hashing. The same observations produce the same snapshot regardless of order or timing. No `Math.random()` or wall-clock values enter the data path.
|
|
16
|
+
- **Immutable and auditable.** Sources and observations are append-only. Every field in a snapshot traces back to the observation that set it, and through that observation to its source, interpretation, agent, and timestamp.
|
|
17
|
+
- **Self-hosted and portable.** The engine is embedded SQLite plus content-addressed file storage under a directory you control, with optional AES-256-GCM at-rest encryption. Nothing is used for training, and you can export everything. In single-user mode the data stays entirely local; multi-user, peer-sync, and hosted modes are opt-in (see Deployment modes).
|
|
19
18
|
|
|
20
|
-
##
|
|
21
|
-
|
|
22
|
-
Neotoma is a deterministic state layer for AI agents. It stores structured records — contacts, tasks, transactions, decisions, events, contracts — with versioned history and full provenance. Every change creates a new version. Nothing is overwritten. Every state can be replayed from the observation log.
|
|
23
|
-
|
|
24
|
-
Not retrieval memory (RAG, vector search, semantic lookup). Neotoma enforces deterministic state evolution: same observations always produce the same entity state, regardless of when or in what order they are processed.
|
|
25
|
-
|
|
26
|
-
The **Inspector** — Neotoma's visual control plane for browsing the entity graph, timeline, schema editor, and agent attribution — is bundled and served at `/inspector` by default when the server starts. No separate build or configuration required. Override with `NEOTOMA_INSPECTOR_DISABLE`, `NEOTOMA_PUBLIC_INSPECTOR_URL`, `NEOTOMA_INSPECTOR_STATIC_DIR`, or `NEOTOMA_INSPECTOR_BASE_PATH` (see `.env.example`).
|
|
27
|
-
|
|
28
|
-
## Architecture
|
|
19
|
+
## How it works
|
|
29
20
|
|
|
30
21
|
```mermaid
|
|
31
22
|
graph LR
|
|
32
|
-
Sources["Sources (files, messages,
|
|
33
|
-
Obs -->
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
Graph <--> MCP[MCP
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
MCP --> OpenClaw
|
|
41
|
-
MCP --> IronClaw
|
|
23
|
+
Sources["Sources (files, messages, API payloads)"] --> Obs[Observations]
|
|
24
|
+
Obs --> Res[Entity resolution]
|
|
25
|
+
Res --> Snap["Entity snapshots (reduced, versioned)"]
|
|
26
|
+
Snap --> Graph["Graph + timeline"]
|
|
27
|
+
Graph <--> MCP[MCP]
|
|
28
|
+
Graph <--> REST[REST API]
|
|
29
|
+
Graph <--> CLI[CLI]
|
|
30
|
+
Graph <--> Inspector[Inspector]
|
|
42
31
|
```
|
|
43
32
|
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
33
|
+
1. **Source.** Raw input is stored once, deduplicated by SHA-256 content hash, with a deterministic source ID.
|
|
34
|
+
2. **Interpretation.** Structured fields are extracted from the source (directly for structured input, or via an LLM interpretation run whose model, temperature, and prompt are recorded).
|
|
35
|
+
3. **Observation.** Each extracted fact becomes an immutable observation with a hash-based ID, linked to its source and interpretation.
|
|
36
|
+
4. **Entity resolution.** A deterministic canonical name (driven by the type's schema) maps the observation to an entity, creating it if needed.
|
|
37
|
+
5. **Snapshot.** All observations for an entity are reduced into a current snapshot using per-field merge policies, with a stable order (`observed_at DESC, id ASC`) and a field-to-observation provenance map.
|
|
38
|
+
6. **Timeline and relationships.** Date fields emit deterministic timeline events; typed relationships connect entities into a graph.
|
|
48
39
|
|
|
49
|
-
|
|
40
|
+
## What you can do with it
|
|
50
41
|
|
|
51
|
-
|
|
52
|
-
| --------------------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
53
|
-
| **Privacy-first** | Your data stays local. Never used for training. Nothing is stored unless you approve it; no background scanning or implicit captures. Full export and deletion control. |
|
|
54
|
-
| **Deterministic** | Same input always produces same output. Schema-first extraction, hash-based entity IDs, full provenance. No silent mutation. |
|
|
55
|
-
| **Immutable and verifiable** | Append-only observations; history cannot be rewritten. Hash-based entity IDs are tamper-evident. Full provenance chain from any state to its source. |
|
|
56
|
-
| **Cross-platform** | One memory graph across Claude, ChatGPT, Cursor, Windsurf, VS Code, Continue, Letta, OpenClaw, IronClaw, Codex, and CLI. MCP-based access. No platform lock-in. Works alongside native memory. |
|
|
42
|
+
Neotoma exposes roughly 60 MCP tools and about 100 REST endpoints, all backed by the same operations. The capability surface includes:
|
|
57
43
|
|
|
58
|
-
|
|
44
|
+
**Ingest and store.** Store structured records or raw files in one call. File ingestion extracts text from PDF (with a first-page image fallback), CSV (with adaptive chunking for large files), Parquet, JSON, and plain text; images and audio are stored as raw sources. Writes are idempotent through an `idempotency_key`.
|
|
59
45
|
|
|
60
|
-
|
|
46
|
+
**Resolve, retrieve, and search.** Look up entities by identifier (name, email, and similar), resolve identity from multiple signals with confidence scoring, list observations, retrieve a field's provenance chain, traverse the relationship graph N hops, and pull a full graph neighborhood. When an embedding key is configured, semantic vector search runs over entity snapshots (stored locally in sqlite-vec); keyword filtering works without it.
|
|
61
47
|
|
|
62
|
-
|
|
48
|
+
**Correct and evolve.** Submit corrections that always win in the snapshot (they are high-priority observations, never edits). Schemas are inferred from your data, recommended from recurring unknown fields, and can be auto-enhanced or updated incrementally with versioning. New entity types work without any code change.
|
|
63
49
|
|
|
64
|
-
|
|
65
|
-
| ------------------------------------ | --------- | --------------- | ---------- | ------------- | ------------- |
|
|
66
|
-
| Deterministic state evolution | ✗ | ✗ | ✗ | ✗ | ✓ |
|
|
67
|
-
| Versioned history | ✗ | ✗ | ⚠ manual | ✗ | ✓ |
|
|
68
|
-
| Replayable timeline | ✗ | ✗ | ✗ | ✗ | ✓ |
|
|
69
|
-
| Auditable change log | ✗ | ✗ | ⚠ partial | ✗ | ✓ |
|
|
70
|
-
| Schema constraints | ✗ | ✗ | ✗ | ⚠ partial | ✓ |
|
|
71
|
-
| Silent mutation risk | ⚠ common | ⚠ common | ⚠ common | ⚠ common | prevented |
|
|
72
|
-
| Conflicting facts risk | ⚠ common | ⚠ common | ⚠ possible | ⚠ common | prevented |
|
|
73
|
-
| Reproducible state reconstruction | ✗ | ✗ | ✗ | ✗ | ✓ |
|
|
74
|
-
| Human inspectability (diffs/lineage) | ⚠ partial | ⚠ partial | ⚠ partial | ⚠ partial | ✓ |
|
|
75
|
-
| Zero-setup onboarding | ✓ | ✗ | ✗ | ✗ | ✗ |
|
|
76
|
-
| Semantic similarity search | ✗ | ✓ | ✗ | ✗ | ✓ |
|
|
77
|
-
| Direct human editability | ✗ | ✗ | ✓ | ✗ | ✗ |
|
|
78
|
-
| Strong consistency | ✗ | ✗ | ✗ | ✓ | ✓ |
|
|
79
|
-
| Transactional writes | ✗ | ✗ | ✗ | ✓ | ✓ |
|
|
50
|
+
**Relate and sequence.** Create typed relationships (for example `PART_OF`, `DEPENDS_ON`, `REFERS_TO`, `DUPLICATE_OF`), query timeline events across types and date ranges, and view a deterministic, replayable history.
|
|
80
51
|
|
|
81
|
-
**
|
|
52
|
+
**Manage the entity lifecycle.** Merge duplicates, split an entity by predicate, soft-delete and restore, list potential duplicates, and run GDPR-oriented deletion. Merge and split are transactional and audited.
|
|
82
53
|
|
|
83
|
-
|
|
54
|
+
**Control multi-agent access.** Every write is attributed to an agent identity (verified key thumbprint, JWT subject, or client name). Agent grants express least-privilege capabilities (which operations on which entity types). Optional hardware-attested authentication (Apple Secure Enclave, TPM 2.0, WebAuthn/FIDO2, YubiKey, Windows TBS) raises an agent's trust tier. Guest access tokens grant scoped read-back without full credentials.
|
|
84
55
|
|
|
85
|
-
|
|
56
|
+
**Federate, sync, and intake.** Register peer instances and sync entities between them with configurable scope and conflict resolution (last-write-wins, source priority, or manual). Subscribe to entity or event changes over webhooks (HMAC-signed) or Server-Sent Events. Accept guest entity submissions, mirror GitHub issues into conversation threads, and mirror your data to deterministic, git-trackable canonical Markdown.
|
|
86
57
|
|
|
87
|
-
|
|
58
|
+
**Export and own your data.** Produce a bounded `MEMORY.md` summary, a JSON snapshot export with full provenance and attribution metadata, or a complete Markdown mirror of every entity, relationship, source, and timeline day.
|
|
88
59
|
|
|
89
|
-
|
|
90
|
-
Read https://neotoma.io/evaluate and tell me whether Neotoma fits my workflow.
|
|
91
|
-
```
|
|
60
|
+
## Interfaces
|
|
92
61
|
|
|
93
|
-
The
|
|
62
|
+
The same state and the same guarantees are reachable four ways. All map to one OpenAPI-backed contract.
|
|
94
63
|
|
|
95
|
-
|
|
64
|
+
| Interface | What it is | Transports |
|
|
65
|
+
| --- | --- | --- |
|
|
66
|
+
| **MCP server** | Model Context Protocol tools for agents to store and retrieve state | stdio, WebSocket, streamable HTTP |
|
|
67
|
+
| **REST API** | Full HTTP interface for application integration | HTTP/HTTPS, OAuth or key-based auth |
|
|
68
|
+
| **CLI** | The `neotoma` command, around 170 commands for setup, scripting, and direct access | local process |
|
|
69
|
+
| **Inspector** | Bundled web app for browsing and managing the store | served by the API server |
|
|
96
70
|
|
|
97
|
-
|
|
71
|
+
### The Inspector
|
|
98
72
|
|
|
99
|
-
|
|
100
|
-
Read https://neotoma.io/install and carry me through the install-first Neotoma flow. Use `neotoma` commands for status and setup. If Neotoma is already installed, start with `neotoma status --json`; otherwise install it and run `neotoma setup --tool <my_tool> --yes`. Avoid ad-hoc shell introspection or arbitrary repo scripts. Then activate Neotoma with my data and configure my current tool for robust ongoing use.
|
|
101
|
-
```
|
|
73
|
+
The Inspector is a single-page web app bundled into the build and served by the API server (at `/` for browsers, no separate deployment). It is an operator console for the data store, with screens for:
|
|
102
74
|
|
|
103
|
-
|
|
75
|
+
- Entities (browse, detail, correct fields, view history and provenance, per-entity timeline)
|
|
76
|
+
- Observations, sources, interpretations, and recent activity
|
|
77
|
+
- An interactive knowledge-graph explorer
|
|
78
|
+
- Relationships and the global timeline
|
|
79
|
+
- Schemas and entity types (browse, register, inspect merge policies)
|
|
80
|
+
- Agents, agent grants (create, suspend, revoke, restore), peers, and subscriptions
|
|
81
|
+
- Issues, conversations and turns (the agent audit trail), access policies, and compliance
|
|
82
|
+
- Search, analytics and usage, settings (including dark mode), a sandbox surface, and an in-app documentation browser at `/docs`
|
|
83
|
+
|
|
84
|
+
## Install
|
|
104
85
|
|
|
105
86
|
```bash
|
|
106
87
|
npm install -g neotoma
|
|
107
88
|
neotoma init
|
|
108
|
-
neotoma setup --tool <cursor|claude-code|codex
|
|
89
|
+
neotoma setup --tool <cursor|claude-code|codex|...> --yes
|
|
109
90
|
neotoma mcp config
|
|
110
91
|
```
|
|
111
92
|
|
|
112
|
-
|
|
93
|
+
Prerequisites: Node.js 20.x (see `.nvmrc`) and npm 9+. No `.env` is required for local storage. The `neotoma doctor` command checks your environment, database, and security configuration.
|
|
94
|
+
|
|
95
|
+
The CLI also handles MCP config scanning and sync, harness configuration, lifecycle hook installation, peers and access management, plans, transcript and onboarding import, server and database management, memory export, and the canonical mirror. See the [CLI reference](docs/developer/cli_reference.md).
|
|
113
96
|
|
|
114
|
-
|
|
97
|
+
### Example
|
|
115
98
|
|
|
116
99
|
```bash
|
|
117
100
|
neotoma store --json='[{"entity_type":"task","title":"Submit expense report","status":"open"}]'
|
|
@@ -119,117 +102,94 @@ neotoma entities list --type task
|
|
|
119
102
|
neotoma upload ./invoice.pdf
|
|
120
103
|
```
|
|
121
104
|
|
|
122
|
-
|
|
105
|
+
Agents perform the same operations through MCP tool calls such as `store`, `retrieve_entities`, and `retrieve_entity_by_identifier`. Each MCP call logs its equivalent CLI invocation.
|
|
123
106
|
|
|
124
|
-
##
|
|
107
|
+
## Connect your tools
|
|
125
108
|
|
|
126
|
-
|
|
109
|
+
Neotoma works across MCP-capable hosts. Most are a single setup command; some compose MCP with lifecycle hooks for guaranteed capture.
|
|
127
110
|
|
|
128
|
-
|
|
|
129
|
-
|
|
130
|
-
|
|
|
131
|
-
|
|
|
132
|
-
|
|
|
133
|
-
|
|
|
134
|
-
|
|
|
135
|
-
|
|
|
136
|
-
|
|
|
137
|
-
|
|
|
138
|
-
| **store-data** | Generic: persist any structured data or file with provenance. |
|
|
139
|
-
| **query-memory** | Generic: retrieve what your agent knows about anything. |
|
|
140
|
-
| **recover-sqlite-database** | Troubleshooting: check integrity and recover corrupted Neotoma database. |
|
|
141
|
-
|
|
142
|
-
[Full skill documentation →](https://neotoma.io/skills) | [Skill strategy →](docs/skills/skill_strategy.md)
|
|
143
|
-
|
|
144
|
-
## Interfaces
|
|
111
|
+
| Host | Modes | Install |
|
|
112
|
+
| --- | --- | --- |
|
|
113
|
+
| Cursor | MCP + hooks | `neotoma setup --tool cursor --yes` |
|
|
114
|
+
| Claude Code | MCP + hooks | `neotoma setup --tool claude-code --yes` |
|
|
115
|
+
| Claude Desktop | MCP (local + remote) | `neotoma setup --tool claude-desktop --yes` |
|
|
116
|
+
| Codex CLI | MCP + hooks | `neotoma setup --tool codex --yes` |
|
|
117
|
+
| OpenClaw | Native plugin + MCP | `neotoma setup --tool openclaw --yes` |
|
|
118
|
+
| ChatGPT | MCP App + Custom GPT Actions | Manual HTTPS + OAuth |
|
|
119
|
+
| Windsurf, Continue, VS Code (Copilot) | MCP | `neotoma setup --tool <host> --yes` |
|
|
120
|
+
| OpenCode | hooks | plugin install |
|
|
145
121
|
|
|
146
|
-
|
|
122
|
+
Full matrix: [Integrations](docs/integrations/matrix.md).
|
|
147
123
|
|
|
148
|
-
|
|
149
|
-
| -------------- | ------------------------------------------------------------------------------------------------------------------------------ |
|
|
150
|
-
| **REST API** | Full HTTP interface for application integration. Entities, relationships, observations, schema, timeline, and version history. |
|
|
151
|
-
| **MCP Server** | Model Context Protocol for Claude, ChatGPT, Cursor, Windsurf, VS Code, Continue, Letta, OpenClaw, IronClaw, Codex, and more. Agents store and retrieve state through structured tool calls. |
|
|
152
|
-
| **CLI** | Command-line for scripting and direct access. Inspect entities, replay timelines, and manage state from the terminal. |
|
|
124
|
+
**Hooks** are the reliability floor (guaranteed capture, retrieval injection, compaction awareness) and MCP is the quality ceiling (agent-driven structured writes). Per-harness packages live under `packages/`: [`claude-code-plugin`](packages/claude-code-plugin), [`cursor-hooks`](packages/cursor-hooks), [`opencode-plugin`](packages/opencode-plugin), [`codex-hooks`](packages/codex-hooks), [`claude-agent-sdk-adapter`](packages/claude-agent-sdk-adapter).
|
|
153
125
|
|
|
154
|
-
|
|
126
|
+
**Client SDKs:** [`@neotoma/client`](packages/client) (TypeScript) and [`neotoma-client`](packages/client-python) (Python).
|
|
155
127
|
|
|
156
|
-
|
|
128
|
+
**OpenClaw native plugin:** Neotoma ships as a native OpenClaw plugin with `kind: "memory"`, so it can fill the dedicated memory slot with all MCP tools registered as agent tools.
|
|
157
129
|
|
|
158
|
-
|
|
130
|
+
## Skills
|
|
159
131
|
|
|
160
|
-
|
|
161
|
-
| ---- | ----------------- | ------------------------------- | ----------------- |
|
|
162
|
-
| **Operating** | Running AI tools across sessions and contexts | Re-prompting, context re-establishment, manual cross-tool sync | Attention, continuity, trust in your tools |
|
|
163
|
-
| **Building** | Shipping agents and pipelines | Prompt workarounds, dedup hacks, memory regression fixes | Product velocity, shipping confidence |
|
|
164
|
-
| **Debugging** | Tracing state drift and reproducing failures | Writing glue (checkpoint logic, custom diffing, state serialization) | Debugging speed, platform design time |
|
|
132
|
+
Skills are guided workflows that teach an agent to import, extract, and persist data. They ship with the npm package and are installed by `neotoma setup`.
|
|
165
133
|
|
|
166
|
-
|
|
134
|
+
| Skill | Description |
|
|
135
|
+
| --- | --- |
|
|
136
|
+
| **ensure-neotoma** | Install Neotoma, configure MCP, verify connectivity. Prerequisite for the rest. |
|
|
137
|
+
| **remember-email** | Import email, extract contacts, tasks, events, and transactions. |
|
|
138
|
+
| **remember-conversations** | Import ChatGPT/Claude/Slack exports, reconstruct a decision timeline. |
|
|
139
|
+
| **remember-meetings** | Ingest transcripts, extract decisions and action items. |
|
|
140
|
+
| **remember-finances** | Import statements, receipts, and invoices as structured transactions. |
|
|
141
|
+
| **remember-contacts** | Consolidate contacts from email, calendar, chat, vCards. |
|
|
142
|
+
| **remember-calendar** | Import events and commitments. |
|
|
143
|
+
| **remember-codebase** | Repository integration: inventory, decisions, MCP wiring. |
|
|
144
|
+
| **store-data** / **query-memory** | Generic persist and retrieve workflows. |
|
|
145
|
+
| **recover-sqlite-database** | Check integrity and recover a corrupted database. |
|
|
167
146
|
|
|
168
147
|
## Record types
|
|
169
148
|
|
|
170
|
-
Neotoma stores typed entities with versioned history and provenance.
|
|
171
|
-
|
|
172
|
-
| Type | What it stores | Examples |
|
|
173
|
-
| ---- | -------------- | -------- |
|
|
174
|
-
| **[Contacts](https://neotoma.io/types/contacts)** | People, companies, roles, relationships | `contact`, `company`, `account` |
|
|
175
|
-
| **[Tasks](https://neotoma.io/types/tasks)** | Obligations, deadlines, habits, goals | `task`, `habit`, `goal` |
|
|
176
|
-
| **[Transactions](https://neotoma.io/types/transactions)** | Payments, receipts, invoices, ledger entries | `transaction`, `invoice`, `receipt` |
|
|
177
|
-
| **[Contracts](https://neotoma.io/types/contracts)** | Agreements, clauses, amendments | `contract`, `clause`, `amendment` |
|
|
178
|
-
| **[Decisions](https://neotoma.io/types/decisions)** | Choices, rationale, audit trails | `decision`, `assessment`, `review` |
|
|
179
|
-
| **[Events](https://neotoma.io/types/events)** | Meetings, milestones, outcomes | `event`, `meeting`, `milestone` |
|
|
180
|
-
|
|
181
|
-
Schema is flexible — store any entity type with whatever fields the message implies. The system infers and evolves schemas automatically.
|
|
149
|
+
Neotoma stores typed entities with versioned history and provenance. The schema is flexible: store any entity type with whatever fields the data implies, and the system infers and evolves the schema.
|
|
182
150
|
|
|
183
|
-
|
|
151
|
+
| Type | Stores | Examples |
|
|
152
|
+
| --- | --- | --- |
|
|
153
|
+
| **Contacts** | People, companies, roles | `contact`, `company`, `account` |
|
|
154
|
+
| **Tasks** | Obligations, deadlines, goals | `task`, `habit`, `goal` |
|
|
155
|
+
| **Transactions** | Payments, receipts, invoices | `transaction`, `invoice`, `receipt` |
|
|
156
|
+
| **Contracts** | Agreements, clauses, amendments | `contract`, `clause`, `amendment` |
|
|
157
|
+
| **Decisions** | Choices, rationale, reviews | `decision`, `assessment`, `review` |
|
|
158
|
+
| **Events** | Meetings, milestones, outcomes | `event`, `meeting`, `milestone` |
|
|
184
159
|
|
|
185
|
-
|
|
160
|
+
## Storage, privacy, and security
|
|
186
161
|
|
|
187
|
-
|
|
162
|
+
- **Storage:** Local SQLite (`better-sqlite3`, WAL mode) plus content-addressed file storage, under `NEOTOMA_DATA_DIR`. Separate dev and prod profiles. Semantic search uses sqlite-vec locally.
|
|
163
|
+
- **Privacy:** Your data is never used for training, and logs and event payloads carry IDs, not PII. In single-user mode the data stays entirely local; once you enable MCP OAuth, peer sync, or a hosted multi-user instance, data is shared per those configurations rather than staying purely local (see Deployment modes).
|
|
164
|
+
- **Encryption:** Optional AES-256-GCM column encryption of sensitive content and metadata, keyed by a key file or BIP-39 mnemonic. Some tables (for example the event log) are not yet column-encrypted; pair with an encrypted volume for full coverage. See [architecture](docs/architecture/architecture.md).
|
|
165
|
+
- **Auth:** Local auth for single-user installs, MCP OAuth for hosted use, optional hardware attestation for agents, and explicit per-operation access controls. Run `neotoma doctor` to verify your setup. See [Auth](docs/subsystems/auth.md) and [Privacy](docs/subsystems/privacy.md).
|
|
188
166
|
|
|
189
|
-
|
|
190
|
-
- **Explicit, inspectable state mutations.** Every change is a named operation with visible inputs. State is reconstructable from the audit trail.
|
|
191
|
-
- **Auditable operations.** Full provenance. CLI and MCP map to the same underlying contract.
|
|
192
|
-
- **Same contract for CLI and MCP.** Both use the same OpenAPI-backed operations.
|
|
167
|
+
## Deployment modes
|
|
193
168
|
|
|
194
|
-
|
|
169
|
+
The same SQLite-backed engine runs in two modes:
|
|
195
170
|
|
|
196
|
-
-
|
|
197
|
-
-
|
|
198
|
-
- Long-term replay compatibility
|
|
199
|
-
- Backward compatibility
|
|
171
|
+
- **Local single-user.** Run it on your machine for your own cross-assistant memory. Local auth (or key-based auth when encryption is enabled), data stays local, no network exposure required.
|
|
172
|
+
- **Hosted multi-user.** Run a shared instance with MCP OAuth, per-agent hardware-attested identity (AAuth) and capability grants, guest submission tokens, peer federation, and a sandbox demo user. Deploy targets include Docker and Fly. Tenancy is enforced by `user_id` scoping over the same local SQLite engine.
|
|
200
173
|
|
|
201
|
-
|
|
174
|
+
The "stays local" and privacy claims above apply to the local single-user mode. Hosted, OAuth, and peer-sync modes share data per their configuration.
|
|
202
175
|
|
|
203
|
-
##
|
|
176
|
+
## Who this is for
|
|
204
177
|
|
|
205
|
-
Neotoma
|
|
178
|
+
Neotoma is primarily for developers building and operating AI agents who need a persistent, deterministic, auditable memory layer shared across tools. The product ships as an MCP server and REST API with drop-in hook packages (Claude Code, Cursor, Codex, OpenCode), a Claude Agent SDK adapter, and TypeScript and Python clients. Its core value (versioned observations, deterministic snapshots, field-level provenance, idempotency, corrections-win) is memory-engine infrastructure for agent loops, not an end-user app.
|
|
206
179
|
|
|
207
|
-
|
|
208
|
-
- **Authorization:** Local data isolation and explicit operation-level access controls.
|
|
209
|
-
- **Data protection:** User-controlled data with full export and deletion control. Never used for training. Optional at-rest encryption: AES-256-GCM column encryption of the sensitive content/metadata columns when enabled with a key file or mnemonic (some tables, e.g. the event log and embeddings, are not yet column-encrypted — pair with an encrypted volume for full coverage). See [architecture § 7.2](docs/architecture/architecture.md).
|
|
210
|
-
- **Verify your setup:** Run `npm run doctor` for environment, database, and security checks. See [Auth](docs/subsystems/auth.md), [Privacy](docs/subsystems/privacy.md), [Compliance](docs/legal/compliance.md).
|
|
180
|
+
Two further audiences follow from the same code: individuals running a personal cross-assistant memory (the built-in types are personal-information shaped, and the single-user SQLite plus Inspector path serves one person across assistants), and operators of a shared or hosted instance (OAuth, hardware-attested agent identity, per-agent grants, guest submission, peer federation, and Docker or Fly deploy targets).
|
|
211
181
|
|
|
212
|
-
|
|
182
|
+
It is not aimed at casual note-taking, PKM/Obsidian-style human-driven knowledge bases, or users who need a zero-install hosted product (Neotoma requires npm and the CLI today).
|
|
213
183
|
|
|
214
|
-
|
|
184
|
+
Full profile: [ICP from functionality](docs/icp/icp_from_functionality.md).
|
|
215
185
|
|
|
216
|
-
|
|
217
|
-
npm run dev # MCP server (stdio)
|
|
218
|
-
npm run dev:mcp:dev-shim # stable stdio shim for MCP source iteration
|
|
219
|
-
npm run dev:ui # Frontend
|
|
220
|
-
npm run dev:server # API only (MCP at /mcp)
|
|
221
|
-
npm run dev:full # API + UI + build watch
|
|
222
|
-
```
|
|
186
|
+
## Status
|
|
223
187
|
|
|
224
|
-
**
|
|
188
|
+
**Version:** v0.17.0 · **License:** MIT · **Storage:** local-only (SQLite + local files).
|
|
225
189
|
|
|
226
|
-
|
|
227
|
-
npm run cli # Run via npm (no global install)
|
|
228
|
-
npm run cli:dev # Dev mode (tsx; picks up source changes)
|
|
229
|
-
npm run setup:cli # Build and link so `neotoma` is available globally
|
|
230
|
-
```
|
|
190
|
+
Neotoma is in developer preview and used daily in real agent workflows. The core guarantees (deterministic state, versioned history, append-only log, full provenance, same contract across CLI and MCP) are stable. Schemas, extraction across versions, long-term replay compatibility, and backward compatibility are not yet guaranteed. Expect breaking changes.
|
|
231
191
|
|
|
232
|
-
|
|
192
|
+
## Development
|
|
233
193
|
|
|
234
194
|
```bash
|
|
235
195
|
git clone https://github.com/markmhendrickson/neotoma.git
|
|
@@ -238,109 +198,28 @@ npm install
|
|
|
238
198
|
npm test
|
|
239
199
|
```
|
|
240
200
|
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
## Using with AI tools (MCP)
|
|
244
|
-
|
|
245
|
-
Neotoma exposes state via MCP. Local storage only in preview. Local built-in auth.
|
|
246
|
-
|
|
247
|
-
**Full compatibility matrix:** [Integrations](docs/integrations/matrix.md) · [neotoma.io/integrations](https://neotoma.io/integrations)
|
|
248
|
-
|
|
249
|
-
| Host | Modes | Install | Setup guide |
|
|
250
|
-
| --- | --- | --- | --- |
|
|
251
|
-
| Cursor | MCP + hooks | `neotoma setup --tool cursor --yes` | [neotoma-with-cursor](https://neotoma.io/neotoma-with-cursor) |
|
|
252
|
-
| Claude Code | MCP + hooks | `neotoma setup --tool claude-code --yes` | [neotoma-with-claude-code](https://neotoma.io/neotoma-with-claude-code) |
|
|
253
|
-
| Claude Desktop | MCP (local + remote) | `neotoma setup --tool claude-desktop --yes` | [neotoma-with-claude](https://neotoma.io/neotoma-with-claude) |
|
|
254
|
-
| Claude Agent SDK | hooks | adapter install | [hooks/claude_agent_sdk.md](docs/integrations/hooks/claude_agent_sdk.md) |
|
|
255
|
-
| ChatGPT | MCP App + Custom GPT Actions | Manual HTTPS + OAuth | [neotoma-with-chatgpt](https://neotoma.io/neotoma-with-chatgpt) |
|
|
256
|
-
| Codex CLI | MCP + hooks | `neotoma setup --tool codex --yes` | [neotoma-with-codex](https://neotoma.io/neotoma-with-codex) |
|
|
257
|
-
| OpenClaw | Native plugin + MCP | `neotoma setup --tool openclaw --yes` | [neotoma-with-openclaw](https://neotoma.io/neotoma-with-openclaw) |
|
|
258
|
-
| IronClaw | MCP | `neotoma setup --tool ironclaw --yes` | [neotoma-with-ironclaw](https://neotoma.io/neotoma-with-ironclaw) |
|
|
259
|
-
| OpenCode | hooks | plugin install | [hooks/opencode.md](docs/integrations/hooks/opencode.md) |
|
|
260
|
-
| Windsurf | MCP | `neotoma setup --tool windsurf --yes` | [neotoma-with-windsurf](https://neotoma.io/neotoma-with-windsurf) |
|
|
261
|
-
| Continue | MCP | `neotoma setup --tool continue --yes` | [neotoma-with-continue](https://neotoma.io/neotoma-with-continue) |
|
|
262
|
-
| VS Code (Copilot Chat) | MCP | `neotoma setup --tool vscode --yes` | [neotoma-with-vscode](https://neotoma.io/neotoma-with-vscode) |
|
|
263
|
-
| Letta | MCP (streamable HTTP, SSE, stdio) | Manual SDK setup | [neotoma-with-letta](https://neotoma.io/neotoma-with-letta) |
|
|
264
|
-
|
|
265
|
-
Shared client libraries: [`@neotoma/client`](packages/client) (TypeScript), [`neotoma-client`](packages/client-python) (Python). Not yet supported: LangGraph, CrewAI — see [Integrations roadmap](docs/integrations/matrix.md#not-yet-supported-roadmap).
|
|
266
|
-
|
|
267
|
-
For local source iteration, use the stable dev shim (`scripts/run_neotoma_mcp_stdio_dev_shim.sh`) or signed shim (`scripts/run_neotoma_mcp_signed_stdio_dev_shim.sh`) instead of pointing installed MCP clients at a `tsx watch` stdio process. `neotoma mcp config` defaults to **`b`** for low-friction local stdio setup; use **`a`** for signed + AAuth HTTP `/mcp` proxy entries when the Neotoma API is running, **`c`** for direct stdio, or **`d`** when both MCP entries should target prod.
|
|
268
|
-
|
|
269
|
-
**Agent behavior contract:** Store first, retrieve before storing, extract entities from user input, create tasks for commitments, and attach bounded host context such as repository name/root scope when available. Full instructions: [MCP instructions](docs/developer/mcp/instructions.md) and [CLI agent instructions](docs/developer/cli_agent_instructions.md).
|
|
270
|
-
|
|
271
|
-
**Representative actions:** `store`, `retrieve_entities`, `retrieve_entity_snapshot`, `merge_entities`, `list_observations`, `create_relationship`, `list_relationships`, `list_timeline_events`, `retrieve_graph_neighborhood`. Full list: [MCP spec](docs/specs/MCP_SPEC.md).
|
|
272
|
-
|
|
273
|
-
### Hooks composition
|
|
274
|
-
|
|
275
|
-
Hooks integrate with harnesses that expose lifecycle events. Hooks and MCP compose: hooks are the reliability floor (guaranteed capture, retrieval injection, compaction awareness, persistence safety net), and MCP remains the quality ceiling (agent-driven structured writes). Per-harness hooks packages: [`claude-code-plugin`](packages/claude-code-plugin), [`cursor-hooks`](packages/cursor-hooks), [`opencode-plugin`](packages/opencode-plugin), [`codex-hooks`](packages/codex-hooks), [`claude-agent-sdk-adapter`](packages/claude-agent-sdk-adapter). Per-harness setup guides in [`docs/integrations/hooks/`](docs/integrations/hooks/).
|
|
276
|
-
|
|
277
|
-
### OpenClaw native plugin
|
|
278
|
-
|
|
279
|
-
Neotoma ships as a native OpenClaw plugin with `kind: "memory"`, so it can fill the dedicated memory slot. All 30+ MCP tools are registered as agent tools.
|
|
201
|
+
Common commands:
|
|
280
202
|
|
|
281
203
|
```bash
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
slots: { memory: "neotoma" },
|
|
291
|
-
entries: {
|
|
292
|
-
neotoma: {
|
|
293
|
-
enabled: true,
|
|
294
|
-
config: {
|
|
295
|
-
dataDir: "~/.local/share/neotoma",
|
|
296
|
-
environment: "production"
|
|
297
|
-
}
|
|
298
|
-
}
|
|
299
|
-
}
|
|
300
|
-
}
|
|
301
|
-
}
|
|
204
|
+
npm run dev # MCP server (stdio)
|
|
205
|
+
npm run dev:full # API + UI + build watch
|
|
206
|
+
npm run cli:dev # CLI in dev mode (tsx)
|
|
207
|
+
npm run type-check # TypeScript
|
|
208
|
+
npm run lint # ESLint
|
|
209
|
+
npm test # unit/contract/security tests
|
|
210
|
+
npm run test:integration
|
|
211
|
+
npm run test:e2e # Playwright (Inspector)
|
|
302
212
|
```
|
|
303
213
|
|
|
304
|
-
Verify installation: `openclaw plugins inspect neotoma` shows `Format: native`, `Kind: memory`, and all registered tool contracts.
|
|
305
|
-
|
|
306
|
-
## Common questions
|
|
307
|
-
|
|
308
|
-
**Platform memory (Claude, ChatGPT) is good enough — why add another tool?**
|
|
309
|
-
Platform memory stores what one vendor decides to remember, in a format you can't inspect or export. It doesn't version, doesn't detect conflicts, and vanishes if you switch tools. Neotoma gives you structured, cross-tool state you control.
|
|
310
|
-
|
|
311
|
-
**Can't I just build this with SQLite or a JSON file?**
|
|
312
|
-
You can start there — many teams do. But you'll eventually need versioning, conflict detection, schema evolution, and cross-tool sync. That's months of infrastructure work. Neotoma ships those guarantees on day one.
|
|
313
|
-
|
|
314
|
-
**What's the difference between RAG memory and deterministic memory?**
|
|
315
|
-
RAG stores text chunks and retrieves them by similarity. Neotoma stores structured observations and composes entity state with reducers; the same observations always yield the same snapshot. RAG optimizes relevance; deterministic memory optimizes integrity, versioning, and auditability.
|
|
316
|
-
|
|
317
|
-
**Is this production-ready?**
|
|
318
|
-
Neotoma is in developer preview — used daily by real agent workflows. The core guarantees (deterministic state, versioned history, append-only log) are stable. Install in 5 minutes and let your agent evaluate the fit.
|
|
319
|
-
|
|
320
|
-
More questions: [FAQ](https://neotoma.io/faq)
|
|
321
|
-
|
|
322
|
-
## Related posts
|
|
323
|
-
|
|
324
|
-
- [Neotoma developer release](https://markmhendrickson.com/posts/neotoma-developer-release)
|
|
325
|
-
- [Your AI remembers your vibe but not your work](https://markmhendrickson.com/posts/your-ai-remembers-your-vibe-but-not-your-work)
|
|
326
|
-
- [Building a truth layer for persistent agent memory](https://markmhendrickson.com/posts/truth-layer-agent-memory)
|
|
327
|
-
- [Agent memory has a truth problem](https://markmhendrickson.com/posts/agent-memory-truth-problem)
|
|
328
|
-
- [Six agentic trends I'm betting on (and how I might be wrong)](https://markmhendrickson.com/posts/six-agentic-trends-betting-on)
|
|
329
|
-
- [Why agent memory needs more than RAG](https://markmhendrickson.com/posts/why-agent-memory-needs-more-than-rag)
|
|
330
|
-
- [Agent command centers need one source of truth](https://markmhendrickson.com/posts/agent-command-centers-source-of-truth)
|
|
331
|
-
|
|
332
214
|
## Documentation
|
|
333
215
|
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
**Getting started:** [Evaluate](https://neotoma.io/evaluate), [Install](https://neotoma.io/install), [Walkthrough](https://neotoma.io/developer-walkthrough)
|
|
337
|
-
|
|
338
|
-
**Reference:** [REST API](https://neotoma.io/api), [MCP server](https://neotoma.io/mcp), [CLI](https://neotoma.io/cli), [Memory guarantees](https://neotoma.io/memory-guarantees), [Architecture](https://neotoma.io/architecture), [Terminology](https://neotoma.io/terminology)
|
|
339
|
-
|
|
340
|
-
**Foundational:** [Core identity](docs/foundation/core_identity.md), [Philosophy](docs/foundation/philosophy.md), [Problem statement](docs/foundation/problem_statement.md)
|
|
216
|
+
Documentation is served in-app at `/docs` (browsable in the Inspector), published at [neotoma.io/docs](https://neotoma.io/docs), and stored under `docs/`.
|
|
341
217
|
|
|
342
|
-
**
|
|
218
|
+
- **Foundations:** [Core identity](docs/foundation/core_identity.md), [Philosophy](docs/foundation/philosophy.md), [Manifest](docs/NEOTOMA_MANIFEST.md)
|
|
219
|
+
- **Architecture:** [Architecture](docs/architecture/architecture.md), [Determinism](docs/architecture/determinism.md)
|
|
220
|
+
- **Interfaces:** [CLI reference](docs/developer/cli_reference.md), [MCP instructions](docs/developer/mcp/instructions.md), [REST API](docs/api/rest_api.md)
|
|
221
|
+
- **Operations:** [Runbook](docs/operations/runbook.md), health check (`neotoma doctor`)
|
|
343
222
|
|
|
344
223
|
## Contributing
|
|
345
224
|
|
|
346
|
-
Neotoma is in active development.
|
|
225
|
+
Neotoma is in active development. Open an issue or discussion for questions or collaboration. See [CONTRIBUTING.md](CONTRIBUTING.md) and [SECURITY.md](SECURITY.md). License: MIT.
|
package/dist/actions.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"actions.d.ts","sourceRoot":"","sources":["../src/actions.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,SAAS,CAAC;AAsC9B,OAAO,EAGL,KAAK,aAAa,EACnB,MAAM,6BAA6B,CAAC;AAarC,OAAO,EAGL,KAAK,aAAa,EAGnB,MAAM,4BAA4B,CAAC;AA4BpC,OAAO,EAQL,KAAK,sBAAsB,EAC5B,MAAM,4BAA4B,CAAC;AA6CpC,OAAO,EAiCL,KAAK,wBAAwB,EAE9B,MAAM,4BAA4B,CAAC;
|
|
1
|
+
{"version":3,"file":"actions.d.ts","sourceRoot":"","sources":["../src/actions.ts"],"names":[],"mappings":"AAAA,OAAO,OAAO,MAAM,SAAS,CAAC;AAsC9B,OAAO,EAGL,KAAK,aAAa,EACnB,MAAM,6BAA6B,CAAC;AAarC,OAAO,EAGL,KAAK,aAAa,EAGnB,MAAM,4BAA4B,CAAC;AA4BpC,OAAO,EAQL,KAAK,sBAAsB,EAC5B,MAAM,4BAA4B,CAAC;AA6CpC,OAAO,EAiCL,KAAK,wBAAwB,EAE9B,MAAM,4BAA4B,CAAC;AA8CpC,6FAA6F;AAC7F,wBAAgB,qBAAqB,IAAI,sBAAsB,GAAG,IAAI,CAErE;AAED,eAAO,MAAM,GAAG,6CAAY,CAAC;AA4rB7B,kFAAkF;AAClF,eAAO,MAAM,4BAA4B,QAAS,CAAC;AAEnD;;;;;;;;;GASG;AACH,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAMtE;AAoBD,uFAAuF;AACvF,eAAO,MAAM,wBAAwB,OAAQ,CAAC;AAE9C;;;;;;;GAOG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,CAMlE;AAID;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CACnC,GAAG,EAAE,OAAO,CAAC,OAAO,EACpB,GAAG,EAAE,OAAO,CAAC,QAAQ,EACrB,OAAO,CAAC,EAAE;IAAE,WAAW,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAC;IAAC,MAAM,CAAC,EAAE;QAAE,IAAI,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,IAAI,CAAA;KAAE,CAAA;CAAE,GAC7F,IAAI,CA4IN;AAuBD;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,EAAE,EAAE,MAAM,EAAE,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,OAAO,CA+B1F;AAmCD;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,OAAO,CAAC,OAAO,GAAG,OAAO,CA2B5D;AA4PD;;;;;;GAMG;AACH,wBAAgB,uBAAuB,IAAI,MAAM,CA2BhD;AA47CD,KAAK,aAAa,GAAG;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,MAAM,CAAC;CAChB,CAAC;AAEF,KAAK,cAAc,GAAG;IACpB,IAAI,EAAE,OAAO,CAAC;IACd,OAAO,EAAE,aAAa,CAAC;IACvB,aAAa,CAAC,EAAE,aAAa,GAAG,IAAI,CAAC;IACrC,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB,CAAC;AAEF,KAAK,cAAc,GAAG,aAAa,GAAG,cAAc,CAAC;AA2CrD,4GAA4G;AAC5G,wBAAgB,0BAA0B,CAAC,GAAG,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,QAAQ,GAAG,MAAM,CAAC,GAAG,OAAO,CAqBjG;AAED,oHAAoH;AACpH,wBAAgB,6BAA6B,CAC3C,GAAG,EAAE,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,QAAQ,GAAG,MAAM,CAAC,GAC5C,OAAO,CAWT;AAED,mGAAmG;AACnG,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,OAAO,CAAC,OAAO,GAAG,MAAM,CAanE;AA2FD;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAsB,kBAAkB,CACtC,GAAG,EAAE,OAAO,CAAC,OAAO,EACpB,SAAS,EAAE,cAAc,GACxB,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAoCxB;AA69FD,KAAK,oBAAoB,GAAG;IAC1B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC,CAAC;AAuDF,wBAAsB,qBAAqB,CAAC,MAAM,EAAE;IAClD,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,CAAC;IACpC,cAAc,EAAE,MAAM,CAAC;IACvB,iBAAiB,CAAC,EAAE,OAAO,4BAA4B,EAAE,iBAAiB,CAAC;IAC3E,kFAAkF;IAClF,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC7B,cAAc,EAAE,MAAM,CAAC;IACvB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,aAAa,CAAC,EAAE,oBAAoB,EAAE,CAAC;IACvC,cAAc,CAAC,EAAE,wBAAwB,CAAC;IAC1C,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB;;;;;;;;;;;;;;qBA84BgB,MAAM;eACZ,MAAM;2BACM,MAAM;;;;;;cAlBnB,MAAM;iBACH,MAAM;2BACI,MAAM;qBACZ,MAAM;mBACR,MAAM;;;cA/BX,MAAM;gBACJ,MAAM;2BACK,MAAM;qBACZ,MAAM;mBACR,MAAM;wBACD,MAAM;uBACP,MAAM;;;;;mBAvPV,MAAM;qBACJ,MAAM;wBACH,MAAM,GAAG,IAAI;2BACV,MAAM;;wBAET,MAAM;uBACP,MAAM,EAAE;wBACP,MAAM;uBACP,MAAM;;kBAxYX,MAAM;oBACJ,MAAM;yBACD,MAAM;4BACH,MAAM;2BACP,MAAM;;;kBAQf,MAAM;yBACC,MAAM;iCACE,MAAM;sCACD,MAAM;;+BA4Xb,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI;;;2BA+JlC,MAAM;0BACP,MAAM;0BACN,MAAM;;;;;;;;GAkZ3B;AAg9GD,wBAAsB,eAAe;;;eAmOpC"}
|