aiaddons 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.
Files changed (210) hide show
  1. aiaddons-0.1.0/.gitignore +19 -0
  2. aiaddons-0.1.0/.python-version +1 -0
  3. aiaddons-0.1.0/AGENTS.md +116 -0
  4. aiaddons-0.1.0/LICENSE +21 -0
  5. aiaddons-0.1.0/PKG-INFO +458 -0
  6. aiaddons-0.1.0/README.md +435 -0
  7. aiaddons-0.1.0/config.json +13 -0
  8. aiaddons-0.1.0/docs/ARCHITECTURE.md +829 -0
  9. aiaddons-0.1.0/docs/REGISTRY.md +127 -0
  10. aiaddons-0.1.0/pyproject.toml +74 -0
  11. aiaddons-0.1.0/registry/addons/brave-search-mcp.yaml +48 -0
  12. aiaddons-0.1.0/registry/addons/caveman.yaml +35 -0
  13. aiaddons-0.1.0/registry/addons/context7-mcp.yaml +48 -0
  14. aiaddons-0.1.0/registry/addons/figma-mcp.yaml +50 -0
  15. aiaddons-0.1.0/registry/addons/filesystem-mcp.yaml +40 -0
  16. aiaddons-0.1.0/registry/addons/firecrawl-mcp.yaml +50 -0
  17. aiaddons-0.1.0/registry/addons/github-mcp.yaml +48 -0
  18. aiaddons-0.1.0/registry/addons/karpathy-behavioral-skill.yaml +36 -0
  19. aiaddons-0.1.0/registry/addons/notion-mcp.yaml +49 -0
  20. aiaddons-0.1.0/registry/addons/playwright-mcp.yaml +41 -0
  21. aiaddons-0.1.0/registry/addons/ponytail-audit-skill.yaml +32 -0
  22. aiaddons-0.1.0/registry/addons/ponytail-debt-skill.yaml +32 -0
  23. aiaddons-0.1.0/registry/addons/ponytail-gain-skill.yaml +32 -0
  24. aiaddons-0.1.0/registry/addons/ponytail-help-skill.yaml +32 -0
  25. aiaddons-0.1.0/registry/addons/ponytail-review-skill.yaml +32 -0
  26. aiaddons-0.1.0/registry/addons/ponytail-skill.yaml +32 -0
  27. aiaddons-0.1.0/registry/addons/ponytail.yaml +40 -0
  28. aiaddons-0.1.0/registry/addons/postgres-mcp.yaml +47 -0
  29. aiaddons-0.1.0/registry/addons/python-lint-plugin.yaml +38 -0
  30. aiaddons-0.1.0/registry/addons/sentry-mcp.yaml +48 -0
  31. aiaddons-0.1.0/registry/addons/sequential-thinking-mcp.yaml +40 -0
  32. aiaddons-0.1.0/registry/addons/skill-creator.yaml +37 -0
  33. aiaddons-0.1.0/registry/addons/stripe-mcp.yaml +48 -0
  34. aiaddons-0.1.0/registry/addons/supabase-mcp.yaml +48 -0
  35. aiaddons-0.1.0/registry/addons/superpowers-brainstorming.yaml +35 -0
  36. aiaddons-0.1.0/registry/addons/superpowers-planning.yaml +35 -0
  37. aiaddons-0.1.0/registry/addons/superpowers-review.yaml +35 -0
  38. aiaddons-0.1.0/registry/addons/superpowers-tdd.yaml +35 -0
  39. aiaddons-0.1.0/registry/addons/superpowers-worktree.yaml +40 -0
  40. aiaddons-0.1.0/registry/addons/superpowers.yaml +40 -0
  41. aiaddons-0.1.0/registry/addons/vibesec-skill.yaml +35 -0
  42. aiaddons-0.1.0/registry/pending/SCOUT_REPORT.md +102 -0
  43. aiaddons-0.1.0/registry/pending/browserstack-mcp.yaml +54 -0
  44. aiaddons-0.1.0/registry/pending/chrome-devtools-mcp.yaml +54 -0
  45. aiaddons-0.1.0/registry/pending/heroku-mcp.yaml +53 -0
  46. aiaddons-0.1.0/registry/pending/make-project-github-ready.yaml +35 -0
  47. aiaddons-0.1.0/registry/pending/qase-mcp.yaml +47 -0
  48. aiaddons-0.1.0/registry/pending/updates/context7-mcp-v4.1.1.yaml +47 -0
  49. aiaddons-0.1.0/registry/pending/updates/figma-mcp-v1.40.6.yaml +48 -0
  50. aiaddons-0.1.0/registry/pending/updates/filesystem-mcp-v2026.8.31.yaml +40 -0
  51. aiaddons-0.1.0/registry/pending/updates/firecrawl-mcp-v3.25.5.yaml +48 -0
  52. aiaddons-0.1.0/registry/pending/updates/notion-mcp-v2.5.2.yaml +48 -0
  53. aiaddons-0.1.0/registry/pending/updates/sequential-thinking-mcp-v2026.8.31.yaml +40 -0
  54. aiaddons-0.1.0/registry/stacks/agent-behavior-stack.yaml +7 -0
  55. aiaddons-0.1.0/registry/stacks/dev-starter-stack.yaml +7 -0
  56. aiaddons-0.1.0/src/aiaddons/__init__.py +5 -0
  57. aiaddons-0.1.0/src/aiaddons/__main__.py +6 -0
  58. aiaddons-0.1.0/src/aiaddons/agents/__init__.py +16 -0
  59. aiaddons-0.1.0/src/aiaddons/agents/antigravity.py +106 -0
  60. aiaddons-0.1.0/src/aiaddons/agents/base.py +31 -0
  61. aiaddons-0.1.0/src/aiaddons/agents/claude_code.py +85 -0
  62. aiaddons-0.1.0/src/aiaddons/agents/codex.py +81 -0
  63. aiaddons-0.1.0/src/aiaddons/agents/manager.py +58 -0
  64. aiaddons-0.1.0/src/aiaddons/agents/utils.py +48 -0
  65. aiaddons-0.1.0/src/aiaddons/cli/__init__.py +5 -0
  66. aiaddons-0.1.0/src/aiaddons/cli/commands/__init__.py +1 -0
  67. aiaddons-0.1.0/src/aiaddons/cli/commands/agents.py +74 -0
  68. aiaddons-0.1.0/src/aiaddons/cli/commands/compatibility.py +110 -0
  69. aiaddons-0.1.0/src/aiaddons/cli/commands/doctor.py +122 -0
  70. aiaddons-0.1.0/src/aiaddons/cli/commands/install.py +963 -0
  71. aiaddons-0.1.0/src/aiaddons/cli/commands/registry.py +345 -0
  72. aiaddons-0.1.0/src/aiaddons/cli/commands/remove.py +564 -0
  73. aiaddons-0.1.0/src/aiaddons/cli/commands/sync.py +599 -0
  74. aiaddons-0.1.0/src/aiaddons/cli/commands/tui.py +20 -0
  75. aiaddons-0.1.0/src/aiaddons/cli/commands/update.py +667 -0
  76. aiaddons-0.1.0/src/aiaddons/cli/exit_codes.py +17 -0
  77. aiaddons-0.1.0/src/aiaddons/cli/main.py +87 -0
  78. aiaddons-0.1.0/src/aiaddons/core/__init__.py +1 -0
  79. aiaddons-0.1.0/src/aiaddons/core/acquisition/__init__.py +29 -0
  80. aiaddons-0.1.0/src/aiaddons/core/acquisition/base.py +38 -0
  81. aiaddons-0.1.0/src/aiaddons/core/acquisition/engine.py +97 -0
  82. aiaddons-0.1.0/src/aiaddons/core/acquisition/extractor.py +268 -0
  83. aiaddons-0.1.0/src/aiaddons/core/acquisition/git.py +163 -0
  84. aiaddons-0.1.0/src/aiaddons/core/acquisition/local.py +136 -0
  85. aiaddons-0.1.0/src/aiaddons/core/acquisition/models.py +42 -0
  86. aiaddons-0.1.0/src/aiaddons/core/acquisition/package.py +94 -0
  87. aiaddons-0.1.0/src/aiaddons/core/acquisition/staging.py +97 -0
  88. aiaddons-0.1.0/src/aiaddons/core/acquisition/url.py +162 -0
  89. aiaddons-0.1.0/src/aiaddons/core/compatibility/__init__.py +15 -0
  90. aiaddons-0.1.0/src/aiaddons/core/compatibility/engine.py +365 -0
  91. aiaddons-0.1.0/src/aiaddons/core/compatibility/models.py +49 -0
  92. aiaddons-0.1.0/src/aiaddons/core/drift.py +73 -0
  93. aiaddons-0.1.0/src/aiaddons/core/exceptions.py +119 -0
  94. aiaddons-0.1.0/src/aiaddons/core/execution/__init__.py +37 -0
  95. aiaddons-0.1.0/src/aiaddons/core/execution/engine.py +1730 -0
  96. aiaddons-0.1.0/src/aiaddons/core/execution/external/__init__.py +27 -0
  97. aiaddons-0.1.0/src/aiaddons/core/execution/external/models.py +47 -0
  98. aiaddons-0.1.0/src/aiaddons/core/execution/external/runner.py +165 -0
  99. aiaddons-0.1.0/src/aiaddons/core/execution/external/runtimes.py +136 -0
  100. aiaddons-0.1.0/src/aiaddons/core/execution/external/security.py +115 -0
  101. aiaddons-0.1.0/src/aiaddons/core/execution/models.py +44 -0
  102. aiaddons-0.1.0/src/aiaddons/core/execution/primitives.py +213 -0
  103. aiaddons-0.1.0/src/aiaddons/core/execution/security.py +82 -0
  104. aiaddons-0.1.0/src/aiaddons/core/health/__init__.py +17 -0
  105. aiaddons-0.1.0/src/aiaddons/core/health/engine.py +1144 -0
  106. aiaddons-0.1.0/src/aiaddons/core/health/models.py +75 -0
  107. aiaddons-0.1.0/src/aiaddons/core/installer/__init__.py +47 -0
  108. aiaddons-0.1.0/src/aiaddons/core/installer/engine.py +515 -0
  109. aiaddons-0.1.0/src/aiaddons/core/installer/models.py +596 -0
  110. aiaddons-0.1.0/src/aiaddons/core/models/__init__.py +47 -0
  111. aiaddons-0.1.0/src/aiaddons/core/models/agent.py +63 -0
  112. aiaddons-0.1.0/src/aiaddons/core/models/manifest.py +448 -0
  113. aiaddons-0.1.0/src/aiaddons/core/models/stack.py +117 -0
  114. aiaddons-0.1.0/src/aiaddons/core/secrets/__init__.py +29 -0
  115. aiaddons-0.1.0/src/aiaddons/core/secrets/models.py +52 -0
  116. aiaddons-0.1.0/src/aiaddons/core/secrets/resolver.py +472 -0
  117. aiaddons-0.1.0/src/aiaddons/core/sync/__init__.py +21 -0
  118. aiaddons-0.1.0/src/aiaddons/core/sync/engine.py +601 -0
  119. aiaddons-0.1.0/src/aiaddons/core/sync/models.py +106 -0
  120. aiaddons-0.1.0/src/aiaddons/core/update/__init__.py +6 -0
  121. aiaddons-0.1.0/src/aiaddons/core/update/engine.py +501 -0
  122. aiaddons-0.1.0/src/aiaddons/core/update/models.py +78 -0
  123. aiaddons-0.1.0/src/aiaddons/core/verification/__init__.py +16 -0
  124. aiaddons-0.1.0/src/aiaddons/core/verification/engine.py +916 -0
  125. aiaddons-0.1.0/src/aiaddons/core/verification/models.py +51 -0
  126. aiaddons-0.1.0/src/aiaddons/integrations/__init__.py +15 -0
  127. aiaddons-0.1.0/src/aiaddons/integrations/base.py +38 -0
  128. aiaddons-0.1.0/src/aiaddons/integrations/cli_tool.py +97 -0
  129. aiaddons-0.1.0/src/aiaddons/integrations/mcp.py +190 -0
  130. aiaddons-0.1.0/src/aiaddons/integrations/plugin.py +241 -0
  131. aiaddons-0.1.0/src/aiaddons/integrations/skill.py +128 -0
  132. aiaddons-0.1.0/src/aiaddons/registry/__init__.py +22 -0
  133. aiaddons-0.1.0/src/aiaddons/registry/cache.py +126 -0
  134. aiaddons-0.1.0/src/aiaddons/registry/client.py +85 -0
  135. aiaddons-0.1.0/src/aiaddons/registry/loader.py +103 -0
  136. aiaddons-0.1.0/src/aiaddons/registry/models.py +45 -0
  137. aiaddons-0.1.0/src/aiaddons/registry/registry.py +179 -0
  138. aiaddons-0.1.0/src/aiaddons/registry/validator.py +123 -0
  139. aiaddons-0.1.0/src/aiaddons/state/__init__.py +21 -0
  140. aiaddons-0.1.0/src/aiaddons/state/lockfile.py +136 -0
  141. aiaddons-0.1.0/src/aiaddons/state/locking.py +55 -0
  142. aiaddons-0.1.0/src/aiaddons/state/store.py +158 -0
  143. aiaddons-0.1.0/src/aiaddons/state/transaction.py +136 -0
  144. aiaddons-0.1.0/src/aiaddons/tui/__init__.py +5 -0
  145. aiaddons-0.1.0/src/aiaddons/tui/app.py +1010 -0
  146. aiaddons-0.1.0/src/aiaddons/tui/screens/__init__.py +17 -0
  147. aiaddons-0.1.0/src/aiaddons/tui/screens/health.py +266 -0
  148. aiaddons-0.1.0/src/aiaddons/tui/screens/modals.py +314 -0
  149. aiaddons-0.1.0/src/aiaddons/tui/screens/sync.py +387 -0
  150. aiaddons-0.1.0/tests/__init__.py +1 -0
  151. aiaddons-0.1.0/tests/conftest.py +132 -0
  152. aiaddons-0.1.0/tests/fixtures/__init__.py +1 -0
  153. aiaddons-0.1.0/tests/fixtures/ponytail_manifests.py +196 -0
  154. aiaddons-0.1.0/tests/integration/__init__.py +1 -0
  155. aiaddons-0.1.0/tests/integration/test_antigravity_integration.py +437 -0
  156. aiaddons-0.1.0/tests/integration/test_batch_install_integration.py +180 -0
  157. aiaddons-0.1.0/tests/integration/test_install_remove_cycle.py +263 -0
  158. aiaddons-0.1.0/tests/integration/test_mcp_secrets_across_agents.py +141 -0
  159. aiaddons-0.1.0/tests/integration/test_registry_validation.py +146 -0
  160. aiaddons-0.1.0/tests/integration/test_sync_integration.py +221 -0
  161. aiaddons-0.1.0/tests/integration/test_update_integration.py +242 -0
  162. aiaddons-0.1.0/tests/unit/__init__.py +1 -0
  163. aiaddons-0.1.0/tests/unit/test_agent_detection.py +212 -0
  164. aiaddons-0.1.0/tests/unit/test_agent_utils.py +69 -0
  165. aiaddons-0.1.0/tests/unit/test_antigravity_adapter.py +286 -0
  166. aiaddons-0.1.0/tests/unit/test_archive_extractor.py +182 -0
  167. aiaddons-0.1.0/tests/unit/test_batch_install.py +582 -0
  168. aiaddons-0.1.0/tests/unit/test_cli.py +41 -0
  169. aiaddons-0.1.0/tests/unit/test_cli_agents.py +73 -0
  170. aiaddons-0.1.0/tests/unit/test_cli_check.py +84 -0
  171. aiaddons-0.1.0/tests/unit/test_cli_install.py +152 -0
  172. aiaddons-0.1.0/tests/unit/test_cli_registry.py +161 -0
  173. aiaddons-0.1.0/tests/unit/test_cli_remove.py +637 -0
  174. aiaddons-0.1.0/tests/unit/test_cli_sync.py +765 -0
  175. aiaddons-0.1.0/tests/unit/test_cli_update.py +627 -0
  176. aiaddons-0.1.0/tests/unit/test_compatibility.py +725 -0
  177. aiaddons-0.1.0/tests/unit/test_execution_engine.py +425 -0
  178. aiaddons-0.1.0/tests/unit/test_execution_primitives.py +106 -0
  179. aiaddons-0.1.0/tests/unit/test_execution_security.py +85 -0
  180. aiaddons-0.1.0/tests/unit/test_external_execution.py +203 -0
  181. aiaddons-0.1.0/tests/unit/test_installer_engine.py +246 -0
  182. aiaddons-0.1.0/tests/unit/test_installer_models.py +391 -0
  183. aiaddons-0.1.0/tests/unit/test_mcp_registry_manifests.py +522 -0
  184. aiaddons-0.1.0/tests/unit/test_phase5b10_cli.py +346 -0
  185. aiaddons-0.1.0/tests/unit/test_phase5b10_tui.py +98 -0
  186. aiaddons-0.1.0/tests/unit/test_phase5b3_installation.py +404 -0
  187. aiaddons-0.1.0/tests/unit/test_phase5b9_verification.py +657 -0
  188. aiaddons-0.1.0/tests/unit/test_phase5b_adapters.py +203 -0
  189. aiaddons-0.1.0/tests/unit/test_phase5b_secrets.py +553 -0
  190. aiaddons-0.1.0/tests/unit/test_phase5b_skills.py +208 -0
  191. aiaddons-0.1.0/tests/unit/test_phase5b_transactions.py +210 -0
  192. aiaddons-0.1.0/tests/unit/test_phase6_doctor_cli.py +208 -0
  193. aiaddons-0.1.0/tests/unit/test_phase6_health_engine.py +573 -0
  194. aiaddons-0.1.0/tests/unit/test_phase6_health_models.py +91 -0
  195. aiaddons-0.1.0/tests/unit/test_phase6a_registry_cache.py +138 -0
  196. aiaddons-0.1.0/tests/unit/test_phase6a_registry_cli.py +185 -0
  197. aiaddons-0.1.0/tests/unit/test_phase6a_registry_client.py +152 -0
  198. aiaddons-0.1.0/tests/unit/test_phase6a_registry_models.py +208 -0
  199. aiaddons-0.1.0/tests/unit/test_phase6a_security.py +97 -0
  200. aiaddons-0.1.0/tests/unit/test_phase6c_source_binding.py +615 -0
  201. aiaddons-0.1.0/tests/unit/test_ponytail_validation.py +711 -0
  202. aiaddons-0.1.0/tests/unit/test_post_install_consistency.py +635 -0
  203. aiaddons-0.1.0/tests/unit/test_registry.py +364 -0
  204. aiaddons-0.1.0/tests/unit/test_secret_confirmation.py +509 -0
  205. aiaddons-0.1.0/tests/unit/test_skills_plugins_manifests.py +290 -0
  206. aiaddons-0.1.0/tests/unit/test_source_acquisition.py +379 -0
  207. aiaddons-0.1.0/tests/unit/test_state_locking.py +203 -0
  208. aiaddons-0.1.0/tests/unit/test_sync_engine.py +635 -0
  209. aiaddons-0.1.0/tests/unit/test_tui_features.py +710 -0
  210. aiaddons-0.1.0/tests/unit/test_update_engine.py +629 -0
@@ -0,0 +1,19 @@
1
+ # Python-generated files
2
+ __pycache__/
3
+ *.py[oc]
4
+ build/
5
+ dist/
6
+ wheels/
7
+ *.egg-info
8
+
9
+ # Virtual environments
10
+ .venv
11
+
12
+ uv.lock
13
+
14
+ # Agent configs & workspace local data
15
+ .claude.json
16
+ .claude/
17
+ .agents/
18
+ .codex/
19
+ aiaddons.lock
@@ -0,0 +1 @@
1
+ 3.12
@@ -0,0 +1,116 @@
1
+ # AGENTS.md - Engineering Rules & Guidelines for AI Add-ons Manager (`aiaddons`)
2
+
3
+ This document defines the mandatory engineering standards, architectural constraints, and coding guidelines for AI Add-ons Manager (`aiaddons`). All developers and AI coding agents working on this project MUST strictly adhere to these rules.
4
+
5
+ ---
6
+
7
+ ## 1. Project Structure Standards
8
+ - Use the standard **`src/` layout** (PEP 621): `src/aiaddons/`.
9
+ - Maintain strict modularity across subpackages:
10
+ - `cli/`: Non-interactive CLI commands (Typer + Rich).
11
+ - `tui/`: Textual interactive terminal UI screens, widgets, and app controllers.
12
+ - `core/`: Pure domain models, compatibility resolver, and transactional installer logic.
13
+ - `agents/`: Agent detection and adapter implementations (Claude Code, Codex).
14
+ - `integrations/`: Integration type handlers (MCP, Skill, Plugin, CLI Tool).
15
+ - `registry/`: Registry fetching, schema validation, and security sanitization.
16
+ - `state/`: Local installation state database and `aiaddons.lock` lockfile management.
17
+ - Tests must be organized under `tests/unit/`, `tests/integration/`, and `tests/fixtures/`.
18
+
19
+ ---
20
+
21
+ ## 2. Modular Architecture & Abstraction
22
+ - Use Python `Protocol` or `ABC` interfaces for all extensible components (`BaseAgentAdapter`, `BaseIntegrationHandler`).
23
+ - The domain core (`core/`) MUST NOT import or depend on UI components (`tui/`, `cli/`).
24
+ - Adapters and Handlers must be completely decoupled from presentation logic. They take data models as input and return typed result objects (`ActionResult`, `AgentDetectionResult`).
25
+
26
+ ---
27
+
28
+ ## 3. Registry-Driven Design (No Hard-coded Add-ons)
29
+ - **CRITICAL**: DO NOT hard-code individual add-ons, MCP servers, or skills into Python code or classes.
30
+ - Integrations MUST be defined dynamically as JSON/YAML metadata conforming to `IntegrationManifest`.
31
+ - Adding a new integration to the ecosystem must require ONLY adding a manifest entry to a registry—NEVER modifying Python source code.
32
+
33
+ ---
34
+
35
+ ## 4. Agent Adapter Constraints (Claude Code & Codex)
36
+ - All agent adapters must implement `BaseAgentAdapter`.
37
+ - Adapters must safely handle both **Global** scope (`~/.claude.json`, `~/.codex/`) and **Workspace** scope (`.claude/`, `.agents/`).
38
+ - File modifications to agent configurations MUST be atomic (read -> update dict -> write to temporary file -> atomic rename).
39
+ - Adapter detection must check both executable presence in `PATH` (`shutil.which`) and configuration directory existence.
40
+
41
+ ---
42
+
43
+ ## 5. MCP and Skills Integration Guidelines
44
+ - **MCP Servers**:
45
+ - MCP handlers build and inject `mcpServers` configuration objects into agent config files.
46
+ - MCP servers must NEVER be launched directly by `aiaddons` as unmanaged background daemons.
47
+ - Environment variables required by MCP servers must be clearly declared with `required` and `secret` flags.
48
+ - **Agent Skills**:
49
+ - Skills must be validated against `SKILL.md` frontmatter rules before installation.
50
+ - Skill deployment must safely copy/link directory contents into agent-specific skill locations (`.claude/skills/`, `.agents/skills/`).
51
+
52
+ ---
53
+
54
+ ## 6. Security & Command Execution Guardrails
55
+ - **No Arbitrary Shell Execution**:
56
+ - NEVER execute arbitrary shell commands or scripts specified in registry metadata.
57
+ - Subprocess calls MUST NEVER use `shell=True`. All invocations must use explicit argument lists: `["npx", "-y", "@scope/package"]`.
58
+ - **Executable Whitelist**:
59
+ - Only pre-approved runtime binaries (`npx`, `uvx`, `python`, `node`, `pip`, `git`) listed in `allowed_executables` may be executed.
60
+ - **Command Sanitization**:
61
+ - Reject any registry manifest containing shell operators: `;`, `&&`, `||`, `|`, `>`, `<`, `$()`, backticks, or environment variable expansions.
62
+ - **Checksum Verification**:
63
+ - Downloads (zip archives, git bundles) MUST be validated against cryptographic SHA-256 hashes defined in the manifest.
64
+ - **Secret Protection**:
65
+ - Sensitive inputs (API keys, personal access tokens) MUST be flagged `secret: true`, masked in UI/logs, and stored safely.
66
+
67
+ ---
68
+
69
+ ## 7. Dependency Management & Packaging
70
+ - Managed via `pyproject.toml` using `hatchling` as the build backend.
71
+ - Core runtime dependencies must remain minimal:
72
+ - `typer` (CLI)
73
+ - `rich` (Formatting)
74
+ - `textual` (TUI)
75
+ - `pydantic` v2 (Validation & Schemas)
76
+ - `httpx` (Async HTTP)
77
+ - `packaging` (SemVer checks)
78
+ - Avoid adding unnecessary external packages. Favor standard library (`pathlib`, `json`, `shutil`, `typing`, `hashlib`, `subprocess`).
79
+
80
+ ---
81
+
82
+ ## 8. Type Hints & Code Quality
83
+ - Strict static typing is required everywhere. All function parameters and return values must have explicit type annotations.
84
+ - Use Python 3.11+ type syntax (`list[str]`, `dict[str, Any]`, `str | None`).
85
+ - No implicit `Any` types in domain models.
86
+ - Core code must pass static type checking without errors (`mypy --strict`).
87
+
88
+ ---
89
+
90
+ ## 9. Error Handling & Transactional Rollbacks
91
+ - Create a dedicated exception hierarchy inheriting from `AIAddonsError`:
92
+ - `RegistryFetchError`
93
+ - `ManifestValidationError`
94
+ - `IncompatibleAgentError`
95
+ - `SecurityValidationError`
96
+ - `InstallationError`
97
+ - Multi-step installations must use an `InstallPlan` with a `RollbackStack`. If step $N$ fails, steps $N-1$ down to $1$ must execute their `undo()` handler to leave the host system clean.
98
+ - Never swallow exceptions silently. All errors reported to the user in CLI/TUI must be clear, actionable, and user-friendly.
99
+
100
+ ---
101
+
102
+ ## 10. Logging & Auditing
103
+ - Use structured logging via standard `logging`.
104
+ - Log files must be stored in the app data directory (`~/.aiaddons/logs/aiaddons.log`).
105
+ - **NEVER** write plain-text secrets, passwords, or tokens to log files. Filter or mask all secret values.
106
+
107
+ ---
108
+
109
+ ## 11. Testing Requirements
110
+ - Unit tests (`pytest`) are required for:
111
+ - Manifest parsing and Pydantic schema validation.
112
+ - SemVer and OS compatibility resolution.
113
+ - Security command sanitizer and whitelist verifier.
114
+ - JSON configuration diffing and atomic updates.
115
+ - Mock all file system writes and subprocess executions in unit tests using `pytest` fixtures (`tmp_path`, `monkeypatch`, `unittest.mock`).
116
+ - Use Textual's `App.run_test()` harness for UI testing.
aiaddons-0.1.0/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Anuj04432
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.
@@ -0,0 +1,458 @@
1
+ Metadata-Version: 2.5
2
+ Name: aiaddons
3
+ Version: 0.1.0
4
+ Summary: AI Add-ons Manager - Package & Integration Manager for AI Agents
5
+ Author-email: Anuj04432 <anujwagmore835@gmail.com>
6
+ License-Expression: MIT
7
+ License-File: LICENSE
8
+ Requires-Python: >=3.11
9
+ Requires-Dist: filelock>=3.13.0
10
+ Requires-Dist: httpx>=0.27.0
11
+ Requires-Dist: packaging>=23.0
12
+ Requires-Dist: pydantic>=2.0.0
13
+ Requires-Dist: pyyaml>=6.0
14
+ Requires-Dist: rich>=13.0.0
15
+ Requires-Dist: textual>=0.50.0
16
+ Requires-Dist: typer>=0.12.0
17
+ Provides-Extra: dev
18
+ Requires-Dist: mypy>=1.8.0; extra == 'dev'
19
+ Requires-Dist: pytest>=8.0.0; extra == 'dev'
20
+ Requires-Dist: ruff>=0.3.0; extra == 'dev'
21
+ Requires-Dist: types-pyyaml>=6.0.0; extra == 'dev'
22
+ Description-Content-Type: text/markdown
23
+
24
+ # AI Add-ons Manager (`aiaddons`)
25
+
26
+ > **Declarative, security-hardened, transactional package manager for AI coding agents.**
27
+
28
+ [![Python 3.11+](https://img.shields.io/badge/python-3.11+-blue.svg)](https://www.python.org/downloads/)
29
+ [![Tests](https://img.shields.io/badge/tests-501%20passed%2C%204%20skipped-brightgreen.svg)]()
30
+ [![Type Checking](https://img.shields.io/badge/mypy-strict-brightgreen.svg)]()
31
+ [![Code Style](https://img.shields.io/badge/code%20style-ruff-000000.svg)](https://github.com/astral-sh/ruff)
32
+ [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](pyproject.toml)
33
+
34
+ ---
35
+
36
+ ## What is `aiaddons`?
37
+
38
+ **`aiaddons`** is an open-source, declarative package and integration manager designed specifically for AI coding agents, including **Anthropic Claude Code**, **OpenAI Codex**, and **Antigravity CLI**. Just as `pip` manages Python dependencies and `npm` manages Node packages, `aiaddons` automates the discovery, compatibility evaluation, acquisition, configuration injection, verification, and lifecycle management of tools and extensions that AI agents require.
39
+
40
+ Modern AI coding agents rely on a growing ecosystem of external capabilities. `aiaddons` standardizes these extensions into four first-class integration primitives:
41
+
42
+ * **Model Context Protocol (MCP) Servers**: Standardized tools and data connectors (e.g. GitHub, PostgreSQL, Brave Search) configured dynamically via `npx`, `uvx`, `node`, or `python` runtimes.
43
+ * **Agent Skills**: Prompt templates, specialized instructions, and reusable workflow bundles (centered around `SKILL.md` specifications) deployed directly to agent skill paths.
44
+ * **Composite Plugins**: Multi-component packages combining MCP servers, skills, and CLI tools under unified configuration boundaries.
45
+ * **CLI Tools**: Verified external system binaries and developer utilities required by agents.
46
+
47
+ `aiaddons` supports dual-scope installation: **Global** (`~/.claude.json`, `~/.codex/`, `~/.gemini/config/mcp_config.json`) for user-wide agent availability, and **Workspace** (`.claude.json`, `.agents/`, `aiaddons.lock`) for team-level, reproducible project environments checked into source control.
48
+
49
+ ---
50
+
51
+ ## Why It's Safe
52
+
53
+ Registry manifests describe **WHAT** an add-on is; trusted application code determines **HOW** it is installed, updated, or removed. `aiaddons` enforces a defense-in-depth security model to eliminate supply-chain and execution vulnerabilities:
54
+
55
+ | Security Mechanism | Implementation in Codebase | Security Guarantee |
56
+ | :--- | :--- | :--- |
57
+ | **No Arbitrary Shell Execution** | `ExternalRunner` (`subprocess.Popen(shell=False)`) | Subprocess execution uses strictly typed argument vectors (`list[str]`). Shell interpreters (`bash -c`, `cmd.exe /c`, `powershell`) and arbitrary execution scripts in manifests are prohibited. |
58
+ | **Runtime & Binary Allowlist** | `ALLOWED_RUNTIMES`, `ALLOWED_EXECUTABLES`, `validate_runtime_name` | Only pre-approved runtime binaries (`npx`, `uvx`, `pip`, `npm`, `git`, `python`, `node`) resolved dynamically via `shutil.which` are permitted. |
59
+ | **Argument & Parameter Sanitization** | `validate_argument_vector`, `validate_mcp_package_name`, `FORBIDDEN_SHELL_PATTERNS` | Rejects shell metacharacters (`;`, `&&`, `\|\|`, `\|`, `>`, `<`, `$`, `` ` ``), forbidden evaluation flags (`--eval`, `-e`, `-c`, `--exec`), null bytes (`\0`), and malformed package identifiers. |
60
+ | **Boundary Confinement & Traversal Protection** | `verify_safe_target_path`, `validate_safe_relative_path`, `verify_path_security` | Confines all disk writes within designated `target_root` directories. Prohibits parent traversal (`..`), absolute path overrides, Windows drive letters, UNC shares (`\\server\share`), URL-encoded paths (`%2e%2e`), and escaping symlinks. |
61
+ | **Write-Ahead Log (WAL) & Rollbacks** | `TransactionWALManager`, `ExecutionEngine._rollback_executed_stack` | Every installation, update, and removal transitions through durable WAL phases (`REQUESTED` → `PLANNED` → `EXECUTING` → `VERIFIED` → `COMMITTED`). Failures trigger an atomic `RollbackAction` stack. Interrupted transactions are automatically detected and recovered. |
62
+ | **In-Memory Secret Protection** | `SecretResolver`, `mask_secrets_in_text`, `validate_env_var_name` | Manifests declare secret requirements (`secret: true`) without storing plaintext values. Secrets are resolved in-memory via `getpass` prompts or environment variables, masked as `***MASKED***` across logs and output, and blocked from restricted variables (`LD_PRELOAD`, `PYTHONPATH`, `PATH`). Features soft warnings on malformed secrets, masked preview after entry, and live asterisk feedback on Windows. |
63
+ | **Configuration Drift Detection** | `detect_installation_drift` | Compares live agent configuration files and filesystem contents against recorded states to warn before mutating or removing modified integrations. |
64
+ | **Post-Operation Verification** | `VerificationEngine.verify_plan`, `verify_rollback` | Independent observer verifies that files, hashes (`sha256:`), and JSON/YAML configuration entries match expected values before committing transactions. |
65
+ | **Atomic Persistence** | `_atomic_write_file` (with `os.fsync` and atomic tempfile replacement) | Guarantees that local state database (`~/.aiaddons/state.json`) and workspace lockfiles (`aiaddons.lock`) cannot be corrupted by abrupt terminations or disk errors. |
66
+
67
+ ---
68
+
69
+ ## Architecture
70
+
71
+ `aiaddons` is designed with a decoupled, domain-driven core where presentation layers (CLI & TUI) delegate directly to verified business engines:
72
+
73
+ ```mermaid
74
+ flowchart TD
75
+ User([User / Terminal]) --> UI[Presentation Layer<br/><code>Typer CLI</code> / <code>Textual TUI</code>]
76
+ UI --> AppUI[TUI Screens & Modals<br/><code>HealthScreen</code> / <code>SyncScreen</code> / <code>ConfirmModals</code>]
77
+ UI --> Compat[CompatibilityEngine<br/><i>Agent Detection & Constraint Evaluation</i>]
78
+ UI --> Health[HealthCheckEngine<br/><i>9-Category Diagnostics</i>]
79
+ UI --> Sync[SyncEngine<br/><i>Lockfile Diffing & Workspace Reconciliation</i>]
80
+ UI --> Update[UpdateEngine<br/><i>Version Evaluation & Upgrade Planning</i>]
81
+ UI --> Drift[Drift Detection<br/><i>Configuration & Filesystem Drift Inspector</i>]
82
+
83
+ Compat --> PlanEng[InstallationEngine<br/><i>Plan & Removal Generation</i>]
84
+ Sync --> PlanEng
85
+ Update --> PlanEng
86
+ PlanEng --> AcqEng[AcquisitionEngine<br/><i>Source Fetching: Git / Package / URL / Local</i>]
87
+ AcqEng --> ExecEng[ExecutionEngine<br/><i>Atomic Primitives & ExternalRunner</i>]
88
+ ExecEng --> Secret[SecretResolver<br/><i>In-Memory Resolution & Masking</i>]
89
+ ExecEng --> VerifyEng[VerificationEngine<br/><i>Host State & Rollback Inspection</i>]
90
+ VerifyEng -- Verification Success --> State[InstalledStateStore & LockfileManager<br/><code>~/.aiaddons/state.json</code> & <code>aiaddons.lock</code>]
91
+ ExecEng -. Write-Ahead Logging .-> WAL[TransactionWALManager<br/><code>~/.aiaddons/transactions/*.json</code>]
92
+ ExecEng -. Failure / Verification Error .-> Rollback[Rollback Stack<br/><i>Reverse Atomic Operations</i>]
93
+ ```
94
+
95
+ ### Core Components
96
+
97
+ * **`CompatibilityEngine`**: Evaluates target agent support, scope constraints, agent capabilities (`mcp`, `skill`), host OS matching, and CLI prerequisites.
98
+ * **`InstallationEngine`**: Generates immutable `InstallationPlan` and removal plan structures containing declarative, typed operations (`CreateDirectoryOperation`, `WriteFileOperation`, `ModifyJsonOperation`, `AddMcpServerOperation`, `AddSkillOperation`, etc.).
99
+ * **`UpdateEngine`**: Evaluates newer manifest versions and coordinates transactional atomic updates and version swaps with rollback safety.
100
+ * **`SyncEngine`**: Computes declarative diffs between workspace lockfiles (`aiaddons.lock`) or stack files and local environments, orchestrating installs, updates, and prunes.
101
+ * **`HealthCheckEngine`**: Runs 9-category system diagnostics across CLI tools, agent configs, state stores, lockfiles, WAL transactions, and disk security.
102
+ * **`Drift Detection`**: Detects external tampering or manual edits to agent configuration files or installed assets before removals and updates.
103
+ * **`AcquisitionEngine`**: Coordinates source acquisition into isolated staging environments (`~/.aiaddons/staging/`) with cryptographic checksum verification (`sha256:`).
104
+ * **`ExecutionEngine`**: Executes atomic file primitives and external package managers with timeout controls, strict argument vectors, and rollback tracking.
105
+ * **`VerificationEngine`**: Inspects resulting filesystem artifacts and agent configuration files, guaranteeing state integrity prior to commit.
106
+ * **`InstalledStateStore` & `LockfileManager`**: Tracks installed add-ons globally (`state.json`) and per-workspace (`aiaddons.lock`).
107
+ * **`TransactionWALManager`**: Persists durable transaction records for crash recovery and auditability.
108
+
109
+ ---
110
+
111
+ ## Installation
112
+
113
+ ### Prerequisites
114
+
115
+ * **Python**: `3.11` or higher
116
+ * **Target AI Coding Agent** (at least one installed):
117
+ * [Claude Code](https://docs.anthropic.com/en/docs/agents-and-tools/claude-code/overview) (`claude`)
118
+ * [OpenAI Codex](https://github.com/openai/codex) (`codex`)
119
+ * Antigravity CLI (`agy` / `antigravity`)
120
+ * **Optional Runtime Binaries**: `git`, `npx` / `node`, `uvx` / `python`, `pip`
121
+
122
+ ### Install from Source
123
+
124
+ ```bash
125
+ # Clone repository
126
+ git clone https://github.com/Anuj04432/AI-Add-ons-Manager.git
127
+ cd AI-Add-ons-Manager
128
+
129
+ # Standard editable install via pip
130
+ pip install -e .
131
+
132
+ # Or using uv (recommended for ultra-fast setup)
133
+ uv pip install -e .
134
+
135
+ # For development dependencies (pytest, mypy, ruff)
136
+ pip install -e ".[dev]"
137
+ ```
138
+
139
+ Verify your installation:
140
+
141
+ ```bash
142
+ aiaddons --version
143
+ aiaddons agents
144
+ ```
145
+
146
+ ---
147
+
148
+ ## Quickstart
149
+
150
+ ### 1. Batch Install Add-ons (Core Value Proposition)
151
+
152
+ Install multiple MCP servers, skills, and plugins across your workspace in a single transactional command:
153
+
154
+ ```bash
155
+ # Install multiple add-ons at once for detected agents
156
+ aiaddons install github-mcp postgres-mcp code-reviewer caveman --scope workspace
157
+
158
+ # Or declare your entire team stack in a YAML/JSON file and install it in one step:
159
+ aiaddons install --file team-stack.yaml
160
+ ```
161
+
162
+ > [!TIP]
163
+ > **Configuring Required Secrets (API Keys & Tokens)**
164
+ >
165
+ > When installing add-ons that require credentials (such as `GITHUB_TOKEN` for `github-mcp`), `aiaddons` prompts for masked, no-echo terminal input.
166
+ > - **Windows Paste Support**: Supports pasting tokens via <kbd>Ctrl</kbd>+<kbd>V</kbd> into masked password prompts on Windows PowerShell, CMD, and Windows Terminal.
167
+ > - **Environment Variable Alternative**: You can also pre-set secrets in your shell environment before running `install` (especially convenient for long tokens or automated CI runs):
168
+ > - **Windows PowerShell**: `$env:GITHUB_TOKEN = "ghp_your_token_value"`
169
+ > - **Linux / macOS (Bash/Zsh)**: `export GITHUB_TOKEN="ghp_your_token_value"`
170
+ > - **Windows CMD**: `set GITHUB_TOKEN=ghp_your_token_value`
171
+
172
+ ### 2. Workspace Lockfile Synchronization
173
+
174
+ When cloning a repository with an existing `aiaddons.lock`, synchronize your agent environment with zero manual configuration:
175
+
176
+ ```bash
177
+ # Fresh clone bootstrap: installs all declared add-ons automatically
178
+ aiaddons sync
179
+
180
+ # Reconcile local environment: install missing, update mismatched, and prune extra add-ons
181
+ aiaddons sync --prune --update
182
+ ```
183
+
184
+ > [!NOTE]
185
+ > **Committing `aiaddons.lock`**
186
+ > End users of `aiaddons` are encouraged to commit `aiaddons.lock` to their own project's version control to guarantee a reproducible team stack of AI agent capabilities. However, if you are developing or testing `aiaddons` *itself* (i.e., within this repository), `aiaddons.lock` is explicitly `.gitignore`d to prevent local test fixtures and experimental installations from polluting the main project history.
187
+
188
+ ### 3. Update & Version Upgrades
189
+
190
+ Keep your AI agent capabilities up to date with automated SemVer checks and atomic rollback safety:
191
+
192
+ ```bash
193
+ # Update all installed add-ons with newer registry versions available
194
+ aiaddons update --all
195
+
196
+ # Or update a specific add-on to a target version
197
+ aiaddons update github-mcp --version 1.3.0
198
+ ```
199
+
200
+ ### 4. Search, Inspect & Evaluate Compatibility
201
+
202
+ ```bash
203
+ # Search available add-ons
204
+ aiaddons search mcp
205
+
206
+ # Inspect metadata and configuration requirements
207
+ aiaddons info github-mcp
208
+
209
+ # Check compatibility against detected local AI agents (read-only)
210
+ aiaddons check github-mcp --scope workspace
211
+
212
+ # Preview installation operations without applying changes
213
+ aiaddons install github-mcp --dry-run
214
+ ```
215
+
216
+ ### 5. Diagnostics & Interactive TUI
217
+
218
+ ```bash
219
+ # Run 9-category system diagnostics and health checks
220
+ aiaddons doctor
221
+
222
+ # Launch the interactive terminal user interface
223
+ aiaddons tui
224
+ ```
225
+
226
+ ---
227
+
228
+
229
+ ## Registry & Available Add-ons
230
+
231
+ The built-in registry currently provides **30 integrations** out of the box, covering a wide spectrum of tools for AI agents. Since the last major update, the registry has been expanded significantly:
232
+
233
+ * **Newly Added MCP Servers**: `stripe-mcp`, `sentry-mcp`, `supabase-mcp`, `firecrawl-mcp`, `sequential-thinking-mcp`, `notion-mcp`, `figma-mcp`, `github-mcp`, `postgres-mcp`, `brave-search-mcp`, `filesystem-mcp`, `playwright-mcp`, `context7-mcp`
234
+ * **Agent Skills**: Dozens of workflow skills including `caveman`, `ponytail-audit-skill`, and other behavioral tools.
235
+
236
+ Additionally, `aiaddons` includes **2 pre-configured stacks** (`dev-starter-stack.yaml`, `agent-behavior-stack.yaml`) in `registry/stacks/` to help quickly bootstrap a team environment.
237
+
238
+ ## Interactive Terminal UI (TUI)
239
+
240
+ `aiaddons` provides a rich, responsive Textual-powered terminal user interface accessible via `aiaddons tui`.
241
+
242
+ ```text
243
+ ┌─────────────────────────┬────────────────────────────────────────────────────────┐
244
+ │ Add-ons Registry │ GitHub MCP Server (v1.2.0) │
245
+ │ 🔍 [Search... ] │ Model Context Protocol server for searching code... │
246
+ │ │ │
247
+ │ ◉ github-mcp [MCP] │ Status: ✓ Installed (Workspace) │
248
+ │ ○ postgres-mcp [MCP] │ Agent: Claude Code │
249
+ │ ○ code-reviewer [SKILL]│ │
250
+ │ ○ refactor-skill [SKILL]│ [H] Health [S] Sync [I] Install [R] Remove [U] Upd │
251
+ └─────────────────────────┴────────────────────────────────────────────────────────┘
252
+ ```
253
+
254
+ ### TUI Keybindings & Controls
255
+
256
+ | Key | Action | Description |
257
+ | :--- | :--- | :--- |
258
+ | <kbd>H</kbd> | **Health Check** | Opens **`HealthScreen`** to run and view real-time diagnostics across all 9 categories. |
259
+ | <kbd>S</kbd> | **Sync Workspace** | Opens **`SyncScreen`** to inspect `aiaddons.lock` diffs (missing, extra, mismatched) and reconcile. |
260
+ | <kbd>I</kbd> | **Install** | Installs selected add-on with interactive secret inputs and transactional commit. |
261
+ | <kbd>R</kbd> | **Remove** | Opens **`RemoveConfirmModal`** or **`DriftConfirmModal`** (if files were modified) to safely uninstall. |
262
+ | <kbd>U</kbd> | **Update** | Checks for newer versions and opens **`UpdatePlanModal`** for version-swap previews. |
263
+ | <kbd>C</kbd> | **Check Compat** | Evaluates compatibility in read-only mode and displays requirement details. |
264
+ | <kbd>P</kbd> | **Preview Plan** | Generates a dry-run plan showing exact operations without changing system state. |
265
+ | <kbd>Q</kbd> | **Quit** | Exits the TUI application. |
266
+
267
+ > [!NOTE]
268
+ > **Same Engine, Same Safety**: The TUI is a direct presentation wrapper around the exact same domain engines (`ExecutionEngine`, `TransactionWALManager`, `VerificationEngine`, `LockfileManager`) as the CLI. Every installation, update, and removal in the TUI includes full WAL crash safety, file locking, drift detection, secret masking, and automatic rollback on failure.
269
+
270
+ ---
271
+
272
+ ## CLI Reference
273
+
274
+ All commands support `--help` for option descriptions.
275
+
276
+ | Command | Description | Key Options |
277
+ | :--- | :--- | :--- |
278
+ | `aiaddons install [addon-ids...]` | Install one or more add-ons or generate a dry-run installation plan. | `--file` / `-f`, `--scope` / `-s`, `--agent` / `-a`, `--dry-run`, `--yes` / `-y`, `--json` / `-j`, `--registry` / `-r` |
279
+ | `aiaddons remove <addon-id>` | Remove an installed add-on with safety verification and rollback. | `--scope` / `-s`, `--agent` / `-a`, `--dry-run`, `--yes` / `-y`, `--force` / `-f`, `--json` / `-j`, `--registry` / `-r` |
280
+ | `aiaddons update [addon-id]` | Update installed add-on(s) with newer versions and rollback safety. | `--version` / `-v`, `--all` / `-A`, `--scope` / `-s`, `--agent` / `-a`, `--dry-run`, `--yes` / `-y`, `--json` / `-j`, `--registry` / `-r` |
281
+ | `aiaddons sync` | Synchronize workspace with `aiaddons.lock` or stack file. | `--file` / `-f`, `--scope` / `-s`, `--agent` / `-a`, `--prune`, `--update`, `--dry-run`, `--yes` / `-y`, `--json` / `-j`, `--registry` / `-r` |
282
+ | `aiaddons list` | List available add-ons in the registry. | `--type`, `--category`, `--agent`, `--json`, `--registry-dir` |
283
+ | `aiaddons search <query>` | Search add-ons by keyword, tag, ID, or description. | `--json`, `--registry-dir` |
284
+ | `aiaddons info <addon-id>` | Display detailed manifest metadata, publisher trust, and dependencies. | `--json`, `--registry-dir` |
285
+ | `aiaddons check <addon-id>` | Evaluate add-on compatibility against detected AI agents in read-only mode. | `--scope` (`global` \| `workspace`), `--agent`, `--json`, `--registry-dir` |
286
+ | `aiaddons agents` | Detect and display status, version, and config paths for local AI agents. | `--json`, `--project-path` |
287
+ | `aiaddons doctor` | Run comprehensive diagnostics across registry, state, lockfile, WAL, and runtimes. | `--json`, `--project-path` |
288
+ | `aiaddons tui` | Launch the interactive Textual terminal user interface. | `--registry` / `-r` |
289
+ | `aiaddons version` | Print the current `aiaddons` version. | `--version` / `-v` |
290
+ | `aiaddons registry update` | Fetch and validate fresh registry metadata from remote HTTPS endpoint. | `--url`, `--cache-dir` |
291
+ | `aiaddons registry status` | Display cache health, last sync timestamp, and total cached manifests. | `--url`, `--cache-dir`, `--json` |
292
+ | `aiaddons registry list` | List cached add-ons (subcommand alias). | `--type`, `--category`, `--agent`, `--json` |
293
+ | `aiaddons registry search <query>` | Search cached add-ons (subcommand alias). | `--json` |
294
+ | `aiaddons registry info <addon-id>` | Inspect cached add-on details (subcommand alias). | `--json` |
295
+
296
+ ---
297
+
298
+ ## Authoring a Manifest
299
+
300
+ Add-ons are authored declaratively as YAML or JSON files conforming to the strict Pydantic `IntegrationManifest` schema (`extra = "forbid"`).
301
+
302
+ ### Minimal MCP Server Manifest (`github-mcp.yaml`)
303
+
304
+ ```yaml
305
+ id: github-mcp
306
+ name: GitHub MCP Server
307
+ version: 1.2.0
308
+ description: Model Context Protocol server for searching code, managing PRs, and inspecting issues.
309
+ documentation_url: https://github.com/modelcontextprotocol/servers
310
+ license: MIT
311
+ category: developer-tools
312
+ integration_type: mcp
313
+ target_agents:
314
+ - claude-code
315
+ - codex
316
+ supported_scopes:
317
+ - global
318
+ - workspace
319
+ source:
320
+ source_type: package
321
+ package_name: "@modelcontextprotocol/server-github"
322
+ checksum: "sha256:e3b0c44298fc1c149afbf4c8996fb92427ae41e4649b934ca495991b7852b855"
323
+ dependencies:
324
+ - name: npx
325
+ type: cli
326
+ required: true
327
+ trust:
328
+ verification_status: verified
329
+ publisher:
330
+ name: Model Context Protocol Team
331
+ url: https://github.com/modelcontextprotocol
332
+ declared_verified: true
333
+ allowed_executables:
334
+ - npx
335
+ tags:
336
+ - github
337
+ - mcp
338
+ - git
339
+ handler_spec:
340
+ mcp:
341
+ transport: stdio
342
+ runtime: npx
343
+ package_name: "@modelcontextprotocol/server-github"
344
+ env_vars:
345
+ - name: GITHUB_PERSONAL_ACCESS_TOKEN
346
+ required: true
347
+ secret: true
348
+ description: GitHub Personal Access Token with repository scope
349
+ ```
350
+
351
+ ### Minimal Agent Skill Manifest (`caveman.yaml`)
352
+
353
+ ```yaml
354
+ id: caveman
355
+ name: Caveman Output Compression Skill
356
+ version: 0.8.1
357
+ description: Standardized refactoring patterns and clean architecture workflows for coding agents.
358
+ documentation_url: https://aiaddons.dev/skills/refactoring
359
+ license: Apache-2.0
360
+ category: workflow
361
+ integration_type: skill
362
+ target_agents:
363
+ - claude-code
364
+ supported_scopes:
365
+ - workspace
366
+ source:
367
+ source_type: git
368
+ url: https://github.com/JuliusBrussee/caveman.git
369
+ ref: v0.8.1
370
+ commit_sha: 4a2d8f9e1c3b5a7d9e0f2a4b6c8d0e1f2a3b4c5d
371
+ dependencies: []
372
+ trust:
373
+ verification_status: community
374
+ publisher:
375
+ name: Community Developers
376
+ declared_verified: false
377
+ tags:
378
+ - refactoring
379
+ - skill
380
+ - clean-code
381
+ handler_spec:
382
+ skill:
383
+ skill_file: SKILL.md
384
+ supporting_files: []
385
+ ```
386
+
387
+ ---
388
+
389
+
390
+ ## Hardening & Reliability
391
+
392
+ As part of the project's evolution, `aiaddons` underwent a dedicated manual QA pass that identified and resolved real-world edge cases not caught by automated testing. This quality investment resulted in significant improvements to transactional safety—particularly around MCP server installation (preventing daemon-process hangs during failed installations), secret resolution correctness fixes across different terminal environments, and robust cross-platform input handling. Manual QA and real-world hardening remain integral parts of the project's ongoing quality lifecycle.
393
+
394
+ ## Project Status
395
+
396
+ `aiaddons` has achieved the complete **v1.0 Milestone**. All core package manager workflows—declarative installation, batch stack files, transactional removal with drift detection, automated updates with version swapping, workspace lockfile synchronization, 9-category system diagnostics, and an interactive Textual TUI—are fully operational and tested.
397
+
398
+ ### Test Suite Status
399
+
400
+ ```text
401
+ =========================== test session starts ============================
402
+ platform win32 -- Python 3.12.13, pytest-9.1.1, pluggy-1.5.0
403
+ rootdir: C:\Users\Anuj Kumar\Desktop\add_ons
404
+ configfile: pyproject.toml
405
+ testpaths: tests
406
+ collected 505 items
407
+
408
+ 501 passed, 4 skipped in 46.36s
409
+ =========================== lint & typecheck ===============================
410
+ Ruff Linter: All checks passed!
411
+ Mypy Strict: Checked 93 source files
412
+ ```
413
+
414
+ *(Note: 4 unit tests skipped conditionally on Windows due to symlink creation privileges without Developer Mode).*
415
+
416
+ *(Note: Manual QA is actively incorporated into the project's ongoing quality and release process to ensure real-world reliability beyond automated testing).*
417
+
418
+ ### Completed (v1.0 Milestone)
419
+
420
+ * [x] **Declarative Installation & Batch Stacks**: Single and multi-package installs (`aiaddons install <ids...>`) and `--file stack.yaml` with WAL rollback protection.
421
+ * [x] **Safe Transactional Removal**: `aiaddons remove <addon-id>` with configuration drift detection and inverse verification.
422
+ * [x] **Add-on Updates & Version Swapping**: `aiaddons update [--all]` with SemVer resolution and atomic transaction rollback.
423
+ * [x] **Workspace Sync**: `aiaddons sync [--prune] [--update]` restoring and reconciling `aiaddons.lock`.
424
+ * [x] **Interactive Textual TUI**: Add-on browser, `HealthScreen` diagnostics, `SyncScreen` reconciliation, drift/update modals, and toast notifications.
425
+ * [x] **System Diagnostics**: `aiaddons doctor` covering 9 critical health categories across runtimes, state, lockfile, and WAL.
426
+ * [x] **Remote Registry Synchronization**: `aiaddons registry update/status` with HTTP caching and fallback.
427
+
428
+ ### Future Roadmap (v2.0)
429
+
430
+ * [ ] **Additional Agent Adapters**: Official adapter implementations for Cursor, Windsurf, Gemini CLI, and Aider.
431
+ * [ ] **Manifest Publishing & Cryptographic Signatures**: `aiaddons publish` for validating, signing, and submitting manifests to signed remote registries.
432
+ * [ ] **Sandboxed MCP Execution**: Containerized / WebAssembly runtime environments for isolated MCP server execution.
433
+
434
+ ---
435
+
436
+ ## Contributing
437
+
438
+ Contributions are welcome! Please ensure that any changes adhere to our engineering rules and architectural standards (see `AGENTS.md`):
439
+
440
+ 1. **Keep presentation decoupled**: Core domain models and engines (`core/`) must never import UI code (`cli/`, `tui/`).
441
+ 2. **Never hardcode add-ons**: Integrations must be strictly registry-driven.
442
+ 3. **Ensure full typing and test coverage**:
443
+ ```bash
444
+ # Run tests
445
+ pytest
446
+
447
+ # Run type checks
448
+ mypy src
449
+
450
+ # Run linter
451
+ ruff check src tests
452
+ ```
453
+
454
+ ---
455
+
456
+ ## License
457
+
458
+ This project is licensed under the **MIT License**. See [`pyproject.toml`](pyproject.toml) for details.