dxrk 0.1.0__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- dxrk-0.1.0/LICENSE +21 -0
- dxrk-0.1.0/PKG-INFO +22 -0
- dxrk-0.1.0/README.md +161 -0
- dxrk-0.1.0/dxrk/__init__.py +2 -0
- dxrk-0.1.0/dxrk/__main__.py +254 -0
- dxrk-0.1.0/dxrk/a2a.py +939 -0
- dxrk-0.1.0/dxrk/agentbuilder.py +653 -0
- dxrk-0.1.0/dxrk/agents/__init__.py +2 -0
- dxrk-0.1.0/dxrk/agents/antigravity/__init__.py +2 -0
- dxrk-0.1.0/dxrk/agents/antigravity/adapter.py +92 -0
- dxrk-0.1.0/dxrk/agents/claude/__init__.py +2 -0
- dxrk-0.1.0/dxrk/agents/claude/adapter.py +97 -0
- dxrk-0.1.0/dxrk/agents/codex/__init__.py +2 -0
- dxrk-0.1.0/dxrk/agents/codex/adapter.py +97 -0
- dxrk-0.1.0/dxrk/agents/cursor/__init__.py +2 -0
- dxrk-0.1.0/dxrk/agents/cursor/adapter.py +92 -0
- dxrk-0.1.0/dxrk/agents/discovery.py +36 -0
- dxrk-0.1.0/dxrk/agents/errors.py +11 -0
- dxrk-0.1.0/dxrk/agents/factory.py +35 -0
- dxrk-0.1.0/dxrk/agents/gemini/__init__.py +2 -0
- dxrk-0.1.0/dxrk/agents/gemini/adapter.py +97 -0
- dxrk-0.1.0/dxrk/agents/interface.py +94 -0
- dxrk-0.1.0/dxrk/agents/kilocode/__init__.py +2 -0
- dxrk-0.1.0/dxrk/agents/kilocode/adapter.py +97 -0
- dxrk-0.1.0/dxrk/agents/kimi/__init__.py +2 -0
- dxrk-0.1.0/dxrk/agents/kimi/adapter.py +97 -0
- dxrk-0.1.0/dxrk/agents/kiro/__init__.py +2 -0
- dxrk-0.1.0/dxrk/agents/kiro/adapter.py +100 -0
- dxrk-0.1.0/dxrk/agents/openclaw/__init__.py +2 -0
- dxrk-0.1.0/dxrk/agents/openclaw/adapter.py +92 -0
- dxrk-0.1.0/dxrk/agents/opencode/__init__.py +2 -0
- dxrk-0.1.0/dxrk/agents/opencode/adapter.py +91 -0
- dxrk-0.1.0/dxrk/agents/pi/__init__.py +2 -0
- dxrk-0.1.0/dxrk/agents/pi/adapter.py +109 -0
- dxrk-0.1.0/dxrk/agents/qwen/__init__.py +2 -0
- dxrk-0.1.0/dxrk/agents/qwen/adapter.py +97 -0
- dxrk-0.1.0/dxrk/agents/registry.py +25 -0
- dxrk-0.1.0/dxrk/agents/vscode/__init__.py +2 -0
- dxrk-0.1.0/dxrk/agents/vscode/adapter.py +102 -0
- dxrk-0.1.0/dxrk/agents/windsurf/__init__.py +2 -0
- dxrk-0.1.0/dxrk/agents/windsurf/adapter.py +95 -0
- dxrk-0.1.0/dxrk/app.py +248 -0
- dxrk-0.1.0/dxrk/assets/antigravity/sdd-orchestrator.md +237 -0
- dxrk-0.1.0/dxrk/assets/claude/DXRK_MEMORY-protocol.md +93 -0
- dxrk-0.1.0/dxrk/assets/claude/agents/sdd-apply.md +49 -0
- dxrk-0.1.0/dxrk/assets/claude/agents/sdd-archive.md +48 -0
- dxrk-0.1.0/dxrk/assets/claude/agents/sdd-design.md +45 -0
- dxrk-0.1.0/dxrk/assets/claude/agents/sdd-explore.md +45 -0
- dxrk-0.1.0/dxrk/assets/claude/agents/sdd-propose.md +44 -0
- dxrk-0.1.0/dxrk/assets/claude/agents/sdd-spec.md +44 -0
- dxrk-0.1.0/dxrk/assets/claude/agents/sdd-tasks.md +45 -0
- dxrk-0.1.0/dxrk/assets/claude/agents/sdd-verify.md +44 -0
- dxrk-0.1.0/dxrk/assets/claude/commands/sdd-apply.md +45 -0
- dxrk-0.1.0/dxrk/assets/claude/commands/sdd-archive.md +40 -0
- dxrk-0.1.0/dxrk/assets/claude/commands/sdd-continue.md +29 -0
- dxrk-0.1.0/dxrk/assets/claude/commands/sdd-explore.md +26 -0
- dxrk-0.1.0/dxrk/assets/claude/commands/sdd-ff.md +30 -0
- dxrk-0.1.0/dxrk/assets/claude/commands/sdd-init.md +22 -0
- dxrk-0.1.0/dxrk/assets/claude/commands/sdd-new.md +27 -0
- dxrk-0.1.0/dxrk/assets/claude/commands/sdd-onboard.md +22 -0
- dxrk-0.1.0/dxrk/assets/claude/commands/sdd-verify.md +37 -0
- dxrk-0.1.0/dxrk/assets/claude/dxrk-memory-protocol.md +93 -0
- dxrk-0.1.0/dxrk/assets/claude/engram-protocol.md +93 -0
- dxrk-0.1.0/dxrk/assets/claude/output-style-dxrk.md +85 -0
- dxrk-0.1.0/dxrk/assets/claude/output-style-gentleman.md +85 -0
- dxrk-0.1.0/dxrk/assets/claude/persona-dxrk.md +69 -0
- dxrk-0.1.0/dxrk/assets/claude/persona-gentleman.md +69 -0
- dxrk-0.1.0/dxrk/assets/claude/sdd-orchestrator.md +240 -0
- dxrk-0.1.0/dxrk/assets/codex/dxrk-memory-compact-prompt.md +14 -0
- dxrk-0.1.0/dxrk/assets/codex/dxrk-memory-instructions.md +96 -0
- dxrk-0.1.0/dxrk/assets/codex/engram-compact-prompt.md +14 -0
- dxrk-0.1.0/dxrk/assets/codex/engram-instructions.md +96 -0
- dxrk-0.1.0/dxrk/assets/codex/sdd-orchestrator.md +260 -0
- dxrk-0.1.0/dxrk/assets/cursor/agents/sdd-apply.md +50 -0
- dxrk-0.1.0/dxrk/assets/cursor/agents/sdd-archive.md +49 -0
- dxrk-0.1.0/dxrk/assets/cursor/agents/sdd-design.md +45 -0
- dxrk-0.1.0/dxrk/assets/cursor/agents/sdd-explore.md +47 -0
- dxrk-0.1.0/dxrk/assets/cursor/agents/sdd-init.md +43 -0
- dxrk-0.1.0/dxrk/assets/cursor/agents/sdd-onboard.md +43 -0
- dxrk-0.1.0/dxrk/assets/cursor/agents/sdd-propose.md +42 -0
- dxrk-0.1.0/dxrk/assets/cursor/agents/sdd-spec.md +43 -0
- dxrk-0.1.0/dxrk/assets/cursor/agents/sdd-tasks.md +45 -0
- dxrk-0.1.0/dxrk/assets/cursor/agents/sdd-verify.md +51 -0
- dxrk-0.1.0/dxrk/assets/cursor/sdd-orchestrator.md +260 -0
- dxrk-0.1.0/dxrk/assets/dxrkguardian/AGENTS.md +41 -0
- dxrk-0.1.0/dxrk/assets/dxrkguardian/gga.ps1 +12 -0
- dxrk-0.1.0/dxrk/assets/dxrkguardian/pr_mode.sh +246 -0
- dxrk-0.1.0/dxrk/assets/gemini/sdd-orchestrator.md +260 -0
- dxrk-0.1.0/dxrk/assets/generic/persona-dxrk.md +68 -0
- dxrk-0.1.0/dxrk/assets/generic/persona-gentleman.md +68 -0
- dxrk-0.1.0/dxrk/assets/generic/persona-neutral.md +47 -0
- dxrk-0.1.0/dxrk/assets/generic/sdd-orchestrator.md +241 -0
- dxrk-0.1.0/dxrk/assets/gga/AGENTS.md +41 -0
- dxrk-0.1.0/dxrk/assets/gga/gga.ps1 +12 -0
- dxrk-0.1.0/dxrk/assets/gga/pr_mode.sh +246 -0
- dxrk-0.1.0/dxrk/assets/kimi/KIMI.md +20 -0
- dxrk-0.1.0/dxrk/assets/kimi/agents/dxrk.yaml +36 -0
- dxrk-0.1.0/dxrk/assets/kimi/agents/gentleman.yaml +36 -0
- dxrk-0.1.0/dxrk/assets/kimi/agents/sdd-apply.md +49 -0
- dxrk-0.1.0/dxrk/assets/kimi/agents/sdd-apply.yaml +7 -0
- dxrk-0.1.0/dxrk/assets/kimi/agents/sdd-archive.md +48 -0
- dxrk-0.1.0/dxrk/assets/kimi/agents/sdd-archive.yaml +7 -0
- dxrk-0.1.0/dxrk/assets/kimi/agents/sdd-design.md +45 -0
- dxrk-0.1.0/dxrk/assets/kimi/agents/sdd-design.yaml +9 -0
- dxrk-0.1.0/dxrk/assets/kimi/agents/sdd-explore.md +45 -0
- dxrk-0.1.0/dxrk/assets/kimi/agents/sdd-explore.yaml +9 -0
- dxrk-0.1.0/dxrk/assets/kimi/agents/sdd-init.md +42 -0
- dxrk-0.1.0/dxrk/assets/kimi/agents/sdd-init.yaml +7 -0
- dxrk-0.1.0/dxrk/assets/kimi/agents/sdd-onboard.md +43 -0
- dxrk-0.1.0/dxrk/assets/kimi/agents/sdd-onboard.yaml +7 -0
- dxrk-0.1.0/dxrk/assets/kimi/agents/sdd-propose.md +41 -0
- dxrk-0.1.0/dxrk/assets/kimi/agents/sdd-propose.yaml +9 -0
- dxrk-0.1.0/dxrk/assets/kimi/agents/sdd-spec.md +42 -0
- dxrk-0.1.0/dxrk/assets/kimi/agents/sdd-spec.yaml +9 -0
- dxrk-0.1.0/dxrk/assets/kimi/agents/sdd-tasks.md +44 -0
- dxrk-0.1.0/dxrk/assets/kimi/agents/sdd-tasks.yaml +9 -0
- dxrk-0.1.0/dxrk/assets/kimi/agents/sdd-verify.md +49 -0
- dxrk-0.1.0/dxrk/assets/kimi/agents/sdd-verify.yaml +9 -0
- dxrk-0.1.0/dxrk/assets/kimi/output-style-dxrk.md +85 -0
- dxrk-0.1.0/dxrk/assets/kimi/output-style-gentleman.md +85 -0
- dxrk-0.1.0/dxrk/assets/kimi/persona-dxrk.md +70 -0
- dxrk-0.1.0/dxrk/assets/kimi/persona-gentleman.md +70 -0
- dxrk-0.1.0/dxrk/assets/kimi/sdd-orchestrator.md +200 -0
- dxrk-0.1.0/dxrk/assets/kiro/agents/sdd-apply.md +55 -0
- dxrk-0.1.0/dxrk/assets/kiro/agents/sdd-archive.md +54 -0
- dxrk-0.1.0/dxrk/assets/kiro/agents/sdd-design.md +50 -0
- dxrk-0.1.0/dxrk/assets/kiro/agents/sdd-explore.md +51 -0
- dxrk-0.1.0/dxrk/assets/kiro/agents/sdd-init.md +48 -0
- dxrk-0.1.0/dxrk/assets/kiro/agents/sdd-onboard.md +48 -0
- dxrk-0.1.0/dxrk/assets/kiro/agents/sdd-propose.md +47 -0
- dxrk-0.1.0/dxrk/assets/kiro/agents/sdd-spec.md +48 -0
- dxrk-0.1.0/dxrk/assets/kiro/agents/sdd-tasks.md +50 -0
- dxrk-0.1.0/dxrk/assets/kiro/agents/sdd-verify.md +55 -0
- dxrk-0.1.0/dxrk/assets/kiro/persona-dxrk.md +64 -0
- dxrk-0.1.0/dxrk/assets/kiro/persona-gentleman.md +64 -0
- dxrk-0.1.0/dxrk/assets/kiro/sdd-orchestrator.md +347 -0
- dxrk-0.1.0/dxrk/assets/opencode/agents/sdd-apply.md +49 -0
- dxrk-0.1.0/dxrk/assets/opencode/agents/sdd-archive.md +48 -0
- dxrk-0.1.0/dxrk/assets/opencode/agents/sdd-design.md +45 -0
- dxrk-0.1.0/dxrk/assets/opencode/agents/sdd-explore.md +45 -0
- dxrk-0.1.0/dxrk/assets/opencode/agents/sdd-propose.md +44 -0
- dxrk-0.1.0/dxrk/assets/opencode/agents/sdd-spec.md +44 -0
- dxrk-0.1.0/dxrk/assets/opencode/agents/sdd-tasks.md +45 -0
- dxrk-0.1.0/dxrk/assets/opencode/agents/sdd-verify.md +44 -0
- dxrk-0.1.0/dxrk/assets/opencode/commands/sdd-apply.md +46 -0
- dxrk-0.1.0/dxrk/assets/opencode/commands/sdd-archive.md +41 -0
- dxrk-0.1.0/dxrk/assets/opencode/commands/sdd-continue.md +27 -0
- dxrk-0.1.0/dxrk/assets/opencode/commands/sdd-explore.md +27 -0
- dxrk-0.1.0/dxrk/assets/opencode/commands/sdd-ff.md +28 -0
- dxrk-0.1.0/dxrk/assets/opencode/commands/sdd-init.md +23 -0
- dxrk-0.1.0/dxrk/assets/opencode/commands/sdd-new.md +25 -0
- dxrk-0.1.0/dxrk/assets/opencode/commands/sdd-onboard.md +23 -0
- dxrk-0.1.0/dxrk/assets/opencode/commands/sdd-verify.md +38 -0
- dxrk-0.1.0/dxrk/assets/opencode/persona-dxrk.md +68 -0
- dxrk-0.1.0/dxrk/assets/opencode/persona-gentleman.md +68 -0
- dxrk-0.1.0/dxrk/assets/opencode/plugins/background-agents.ts +1485 -0
- dxrk-0.1.0/dxrk/assets/opencode/plugins/model-variants.ts +58 -0
- dxrk-0.1.0/dxrk/assets/opencode/sdd-orchestrator.md +198 -0
- dxrk-0.1.0/dxrk/assets/opencode/sdd-overlay-multi.json +155 -0
- dxrk-0.1.0/dxrk/assets/opencode/sdd-overlay-single.json +155 -0
- dxrk-0.1.0/dxrk/assets/qwen/sdd-orchestrator.md +260 -0
- dxrk-0.1.0/dxrk/assets/skills/_shared/DXRK_MEMORY-convention.md +136 -0
- dxrk-0.1.0/dxrk/assets/skills/_shared/SKILL.md +19 -0
- dxrk-0.1.0/dxrk/assets/skills/_shared/dxrk-memory-convention.md +136 -0
- dxrk-0.1.0/dxrk/assets/skills/_shared/engram-convention.md +136 -0
- dxrk-0.1.0/dxrk/assets/skills/_shared/openspec-convention.md +103 -0
- dxrk-0.1.0/dxrk/assets/skills/_shared/persistence-contract.md +150 -0
- dxrk-0.1.0/dxrk/assets/skills/_shared/sdd-phase-common.md +107 -0
- dxrk-0.1.0/dxrk/assets/skills/_shared/skill-resolver.md +114 -0
- dxrk-0.1.0/dxrk/assets/skills/branch-pr/SKILL.md +202 -0
- dxrk-0.1.0/dxrk/assets/skills/chained-pr/SKILL.md +50 -0
- dxrk-0.1.0/dxrk/assets/skills/chained-pr/references/chaining-details.md +99 -0
- dxrk-0.1.0/dxrk/assets/skills/cognitive-doc-design/SKILL.md +81 -0
- dxrk-0.1.0/dxrk/assets/skills/comment-writer/SKILL.md +74 -0
- dxrk-0.1.0/dxrk/assets/skills/go-testing/SKILL.md +51 -0
- dxrk-0.1.0/dxrk/assets/skills/go-testing/references/examples.md +89 -0
- dxrk-0.1.0/dxrk/assets/skills/issue-creation/SKILL.md +223 -0
- dxrk-0.1.0/dxrk/assets/skills/judgment-day/SKILL.md +52 -0
- dxrk-0.1.0/dxrk/assets/skills/judgment-day/references/prompts-and-formats.md +75 -0
- dxrk-0.1.0/dxrk/assets/skills/sdd-apply/SKILL.md +224 -0
- dxrk-0.1.0/dxrk/assets/skills/sdd-apply/strict-tdd.md +364 -0
- dxrk-0.1.0/dxrk/assets/skills/sdd-archive/SKILL.md +153 -0
- dxrk-0.1.0/dxrk/assets/skills/sdd-design/SKILL.md +172 -0
- dxrk-0.1.0/dxrk/assets/skills/sdd-explore/SKILL.md +136 -0
- dxrk-0.1.0/dxrk/assets/skills/sdd-init/SKILL.md +64 -0
- dxrk-0.1.0/dxrk/assets/skills/sdd-init/references/init-details.md +98 -0
- dxrk-0.1.0/dxrk/assets/skills/sdd-onboard/SKILL.md +218 -0
- dxrk-0.1.0/dxrk/assets/skills/sdd-propose/SKILL.md +177 -0
- dxrk-0.1.0/dxrk/assets/skills/sdd-spec/SKILL.md +232 -0
- dxrk-0.1.0/dxrk/assets/skills/sdd-tasks/SKILL.md +242 -0
- dxrk-0.1.0/dxrk/assets/skills/sdd-verify/SKILL.md +66 -0
- dxrk-0.1.0/dxrk/assets/skills/sdd-verify/references/report-format.md +67 -0
- dxrk-0.1.0/dxrk/assets/skills/sdd-verify/strict-tdd-verify.md +269 -0
- dxrk-0.1.0/dxrk/assets/skills/skill-creator/SKILL.md +101 -0
- dxrk-0.1.0/dxrk/assets/skills/skill-registry/SKILL.md +227 -0
- dxrk-0.1.0/dxrk/assets/skills/work-unit-commits/SKILL.md +86 -0
- dxrk-0.1.0/dxrk/assets/windsurf/sdd-orchestrator.md +314 -0
- dxrk-0.1.0/dxrk/assets/windsurf/workflows/sdd-new.md +218 -0
- dxrk-0.1.0/dxrk/autonomy/__init__.py +54 -0
- dxrk-0.1.0/dxrk/autonomy/autonomy.py +222 -0
- dxrk-0.1.0/dxrk/autonomy/evolution.py +225 -0
- dxrk-0.1.0/dxrk/autonomy/learner.py +181 -0
- dxrk-0.1.0/dxrk/autonomy/metrics.py +193 -0
- dxrk-0.1.0/dxrk/autonomy/permissions.py +108 -0
- dxrk-0.1.0/dxrk/autonomy/updater.py +142 -0
- dxrk-0.1.0/dxrk/autonomy/verifier.py +110 -0
- dxrk-0.1.0/dxrk/backup.py +572 -0
- dxrk-0.1.0/dxrk/catalog.py +946 -0
- dxrk-0.1.0/dxrk/cli/__init__.py +2 -0
- dxrk-0.1.0/dxrk/cli/dryrun.py +35 -0
- dxrk-0.1.0/dxrk/cli/install.py +2387 -0
- dxrk-0.1.0/dxrk/cli/restore.py +38 -0
- dxrk-0.1.0/dxrk/cli/run.py +301 -0
- dxrk-0.1.0/dxrk/cli/sync.py +69 -0
- dxrk-0.1.0/dxrk/cli/uninstall.py +51 -0
- dxrk-0.1.0/dxrk/commands/__init__.py +110 -0
- dxrk-0.1.0/dxrk/commands/agents.py +75 -0
- dxrk-0.1.0/dxrk/commands/branch.py +85 -0
- dxrk-0.1.0/dxrk/commands/commit.py +63 -0
- dxrk-0.1.0/dxrk/commands/commit_push_pr.py +92 -0
- dxrk-0.1.0/dxrk/commands/config.py +57 -0
- dxrk-0.1.0/dxrk/commands/context.py +36 -0
- dxrk-0.1.0/dxrk/commands/cost.py +62 -0
- dxrk-0.1.0/dxrk/commands/diff.py +45 -0
- dxrk-0.1.0/dxrk/commands/doctor.py +81 -0
- dxrk-0.1.0/dxrk/commands/effort.py +71 -0
- dxrk-0.1.0/dxrk/commands/export.py +96 -0
- dxrk-0.1.0/dxrk/commands/fast.py +45 -0
- dxrk-0.1.0/dxrk/commands/files.py +111 -0
- dxrk-0.1.0/dxrk/commands/gitutil.py +177 -0
- dxrk-0.1.0/dxrk/commands/hooks.py +129 -0
- dxrk-0.1.0/dxrk/commands/init.py +55 -0
- dxrk-0.1.0/dxrk/commands/keybindings.py +45 -0
- dxrk-0.1.0/dxrk/commands/mcp.py +87 -0
- dxrk-0.1.0/dxrk/commands/memory.py +67 -0
- dxrk-0.1.0/dxrk/commands/model.py +61 -0
- dxrk-0.1.0/dxrk/commands/permissions_command.py +40 -0
- dxrk-0.1.0/dxrk/commands/plan.py +114 -0
- dxrk-0.1.0/dxrk/commands/plugin.py +92 -0
- dxrk-0.1.0/dxrk/commands/pr_comments.py +132 -0
- dxrk-0.1.0/dxrk/commands/registry.py +215 -0
- dxrk-0.1.0/dxrk/commands/rename.py +50 -0
- dxrk-0.1.0/dxrk/commands/resume.py +80 -0
- dxrk-0.1.0/dxrk/commands/review.py +138 -0
- dxrk-0.1.0/dxrk/commands/rewind.py +79 -0
- dxrk-0.1.0/dxrk/commands/security_review.py +85 -0
- dxrk-0.1.0/dxrk/commands/session.py +338 -0
- dxrk-0.1.0/dxrk/commands/share.py +95 -0
- dxrk-0.1.0/dxrk/commands/skills.py +53 -0
- dxrk-0.1.0/dxrk/commands/stats.py +93 -0
- dxrk-0.1.0/dxrk/commands/tag.py +161 -0
- dxrk-0.1.0/dxrk/commands/tasks.py +118 -0
- dxrk-0.1.0/dxrk/commands/theme.py +72 -0
- dxrk-0.1.0/dxrk/commands/usage.py +37 -0
- dxrk-0.1.0/dxrk/commands/vim.py +33 -0
- dxrk-0.1.0/dxrk/components/__init__.py +2 -0
- dxrk-0.1.0/dxrk/components/assets.py +40 -0
- dxrk-0.1.0/dxrk/components/context7.py +148 -0
- dxrk-0.1.0/dxrk/components/engram.py +675 -0
- dxrk-0.1.0/dxrk/components/filemerge.py +487 -0
- dxrk-0.1.0/dxrk/components/gga.py +155 -0
- dxrk-0.1.0/dxrk/components/opencodeplugin.py +111 -0
- dxrk-0.1.0/dxrk/components/permissions.py +89 -0
- dxrk-0.1.0/dxrk/components/persona.py +352 -0
- dxrk-0.1.0/dxrk/components/sdd.py +1282 -0
- dxrk-0.1.0/dxrk/components/skills.py +109 -0
- dxrk-0.1.0/dxrk/components/theme.py +46 -0
- dxrk-0.1.0/dxrk/components/uninstall.py +1011 -0
- dxrk-0.1.0/dxrk/compress/__init__.py +332 -0
- dxrk-0.1.0/dxrk/config/__init__.py +185 -0
- dxrk-0.1.0/dxrk/config/config.py +743 -0
- dxrk-0.1.0/dxrk/config/featureflags.py +150 -0
- dxrk-0.1.0/dxrk/config/load.py +246 -0
- dxrk-0.1.0/dxrk/config/settings.py +223 -0
- dxrk-0.1.0/dxrk/config/sync.py +280 -0
- dxrk-0.1.0/dxrk/config/validation.py +287 -0
- dxrk-0.1.0/dxrk/config/viper.py +44 -0
- dxrk-0.1.0/dxrk/coordinator.py +420 -0
- dxrk-0.1.0/dxrk/cost/__init__.py +179 -0
- dxrk-0.1.0/dxrk/costopt.py +242 -0
- dxrk-0.1.0/dxrk/git.py +700 -0
- dxrk-0.1.0/dxrk/installcmd.py +384 -0
- dxrk-0.1.0/dxrk/log/__init__.py +132 -0
- dxrk-0.1.0/dxrk/log/zap.py +81 -0
- dxrk-0.1.0/dxrk/mcp/__init__.py +116 -0
- dxrk-0.1.0/dxrk/memory/__init__.py +250 -0
- dxrk-0.1.0/dxrk/model/__init__.py +826 -0
- dxrk-0.1.0/dxrk/models.py +645 -0
- dxrk-0.1.0/dxrk/observe/__init__.py +353 -0
- dxrk-0.1.0/dxrk/opencode.py +177 -0
- dxrk-0.1.0/dxrk/pipeline.py +502 -0
- dxrk-0.1.0/dxrk/planner.py +288 -0
- dxrk-0.1.0/dxrk/plugin.py +954 -0
- dxrk-0.1.0/dxrk/query/__init__.py +1027 -0
- dxrk-0.1.0/dxrk/rag/__init__.py +40 -0
- dxrk-0.1.0/dxrk/rag/chunker.py +200 -0
- dxrk-0.1.0/dxrk/rag/embedder.py +119 -0
- dxrk-0.1.0/dxrk/rag/indexer.py +139 -0
- dxrk-0.1.0/dxrk/rag/rag.py +74 -0
- dxrk-0.1.0/dxrk/rag/store.py +149 -0
- dxrk-0.1.0/dxrk/rag/tools.py +136 -0
- dxrk-0.1.0/dxrk/resilience/__init__.py +199 -0
- dxrk-0.1.0/dxrk/router/__init__.py +462 -0
- dxrk-0.1.0/dxrk/scholar/__init__.py +29 -0
- dxrk-0.1.0/dxrk/scholar/arxiv.py +76 -0
- dxrk-0.1.0/dxrk/scholar/citation/__init__.py +15 -0
- dxrk-0.1.0/dxrk/scholar/citation/doi.py +34 -0
- dxrk-0.1.0/dxrk/scholar/citation/format.py +155 -0
- dxrk-0.1.0/dxrk/scholar/crossref.py +103 -0
- dxrk-0.1.0/dxrk/scholar/openalex.py +115 -0
- dxrk-0.1.0/dxrk/scholar/provider.py +31 -0
- dxrk-0.1.0/dxrk/scholar/pubmed.py +131 -0
- dxrk-0.1.0/dxrk/scholar/scholar.py +44 -0
- dxrk-0.1.0/dxrk/scholar/semanticscholar.py +119 -0
- dxrk-0.1.0/dxrk/scholar/tools.py +173 -0
- dxrk-0.1.0/dxrk/scraper/__init__.py +59 -0
- dxrk-0.1.0/dxrk/security/__init__.py +118 -0
- dxrk-0.1.0/dxrk/security/ast.py +765 -0
- dxrk-0.1.0/dxrk/security/jwt.py +384 -0
- dxrk-0.1.0/dxrk/security/permissions.py +350 -0
- dxrk-0.1.0/dxrk/security/yolo.py +312 -0
- dxrk-0.1.0/dxrk/skillregistry.py +473 -0
- dxrk-0.1.0/dxrk/slo/__init__.py +185 -0
- dxrk-0.1.0/dxrk/state/__init__.py +82 -0
- dxrk-0.1.0/dxrk/state.py +46 -0
- dxrk-0.1.0/dxrk/strconst/__init__.py +84 -0
- dxrk-0.1.0/dxrk/system/__init__.py +718 -0
- dxrk-0.1.0/dxrk/task.py +368 -0
- dxrk-0.1.0/dxrk/telemetry/__init__.py +166 -0
- dxrk-0.1.0/dxrk/tools/__init__.py +343 -0
- dxrk-0.1.0/dxrk/tools/dxrk.py +607 -0
- dxrk-0.1.0/dxrk/tools/filetools.py +645 -0
- dxrk-0.1.0/dxrk/trace/__init__.py +143 -0
- dxrk-0.1.0/dxrk/tui/__init__.py +2 -0
- dxrk-0.1.0/dxrk/tui/app.py +947 -0
- dxrk-0.1.0/dxrk/tui/screens/__init__.py +18 -0
- dxrk-0.1.0/dxrk/tui/screens/agents.py +102 -0
- dxrk-0.1.0/dxrk/tui/screens/backups.py +278 -0
- dxrk-0.1.0/dxrk/tui/screens/complete.py +81 -0
- dxrk-0.1.0/dxrk/tui/screens/dependency_tree.py +174 -0
- dxrk-0.1.0/dxrk/tui/screens/detection.py +123 -0
- dxrk-0.1.0/dxrk/tui/screens/installing.py +62 -0
- dxrk-0.1.0/dxrk/tui/screens/review.py +137 -0
- dxrk-0.1.0/dxrk/tui/shared.py +83 -0
- dxrk-0.1.0/dxrk/update.py +1265 -0
- dxrk-0.1.0/dxrk/utils/__init__.py +32 -0
- dxrk-0.1.0/dxrk/utils/bashparse.py +877 -0
- dxrk-0.1.0/dxrk/utils/diff.py +1569 -0
- dxrk-0.1.0/dxrk/utils/filemerge.py +627 -0
- dxrk-0.1.0/dxrk/utils/fileops.py +1111 -0
- dxrk-0.1.0/dxrk/utils/hooks.py +1825 -0
- dxrk-0.1.0/dxrk/utils/http.py +2002 -0
- dxrk-0.1.0/dxrk/utils/image.py +1199 -0
- dxrk-0.1.0/dxrk/utils/messages.py +1205 -0
- dxrk-0.1.0/dxrk/utils/permissions.py +1592 -0
- dxrk-0.1.0/dxrk/utils/session.py +1321 -0
- dxrk-0.1.0/dxrk/utils/swarm.py +1617 -0
- dxrk-0.1.0/dxrk/vault/__init__.py +204 -0
- dxrk-0.1.0/dxrk/verify.py +152 -0
- dxrk-0.1.0/dxrk/version/__init__.py +1 -0
- dxrk-0.1.0/dxrk/versions/__init__.py +8 -0
- dxrk-0.1.0/dxrk.egg-info/PKG-INFO +22 -0
- dxrk-0.1.0/dxrk.egg-info/SOURCES.txt +439 -0
- dxrk-0.1.0/dxrk.egg-info/dependency_links.txt +1 -0
- dxrk-0.1.0/dxrk.egg-info/entry_points.txt +2 -0
- dxrk-0.1.0/dxrk.egg-info/requires.txt +14 -0
- dxrk-0.1.0/dxrk.egg-info/top_level.txt +1 -0
- dxrk-0.1.0/pyproject.toml +65 -0
- dxrk-0.1.0/setup.cfg +4 -0
- dxrk-0.1.0/tests/test_a2a.py +174 -0
- dxrk-0.1.0/tests/test_adapters.py +190 -0
- dxrk-0.1.0/tests/test_agentbuilder.py +101 -0
- dxrk-0.1.0/tests/test_agents.py +234 -0
- dxrk-0.1.0/tests/test_app_verify_installcmd.py +572 -0
- dxrk-0.1.0/tests/test_autonomy.py +232 -0
- dxrk-0.1.0/tests/test_backup.py +388 -0
- dxrk-0.1.0/tests/test_catalog.py +183 -0
- dxrk-0.1.0/tests/test_cli_flags.py +795 -0
- dxrk-0.1.0/tests/test_cli_wrappers.py +346 -0
- dxrk-0.1.0/tests/test_commands.py +410 -0
- dxrk-0.1.0/tests/test_compress.py +201 -0
- dxrk-0.1.0/tests/test_config.py +568 -0
- dxrk-0.1.0/tests/test_context7.py +132 -0
- dxrk-0.1.0/tests/test_coordinator.py +423 -0
- dxrk-0.1.0/tests/test_cost.py +164 -0
- dxrk-0.1.0/tests/test_costopt.py +174 -0
- dxrk-0.1.0/tests/test_engram.py +168 -0
- dxrk-0.1.0/tests/test_engram_coverage.py +1338 -0
- dxrk-0.1.0/tests/test_filemerge.py +190 -0
- dxrk-0.1.0/tests/test_gga.py +128 -0
- dxrk-0.1.0/tests/test_git.py +322 -0
- dxrk-0.1.0/tests/test_hooks.py +727 -0
- dxrk-0.1.0/tests/test_installcmd.py +599 -0
- dxrk-0.1.0/tests/test_integration_install.py +212 -0
- dxrk-0.1.0/tests/test_integration_sync.py +194 -0
- dxrk-0.1.0/tests/test_log.py +80 -0
- dxrk-0.1.0/tests/test_main_discovery_run.py +447 -0
- dxrk-0.1.0/tests/test_mcp.py +115 -0
- dxrk-0.1.0/tests/test_memory.py +213 -0
- dxrk-0.1.0/tests/test_model.py +418 -0
- dxrk-0.1.0/tests/test_models.py +274 -0
- dxrk-0.1.0/tests/test_observe.py +118 -0
- dxrk-0.1.0/tests/test_opencode.py +161 -0
- dxrk-0.1.0/tests/test_opencodeplugin.py +88 -0
- dxrk-0.1.0/tests/test_permissions.py +87 -0
- dxrk-0.1.0/tests/test_persona.py +931 -0
- dxrk-0.1.0/tests/test_pipeline.py +412 -0
- dxrk-0.1.0/tests/test_planner.py +248 -0
- dxrk-0.1.0/tests/test_plugin.py +548 -0
- dxrk-0.1.0/tests/test_query.py +1452 -0
- dxrk-0.1.0/tests/test_rag.py +476 -0
- dxrk-0.1.0/tests/test_resilience.py +282 -0
- dxrk-0.1.0/tests/test_router.py +268 -0
- dxrk-0.1.0/tests/test_scholar.py +579 -0
- dxrk-0.1.0/tests/test_scraper.py +63 -0
- dxrk-0.1.0/tests/test_sdd.py +148 -0
- dxrk-0.1.0/tests/test_security.py +913 -0
- dxrk-0.1.0/tests/test_skillregistry.py +450 -0
- dxrk-0.1.0/tests/test_skills.py +91 -0
- dxrk-0.1.0/tests/test_slo.py +245 -0
- dxrk-0.1.0/tests/test_state.py +136 -0
- dxrk-0.1.0/tests/test_strconst.py +105 -0
- dxrk-0.1.0/tests/test_system.py +850 -0
- dxrk-0.1.0/tests/test_task.py +305 -0
- dxrk-0.1.0/tests/test_telemetry.py +114 -0
- dxrk-0.1.0/tests/test_theme.py +58 -0
- dxrk-0.1.0/tests/test_tools.py +178 -0
- dxrk-0.1.0/tests/test_trace.py +64 -0
- dxrk-0.1.0/tests/test_tui.py +494 -0
- dxrk-0.1.0/tests/test_uninstall.py +567 -0
- dxrk-0.1.0/tests/test_update.py +1201 -0
- dxrk-0.1.0/tests/test_utils_bashparse.py +420 -0
- dxrk-0.1.0/tests/test_utils_diff.py +524 -0
- dxrk-0.1.0/tests/test_utils_fileops.py +774 -0
- dxrk-0.1.0/tests/test_utils_http.py +235 -0
- dxrk-0.1.0/tests/test_utils_messages.py +747 -0
- dxrk-0.1.0/tests/test_utils_permissions.py +1481 -0
- dxrk-0.1.0/tests/test_utils_swarm.py +460 -0
- dxrk-0.1.0/tests/test_vault.py +116 -0
- dxrk-0.1.0/tests/test_version.py +9 -0
- dxrk-0.1.0/tests/test_versions.py +34 -0
dxrk-0.1.0/LICENSE
ADDED
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2026 Dxrk777
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
dxrk-0.1.0/PKG-INFO
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: dxrk
|
|
3
|
+
Version: 0.1.0
|
|
4
|
+
Summary: Dxrk Ecosystem Configurator — supercharge AI coding agents
|
|
5
|
+
Author: Dxrk777
|
|
6
|
+
License: MIT
|
|
7
|
+
Project-URL: Homepage, https://github.com/Dxrk777/Dxrk
|
|
8
|
+
Requires-Python: >=3.13
|
|
9
|
+
License-File: LICENSE
|
|
10
|
+
Requires-Dist: textual<9.0,>=1.0
|
|
11
|
+
Requires-Dist: httpx<1.0,>=0.27
|
|
12
|
+
Requires-Dist: PyYAML>=6.0
|
|
13
|
+
Requires-Dist: cryptography<46.0,>=43.0
|
|
14
|
+
Requires-Dist: beautifulsoup4<5,>=4.12
|
|
15
|
+
Provides-Extra: dev
|
|
16
|
+
Requires-Dist: pytest>=8.0; extra == "dev"
|
|
17
|
+
Requires-Dist: pytest-cov>=5.0; extra == "dev"
|
|
18
|
+
Requires-Dist: pytest-asyncio>=0.24; extra == "dev"
|
|
19
|
+
Provides-Extra: typecheck
|
|
20
|
+
Requires-Dist: mypy>=1.10; extra == "typecheck"
|
|
21
|
+
Requires-Dist: pytest>=8.0; extra == "typecheck"
|
|
22
|
+
Dynamic: license-file
|
dxrk-0.1.0/README.md
ADDED
|
@@ -0,0 +1,161 @@
|
|
|
1
|
+
# Dxrk
|
|
2
|
+
|
|
3
|
+
<p align="center">
|
|
4
|
+
<strong>Ecosistema, Frameworks y Workflows para agentes de IA</strong>
|
|
5
|
+
</p>
|
|
6
|
+
|
|
7
|
+
<p align="center">
|
|
8
|
+
<a href="https://github.com/Dxrk777/Dxrk/releases"><img src="https://img.shields.io/badge/Release-v0.1.0-blue" alt="Release"></a>
|
|
9
|
+
<a href="LICENSE"><img src="https://img.shields.io/badge/License-MIT-green" alt="License"></a>
|
|
10
|
+
<a href="https://www.python.org/downloads/"><img src="https://img.shields.io/badge/Python-3.13%2B-3776AB" alt="Python 3.13+"></a>
|
|
11
|
+
<a href="https://github.com/Dxrk777/Dxrk"><img src="https://img.shields.io/badge/Platform-macOS%20%7C%20Linux%20%7C%20Windows-lightgrey" alt="Platform"></a>
|
|
12
|
+
<a href="https://github.com/Dxrk777/Dxrk/actions"><img src="https://img.shields.io/github/actions/workflow/status/Dxrk777/Dxrk/ci.yml" alt="CI"></a>
|
|
13
|
+
<a href="https://github.com/Dxrk777/Dxrk/stargazers"><img src="https://img.shields.io/github/stars/Dxrk777/Dxrk" alt="Stars"></a>
|
|
14
|
+
</p>
|
|
15
|
+
|
|
16
|
+
---
|
|
17
|
+
|
|
18
|
+
## Qué es Dxrk
|
|
19
|
+
|
|
20
|
+
**Dxrk** es el configurador y orquestador de ecosistemas para agentes de IA. Unifica
|
|
21
|
+
memoria persistente, Spec-Driven Development, skills curadas, servidores MCP y un
|
|
22
|
+
conmutador de proveedores de modelos en una sola herramienta de línea de comandos.
|
|
23
|
+
|
|
24
|
+
Escrito en **Python 3.13+** con una TUI basada en Textual, Dxrk:
|
|
25
|
+
|
|
26
|
+
- Configura **42 agentes de IA** (Claude Code, OpenCode, Codex, Gemini CLI, Cursor,
|
|
27
|
+
Copilot, Windsurf y más) con un solo comando.
|
|
28
|
+
- Mantiene **memoria persistente** entre sesiones y proyectos (SDD, decisiones,
|
|
29
|
+
contexto, aprender de cada interacción).
|
|
30
|
+
- Gestiona **skills curadas** y servidores **MCP** por proyecto.
|
|
31
|
+
- Conmuta entre **proveedores y modelos de IA** con perfiles de costo por fase
|
|
32
|
+
(cheap/balanced/quality) o por comando.
|
|
33
|
+
- Ejecuta **workflows** de desarrollo: planificación, commits con conventional
|
|
34
|
+
commits, PRs, revisión de código, keybindings y más.
|
|
35
|
+
|
|
36
|
+
## Instalación
|
|
37
|
+
|
|
38
|
+
Requisito: **Python 3.13 o superior**.
|
|
39
|
+
|
|
40
|
+
### Con uv (recomendado)
|
|
41
|
+
|
|
42
|
+
```bash
|
|
43
|
+
uv tool install --from git+https://github.com/Dxrk777/Dxrk.git dxrk
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
### Con pip
|
|
47
|
+
|
|
48
|
+
```bash
|
|
49
|
+
pip install git+https://github.com/Dxrk777/Dxrk.git
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
### Desde el código fuente
|
|
53
|
+
|
|
54
|
+
```bash
|
|
55
|
+
git clone https://github.com/Dxrk777/Dxrk.git
|
|
56
|
+
cd Dxrk
|
|
57
|
+
uv sync --all-extras
|
|
58
|
+
uv run dxrk-py --help
|
|
59
|
+
```
|
|
60
|
+
|
|
61
|
+
## Uso rápido
|
|
62
|
+
|
|
63
|
+
```bash
|
|
64
|
+
# Instalar y configurar un agente
|
|
65
|
+
dxrk-py install --agent claude-code --preset full-dxrk
|
|
66
|
+
|
|
67
|
+
# Preguntar sobre un concepto
|
|
68
|
+
dxrk-py query "explica qué es Spec-Driven Development"
|
|
69
|
+
|
|
70
|
+
# Sincronizar perfil de modelos barato
|
|
71
|
+
dxrk-py sync --profile cheap:openrouter/qwen/qwen3-30b-a3b:free
|
|
72
|
+
|
|
73
|
+
# Perfil por fase (ej. diseño)
|
|
74
|
+
dxrk-py sync --profile-phase cheap:sdd-design:anthropic/claude-sonnet-4-20250514
|
|
75
|
+
```
|
|
76
|
+
|
|
77
|
+
## Agentes soportados (42)
|
|
78
|
+
|
|
79
|
+
| | | | |
|
|
80
|
+
|---|---|---|---|
|
|
81
|
+
| Claude Code | OpenCode | Kilo Code | Gemini CLI |
|
|
82
|
+
| Cursor | VS Code Copilot | Codex | Windsurf |
|
|
83
|
+
| Antigravity | Kimi Code | Kiro IDE | Qwen Code |
|
|
84
|
+
| Pi | OpenClaw | Aider | Cline |
|
|
85
|
+
| Roo Code | Continue | Junie | Amazon Q |
|
|
86
|
+
| OpenHands | Zed AI | GitHub Copilot | Devin |
|
|
87
|
+
| Cody | Tabnine | Replit | Void |
|
|
88
|
+
| Amp | Blackbox AI | Bolt.new | Conductor |
|
|
89
|
+
| Hermes | JetBrains AI | Looperators | Lovable |
|
|
90
|
+
| PearAI | Qodo | RunCell | Trae |
|
|
91
|
+
| v0 | ZCode | | |
|
|
92
|
+
|
|
93
|
+
## Características
|
|
94
|
+
|
|
95
|
+
- **Memoria persistente**: `dxrk-memory` (binario externo en
|
|
96
|
+
[Dxrk777/dxrk-memory](https://github.com/Dxrk777/dxrk-memory), instalable vía
|
|
97
|
+
Homebrew o GitHub Releases) con búsqueda semántica: `dxrk-memory search "SDD"`.
|
|
98
|
+
- **Spec-Driven Development**: inicialización por proyecto con `/sdd-init`,
|
|
99
|
+
especificaciones, diseño y verificación.
|
|
100
|
+
- **Skills**: `dxrk-py skill-registry refresh` para sincronizar el registro de
|
|
101
|
+
skills del proyecto.
|
|
102
|
+
- **Servidores MCP**: 35 servidores configurables vía `.mcp.json`.
|
|
103
|
+
- **Conmutador de modelos**: perfiles `cheap` / `balanced` / `quality`, asignación
|
|
104
|
+
por fase (sdd-design, sdd-spec, sdd-tasks, etc.).
|
|
105
|
+
- **TUI**: interfaz Textual con detección de agentes instalados.
|
|
106
|
+
- **Workflows Git**: commits con conventional commits, PRs con revisión,
|
|
107
|
+
keybindings configurables.
|
|
108
|
+
|
|
109
|
+
## Estructura del proyecto
|
|
110
|
+
|
|
111
|
+
```
|
|
112
|
+
dxrk/
|
|
113
|
+
├── __main__.py # Entry point CLI
|
|
114
|
+
├── autonomy/ # Aprendizaje, evolución, verificador
|
|
115
|
+
├── cli/ # Comandos de instalación y ejecución
|
|
116
|
+
├── commands/ # Comandos del orquestador (commit, plan, mcp, ...)
|
|
117
|
+
├── config/ # Configuración y validación
|
|
118
|
+
├── mcp/ # Clientes MCP
|
|
119
|
+
├── observe/ # Observabilidad y traces
|
|
120
|
+
├── query/ # Motor de consultas
|
|
121
|
+
├── rag/ # Retrieval-Augmented Generation
|
|
122
|
+
├── security/ # JWT, permisos
|
|
123
|
+
├── system/ # Detección de plataforma y gestión del sistema
|
|
124
|
+
├── tools/ # Herramientas del agente
|
|
125
|
+
├── trace/ # Trazabilidad
|
|
126
|
+
├── tui/ # Interfaz Textual
|
|
127
|
+
└── utils/ # Utilidades (fileops, hooks, http, ...)
|
|
128
|
+
```
|
|
129
|
+
|
|
130
|
+
## Desarrollo
|
|
131
|
+
|
|
132
|
+
```bash
|
|
133
|
+
uv sync --all-extras # Instalar dependencias y extras
|
|
134
|
+
uv run pytest # Suite de tests (2760+ tests)
|
|
135
|
+
uv run --with mypy mypy dxrk/ # Type checking
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
## Roadmap
|
|
139
|
+
|
|
140
|
+
- **v4.1.0** — pipeline de entrenamiento ML, pre-commit, dependabot, más integraciones.
|
|
141
|
+
- **v4.2.0** — marketplace de plugins.
|
|
142
|
+
- **v5.0.0** — multi-tenant.
|
|
143
|
+
|
|
144
|
+
## Documentación
|
|
145
|
+
|
|
146
|
+
| Documento | Descripción |
|
|
147
|
+
|---|---|
|
|
148
|
+
| [docs/intended-usage.md](docs/intended-usage.md) | Uso intencional del ecosistema |
|
|
149
|
+
| [docs/agents.md](docs/agents.md) | Agentes soportados |
|
|
150
|
+
| [docs/components.md](docs/components.md) | Componentes del sistema |
|
|
151
|
+
| [docs/architecture.md](docs/architecture.md) | Arquitectura |
|
|
152
|
+
| [docs/usage.md](docs/usage.md) | Guía de uso |
|
|
153
|
+
| [docs/platforms.md](docs/platforms.md) | Plataformas |
|
|
154
|
+
|
|
155
|
+
## Licencia
|
|
156
|
+
|
|
157
|
+
MIT — ver [LICENSE](LICENSE).
|
|
158
|
+
|
|
159
|
+
---
|
|
160
|
+
|
|
161
|
+
**DXRK // BEYOND LIMITS**
|
|
@@ -0,0 +1,254 @@
|
|
|
1
|
+
# SPDX-License-Identifier: MIT
|
|
2
|
+
#!/usr/bin/env python3
|
|
3
|
+
"""
|
|
4
|
+
Dxrk — Unified CLI + TUI entry point.
|
|
5
|
+
"""
|
|
6
|
+
|
|
7
|
+
from __future__ import annotations
|
|
8
|
+
|
|
9
|
+
import argparse
|
|
10
|
+
import logging
|
|
11
|
+
import os
|
|
12
|
+
import sys
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
def main() -> None:
|
|
16
|
+
parser = argparse.ArgumentParser(description="Dxrk — Agent Ecosystem Manager")
|
|
17
|
+
parser.add_argument("--version", "-v", action="store_true", help="Show version")
|
|
18
|
+
parser.add_argument("--health", action="store_true", help="Run health check")
|
|
19
|
+
parser.add_argument(
|
|
20
|
+
"--tui", action="store_true", help="Launch TUI (default if no args)"
|
|
21
|
+
)
|
|
22
|
+
parser.add_argument("--debug", action="store_true", help="Enable debug logging")
|
|
23
|
+
|
|
24
|
+
sub = parser.add_subparsers(dest="command")
|
|
25
|
+
|
|
26
|
+
# dxrk install
|
|
27
|
+
install_parser = sub.add_parser("install", help="Install agents and components")
|
|
28
|
+
install_parser.add_argument(
|
|
29
|
+
"--agent", "-a", action="append", dest="agents", help="Agent to install"
|
|
30
|
+
)
|
|
31
|
+
install_parser.add_argument(
|
|
32
|
+
"--component",
|
|
33
|
+
"-c",
|
|
34
|
+
action="append",
|
|
35
|
+
dest="components",
|
|
36
|
+
help="Component to install",
|
|
37
|
+
)
|
|
38
|
+
install_parser.add_argument(
|
|
39
|
+
"--persona", choices=["gentleman", "neutral", "custom"], default="gentleman"
|
|
40
|
+
)
|
|
41
|
+
install_parser.add_argument(
|
|
42
|
+
"--preset", choices=["full-gentleman", "ecosystem-only", "minimal", "custom"]
|
|
43
|
+
)
|
|
44
|
+
install_parser.add_argument(
|
|
45
|
+
"--dry-run", action="store_true", help="Preview without installing"
|
|
46
|
+
)
|
|
47
|
+
|
|
48
|
+
# dxrk sync
|
|
49
|
+
sync_parser = sub.add_parser("sync", help="Sync configuration to disk")
|
|
50
|
+
sync_parser.add_argument(
|
|
51
|
+
"--agent", "-a", action="append", dest="agents", help="Agent to sync"
|
|
52
|
+
)
|
|
53
|
+
sync_parser.add_argument(
|
|
54
|
+
"--dry-run", action="store_true", help="Preview without syncing"
|
|
55
|
+
)
|
|
56
|
+
sync_parser.add_argument(
|
|
57
|
+
"--sdd-mode", type=str, default="", help="SDD mode (single/multi)"
|
|
58
|
+
)
|
|
59
|
+
sync_parser.add_argument(
|
|
60
|
+
"--strict-tdd", action="store_true", default=False, help="Enable strict TDD"
|
|
61
|
+
)
|
|
62
|
+
sync_parser.add_argument(
|
|
63
|
+
"--include-permissions",
|
|
64
|
+
action="store_true",
|
|
65
|
+
default=False,
|
|
66
|
+
help="Include permissions",
|
|
67
|
+
)
|
|
68
|
+
sync_parser.add_argument(
|
|
69
|
+
"--include-theme", action="store_true", default=False, help="Include theme"
|
|
70
|
+
)
|
|
71
|
+
|
|
72
|
+
# dxrk upgrade
|
|
73
|
+
upg_parser = sub.add_parser("upgrade", help="Upgrade installed components")
|
|
74
|
+
|
|
75
|
+
# dxrk uninstall
|
|
76
|
+
uninstall_parser = sub.add_parser(
|
|
77
|
+
"uninstall", help="Uninstall agents and components"
|
|
78
|
+
)
|
|
79
|
+
uninstall_parser.add_argument("--agent", action="append", dest="agents")
|
|
80
|
+
uninstall_parser.add_argument("--component", action="append", dest="components")
|
|
81
|
+
uninstall_parser.add_argument(
|
|
82
|
+
"--all", action="store_true", default=False, help="Uninstall all"
|
|
83
|
+
)
|
|
84
|
+
uninstall_parser.add_argument(
|
|
85
|
+
"--yes", "-y", action="store_true", default=False, help="Skip confirmation"
|
|
86
|
+
)
|
|
87
|
+
|
|
88
|
+
# dxrk backup / restore
|
|
89
|
+
sub.add_parser("backup", help="Manage backups")
|
|
90
|
+
restore_parser = sub.add_parser("restore", help="Restore from a backup")
|
|
91
|
+
restore_parser.add_argument("backup_id", nargs="?", help="Backup ID to restore")
|
|
92
|
+
|
|
93
|
+
# dxrk model
|
|
94
|
+
model_parser = sub.add_parser("model", help="Configure model assignments")
|
|
95
|
+
model_parser.add_argument("phase", nargs="?", help="SDD phase to configure")
|
|
96
|
+
model_parser.add_argument("--provider", help="Provider ID")
|
|
97
|
+
model_parser.add_argument("--model", help="Model ID")
|
|
98
|
+
|
|
99
|
+
# dxrk version
|
|
100
|
+
sub.add_parser("version", help="Show version")
|
|
101
|
+
|
|
102
|
+
args = parser.parse_args()
|
|
103
|
+
|
|
104
|
+
if args.debug:
|
|
105
|
+
logging.basicConfig(
|
|
106
|
+
level=logging.DEBUG, format="%(levelname)s %(name)s: %(message)s"
|
|
107
|
+
)
|
|
108
|
+
else:
|
|
109
|
+
logging.basicConfig(level=logging.WARNING)
|
|
110
|
+
|
|
111
|
+
version = os.environ.get("DXRK_VERSION", "dev")
|
|
112
|
+
|
|
113
|
+
if args.version or args.command == "version":
|
|
114
|
+
print(f"Dxrk v{version}")
|
|
115
|
+
return
|
|
116
|
+
|
|
117
|
+
if args.health:
|
|
118
|
+
from dxrk.system import detect, render_dependency_report
|
|
119
|
+
|
|
120
|
+
result = detect()
|
|
121
|
+
assert result.dependencies is not None, (
|
|
122
|
+
"detection did not populate dependencies"
|
|
123
|
+
)
|
|
124
|
+
print(render_dependency_report(result.dependencies))
|
|
125
|
+
return
|
|
126
|
+
|
|
127
|
+
if args.command == "install":
|
|
128
|
+
_run_install_cli(args)
|
|
129
|
+
return
|
|
130
|
+
|
|
131
|
+
if args.command == "sync":
|
|
132
|
+
_run_sync_cli(args)
|
|
133
|
+
return
|
|
134
|
+
|
|
135
|
+
if args.command == "uninstall":
|
|
136
|
+
_run_uninstall_cli(args)
|
|
137
|
+
return
|
|
138
|
+
|
|
139
|
+
if args.command == "backup":
|
|
140
|
+
_run_backup_cli()
|
|
141
|
+
return
|
|
142
|
+
|
|
143
|
+
if args.command == "restore":
|
|
144
|
+
_run_restore_cli(args)
|
|
145
|
+
return
|
|
146
|
+
|
|
147
|
+
if args.command == "upgrade":
|
|
148
|
+
print("Upgrade not yet implemented")
|
|
149
|
+
return
|
|
150
|
+
|
|
151
|
+
if args.command == "model":
|
|
152
|
+
_run_model_cli(args)
|
|
153
|
+
return
|
|
154
|
+
|
|
155
|
+
if args.command:
|
|
156
|
+
print(f"Command '{args.command}' not yet implemented")
|
|
157
|
+
return
|
|
158
|
+
|
|
159
|
+
_launch_tui(version)
|
|
160
|
+
|
|
161
|
+
|
|
162
|
+
def _run_install_cli(args) -> None:
|
|
163
|
+
from dxrk.system import detect
|
|
164
|
+
|
|
165
|
+
result = detect()
|
|
166
|
+
if not result.system.supported:
|
|
167
|
+
print("Unsupported system:", result.system.os)
|
|
168
|
+
sys.exit(1)
|
|
169
|
+
|
|
170
|
+
from dxrk.cli.install import run_install
|
|
171
|
+
|
|
172
|
+
raw = sys.argv[2:]
|
|
173
|
+
|
|
174
|
+
out = run_install(raw, detection=result)
|
|
175
|
+
if out.dry_run:
|
|
176
|
+
rev = out.review
|
|
177
|
+
if rev:
|
|
178
|
+
print("=== Dry Run Review ===")
|
|
179
|
+
print(f" Agents selected: {len(rev.agents)}")
|
|
180
|
+
print(f" Unsupported agents: {len(rev.unsupported_agents)}")
|
|
181
|
+
print(f" Persona: {rev.persona}")
|
|
182
|
+
print(f" Preset: {rev.preset}")
|
|
183
|
+
print(f" Components: {len(rev.components)}")
|
|
184
|
+
print(f" Skills: {len(rev.skills)}")
|
|
185
|
+
print(f" Strict TDD: {rev.strict_tdd}")
|
|
186
|
+
print(f" Has SDD: {rev.has_sdd}")
|
|
187
|
+
if rev.platform_decision:
|
|
188
|
+
pd = rev.platform_decision
|
|
189
|
+
print(f" OS: {pd.os} / {pd.linux_distro}")
|
|
190
|
+
return
|
|
191
|
+
|
|
192
|
+
|
|
193
|
+
def _launch_tui(version: str) -> None:
|
|
194
|
+
from dxrk.tui.app import run as run_tui
|
|
195
|
+
|
|
196
|
+
run_tui(version)
|
|
197
|
+
|
|
198
|
+
|
|
199
|
+
def _run_sync_cli(args) -> None:
|
|
200
|
+
from dxrk.cli.sync import RunSync
|
|
201
|
+
|
|
202
|
+
raw = sys.argv[2:]
|
|
203
|
+
result = RunSync(raw)
|
|
204
|
+
if hasattr(result, "dry_run") and result.dry_run:
|
|
205
|
+
print("=== Dry Run Sync ===")
|
|
206
|
+
print(f" Agents: {len(result.agents)}")
|
|
207
|
+
print(f" SDD Mode: {getattr(result.selection, 'sdd_mode', 'N/A')}")
|
|
208
|
+
print(f" Strict TDD: {result.selection.strict_tdd}")
|
|
209
|
+
return
|
|
210
|
+
|
|
211
|
+
print(f"Sync complete — {getattr(result, 'files_changed', 0)} files changed")
|
|
212
|
+
|
|
213
|
+
|
|
214
|
+
def _run_uninstall_cli(args) -> None:
|
|
215
|
+
from dxrk.cli.uninstall import RunUninstall
|
|
216
|
+
|
|
217
|
+
raw = sys.argv[2:]
|
|
218
|
+
result = RunUninstall(raw)
|
|
219
|
+
if hasattr(result, "removed_files"):
|
|
220
|
+
manual = getattr(result, "manual_actions", [])
|
|
221
|
+
if manual:
|
|
222
|
+
print("Manual actions required:")
|
|
223
|
+
for a in manual:
|
|
224
|
+
print(f" {a}")
|
|
225
|
+
print("Uninstall complete")
|
|
226
|
+
|
|
227
|
+
|
|
228
|
+
def _run_backup_cli() -> None:
|
|
229
|
+
from dxrk.backup import list_backups
|
|
230
|
+
|
|
231
|
+
backups = list_backups()
|
|
232
|
+
if not backups:
|
|
233
|
+
print("No backups found")
|
|
234
|
+
return
|
|
235
|
+
for b in backups:
|
|
236
|
+
print(f" {b}")
|
|
237
|
+
|
|
238
|
+
|
|
239
|
+
def _run_restore_cli(args) -> None:
|
|
240
|
+
from dxrk.cli.restore import RunRestore
|
|
241
|
+
|
|
242
|
+
raw = sys.argv[2:]
|
|
243
|
+
RunRestore(raw)
|
|
244
|
+
|
|
245
|
+
|
|
246
|
+
def _run_model_cli(args) -> None:
|
|
247
|
+
if args.phase:
|
|
248
|
+
print(f"Model config for phase '{args.phase}' not yet implemented")
|
|
249
|
+
else:
|
|
250
|
+
print("Model configuration not yet implemented")
|
|
251
|
+
|
|
252
|
+
|
|
253
|
+
if __name__ == "__main__":
|
|
254
|
+
main()
|