rosett-ai 1.3.3
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.
- checksums.yaml +7 -0
- data/.ai-provenance.yml +119 -0
- data/.debride_whitelist +186 -0
- data/.fasterer.yml +29 -0
- data/.mdl_style.rb +10 -0
- data/.mdlrc +3 -0
- data/.mutant.yml +49 -0
- data/.namespace-allowlist +42 -0
- data/.reek.yml +1040 -0
- data/.rosett-ai/config.yml +3 -0
- data/.rspec +5 -0
- data/.rubocop.yml +380 -0
- data/.ruby-version +1 -0
- data/.yamllint +51 -0
- data/.yardopts +12 -0
- data/AI-DISCLOSURE.md +48 -0
- data/CHANGELOG.md +519 -0
- data/CLAUDE.md +141 -0
- data/CONTRIBUTING.md +734 -0
- data/INSTALL.md +154 -0
- data/LICENSE +674 -0
- data/LICENSE.md +675 -0
- data/QUICKSTART.md +73 -0
- data/README.md +366 -0
- data/Rakefile +200 -0
- data/SECURITY.md +114 -0
- data/bin/rai +1 -0
- data/cliff.toml +52 -0
- data/conf/adopt_redactions.yml +8 -0
- data/conf/behaviour/.gitkeep +0 -0
- data/conf/compliance/cra_rules.yml +25 -0
- data/conf/compliance/license_rules.yml +20 -0
- data/conf/design/aaif_alignment.yml +181 -0
- data/conf/design/ab_testing.yml +172 -0
- data/conf/design/accessibility.yml +84 -0
- data/conf/design/ai_authorship.yml +210 -0
- data/conf/design/ai_provenance.yml +224 -0
- data/conf/design/ai_tool_configuration.yml +207 -0
- data/conf/design/architecture.yml +139 -0
- data/conf/design/autocompletion.yml +115 -0
- data/conf/design/backward_compatibility.yml +112 -0
- data/conf/design/behaviour_composition.yml +246 -0
- data/conf/design/build_rake_extraction.yml +57 -0
- data/conf/design/ci_pipeline.yml +100 -0
- data/conf/design/claude_code_configuration.yml +157 -0
- data/conf/design/compiler.yml +128 -0
- data/conf/design/comply.yml +153 -0
- data/conf/design/content_packs.yml +84 -0
- data/conf/design/desktop_integration.yml +289 -0
- data/conf/design/distribution.yml +216 -0
- data/conf/design/doctor.yml +184 -0
- data/conf/design/documentation.yml +152 -0
- data/conf/design/engine_architecture.yml +257 -0
- data/conf/design/error_handling.yml +103 -0
- data/conf/design/feature_flags.yml +142 -0
- data/conf/design/git_hooks.yml +165 -0
- data/conf/design/gui_plugins.yml +475 -0
- data/conf/design/i18n.yml +84 -0
- data/conf/design/integration_testing.yml +56 -0
- data/conf/design/licensing_system.yml +88 -0
- data/conf/design/lifecycle_management.yml +208 -0
- data/conf/design/mcp_integration.yml +207 -0
- data/conf/design/mcp_settings.yml +126 -0
- data/conf/design/migration.yml +56 -0
- data/conf/design/monitoring_observability.yml +194 -0
- data/conf/design/namespace_cleanup.yml +145 -0
- data/conf/design/plugin_test_segregation.yml +145 -0
- data/conf/design/policy_management.yml +229 -0
- data/conf/design/project_management.yml +183 -0
- data/conf/design/rai_mcp_asset_discovery.yml +164 -0
- data/conf/design/rai_mcp_server.yml +605 -0
- data/conf/design/release_management.yml +117 -0
- data/conf/design/retrofit.yml +199 -0
- data/conf/design/retrospective_analyzer.yml +79 -0
- data/conf/design/scope_hierarchy.yml +352 -0
- data/conf/design/security.yml +115 -0
- data/conf/design/session_retrospective.yml +85 -0
- data/conf/design/smart_ui_feedback.yml +89 -0
- data/conf/design/structured_logging.yml +148 -0
- data/conf/design/styles.yml +123 -0
- data/conf/design/test_peer_review.yml +89 -0
- data/conf/design/testing.yml +136 -0
- data/conf/design/threat_model.yml +108 -0
- data/conf/design/ui_framework.yml +111 -0
- data/conf/design/usage_optimization.yml +122 -0
- data/conf/design/version_management.yml +60 -0
- data/conf/design/workflow.yml +227 -0
- data/conf/mcp/server_defaults.yml +42 -0
- data/conf/mcp/trust.yml +21 -0
- data/conf/packaging/core.yml +12 -0
- data/conf/packaging/gtk4.yml +11 -0
- data/conf/packaging/qt6.yml +11 -0
- data/conf/policy/default_deny_list.yml +197 -0
- data/conf/review/cli-command-audit.yml +857 -0
- data/conf/review/design-docs.yml +1064 -0
- data/conf/review/design-questionnaire.yml +153 -0
- data/conf/review/questionnaire.yml +146 -0
- data/conf/review/rosett-ai-core.yml +2919 -0
- data/conf/schemas/ai_config_schema.json +73 -0
- data/conf/schemas/behaviour_schema.json +132 -0
- data/conf/schemas/compliance_rule_schema.json +63 -0
- data/conf/schemas/content_pack_manifest_schema.json +51 -0
- data/conf/schemas/design_schema.json +210 -0
- data/conf/schemas/engine_manifest_schema.json +144 -0
- data/conf/schemas/lockfile_schema.json +74 -0
- data/conf/schemas/mcp_server_schema.json +48 -0
- data/conf/schemas/packaging_schema.json +70 -0
- data/conf/schemas/policy_schema.json +85 -0
- data/conf/schemas/provenance_schema.json +84 -0
- data/conf/schemas/rai_config_schema.json +56 -0
- data/conf/schemas/rai_project_schema.json +20 -0
- data/conf/schemas/scope_hierarchy_schema.json +49 -0
- data/conf/schemas/target_schema.json +67 -0
- data/conf/schemas/tooling_schema.json +65 -0
- data/conf/schemas/workflow_schema.json +112 -0
- data/conf/targets/agents_md.yml +17 -0
- data/conf/targets/claude.yml +12 -0
- data/conf/tooling/tools.yml +58 -0
- data/dist/rosett-ai-mcp.service +48 -0
- data/dist/rosett-ai-mcp.yml.default +45 -0
- data/doc/AAIF_POSITIONING.md +58 -0
- data/doc/ADOPT.md +224 -0
- data/doc/AI_PROVENANCE.md +139 -0
- data/doc/ARCHITECTURE.md +920 -0
- data/doc/BEHAVIOUR.md +409 -0
- data/doc/BUILD.md +138 -0
- data/doc/CI_CD_RECIPES.md +171 -0
- data/doc/CLAUDE_SESSIONS_MOVED.md +16 -0
- data/doc/COMMAND_ANALYSIS.md +229 -0
- data/doc/CONFIGURATION.md +281 -0
- data/doc/DESIGN_AUDIT.md +235 -0
- data/doc/DESIGN_PEER_REVIEW.md +771 -0
- data/doc/DESKTOP.md +447 -0
- data/doc/ENGINES.md +567 -0
- data/doc/ENGINE_DEVELOPMENT_GUIDE.md +417 -0
- data/doc/FEATURE_AUDIT.md +218 -0
- data/doc/IMPLEMENTATION_PLAN.md +669 -0
- data/doc/INCIDENT_REPORT_2026-02-02.md +251 -0
- data/doc/MIGRATION_GUIDE.md +88 -0
- data/doc/PACKAGING.md +232 -0
- data/doc/PROJECT_DASHBOARD.md +153 -0
- data/doc/PULP_DEPLOYMENT.md +164 -0
- data/doc/QUALITY_FIX_SUMMARY.md +110 -0
- data/doc/QUICK_START.md +162 -0
- data/doc/REEK_CONFIGURATION.md +166 -0
- data/doc/REFERENCE.md +253 -0
- data/doc/REFERENCES.md +324 -0
- data/doc/SECURITY_REVIEW_CHECKLIST.md +72 -0
- data/doc/SESSION_2026-02-28_GTK4_HARDENING.md +359 -0
- data/doc/SETUP.md +202 -0
- data/doc/TEST_PEER_REVIEW.md +152 -0
- data/doc/THREAT_MODEL.md +230 -0
- data/doc/USAGE.md +545 -0
- data/doc/USER_MANUAL.md +585 -0
- data/doc/ai_test_review_checklist.md +110 -0
- data/doc/changes/2026-02-18-packaging-fpm.md +155 -0
- data/doc/changes/2026-02-19-testing-infrastructure.md +221 -0
- data/doc/changes/2026-02-20-security-implementation.md +281 -0
- data/doc/changes/2026-02-20-styles-implementation.md +220 -0
- data/doc/changes/2026-02-21-architecture-completion.md +95 -0
- data/doc/changes/2026-02-21-architecture-ui-layer.md +253 -0
- data/doc/changes/2026-02-21-cc-config-implementation.md +108 -0
- data/doc/changes/2026-02-21-ci-pipeline-implementation.md +214 -0
- data/doc/changes/2026-02-21-compiler-multi-target-pipeline.md +241 -0
- data/doc/changes/2026-02-21-config-design-show-commands.md +61 -0
- data/doc/changes/2026-02-21-design-implementation-overview.md +455 -0
- data/doc/changes/2026-02-21-lifecycle-management.md +196 -0
- data/doc/changes/2026-02-21-path-resolver.md +128 -0
- data/doc/changes/2026-02-24-ci-tmpdir-mutant-fetch.md +45 -0
- data/doc/changes/2026-03-01-ci-bundler-strategy.md +120 -0
- data/doc/changes/2026-03-20-security-hardening-phase2.md +163 -0
- data/doc/context/SESSION-HANDOFF.md +69 -0
- data/doc/context/ai-engine-usage-trends-2026.md +80 -0
- data/doc/context/plan-pluggable-engines.md +590 -0
- data/doc/decisions/001-flog-deferred.md +32 -0
- data/doc/decisions/002-path-resolution-strategy.md +158 -0
- data/doc/decisions/003-ui-adapter-selection.md +193 -0
- data/doc/decisions/004-design-document-validation.md +179 -0
- data/doc/decisions/005-package-splitting-strategy.md +200 -0
- data/doc/decisions/006-multi-engine-architecture.md +147 -0
- data/doc/decisions/007-engine-agnostic-pivot.md +219 -0
- data/doc/decisions/008-ci-bundler-strategy.md +129 -0
- data/doc/decisions/009-core-only-v1-release.md +60 -0
- data/doc/decisions/010-engine-debian-packaging.md +66 -0
- data/doc/decisions/011-context-aware-cli.md +71 -0
- data/doc/dependency_decisions.yml +247 -0
- data/doc/issues/001-wrapper-missing-environment-variables.md +197 -0
- data/doc/issues/002-embedded-ruby-wrong-prefix.md +217 -0
- data/doc/issues/003-smoke-test-false-positive.md +127 -0
- data/doc/issues/004-market-research-design-updates.md +109 -0
- data/doc/issues/005-compile-scope-coexistence.md +161 -0
- data/doc/locales/.gitkeep +0 -0
- data/doc/man/rai.1.ronn +505 -0
- data/doc/operations/packaging.md +133 -0
- data/doc/operations/rosett-ai-release.md +65 -0
- data/doc/reference/error-catalog.md +107 -0
- data/doc/reference/rosett-ai-technical-reference.pdf +0 -0
- data/doc/reference/src/Pictures/cover.jpg +0 -0
- data/doc/reference/src/Pictures/head1.jpg +0 -0
- data/doc/reference/src/Pictures/head2.jpg +0 -0
- data/doc/reference/src/Pictures/head3.jpg +0 -0
- data/doc/reference/src/Pictures/head4.jpg +0 -0
- data/doc/reference/src/Pictures/head5.jpg +0 -0
- data/doc/reference/src/Pictures/head6.jpg +0 -0
- data/doc/reference/src/Pictures/head7.jpg +0 -0
- data/doc/reference/src/Pictures/head8.jpg +0 -0
- data/doc/reference/src/StyleInd.ist +4 -0
- data/doc/reference/src/bibliography.bib +79 -0
- data/doc/reference/src/main.tex +1288 -0
- data/doc/reference/src/structure.tex +303 -0
- data/doc/rosett-ai-bookmarks.html +301 -0
- data/kitchen.yml +46 -0
- data/lib/rosett_ai/adopter/executor_resolver.rb +77 -0
- data/lib/rosett_ai/adopter/local_analysis_collector.rb +154 -0
- data/lib/rosett_ai/adopter/rule_adopter.rb +254 -0
- data/lib/rosett_ai/ai_config/config_compiler.rb +111 -0
- data/lib/rosett_ai/ai_config/context_window.rb +55 -0
- data/lib/rosett_ai/ai_config/cost_controls.rb +44 -0
- data/lib/rosett_ai/ai_config/fallback_chain.rb +64 -0
- data/lib/rosett_ai/ai_config/model_router.rb +121 -0
- data/lib/rosett_ai/ai_config/validator.rb +45 -0
- data/lib/rosett_ai/authorship/attribution_compiler.rb +99 -0
- data/lib/rosett_ai/authorship/disclosure_policy.rb +81 -0
- data/lib/rosett_ai/authorship/review_validator.rb +39 -0
- data/lib/rosett_ai/authorship/trailer_generator.rb +88 -0
- data/lib/rosett_ai/backup/compressor.rb +180 -0
- data/lib/rosett_ai/backup/destination.rb +91 -0
- data/lib/rosett_ai/behaviour/manager.rb +156 -0
- data/lib/rosett_ai/compiler/backend.rb +86 -0
- data/lib/rosett_ai/compiler/backends/agents_md_backend.rb +80 -0
- data/lib/rosett_ai/compiler/backends/claude_backend.rb +88 -0
- data/lib/rosett_ai/compiler/backends/generic_backend.rb +15 -0
- data/lib/rosett_ai/compiler/behaviour_compiler.rb +40 -0
- data/lib/rosett_ai/compiler/capability_checker.rb +104 -0
- data/lib/rosett_ai/compiler/compilation_pipeline.rb +361 -0
- data/lib/rosett_ai/compiler/compiled_output.rb +39 -0
- data/lib/rosett_ai/compiler/locale_compiler.rb +250 -0
- data/lib/rosett_ai/compiler/target_profile.rb +112 -0
- data/lib/rosett_ai/completion/generator.rb +101 -0
- data/lib/rosett_ai/completion/shells/bash_generator.rb +126 -0
- data/lib/rosett_ai/completion/shells/fish_generator.rb +78 -0
- data/lib/rosett_ai/completion/shells/zsh_generator.rb +126 -0
- data/lib/rosett_ai/comply/checkers/cra_checker.rb +102 -0
- data/lib/rosett_ai/comply/checkers/license_checker.rb +85 -0
- data/lib/rosett_ai/comply/checkers/spdx_header_checker.rb +98 -0
- data/lib/rosett_ai/comply/reporter.rb +113 -0
- data/lib/rosett_ai/comply/runner.rb +50 -0
- data/lib/rosett_ai/composition/circular_dependency_detector.rb +56 -0
- data/lib/rosett_ai/composition/composer.rb +158 -0
- data/lib/rosett_ai/composition/composition_result.rb +64 -0
- data/lib/rosett_ai/composition/conflict_detector.rb +53 -0
- data/lib/rosett_ai/composition/lockfile.rb +103 -0
- data/lib/rosett_ai/composition/merge_strategy.rb +131 -0
- data/lib/rosett_ai/composition/priority_sorter.rb +29 -0
- data/lib/rosett_ai/composition/scope_resolver.rb +55 -0
- data/lib/rosett_ai/config/compile_result.rb +37 -0
- data/lib/rosett_ai/config/compiler.rb +13 -0
- data/lib/rosett_ai/config/domain_transformer.rb +13 -0
- data/lib/rosett_ai/config/key_map.rb +13 -0
- data/lib/rosett_ai/config/masking_secret_resolver.rb +40 -0
- data/lib/rosett_ai/config/scope_router.rb +13 -0
- data/lib/rosett_ai/config/secret_resolver.rb +125 -0
- data/lib/rosett_ai/configuration.rb +119 -0
- data/lib/rosett_ai/content/content_client.rb +60 -0
- data/lib/rosett_ai/content/pack_installer.rb +117 -0
- data/lib/rosett_ai/content/pack_manifest.rb +50 -0
- data/lib/rosett_ai/content/pack_registry.rb +68 -0
- data/lib/rosett_ai/content_packs/manager.rb +50 -0
- data/lib/rosett_ai/dbus/compositor_detector.rb +77 -0
- data/lib/rosett_ai/dbus/focus_adapters/base.rb +59 -0
- data/lib/rosett_ai/dbus/focus_adapters/gnome_adapter.rb +172 -0
- data/lib/rosett_ai/dbus/focus_adapters/hyprland_adapter.rb +77 -0
- data/lib/rosett_ai/dbus/focus_adapters/i3_adapter.rb +65 -0
- data/lib/rosett_ai/dbus/focus_adapters/kwin_adapter.rb +103 -0
- data/lib/rosett_ai/dbus/focus_adapters/x11_adapter.rb +105 -0
- data/lib/rosett_ai/dbus/focus_monitor_interface.rb +103 -0
- data/lib/rosett_ai/dbus/manager_interface.rb +213 -0
- data/lib/rosett_ai/dbus/plugin_manager_interface.rb +169 -0
- data/lib/rosett_ai/dbus/rate_limiter.rb +89 -0
- data/lib/rosett_ai/dbus/service.rb +121 -0
- data/lib/rosett_ai/dbus/status_notifier_interface.rb +79 -0
- data/lib/rosett_ai/deprecation.rb +79 -0
- data/lib/rosett_ai/desktop/dbus_client.rb +259 -0
- data/lib/rosett_ai/desktop/gtk4_app.rb +371 -0
- data/lib/rosett_ai/desktop/gtk4_preferences.rb +331 -0
- data/lib/rosett_ai/desktop/gui_logger.rb +236 -0
- data/lib/rosett_ai/doctor/check.rb +92 -0
- data/lib/rosett_ai/doctor/checks/cache_health_check.rb +50 -0
- data/lib/rosett_ai/doctor/checks/dbus_availability_check.rb +39 -0
- data/lib/rosett_ai/doctor/checks/engine_detection_check.rb +46 -0
- data/lib/rosett_ai/doctor/checks/file_permission_check.rb +44 -0
- data/lib/rosett_ai/doctor/checks/gem_dependency_check.rb +55 -0
- data/lib/rosett_ai/doctor/checks/ruby_version_check.rb +50 -0
- data/lib/rosett_ai/doctor/checks/stale_config_nncc_check.rb +57 -0
- data/lib/rosett_ai/doctor/checks/stale_home_nncc_check.rb +59 -0
- data/lib/rosett_ai/doctor.rb +81 -0
- data/lib/rosett_ai/documentation/reference_compiler.rb +122 -0
- data/lib/rosett_ai/documentation/translator.rb +62 -0
- data/lib/rosett_ai/engines/base_config_compiler.rb +203 -0
- data/lib/rosett_ai/engines/detector.rb +63 -0
- data/lib/rosett_ai/engines/registry.rb +50 -0
- data/lib/rosett_ai/error_handler.rb +139 -0
- data/lib/rosett_ai/exit_codes.rb +76 -0
- data/lib/rosett_ai/feature_flags.rb +102 -0
- data/lib/rosett_ai/formatting.rb +33 -0
- data/lib/rosett_ai/gem_consistency_checker.rb +199 -0
- data/lib/rosett_ai/git_hooks/chain_detector.rb +86 -0
- data/lib/rosett_ai/git_hooks/installer.rb +175 -0
- data/lib/rosett_ai/git_hooks/script_generator.rb +125 -0
- data/lib/rosett_ai/gitlab/validators/supplementary_gitlab_ci_yaml_validator.rb +79 -0
- data/lib/rosett_ai/i18n/locale_resolver.rb +46 -0
- data/lib/rosett_ai/i18n/utf8_checker.rb +32 -0
- data/lib/rosett_ai/init/config_file_writer.rb +24 -0
- data/lib/rosett_ai/init/directory_builder.rb +38 -0
- data/lib/rosett_ai/init/file_copier.rb +95 -0
- data/lib/rosett_ai/init/global_initializer.rb +28 -0
- data/lib/rosett_ai/init/local_initializer.rb +27 -0
- data/lib/rosett_ai/init/mcp_registrar.rb +109 -0
- data/lib/rosett_ai/init/project_initializer.rb +38 -0
- data/lib/rosett_ai/licensing/license_key.rb +139 -0
- data/lib/rosett_ai/licensing/license_store.rb +64 -0
- data/lib/rosett_ai/licensing/license_validator.rb +60 -0
- data/lib/rosett_ai/licensing/tier.rb +42 -0
- data/lib/rosett_ai/mcp/admin/auditor.rb +88 -0
- data/lib/rosett_ai/mcp/admin/health_checker.rb +81 -0
- data/lib/rosett_ai/mcp/admin/registry.rb +100 -0
- data/lib/rosett_ai/mcp/admin/schema_validator.rb +63 -0
- data/lib/rosett_ai/mcp/enforcement/.gitkeep +0 -0
- data/lib/rosett_ai/mcp/enforcement/hook_generator.rb +197 -0
- data/lib/rosett_ai/mcp/enforcement/validator.rb +215 -0
- data/lib/rosett_ai/mcp/governance.rb +160 -0
- data/lib/rosett_ai/mcp/http_security_config.rb +158 -0
- data/lib/rosett_ai/mcp/instructions.rb +266 -0
- data/lib/rosett_ai/mcp/key_hasher.rb +66 -0
- data/lib/rosett_ai/mcp/keyfile.rb +221 -0
- data/lib/rosett_ai/mcp/middleware/authentication.rb +146 -0
- data/lib/rosett_ai/mcp/middleware/content_type.rb +56 -0
- data/lib/rosett_ai/mcp/middleware/cors.rb +83 -0
- data/lib/rosett_ai/mcp/middleware/origin_validation.rb +73 -0
- data/lib/rosett_ai/mcp/middleware/rate_limit.rb +106 -0
- data/lib/rosett_ai/mcp/middleware/request_size.rb +51 -0
- data/lib/rosett_ai/mcp/plugins.rb +143 -0
- data/lib/rosett_ai/mcp/prompts/compilation_prompt.rb +40 -0
- data/lib/rosett_ai/mcp/prompts/compliance_prompt.rb +41 -0
- data/lib/rosett_ai/mcp/prompts/diagnostics_prompt.rb +41 -0
- data/lib/rosett_ai/mcp/prompts/validation_prompt.rb +41 -0
- data/lib/rosett_ai/mcp/resources/behaviour_resource.rb +127 -0
- data/lib/rosett_ai/mcp/resources/config_resource.rb +72 -0
- data/lib/rosett_ai/mcp/resources/design_resource.rb +58 -0
- data/lib/rosett_ai/mcp/resources/hooks_resource.rb +74 -0
- data/lib/rosett_ai/mcp/resources/provenance_resource.rb +51 -0
- data/lib/rosett_ai/mcp/resources/rules_resource.rb +60 -0
- data/lib/rosett_ai/mcp/resources/schema_resource.rb +72 -0
- data/lib/rosett_ai/mcp/response_helper.rb +46 -0
- data/lib/rosett_ai/mcp/security_logger.rb +60 -0
- data/lib/rosett_ai/mcp/server.rb +212 -0
- data/lib/rosett_ai/mcp/settings/server_installer.rb +112 -0
- data/lib/rosett_ai/mcp/settings/trust_manager.rb +142 -0
- data/lib/rosett_ai/mcp/tools/adopt_tool.rb +70 -0
- data/lib/rosett_ai/mcp/tools/backup_tool.rb +64 -0
- data/lib/rosett_ai/mcp/tools/behaviour_display_tool.rb +72 -0
- data/lib/rosett_ai/mcp/tools/behaviour_list_tool.rb +56 -0
- data/lib/rosett_ai/mcp/tools/behaviour_manage_tool.rb +114 -0
- data/lib/rosett_ai/mcp/tools/behaviour_show_tool.rb +62 -0
- data/lib/rosett_ai/mcp/tools/compile_status_tool.rb +122 -0
- data/lib/rosett_ai/mcp/tools/compile_tool.rb +191 -0
- data/lib/rosett_ai/mcp/tools/comply_tool.rb +79 -0
- data/lib/rosett_ai/mcp/tools/config_compile_tool.rb +71 -0
- data/lib/rosett_ai/mcp/tools/config_status_tool.rb +79 -0
- data/lib/rosett_ai/mcp/tools/content_tool.rb +78 -0
- data/lib/rosett_ai/mcp/tools/context_query_tool.rb +156 -0
- data/lib/rosett_ai/mcp/tools/design_list_tool.rb +57 -0
- data/lib/rosett_ai/mcp/tools/design_show_tool.rb +69 -0
- data/lib/rosett_ai/mcp/tools/doctor_tool.rb +62 -0
- data/lib/rosett_ai/mcp/tools/documentation_status_tool.rb +45 -0
- data/lib/rosett_ai/mcp/tools/engines_tool.rb +84 -0
- data/lib/rosett_ai/mcp/tools/hook_install_tool.rb +190 -0
- data/lib/rosett_ai/mcp/tools/hook_preview_tool.rb +173 -0
- data/lib/rosett_ai/mcp/tools/hooks_status_tool.rb +84 -0
- data/lib/rosett_ai/mcp/tools/init_tool.rb +87 -0
- data/lib/rosett_ai/mcp/tools/license_status_tool.rb +44 -0
- data/lib/rosett_ai/mcp/tools/project_tool.rb +117 -0
- data/lib/rosett_ai/mcp/tools/provenance_tool.rb +97 -0
- data/lib/rosett_ai/mcp/tools/provenance_write_tool.rb +40 -0
- data/lib/rosett_ai/mcp/tools/retrofit_tool.rb +81 -0
- data/lib/rosett_ai/mcp/tools/rule_search_tool.rb +163 -0
- data/lib/rosett_ai/mcp/tools/schema_get_tool.rb +94 -0
- data/lib/rosett_ai/mcp/tools/tooling_tool.rb +86 -0
- data/lib/rosett_ai/mcp/tools/validate_tool.rb +105 -0
- data/lib/rosett_ai/mcp/tools/workflow_execute_tool.rb +74 -0
- data/lib/rosett_ai/mcp/tools/workflow_tool.rb +78 -0
- data/lib/rosett_ai/migration/detector.rb +117 -0
- data/lib/rosett_ai/migration/nncc_config_migrator.rb +94 -0
- data/lib/rosett_ai/migration/nncc_project_migrator.rb +90 -0
- data/lib/rosett_ai/migration/xdg_migrator.rb +123 -0
- data/lib/rosett_ai/package_manager/apt.rb +108 -0
- data/lib/rosett_ai/package_manager/base.rb +68 -0
- data/lib/rosett_ai/package_manager/gem_backend.rb +90 -0
- data/lib/rosett_ai/packaging/variant_config.rb +92 -0
- data/lib/rosett_ai/path_resolver.rb +115 -0
- data/lib/rosett_ai/plugins/contract.rb +43 -0
- data/lib/rosett_ai/plugins/engine_contract.rb +60 -0
- data/lib/rosett_ai/plugins/gui_contract.rb +74 -0
- data/lib/rosett_ai/plugins/mcp_contract.rb +48 -0
- data/lib/rosett_ai/plugins/registry.rb +150 -0
- data/lib/rosett_ai/policy/auditor.rb +41 -0
- data/lib/rosett_ai/policy/deny_list.rb +71 -0
- data/lib/rosett_ai/policy/opt_out_scanner.rb +37 -0
- data/lib/rosett_ai/policy/policy_compiler.rb +84 -0
- data/lib/rosett_ai/policy/protected_files.rb +47 -0
- data/lib/rosett_ai/policy/tier_hierarchy.rb +48 -0
- data/lib/rosett_ai/policy/validator.rb +35 -0
- data/lib/rosett_ai/profiler.rb +79 -0
- data/lib/rosett_ai/project/drift_detector.rb +126 -0
- data/lib/rosett_ai/project/manager.rb +115 -0
- data/lib/rosett_ai/project/sync_manager.rb +138 -0
- data/lib/rosett_ai/project/template_applier.rb +105 -0
- data/lib/rosett_ai/project_context.rb +82 -0
- data/lib/rosett_ai/provenance/entry.rb +63 -0
- data/lib/rosett_ai/provenance/file_source.rb +32 -0
- data/lib/rosett_ai/provenance/source.rb +62 -0
- data/lib/rosett_ai/provenance/store.rb +153 -0
- data/lib/rosett_ai/provenance/tracker.rb +62 -0
- data/lib/rosett_ai/provenance/trailer_generator.rb +43 -0
- data/lib/rosett_ai/provenance/validator.rb +45 -0
- data/lib/rosett_ai/quorum/collector.rb +59 -0
- data/lib/rosett_ai/quorum/comparator.rb +81 -0
- data/lib/rosett_ai/quorum/dispatcher.rb +57 -0
- data/lib/rosett_ai/quorum/strategies/adopt.rb +56 -0
- data/lib/rosett_ai/rai_config.rb +107 -0
- data/lib/rosett_ai/retrofit/base_parser.rb +66 -0
- data/lib/rosett_ai/retrofit/engine.rb +171 -0
- data/lib/rosett_ai/retrofit/parsers/agents_md_parser.rb +50 -0
- data/lib/rosett_ai/retrofit/parsers/claude_parser.rb +69 -0
- data/lib/rosett_ai/retrofit/parsers/cursor_parser.rb +82 -0
- data/lib/rosett_ai/retrofit/round_trip_validator.rb +65 -0
- data/lib/rosett_ai/retrofit/scanner.rb +47 -0
- data/lib/rosett_ai/retrofit/secret_detector.rb +87 -0
- data/lib/rosett_ai/secrets_resolver.rb +71 -0
- data/lib/rosett_ai/smart_feedback/suggester.rb +83 -0
- data/lib/rosett_ai/smart_feedback/thor_middleware.rb +84 -0
- data/lib/rosett_ai/structured_logger.rb +110 -0
- data/lib/rosett_ai/telemetry/json_lines_writer.rb +50 -0
- data/lib/rosett_ai/telemetry/log_rotator.rb +67 -0
- data/lib/rosett_ai/telemetry/provider.rb +26 -0
- data/lib/rosett_ai/telemetry/reporter.rb +144 -0
- data/lib/rosett_ai/telemetry.rb +47 -0
- data/lib/rosett_ai/text_sanitizer.rb +62 -0
- data/lib/rosett_ai/thor/cli.rb +269 -0
- data/lib/rosett_ai/thor/tasks/adopt.rb +250 -0
- data/lib/rosett_ai/thor/tasks/backup.rb +420 -0
- data/lib/rosett_ai/thor/tasks/behaviour.rb +474 -0
- data/lib/rosett_ai/thor/tasks/build.rb +1162 -0
- data/lib/rosett_ai/thor/tasks/compile.rb +415 -0
- data/lib/rosett_ai/thor/tasks/completion.rb +123 -0
- data/lib/rosett_ai/thor/tasks/comply.rb +82 -0
- data/lib/rosett_ai/thor/tasks/config.rb +265 -0
- data/lib/rosett_ai/thor/tasks/content.rb +193 -0
- data/lib/rosett_ai/thor/tasks/dbus.rb +321 -0
- data/lib/rosett_ai/thor/tasks/design.rb +258 -0
- data/lib/rosett_ai/thor/tasks/desktop.rb +129 -0
- data/lib/rosett_ai/thor/tasks/doctor.rb +127 -0
- data/lib/rosett_ai/thor/tasks/documentation.rb +321 -0
- data/lib/rosett_ai/thor/tasks/engines.rb +167 -0
- data/lib/rosett_ai/thor/tasks/hooks.rb +219 -0
- data/lib/rosett_ai/thor/tasks/init.rb +259 -0
- data/lib/rosett_ai/thor/tasks/license.rb +120 -0
- data/lib/rosett_ai/thor/tasks/mcp.rb +535 -0
- data/lib/rosett_ai/thor/tasks/migrate.rb +121 -0
- data/lib/rosett_ai/thor/tasks/plugins.rb +157 -0
- data/lib/rosett_ai/thor/tasks/project.rb +260 -0
- data/lib/rosett_ai/thor/tasks/provenance.rb +195 -0
- data/lib/rosett_ai/thor/tasks/release.rb +314 -0
- data/lib/rosett_ai/thor/tasks/retrofit.rb +90 -0
- data/lib/rosett_ai/thor/tasks/tooling.rb +308 -0
- data/lib/rosett_ai/thor/tasks/validate.rb +108 -0
- data/lib/rosett_ai/thor/tasks/workflow.rb +196 -0
- data/lib/rosett_ai/tooling/ci_yaml_validator.rb +37 -0
- data/lib/rosett_ai/tooling/version_checker.rb +35 -0
- data/lib/rosett_ai/ui/accessible_tui.rb +61 -0
- data/lib/rosett_ai/ui/base.rb +46 -0
- data/lib/rosett_ai/ui/gtk4.rb +98 -0
- data/lib/rosett_ai/ui/kde.rb +40 -0
- data/lib/rosett_ai/ui/qt6.rb +40 -0
- data/lib/rosett_ai/ui/registry.rb +60 -0
- data/lib/rosett_ai/ui/tty_helper.rb +74 -0
- data/lib/rosett_ai/ui/tui.rb +59 -0
- data/lib/rosett_ai/validators/behaviour_validator.rb +20 -0
- data/lib/rosett_ai/validators/design_validator.rb +17 -0
- data/lib/rosett_ai/validators/schema_validator.rb +84 -0
- data/lib/rosett_ai/validators/tooling_validator.rb +17 -0
- data/lib/rosett_ai/version.rb +8 -0
- data/lib/rosett_ai/version_consistency_checker.rb +129 -0
- data/lib/rosett_ai/workflow/audit_log.rb +86 -0
- data/lib/rosett_ai/workflow/engine.rb +142 -0
- data/lib/rosett_ai/workflow/manager.rb +82 -0
- data/lib/rosett_ai/workflow/schema_validator.rb +71 -0
- data/lib/rosett_ai/workflow/step_runner.rb +61 -0
- data/lib/rosett_ai/workflow/steps/prompt_step.rb +62 -0
- data/lib/rosett_ai/workflow/steps/rai_step.rb +74 -0
- data/lib/rosett_ai/workflow/steps/shell_step.rb +53 -0
- data/lib/rosett_ai/yaml_loader.rb +78 -0
- data/lib/rosett_ai.rb +221 -0
- data/lib/rubocop/cop/rosett_ai/shell_interpolation.rb +54 -0
- data/lib/rubocop/cop/rosett_ai/unsafe_const_get.rb +60 -0
- data/lib/rubocop/cop/rosett_ai/unsafe_send.rb +50 -0
- data/lib/rubocop/cop/rosett_ai/unsafe_yaml_load.rb +40 -0
- data/lib/rubocop/rosett_ai.rb +9 -0
- data/lib/scripts/generated/docker_hub_tags.rb +126 -0
- data/locales/.gitkeep +0 -0
- data/locales/ar.yml +579 -0
- data/locales/en.yml +571 -0
- data/locales/fr.yml +567 -0
- data/packaging/build-engine-deb.sh +81 -0
- data/packaging/scripts/postinst +17 -0
- data/packaging/scripts/postrm +19 -0
- data/packaging/scripts/prerm +10 -0
- data/packaging/wrapper.sh.template +38 -0
- data/rosett-ai.gemspec +63 -0
- data/rules/.gitkeep +0 -0
- data/scripts/publish/pulp_upload.sh +123 -0
- data/settings.json +29 -0
- data/share/applications/be.neatnerds.rosettai.desktop +29 -0
- data/share/dbus-1/interfaces/be.neatnerds.rosettai.xml +103 -0
- data/share/dbus-1/services/be.neatnerds.rosettai.service +3 -0
- data/share/templates/behaviour/criticalthinking.yml +69 -0
- metadata +810 -0
data/locales/ar.yml
ADDED
|
@@ -0,0 +1,579 @@
|
|
|
1
|
+
---
|
|
2
|
+
ar:
|
|
3
|
+
rosett_ai:
|
|
4
|
+
meta:
|
|
5
|
+
direction: rtl
|
|
6
|
+
language_name: "Arabic"
|
|
7
|
+
language_name_native: "العربية"
|
|
8
|
+
cli:
|
|
9
|
+
version: "rosett-ai الإصدار %{version}"
|
|
10
|
+
compile:
|
|
11
|
+
success:
|
|
12
|
+
zero: "لم يتم تجميع أي قاعدة"
|
|
13
|
+
one: "تم تجميع قاعدة واحدة بنجاح"
|
|
14
|
+
two: "تم تجميع قاعدتين بنجاح"
|
|
15
|
+
few: "تم تجميع %{count} قواعد بنجاح"
|
|
16
|
+
many: "تم تجميع %{count} قاعدة بنجاح"
|
|
17
|
+
other: "تم تجميع %{count} قاعدة بنجاح"
|
|
18
|
+
no_categories: "لم يتم العثور على فئات قابلة للتجميع."
|
|
19
|
+
simulate_prefix: "سيتم"
|
|
20
|
+
discovered_categories: "الفئات المكتشفة:"
|
|
21
|
+
would_update: "سيتم تحديث: %{filename}"
|
|
22
|
+
would_create: "سيتم إنشاء: %{filename}"
|
|
23
|
+
would_remove_orphan: "سيتم إزالة الملف اليتيم: %{filename}"
|
|
24
|
+
removed_orphan: "تمت إزالة الملف اليتيم: %{filename}"
|
|
25
|
+
unchanged: "بدون تغيير: %{filename}"
|
|
26
|
+
created: "تم الإنشاء"
|
|
27
|
+
updated: "تم التحديث"
|
|
28
|
+
wrote_lockfile: "تمت كتابة ملف القفل: %{path}"
|
|
29
|
+
summary_title: "ملخص التجميع"
|
|
30
|
+
action: "الإجراء"
|
|
31
|
+
count: "العدد"
|
|
32
|
+
locale_simulate: "سيتم تجميع ملفات اللغة إلى صيغ gettext و Qt"
|
|
33
|
+
locale_gettext_compiled: "تم تجميع %{count} ملف(ات) gettext"
|
|
34
|
+
locale_qt_compiled: "تم تجميع %{count} ملف(ات) Qt Linguist"
|
|
35
|
+
target_deprecated: "[مهمل] --target مهمل، استخدم --engine بدلاً منه"
|
|
36
|
+
target_deprecated_strict: "--target مهمل. استخدم --engine بدلاً منه (وضع --strict)"
|
|
37
|
+
engine_and_target_conflict: "لا يمكن استخدام --engine و --target معاً. استخدم --engine فقط."
|
|
38
|
+
config:
|
|
39
|
+
scope_not_found: "ملف النطاق غير موجود: %{path}. النطاقات الصالحة: %{scopes}"
|
|
40
|
+
no_scopes: "لم يتم العثور على ملفات نطاق في conf/claude_code/"
|
|
41
|
+
compiled: "تم تجميع %{source} ← %{target}"
|
|
42
|
+
config_updated: "تم تحديث %{source} ← %{target}"
|
|
43
|
+
unchanged: "بدون تغيير: %{source}"
|
|
44
|
+
skipped: "تم التخطي: %{source}"
|
|
45
|
+
summary_title: "ملخص تجميع الإعدادات"
|
|
46
|
+
failed_compilation: "فشل تجميع %{count} ملف(ات) نطاق"
|
|
47
|
+
failed_to_compile: "فشل تجميع %{basename}"
|
|
48
|
+
no_config_compiler: "المحرك '%{engine}' لا يدعم تجميع الإعدادات"
|
|
49
|
+
engine_not_found: "المحرك '%{engine}' غير موجود. %{hint}"
|
|
50
|
+
no_engines_hint: "لا توجد إضافات محركات مثبتة. قم بالتثبيت باستخدام: apt install %{package}"
|
|
51
|
+
available_engines: "المحركات المتاحة: %{engines}"
|
|
52
|
+
design:
|
|
53
|
+
no_documents: "لا توجد مستندات تصميم للتحقق منها."
|
|
54
|
+
validation_failed: "فشل التحقق"
|
|
55
|
+
not_found: "مستند التصميم '%{name}' غير موجود."
|
|
56
|
+
no_documents_found: "لم يتم العثور على مستندات تصميم."
|
|
57
|
+
valid: "صالح"
|
|
58
|
+
invalid: "غير صالح"
|
|
59
|
+
title: "مستندات التصميم"
|
|
60
|
+
name: "الاسم"
|
|
61
|
+
design_version: "الإصدار"
|
|
62
|
+
status: "الحالة"
|
|
63
|
+
domain: "المجال"
|
|
64
|
+
priority: "الأولوية"
|
|
65
|
+
intent: "الهدف"
|
|
66
|
+
constraints: "القيود"
|
|
67
|
+
acceptance_criteria: "معايير القبول"
|
|
68
|
+
dependencies: "التبعيات"
|
|
69
|
+
examples: "أمثلة"
|
|
70
|
+
scenario: "السيناريو:"
|
|
71
|
+
expected: "المتوقع:"
|
|
72
|
+
not_expected: "غير متوقع:"
|
|
73
|
+
anti_patterns: "الأنماط المضادة"
|
|
74
|
+
preferences: "التفضيلات"
|
|
75
|
+
behaviour:
|
|
76
|
+
no_files: "لم يتم العثور على ملفات سلوك في conf/behaviour/"
|
|
77
|
+
no_files_short: "لم يتم العثور على ملفات سلوك."
|
|
78
|
+
not_found: "السلوك '%{name}' غير موجود."
|
|
79
|
+
no_validate: "لا توجد ملفات سلوك للتحقق منها."
|
|
80
|
+
files_title: "ملفات السلوك:"
|
|
81
|
+
table_title: "إعدادات السلوك"
|
|
82
|
+
already_exists: "السلوك '%{name}' موجود بالفعل في %{path}"
|
|
83
|
+
created: "تم إنشاء السلوك '%{name}' بنجاح في %{path}"
|
|
84
|
+
updated: "تم تحديث السلوك '%{name}' بنجاح."
|
|
85
|
+
deleted: "تم حذف السلوك '%{name}'."
|
|
86
|
+
validation_failed_label: "فشل التحقق:"
|
|
87
|
+
referenced_in: "هذا السلوك مُشار إليه في:"
|
|
88
|
+
delete_confirm: "هل أنت متأكد أنك تريد حذف '%{name}'؟"
|
|
89
|
+
valid: "صالح"
|
|
90
|
+
invalid: "غير صالح"
|
|
91
|
+
validation_failed: "فشل التحقق"
|
|
92
|
+
yaml_syntax_error: "YAML غير صالح في %{path}: %{detail}"
|
|
93
|
+
adopt:
|
|
94
|
+
no_files: "لم يتم العثور على ملفات قواعد مُدارة."
|
|
95
|
+
found_files:
|
|
96
|
+
zero: "لم يتم العثور على أي ملف قواعد مُدار"
|
|
97
|
+
one: "تم العثور على ملف قواعد مُدار واحد"
|
|
98
|
+
two: "تم العثور على ملفي قواعد مُداران"
|
|
99
|
+
few: "تم العثور على %{count} ملفات قواعد مُدارة"
|
|
100
|
+
many: "تم العثور على %{count} ملف قواعد مُدار"
|
|
101
|
+
other: "تم العثور على %{count} ملف قواعد مُدار"
|
|
102
|
+
sensitive_skipped: "الملفات الحساسة التي تم تخطيها: %{count}"
|
|
103
|
+
sensitive_label: "(حساس)"
|
|
104
|
+
local_checks: "جارٍ تشغيل الفحوصات الهيكلية المحلية فقط"
|
|
105
|
+
analyzing: "جارٍ تحليل القواعد..."
|
|
106
|
+
cached: "(مخزن مؤقتاً)"
|
|
107
|
+
cache_hit: "إصابة ذاكرة مؤقتة — تطابق المجموع الاختباري"
|
|
108
|
+
done: "تم"
|
|
109
|
+
failed: "فشل"
|
|
110
|
+
no_issues: "لم يتم العثور على مشاكل."
|
|
111
|
+
status_label: "الحالة: %{status} %{summary}"
|
|
112
|
+
sensitive_skipped_title: "الملفات الحساسة (تم تخطيها من تحليل API):"
|
|
113
|
+
error_prefix: "خطأ: %{message}"
|
|
114
|
+
backup:
|
|
115
|
+
success: "تم إنشاء النسخة الاحتياطية بنجاح"
|
|
116
|
+
destination: "الوجهة: %{path}"
|
|
117
|
+
no_scope: "خطأ: يجب تحديد واحد على الأقل من --global أو --local."
|
|
118
|
+
no_files: "لم يتم العثور على ملفات للنسخ الاحتياطي."
|
|
119
|
+
creating: "جارٍ إنشاء أرشيف النسخة الاحتياطية..."
|
|
120
|
+
compression_unavailable: "الضغط '%{type}' غير متاح على هذا النظام."
|
|
121
|
+
backup_failed: "فشل النسخ الاحتياطي: %{message}"
|
|
122
|
+
summary_title: "ملخص النسخ الاحتياطي"
|
|
123
|
+
status_unchanged: "موافق (بدون تغيير)"
|
|
124
|
+
status_created: "تم الإنشاء"
|
|
125
|
+
status_updated: "تم التحديث"
|
|
126
|
+
files_archived: "الملفات المؤرشفة"
|
|
127
|
+
archive_size: "حجم الأرشيف"
|
|
128
|
+
internal_only: "الأمر '%{command}' متاح فقط داخل مستودع rosett-ai."
|
|
129
|
+
build_package_internal_only: "الأمر 'build package' متاح فقط داخل مستودع rosett-ai."
|
|
130
|
+
build_engine:
|
|
131
|
+
no_gemspec: "لم يتم العثور على rosett-ai-engine-*.gemspec في %{dir}. شغّل هذا الأمر من مجلد engine أو استخدم --path."
|
|
132
|
+
multiple_gemspecs: "عدة ملفات rosett-ai-engine-*.gemspec في %{dir}. يُتوقع ملف واحد فقط."
|
|
133
|
+
init:
|
|
134
|
+
no_scope: "خطأ: يجب تحديد واحد على الأقل من --global أو --local أو --project."
|
|
135
|
+
global_init: "جارٍ تهيئة بنية ~/.claude/ العامة..."
|
|
136
|
+
local_init: "جارٍ تهيئة بنية .claude/ المحلية..."
|
|
137
|
+
project_init: "جارٍ تهيئة بنية .rosett-ai/ للمشروع..."
|
|
138
|
+
project_exists: "بنية المشروع موجودة بالفعل: %{path}"
|
|
139
|
+
compiling: "جارٍ تجميع القواعد..."
|
|
140
|
+
done: "تم"
|
|
141
|
+
failed: "فشل"
|
|
142
|
+
init_failed: "فشلت التهيئة: %{message}"
|
|
143
|
+
compile_skipped_hint: "قم بتشغيل 'raictl compile' بعد تثبيت إضافة محرك."
|
|
144
|
+
summary_title: "ملخص التهيئة"
|
|
145
|
+
item: "العنصر"
|
|
146
|
+
count: "العدد"
|
|
147
|
+
dirs_created: "تم إنشاء %{prefix} مجلدات"
|
|
148
|
+
files_copied: "تم نسخ %{prefix} ملفات"
|
|
149
|
+
config_created: "تم إنشاء ملف الإعدادات: %{path}"
|
|
150
|
+
config_exists: "ملف الإعدادات موجود: %{path}"
|
|
151
|
+
detected_engines_title: "المحركات المكتشفة:"
|
|
152
|
+
detected: "تم الاكتشاف"
|
|
153
|
+
not_detected: "لم يتم الاكتشاف"
|
|
154
|
+
edit_config_hint: "حرّر %{path} لتعيين المحرك الافتراضي."
|
|
155
|
+
mcp_registered: "تم تسجيل خادم MCP rosett-ai في %{path}"
|
|
156
|
+
mcp_already_registered: "خادم MCP rosett-ai مسجل بالفعل"
|
|
157
|
+
mcp_skipped: "تم تخطي تسجيل MCP: %{reason}"
|
|
158
|
+
validate:
|
|
159
|
+
valid: "صالح"
|
|
160
|
+
invalid: "غير صالح"
|
|
161
|
+
summary_title: "ملخص التحقق"
|
|
162
|
+
category: "الفئة"
|
|
163
|
+
files: "الملفات"
|
|
164
|
+
passed: "ناجح"
|
|
165
|
+
failed_label: "فاشل"
|
|
166
|
+
status: "الحالة"
|
|
167
|
+
ok: "موافق"
|
|
168
|
+
fail: "فشل"
|
|
169
|
+
total: "المجموع"
|
|
170
|
+
validation_failed: "فشل التحقق"
|
|
171
|
+
documentation:
|
|
172
|
+
no_updates: "لا توجد تحديثات للتوثيق مطلوبة."
|
|
173
|
+
scan_complete: "اكتمل الفحص!"
|
|
174
|
+
updating: "جارٍ تحديث التوثيق..."
|
|
175
|
+
done: "تم!"
|
|
176
|
+
pending_updates: "تحديثات التوثيق المعلقة:"
|
|
177
|
+
status_title: "حالة التوثيق"
|
|
178
|
+
doc_files: "ملفات التوثيق: %{count}"
|
|
179
|
+
configured_locales: "اللغات المُعدة: %{count}"
|
|
180
|
+
undocumented: "الدوال العامة غير الموثقة"
|
|
181
|
+
not_in_behaviour_md: "غير موثق في BEHAVIOUR.md"
|
|
182
|
+
gemfile_newer: "Gemfile أحدث من SETUP.md"
|
|
183
|
+
updating_api: "جارٍ تحديث توثيق API لـ %{file} (%{target_locale})"
|
|
184
|
+
updating_behaviour: "جارٍ تحديث توثيق السلوك لـ %{file} (%{target_locale})"
|
|
185
|
+
updating_setup: "جارٍ تحديث SETUP.md (%{target_locale})"
|
|
186
|
+
translate_source_missing: "الملف المصدر غير موجود: %{path}"
|
|
187
|
+
translate_done: "تمت الترجمة إلى %{path}"
|
|
188
|
+
reference:
|
|
189
|
+
stale: "ملف المرجع التقني PDF قديم (تم تغيير الملفات المصدرية)"
|
|
190
|
+
missing: "ملف المرجع التقني PDF غير موجود"
|
|
191
|
+
compiling: "جارٍ تجميع المرجع التقني بـ LaTeX..."
|
|
192
|
+
compiled: "تم تجميع المرجع التقني: %{path}"
|
|
193
|
+
tools_missing: "أدوات LaTeX غير متاحة (ناقص: %{tools}). تم تخطي تجميع المرجع."
|
|
194
|
+
tooling:
|
|
195
|
+
no_ci_files: "لم يتم العثور على ملفات GitLab CI YAML."
|
|
196
|
+
no_tooling_files: "لا توجد ملفات أدوات للتحقق منها."
|
|
197
|
+
not_found: "ملف الأداة '%{name}' غير موجود."
|
|
198
|
+
valid: "صالح"
|
|
199
|
+
invalid: "غير صالح"
|
|
200
|
+
ok: "موافق"
|
|
201
|
+
fail: "فشل"
|
|
202
|
+
ci_title: "التحقق من صيغة GitLab CI YAML"
|
|
203
|
+
ci_valid: "صالح"
|
|
204
|
+
ci_invalid: "غير صالح"
|
|
205
|
+
version_title: "فحص تناسق الإصدارات"
|
|
206
|
+
expected_version: "الإصدار المتوقع"
|
|
207
|
+
total_references: "إجمالي المراجع"
|
|
208
|
+
mismatches: "عدم التطابقات"
|
|
209
|
+
mismatch: "عدم تطابق"
|
|
210
|
+
missing: "مفقود"
|
|
211
|
+
conflict: "تعارض"
|
|
212
|
+
gem_title: "تناسق إصدارات الجواهر"
|
|
213
|
+
gem_total: "إجمالي الجواهر"
|
|
214
|
+
gem_ok: "موافق"
|
|
215
|
+
gem_problems: "مشاكل"
|
|
216
|
+
gem_stale_refs: "مراجع قديمة"
|
|
217
|
+
gem_stale_reference: "قديم"
|
|
218
|
+
gem_status_missing: "مفقود"
|
|
219
|
+
gem_status_conflict: "تعارض"
|
|
220
|
+
validation_failed: "فشل التحقق"
|
|
221
|
+
ci_validation_failed: "فشل التحقق من صيغة CI YAML"
|
|
222
|
+
version_check_failed: "فشل فحص تناسق الإصدارات"
|
|
223
|
+
license:
|
|
224
|
+
activate:
|
|
225
|
+
success: "تم تفعيل الرخصة: الطبقة %{tier}. لديك صلاحية الوصول إلى حزم المحتوى المميزة."
|
|
226
|
+
invalid: "مفتاح رخصة غير صالح: %{reason}"
|
|
227
|
+
status:
|
|
228
|
+
title: "حالة الرخصة"
|
|
229
|
+
tier_label: "الطبقة"
|
|
230
|
+
valid_label: "صالح"
|
|
231
|
+
community: "لم يتم العثور على مفتاح رخصة. يعمل كطبقة مجتمعية (وظائف البرنامج كاملة)."
|
|
232
|
+
warning_prefix: "تحذير"
|
|
233
|
+
deactivate:
|
|
234
|
+
success: "تم إلغاء تفعيل الرخصة. تم الرجوع إلى الطبقة المجتمعية."
|
|
235
|
+
not_found: "لم يتم العثور على مفتاح رخصة."
|
|
236
|
+
content:
|
|
237
|
+
list:
|
|
238
|
+
header: "حزم المحتوى المثبتة"
|
|
239
|
+
available_header: "حزم المحتوى المتاحة"
|
|
240
|
+
no_packs: "لا توجد حزم محتوى مثبتة."
|
|
241
|
+
name: "الاسم"
|
|
242
|
+
version_col: "الإصدار"
|
|
243
|
+
tier: "الطبقة"
|
|
244
|
+
description: "الوصف"
|
|
245
|
+
install:
|
|
246
|
+
downloading: "جارٍ تنزيل %{name}..."
|
|
247
|
+
verifying: "جارٍ التحقق من التوقيع..."
|
|
248
|
+
success: "تم تثبيت %{name} الإصدار %{version} (%{behaviours} سلوكيات، %{designs} تصاميم)."
|
|
249
|
+
tampered: "توقيع حزمة المحتوى غير صالح. لم يتم تثبيت الحزمة."
|
|
250
|
+
tier_required: "%{name} يتطلب طبقة %{required}. طبقتك: %{current}."
|
|
251
|
+
not_found: "حزمة المحتوى '%{name}' غير موجودة."
|
|
252
|
+
update:
|
|
253
|
+
checking: "جارٍ فحص %{name}..."
|
|
254
|
+
success: "تم تحديث جميع حزم المحتوى."
|
|
255
|
+
offline: "تعذر الاتصال بخادم المحتوى. حزم المحتوى الحالية بدون تغيير."
|
|
256
|
+
release:
|
|
257
|
+
prepare:
|
|
258
|
+
success: "تم تحضير الإصدار v%{version} بنجاح."
|
|
259
|
+
next_steps: "الخطوات التالية: راجع الإيداع، ثم قم بتشغيل 'bin/raictl release tag' لإنشاء الوسم v%{version}."
|
|
260
|
+
invalid_level: "مستوى إصدار غير صالح '%{level}'. المستويات الصالحة: %{valid}"
|
|
261
|
+
dirty_tree: "شجرة العمل تحتوي على تغييرات غير مُودعة. قم بالإيداع أو التخزين المؤقت قبل الإصدار."
|
|
262
|
+
running_gates: "جارٍ تشغيل مجموعة التحقق..."
|
|
263
|
+
gates_passed: "نجحت جميع بوابات التحقق."
|
|
264
|
+
gate_ok: "موافق"
|
|
265
|
+
gate_fail: "فشل"
|
|
266
|
+
gate_abort: "فشلت مجموعة التحقق (%{gate}). أصلح المشاكل قبل الإصدار."
|
|
267
|
+
version_bumped: "تم رفع الإصدار: %{old} ← %{new}"
|
|
268
|
+
changelog_updated: "تم تحديث CHANGELOG.md."
|
|
269
|
+
commit_created: "تم إنشاء إيداع الإصدار v%{version}."
|
|
270
|
+
git_add_failed: "فشل git add لملفات الإصدار (version.rb، CHANGELOG.md)."
|
|
271
|
+
git_commit_failed: "فشل git commit (هل رفض hook pre-commit؟)."
|
|
272
|
+
tag:
|
|
273
|
+
success: "تم إنشاء الوسم %{tag}."
|
|
274
|
+
exists: "الوسم %{tag} موجود بالفعل."
|
|
275
|
+
git_tag_failed: "فشل إنشاء الوسم %{tag}."
|
|
276
|
+
status:
|
|
277
|
+
title: "حالة الإصدار"
|
|
278
|
+
version_label: "الإصدار الحالي"
|
|
279
|
+
last_tag_label: "آخر وسم"
|
|
280
|
+
commits_label: "الإيداعات منذ آخر وسم"
|
|
281
|
+
no_tags: "(لا يوجد)"
|
|
282
|
+
build:
|
|
283
|
+
summary_title: "ملخص البناء"
|
|
284
|
+
build_id: "معرّف البناء"
|
|
285
|
+
architecture: "البنية المعمارية"
|
|
286
|
+
ruby_version: "إصدار Ruby"
|
|
287
|
+
stages: "المراحل"
|
|
288
|
+
result: "النتيجة"
|
|
289
|
+
output: "المخرجات"
|
|
290
|
+
build_log: "سجل البناء"
|
|
291
|
+
duration: "المدة"
|
|
292
|
+
success: "نجاح"
|
|
293
|
+
failed: "فشل"
|
|
294
|
+
done: "تم"
|
|
295
|
+
engines:
|
|
296
|
+
list_title: "المحركات المتاحة"
|
|
297
|
+
detect_title: "اكتشاف المحركات"
|
|
298
|
+
status_title: "حالة المحركات"
|
|
299
|
+
name: "الاسم"
|
|
300
|
+
display_name: "الاسم المعروض"
|
|
301
|
+
version: "الإصدار"
|
|
302
|
+
engine: "المحرك"
|
|
303
|
+
check_type: "الفحص"
|
|
304
|
+
check_name: "الهدف"
|
|
305
|
+
status: "الحالة"
|
|
306
|
+
detected: "تم الاكتشاف"
|
|
307
|
+
default: "افتراضي"
|
|
308
|
+
default_engine: "المحرك الافتراضي"
|
|
309
|
+
found: "موجود"
|
|
310
|
+
not_found: "غير موجود"
|
|
311
|
+
yes: "نعم"
|
|
312
|
+
no: "لا"
|
|
313
|
+
no_detector: "غير متاح"
|
|
314
|
+
plugins_title: "إضافات المحركات المسجلة"
|
|
315
|
+
no_plugins: "لا توجد إضافات محركات مسجلة."
|
|
316
|
+
dbus:
|
|
317
|
+
status_title: "حالة خدمة D-Bus"
|
|
318
|
+
not_running: "خدمة D-Bus غير مشغلة"
|
|
319
|
+
start_hint: "ابدأ بـ: %{command}"
|
|
320
|
+
already_running: "خدمة D-Bus قيد التشغيل بالفعل"
|
|
321
|
+
starting: "جارٍ تشغيل خدمة D-Bus..."
|
|
322
|
+
press_ctrl_c: "اضغط Ctrl+C للإيقاف"
|
|
323
|
+
started_background: "تم تشغيل خدمة D-Bus في الخلفية (PID: %{pid})"
|
|
324
|
+
stopped: "تم إيقاف خدمة D-Bus"
|
|
325
|
+
start_failed: "فشل تشغيل خدمة D-Bus"
|
|
326
|
+
bus_unavailable: "ناقل جلسة D-Bus غير متاح"
|
|
327
|
+
bus_unavailable_hint: "تأكد من أن D-Bus يعمل وأن DBUS_SESSION_BUS_ADDRESS مُعيّن."
|
|
328
|
+
error_querying: "خطأ في استعلام الخدمة: %{message}"
|
|
329
|
+
detect_title: "اكتشاف المُركِّب"
|
|
330
|
+
detected: "تم الاكتشاف"
|
|
331
|
+
adapter: "المحول"
|
|
332
|
+
env_title: "متغيرات البيئة"
|
|
333
|
+
adapter_none: "لا يوجد (مُركِّب غير معروف)"
|
|
334
|
+
property: "الخاصية"
|
|
335
|
+
value: "القيمة"
|
|
336
|
+
variable: "المتغير"
|
|
337
|
+
not_set: "(غير مُعيّن)"
|
|
338
|
+
missing_dependency: "تتطلب ميزات سطح المكتب جوهرة ruby-dbus. التثبيت: apt install rosett-ai-gtk4"
|
|
339
|
+
desktop:
|
|
340
|
+
status_title: "حالة تكامل سطح المكتب"
|
|
341
|
+
gtk4_label: "GTK4/Adwaita"
|
|
342
|
+
dbus_label: "خدمة D-Bus"
|
|
343
|
+
available: "متاح"
|
|
344
|
+
not_installed: "غير مثبت"
|
|
345
|
+
running: "قيد التشغيل"
|
|
346
|
+
not_running: "غير مشغل"
|
|
347
|
+
to_enable_gtk4: "لتفعيل دعم GTK4:"
|
|
348
|
+
install_adwaita: "gem install adwaita"
|
|
349
|
+
install_pkg: "أو: apt install rosett-ai-gtk4"
|
|
350
|
+
to_start_dbus: "لتشغيل خدمة D-Bus:"
|
|
351
|
+
unavailable: "GTK4/Adwaita غير متاح."
|
|
352
|
+
plugins:
|
|
353
|
+
title: "الإضافات المثبتة"
|
|
354
|
+
no_plugins: "لا توجد إضافات %{type} مسجلة."
|
|
355
|
+
name: "الاسم"
|
|
356
|
+
display_name: "اسم العرض"
|
|
357
|
+
version: "الإصدار"
|
|
358
|
+
type: "النوع"
|
|
359
|
+
installing: "جارٍ تثبيت %{package}..."
|
|
360
|
+
installed: "تم تثبيت %{package} بنجاح."
|
|
361
|
+
install_failed: "فشل تثبيت %{package}."
|
|
362
|
+
removing: "جارٍ إزالة %{package}..."
|
|
363
|
+
removed: "تمت إزالة %{package} بنجاح."
|
|
364
|
+
remove_failed: "فشل إزالة %{package}."
|
|
365
|
+
invalid_type: "نوع إضافة غير صالح: %{type}. الأنواع الصالحة: engine، gui، mcp"
|
|
366
|
+
composition:
|
|
367
|
+
composing: "جارٍ تركيب %{count} ملف(ات) سلوك..."
|
|
368
|
+
scope_resolved: " %{name}: النطاق=%{scope} (%{count} قواعد)"
|
|
369
|
+
conflict_warning: "تحذير: %{message}"
|
|
370
|
+
conflict_error: "خطأ: %{message}"
|
|
371
|
+
no_conflicts: "لم يتم اكتشاف تعارضات في معرّفات القواعد."
|
|
372
|
+
conflicts_title: "تعارضات معرّفات القواعد"
|
|
373
|
+
circular_dependency: "تم اكتشاف تبعية دائرية: %{cycle}"
|
|
374
|
+
lockfile_written: "تمت كتابة ملف القفل: %{path}"
|
|
375
|
+
lockfile_stale: "تغيرت ملفات السلوك منذ القفل — شغّل 'bin/raictl compile --vendor' للتحديث."
|
|
376
|
+
lockfile_frozen: "استخدام التركيب المجمّد من ملف القفل."
|
|
377
|
+
sensitive_excluded: "استبعاد %{count} قاعدة حساسة من هدف %{target}"
|
|
378
|
+
trace_header: "تتبع التركيب:"
|
|
379
|
+
trace_entry: " #%{position}: %{rule_id} ← %{behaviour} (نطاق=%{scope}، أولوية=%{priority})"
|
|
380
|
+
security_override: "لا يمكن تجاوز القاعدة الأمنية %{rule_id} بقاعدة غير أمنية من %{behaviour}"
|
|
381
|
+
provenance:
|
|
382
|
+
init_created: "تم إنشاء ملف المصدر: %{path}"
|
|
383
|
+
init_exists: "ملف المصدر موجود بالفعل: %{path}"
|
|
384
|
+
entry_added: "تمت إضافة إدخال المصدر للإيداع %{commit}"
|
|
385
|
+
validate_valid: "ملف المصدر صالح (%{count} إدخالات)"
|
|
386
|
+
validate_invalid: "فشل التحقق من المصدر:"
|
|
387
|
+
validate_error: " - %{error}"
|
|
388
|
+
show_commit_title: "مصدر الإيداع %{commit}"
|
|
389
|
+
show_file_title: "مصدر الملف %{path}"
|
|
390
|
+
show_no_entries: "لم يتم العثور على إدخالات مصدر"
|
|
391
|
+
show_entry: " %{role}: %{tool} (%{timestamp})"
|
|
392
|
+
file_not_found: "ملف المصدر غير موجود. قم بتشغيل 'raictl provenance init' أولاً."
|
|
393
|
+
file_too_large: "ملف المصدر يتجاوز حد الحجم"
|
|
394
|
+
trailer_generated: "تم إنشاء %{count} مقطع(مقاطع) تعليق الإيداع"
|
|
395
|
+
ai_config:
|
|
396
|
+
compile_start: "تجميع تكوين الذكاء الاصطناعي للمحرك '%{engine}'..."
|
|
397
|
+
model_resolved: " %{task}: %{tier} -> %{model}"
|
|
398
|
+
unsupported_warning: "تحذير: %{message}"
|
|
399
|
+
compile_complete: "تم تجميع تكوين الذكاء الاصطناعي (%{count} إعدادات)"
|
|
400
|
+
validate_valid: "تكوين الذكاء الاصطناعي صالح"
|
|
401
|
+
validate_invalid: "فشل التحقق من تكوين الذكاء الاصطناعي:"
|
|
402
|
+
validate_error: " - %{error}"
|
|
403
|
+
fallback_warning: "تحذير: %{message}"
|
|
404
|
+
strict_error: "خطأ (الوضع الصارم): %{message}"
|
|
405
|
+
no_config: "لم يتم العثور على تكوين الذكاء الاصطناعي في %{path}"
|
|
406
|
+
authorship:
|
|
407
|
+
status_title: "حالة الإفصاح عن التأليف"
|
|
408
|
+
disclosure_level: "مستوى الإفصاح: %{level}"
|
|
409
|
+
no_provenance: "لا تتوفر بيانات المصدر"
|
|
410
|
+
recent_attributions: "إسنادات الذكاء الاصطناعي الأخيرة:"
|
|
411
|
+
no_attributions: "لم يتم العثور على إسنادات ذكاء اصطناعي"
|
|
412
|
+
self_review_warning: "تم الكشف عن مراجعة ذاتية: المراجع يطابق مؤلف الإيداع"
|
|
413
|
+
self_review_error: "تم رفض المراجعة الذاتية: يجب أن يختلف المراجع عن مؤلف الإيداع (--strict)"
|
|
414
|
+
attribution_compiled: "تم تجميع إسناد التأليف لمحرك %{engine}"
|
|
415
|
+
attribution_skipped: "تم تخطي إسناد التأليف (الإفصاح: none)"
|
|
416
|
+
engine_no_trailers: "المحرك '%{engine}' لا يدعم تعليقات الإيداع"
|
|
417
|
+
policy:
|
|
418
|
+
init_created: "تم إنشاء مجلد السياسات: %{path}"
|
|
419
|
+
init_exists: "مجلد السياسات موجود بالفعل: %{path}"
|
|
420
|
+
validate_valid: "ملف السياسة صالح"
|
|
421
|
+
validate_invalid: "فشل التحقق من السياسة:"
|
|
422
|
+
validate_error: " - %{error}"
|
|
423
|
+
show_title: "السياسات النشطة"
|
|
424
|
+
show_tier: "المستوى: %{tier}"
|
|
425
|
+
show_scope: "النطاق: %{scope}"
|
|
426
|
+
show_deny_patterns: "قائمة الرفض: %{count} أنماط"
|
|
427
|
+
show_protected_files: "الملفات المحمية: %{count}"
|
|
428
|
+
audit_title: "تدقيق الامتثال للسياسات"
|
|
429
|
+
audit_deny_patterns: "أنماط الرفض: %{count}"
|
|
430
|
+
audit_denied_files: "الملفات المرفوضة: %{count}"
|
|
431
|
+
audit_protected_files: "الملفات المحمية: %{count}"
|
|
432
|
+
audit_opted_out: "الملفات المستثناة: %{count}"
|
|
433
|
+
audit_compliant: "حالة الامتثال: ناجح"
|
|
434
|
+
tighten_only_error: "لا يمكن إزالة نمط الرفض من السياسة الأم — التشديد فقط"
|
|
435
|
+
no_policies: "لم يتم العثور على ملفات سياسات. قم بتشغيل 'raictl policy init' أولاً."
|
|
436
|
+
doctor:
|
|
437
|
+
unexpected_error: "فشل الفحص بشكل غير متوقع — راجع تفاصيل الخطأ أعلاه"
|
|
438
|
+
header:
|
|
439
|
+
check: "الفحص"
|
|
440
|
+
status: "الحالة"
|
|
441
|
+
details: "التفاصيل"
|
|
442
|
+
summary:
|
|
443
|
+
all_pass: "نجح جميع الفحوصات البالغ عددها %{total}"
|
|
444
|
+
warnings: "اكتمل %{total} فحصاً، %{warn} تحذير(تحذيرات)"
|
|
445
|
+
failures: "اكتمل %{total} فحصاً، %{fail} فشل(إخفاقات)"
|
|
446
|
+
ruby_version:
|
|
447
|
+
match: "Ruby %{version}"
|
|
448
|
+
mismatch: "يعمل Ruby %{actual}، المتوقع %{expected}"
|
|
449
|
+
install: "تثبيت Ruby %{version} عبر rbenv: rbenv install %{version}"
|
|
450
|
+
no_file: "ملف .ruby-version غير موجود"
|
|
451
|
+
create_file: "أنشئ ملف .ruby-version بإصدار Ruby المتوقع"
|
|
452
|
+
gem_dependencies:
|
|
453
|
+
all_installed: "جميع التبعيات مثبتة (%{count} جوهرة محملة)"
|
|
454
|
+
missing: "جواهر مفقودة: %{gems}"
|
|
455
|
+
no_lockfile: "Gemfile.lock غير موجود"
|
|
456
|
+
run_bundle: "قم بتشغيل 'bundle install' لتثبيت التبعيات"
|
|
457
|
+
file_permissions:
|
|
458
|
+
writable: "جميع مجلدات التكوين قابلة للكتابة"
|
|
459
|
+
not_writable: "مجلدات غير قابلة للكتابة: %{dirs}"
|
|
460
|
+
fix_permissions: "إصلاح صلاحيات المجلد بـ: chmod u+w <المجلد>"
|
|
461
|
+
dbus_availability:
|
|
462
|
+
available: "ناقل جلسة D-Bus متاح"
|
|
463
|
+
unavailable: "ناقل جلسة D-Bus غير متاح"
|
|
464
|
+
install_dbus: "تثبيت D-Bus: apt install dbus والتأكد من تعيين DBUS_SESSION_BUS_ADDRESS"
|
|
465
|
+
engine_detection:
|
|
466
|
+
found: "المحركات المكتشفة: %{engines}"
|
|
467
|
+
none_found: "لم يتم اكتشاف أي محركات"
|
|
468
|
+
install_engine: "تثبيت محرك: apt install rosett-ai-engine-claude (أو محرك آخر)"
|
|
469
|
+
cache_health:
|
|
470
|
+
writable: "مجلد الذاكرة المؤقتة قابل للكتابة: %{path}"
|
|
471
|
+
not_found: "مجلد الذاكرة المؤقتة غير موجود: %{path}"
|
|
472
|
+
create_dir: "إنشاء مجلد الذاكرة المؤقتة: mkdir -p %{path}"
|
|
473
|
+
not_writable: "مجلد الذاكرة المؤقتة غير قابل للكتابة: %{path}"
|
|
474
|
+
fix_permissions: "إصلاح صلاحيات الذاكرة المؤقتة: chmod u+w %{path}"
|
|
475
|
+
stale_home_nncc:
|
|
476
|
+
clean: "لا يوجد مجلد .rosett-ai/ قديم في $HOME"
|
|
477
|
+
found: "مجلد .rosett-ai/ قديم في %{path} يحتوي على %{count} ملف(ات) سلوك"
|
|
478
|
+
empty: "مجلد .rosett-ai/ قديم في %{path} (بدون ملفات سلوك)"
|
|
479
|
+
remove: "مراجعة وحذف المجلد القديم: rm -rf %{path}"
|
|
480
|
+
stale_config_nncc:
|
|
481
|
+
clean: "لا يوجد مجلد ~/.config/nncc/ قديم"
|
|
482
|
+
found: "مجلد ~/.config/nncc/ قديم في %{path} يحتوي على %{count} ملف(ات)"
|
|
483
|
+
empty: "مجلد ~/.config/nncc/ قديم في %{path} (فارغ)"
|
|
484
|
+
migrate: "تشغيل raictl migrate لنقل الإعدادات إلى ~/.config/rosett-ai/"
|
|
485
|
+
comply:
|
|
486
|
+
summary:
|
|
487
|
+
all_pass: "%{total} فحوصات: الكل ناجح"
|
|
488
|
+
warnings: "%{total} فحوصات: %{pass} ناجح، %{warn} تحذيرات"
|
|
489
|
+
failures: "%{total} فحوصات: %{pass} ناجح، %{fail} إخفاقات"
|
|
490
|
+
header:
|
|
491
|
+
id: "المعرّف"
|
|
492
|
+
status: "الحالة"
|
|
493
|
+
description: "الوصف"
|
|
494
|
+
details: "التفاصيل"
|
|
495
|
+
workflow:
|
|
496
|
+
no_files: "لم يتم العثور على ملفات سير عمل."
|
|
497
|
+
list_title: "مسارات العمل المتاحة"
|
|
498
|
+
name: "الاسم"
|
|
499
|
+
version: "الإصدار"
|
|
500
|
+
steps_count: "الخطوات"
|
|
501
|
+
path: "المسار"
|
|
502
|
+
valid: "سير العمل '%{name}' صالح."
|
|
503
|
+
invalid: "سير العمل '%{name}' يحتوي على أخطاء تحقق:"
|
|
504
|
+
not_found: "سير العمل '%{name}' غير موجود."
|
|
505
|
+
simulate_header: "محاكاة لسير العمل '%{name}':"
|
|
506
|
+
run_title: "سير العمل: %{name}"
|
|
507
|
+
step_label: "الخطوة"
|
|
508
|
+
status_label: "الحالة"
|
|
509
|
+
message_label: "الرسالة"
|
|
510
|
+
duration_label: "المدة"
|
|
511
|
+
run_summary: "%{total} خطوات: %{pass} ناجحة، %{fail} فاشلة، %{skip} مُتخطاة"
|
|
512
|
+
project:
|
|
513
|
+
info_title: "معلومات المشروع"
|
|
514
|
+
status_title: "حالة المشروع"
|
|
515
|
+
name_label: "المشروع"
|
|
516
|
+
engine_label: "المحرك"
|
|
517
|
+
template_label: "القالب"
|
|
518
|
+
behaviours_label: "السلوكيات"
|
|
519
|
+
designs_label: "التصاميم"
|
|
520
|
+
healthy: "المشروع بحالة جيدة."
|
|
521
|
+
unhealthy: "المشروع يعاني من مشاكل:"
|
|
522
|
+
no_templates: "لا توجد قوالب مشاريع متاحة."
|
|
523
|
+
templates_title: "القوالب المتاحة:"
|
|
524
|
+
apply_summary: "تم تطبيق %{applied} ملف(ات)، تم تخطي %{skipped} ملف(ات)."
|
|
525
|
+
no_drift: "لم يتم اكتشاف انحراف."
|
|
526
|
+
drift_detected: "تم اكتشاف انحراف في %{count} ملف(ات)."
|
|
527
|
+
sync_summary: "تم تحديث %{updated} ملف(ات)، %{conflicts} تعارض(ات)."
|
|
528
|
+
simulate_prefix: "(محاكاة) "
|
|
529
|
+
retrofit:
|
|
530
|
+
no_engines: "لا تتوفر محولات engine للتحويل العكسي."
|
|
531
|
+
engines_title: "محركات التحويل العكسي المتاحة:"
|
|
532
|
+
simulate_prefix: "(محاكاة) "
|
|
533
|
+
summary: "تم إنشاء %{generated} ملف(ات)، تم تخطي %{skipped} ملف(ات)، %{errors} خطأ(أخطاء)."
|
|
534
|
+
hooks:
|
|
535
|
+
no_config: "لا توجد hooks مُعدة في .rosett-ai/config.yml"
|
|
536
|
+
no_hooks_installed: "لا توجد hooks rai مثبتة حالياً."
|
|
537
|
+
detected_managers: "مديرو hooks المكتشفون: %{managers}"
|
|
538
|
+
install_summary: "تم تثبيت %{count} hook(s)."
|
|
539
|
+
uninstall_summary: "تمت إزالة %{count} hook(s)."
|
|
540
|
+
mcp:
|
|
541
|
+
no_servers: "لا توجد خوادم MCP مُعدة."
|
|
542
|
+
serve_started: "تم تشغيل خادم MCP على ناقل stdio."
|
|
543
|
+
audit_complete: "اكتمل التدقيق: %{total} خادم(خوادم) تم فحصها."
|
|
544
|
+
completion:
|
|
545
|
+
bash: "تم إنشاء سكربت إكمال bash"
|
|
546
|
+
zsh: "تم إنشاء سكربت إكمال zsh"
|
|
547
|
+
fish: "تم إنشاء سكربت إكمال fish"
|
|
548
|
+
install_success: "تم تثبيت إكمال %{shell} في %{path}"
|
|
549
|
+
unsupported_shell: "الصدفة %{shell} غير مدعومة — المتاحة: %{available}"
|
|
550
|
+
feature_flags:
|
|
551
|
+
not_enabled: "'raictl %{feature}' تجريبي وغير مفعّل. للتفعيل: %{env_example}"
|
|
552
|
+
unknown_flag: "تحذير: ميزة تجريبية غير معروفة '%{flag}'. الميزات المعروفة: %{known}"
|
|
553
|
+
validation:
|
|
554
|
+
required: "%{field} مطلوب"
|
|
555
|
+
invalid_format: "%{field} ذو صيغة غير صالحة"
|
|
556
|
+
schema_error: "فشل التحقق من المخطط: %{message}"
|
|
557
|
+
errors:
|
|
558
|
+
compile_error: "فشل التجميع: %{message}"
|
|
559
|
+
yaml_syntax: "خطأ في صيغة YAML في %{file}: %{message}"
|
|
560
|
+
unknown_target: "هدف غير معروف: %{name}"
|
|
561
|
+
permission_denied: "تم رفض الإذن: %{path}"
|
|
562
|
+
error_handler:
|
|
563
|
+
error_prefix: "خطأ [%{code}]"
|
|
564
|
+
why_prefix: "لماذا"
|
|
565
|
+
fix_prefix: "الإصلاح"
|
|
566
|
+
type_prefix: "النوع"
|
|
567
|
+
backtrace_header: "تتبع المكالمات (أول 10 إطارات)"
|
|
568
|
+
exit_codes:
|
|
569
|
+
success: "نجاح"
|
|
570
|
+
general: "خطأ عام"
|
|
571
|
+
validation: "خطأ في التحقق"
|
|
572
|
+
config: "خطأ في التكوين"
|
|
573
|
+
permission: "خطأ في الصلاحيات"
|
|
574
|
+
dependency: "خطأ في التبعيات"
|
|
575
|
+
deprecation:
|
|
576
|
+
warning: "[مهمل] %{feature} مهمل منذ الإصدار %{since}، استخدم %{replacement} بدلاً منه. سيُزال في الإصدار %{removal}."
|
|
577
|
+
migration:
|
|
578
|
+
missing_field: "ترحيل مطلوب: %{file} يفتقد الحقل المطلوب '%{field}'."
|
|
579
|
+
deprecated_field: "ترحيل مطلوب: %{file} يستخدم الحقل المهمل '%{field}'، استخدم '%{replacement}' بدلاً منه."
|