code-agnostic 0.3.17__tar.gz → 0.3.18__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.
- {code_agnostic-0.3.17 → code_agnostic-0.3.18}/PKG-INFO +4 -1
- {code_agnostic-0.3.17 → code_agnostic-0.3.18}/README.md +3 -0
- {code_agnostic-0.3.17 → code_agnostic-0.3.18}/code_agnostic/__init__.py +1 -1
- {code_agnostic-0.3.17 → code_agnostic-0.3.18}/code_agnostic/apps/apps_service.py +2 -1
- {code_agnostic-0.3.17 → code_agnostic-0.3.18}/code_agnostic/apps/codex/schema.json +325 -50
- {code_agnostic-0.3.17 → code_agnostic-0.3.18}/code_agnostic/cli/commands/apply.py +8 -2
- {code_agnostic-0.3.17 → code_agnostic-0.3.18}/code_agnostic/cli/commands/plan.py +14 -3
- {code_agnostic-0.3.17 → code_agnostic-0.3.18}/code_agnostic/planner.py +25 -22
- {code_agnostic-0.3.17 → code_agnostic-0.3.18}/code_agnostic/tui/renderers.py +13 -4
- {code_agnostic-0.3.17 → code_agnostic-0.3.18}/code_agnostic.egg-info/PKG-INFO +4 -1
- {code_agnostic-0.3.17 → code_agnostic-0.3.18}/pyproject.toml +1 -1
- {code_agnostic-0.3.17 → code_agnostic-0.3.18}/tests/test_cli_apply_apps.py +37 -3
- {code_agnostic-0.3.17 → code_agnostic-0.3.18}/tests/test_cli_apply_codex.py +4 -2
- {code_agnostic-0.3.17 → code_agnostic-0.3.18}/tests/test_cli_plan.py +12 -0
- {code_agnostic-0.3.17 → code_agnostic-0.3.18}/tests/test_workspace_config_sync.py +5 -1
- {code_agnostic-0.3.17 → code_agnostic-0.3.18}/LICENSE +0 -0
- {code_agnostic-0.3.17 → code_agnostic-0.3.18}/code_agnostic/__main__.py +0 -0
- {code_agnostic-0.3.17 → code_agnostic-0.3.18}/code_agnostic/agents/__init__.py +0 -0
- {code_agnostic-0.3.17 → code_agnostic-0.3.18}/code_agnostic/agents/claude.py +0 -0
- {code_agnostic-0.3.17 → code_agnostic-0.3.18}/code_agnostic/agents/codex.py +0 -0
- {code_agnostic-0.3.17 → code_agnostic-0.3.18}/code_agnostic/agents/compilers.py +0 -0
- {code_agnostic-0.3.17 → code_agnostic-0.3.18}/code_agnostic/agents/copilot.py +0 -0
- {code_agnostic-0.3.17 → code_agnostic-0.3.18}/code_agnostic/agents/models.py +0 -0
- {code_agnostic-0.3.17 → code_agnostic-0.3.18}/code_agnostic/agents/opencode.py +0 -0
- {code_agnostic-0.3.17 → code_agnostic-0.3.18}/code_agnostic/agents/parser.py +0 -0
- {code_agnostic-0.3.17 → code_agnostic-0.3.18}/code_agnostic/apps/__init__.py +0 -0
- {code_agnostic-0.3.17 → code_agnostic-0.3.18}/code_agnostic/apps/app_id.py +0 -0
- {code_agnostic-0.3.17 → code_agnostic-0.3.18}/code_agnostic/apps/claude/__init__.py +0 -0
- {code_agnostic-0.3.17 → code_agnostic-0.3.18}/code_agnostic/apps/claude/config_repository.py +0 -0
- {code_agnostic-0.3.17 → code_agnostic-0.3.18}/code_agnostic/apps/claude/mapper.py +0 -0
- {code_agnostic-0.3.17 → code_agnostic-0.3.18}/code_agnostic/apps/claude/service.py +0 -0
- {code_agnostic-0.3.17 → code_agnostic-0.3.18}/code_agnostic/apps/codex/__init__.py +0 -0
- {code_agnostic-0.3.17 → code_agnostic-0.3.18}/code_agnostic/apps/codex/config_repository.py +0 -0
- {code_agnostic-0.3.17 → code_agnostic-0.3.18}/code_agnostic/apps/codex/mapper.py +0 -0
- {code_agnostic-0.3.17 → code_agnostic-0.3.18}/code_agnostic/apps/codex/schema_repository.py +0 -0
- {code_agnostic-0.3.17 → code_agnostic-0.3.18}/code_agnostic/apps/codex/service.py +0 -0
- {code_agnostic-0.3.17 → code_agnostic-0.3.18}/code_agnostic/apps/common/__init__.py +0 -0
- {code_agnostic-0.3.17 → code_agnostic-0.3.18}/code_agnostic/apps/common/compiled_planning.py +0 -0
- {code_agnostic-0.3.17 → code_agnostic-0.3.18}/code_agnostic/apps/common/framework.py +0 -0
- {code_agnostic-0.3.17 → code_agnostic-0.3.18}/code_agnostic/apps/common/interfaces/__init__.py +0 -0
- {code_agnostic-0.3.17 → code_agnostic-0.3.18}/code_agnostic/apps/common/interfaces/mapper.py +0 -0
- {code_agnostic-0.3.17 → code_agnostic-0.3.18}/code_agnostic/apps/common/interfaces/repositories.py +0 -0
- {code_agnostic-0.3.17 → code_agnostic-0.3.18}/code_agnostic/apps/common/interfaces/service.py +0 -0
- {code_agnostic-0.3.17 → code_agnostic-0.3.18}/code_agnostic/apps/common/loader.py +0 -0
- {code_agnostic-0.3.17 → code_agnostic-0.3.18}/code_agnostic/apps/common/models.py +0 -0
- {code_agnostic-0.3.17 → code_agnostic-0.3.18}/code_agnostic/apps/common/schema.py +0 -0
- {code_agnostic-0.3.17 → code_agnostic-0.3.18}/code_agnostic/apps/common/symlink_planning.py +0 -0
- {code_agnostic-0.3.17 → code_agnostic-0.3.18}/code_agnostic/apps/common/utils.py +0 -0
- {code_agnostic-0.3.17 → code_agnostic-0.3.18}/code_agnostic/apps/copilot/__init__.py +0 -0
- {code_agnostic-0.3.17 → code_agnostic-0.3.18}/code_agnostic/apps/copilot/config_repository.py +0 -0
- {code_agnostic-0.3.17 → code_agnostic-0.3.18}/code_agnostic/apps/copilot/mapper.py +0 -0
- {code_agnostic-0.3.17 → code_agnostic-0.3.18}/code_agnostic/apps/copilot/service.py +0 -0
- {code_agnostic-0.3.17 → code_agnostic-0.3.18}/code_agnostic/apps/cursor/__init__.py +0 -0
- {code_agnostic-0.3.17 → code_agnostic-0.3.18}/code_agnostic/apps/cursor/config_repository.py +0 -0
- {code_agnostic-0.3.17 → code_agnostic-0.3.18}/code_agnostic/apps/cursor/mapper.py +0 -0
- {code_agnostic-0.3.17 → code_agnostic-0.3.18}/code_agnostic/apps/cursor/schema.json +0 -0
- {code_agnostic-0.3.17 → code_agnostic-0.3.18}/code_agnostic/apps/cursor/schema_repository.py +0 -0
- {code_agnostic-0.3.17 → code_agnostic-0.3.18}/code_agnostic/apps/cursor/service.py +0 -0
- {code_agnostic-0.3.17 → code_agnostic-0.3.18}/code_agnostic/apps/opencode/__init__.py +0 -0
- {code_agnostic-0.3.17 → code_agnostic-0.3.18}/code_agnostic/apps/opencode/config_repository.py +0 -0
- {code_agnostic-0.3.17 → code_agnostic-0.3.18}/code_agnostic/apps/opencode/mapper.py +0 -0
- {code_agnostic-0.3.17 → code_agnostic-0.3.18}/code_agnostic/apps/opencode/schema.json +0 -0
- {code_agnostic-0.3.17 → code_agnostic-0.3.18}/code_agnostic/apps/opencode/schema_repository.py +0 -0
- {code_agnostic-0.3.17 → code_agnostic-0.3.18}/code_agnostic/apps/opencode/service.py +0 -0
- {code_agnostic-0.3.17 → code_agnostic-0.3.18}/code_agnostic/cli/__init__.py +0 -0
- {code_agnostic-0.3.17 → code_agnostic-0.3.18}/code_agnostic/cli/aliases.py +0 -0
- {code_agnostic-0.3.17 → code_agnostic-0.3.18}/code_agnostic/cli/commands/__init__.py +0 -0
- {code_agnostic-0.3.17 → code_agnostic-0.3.18}/code_agnostic/cli/commands/agents.py +0 -0
- {code_agnostic-0.3.17 → code_agnostic-0.3.18}/code_agnostic/cli/commands/apps.py +0 -0
- {code_agnostic-0.3.17 → code_agnostic-0.3.18}/code_agnostic/cli/commands/explain_lossiness.py +0 -0
- {code_agnostic-0.3.17 → code_agnostic-0.3.18}/code_agnostic/cli/commands/import_.py +0 -0
- {code_agnostic-0.3.17 → code_agnostic-0.3.18}/code_agnostic/cli/commands/mcp.py +0 -0
- {code_agnostic-0.3.17 → code_agnostic-0.3.18}/code_agnostic/cli/commands/projects.py +0 -0
- {code_agnostic-0.3.17 → code_agnostic-0.3.18}/code_agnostic/cli/commands/restore.py +0 -0
- {code_agnostic-0.3.17 → code_agnostic-0.3.18}/code_agnostic/cli/commands/rules.py +0 -0
- {code_agnostic-0.3.17 → code_agnostic-0.3.18}/code_agnostic/cli/commands/skills.py +0 -0
- {code_agnostic-0.3.17 → code_agnostic-0.3.18}/code_agnostic/cli/commands/status.py +0 -0
- {code_agnostic-0.3.17 → code_agnostic-0.3.18}/code_agnostic/cli/commands/validate.py +0 -0
- {code_agnostic-0.3.17 → code_agnostic-0.3.18}/code_agnostic/cli/commands/workspaces.py +0 -0
- {code_agnostic-0.3.17 → code_agnostic-0.3.18}/code_agnostic/cli/helpers.py +0 -0
- {code_agnostic-0.3.17 → code_agnostic-0.3.18}/code_agnostic/cli/options.py +0 -0
- {code_agnostic-0.3.17 → code_agnostic-0.3.18}/code_agnostic/constants.py +0 -0
- {code_agnostic-0.3.17 → code_agnostic-0.3.18}/code_agnostic/core/__init__.py +0 -0
- {code_agnostic-0.3.17 → code_agnostic-0.3.18}/code_agnostic/core/project_repository.py +0 -0
- {code_agnostic-0.3.17 → code_agnostic-0.3.18}/code_agnostic/core/repository.py +0 -0
- {code_agnostic-0.3.17 → code_agnostic-0.3.18}/code_agnostic/core/workspace_repository.py +0 -0
- {code_agnostic-0.3.17 → code_agnostic-0.3.18}/code_agnostic/errors.py +0 -0
- {code_agnostic-0.3.17 → code_agnostic-0.3.18}/code_agnostic/executor.py +0 -0
- {code_agnostic-0.3.17 → code_agnostic-0.3.18}/code_agnostic/generated_artifacts.py +0 -0
- {code_agnostic-0.3.17 → code_agnostic-0.3.18}/code_agnostic/git_exclude_service.py +0 -0
- {code_agnostic-0.3.17 → code_agnostic-0.3.18}/code_agnostic/imports/__init__.py +0 -0
- {code_agnostic-0.3.17 → code_agnostic-0.3.18}/code_agnostic/imports/adapters.py +0 -0
- {code_agnostic-0.3.17 → code_agnostic-0.3.18}/code_agnostic/imports/filesystem.py +0 -0
- {code_agnostic-0.3.17 → code_agnostic-0.3.18}/code_agnostic/imports/models.py +0 -0
- {code_agnostic-0.3.17 → code_agnostic-0.3.18}/code_agnostic/imports/service.py +0 -0
- {code_agnostic-0.3.17 → code_agnostic-0.3.18}/code_agnostic/lossiness.py +0 -0
- {code_agnostic-0.3.17 → code_agnostic-0.3.18}/code_agnostic/mcp_service.py +0 -0
- {code_agnostic-0.3.17 → code_agnostic-0.3.18}/code_agnostic/models.py +0 -0
- {code_agnostic-0.3.17 → code_agnostic-0.3.18}/code_agnostic/project_artifacts.py +0 -0
- {code_agnostic-0.3.17 → code_agnostic-0.3.18}/code_agnostic/rules/__init__.py +0 -0
- {code_agnostic-0.3.17 → code_agnostic-0.3.18}/code_agnostic/rules/compilers.py +0 -0
- {code_agnostic-0.3.17 → code_agnostic-0.3.18}/code_agnostic/rules/models.py +0 -0
- {code_agnostic-0.3.17 → code_agnostic-0.3.18}/code_agnostic/rules/parser.py +0 -0
- {code_agnostic-0.3.17 → code_agnostic-0.3.18}/code_agnostic/rules/repository.py +0 -0
- {code_agnostic-0.3.17 → code_agnostic-0.3.18}/code_agnostic/skills/__init__.py +0 -0
- {code_agnostic-0.3.17 → code_agnostic-0.3.18}/code_agnostic/skills/compilers.py +0 -0
- {code_agnostic-0.3.17 → code_agnostic-0.3.18}/code_agnostic/skills/install_sources.py +0 -0
- {code_agnostic-0.3.17 → code_agnostic-0.3.18}/code_agnostic/skills/models.py +0 -0
- {code_agnostic-0.3.17 → code_agnostic-0.3.18}/code_agnostic/skills/parser.py +0 -0
- {code_agnostic-0.3.17 → code_agnostic-0.3.18}/code_agnostic/spec/__init__.py +0 -0
- {code_agnostic-0.3.17 → code_agnostic-0.3.18}/code_agnostic/spec/loaders.py +0 -0
- {code_agnostic-0.3.17 → code_agnostic-0.3.18}/code_agnostic/spec/schemas/agent.v1.schema.json +0 -0
- {code_agnostic-0.3.17 → code_agnostic-0.3.18}/code_agnostic/spec/schemas/mcp.base.schema.json +0 -0
- {code_agnostic-0.3.17 → code_agnostic-0.3.18}/code_agnostic/spec/schemas/mcp.v1.schema.json +0 -0
- {code_agnostic-0.3.17 → code_agnostic-0.3.18}/code_agnostic/spec/schemas/rule.v1.schema.json +0 -0
- {code_agnostic-0.3.17 → code_agnostic-0.3.18}/code_agnostic/spec/schemas/skill.v1.schema.json +0 -0
- {code_agnostic-0.3.17 → code_agnostic-0.3.18}/code_agnostic/status.py +0 -0
- {code_agnostic-0.3.17 → code_agnostic-0.3.18}/code_agnostic/tui/__init__.py +0 -0
- {code_agnostic-0.3.17 → code_agnostic-0.3.18}/code_agnostic/tui/enums.py +0 -0
- {code_agnostic-0.3.17 → code_agnostic-0.3.18}/code_agnostic/tui/import_selector.py +0 -0
- {code_agnostic-0.3.17 → code_agnostic-0.3.18}/code_agnostic/tui/sections.py +0 -0
- {code_agnostic-0.3.17 → code_agnostic-0.3.18}/code_agnostic/tui/tables.py +0 -0
- {code_agnostic-0.3.17 → code_agnostic-0.3.18}/code_agnostic/utils.py +0 -0
- {code_agnostic-0.3.17 → code_agnostic-0.3.18}/code_agnostic/validation.py +0 -0
- {code_agnostic-0.3.17 → code_agnostic-0.3.18}/code_agnostic/workspace_artifacts.py +0 -0
- {code_agnostic-0.3.17 → code_agnostic-0.3.18}/code_agnostic/workspaces.py +0 -0
- {code_agnostic-0.3.17 → code_agnostic-0.3.18}/code_agnostic.egg-info/SOURCES.txt +0 -0
- {code_agnostic-0.3.17 → code_agnostic-0.3.18}/code_agnostic.egg-info/dependency_links.txt +0 -0
- {code_agnostic-0.3.17 → code_agnostic-0.3.18}/code_agnostic.egg-info/entry_points.txt +0 -0
- {code_agnostic-0.3.17 → code_agnostic-0.3.18}/code_agnostic.egg-info/requires.txt +0 -0
- {code_agnostic-0.3.17 → code_agnostic-0.3.18}/code_agnostic.egg-info/top_level.txt +0 -0
- {code_agnostic-0.3.17 → code_agnostic-0.3.18}/setup.cfg +0 -0
- {code_agnostic-0.3.17 → code_agnostic-0.3.18}/tests/test_cli_agents.py +0 -0
- {code_agnostic-0.3.17 → code_agnostic-0.3.18}/tests/test_cli_aliases.py +0 -0
- {code_agnostic-0.3.17 → code_agnostic-0.3.18}/tests/test_cli_apply_cursor.py +0 -0
- {code_agnostic-0.3.17 → code_agnostic-0.3.18}/tests/test_cli_apply_target.py +0 -0
- {code_agnostic-0.3.17 → code_agnostic-0.3.18}/tests/test_cli_apps.py +0 -0
- {code_agnostic-0.3.17 → code_agnostic-0.3.18}/tests/test_cli_explain_lossiness.py +0 -0
- {code_agnostic-0.3.17 → code_agnostic-0.3.18}/tests/test_cli_flags.py +0 -0
- {code_agnostic-0.3.17 → code_agnostic-0.3.18}/tests/test_cli_git_exclude.py +0 -0
- {code_agnostic-0.3.17 → code_agnostic-0.3.18}/tests/test_cli_import.py +0 -0
- {code_agnostic-0.3.17 → code_agnostic-0.3.18}/tests/test_cli_import_interactive.py +0 -0
- {code_agnostic-0.3.17 → code_agnostic-0.3.18}/tests/test_cli_mcp.py +0 -0
- {code_agnostic-0.3.17 → code_agnostic-0.3.18}/tests/test_cli_module_organization.py +0 -0
- {code_agnostic-0.3.17 → code_agnostic-0.3.18}/tests/test_cli_projects.py +0 -0
- {code_agnostic-0.3.17 → code_agnostic-0.3.18}/tests/test_cli_restore.py +0 -0
- {code_agnostic-0.3.17 → code_agnostic-0.3.18}/tests/test_cli_rules.py +0 -0
- {code_agnostic-0.3.17 → code_agnostic-0.3.18}/tests/test_cli_skills.py +0 -0
- {code_agnostic-0.3.17 → code_agnostic-0.3.18}/tests/test_cli_status.py +0 -0
- {code_agnostic-0.3.17 → code_agnostic-0.3.18}/tests/test_cli_validate.py +0 -0
- {code_agnostic-0.3.17 → code_agnostic-0.3.18}/tests/test_cli_workspace_resolution.py +0 -0
- {code_agnostic-0.3.17 → code_agnostic-0.3.18}/tests/test_cli_workspaces.py +0 -0
- {code_agnostic-0.3.17 → code_agnostic-0.3.18}/tests/test_common_mcp_to_dto.py +0 -0
- {code_agnostic-0.3.17 → code_agnostic-0.3.18}/tests/test_common_repository.py +0 -0
- {code_agnostic-0.3.17 → code_agnostic-0.3.18}/tests/test_compiled_planning.py +0 -0
- {code_agnostic-0.3.17 → code_agnostic-0.3.18}/tests/test_dto_to_common_mcp.py +0 -0
- {code_agnostic-0.3.17 → code_agnostic-0.3.18}/tests/test_git_exclude_service.py +0 -0
- {code_agnostic-0.3.17 → code_agnostic-0.3.18}/tests/test_mcp_service.py +0 -0
- {code_agnostic-0.3.17 → code_agnostic-0.3.18}/tests/test_planner_executor.py +0 -0
- {code_agnostic-0.3.17 → code_agnostic-0.3.18}/tests/test_planner_rules.py +0 -0
- {code_agnostic-0.3.17 → code_agnostic-0.3.18}/tests/test_project_config_sync.py +0 -0
- {code_agnostic-0.3.17 → code_agnostic-0.3.18}/tests/test_skill_install_sources.py +0 -0
- {code_agnostic-0.3.17 → code_agnostic-0.3.18}/tests/test_symlink_planning.py +0 -0
- {code_agnostic-0.3.17 → code_agnostic-0.3.18}/tests/test_sync_plan_model.py +0 -0
- {code_agnostic-0.3.17 → code_agnostic-0.3.18}/tests/test_transactional_executor.py +0 -0
- {code_agnostic-0.3.17 → code_agnostic-0.3.18}/tests/test_utils.py +0 -0
- {code_agnostic-0.3.17 → code_agnostic-0.3.18}/tests/test_version.py +0 -0
- {code_agnostic-0.3.17 → code_agnostic-0.3.18}/tests/test_workspace_repo_status.py +0 -0
- {code_agnostic-0.3.17 → code_agnostic-0.3.18}/tests/test_workspaces.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: code-agnostic
|
|
3
|
-
Version: 0.3.
|
|
3
|
+
Version: 0.3.18
|
|
4
4
|
Summary: Centralized hub for LLM coding config: MCP, skills, rules, and agents.
|
|
5
5
|
Requires-Python: >=3.10
|
|
6
6
|
Description-Content-Type: text/markdown
|
|
@@ -305,7 +305,10 @@ code-agnostic workspaces list
|
|
|
305
305
|
|
|
306
306
|
Prevent synced paths from showing up in `git status`. Managed per-workspace with customizable patterns.
|
|
307
307
|
|
|
308
|
+
Writing `.git/info/exclude` is always explicit — `apply` does **not** touch it by default. Opt in per run with `apply --apply-excludes`, or use the standalone command:
|
|
309
|
+
|
|
308
310
|
```bash
|
|
311
|
+
code-agnostic apply --apply-excludes # apply + write excludes
|
|
309
312
|
code-agnostic workspaces git-exclude # all workspaces
|
|
310
313
|
code-agnostic workspaces git-exclude -w myproject # one workspace
|
|
311
314
|
code-agnostic workspaces exclude-add --pattern "*.generated" -w myproject
|
|
@@ -280,7 +280,10 @@ code-agnostic workspaces list
|
|
|
280
280
|
|
|
281
281
|
Prevent synced paths from showing up in `git status`. Managed per-workspace with customizable patterns.
|
|
282
282
|
|
|
283
|
+
Writing `.git/info/exclude` is always explicit — `apply` does **not** touch it by default. Opt in per run with `apply --apply-excludes`, or use the standalone command:
|
|
284
|
+
|
|
283
285
|
```bash
|
|
286
|
+
code-agnostic apply --apply-excludes # apply + write excludes
|
|
284
287
|
code-agnostic workspaces git-exclude # all workspaces
|
|
285
288
|
code-agnostic workspaces git-exclude -w myproject # one workspace
|
|
286
289
|
code-agnostic workspaces exclude-add --pattern "*.generated" -w myproject
|
|
@@ -84,7 +84,7 @@ class AppsService:
|
|
|
84
84
|
apps = self.load_apps()
|
|
85
85
|
return [name for name in self.available_apps() if apps.get(name, False)]
|
|
86
86
|
|
|
87
|
-
def plan_for_target(self, target: str) -> SyncPlan:
|
|
87
|
+
def plan_for_target(self, target: str, *, apply_excludes: bool = False) -> SyncPlan:
|
|
88
88
|
normalized = target.lower()
|
|
89
89
|
if normalized != "all" and not self.is_enabled(normalized):
|
|
90
90
|
return SyncPlan([], [], [f"{normalized} is disabled for sync."])
|
|
@@ -94,6 +94,7 @@ class AppsService:
|
|
|
94
94
|
core=self.core_repository,
|
|
95
95
|
app_services=app_services,
|
|
96
96
|
include_workspace=True,
|
|
97
|
+
include_git_excludes=apply_excludes,
|
|
97
98
|
).build()
|
|
98
99
|
if normalized == "all":
|
|
99
100
|
if (
|