arkaos 2.0.0-alpha.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CONSTITUTION.md +81 -0
- package/LICENSE +21 -0
- package/README.md +154 -0
- package/VERSION +1 -0
- package/arka/SKILL.md +134 -0
- package/bin/arkaos +107 -0
- package/config/constitution.yaml +168 -0
- package/config/hooks/post-tool-use-v2.sh +116 -0
- package/config/hooks/post-tool-use.sh +188 -0
- package/config/hooks/pre-compact-v2.sh +43 -0
- package/config/hooks/pre-compact.sh +99 -0
- package/config/hooks/user-prompt-submit-v2.sh +119 -0
- package/config/hooks/user-prompt-submit.sh +312 -0
- package/core/__init__.py +3 -0
- package/core/__pycache__/__init__.cpython-313.pyc +0 -0
- package/core/agents/__init__.py +14 -0
- package/core/agents/__pycache__/__init__.cpython-313.pyc +0 -0
- package/core/agents/__pycache__/loader.cpython-313.pyc +0 -0
- package/core/agents/__pycache__/registry_gen.cpython-313.pyc +0 -0
- package/core/agents/__pycache__/schema.cpython-313.pyc +0 -0
- package/core/agents/__pycache__/validator.cpython-313.pyc +0 -0
- package/core/agents/loader.py +88 -0
- package/core/agents/registry_gen.py +118 -0
- package/core/agents/schema.py +265 -0
- package/core/agents/validator.py +141 -0
- package/core/conclave/__init__.py +12 -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/conclave/advisor_db.py +373 -0
- package/core/conclave/display.py +104 -0
- package/core/conclave/matcher.py +104 -0
- package/core/conclave/persistence.py +61 -0
- package/core/conclave/profiler.py +298 -0
- package/core/conclave/prompts.py +77 -0
- package/core/conclave/schema.py +132 -0
- package/core/governance/__init__.py +5 -0
- package/core/governance/__pycache__/__init__.cpython-313.pyc +0 -0
- package/core/governance/__pycache__/constitution.cpython-313.pyc +0 -0
- package/core/governance/constitution.py +152 -0
- package/core/registry/__init__.py +1 -0
- package/core/registry/__pycache__/__init__.cpython-313.pyc +0 -0
- package/core/registry/__pycache__/generator.cpython-313.pyc +0 -0
- package/core/registry/generator.py +199 -0
- package/core/runtime/__init__.py +6 -0
- package/core/runtime/__pycache__/__init__.cpython-313.pyc +0 -0
- package/core/runtime/__pycache__/base.cpython-313.pyc +0 -0
- package/core/runtime/__pycache__/claude_code.cpython-313.pyc +0 -0
- package/core/runtime/__pycache__/codex_cli.cpython-313.pyc +0 -0
- package/core/runtime/__pycache__/cursor.cpython-313.pyc +0 -0
- package/core/runtime/__pycache__/gemini_cli.cpython-313.pyc +0 -0
- package/core/runtime/__pycache__/registry.cpython-313.pyc +0 -0
- package/core/runtime/__pycache__/subagent.cpython-313.pyc +0 -0
- package/core/runtime/base.py +143 -0
- package/core/runtime/claude_code.py +104 -0
- package/core/runtime/codex_cli.py +71 -0
- package/core/runtime/cursor.py +71 -0
- package/core/runtime/gemini_cli.py +68 -0
- package/core/runtime/registry.py +86 -0
- package/core/runtime/subagent.py +201 -0
- package/core/specs/__init__.py +10 -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/specs/manager.py +164 -0
- package/core/specs/schema.py +199 -0
- package/core/squads/__init__.py +7 -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/squads/loader.py +40 -0
- package/core/squads/registry.py +145 -0
- package/core/squads/schema.py +93 -0
- package/core/synapse/__init__.py +11 -0
- package/core/synapse/__pycache__/__init__.cpython-313.pyc +0 -0
- package/core/synapse/__pycache__/cache.cpython-313.pyc +0 -0
- package/core/synapse/__pycache__/engine.cpython-313.pyc +0 -0
- package/core/synapse/__pycache__/layers.cpython-313.pyc +0 -0
- package/core/synapse/cache.py +82 -0
- package/core/synapse/engine.py +184 -0
- package/core/synapse/layers.py +441 -0
- package/core/tasks/__init__.py +6 -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/tasks/manager.py +150 -0
- package/core/tasks/schema.py +108 -0
- package/core/workflow/__init__.py +10 -0
- package/core/workflow/__pycache__/__init__.cpython-313.pyc +0 -0
- package/core/workflow/__pycache__/engine.cpython-313.pyc +0 -0
- package/core/workflow/__pycache__/loader.cpython-313.pyc +0 -0
- package/core/workflow/__pycache__/schema.cpython-313.pyc +0 -0
- package/core/workflow/engine.py +216 -0
- package/core/workflow/loader.py +28 -0
- package/core/workflow/schema.py +129 -0
- package/departments/brand/SKILL.md +85 -0
- package/departments/brand/agents/brand-director.yaml +77 -0
- package/departments/brand/agents/brand-strategist.md +182 -0
- package/departments/brand/agents/brand-strategist.yaml +58 -0
- package/departments/brand/agents/creative-director.md +149 -0
- package/departments/brand/agents/motion-designer.md +113 -0
- package/departments/brand/agents/ux-designer.yaml +60 -0
- package/departments/brand/agents/visual-designer.md +187 -0
- package/departments/brand/agents/visual-designer.yaml +58 -0
- package/departments/brand/references/brand-creation-guide.md +559 -0
- package/departments/brand/scripts/provider-call.sh +262 -0
- package/departments/brand/skills/archetype-finder/SKILL.md +18 -0
- package/departments/brand/skills/colors/SKILL.md +18 -0
- package/departments/brand/skills/design-system/SKILL.md +18 -0
- package/departments/brand/skills/identity-system/SKILL.md +18 -0
- package/departments/brand/skills/logo-brief/SKILL.md +18 -0
- package/departments/brand/skills/mockup-generate/SKILL.md +18 -0
- package/departments/brand/skills/naming-evaluate/SKILL.md +50 -0
- package/departments/brand/skills/positioning-statement/SKILL.md +18 -0
- package/departments/brand/skills/primal-audit/SKILL.md +43 -0
- package/departments/brand/skills/ux-audit/SKILL.md +18 -0
- package/departments/brand/skills/voice-guide/SKILL.md +18 -0
- package/departments/brand/skills/wireframe/SKILL.md +18 -0
- package/departments/brand/squad.yaml +39 -0
- package/departments/brand/workflows/identity.yaml +113 -0
- package/departments/brand/workflows/naming.yaml +58 -0
- package/departments/community/SKILL.md +62 -0
- package/departments/community/agents/community-manager.yaml +57 -0
- package/departments/community/agents/community-strategist.yaml +74 -0
- package/departments/community/agents/engagement-designer.yaml +56 -0
- package/departments/community/skills/ai-community/SKILL.md +18 -0
- package/departments/community/skills/betting-setup/SKILL.md +18 -0
- package/departments/community/skills/business-model/SKILL.md +53 -0
- package/departments/community/skills/content-calendar/SKILL.md +18 -0
- package/departments/community/skills/events-plan/SKILL.md +18 -0
- package/departments/community/skills/gamification-design/SKILL.md +18 -0
- package/departments/community/skills/growth-plan/SKILL.md +18 -0
- package/departments/community/skills/metrics-track/SKILL.md +18 -0
- package/departments/community/skills/moderation/SKILL.md +18 -0
- package/departments/community/skills/monetize-plan/SKILL.md +18 -0
- package/departments/community/skills/niche-setup/SKILL.md +18 -0
- package/departments/community/skills/onboarding-flow/SKILL.md +18 -0
- package/departments/community/skills/platform-select/SKILL.md +18 -0
- package/departments/community/skills/retention-system/SKILL.md +48 -0
- package/departments/community/squad.yaml +32 -0
- package/departments/community/workflows/setup.yaml +62 -0
- package/departments/content/SKILL.md +65 -0
- package/departments/content/agents/content-strategist.yaml +74 -0
- package/departments/content/agents/repurpose-distributor.yaml +57 -0
- package/departments/content/agents/scriptwriter.yaml +56 -0
- package/departments/content/agents/viral-engineer.yaml +56 -0
- package/departments/content/skills/ai-workflow/SKILL.md +18 -0
- package/departments/content/skills/analytics/SKILL.md +18 -0
- package/departments/content/skills/calendar/SKILL.md +18 -0
- package/departments/content/skills/content-system/SKILL.md +75 -0
- package/departments/content/skills/hook-write/SKILL.md +43 -0
- package/departments/content/skills/monetization-plan/SKILL.md +18 -0
- package/departments/content/skills/newsletter-write/SKILL.md +18 -0
- package/departments/content/skills/platform-optimize/SKILL.md +18 -0
- package/departments/content/skills/repurpose-plan/SKILL.md +18 -0
- package/departments/content/skills/script-structure/SKILL.md +18 -0
- package/departments/content/skills/short-form/SKILL.md +18 -0
- package/departments/content/skills/thumbnail-package/SKILL.md +18 -0
- package/departments/content/skills/viral-design/SKILL.md +45 -0
- package/departments/content/skills/youtube-strategy/SKILL.md +18 -0
- package/departments/content/squad.yaml +39 -0
- package/departments/content/workflows/viral.yaml +99 -0
- package/departments/dev/SKILL.md +135 -0
- package/departments/dev/agents/analyst.md +184 -0
- package/departments/dev/agents/architect.md +184 -0
- package/departments/dev/agents/architect.yaml +74 -0
- package/departments/dev/agents/backend-dev.yaml +70 -0
- package/departments/dev/agents/cto.md +140 -0
- package/departments/dev/agents/cto.yaml +77 -0
- package/departments/dev/agents/dba.yaml +72 -0
- package/departments/dev/agents/devops-eng.yaml +72 -0
- package/departments/dev/agents/devops.md +204 -0
- package/departments/dev/agents/frontend-dev.md +213 -0
- package/departments/dev/agents/frontend-dev.yaml +71 -0
- package/departments/dev/agents/qa-eng.yaml +72 -0
- package/departments/dev/agents/qa.md +231 -0
- package/departments/dev/agents/security-eng.yaml +72 -0
- package/departments/dev/agents/security.md +174 -0
- package/departments/dev/agents/senior-dev.md +177 -0
- package/departments/dev/agents/tech-lead.md +188 -0
- package/departments/dev/agents/tech-lead.yaml +72 -0
- package/departments/dev/skills/adversarial-review/SKILL.md +117 -0
- package/departments/dev/skills/agent-design/SKILL.md +127 -0
- package/departments/dev/skills/agent-workflow/SKILL.md +116 -0
- package/departments/dev/skills/ai-assisted-dev/SKILL.md +18 -0
- package/departments/dev/skills/ai-security/SKILL.md +112 -0
- package/departments/dev/skills/api-design/SKILL.md +59 -0
- package/departments/dev/skills/architecture-design/SKILL.md +89 -0
- package/departments/dev/skills/changelog/SKILL.md +110 -0
- package/departments/dev/skills/ci-cd-pipeline/SKILL.md +130 -0
- package/departments/dev/skills/clean-code-review/SKILL.md +65 -0
- package/departments/dev/skills/code-review/SKILL.md +18 -0
- package/departments/dev/skills/codebase-onboard/SKILL.md +109 -0
- package/departments/dev/skills/db-design/SKILL.md +18 -0
- package/departments/dev/skills/db-schema/SKILL.md +130 -0
- package/departments/dev/skills/ddd-model/SKILL.md +18 -0
- package/departments/dev/skills/dependency-audit/SKILL.md +118 -0
- package/departments/dev/skills/deploy/SKILL.md +18 -0
- package/departments/dev/skills/devops-pipeline/SKILL.md +18 -0
- package/departments/dev/skills/docs/SKILL.md +18 -0
- package/departments/dev/skills/env-secrets/SKILL.md +89 -0
- package/departments/dev/skills/incident/SKILL.md +125 -0
- package/departments/dev/skills/mcp/SKILL.md +106 -0
- package/departments/dev/skills/mcp-builder/SKILL.md +121 -0
- package/departments/dev/skills/observability/SKILL.md +119 -0
- package/departments/dev/skills/onboard/SKILL.md +389 -0
- package/departments/dev/skills/onboard/scripts/detect-stack.py +472 -0
- package/departments/dev/skills/performance-audit/SKILL.md +49 -0
- package/departments/dev/skills/performance-profiler/SKILL.md +128 -0
- package/departments/dev/skills/rag-architect/SKILL.md +125 -0
- package/departments/dev/skills/red-team/SKILL.md +112 -0
- package/departments/dev/skills/refactor-plan/SKILL.md +18 -0
- package/departments/dev/skills/release/SKILL.md +130 -0
- package/departments/dev/skills/research/SKILL.md +18 -0
- package/departments/dev/skills/runbook/SKILL.md +103 -0
- package/departments/dev/skills/scaffold/SKILL.md +249 -0
- package/departments/dev/skills/security-audit/SKILL.md +68 -0
- package/departments/dev/skills/skill-audit/SKILL.md +96 -0
- package/departments/dev/skills/spec/SKILL.md +218 -0
- package/departments/dev/skills/stack-check/SKILL.md +18 -0
- package/departments/dev/skills/tdd-cycle/SKILL.md +56 -0
- package/departments/dev/skills/tech-debt/SKILL.md +100 -0
- package/departments/dev/squad.yaml +62 -0
- package/departments/dev/workflows/debug.yaml +63 -0
- package/departments/dev/workflows/feature.yaml +129 -0
- package/departments/dev/workflows/refactor.yaml +64 -0
- package/departments/ecom/SKILL.md +39 -0
- package/departments/ecom/agents/commerce-engineer.yaml +58 -0
- package/departments/ecom/agents/cro-specialist.yaml +56 -0
- package/departments/ecom/agents/ecom-director.yaml +73 -0
- package/departments/ecom/agents/retention-manager.yaml +59 -0
- package/departments/ecom/skills/analytics/SKILL.md +18 -0
- package/departments/ecom/skills/cart-recovery/SKILL.md +18 -0
- package/departments/ecom/skills/cro-optimize/SKILL.md +58 -0
- package/departments/ecom/skills/customer-journey/SKILL.md +18 -0
- package/departments/ecom/skills/fulfillment-plan/SKILL.md +18 -0
- package/departments/ecom/skills/marketplace-manage/SKILL.md +18 -0
- package/departments/ecom/skills/pricing-strategy/SKILL.md +18 -0
- package/departments/ecom/skills/product-launch/SKILL.md +18 -0
- package/departments/ecom/skills/rfm-segment/SKILL.md +44 -0
- package/departments/ecom/skills/social-commerce/SKILL.md +18 -0
- package/departments/ecom/skills/store-audit/SKILL.md +18 -0
- package/departments/ecom/skills/subscription-model/SKILL.md +18 -0
- package/departments/ecom/squad.yaml +39 -0
- package/departments/ecom/workflows/product-page.yaml +62 -0
- package/departments/ecommerce/SKILL.md +363 -0
- package/departments/ecommerce/agents/ecommerce-manager.md +91 -0
- package/departments/finance/SKILL.md +37 -0
- package/departments/finance/agents/cfo.md +85 -0
- package/departments/finance/agents/cfo.yaml +77 -0
- package/departments/finance/agents/financial-analyst.yaml +57 -0
- package/departments/finance/agents/investment-strategist.yaml +58 -0
- package/departments/finance/skills/budget-plan/SKILL.md +18 -0
- package/departments/finance/skills/cashflow-forecast/SKILL.md +18 -0
- package/departments/finance/skills/ciso-advisor/SKILL.md +113 -0
- package/departments/finance/skills/financial-model/SKILL.md +70 -0
- package/departments/finance/skills/pitch-deck/SKILL.md +18 -0
- package/departments/finance/skills/scenario-analysis/SKILL.md +18 -0
- package/departments/finance/skills/unit-economics/SKILL.md +44 -0
- package/departments/finance/skills/valuation-model/SKILL.md +18 -0
- package/departments/finance/squad.yaml +37 -0
- package/departments/finance/workflows/cashflow.yaml +47 -0
- package/departments/finance/workflows/model.yaml +83 -0
- package/departments/kb/SKILL.md +38 -0
- package/departments/kb/agents/knowledge-curator.yaml +60 -0
- package/departments/kb/agents/knowledge-director.yaml +72 -0
- package/departments/kb/agents/research-analyst.yaml +58 -0
- package/departments/kb/skills/ai-research/SKILL.md +18 -0
- package/departments/kb/skills/competitive-intel/SKILL.md +18 -0
- package/departments/kb/skills/knowledge-review/SKILL.md +18 -0
- package/departments/kb/skills/learn-content/SKILL.md +18 -0
- package/departments/kb/skills/moc-create/SKILL.md +18 -0
- package/departments/kb/skills/persona-build/SKILL.md +18 -0
- package/departments/kb/skills/research-plan/SKILL.md +51 -0
- package/departments/kb/skills/search-kb/SKILL.md +18 -0
- package/departments/kb/skills/source-evaluate/SKILL.md +18 -0
- package/departments/kb/skills/taxonomy-manage/SKILL.md +18 -0
- package/departments/kb/skills/write-as-persona/SKILL.md +18 -0
- package/departments/kb/skills/zettelkasten-process/SKILL.md +56 -0
- package/departments/kb/squad.yaml +34 -0
- package/departments/kb/workflows/learn.yaml +63 -0
- package/departments/knowledge/SKILL.md +474 -0
- package/departments/knowledge/agents/knowledge-curator.md +89 -0
- package/departments/knowledge/scripts/kb-check-capabilities.sh +143 -0
- package/departments/knowledge/scripts/kb-cleanup.sh +135 -0
- package/departments/knowledge/scripts/kb-queue.sh +156 -0
- package/departments/knowledge/scripts/kb-status.sh +195 -0
- package/departments/knowledge/scripts/kb-worker.sh +217 -0
- package/departments/landing/SKILL.md +65 -0
- package/departments/landing/agents/affiliate-manager.yaml +57 -0
- package/departments/landing/agents/conversion-strategist.yaml +74 -0
- package/departments/landing/agents/cro-specialist.yaml +58 -0
- package/departments/landing/agents/sales-copywriter.yaml +61 -0
- package/departments/landing/skills/ab-test/SKILL.md +18 -0
- package/departments/landing/skills/affiliate-bridge/SKILL.md +18 -0
- package/departments/landing/skills/awareness-diagnose/SKILL.md +18 -0
- package/departments/landing/skills/copy-framework/SKILL.md +55 -0
- package/departments/landing/skills/email-sequence/SKILL.md +18 -0
- package/departments/landing/skills/funnel-design/SKILL.md +49 -0
- package/departments/landing/skills/funnel-metrics/SKILL.md +18 -0
- package/departments/landing/skills/headline-write/SKILL.md +18 -0
- package/departments/landing/skills/landing-gen/SKILL.md +124 -0
- package/departments/landing/skills/launch-sequence/SKILL.md +18 -0
- package/departments/landing/skills/offer-create/SKILL.md +62 -0
- package/departments/landing/skills/optimize-page/SKILL.md +18 -0
- package/departments/landing/skills/page-architect/SKILL.md +18 -0
- package/departments/landing/skills/persuasion-apply/SKILL.md +18 -0
- package/departments/landing/skills/webinar-funnel/SKILL.md +18 -0
- package/departments/landing/squad.yaml +39 -0
- package/departments/landing/workflows/launch.yaml +72 -0
- package/departments/landing/workflows/offer.yaml +99 -0
- package/departments/leadership/SKILL.md +35 -0
- package/departments/leadership/agents/culture-coach.yaml +59 -0
- package/departments/leadership/agents/hr-specialist.yaml +57 -0
- package/departments/leadership/agents/leadership-director.yaml +72 -0
- package/departments/leadership/skills/change-manage/SKILL.md +18 -0
- package/departments/leadership/skills/conflict-resolve/SKILL.md +18 -0
- package/departments/leadership/skills/culture-audit/SKILL.md +18 -0
- package/departments/leadership/skills/delegation-matrix/SKILL.md +18 -0
- package/departments/leadership/skills/disc-assess/SKILL.md +18 -0
- package/departments/leadership/skills/feedback-give/SKILL.md +18 -0
- package/departments/leadership/skills/hiring-plan/SKILL.md +18 -0
- package/departments/leadership/skills/okr-define/SKILL.md +69 -0
- package/departments/leadership/skills/performance-review/SKILL.md +18 -0
- package/departments/leadership/skills/team-health/SKILL.md +56 -0
- package/departments/leadership/squad.yaml +35 -0
- package/departments/leadership/workflows/team-build.yaml +55 -0
- package/departments/marketing/SKILL.md +61 -0
- package/departments/marketing/agents/content-creator.md +85 -0
- package/departments/marketing/agents/content-marketer.yaml +58 -0
- package/departments/marketing/agents/marketing-director.yaml +75 -0
- package/departments/marketing/agents/paid-specialist.yaml +58 -0
- package/departments/marketing/agents/seo-specialist.yaml +57 -0
- package/departments/marketing/skills/ab-test/SKILL.md +18 -0
- package/departments/marketing/skills/analytics-report/SKILL.md +18 -0
- package/departments/marketing/skills/audience-segment/SKILL.md +18 -0
- package/departments/marketing/skills/calendar-plan/SKILL.md +18 -0
- package/departments/marketing/skills/cold-email/SKILL.md +128 -0
- package/departments/marketing/skills/competitor-analysis/SKILL.md +18 -0
- package/departments/marketing/skills/content-audit/SKILL.md +18 -0
- package/departments/marketing/skills/email-sequence/SKILL.md +18 -0
- package/departments/marketing/skills/growth-loop/SKILL.md +50 -0
- package/departments/marketing/skills/marketing-automation/SKILL.md +18 -0
- package/departments/marketing/skills/paid-campaign/SKILL.md +18 -0
- package/departments/marketing/skills/programmatic-seo/SKILL.md +123 -0
- package/departments/marketing/skills/seo-audit/SKILL.md +48 -0
- package/departments/marketing/skills/social-strategy/SKILL.md +18 -0
- package/departments/marketing/squad.yaml +39 -0
- package/departments/marketing/workflows/campaign.yaml +112 -0
- package/departments/marketing/workflows/social.yaml +56 -0
- package/departments/operations/SKILL.md +422 -0
- package/departments/operations/agents/coo.md +88 -0
- package/departments/ops/SKILL.md +37 -0
- package/departments/ops/agents/automation-engineer.yaml +58 -0
- package/departments/ops/agents/ops-lead.yaml +71 -0
- package/departments/ops/skills/bottleneck-find/SKILL.md +49 -0
- package/departments/ops/skills/dashboard-build/SKILL.md +18 -0
- package/departments/ops/skills/gtd-setup/SKILL.md +18 -0
- package/departments/ops/skills/integration-design/SKILL.md +18 -0
- package/departments/ops/skills/lean-audit/SKILL.md +18 -0
- package/departments/ops/skills/metrics-dashboard/SKILL.md +18 -0
- package/departments/ops/skills/n8n-flow/SKILL.md +18 -0
- package/departments/ops/skills/sop-create/SKILL.md +18 -0
- package/departments/ops/skills/workflow-automate/SKILL.md +39 -0
- package/departments/ops/skills/zapier-flow/SKILL.md +18 -0
- package/departments/ops/squad.yaml +35 -0
- package/departments/ops/workflows/lean-audit.yaml +69 -0
- package/departments/org/SKILL.md +34 -0
- package/departments/org/agents/coo.yaml +80 -0
- package/departments/org/agents/org-designer.yaml +56 -0
- package/departments/org/agents/people-ops.yaml +56 -0
- package/departments/org/skills/compensation-plan/SKILL.md +18 -0
- package/departments/org/skills/culture-define/SKILL.md +18 -0
- package/departments/org/skills/decision-framework/SKILL.md +18 -0
- package/departments/org/skills/hiring-plan/SKILL.md +18 -0
- package/departments/org/skills/meeting-optimize/SKILL.md +18 -0
- package/departments/org/skills/onboarding-design/SKILL.md +18 -0
- package/departments/org/skills/org-design/SKILL.md +18 -0
- package/departments/org/skills/remote-setup/SKILL.md +18 -0
- package/departments/org/skills/sop-process/SKILL.md +18 -0
- package/departments/org/skills/team-assess/SKILL.md +18 -0
- package/departments/org/squad.yaml +33 -0
- package/departments/org/workflows/design.yaml +55 -0
- package/departments/pm/SKILL.md +39 -0
- package/departments/pm/agents/pm-director.yaml +75 -0
- package/departments/pm/agents/product-owner.yaml +59 -0
- package/departments/pm/agents/scrum-master.yaml +59 -0
- package/departments/pm/skills/agile-po/SKILL.md +118 -0
- package/departments/pm/skills/backlog-groom/SKILL.md +18 -0
- package/departments/pm/skills/discovery-plan/SKILL.md +48 -0
- package/departments/pm/skills/estimate-forecast/SKILL.md +18 -0
- package/departments/pm/skills/impact-map/SKILL.md +18 -0
- package/departments/pm/skills/kanban-setup/SKILL.md +18 -0
- package/departments/pm/skills/risk-register/SKILL.md +18 -0
- package/departments/pm/skills/roadmap-build/SKILL.md +18 -0
- package/departments/pm/skills/shape-pitch/SKILL.md +55 -0
- package/departments/pm/skills/sprint-plan/SKILL.md +18 -0
- package/departments/pm/skills/stakeholder-map/SKILL.md +18 -0
- package/departments/pm/skills/standup-run/SKILL.md +18 -0
- package/departments/pm/skills/story-write/SKILL.md +18 -0
- package/departments/pm/squad.yaml +37 -0
- package/departments/pm/workflows/retro.yaml +33 -0
- package/departments/quality/SKILL.md +66 -0
- package/departments/quality/agents/copy-director.md +134 -0
- package/departments/quality/agents/copy-director.yaml +73 -0
- package/departments/quality/agents/cqo.md +134 -0
- package/departments/quality/agents/cqo.yaml +76 -0
- package/departments/quality/agents/tech-director.yaml +79 -0
- package/departments/quality/agents/tech-ux-director.md +193 -0
- package/departments/quality/squad.yaml +25 -0
- package/departments/saas/SKILL.md +64 -0
- package/departments/saas/agents/cs-manager.yaml +57 -0
- package/departments/saas/agents/growth-engineer.yaml +57 -0
- package/departments/saas/agents/metrics-analyst.yaml +57 -0
- package/departments/saas/agents/saas-strategist.yaml +74 -0
- package/departments/saas/skills/benchmark-compare/SKILL.md +18 -0
- package/departments/saas/skills/churn-analysis/SKILL.md +18 -0
- package/departments/saas/skills/customer-success/SKILL.md +18 -0
- package/departments/saas/skills/growth-plan/SKILL.md +18 -0
- package/departments/saas/skills/gtm-strategy/SKILL.md +18 -0
- package/departments/saas/skills/launch-execute/SKILL.md +18 -0
- package/departments/saas/skills/metrics-dashboard/SKILL.md +18 -0
- package/departments/saas/skills/micro-saas-stack/SKILL.md +18 -0
- package/departments/saas/skills/mvp-build/SKILL.md +18 -0
- package/departments/saas/skills/niche-evaluate/SKILL.md +18 -0
- package/departments/saas/skills/onboarding-optimize/SKILL.md +18 -0
- package/departments/saas/skills/plg-setup/SKILL.md +53 -0
- package/departments/saas/skills/pricing-strategy/SKILL.md +48 -0
- package/departments/saas/skills/saas-scaffold/SKILL.md +127 -0
- package/departments/saas/skills/validate-idea/SKILL.md +55 -0
- package/departments/saas/squad.yaml +37 -0
- package/departments/saas/workflows/metrics.yaml +58 -0
- package/departments/saas/workflows/validate.yaml +103 -0
- package/departments/sales/SKILL.md +35 -0
- package/departments/sales/agents/sales-closer.yaml +58 -0
- package/departments/sales/agents/sales-director.yaml +72 -0
- package/departments/sales/agents/sales-ops.yaml +55 -0
- package/departments/sales/skills/challenger-sell/SKILL.md +18 -0
- package/departments/sales/skills/deal-qualify/SKILL.md +18 -0
- package/departments/sales/skills/discovery-call/SKILL.md +18 -0
- package/departments/sales/skills/forecast-revenue/SKILL.md +18 -0
- package/departments/sales/skills/negotiate-plan/SKILL.md +18 -0
- package/departments/sales/skills/objection-handle/SKILL.md +18 -0
- package/departments/sales/skills/pipeline-manage/SKILL.md +18 -0
- package/departments/sales/skills/pricing-negotiate/SKILL.md +18 -0
- package/departments/sales/skills/proposal-write/SKILL.md +54 -0
- package/departments/sales/skills/spin-sell/SKILL.md +50 -0
- package/departments/sales/squad.yaml +35 -0
- package/departments/sales/workflows/pipeline.yaml +49 -0
- package/departments/strategy/SKILL.md +37 -0
- package/departments/strategy/agents/business-model-designer.yaml +58 -0
- package/departments/strategy/agents/market-analyst.yaml +58 -0
- package/departments/strategy/agents/strategist.md +79 -0
- package/departments/strategy/agents/strategy-director.yaml +75 -0
- package/departments/strategy/skills/blue-ocean/SKILL.md +56 -0
- package/departments/strategy/skills/bmc/SKILL.md +18 -0
- package/departments/strategy/skills/board-advisor/SKILL.md +121 -0
- package/departments/strategy/skills/cto-advisor/SKILL.md +113 -0
- package/departments/strategy/skills/five-forces/SKILL.md +74 -0
- package/departments/strategy/skills/growth-strategy/SKILL.md +18 -0
- package/departments/strategy/skills/moat-analysis/SKILL.md +18 -0
- package/departments/strategy/skills/position/SKILL.md +18 -0
- package/departments/strategy/skills/scenario-plan/SKILL.md +18 -0
- package/departments/strategy/squad.yaml +37 -0
- package/departments/strategy/workflows/analysis.yaml +90 -0
- package/departments/strategy/workflows/swot.yaml +47 -0
- package/installer/adapters/claude-code.js +73 -0
- package/installer/adapters/codex-cli.js +34 -0
- package/installer/adapters/cursor.js +34 -0
- package/installer/adapters/gemini-cli.js +37 -0
- package/installer/cli.js +91 -0
- package/installer/detect-runtime.js +122 -0
- package/installer/doctor.js +105 -0
- package/installer/index.js +199 -0
- package/installer/uninstall.js +46 -0
- package/installer/update.js +39 -0
- package/knowledge/agents-registry-v2.json +2702 -0
- package/knowledge/commands-registry-v2.json +3827 -0
- package/package.json +58 -0
- package/pyproject.toml +64 -0
|
@@ -0,0 +1,199 @@
|
|
|
1
|
+
"""Commands registry generator.
|
|
2
|
+
|
|
3
|
+
Scans all SKILL.md files, extracts command tables, and generates
|
|
4
|
+
a machine-readable JSON registry for /do routing and Synapse L5.
|
|
5
|
+
"""
|
|
6
|
+
|
|
7
|
+
import json
|
|
8
|
+
import re
|
|
9
|
+
from datetime import datetime
|
|
10
|
+
from pathlib import Path
|
|
11
|
+
from typing import Optional
|
|
12
|
+
|
|
13
|
+
|
|
14
|
+
# Keywords map: department → common keywords users might type
|
|
15
|
+
DEPARTMENT_KEYWORDS: dict[str, list[str]] = {
|
|
16
|
+
"dev": ["build", "code", "feature", "deploy", "test", "review", "scaffold", "debug",
|
|
17
|
+
"refactor", "api", "migration", "implement", "fix", "bug", "database", "architecture"],
|
|
18
|
+
"marketing": ["social", "content", "campaign", "post", "instagram", "linkedin", "twitter",
|
|
19
|
+
"tiktok", "seo", "marketing", "ads", "email", "growth", "analytics"],
|
|
20
|
+
"brand": ["brand", "logo", "colors", "palette", "mockup", "identity", "naming",
|
|
21
|
+
"positioning", "voice", "guidelines", "ux", "wireframe", "design", "ui"],
|
|
22
|
+
"finance": ["budget", "invoice", "revenue", "forecast", "profit", "financial", "invest",
|
|
23
|
+
"valuation", "cashflow", "expense", "pitch", "model", "scenario"],
|
|
24
|
+
"strategy": ["strategy", "brainstorm", "market", "swot", "competitor", "roadmap",
|
|
25
|
+
"position", "blue ocean", "five forces", "tam", "moat", "growth"],
|
|
26
|
+
"ecom": ["store", "product", "shop", "shopify", "ecommerce", "catalog", "cart",
|
|
27
|
+
"checkout", "pricing", "marketplace", "rfm", "conversion", "cro"],
|
|
28
|
+
"kb": ["learn", "persona", "knowledge", "youtube", "transcribe", "research",
|
|
29
|
+
"zettelkasten", "note", "moc", "taxonomy", "source"],
|
|
30
|
+
"ops": ["automate", "workflow", "process", "sop", "bottleneck", "integration",
|
|
31
|
+
"zapier", "n8n", "dashboard", "lean", "gtd"],
|
|
32
|
+
"pm": ["sprint", "backlog", "standup", "retro", "scrum", "kanban", "story",
|
|
33
|
+
"estimate", "roadmap", "agile", "discover", "shape"],
|
|
34
|
+
"saas": ["saas", "micro-saas", "plg", "freemium", "churn", "mrr", "arr",
|
|
35
|
+
"subscription", "onboarding", "metrics", "validate", "niche", "benchmark"],
|
|
36
|
+
"landing": ["landing", "funnel", "copy", "headline", "offer", "launch", "affiliate",
|
|
37
|
+
"webinar", "conversion", "sales page", "persuade", "cro"],
|
|
38
|
+
"content": ["viral", "hook", "script", "repurpose", "youtube", "tiktok", "reels",
|
|
39
|
+
"shorts", "newsletter", "creator", "thumbnail", "platform", "content system"],
|
|
40
|
+
"community": ["community", "group", "membership", "discord", "telegram", "skool",
|
|
41
|
+
"circle", "gamification", "engagement", "moderate", "event"],
|
|
42
|
+
"sales": ["pipeline", "proposal", "discovery", "objection", "negotiate", "deal",
|
|
43
|
+
"close", "prospect", "spin", "challenger", "forecast"],
|
|
44
|
+
"lead": ["leadership", "delegation", "1on1", "feedback", "culture", "hiring",
|
|
45
|
+
"performance review", "team build", "conflict", "okr"],
|
|
46
|
+
"org": ["org design", "hiring plan", "onboarding", "remote", "meeting",
|
|
47
|
+
"compensation", "decision", "team assess", "sop"],
|
|
48
|
+
}
|
|
49
|
+
|
|
50
|
+
|
|
51
|
+
def extract_commands_from_skill(skill_path: Path) -> list[dict]:
|
|
52
|
+
"""Extract commands from a SKILL.md file's command table.
|
|
53
|
+
|
|
54
|
+
Parses markdown tables with | Command | Description | format.
|
|
55
|
+
"""
|
|
56
|
+
if not skill_path.exists():
|
|
57
|
+
return []
|
|
58
|
+
|
|
59
|
+
text = skill_path.read_text()
|
|
60
|
+
commands = []
|
|
61
|
+
|
|
62
|
+
# Find command tables (lines with | `/ ... ` | description | ...)
|
|
63
|
+
for line in text.split("\n"):
|
|
64
|
+
match = re.match(r"\|\s*`([^`]+)`\s*\|\s*([^|]+)\|", line)
|
|
65
|
+
if match:
|
|
66
|
+
command = match.group(1).strip()
|
|
67
|
+
description = match.group(2).strip()
|
|
68
|
+
if not command.startswith("/") or "Description" in description or description.startswith("-"):
|
|
69
|
+
continue
|
|
70
|
+
commands.append({
|
|
71
|
+
"command": command,
|
|
72
|
+
"description": description,
|
|
73
|
+
})
|
|
74
|
+
|
|
75
|
+
return commands
|
|
76
|
+
|
|
77
|
+
|
|
78
|
+
def determine_department(skill_path: Path) -> str:
|
|
79
|
+
"""Determine department from the skill file's directory."""
|
|
80
|
+
# departments/dev/SKILL.md → dev
|
|
81
|
+
# arka/SKILL.md → arka
|
|
82
|
+
parent = skill_path.parent.name
|
|
83
|
+
return parent
|
|
84
|
+
|
|
85
|
+
|
|
86
|
+
def extract_tier(description: str) -> int:
|
|
87
|
+
"""Guess command tier from description keywords."""
|
|
88
|
+
desc_lower = description.lower()
|
|
89
|
+
if any(w in desc_lower for w in ["full", "enterprise", "comprehensive", "complete"]):
|
|
90
|
+
return 1
|
|
91
|
+
if any(w in desc_lower for w in ["audit", "analysis", "strategy", "design"]):
|
|
92
|
+
return 2
|
|
93
|
+
return 3
|
|
94
|
+
|
|
95
|
+
|
|
96
|
+
def generate_commands_registry(
|
|
97
|
+
base_dir: str | Path,
|
|
98
|
+
output_path: str | Path,
|
|
99
|
+
) -> dict:
|
|
100
|
+
"""Generate commands-registry-v2.json from all SKILL.md files.
|
|
101
|
+
|
|
102
|
+
Args:
|
|
103
|
+
base_dir: Project root directory.
|
|
104
|
+
output_path: Where to write the JSON registry.
|
|
105
|
+
|
|
106
|
+
Returns:
|
|
107
|
+
The registry dict.
|
|
108
|
+
"""
|
|
109
|
+
base_dir = Path(base_dir)
|
|
110
|
+
output_path = Path(output_path)
|
|
111
|
+
|
|
112
|
+
all_commands = []
|
|
113
|
+
|
|
114
|
+
# v2 department directories (exclude v1 legacy dirs)
|
|
115
|
+
v2_departments = {
|
|
116
|
+
"dev", "marketing", "brand", "finance", "strategy", "ecom", "kb",
|
|
117
|
+
"ops", "pm", "saas", "landing", "content", "community", "sales",
|
|
118
|
+
"leadership", "org", "quality",
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
# Scan department SKILL.md files
|
|
122
|
+
for skill_file in sorted(base_dir.glob("departments/*/SKILL.md")):
|
|
123
|
+
if skill_file.parent.name not in v2_departments:
|
|
124
|
+
continue
|
|
125
|
+
dept = determine_department(skill_file)
|
|
126
|
+
raw_commands = extract_commands_from_skill(skill_file)
|
|
127
|
+
keywords = DEPARTMENT_KEYWORDS.get(dept, [])
|
|
128
|
+
|
|
129
|
+
for cmd in raw_commands:
|
|
130
|
+
command_text = cmd["command"]
|
|
131
|
+
# Generate ID: /dev feature → dev-feature
|
|
132
|
+
cmd_id = command_text.lstrip("/").replace(" ", "-").split("<")[0].rstrip("-")
|
|
133
|
+
|
|
134
|
+
# Determine if code-modifying
|
|
135
|
+
modifies_code = dept == "dev" and any(
|
|
136
|
+
w in command_text for w in ["feature", "api", "debug", "refactor", "db", "scaffold"]
|
|
137
|
+
)
|
|
138
|
+
|
|
139
|
+
all_commands.append({
|
|
140
|
+
"id": cmd_id,
|
|
141
|
+
"command": command_text,
|
|
142
|
+
"department": dept,
|
|
143
|
+
"description": cmd["description"],
|
|
144
|
+
"keywords": keywords[:8],
|
|
145
|
+
"tier": extract_tier(cmd["description"]),
|
|
146
|
+
"modifies_code": modifies_code,
|
|
147
|
+
"requires_branch": modifies_code,
|
|
148
|
+
})
|
|
149
|
+
|
|
150
|
+
# Scan orchestrator SKILL.md
|
|
151
|
+
arka_skill = base_dir / "arka" / "SKILL.md"
|
|
152
|
+
if arka_skill.exists():
|
|
153
|
+
raw_commands = extract_commands_from_skill(arka_skill)
|
|
154
|
+
for cmd in raw_commands:
|
|
155
|
+
command_text = cmd["command"]
|
|
156
|
+
cmd_id = command_text.lstrip("/").replace(" ", "-").split("<")[0].rstrip("-")
|
|
157
|
+
all_commands.append({
|
|
158
|
+
"id": cmd_id,
|
|
159
|
+
"command": command_text,
|
|
160
|
+
"department": "arka",
|
|
161
|
+
"description": cmd["description"],
|
|
162
|
+
"keywords": [],
|
|
163
|
+
"tier": 3,
|
|
164
|
+
"modifies_code": False,
|
|
165
|
+
"requires_branch": False,
|
|
166
|
+
})
|
|
167
|
+
|
|
168
|
+
# Build department summary
|
|
169
|
+
dept_counts: dict[str, int] = {}
|
|
170
|
+
for cmd in all_commands:
|
|
171
|
+
d = cmd["department"]
|
|
172
|
+
dept_counts[d] = dept_counts.get(d, 0) + 1
|
|
173
|
+
|
|
174
|
+
registry = {
|
|
175
|
+
"_meta": {
|
|
176
|
+
"version": "2.0.0",
|
|
177
|
+
"generated": datetime.now().isoformat(),
|
|
178
|
+
"total_commands": len(all_commands),
|
|
179
|
+
"generator": "core/registry/generator.py",
|
|
180
|
+
"departments": dept_counts,
|
|
181
|
+
},
|
|
182
|
+
"commands": all_commands,
|
|
183
|
+
}
|
|
184
|
+
|
|
185
|
+
output_path.parent.mkdir(parents=True, exist_ok=True)
|
|
186
|
+
with open(output_path, "w") as f:
|
|
187
|
+
json.dump(registry, f, indent=2, ensure_ascii=False)
|
|
188
|
+
|
|
189
|
+
return registry
|
|
190
|
+
|
|
191
|
+
|
|
192
|
+
if __name__ == "__main__":
|
|
193
|
+
base = Path(__file__).parent.parent.parent
|
|
194
|
+
reg = generate_commands_registry(
|
|
195
|
+
base,
|
|
196
|
+
base / "knowledge" / "commands-registry-v2.json",
|
|
197
|
+
)
|
|
198
|
+
print(f"Generated: {reg['_meta']['total_commands']} commands")
|
|
199
|
+
print(f"Departments: {reg['_meta']['departments']}")
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
"""Abstract runtime adapter interface.
|
|
2
|
+
|
|
3
|
+
Every AI runtime (Claude Code, Codex CLI, Gemini CLI, Cursor) must implement
|
|
4
|
+
this interface. The adapter translates ArkaOS operations into runtime-specific
|
|
5
|
+
commands and configurations.
|
|
6
|
+
|
|
7
|
+
Design: Strategy pattern. The orchestrator calls adapter methods without
|
|
8
|
+
knowing which runtime is active. Each adapter handles the translation.
|
|
9
|
+
"""
|
|
10
|
+
|
|
11
|
+
from abc import ABC, abstractmethod
|
|
12
|
+
from dataclasses import dataclass, field
|
|
13
|
+
from pathlib import Path
|
|
14
|
+
from typing import Any
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
@dataclass
|
|
18
|
+
class RuntimeConfig:
|
|
19
|
+
"""Configuration for a specific runtime environment."""
|
|
20
|
+
|
|
21
|
+
id: str
|
|
22
|
+
name: str
|
|
23
|
+
config_dir: Path
|
|
24
|
+
skills_dir: Path
|
|
25
|
+
settings_file: Path
|
|
26
|
+
supports_hooks: bool = True
|
|
27
|
+
supports_subagents: bool = True
|
|
28
|
+
supports_mcp: bool = False
|
|
29
|
+
max_context_tokens: int = 200_000
|
|
30
|
+
|
|
31
|
+
|
|
32
|
+
@dataclass
|
|
33
|
+
class AgentContext:
|
|
34
|
+
"""Context passed to an agent for execution."""
|
|
35
|
+
|
|
36
|
+
agent_id: str
|
|
37
|
+
task: str
|
|
38
|
+
department: str
|
|
39
|
+
tier: int
|
|
40
|
+
tools: list[str] = field(default_factory=list)
|
|
41
|
+
files: list[str] = field(default_factory=list)
|
|
42
|
+
context_layers: dict[str, str] = field(default_factory=dict)
|
|
43
|
+
|
|
44
|
+
|
|
45
|
+
@dataclass
|
|
46
|
+
class AgentResult:
|
|
47
|
+
"""Result returned by an agent after execution."""
|
|
48
|
+
|
|
49
|
+
agent_id: str
|
|
50
|
+
status: str # "completed", "failed", "needs_review"
|
|
51
|
+
output: str
|
|
52
|
+
files_modified: list[str] = field(default_factory=list)
|
|
53
|
+
tokens_used: int = 0
|
|
54
|
+
duration_ms: int = 0
|
|
55
|
+
metadata: dict[str, Any] = field(default_factory=dict)
|
|
56
|
+
|
|
57
|
+
|
|
58
|
+
class RuntimeAdapter(ABC):
|
|
59
|
+
"""Abstract base class for runtime adapters.
|
|
60
|
+
|
|
61
|
+
Each supported AI runtime implements this interface to translate
|
|
62
|
+
ArkaOS operations into runtime-specific actions.
|
|
63
|
+
"""
|
|
64
|
+
|
|
65
|
+
@abstractmethod
|
|
66
|
+
def get_config(self) -> RuntimeConfig:
|
|
67
|
+
"""Return runtime configuration."""
|
|
68
|
+
|
|
69
|
+
@abstractmethod
|
|
70
|
+
def inject_context(self, layers: dict[str, str]) -> str:
|
|
71
|
+
"""Inject context layers into the runtime.
|
|
72
|
+
|
|
73
|
+
Args:
|
|
74
|
+
layers: Dict of layer_name -> context_string
|
|
75
|
+
|
|
76
|
+
Returns:
|
|
77
|
+
The formatted context string for this runtime.
|
|
78
|
+
"""
|
|
79
|
+
|
|
80
|
+
@abstractmethod
|
|
81
|
+
def dispatch_agent(self, context: AgentContext) -> AgentResult:
|
|
82
|
+
"""Dispatch a task to an agent.
|
|
83
|
+
|
|
84
|
+
Args:
|
|
85
|
+
context: The agent context with task, tools, and files.
|
|
86
|
+
|
|
87
|
+
Returns:
|
|
88
|
+
AgentResult with output and metadata.
|
|
89
|
+
"""
|
|
90
|
+
|
|
91
|
+
@abstractmethod
|
|
92
|
+
def spawn_subagent(self, context: AgentContext) -> AgentResult:
|
|
93
|
+
"""Spawn a fresh subagent for isolated task execution.
|
|
94
|
+
|
|
95
|
+
Each subagent gets a fresh context window (the subagent pattern).
|
|
96
|
+
|
|
97
|
+
Args:
|
|
98
|
+
context: The agent context for the subagent.
|
|
99
|
+
|
|
100
|
+
Returns:
|
|
101
|
+
AgentResult from the subagent.
|
|
102
|
+
"""
|
|
103
|
+
|
|
104
|
+
@abstractmethod
|
|
105
|
+
def read_file(self, path: str) -> str:
|
|
106
|
+
"""Read a file through the runtime."""
|
|
107
|
+
|
|
108
|
+
@abstractmethod
|
|
109
|
+
def write_file(self, path: str, content: str) -> None:
|
|
110
|
+
"""Write a file through the runtime."""
|
|
111
|
+
|
|
112
|
+
@abstractmethod
|
|
113
|
+
def edit_file(self, path: str, old: str, new: str) -> None:
|
|
114
|
+
"""Edit a file through the runtime (find and replace)."""
|
|
115
|
+
|
|
116
|
+
@abstractmethod
|
|
117
|
+
def execute_command(self, command: str, timeout: int = 120) -> tuple[str, int]:
|
|
118
|
+
"""Execute a shell command through the runtime.
|
|
119
|
+
|
|
120
|
+
Returns:
|
|
121
|
+
Tuple of (output, exit_code).
|
|
122
|
+
"""
|
|
123
|
+
|
|
124
|
+
@abstractmethod
|
|
125
|
+
def search_files(self, pattern: str, path: str = ".") -> list[str]:
|
|
126
|
+
"""Search for files matching a glob pattern."""
|
|
127
|
+
|
|
128
|
+
@abstractmethod
|
|
129
|
+
def search_content(self, pattern: str, path: str = ".") -> list[str]:
|
|
130
|
+
"""Search file contents for a regex pattern."""
|
|
131
|
+
|
|
132
|
+
def supports_feature(self, feature: str) -> bool:
|
|
133
|
+
"""Check if the runtime supports a specific feature.
|
|
134
|
+
|
|
135
|
+
Features: hooks, subagents, mcp, parallel_agents, worktrees
|
|
136
|
+
"""
|
|
137
|
+
config = self.get_config()
|
|
138
|
+
feature_map = {
|
|
139
|
+
"hooks": config.supports_hooks,
|
|
140
|
+
"subagents": config.supports_subagents,
|
|
141
|
+
"mcp": config.supports_mcp,
|
|
142
|
+
}
|
|
143
|
+
return feature_map.get(feature, False)
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
"""Claude Code runtime adapter.
|
|
2
|
+
|
|
3
|
+
Claude Code is the primary and most capable runtime for ArkaOS.
|
|
4
|
+
It supports hooks, subagents (Agent tool), MCP servers, and worktrees.
|
|
5
|
+
"""
|
|
6
|
+
|
|
7
|
+
from pathlib import Path
|
|
8
|
+
from os.path import expanduser
|
|
9
|
+
|
|
10
|
+
from core.runtime.base import RuntimeAdapter, RuntimeConfig, AgentContext, AgentResult
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
class ClaudeCodeAdapter(RuntimeAdapter):
|
|
14
|
+
"""Adapter for Anthropic's Claude Code CLI."""
|
|
15
|
+
|
|
16
|
+
def get_config(self) -> RuntimeConfig:
|
|
17
|
+
home = Path(expanduser("~"))
|
|
18
|
+
return RuntimeConfig(
|
|
19
|
+
id="claude-code",
|
|
20
|
+
name="Claude Code",
|
|
21
|
+
config_dir=home / ".claude",
|
|
22
|
+
skills_dir=home / ".claude" / "skills",
|
|
23
|
+
settings_file=home / ".claude" / "settings.json",
|
|
24
|
+
supports_hooks=True,
|
|
25
|
+
supports_subagents=True,
|
|
26
|
+
supports_mcp=True,
|
|
27
|
+
max_context_tokens=1_000_000,
|
|
28
|
+
)
|
|
29
|
+
|
|
30
|
+
def inject_context(self, layers: dict[str, str]) -> str:
|
|
31
|
+
"""Claude Code receives context via UserPromptSubmit hook.
|
|
32
|
+
|
|
33
|
+
The hook script concatenates all layers into a single
|
|
34
|
+
additionalContext string that Claude sees in system-reminder tags.
|
|
35
|
+
"""
|
|
36
|
+
parts = []
|
|
37
|
+
for name, content in layers.items():
|
|
38
|
+
parts.append(f"[{name}] {content}")
|
|
39
|
+
return " ".join(parts)
|
|
40
|
+
|
|
41
|
+
def dispatch_agent(self, context: AgentContext) -> AgentResult:
|
|
42
|
+
"""In Claude Code, agents are dispatched via the Agent tool.
|
|
43
|
+
|
|
44
|
+
The orchestrator provides the agent type via subagent_type parameter.
|
|
45
|
+
Claude Code handles the actual execution.
|
|
46
|
+
"""
|
|
47
|
+
# This is a specification of intent — actual execution happens
|
|
48
|
+
# through Claude Code's native Agent tool
|
|
49
|
+
return AgentResult(
|
|
50
|
+
agent_id=context.agent_id,
|
|
51
|
+
status="dispatched",
|
|
52
|
+
output=f"Agent {context.agent_id} dispatched for: {context.task}",
|
|
53
|
+
metadata={
|
|
54
|
+
"runtime": "claude-code",
|
|
55
|
+
"subagent_type": context.agent_id,
|
|
56
|
+
"department": context.department,
|
|
57
|
+
},
|
|
58
|
+
)
|
|
59
|
+
|
|
60
|
+
def spawn_subagent(self, context: AgentContext) -> AgentResult:
|
|
61
|
+
"""Spawn a fresh Claude Code subagent.
|
|
62
|
+
|
|
63
|
+
Uses the Agent tool with a complete task description.
|
|
64
|
+
Each subagent gets a fresh 1M token context window.
|
|
65
|
+
"""
|
|
66
|
+
return AgentResult(
|
|
67
|
+
agent_id=context.agent_id,
|
|
68
|
+
status="dispatched",
|
|
69
|
+
output=f"Subagent {context.agent_id} spawned for: {context.task}",
|
|
70
|
+
metadata={
|
|
71
|
+
"runtime": "claude-code",
|
|
72
|
+
"pattern": "subagent",
|
|
73
|
+
"fresh_context": True,
|
|
74
|
+
},
|
|
75
|
+
)
|
|
76
|
+
|
|
77
|
+
def read_file(self, path: str) -> str:
|
|
78
|
+
"""Claude Code uses the Read tool natively."""
|
|
79
|
+
# This maps to the Read tool in Claude Code
|
|
80
|
+
raise NotImplementedError("Use Claude Code's native Read tool")
|
|
81
|
+
|
|
82
|
+
def write_file(self, path: str, content: str) -> None:
|
|
83
|
+
"""Claude Code uses the Write tool natively."""
|
|
84
|
+
raise NotImplementedError("Use Claude Code's native Write tool")
|
|
85
|
+
|
|
86
|
+
def edit_file(self, path: str, old: str, new: str) -> None:
|
|
87
|
+
"""Claude Code uses the Edit tool natively."""
|
|
88
|
+
raise NotImplementedError("Use Claude Code's native Edit tool")
|
|
89
|
+
|
|
90
|
+
def execute_command(self, command: str, timeout: int = 120) -> tuple[str, int]:
|
|
91
|
+
"""Claude Code uses the Bash tool natively."""
|
|
92
|
+
raise NotImplementedError("Use Claude Code's native Bash tool")
|
|
93
|
+
|
|
94
|
+
def search_files(self, pattern: str, path: str = ".") -> list[str]:
|
|
95
|
+
"""Claude Code uses the Glob tool natively."""
|
|
96
|
+
raise NotImplementedError("Use Claude Code's native Glob tool")
|
|
97
|
+
|
|
98
|
+
def search_content(self, pattern: str, path: str = ".") -> list[str]:
|
|
99
|
+
"""Claude Code uses the Grep tool natively."""
|
|
100
|
+
raise NotImplementedError("Use Claude Code's native Grep tool")
|
|
101
|
+
|
|
102
|
+
def supports_feature(self, feature: str) -> bool:
|
|
103
|
+
"""Claude Code supports all features."""
|
|
104
|
+
return True
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
"""Codex CLI runtime adapter.
|
|
2
|
+
|
|
3
|
+
OpenAI's Codex CLI. Supports sandboxed execution and file operations.
|
|
4
|
+
More limited than Claude Code: no native hooks, no MCP servers.
|
|
5
|
+
"""
|
|
6
|
+
|
|
7
|
+
from pathlib import Path
|
|
8
|
+
from os.path import expanduser
|
|
9
|
+
|
|
10
|
+
from core.runtime.base import RuntimeAdapter, RuntimeConfig, AgentContext, AgentResult
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
class CodexCliAdapter(RuntimeAdapter):
|
|
14
|
+
"""Adapter for OpenAI's Codex CLI."""
|
|
15
|
+
|
|
16
|
+
def get_config(self) -> RuntimeConfig:
|
|
17
|
+
home = Path(expanduser("~"))
|
|
18
|
+
return RuntimeConfig(
|
|
19
|
+
id="codex",
|
|
20
|
+
name="Codex CLI",
|
|
21
|
+
config_dir=home / ".codex",
|
|
22
|
+
skills_dir=home / ".codex" / "skills",
|
|
23
|
+
settings_file=home / ".codex" / "settings.json",
|
|
24
|
+
supports_hooks=False,
|
|
25
|
+
supports_subagents=True,
|
|
26
|
+
supports_mcp=False,
|
|
27
|
+
max_context_tokens=200_000,
|
|
28
|
+
)
|
|
29
|
+
|
|
30
|
+
def inject_context(self, layers: dict[str, str]) -> str:
|
|
31
|
+
"""Codex receives context via AGENTS.md instruction file."""
|
|
32
|
+
parts = []
|
|
33
|
+
for name, content in layers.items():
|
|
34
|
+
parts.append(f"## {name}\n{content}")
|
|
35
|
+
return "\n\n".join(parts)
|
|
36
|
+
|
|
37
|
+
def dispatch_agent(self, context: AgentContext) -> AgentResult:
|
|
38
|
+
"""Codex dispatches agents via its native agent system."""
|
|
39
|
+
return AgentResult(
|
|
40
|
+
agent_id=context.agent_id,
|
|
41
|
+
status="dispatched",
|
|
42
|
+
output=f"Agent {context.agent_id} dispatched via Codex",
|
|
43
|
+
metadata={"runtime": "codex"},
|
|
44
|
+
)
|
|
45
|
+
|
|
46
|
+
def spawn_subagent(self, context: AgentContext) -> AgentResult:
|
|
47
|
+
"""Codex supports subagents with fresh context."""
|
|
48
|
+
return AgentResult(
|
|
49
|
+
agent_id=context.agent_id,
|
|
50
|
+
status="dispatched",
|
|
51
|
+
output=f"Subagent {context.agent_id} spawned via Codex",
|
|
52
|
+
metadata={"runtime": "codex", "pattern": "subagent"},
|
|
53
|
+
)
|
|
54
|
+
|
|
55
|
+
def read_file(self, path: str) -> str:
|
|
56
|
+
raise NotImplementedError("Use Codex CLI's native file read")
|
|
57
|
+
|
|
58
|
+
def write_file(self, path: str, content: str) -> None:
|
|
59
|
+
raise NotImplementedError("Use Codex CLI's native file write")
|
|
60
|
+
|
|
61
|
+
def edit_file(self, path: str, old: str, new: str) -> None:
|
|
62
|
+
raise NotImplementedError("Use Codex CLI's native file edit")
|
|
63
|
+
|
|
64
|
+
def execute_command(self, command: str, timeout: int = 120) -> tuple[str, int]:
|
|
65
|
+
raise NotImplementedError("Use Codex CLI's native shell execution")
|
|
66
|
+
|
|
67
|
+
def search_files(self, pattern: str, path: str = ".") -> list[str]:
|
|
68
|
+
raise NotImplementedError("Use Codex CLI's native file search")
|
|
69
|
+
|
|
70
|
+
def search_content(self, pattern: str, path: str = ".") -> list[str]:
|
|
71
|
+
raise NotImplementedError("Use Codex CLI's native content search")
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
"""Cursor runtime adapter.
|
|
2
|
+
|
|
3
|
+
Cursor AI IDE. Uses .cursorrules for project instructions and .cursor/rules for global rules.
|
|
4
|
+
Supports agent mode with tool execution.
|
|
5
|
+
"""
|
|
6
|
+
|
|
7
|
+
from pathlib import Path
|
|
8
|
+
from os.path import expanduser
|
|
9
|
+
|
|
10
|
+
from core.runtime.base import RuntimeAdapter, RuntimeConfig, AgentContext, AgentResult
|
|
11
|
+
|
|
12
|
+
|
|
13
|
+
class CursorAdapter(RuntimeAdapter):
|
|
14
|
+
"""Adapter for Cursor AI IDE."""
|
|
15
|
+
|
|
16
|
+
def get_config(self) -> RuntimeConfig:
|
|
17
|
+
home = Path(expanduser("~"))
|
|
18
|
+
return RuntimeConfig(
|
|
19
|
+
id="cursor",
|
|
20
|
+
name="Cursor",
|
|
21
|
+
config_dir=home / ".cursor",
|
|
22
|
+
skills_dir=home / ".cursor" / "skills",
|
|
23
|
+
settings_file=home / ".cursor" / "settings.json",
|
|
24
|
+
supports_hooks=False,
|
|
25
|
+
supports_subagents=False,
|
|
26
|
+
supports_mcp=True,
|
|
27
|
+
max_context_tokens=200_000,
|
|
28
|
+
)
|
|
29
|
+
|
|
30
|
+
def inject_context(self, layers: dict[str, str]) -> str:
|
|
31
|
+
"""Cursor receives context via .cursorrules files."""
|
|
32
|
+
parts = []
|
|
33
|
+
for name, content in layers.items():
|
|
34
|
+
parts.append(f"## {name}\n{content}")
|
|
35
|
+
return "\n\n".join(parts)
|
|
36
|
+
|
|
37
|
+
def dispatch_agent(self, context: AgentContext) -> AgentResult:
|
|
38
|
+
"""Cursor agent mode handles dispatch internally."""
|
|
39
|
+
return AgentResult(
|
|
40
|
+
agent_id=context.agent_id,
|
|
41
|
+
status="dispatched",
|
|
42
|
+
output=f"Agent {context.agent_id} dispatched via Cursor",
|
|
43
|
+
metadata={"runtime": "cursor"},
|
|
44
|
+
)
|
|
45
|
+
|
|
46
|
+
def spawn_subagent(self, context: AgentContext) -> AgentResult:
|
|
47
|
+
"""Cursor does not support native subagents."""
|
|
48
|
+
return AgentResult(
|
|
49
|
+
agent_id=context.agent_id,
|
|
50
|
+
status="unsupported",
|
|
51
|
+
output="Cursor does not support subagent spawning. Using single-agent mode.",
|
|
52
|
+
metadata={"runtime": "cursor", "fallback": "single-agent"},
|
|
53
|
+
)
|
|
54
|
+
|
|
55
|
+
def read_file(self, path: str) -> str:
|
|
56
|
+
raise NotImplementedError("Use Cursor's native file read")
|
|
57
|
+
|
|
58
|
+
def write_file(self, path: str, content: str) -> None:
|
|
59
|
+
raise NotImplementedError("Use Cursor's native file write")
|
|
60
|
+
|
|
61
|
+
def edit_file(self, path: str, old: str, new: str) -> None:
|
|
62
|
+
raise NotImplementedError("Use Cursor's native file edit")
|
|
63
|
+
|
|
64
|
+
def execute_command(self, command: str, timeout: int = 120) -> tuple[str, int]:
|
|
65
|
+
raise NotImplementedError("Use Cursor's native terminal")
|
|
66
|
+
|
|
67
|
+
def search_files(self, pattern: str, path: str = ".") -> list[str]:
|
|
68
|
+
raise NotImplementedError("Use Cursor's native file search")
|
|
69
|
+
|
|
70
|
+
def search_content(self, pattern: str, path: str = ".") -> list[str]:
|
|
71
|
+
raise NotImplementedError("Use Cursor's native content search")
|