code-agnostic 0.1.0__py3-none-any.whl
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.
- code_agnostic/__init__.py +3 -0
- code_agnostic/__main__.py +275 -0
- code_agnostic/apps.py +71 -0
- code_agnostic/constants.py +19 -0
- code_agnostic/errors.py +29 -0
- code_agnostic/executor.py +158 -0
- code_agnostic/mappers/__init__.py +4 -0
- code_agnostic/mappers/base.py +17 -0
- code_agnostic/mappers/opencode.py +50 -0
- code_agnostic/models.py +179 -0
- code_agnostic/planner.py +212 -0
- code_agnostic/repositories/__init__.py +13 -0
- code_agnostic/repositories/base.py +80 -0
- code_agnostic/repositories/common.py +162 -0
- code_agnostic/repositories/cursor.py +11 -0
- code_agnostic/repositories/opencode.py +83 -0
- code_agnostic/status.py +136 -0
- code_agnostic/tui/__init__.py +3 -0
- code_agnostic/tui/enums.py +24 -0
- code_agnostic/tui/renderers.py +79 -0
- code_agnostic/tui/sections.py +15 -0
- code_agnostic/tui/tables.py +201 -0
- code_agnostic/utils.py +53 -0
- code_agnostic/workspaces.py +45 -0
- code_agnostic-0.1.0.dist-info/METADATA +94 -0
- code_agnostic-0.1.0.dist-info/RECORD +30 -0
- code_agnostic-0.1.0.dist-info/WHEEL +5 -0
- code_agnostic-0.1.0.dist-info/entry_points.txt +2 -0
- code_agnostic-0.1.0.dist-info/licenses/LICENSE +674 -0
- code_agnostic-0.1.0.dist-info/top_level.txt +1 -0
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: code-agnostic
|
|
3
|
+
Version: 0.1.0
|
|
4
|
+
Summary: Centralized hub for LLM coding config: MCP, skills, rules, and agents.
|
|
5
|
+
Requires-Python: >=3.9
|
|
6
|
+
Description-Content-Type: text/markdown
|
|
7
|
+
License-File: LICENSE
|
|
8
|
+
Requires-Dist: click
|
|
9
|
+
Requires-Dist: rich
|
|
10
|
+
Provides-Extra: dev
|
|
11
|
+
Requires-Dist: pre-commit>=4.0; extra == "dev"
|
|
12
|
+
Requires-Dist: pytest>=8.0; extra == "dev"
|
|
13
|
+
Requires-Dist: jsonschema>=4.0; extra == "dev"
|
|
14
|
+
Requires-Dist: ruff>=0.8.0; extra == "dev"
|
|
15
|
+
Requires-Dist: mypy>=1.11; extra == "dev"
|
|
16
|
+
Dynamic: license-file
|
|
17
|
+
|
|
18
|
+
# Code-agnostic
|
|
19
|
+
|
|
20
|
+
Centralized hub for LLM coding config: MCP, skills, rules, and agents.
|
|
21
|
+
|
|
22
|
+
`code-agnostic` is built around one idea: keep your AI coding setup in one place, then sync it into editor/app-specific layouts.
|
|
23
|
+
|
|
24
|
+
Similar to how OpenCode is provider-agnostic for models, `code-agnostic` aims to be app-agnostic for coding clients. App selection is intentionally limited for now and expanding over time.
|
|
25
|
+
|
|
26
|
+
## App Feature Matrix
|
|
27
|
+
|
|
28
|
+
| App | MCP Sync | Skills Sync | Agents Sync | Rules Sync | Workspace Sync |
|
|
29
|
+
| --- | --- | --- | --- | --- | --- |
|
|
30
|
+
| OpenCode / OpenCode Desktop | ✅ | ✅ | ✅ | ✅ | ✅ |
|
|
31
|
+
| Cursor IDE | ⚠️ | ❌ | ❌ | ❌ | ❌ |
|
|
32
|
+
| Claude Code | ❌ | ❌ | ❌ | ❌ | ❌ |
|
|
33
|
+
| Codex CLI | ❌ | ❌ | ❌ | ❌ | ❌ |
|
|
34
|
+
| Cursor CLI | ❌ | ❌ | ❌ | ❌ | ❌ |
|
|
35
|
+
|
|
36
|
+
- ✅ supported
|
|
37
|
+
- ⚠️ partial support (Cursor MCP work is planned, including limited tool enable/disable compatibility)
|
|
38
|
+
- ❌ not supported yet
|
|
39
|
+
|
|
40
|
+
## Install
|
|
41
|
+
|
|
42
|
+
```bash
|
|
43
|
+
uv tool install code-agnostic
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
Or run without installing:
|
|
47
|
+
|
|
48
|
+
```bash
|
|
49
|
+
uvx code-agnostic
|
|
50
|
+
```
|
|
51
|
+
|
|
52
|
+
## Project Status
|
|
53
|
+
|
|
54
|
+
- WIP: CLI surface is evolving quickly between iterations.
|
|
55
|
+
- WIP: file layout and config schemas are not finalized yet.
|
|
56
|
+
- Prefer using current help output for exact command behavior.
|
|
57
|
+
|
|
58
|
+
## Source Of Truth
|
|
59
|
+
|
|
60
|
+
Shared config root defaults to `~/.config/code-agnostic`.
|
|
61
|
+
|
|
62
|
+
Expected layout:
|
|
63
|
+
|
|
64
|
+
- `~/.config/code-agnostic/config/mcp.base.json`
|
|
65
|
+
- `~/.config/code-agnostic/config/opencode.base.json`
|
|
66
|
+
- `~/.config/code-agnostic/skills/<skill>/SKILL.md`
|
|
67
|
+
- `~/.config/code-agnostic/agents/*`
|
|
68
|
+
|
|
69
|
+
## Synced Targets (Current)
|
|
70
|
+
|
|
71
|
+
- `~/.config/opencode/opencode.json`
|
|
72
|
+
- `~/.config/opencode/skills/*`
|
|
73
|
+
- `~/.config/opencode/agents/*` (or `~/.config/opencode/agent/*` if that directory already exists)
|
|
74
|
+
|
|
75
|
+
Cursor paths and payloads are intentionally gated behind app toggles while support is being finalized.
|
|
76
|
+
|
|
77
|
+
## Notes
|
|
78
|
+
|
|
79
|
+
- App sync is opt-in: apps start disabled by default to reduce accidental data changes.
|
|
80
|
+
- OpenCode sync normalizes MCP entries from `mcp.base.json` into OpenCode-compatible `mcp` config.
|
|
81
|
+
- Workspace sync propagates a root rules file (`AGENTS.md`/`CLAUDE.md`) into git repos as symlinked `AGENTS.md`.
|
|
82
|
+
- Plan/apply/status behavior is stable in intent, but UX and command shape are still being refined.
|
|
83
|
+
- Schema validation is part of tests for generated OpenCode config; Cursor schema coverage is intentionally scoped to fields we manage.
|
|
84
|
+
|
|
85
|
+
## Roadmap
|
|
86
|
+
|
|
87
|
+
- Add full rules sync: current behavior only propagates root `AGENTS.md` at global/workspace levels; planned direction is a dedicated `rules/` directory (syntax still being investigated).
|
|
88
|
+
- Finish Cursor IDE support.
|
|
89
|
+
- Expand MCP sync to include auth configuration, not only tool definitions.
|
|
90
|
+
- Add import flows (for example, importing Claude skills) into `code-agnostic` as an onboarding path.
|
|
91
|
+
- Make mappers bidirectional for import/export use cases, with DTO-based transformations.
|
|
92
|
+
- Add dynamic inline TUI selectors for tool enable/disable and import selection (similar interaction model to Mole CLI).
|
|
93
|
+
- Enable shell auto-complete.
|
|
94
|
+
- Explore an optional full-size `textual` TUI mode (`code-agnostic` opens command palette + menus) while keeping one-liner CLI workflows for non-interactive use.
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
code_agnostic/__init__.py,sha256=4t_crzhrLum--oyowUMxtjBTzUtWp7oRTF22ewEvJG4,49
|
|
2
|
+
code_agnostic/__main__.py,sha256=j1bS33DMnD7WwLAcDoB6ZHDh3OLrJm4a0azuVlbJmpM,9266
|
|
3
|
+
code_agnostic/apps.py,sha256=w_yjJXtXW8RdXUePG02DNAPukER27e-yyAzb2Iyioh0,2377
|
|
4
|
+
code_agnostic/constants.py,sha256=Xo6BBVR1fgg9HjmKGbw6XJwj766vrv013I6JfU3wPIE,455
|
|
5
|
+
code_agnostic/errors.py,sha256=ONRlwpRHxzGkbByC_qT3q9QelJrebUyDknXeN4FXfUo,897
|
|
6
|
+
code_agnostic/executor.py,sha256=OLbpCVDCJp1TB9-wJ01Hi_xqIq-N3AjXpoiQTIVl3Ko,6080
|
|
7
|
+
code_agnostic/models.py,sha256=DBNWOxgNxJDdKla_P1YTpflBFNsm9X7DN5BZnc7l21I,4187
|
|
8
|
+
code_agnostic/planner.py,sha256=77a6BWYs09xGEPswlKEsjeHRZiQoRJobMlJ48KKMa7s,9496
|
|
9
|
+
code_agnostic/status.py,sha256=2RjFod44_XpJXAJGbgEMRc7xaIFy8c0AP1LCXltUcUI,5204
|
|
10
|
+
code_agnostic/utils.py,sha256=C8hrsxF3IB4lY9-FtXPsLmwa6kEGzGhkmyAmZKBwibg,1348
|
|
11
|
+
code_agnostic/workspaces.py,sha256=SCizn02uYD7hPGO3_ufB_AsF7xkcW6OKZQuEw7mWMDI,1638
|
|
12
|
+
code_agnostic/mappers/__init__.py,sha256=WO66l3O5KwWTSqdzsa2l61jkNCIurH6-2NcJRigOeTo,218
|
|
13
|
+
code_agnostic/mappers/base.py,sha256=0AU4MoWwqFPFZvq7LOt3E56zIi5Gl90gFIULrllNy_s,448
|
|
14
|
+
code_agnostic/mappers/opencode.py,sha256=6MoeDf_piGGJlGQ9QF4-gHoQYNWpHpr1pD8LDqQeEww,1590
|
|
15
|
+
code_agnostic/repositories/__init__.py,sha256=m84DDe3QkXpjrlBlB1KQ2N1C3cwJkr3nqmiziMTd3Sg,457
|
|
16
|
+
code_agnostic/repositories/base.py,sha256=1zOZEhHiDtgwfnPegE1BJuLR-hosLSJtySdm5k_3gXw,1965
|
|
17
|
+
code_agnostic/repositories/common.py,sha256=dbQ-hFs3eCLcISfSjtycAN7d9oSmE8u9m9iAKCFY8F0,6318
|
|
18
|
+
code_agnostic/repositories/cursor.py,sha256=pPrdadBqwFWKac0fw2tAY3g3PIVVg95FuBcXCBZAK0o,264
|
|
19
|
+
code_agnostic/repositories/opencode.py,sha256=pAKgF1fzWNeq4qBdG5wSsyNR8rcZ4al9kWLQRPgxILI,2816
|
|
20
|
+
code_agnostic/tui/__init__.py,sha256=BIB98U_w_q3bNDXM7DPC1k6vIAwo4kTUO0v-FLNmavs,83
|
|
21
|
+
code_agnostic/tui/enums.py,sha256=U6gke27KrbRtx1g4G1cqXjW7Pn7-eUZPFp0fJe8Nci0,550
|
|
22
|
+
code_agnostic/tui/renderers.py,sha256=n9UztP6Q3YOMcM_S-LpXeH8X_LW8RyKvSMlkFBnnO18,4048
|
|
23
|
+
code_agnostic/tui/sections.py,sha256=tD15NqEtUuA_qc_qD89OF2KbJdsrGsgdcSxcWgoSUMw,494
|
|
24
|
+
code_agnostic/tui/tables.py,sha256=Xc0eC3uqYgR0bX0YwE2Ol-yMlUQi2Tw9trpRuBz33_4,7395
|
|
25
|
+
code_agnostic-0.1.0.dist-info/licenses/LICENSE,sha256=rmhmJ_ZGt4xbq7D0vROWVFCx1nyEvkX6nIyJAnHeYG0,35151
|
|
26
|
+
code_agnostic-0.1.0.dist-info/METADATA,sha256=D6X0Ns78byX1EFNn6h2gc7Qj0INSKKuDPJ_nc3lMySk,3735
|
|
27
|
+
code_agnostic-0.1.0.dist-info/WHEEL,sha256=YCfwYGOYMi5Jhw2fU4yNgwErybb2IX5PEwBKV4ZbdBo,91
|
|
28
|
+
code_agnostic-0.1.0.dist-info/entry_points.txt,sha256=pdy9jXYCXCP4_U53LN2FQbQplvnD6DJ9X6zHpQeT_WA,62
|
|
29
|
+
code_agnostic-0.1.0.dist-info/top_level.txt,sha256=f8jfkcTVe9weUWBQ52dH3DNJHIL56bjRu7w68XVSxQM,14
|
|
30
|
+
code_agnostic-0.1.0.dist-info/RECORD,,
|