pactkit-codex 4.0.0__tar.gz → 4.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 (18) hide show
  1. {pactkit_codex-4.0.0/src/pactkit_codex.egg-info → pactkit_codex-4.1.0}/PKG-INFO +2 -2
  2. {pactkit_codex-4.0.0 → pactkit_codex-4.1.0}/pyproject.toml +2 -2
  3. {pactkit_codex-4.0.0 → pactkit_codex-4.1.0}/src/pactkit_codex/deployer.py +22 -8
  4. {pactkit_codex-4.0.0 → pactkit_codex-4.1.0/src/pactkit_codex.egg-info}/PKG-INFO +2 -2
  5. {pactkit_codex-4.0.0 → pactkit_codex-4.1.0}/src/pactkit_codex.egg-info/requires.txt +1 -1
  6. {pactkit_codex-4.0.0 → pactkit_codex-4.1.0}/LICENSE +0 -0
  7. {pactkit_codex-4.0.0 → pactkit_codex-4.1.0}/README.md +0 -0
  8. {pactkit_codex-4.0.0 → pactkit_codex-4.1.0}/setup.cfg +0 -0
  9. {pactkit_codex-4.0.0 → pactkit_codex-4.1.0}/src/pactkit_codex/__init__.py +0 -0
  10. {pactkit_codex-4.0.0 → pactkit_codex-4.1.0}/src/pactkit_codex/declarations.py +0 -0
  11. {pactkit_codex-4.0.0 → pactkit_codex-4.1.0}/src/pactkit_codex/enforcement.py +0 -0
  12. {pactkit_codex-4.0.0 → pactkit_codex-4.1.0}/src/pactkit_codex.egg-info/SOURCES.txt +0 -0
  13. {pactkit_codex-4.0.0 → pactkit_codex-4.1.0}/src/pactkit_codex.egg-info/dependency_links.txt +0 -0
  14. {pactkit_codex-4.0.0 → pactkit_codex-4.1.0}/src/pactkit_codex.egg-info/entry_points.txt +0 -0
  15. {pactkit_codex-4.0.0 → pactkit_codex-4.1.0}/src/pactkit_codex.egg-info/top_level.txt +0 -0
  16. {pactkit_codex-4.0.0 → pactkit_codex-4.1.0}/tests/test_capability_contract.py +0 -0
  17. {pactkit_codex-4.0.0 → pactkit_codex-4.1.0}/tests/test_host_body_snapshot.py +0 -0
  18. {pactkit_codex-4.0.0 → pactkit_codex-4.1.0}/tests/test_profile_contract.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pactkit-codex
3
- Version: 4.0.0
3
+ Version: 4.1.0
4
4
  Summary: PactKit adapter for OpenAI Codex CLI
5
5
  Author: Slim
6
6
  License: MIT
@@ -21,7 +21,7 @@ Classifier: Topic :: Software Development :: Quality Assurance
21
21
  Requires-Python: >=3.10
22
22
  Description-Content-Type: text/markdown
23
23
  License-File: LICENSE
24
- Requires-Dist: pactkit<4.1.0,>=4.0.0
24
+ Requires-Dist: pactkit<4.2.0,>=4.1.0
25
25
  Requires-Dist: tomli>=1.1.0; python_version < "3.11"
26
26
  Dynamic: license-file
27
27
 
@@ -4,13 +4,13 @@ build-backend = "setuptools.build_meta"
4
4
 
5
5
  [project]
6
6
  name = "pactkit-codex"
7
- version = "4.0.0"
7
+ version = "4.1.0"
8
8
  description = "PactKit adapter for OpenAI Codex CLI"
9
9
  readme = "README.md"
10
10
  license = {text = "MIT"}
11
11
  requires-python = ">=3.10"
12
12
  dependencies = [
13
- "pactkit>=4.0.0,<4.1.0",
13
+ "pactkit>=4.1.0,<4.2.0",
14
14
  "tomli>=1.1.0; python_version < '3.11'",
15
15
  ]
16
16
 
@@ -85,6 +85,8 @@ _CODEX_PROJECT_AGENTS_MD = """\
85
85
 
86
86
  ## Dev Commands
87
87
 
88
+ During development, run changed and mapped tests first (`pactkit regression --json <changed-files>`; a non-empty `not_run` means the result is partial). Run the full suite once at an explicit acceptance or release boundary.
89
+
88
90
  ```bash
89
91
  {dev_commands}
90
92
  ```
@@ -97,7 +99,7 @@ _CODEX_LOCAL_AGENTS_MD = """\
97
99
  """
98
100
 
99
101
  _STACK_DEV_COMMANDS = {
100
- "python": "# Run tests\npython3 -m pytest tests/ -v\n\n# Lint\nruff check src/ tests/",
102
+ "python": "# Full acceptance suite\npython3 -m pytest tests/ -v\n\n# Lint\nruff check src/ tests/",
101
103
  "node": "# Run tests\nnpm test\n\n# Lint\nnpm run lint",
102
104
  "go": "# Run tests\ngo test ./...\n\n# Lint\ngolangci-lint run",
103
105
  "java": "# Run tests\nmvn test\n\n# Lint\nmvn checkstyle:check",
@@ -156,15 +158,22 @@ class CodexDeployer(DeployerBase):
156
158
  "trust_review_command": None,
157
159
  }
158
160
 
159
- def deploy(self, config=None, target=None):
160
- """Deploy PactKit configuration for Codex CLI."""
161
+ def deploy(self, config=None, target=None, project_root=None, no_redetect=False):
162
+ """Deploy PactKit configuration for Codex CLI.
163
+
164
+ ``project_root`` is **not** the deploy root (``~/.codex`` is): it names
165
+ the project whose config and overlay are read, which used to resolve
166
+ from the caller's cwd. ``no_redetect`` is accepted because Core passes
167
+ it alongside; it is a no-op here — the stack probe only reads.
168
+ """
161
169
  codex_root = Path(target) if target else Path.home() / ".codex"
170
+ project_root = Path(project_root) if project_root is not None else Path.cwd()
162
171
 
163
172
  print("🚀 PactKit Codex CLI Deployment")
164
173
 
165
174
  from pactkit.config import find_pactkit_yaml
166
175
 
167
- project_yaml = find_pactkit_yaml()
176
+ project_yaml = find_pactkit_yaml(project_root)
168
177
  if config is not None:
169
178
  cfg = config
170
179
  elif project_yaml is not None:
@@ -174,7 +183,7 @@ class CodexDeployer(DeployerBase):
174
183
  cfg = load_config(project_yaml)
175
184
  else:
176
185
  cfg = {}
177
- cfg = activate_pactkit_maintainer_overlay(cfg, Path.cwd())
186
+ cfg = activate_pactkit_maintainer_overlay(cfg, project_root)
178
187
 
179
188
  enabled_skills = cfg.get("skills", sorted(VALID_SKILLS))
180
189
  enabled_commands = cfg.get("commands")
@@ -186,8 +195,8 @@ class CodexDeployer(DeployerBase):
186
195
  codex_root, enabled_skills, enabled_commands, cfg.get("rules", sorted(DEFAULT_RULE_IDS)),
187
196
  )
188
197
 
189
- project_root = Path.cwd() if target is None else None
190
- with rollback_paths(self._transaction_paths(codex_root, project_root)):
198
+ transaction_root = project_root if target is None else None # rollback scope
199
+ with rollback_paths(self._transaction_paths(codex_root, transaction_root)):
191
200
  self._cleanup_stale_command_references(
192
201
  codex_root, enabled_commands,
193
202
  cfg.get("rules", sorted(DEFAULT_RULE_IDS)),
@@ -219,7 +228,12 @@ class CodexDeployer(DeployerBase):
219
228
  self.generate_codex_config_toml(codex_root)
220
229
  self.remove_legacy_stop_hook(codex_root)
221
230
 
222
- if project_root is not None:
231
+ # Gate on `target is None`, not on `project_root is not None`: the
232
+ # two coincided only while `project_root` was *derived* from this
233
+ # condition, making it a flag as much as an identity. Separate them
234
+ # and `-C` reaches the identity while an explicit `-t` install still
235
+ # touches nothing outside its target (measured 2026-10-02).
236
+ if target is None:
223
237
  self.generate_codex_project_files(project_root)
224
238
 
225
239
  self.write_version_marker(codex_root)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: pactkit-codex
3
- Version: 4.0.0
3
+ Version: 4.1.0
4
4
  Summary: PactKit adapter for OpenAI Codex CLI
5
5
  Author: Slim
6
6
  License: MIT
@@ -21,7 +21,7 @@ Classifier: Topic :: Software Development :: Quality Assurance
21
21
  Requires-Python: >=3.10
22
22
  Description-Content-Type: text/markdown
23
23
  License-File: LICENSE
24
- Requires-Dist: pactkit<4.1.0,>=4.0.0
24
+ Requires-Dist: pactkit<4.2.0,>=4.1.0
25
25
  Requires-Dist: tomli>=1.1.0; python_version < "3.11"
26
26
  Dynamic: license-file
27
27
 
@@ -1,4 +1,4 @@
1
- pactkit<4.1.0,>=4.0.0
1
+ pactkit<4.2.0,>=4.1.0
2
2
 
3
3
  [:python_version < "3.11"]
4
4
  tomli>=1.1.0
File without changes
File without changes
File without changes