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.
- {pactkit_codex-4.0.0/src/pactkit_codex.egg-info → pactkit_codex-4.1.0}/PKG-INFO +2 -2
- {pactkit_codex-4.0.0 → pactkit_codex-4.1.0}/pyproject.toml +2 -2
- {pactkit_codex-4.0.0 → pactkit_codex-4.1.0}/src/pactkit_codex/deployer.py +22 -8
- {pactkit_codex-4.0.0 → pactkit_codex-4.1.0/src/pactkit_codex.egg-info}/PKG-INFO +2 -2
- {pactkit_codex-4.0.0 → pactkit_codex-4.1.0}/src/pactkit_codex.egg-info/requires.txt +1 -1
- {pactkit_codex-4.0.0 → pactkit_codex-4.1.0}/LICENSE +0 -0
- {pactkit_codex-4.0.0 → pactkit_codex-4.1.0}/README.md +0 -0
- {pactkit_codex-4.0.0 → pactkit_codex-4.1.0}/setup.cfg +0 -0
- {pactkit_codex-4.0.0 → pactkit_codex-4.1.0}/src/pactkit_codex/__init__.py +0 -0
- {pactkit_codex-4.0.0 → pactkit_codex-4.1.0}/src/pactkit_codex/declarations.py +0 -0
- {pactkit_codex-4.0.0 → pactkit_codex-4.1.0}/src/pactkit_codex/enforcement.py +0 -0
- {pactkit_codex-4.0.0 → pactkit_codex-4.1.0}/src/pactkit_codex.egg-info/SOURCES.txt +0 -0
- {pactkit_codex-4.0.0 → pactkit_codex-4.1.0}/src/pactkit_codex.egg-info/dependency_links.txt +0 -0
- {pactkit_codex-4.0.0 → pactkit_codex-4.1.0}/src/pactkit_codex.egg-info/entry_points.txt +0 -0
- {pactkit_codex-4.0.0 → pactkit_codex-4.1.0}/src/pactkit_codex.egg-info/top_level.txt +0 -0
- {pactkit_codex-4.0.0 → pactkit_codex-4.1.0}/tests/test_capability_contract.py +0 -0
- {pactkit_codex-4.0.0 → pactkit_codex-4.1.0}/tests/test_host_body_snapshot.py +0 -0
- {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.
|
|
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.
|
|
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.
|
|
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.
|
|
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": "#
|
|
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,
|
|
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
|
-
|
|
190
|
-
with rollback_paths(self._transaction_paths(codex_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
|
-
|
|
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.
|
|
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.
|
|
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
|
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|