arkaos 4.14.1 → 4.14.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.
- package/README.md +25 -3
- package/VERSION +1 -1
- package/config/agent-roster.json +36 -0
- package/core/agents/roster_manifest.py +114 -0
- package/installer/skill-deploy.js +41 -6
- package/knowledge/skills-manifest.json +1 -1
- package/package.json +5 -2
- package/pyproject.toml +1 -1
- package/core/__pycache__/__init__.cpython-312.pyc +0 -0
- package/core/__pycache__/__init__.cpython-313.pyc +0 -0
- package/core/__pycache__/__init__.cpython-314.pyc +0 -0
- package/core/__pycache__/favorites.cpython-313.pyc +0 -0
- package/core/__pycache__/keys.cpython-313.pyc +0 -0
- package/core/__pycache__/trash.cpython-313.pyc +0 -0
- package/core/agents/__pycache__/__init__.cpython-312.pyc +0 -0
- package/core/agents/__pycache__/__init__.cpython-313.pyc +0 -0
- package/core/agents/__pycache__/behavior_enforcer.cpython-313.pyc +0 -0
- package/core/agents/__pycache__/behavioral_compiler.cpython-313.pyc +0 -0
- package/core/agents/__pycache__/dna_registry.cpython-313.pyc +0 -0
- package/core/agents/__pycache__/draft_builder.cpython-313.pyc +0 -0
- package/core/agents/__pycache__/field_suggester.cpython-313.pyc +0 -0
- package/core/agents/__pycache__/loader.cpython-312.pyc +0 -0
- package/core/agents/__pycache__/loader.cpython-313.pyc +0 -0
- package/core/agents/__pycache__/obsidian_export.cpython-313.pyc +0 -0
- package/core/agents/__pycache__/registry_gen.cpython-313.pyc +0 -0
- package/core/agents/__pycache__/schema.cpython-312.pyc +0 -0
- package/core/agents/__pycache__/schema.cpython-313.pyc +0 -0
- package/core/agents/__pycache__/string_suggester.cpython-313.pyc +0 -0
- package/core/agents/__pycache__/validator.cpython-313.pyc +0 -0
- package/core/agents/adapters/__pycache__/disc_adapter.cpython-313.pyc +0 -0
- package/core/budget/__pycache__/__init__.cpython-313.pyc +0 -0
- package/core/budget/__pycache__/__init__.cpython-314.pyc +0 -0
- package/core/budget/__pycache__/manager.cpython-313.pyc +0 -0
- package/core/budget/__pycache__/manager.cpython-314.pyc +0 -0
- package/core/budget/__pycache__/schema.cpython-313.pyc +0 -0
- package/core/budget/__pycache__/schema.cpython-314.pyc +0 -0
- package/core/cognition/__pycache__/__init__.cpython-312.pyc +0 -0
- package/core/cognition/__pycache__/__init__.cpython-313.pyc +0 -0
- package/core/cognition/__pycache__/auto_documentor.cpython-313.pyc +0 -0
- package/core/cognition/__pycache__/dreaming.cpython-313.pyc +0 -0
- package/core/cognition/__pycache__/dreams_reader.cpython-313.pyc +0 -0
- package/core/cognition/__pycache__/reorganizer.cpython-313.pyc +0 -0
- package/core/cognition/__pycache__/reorganizer_cli.cpython-313.pyc +0 -0
- package/core/cognition/__pycache__/reorganizer_scheduler.cpython-313.pyc +0 -0
- package/core/cognition/__pycache__/retrieval.cpython-312.pyc +0 -0
- package/core/cognition/__pycache__/retrieval.cpython-313.pyc +0 -0
- package/core/cognition/capture/__pycache__/__init__.cpython-312.pyc +0 -0
- package/core/cognition/capture/__pycache__/__init__.cpython-313.pyc +0 -0
- package/core/cognition/capture/__pycache__/collector.cpython-313.pyc +0 -0
- package/core/cognition/capture/__pycache__/store.cpython-312.pyc +0 -0
- package/core/cognition/capture/__pycache__/store.cpython-313.pyc +0 -0
- package/core/cognition/insights/__pycache__/__init__.cpython-312.pyc +0 -0
- package/core/cognition/insights/__pycache__/__init__.cpython-313.pyc +0 -0
- package/core/cognition/insights/__pycache__/store.cpython-312.pyc +0 -0
- package/core/cognition/insights/__pycache__/store.cpython-313.pyc +0 -0
- package/core/cognition/memory/__pycache__/__init__.cpython-312.pyc +0 -0
- package/core/cognition/memory/__pycache__/__init__.cpython-313.pyc +0 -0
- package/core/cognition/memory/__pycache__/obsidian.cpython-312.pyc +0 -0
- package/core/cognition/memory/__pycache__/obsidian.cpython-313.pyc +0 -0
- package/core/cognition/memory/__pycache__/schemas.cpython-312.pyc +0 -0
- package/core/cognition/memory/__pycache__/schemas.cpython-313.pyc +0 -0
- package/core/cognition/memory/__pycache__/vector.cpython-312.pyc +0 -0
- package/core/cognition/memory/__pycache__/vector.cpython-313.pyc +0 -0
- package/core/cognition/memory/__pycache__/writer.cpython-312.pyc +0 -0
- package/core/cognition/memory/__pycache__/writer.cpython-313.pyc +0 -0
- package/core/cognition/research/__pycache__/__init__.cpython-313.pyc +0 -0
- package/core/cognition/research/__pycache__/profiler.cpython-313.pyc +0 -0
- package/core/cognition/scheduler/__pycache__/__init__.cpython-313.pyc +0 -0
- package/core/cognition/scheduler/__pycache__/cli.cpython-313.pyc +0 -0
- package/core/cognition/scheduler/__pycache__/daemon.cpython-313.pyc +0 -0
- package/core/cognition/scheduler/__pycache__/platform.cpython-313.pyc +0 -0
- package/core/conclave/__pycache__/__init__.cpython-313.pyc +0 -0
- package/core/conclave/__pycache__/advisor_db.cpython-313.pyc +0 -0
- package/core/conclave/__pycache__/display.cpython-313.pyc +0 -0
- package/core/conclave/__pycache__/matcher.cpython-313.pyc +0 -0
- package/core/conclave/__pycache__/persistence.cpython-313.pyc +0 -0
- package/core/conclave/__pycache__/profiler.cpython-313.pyc +0 -0
- package/core/conclave/__pycache__/prompts.cpython-313.pyc +0 -0
- package/core/conclave/__pycache__/schema.cpython-313.pyc +0 -0
- package/core/evals/__pycache__/__init__.cpython-313.pyc +0 -0
- package/core/evals/__pycache__/__init__.cpython-314.pyc +0 -0
- package/core/evals/__pycache__/record_cli.cpython-313.pyc +0 -0
- package/core/evals/__pycache__/runner_cli.cpython-313.pyc +0 -0
- package/core/evals/__pycache__/sanitizer.cpython-313.pyc +0 -0
- package/core/evals/__pycache__/sanitizer.cpython-314.pyc +0 -0
- package/core/evals/__pycache__/schema.cpython-313.pyc +0 -0
- package/core/evals/__pycache__/schema.cpython-314.pyc +0 -0
- package/core/evals/__pycache__/verdict_labels.cpython-313.pyc +0 -0
- package/core/evals/__pycache__/verdict_labels.cpython-314.pyc +0 -0
- package/core/forge/__pycache__/__init__.cpython-313.pyc +0 -0
- package/core/forge/__pycache__/__init__.cpython-314.pyc +0 -0
- package/core/forge/__pycache__/complexity.cpython-313.pyc +0 -0
- package/core/forge/__pycache__/complexity.cpython-314.pyc +0 -0
- package/core/forge/__pycache__/handoff.cpython-313.pyc +0 -0
- package/core/forge/__pycache__/handoff.cpython-314.pyc +0 -0
- package/core/forge/__pycache__/orchestrator.cpython-313.pyc +0 -0
- package/core/forge/__pycache__/orchestrator.cpython-314.pyc +0 -0
- package/core/forge/__pycache__/persistence.cpython-313.pyc +0 -0
- package/core/forge/__pycache__/persistence.cpython-314.pyc +0 -0
- package/core/forge/__pycache__/renderer.cpython-313.pyc +0 -0
- package/core/forge/__pycache__/renderer.cpython-314.pyc +0 -0
- package/core/forge/__pycache__/runtime_dispatcher.cpython-313.pyc +0 -0
- package/core/forge/__pycache__/runtime_dispatcher.cpython-314.pyc +0 -0
- package/core/forge/__pycache__/schema.cpython-313.pyc +0 -0
- package/core/forge/__pycache__/schema.cpython-314.pyc +0 -0
- package/core/fusion/__pycache__/__init__.cpython-313.pyc +0 -0
- package/core/fusion/__pycache__/cli.cpython-313.pyc +0 -0
- package/core/fusion/__pycache__/engine.cpython-313.pyc +0 -0
- package/core/fusion/__pycache__/panel_builder.cpython-313.pyc +0 -0
- package/core/governance/__pycache__/__init__.cpython-312.pyc +0 -0
- package/core/governance/__pycache__/__init__.cpython-313.pyc +0 -0
- package/core/governance/__pycache__/__init__.cpython-314.pyc +0 -0
- package/core/governance/__pycache__/activation_tracker.cpython-313.pyc +0 -0
- package/core/governance/__pycache__/agent_activation_cli.cpython-313.pyc +0 -0
- package/core/governance/__pycache__/agent_experiences.cpython-313.pyc +0 -0
- package/core/governance/__pycache__/agent_experiences.cpython-314.pyc +0 -0
- package/core/governance/__pycache__/agent_experiences_cli.cpython-313.pyc +0 -0
- package/core/governance/__pycache__/closing_marker_check.cpython-313.pyc +0 -0
- package/core/governance/__pycache__/closing_marker_check.cpython-314.pyc +0 -0
- package/core/governance/__pycache__/compliance_telemetry.cpython-313.pyc +0 -0
- package/core/governance/__pycache__/compliance_telemetry_cli.cpython-313.pyc +0 -0
- package/core/governance/__pycache__/constitution.cpython-312.pyc +0 -0
- package/core/governance/__pycache__/constitution.cpython-313.pyc +0 -0
- package/core/governance/__pycache__/constitution.cpython-314.pyc +0 -0
- package/core/governance/__pycache__/cqo_experience_recorder.cpython-313.pyc +0 -0
- package/core/governance/__pycache__/design_system_lint.cpython-313.pyc +0 -0
- package/core/governance/__pycache__/design_system_lint_cli.cpython-313.pyc +0 -0
- package/core/governance/__pycache__/dna_fidelity.cpython-313.pyc +0 -0
- package/core/governance/__pycache__/dna_fidelity_cli.cpython-313.pyc +0 -0
- package/core/governance/__pycache__/dod_gate.cpython-313.pyc +0 -0
- package/core/governance/__pycache__/enforcement_telemetry.cpython-313.pyc +0 -0
- package/core/governance/__pycache__/enforcement_telemetry_cli.cpython-313.pyc +0 -0
- package/core/governance/__pycache__/evidence_checks.cpython-313.pyc +0 -0
- package/core/governance/__pycache__/judge.cpython-313.pyc +0 -0
- package/core/governance/__pycache__/judge.cpython-314.pyc +0 -0
- package/core/governance/__pycache__/kb_cite_check.cpython-313.pyc +0 -0
- package/core/governance/__pycache__/kb_cite_check.cpython-314.pyc +0 -0
- package/core/governance/__pycache__/leak_scanner.cpython-313.pyc +0 -0
- package/core/governance/__pycache__/leak_scanner.cpython-314.pyc +0 -0
- package/core/governance/__pycache__/learning_detector.cpython-313.pyc +0 -0
- package/core/governance/__pycache__/meta_tag_check.cpython-313.pyc +0 -0
- package/core/governance/__pycache__/meta_tag_check.cpython-314.pyc +0 -0
- package/core/governance/__pycache__/phantom_action_check.cpython-313.pyc +0 -0
- package/core/governance/__pycache__/phantom_action_check.cpython-314.pyc +0 -0
- package/core/governance/__pycache__/qg_verdict.cpython-313.pyc +0 -0
- package/core/governance/__pycache__/qg_verdict.cpython-314.pyc +0 -0
- package/core/governance/__pycache__/quality_api.cpython-313.pyc +0 -0
- package/core/governance/__pycache__/quality_api.cpython-314.pyc +0 -0
- package/core/governance/__pycache__/quality_router.cpython-313.pyc +0 -0
- package/core/governance/__pycache__/quality_router.cpython-314.pyc +0 -0
- package/core/governance/__pycache__/redo_counter.cpython-313.pyc +0 -0
- package/core/governance/__pycache__/review_workflow.cpython-313.pyc +0 -0
- package/core/governance/__pycache__/review_workflow.cpython-314.pyc +0 -0
- package/core/governance/__pycache__/routing_feedback.cpython-313.pyc +0 -0
- package/core/governance/__pycache__/routing_feedback.cpython-314.pyc +0 -0
- package/core/governance/__pycache__/routing_feedback_cli.cpython-313.pyc +0 -0
- package/core/governance/__pycache__/skill_proposer.cpython-313.pyc +0 -0
- package/core/governance/__pycache__/skill_proposer.cpython-314.pyc +0 -0
- package/core/governance/__pycache__/specialist_telemetry.cpython-313.pyc +0 -0
- package/core/governance/__pycache__/specialist_telemetry_cli.cpython-313.pyc +0 -0
- package/core/governance/__pycache__/sycophancy_detector.cpython-313.pyc +0 -0
- package/core/governance/__pycache__/sycophancy_detector.cpython-314.pyc +0 -0
- package/core/hooks/__pycache__/__init__.cpython-312.pyc +0 -0
- package/core/hooks/__pycache__/__init__.cpython-313.pyc +0 -0
- package/core/hooks/__pycache__/__init__.cpython-314.pyc +0 -0
- package/core/hooks/__pycache__/_shared.cpython-312.pyc +0 -0
- package/core/hooks/__pycache__/_shared.cpython-313.pyc +0 -0
- package/core/hooks/__pycache__/_shared.cpython-314.pyc +0 -0
- package/core/hooks/__pycache__/gate_manifest.cpython-313.pyc +0 -0
- package/core/hooks/__pycache__/post_tool_use.cpython-312.pyc +0 -0
- package/core/hooks/__pycache__/post_tool_use.cpython-313.pyc +0 -0
- package/core/hooks/__pycache__/pre_tool_use.cpython-312.pyc +0 -0
- package/core/hooks/__pycache__/pre_tool_use.cpython-313.pyc +0 -0
- package/core/hooks/__pycache__/pre_tool_use.cpython-314.pyc +0 -0
- package/core/hooks/__pycache__/session_end.cpython-313.pyc +0 -0
- package/core/hooks/__pycache__/session_start.cpython-312.pyc +0 -0
- package/core/hooks/__pycache__/session_start.cpython-313.pyc +0 -0
- package/core/hooks/__pycache__/stop.cpython-312.pyc +0 -0
- package/core/hooks/__pycache__/stop.cpython-313.pyc +0 -0
- package/core/hooks/__pycache__/stop.cpython-314.pyc +0 -0
- package/core/hooks/__pycache__/subagent_stop.cpython-313.pyc +0 -0
- package/core/hooks/__pycache__/subagent_stop.cpython-314.pyc +0 -0
- package/core/hooks/__pycache__/user_prompt_submit.cpython-312.pyc +0 -0
- package/core/hooks/__pycache__/user_prompt_submit.cpython-313.pyc +0 -0
- package/core/hooks/__pycache__/user_prompt_submit.cpython-314.pyc +0 -0
- package/core/jobs/__pycache__/__init__.cpython-312.pyc +0 -0
- package/core/jobs/__pycache__/__init__.cpython-313.pyc +0 -0
- package/core/jobs/__pycache__/__init__.cpython-314.pyc +0 -0
- package/core/jobs/__pycache__/auto_doc_worker.cpython-312.pyc +0 -0
- package/core/jobs/__pycache__/auto_doc_worker.cpython-313.pyc +0 -0
- package/core/jobs/__pycache__/auto_doc_worker.cpython-314.pyc +0 -0
- package/core/jobs/__pycache__/manager.cpython-312.pyc +0 -0
- package/core/jobs/__pycache__/manager.cpython-313.pyc +0 -0
- package/core/jobs/__pycache__/manager.cpython-314.pyc +0 -0
- package/core/knowledge/__pycache__/__init__.cpython-312.pyc +0 -0
- package/core/knowledge/__pycache__/__init__.cpython-313.pyc +0 -0
- package/core/knowledge/__pycache__/__init__.cpython-314.pyc +0 -0
- package/core/knowledge/__pycache__/agent_match.cpython-313.pyc +0 -0
- package/core/knowledge/__pycache__/chunker.cpython-312.pyc +0 -0
- package/core/knowledge/__pycache__/chunker.cpython-313.pyc +0 -0
- package/core/knowledge/__pycache__/chunker.cpython-314.pyc +0 -0
- package/core/knowledge/__pycache__/embedder.cpython-312.pyc +0 -0
- package/core/knowledge/__pycache__/embedder.cpython-313.pyc +0 -0
- package/core/knowledge/__pycache__/embedder.cpython-314.pyc +0 -0
- package/core/knowledge/__pycache__/embedding_backends.cpython-313.pyc +0 -0
- package/core/knowledge/__pycache__/embedding_backends.cpython-314.pyc +0 -0
- package/core/knowledge/__pycache__/indexer.cpython-313.pyc +0 -0
- package/core/knowledge/__pycache__/ingest.cpython-313.pyc +0 -0
- package/core/knowledge/__pycache__/pattern_cards.cpython-313.pyc +0 -0
- package/core/knowledge/__pycache__/pattern_cards.cpython-314.pyc +0 -0
- package/core/knowledge/__pycache__/pattern_cards_cli.cpython-313.pyc +0 -0
- package/core/knowledge/__pycache__/recipes.cpython-313.pyc +0 -0
- package/core/knowledge/__pycache__/recipes.cpython-314.pyc +0 -0
- package/core/knowledge/__pycache__/recipes_cli.cpython-313.pyc +0 -0
- package/core/knowledge/__pycache__/sources.cpython-313.pyc +0 -0
- package/core/knowledge/__pycache__/vector_store.cpython-312.pyc +0 -0
- package/core/knowledge/__pycache__/vector_store.cpython-313.pyc +0 -0
- package/core/knowledge/__pycache__/vector_store.cpython-314.pyc +0 -0
- package/core/memory/__pycache__/compressor.cpython-313.pyc +0 -0
- package/core/memory/__pycache__/rehydrator.cpython-312.pyc +0 -0
- package/core/memory/__pycache__/rehydrator.cpython-313.pyc +0 -0
- package/core/memory/__pycache__/rehydrator.cpython-314.pyc +0 -0
- package/core/memory/__pycache__/semantic_store.cpython-312.pyc +0 -0
- package/core/memory/__pycache__/semantic_store.cpython-313.pyc +0 -0
- package/core/memory/__pycache__/semantic_store.cpython-314.pyc +0 -0
- package/core/memory/__pycache__/session_store.cpython-312.pyc +0 -0
- package/core/memory/__pycache__/session_store.cpython-313.pyc +0 -0
- package/core/memory/__pycache__/session_store.cpython-314.pyc +0 -0
- package/core/memory/__pycache__/turn_capture.cpython-313.pyc +0 -0
- package/core/memory/__pycache__/turn_capture.cpython-314.pyc +0 -0
- package/core/obsidian/__pycache__/__init__.cpython-313.pyc +0 -0
- package/core/obsidian/__pycache__/cataloger.cpython-313.pyc +0 -0
- package/core/obsidian/__pycache__/relator.cpython-313.pyc +0 -0
- package/core/obsidian/__pycache__/taxonomy.cpython-313.pyc +0 -0
- package/core/obsidian/__pycache__/templates.cpython-313.pyc +0 -0
- package/core/obsidian/__pycache__/writer.cpython-313.pyc +0 -0
- package/core/orchestration/__pycache__/__init__.cpython-313.pyc +0 -0
- package/core/orchestration/__pycache__/checkpoint.cpython-313.pyc +0 -0
- package/core/orchestration/__pycache__/patterns.cpython-313.pyc +0 -0
- package/core/orchestration/__pycache__/protocol.cpython-313.pyc +0 -0
- package/core/personas/__pycache__/__init__.cpython-313.pyc +0 -0
- package/core/personas/__pycache__/archetypes.cpython-313.pyc +0 -0
- package/core/personas/__pycache__/builder.cpython-313.pyc +0 -0
- package/core/personas/__pycache__/description_drafter.cpython-313.pyc +0 -0
- package/core/personas/__pycache__/manager.cpython-313.pyc +0 -0
- package/core/personas/__pycache__/obsidian_store.cpython-313.pyc +0 -0
- package/core/personas/__pycache__/schema.cpython-313.pyc +0 -0
- package/core/profile/__pycache__/__init__.cpython-313.pyc +0 -0
- package/core/profile/__pycache__/manager.cpython-313.pyc +0 -0
- package/core/registry/__pycache__/__init__.cpython-312.pyc +0 -0
- package/core/registry/__pycache__/__init__.cpython-313.pyc +0 -0
- package/core/registry/__pycache__/generator.cpython-312.pyc +0 -0
- package/core/registry/__pycache__/generator.cpython-313.pyc +0 -0
- package/core/release/__pycache__/__init__.cpython-313.pyc +0 -0
- package/core/release/__pycache__/preflight.cpython-313.pyc +0 -0
- package/core/release/__pycache__/preflight_cli.cpython-313.pyc +0 -0
- package/core/runtime/__pycache__/__init__.cpython-312.pyc +0 -0
- package/core/runtime/__pycache__/__init__.cpython-313.pyc +0 -0
- package/core/runtime/__pycache__/__init__.cpython-314.pyc +0 -0
- package/core/runtime/__pycache__/base.cpython-312.pyc +0 -0
- package/core/runtime/__pycache__/base.cpython-313.pyc +0 -0
- package/core/runtime/__pycache__/base.cpython-314.pyc +0 -0
- package/core/runtime/__pycache__/capabilities_cli.cpython-312.pyc +0 -0
- package/core/runtime/__pycache__/capabilities_cli.cpython-313.pyc +0 -0
- package/core/runtime/__pycache__/claude_code.cpython-312.pyc +0 -0
- package/core/runtime/__pycache__/claude_code.cpython-313.pyc +0 -0
- package/core/runtime/__pycache__/claude_code.cpython-314.pyc +0 -0
- package/core/runtime/__pycache__/codex_cli.cpython-312.pyc +0 -0
- package/core/runtime/__pycache__/codex_cli.cpython-313.pyc +0 -0
- package/core/runtime/__pycache__/codex_cli.cpython-314.pyc +0 -0
- package/core/runtime/__pycache__/context_compactor.cpython-313.pyc +0 -0
- package/core/runtime/__pycache__/cost_governor.cpython-312.pyc +0 -0
- package/core/runtime/__pycache__/cost_governor.cpython-313.pyc +0 -0
- package/core/runtime/__pycache__/cost_governor.cpython-314.pyc +0 -0
- package/core/runtime/__pycache__/cursor.cpython-312.pyc +0 -0
- package/core/runtime/__pycache__/cursor.cpython-313.pyc +0 -0
- package/core/runtime/__pycache__/cursor.cpython-314.pyc +0 -0
- package/core/runtime/__pycache__/gemini_cli.cpython-312.pyc +0 -0
- package/core/runtime/__pycache__/gemini_cli.cpython-313.pyc +0 -0
- package/core/runtime/__pycache__/gemini_cli.cpython-314.pyc +0 -0
- package/core/runtime/__pycache__/llm_cost_telemetry.cpython-312.pyc +0 -0
- package/core/runtime/__pycache__/llm_cost_telemetry.cpython-313.pyc +0 -0
- package/core/runtime/__pycache__/llm_cost_telemetry.cpython-314.pyc +0 -0
- package/core/runtime/__pycache__/llm_cost_telemetry_cli.cpython-313.pyc +0 -0
- package/core/runtime/__pycache__/llm_provider.cpython-312.pyc +0 -0
- package/core/runtime/__pycache__/llm_provider.cpython-313.pyc +0 -0
- package/core/runtime/__pycache__/llm_provider.cpython-314.pyc +0 -0
- package/core/runtime/__pycache__/llm_retry.cpython-312.pyc +0 -0
- package/core/runtime/__pycache__/llm_retry.cpython-313.pyc +0 -0
- package/core/runtime/__pycache__/llm_retry.cpython-314.pyc +0 -0
- package/core/runtime/__pycache__/mcp_telemetry.cpython-312.pyc +0 -0
- package/core/runtime/__pycache__/mcp_telemetry.cpython-313.pyc +0 -0
- package/core/runtime/__pycache__/mcp_telemetry_cli.cpython-313.pyc +0 -0
- package/core/runtime/__pycache__/model_router.cpython-312.pyc +0 -0
- package/core/runtime/__pycache__/model_router.cpython-313.pyc +0 -0
- package/core/runtime/__pycache__/model_router.cpython-314.pyc +0 -0
- package/core/runtime/__pycache__/model_router_cli.cpython-313.pyc +0 -0
- package/core/runtime/__pycache__/model_routing_check.cpython-313.pyc +0 -0
- package/core/runtime/__pycache__/model_routing_context.cpython-313.pyc +0 -0
- package/core/runtime/__pycache__/native_usage.cpython-312.pyc +0 -0
- package/core/runtime/__pycache__/native_usage.cpython-313.pyc +0 -0
- package/core/runtime/__pycache__/native_usage.cpython-314.pyc +0 -0
- package/core/runtime/__pycache__/ollama_discovery.cpython-313.pyc +0 -0
- package/core/runtime/__pycache__/ollama_provider.cpython-312.pyc +0 -0
- package/core/runtime/__pycache__/ollama_provider.cpython-313.pyc +0 -0
- package/core/runtime/__pycache__/ollama_provider.cpython-314.pyc +0 -0
- package/core/runtime/__pycache__/openrouter_provider.cpython-312.pyc +0 -0
- package/core/runtime/__pycache__/openrouter_provider.cpython-313.pyc +0 -0
- package/core/runtime/__pycache__/openrouter_provider.cpython-314.pyc +0 -0
- package/core/runtime/__pycache__/path_resolver.cpython-312.pyc +0 -0
- package/core/runtime/__pycache__/path_resolver.cpython-313.pyc +0 -0
- package/core/runtime/__pycache__/pricing.cpython-312.pyc +0 -0
- package/core/runtime/__pycache__/pricing.cpython-313.pyc +0 -0
- package/core/runtime/__pycache__/pricing.cpython-314.pyc +0 -0
- package/core/runtime/__pycache__/registry.cpython-312.pyc +0 -0
- package/core/runtime/__pycache__/registry.cpython-313.pyc +0 -0
- package/core/runtime/__pycache__/registry.cpython-314.pyc +0 -0
- package/core/runtime/__pycache__/runtime_models.cpython-313.pyc +0 -0
- package/core/runtime/__pycache__/squad_orchestrator.cpython-312.pyc +0 -0
- package/core/runtime/__pycache__/subagent.cpython-313.pyc +0 -0
- package/core/runtime/__pycache__/user_paths.cpython-312.pyc +0 -0
- package/core/runtime/__pycache__/user_paths.cpython-313.pyc +0 -0
- package/core/runtime/gateway/__pycache__/__init__.cpython-312.pyc +0 -0
- package/core/runtime/gateway/__pycache__/__init__.cpython-313.pyc +0 -0
- package/core/runtime/gateway/__pycache__/__init__.cpython-314.pyc +0 -0
- package/core/runtime/gateway/__pycache__/__main__.cpython-313.pyc +0 -0
- package/core/runtime/gateway/__pycache__/litellm_config.cpython-312.pyc +0 -0
- package/core/runtime/gateway/__pycache__/litellm_config.cpython-313.pyc +0 -0
- package/core/runtime/gateway/__pycache__/litellm_config.cpython-314.pyc +0 -0
- package/core/shared/__pycache__/__init__.cpython-312.pyc +0 -0
- package/core/shared/__pycache__/__init__.cpython-313.pyc +0 -0
- package/core/shared/__pycache__/__init__.cpython-314.pyc +0 -0
- package/core/shared/__pycache__/decay.cpython-313.pyc +0 -0
- package/core/shared/__pycache__/decay.cpython-314.pyc +0 -0
- package/core/shared/__pycache__/safe_session_id.cpython-312.pyc +0 -0
- package/core/shared/__pycache__/safe_session_id.cpython-313.pyc +0 -0
- package/core/shared/__pycache__/safe_session_id.cpython-314.pyc +0 -0
- package/core/shared/__pycache__/sqlite_recovery.cpython-312.pyc +0 -0
- package/core/shared/__pycache__/sqlite_recovery.cpython-313.pyc +0 -0
- package/core/shared/__pycache__/sqlite_recovery.cpython-314.pyc +0 -0
- package/core/shared/__pycache__/temp_paths.cpython-312.pyc +0 -0
- package/core/shared/__pycache__/temp_paths.cpython-313.pyc +0 -0
- package/core/shared/__pycache__/temp_paths.cpython-314.pyc +0 -0
- package/core/shared/__pycache__/test_evidence.cpython-313-pytest-9.1.1.pyc +0 -0
- package/core/shared/__pycache__/test_evidence.cpython-313.pyc +0 -0
- package/core/specs/__pycache__/__init__.cpython-313.pyc +0 -0
- package/core/specs/__pycache__/manager.cpython-313.pyc +0 -0
- package/core/specs/__pycache__/schema.cpython-313.pyc +0 -0
- package/core/squads/__pycache__/__init__.cpython-313.pyc +0 -0
- package/core/squads/__pycache__/loader.cpython-313.pyc +0 -0
- package/core/squads/__pycache__/registry.cpython-313.pyc +0 -0
- package/core/squads/__pycache__/schema.cpython-313.pyc +0 -0
- package/core/synapse/__pycache__/__init__.cpython-312.pyc +0 -0
- package/core/synapse/__pycache__/__init__.cpython-313.pyc +0 -0
- package/core/synapse/__pycache__/__init__.cpython-314.pyc +0 -0
- package/core/synapse/__pycache__/agent_experiences_layer.cpython-312.pyc +0 -0
- package/core/synapse/__pycache__/agent_experiences_layer.cpython-313.pyc +0 -0
- package/core/synapse/__pycache__/agent_experiences_layer.cpython-314.pyc +0 -0
- package/core/synapse/__pycache__/cache.cpython-312.pyc +0 -0
- package/core/synapse/__pycache__/cache.cpython-313.pyc +0 -0
- package/core/synapse/__pycache__/cache.cpython-314.pyc +0 -0
- package/core/synapse/__pycache__/engine.cpython-312.pyc +0 -0
- package/core/synapse/__pycache__/engine.cpython-313.pyc +0 -0
- package/core/synapse/__pycache__/engine.cpython-314.pyc +0 -0
- package/core/synapse/__pycache__/graph_context_layer.cpython-313.pyc +0 -0
- package/core/synapse/__pycache__/graph_context_layer.cpython-314.pyc +0 -0
- package/core/synapse/__pycache__/kb_cache.cpython-312.pyc +0 -0
- package/core/synapse/__pycache__/kb_cache.cpython-313.pyc +0 -0
- package/core/synapse/__pycache__/kb_cache.cpython-314.pyc +0 -0
- package/core/synapse/__pycache__/layers.cpython-312.pyc +0 -0
- package/core/synapse/__pycache__/layers.cpython-313.pyc +0 -0
- package/core/synapse/__pycache__/layers.cpython-314.pyc +0 -0
- package/core/synapse/__pycache__/pattern_library_layer.cpython-313.pyc +0 -0
- package/core/synapse/__pycache__/pattern_library_layer.cpython-314.pyc +0 -0
- package/core/synapse/__pycache__/recipe_layer.cpython-313.pyc +0 -0
- package/core/synapse/__pycache__/recipe_layer.cpython-314.pyc +0 -0
- package/core/synapse/__pycache__/routing_feedback_layer.cpython-313.pyc +0 -0
- package/core/synapse/__pycache__/routing_feedback_layer.cpython-314.pyc +0 -0
- package/core/synapse/__pycache__/session_memory_layer.cpython-312.pyc +0 -0
- package/core/synapse/__pycache__/session_memory_layer.cpython-313.pyc +0 -0
- package/core/synapse/__pycache__/session_memory_layer.cpython-314.pyc +0 -0
- package/core/sync/__pycache__/__init__.cpython-312.pyc +0 -0
- package/core/sync/__pycache__/__init__.cpython-313.pyc +0 -0
- package/core/sync/__pycache__/agent_provisioner.cpython-313.pyc +0 -0
- package/core/sync/__pycache__/ai_mcp_decider.cpython-313.pyc +0 -0
- package/core/sync/__pycache__/content_merger.cpython-313.pyc +0 -0
- package/core/sync/__pycache__/content_syncer.cpython-313.pyc +0 -0
- package/core/sync/__pycache__/descriptor_syncer.cpython-313.pyc +0 -0
- package/core/sync/__pycache__/discovery.cpython-313.pyc +0 -0
- package/core/sync/__pycache__/engine.cpython-312.pyc +0 -0
- package/core/sync/__pycache__/engine.cpython-313.pyc +0 -0
- package/core/sync/__pycache__/manifest.cpython-312.pyc +0 -0
- package/core/sync/__pycache__/manifest.cpython-313.pyc +0 -0
- package/core/sync/__pycache__/mcp_optimizer.cpython-313.pyc +0 -0
- package/core/sync/__pycache__/mcp_syncer.cpython-313.pyc +0 -0
- package/core/sync/__pycache__/policy_loader.cpython-313.pyc +0 -0
- package/core/sync/__pycache__/reporter.cpython-313.pyc +0 -0
- package/core/sync/__pycache__/schema.cpython-313.pyc +0 -0
- package/core/sync/__pycache__/self_healing.cpython-313.pyc +0 -0
- package/core/sync/__pycache__/settings_syncer.cpython-313.pyc +0 -0
- package/core/sync/__pycache__/update_orchestrator.cpython-313.pyc +0 -0
- package/core/tasks/__pycache__/__init__.cpython-313.pyc +0 -0
- package/core/tasks/__pycache__/manager.cpython-313.pyc +0 -0
- package/core/tasks/__pycache__/schema.cpython-313.pyc +0 -0
- package/core/terminal/__pycache__/__init__.cpython-313.pyc +0 -0
- package/core/terminal/__pycache__/audit.cpython-313.pyc +0 -0
- package/core/terminal/__pycache__/connections.cpython-313.pyc +0 -0
- package/core/terminal/__pycache__/session.cpython-313.pyc +0 -0
- package/core/terminal/__pycache__/session_windows.cpython-313.pyc +0 -0
- package/core/terminal/__pycache__/token.cpython-313.pyc +0 -0
- package/core/workflow/__pycache__/__init__.cpython-312.pyc +0 -0
- package/core/workflow/__pycache__/__init__.cpython-313.pyc +0 -0
- package/core/workflow/__pycache__/__init__.cpython-314.pyc +0 -0
- package/core/workflow/__pycache__/announcer.cpython-313.pyc +0 -0
- package/core/workflow/__pycache__/dashboard.cpython-313.pyc +0 -0
- package/core/workflow/__pycache__/design_authorization.cpython-313.pyc +0 -0
- package/core/workflow/__pycache__/design_authorization.cpython-314.pyc +0 -0
- package/core/workflow/__pycache__/enforcer.cpython-313.pyc +0 -0
- package/core/workflow/__pycache__/engine.cpython-312.pyc +0 -0
- package/core/workflow/__pycache__/engine.cpython-313.pyc +0 -0
- package/core/workflow/__pycache__/engine.cpython-314.pyc +0 -0
- package/core/workflow/__pycache__/flow_authorization.cpython-313.pyc +0 -0
- package/core/workflow/__pycache__/flow_authorization.cpython-314.pyc +0 -0
- package/core/workflow/__pycache__/flow_enforcer.cpython-312.pyc +0 -0
- package/core/workflow/__pycache__/flow_enforcer.cpython-313.pyc +0 -0
- package/core/workflow/__pycache__/flow_enforcer.cpython-314.pyc +0 -0
- package/core/workflow/__pycache__/frontend_gate.cpython-313.pyc +0 -0
- package/core/workflow/__pycache__/frontend_gate.cpython-314.pyc +0 -0
- package/core/workflow/__pycache__/frontend_gate_telemetry.cpython-313.pyc +0 -0
- package/core/workflow/__pycache__/frontend_gate_telemetry_cli.cpython-313.pyc +0 -0
- package/core/workflow/__pycache__/gate_checkpoint.cpython-312.pyc +0 -0
- package/core/workflow/__pycache__/gate_checkpoint.cpython-313.pyc +0 -0
- package/core/workflow/__pycache__/gate_checkpoint.cpython-314.pyc +0 -0
- package/core/workflow/__pycache__/kb_first_decider.cpython-313.pyc +0 -0
- package/core/workflow/__pycache__/loader.cpython-312.pyc +0 -0
- package/core/workflow/__pycache__/loader.cpython-313.pyc +0 -0
- package/core/workflow/__pycache__/loader.cpython-314.pyc +0 -0
- package/core/workflow/__pycache__/marker_cache.cpython-313.pyc +0 -0
- package/core/workflow/__pycache__/marker_cache.cpython-314.pyc +0 -0
- package/core/workflow/__pycache__/plan_approval.cpython-313.pyc +0 -0
- package/core/workflow/__pycache__/plan_approval.cpython-314.pyc +0 -0
- package/core/workflow/__pycache__/research_gate.cpython-313.pyc +0 -0
- package/core/workflow/__pycache__/research_gate.cpython-314.pyc +0 -0
- package/core/workflow/__pycache__/rules_registry.cpython-313.pyc +0 -0
- package/core/workflow/__pycache__/schema.cpython-312.pyc +0 -0
- package/core/workflow/__pycache__/schema.cpython-313.pyc +0 -0
- package/core/workflow/__pycache__/schema.cpython-314.pyc +0 -0
- package/core/workflow/__pycache__/specialist_enforcer.cpython-312.pyc +0 -0
- package/core/workflow/__pycache__/specialist_enforcer.cpython-313.pyc +0 -0
- package/core/workflow/__pycache__/specialist_enforcer.cpython-314.pyc +0 -0
- package/core/workflow/__pycache__/state.cpython-313.pyc +0 -0
- package/core/workflow/__pycache__/state.cpython-314.pyc +0 -0
- package/mcps/arka-tools/__pycache__/server.cpython-313.pyc +0 -0
- package/scripts/__pycache__/dashboard-api.cpython-313.pyc +0 -0
- package/scripts/__pycache__/knowledge-index.cpython-313.pyc +0 -0
- package/scripts/__pycache__/marketplace_export.cpython-313.pyc +0 -0
- package/scripts/__pycache__/marketplace_gen.cpython-313.pyc +0 -0
- package/scripts/__pycache__/migrate_skills_kb_first.cpython-313.pyc +0 -0
- package/scripts/__pycache__/seed_initial_patterns.cpython-313.pyc +0 -0
- package/scripts/__pycache__/synapse-bridge.cpython-312.pyc +0 -0
- package/scripts/__pycache__/synapse-bridge.cpython-313.pyc +0 -0
- package/scripts/__pycache__/synapse-bridge.cpython-314.pyc +0 -0
- package/scripts/bench/__pycache__/__init__.cpython-313.pyc +0 -0
- package/scripts/bench/__pycache__/harness.cpython-313.pyc +0 -0
- package/scripts/bench/__pycache__/run.cpython-313.pyc +0 -0
- package/scripts/tools/__pycache__/docs_stats.cpython-313.pyc +0 -0
- package/scripts/tools/__pycache__/prompt_lint.cpython-313.pyc +0 -0
- package/scripts/tools/__pycache__/prompt_surface_benchmark.cpython-313.pyc +0 -0
- package/scripts/tools/__pycache__/skill_budget.cpython-313.pyc +0 -0
- package/scripts/tools/__pycache__/sync_wiki.cpython-313.pyc +0 -0
package/README.md
CHANGED
|
@@ -21,7 +21,7 @@ Every AI coding tool gives you **one developer agent**. ArkaOS gives you **an en
|
|
|
21
21
|
|
|
22
22
|
Marketing teams. Brand designers. Financial analysts. Strategy consultants. Security auditors. E-commerce specialists. Content creators. Sales negotiators. Project managers. Quality reviewers. All working together, following enterprise workflows, with mandatory quality gates.
|
|
23
23
|
|
|
24
|
-
And
|
|
24
|
+
And ArkaOS **learns from experience**: it closes two feedback loops end to end. Every session writes semantic memory that the next session retrieves, and every Quality Gate verdict feeds back into routing, so a department that keeps getting work rejected gets flagged before it ships again. Both loops run on your machine, and every claim about them is reproducible: the hook that fires on every tool call runs at 18ms p50 (down from 83ms, measured by `benchmarks/hooks-bench.sh`), and the default install keeps its always-on context surface inside a CI-enforced budget.
|
|
25
25
|
|
|
26
26
|
```
|
|
27
27
|
You: "add stripe subscription billing"
|
|
@@ -63,8 +63,9 @@ npx arkaos install
|
|
|
63
63
|
|
|
64
64
|
The installer auto-detects your runtime and configures everything:
|
|
65
65
|
- Python dependencies (Pydantic, PyYAML, Rich, Click)
|
|
66
|
-
- Hook system (
|
|
67
|
-
-
|
|
66
|
+
- Hook system (9 lifecycle hooks, with Node fast-path shims that decide trivial calls in 18ms instead of 83ms)
|
|
67
|
+
- A curated skill set that stays inside a 60 to 80 skill context budget, enforced in CI; the full catalog installs with `npx arkaos update --skills full` or per department from the plugin marketplace
|
|
68
|
+
- The arka-tools MCP server: 12 programmatic tools for KB search, workflow state, the Quality Gate queue, recipes, session memory, and telemetry
|
|
68
69
|
- Cognitive Layer scheduler (Dreaming + Research)
|
|
69
70
|
|
|
70
71
|
Prefer a specific runtime?
|
|
@@ -92,6 +93,26 @@ npx arkaos@latest update
|
|
|
92
93
|
npx arkaos doctor # Health check
|
|
93
94
|
```
|
|
94
95
|
|
|
96
|
+
### Skill packs, à la carte
|
|
97
|
+
|
|
98
|
+
The default install ships a curated core so your context window stays lean. Everything else lives in the ArkaOS plugin marketplace: 16 department packs with 205 skills, generated straight from the same sources the core uses. Inside Claude Code:
|
|
99
|
+
|
|
100
|
+
```
|
|
101
|
+
/plugin marketplace add andreagroferreira/arka-os
|
|
102
|
+
/plugin install arkaos-marketing@arkaos # or arkaos-dev, arkaos-finance, ...
|
|
103
|
+
```
|
|
104
|
+
|
|
105
|
+
Each pack namespaces its skills, so nothing collides with your setup. Prefer everything preinstalled the old way? `npx arkaos update --skills full` restores the complete catalog and keeps that choice across updates.
|
|
106
|
+
|
|
107
|
+
### Run the MCP server anywhere
|
|
108
|
+
|
|
109
|
+
Claude Code picks up arka-tools automatically. For other runtimes, debugging, or CI:
|
|
110
|
+
|
|
111
|
+
```bash
|
|
112
|
+
npx arkaos mcp start # read-only
|
|
113
|
+
npx arkaos mcp start --write # enables workflow/QG writes
|
|
114
|
+
```
|
|
115
|
+
|
|
95
116
|
---
|
|
96
117
|
|
|
97
118
|
## How It Works
|
|
@@ -450,6 +471,7 @@ Full documentation lives in two places in this repository:
|
|
|
450
471
|
- [Departments](wiki/04-Departments/) — one page per department
|
|
451
472
|
- [Commands Reference](wiki/05-Commands-Reference.md)
|
|
452
473
|
- [Cognitive Layer](wiki/06-Cognitive-Layer.md) — memory, dreaming, research
|
|
474
|
+
- [Skill Packs](wiki/17-Skill-Packs.md) — the curated core and the plugin marketplace
|
|
453
475
|
- [Benchmarks](wiki/11-Benchmarks.md) — measured, reproducible numbers
|
|
454
476
|
- [Competitive Analysis](wiki/12-Competitive-Analysis.md) and [Benefits & ROI](wiki/13-Benefits-ROI.md)
|
|
455
477
|
|
package/VERSION
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
4.14.
|
|
1
|
+
4.14.3
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
{
|
|
2
|
+
"_meta": {
|
|
3
|
+
"generator": "core/agents/roster_manifest.py",
|
|
4
|
+
"purpose": "every specialist-gate owner resolves to a dispatchable agent source; installer/skill-deploy.js deploys these"
|
|
5
|
+
},
|
|
6
|
+
"gate_owners": {
|
|
7
|
+
"architect": {
|
|
8
|
+
"compiled": false,
|
|
9
|
+
"source": "departments/dev/agents/architect.md"
|
|
10
|
+
},
|
|
11
|
+
"backend-dev": {
|
|
12
|
+
"compiled": true,
|
|
13
|
+
"source": "config/claude-agents/backend-dev.md"
|
|
14
|
+
},
|
|
15
|
+
"dba": {
|
|
16
|
+
"compiled": true,
|
|
17
|
+
"source": "config/claude-agents/dba.md"
|
|
18
|
+
},
|
|
19
|
+
"devops-eng": {
|
|
20
|
+
"compiled": true,
|
|
21
|
+
"source": "config/claude-agents/devops-eng.md"
|
|
22
|
+
},
|
|
23
|
+
"frontend-dev": {
|
|
24
|
+
"compiled": false,
|
|
25
|
+
"source": "departments/dev/agents/frontend-dev.md"
|
|
26
|
+
},
|
|
27
|
+
"security-eng": {
|
|
28
|
+
"compiled": true,
|
|
29
|
+
"source": "config/claude-agents/security-eng.md"
|
|
30
|
+
},
|
|
31
|
+
"senior-dev": {
|
|
32
|
+
"compiled": false,
|
|
33
|
+
"source": "departments/dev/agents/senior-dev.md"
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
}
|
|
@@ -0,0 +1,114 @@
|
|
|
1
|
+
"""Agent roster manifest — every gate owner must be dispatchable.
|
|
2
|
+
|
|
3
|
+
Root cause this kills (operator incident, 2026-07-12): the specialist
|
|
4
|
+
gate blocked a lead from writing ``app/Http/Controllers/`` and told it
|
|
5
|
+
to dispatch ``senior-dev`` or ``backend-dev`` — but 4 of the 7 owners
|
|
6
|
+
named in ``config/agent-ownership.yaml`` (backend-dev, dba, devops-eng,
|
|
7
|
+
security-eng) were NOT dispatchable on real machines: they exist only
|
|
8
|
+
as department YAML, and the installer's agent deploy only ships ``.md``
|
|
9
|
+
files. A gate that demands an owner nobody can invoke is a dead end,
|
|
10
|
+
and dead ends teach sessions to rationalize bypasses.
|
|
11
|
+
|
|
12
|
+
This module is the single writer of ``config/agent-roster.json``:
|
|
13
|
+
|
|
14
|
+
python -m core.agents.roster_manifest
|
|
15
|
+
|
|
16
|
+
For every owner the ownership rules name, it resolves a dispatchable
|
|
17
|
+
source — a hand-authored ``departments/*/agents/<slug>.md`` (legacy,
|
|
18
|
+
wins because it may be hand-tuned) or the compiled
|
|
19
|
+
``config/claude-agents/<slug>.md`` (generated from the agent YAML by
|
|
20
|
+
the behavioral compiler) — and REFUSES to emit when neither exists:
|
|
21
|
+
a missing source is a build-time failure, never a runtime dead end.
|
|
22
|
+
``installer/skill-deploy.js`` reads the manifest and deploys every
|
|
23
|
+
gate owner; ``tests/python/test_agent_roster.py`` drift-gates it.
|
|
24
|
+
"""
|
|
25
|
+
|
|
26
|
+
from __future__ import annotations
|
|
27
|
+
|
|
28
|
+
import json
|
|
29
|
+
import re
|
|
30
|
+
from pathlib import Path
|
|
31
|
+
|
|
32
|
+
import yaml
|
|
33
|
+
|
|
34
|
+
REPO_ROOT = Path(__file__).resolve().parents[2]
|
|
35
|
+
OWNERSHIP_YAML = REPO_ROOT / "config" / "agent-ownership.yaml"
|
|
36
|
+
COMPILED_DIR = REPO_ROOT / "config" / "claude-agents"
|
|
37
|
+
DEPARTMENTS_DIR = REPO_ROOT / "departments"
|
|
38
|
+
ROSTER_JSON = REPO_ROOT / "config" / "agent-roster.json"
|
|
39
|
+
|
|
40
|
+
_NAME_RE = re.compile(r"^name:\s*(\S+)\s*$", re.MULTILINE)
|
|
41
|
+
|
|
42
|
+
|
|
43
|
+
def gate_owners() -> list[str]:
|
|
44
|
+
"""Every owner slug the ownership rules can demand (never ``*``)."""
|
|
45
|
+
config = yaml.safe_load(OWNERSHIP_YAML.read_text(encoding="utf-8"))
|
|
46
|
+
return sorted({
|
|
47
|
+
owner
|
|
48
|
+
for rule in config["ownership"]
|
|
49
|
+
for owner in (rule.get("owners") or [])
|
|
50
|
+
if owner != "*"
|
|
51
|
+
})
|
|
52
|
+
|
|
53
|
+
|
|
54
|
+
def _frontmatter_name(md_path: Path) -> str | None:
|
|
55
|
+
match = _NAME_RE.search(md_path.read_text(encoding="utf-8")[:2000])
|
|
56
|
+
return match.group(1) if match else None
|
|
57
|
+
|
|
58
|
+
|
|
59
|
+
def _resolve_source(slug: str) -> Path | None:
|
|
60
|
+
"""Dispatchable source for a slug: hand-authored dept .md wins,
|
|
61
|
+
compiled claude-agents .md is the generated fallback."""
|
|
62
|
+
for candidate in sorted(DEPARTMENTS_DIR.glob(f"*/agents/{slug}.md")):
|
|
63
|
+
if _frontmatter_name(candidate) == slug:
|
|
64
|
+
return candidate
|
|
65
|
+
compiled = COMPILED_DIR / f"{slug}.md"
|
|
66
|
+
if compiled.is_file() and _frontmatter_name(compiled) == slug:
|
|
67
|
+
return compiled
|
|
68
|
+
return None
|
|
69
|
+
|
|
70
|
+
|
|
71
|
+
def build_roster() -> dict:
|
|
72
|
+
owners = gate_owners()
|
|
73
|
+
entries: dict[str, dict] = {}
|
|
74
|
+
ghosts: list[str] = []
|
|
75
|
+
for slug in owners:
|
|
76
|
+
source = _resolve_source(slug)
|
|
77
|
+
if source is None:
|
|
78
|
+
ghosts.append(slug)
|
|
79
|
+
continue
|
|
80
|
+
entries[slug] = {
|
|
81
|
+
"source": str(source.relative_to(REPO_ROOT)),
|
|
82
|
+
"compiled": source.parent == COMPILED_DIR,
|
|
83
|
+
}
|
|
84
|
+
if ghosts:
|
|
85
|
+
raise ValueError(
|
|
86
|
+
f"ownership rules demand owners with NO dispatchable source: "
|
|
87
|
+
f"{ghosts} — author the agent (YAML + compiler run) or fix "
|
|
88
|
+
f"config/agent-ownership.yaml; a gate must never demand an "
|
|
89
|
+
f"owner nobody can invoke"
|
|
90
|
+
)
|
|
91
|
+
return {
|
|
92
|
+
"_meta": {
|
|
93
|
+
"generator": "core/agents/roster_manifest.py",
|
|
94
|
+
"purpose": (
|
|
95
|
+
"every specialist-gate owner resolves to a dispatchable "
|
|
96
|
+
"agent source; installer/skill-deploy.js deploys these"
|
|
97
|
+
),
|
|
98
|
+
},
|
|
99
|
+
"gate_owners": entries,
|
|
100
|
+
}
|
|
101
|
+
|
|
102
|
+
|
|
103
|
+
def render() -> str:
|
|
104
|
+
return json.dumps(build_roster(), indent=2, sort_keys=True) + "\n"
|
|
105
|
+
|
|
106
|
+
|
|
107
|
+
def main() -> int:
|
|
108
|
+
ROSTER_JSON.write_text(render(), encoding="utf-8")
|
|
109
|
+
print(f"agent roster written: {ROSTER_JSON}")
|
|
110
|
+
return 0
|
|
111
|
+
|
|
112
|
+
|
|
113
|
+
if __name__ == "__main__":
|
|
114
|
+
raise SystemExit(main())
|
|
@@ -135,13 +135,47 @@ export function deploySkills({
|
|
|
135
135
|
|
|
136
136
|
// ── Agent personas ──────────────────────────────────────────────────
|
|
137
137
|
if (agentsBase) {
|
|
138
|
-
|
|
138
|
+
const written = new Set();
|
|
139
|
+
counts.agents = deployAgents(deptRoot, agentsBase, written);
|
|
140
|
+
// Gate owners (F2 specialist-gate P0): every owner the ownership
|
|
141
|
+
// rules can demand MUST be dispatchable. 4 of 7 owners existed only
|
|
142
|
+
// as department YAML (never deployed — the agent loop above ships
|
|
143
|
+
// .md only), so the gate told sessions to dispatch agents nobody
|
|
144
|
+
// could invoke. The generated config/agent-roster.json maps each
|
|
145
|
+
// owner to a dispatchable source; hand-authored dept .md files win
|
|
146
|
+
// (already deployed above), compiled ones fill the gaps.
|
|
147
|
+
counts.agents += deployGateOwners(repoRoot, agentsBase, written);
|
|
139
148
|
}
|
|
140
149
|
|
|
141
150
|
log(counts);
|
|
142
151
|
return counts;
|
|
143
152
|
}
|
|
144
153
|
|
|
154
|
+
function deployGateOwners(repoRoot, agentsBase, written) {
|
|
155
|
+
let roster;
|
|
156
|
+
try {
|
|
157
|
+
roster = JSON.parse(readFileSync(
|
|
158
|
+
join(repoRoot, "config", "agent-roster.json"), "utf-8"));
|
|
159
|
+
} catch {
|
|
160
|
+
return 0; // older core without the roster — dept loop already ran
|
|
161
|
+
}
|
|
162
|
+
let deployed = 0;
|
|
163
|
+
for (const [slug, entry] of Object.entries(roster.gate_owners || {})) {
|
|
164
|
+
const target = `arka-${slug}.md`;
|
|
165
|
+
if (written.has(target)) continue; // dept .md won this run
|
|
166
|
+
const src = join(repoRoot, entry.source);
|
|
167
|
+
if (!existsSync(src)) continue;
|
|
168
|
+
try {
|
|
169
|
+
copyFileSync(src, join(agentsBase, target));
|
|
170
|
+
written.add(target);
|
|
171
|
+
deployed++;
|
|
172
|
+
} catch {
|
|
173
|
+
// One unreadable agent must not break the deploy.
|
|
174
|
+
}
|
|
175
|
+
}
|
|
176
|
+
return deployed;
|
|
177
|
+
}
|
|
178
|
+
|
|
145
179
|
function loadCuratedFilter(repoRoot) {
|
|
146
180
|
try {
|
|
147
181
|
const manifest = JSON.parse(readFileSync(
|
|
@@ -156,14 +190,14 @@ function loadCuratedFilter(repoRoot) {
|
|
|
156
190
|
}
|
|
157
191
|
}
|
|
158
192
|
|
|
159
|
-
function deployAgents(deptRoot, agentsBase) {
|
|
193
|
+
function deployAgents(deptRoot, agentsBase, written = new Set()) {
|
|
160
194
|
mkdirSync(agentsBase, { recursive: true });
|
|
161
195
|
let deployed = 0;
|
|
162
196
|
for (const dept of listSubdirs(deptRoot)) {
|
|
163
197
|
const agentsSrc = join(deptRoot, dept, "agents");
|
|
164
198
|
if (!existsSync(agentsSrc)) continue;
|
|
165
199
|
try {
|
|
166
|
-
deployed += deployDeptAgents(agentsSrc, agentsBase);
|
|
200
|
+
deployed += deployDeptAgents(agentsSrc, agentsBase, written);
|
|
167
201
|
} catch {
|
|
168
202
|
// Unreadable agents dir — skip the department, not the deploy.
|
|
169
203
|
}
|
|
@@ -171,7 +205,7 @@ function deployAgents(deptRoot, agentsBase) {
|
|
|
171
205
|
return deployed;
|
|
172
206
|
}
|
|
173
207
|
|
|
174
|
-
function deployDeptAgents(agentsSrc, agentsBase) {
|
|
208
|
+
function deployDeptAgents(agentsSrc, agentsBase, written) {
|
|
175
209
|
let deployed = 0;
|
|
176
210
|
for (const file of readdirSync(agentsSrc)) {
|
|
177
211
|
if (!file.endsWith(".md")) continue;
|
|
@@ -181,8 +215,9 @@ function deployDeptAgents(agentsSrc, agentsBase) {
|
|
|
181
215
|
} catch {
|
|
182
216
|
continue;
|
|
183
217
|
}
|
|
184
|
-
|
|
185
|
-
|
|
218
|
+
const target = `arka-${file.replace(/\.md$/, "")}.md`;
|
|
219
|
+
copyFileSync(srcFile, join(agentsBase, target));
|
|
220
|
+
written.add(target);
|
|
186
221
|
deployed++;
|
|
187
222
|
}
|
|
188
223
|
return deployed;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "arkaos",
|
|
3
|
-
"version": "4.14.
|
|
3
|
+
"version": "4.14.3",
|
|
4
4
|
"description": "The Operating System for AI Agent Teams",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -69,7 +69,10 @@
|
|
|
69
69
|
"VERSION",
|
|
70
70
|
"CONSTITUTION.md",
|
|
71
71
|
"README.md",
|
|
72
|
-
"LICENSE"
|
|
72
|
+
"LICENSE",
|
|
73
|
+
"!**/__pycache__/",
|
|
74
|
+
"!**/*.pyc",
|
|
75
|
+
"!**/.DS_Store"
|
|
73
76
|
],
|
|
74
77
|
"devDependencies": {
|
|
75
78
|
"eslint": "^8.57.1"
|
package/pyproject.toml
CHANGED
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|