pactkit-opencode 2.9.1__tar.gz → 2.9.2__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_opencode-2.9.1 → pactkit_opencode-2.9.2}/PKG-INFO +1 -1
- {pactkit_opencode-2.9.1 → pactkit_opencode-2.9.2}/pyproject.toml +1 -1
- {pactkit_opencode-2.9.1 → pactkit_opencode-2.9.2}/src/pactkit_opencode/deployer.py +1 -1
- {pactkit_opencode-2.9.1 → pactkit_opencode-2.9.2}/src/pactkit_opencode.egg-info/PKG-INFO +1 -1
- {pactkit_opencode-2.9.1 → pactkit_opencode-2.9.2}/tests/test_bug035_opencode_dual_layer.py +22 -5
- {pactkit_opencode-2.9.1 → pactkit_opencode-2.9.2}/tests/test_story071_opencode_config_parity.py +15 -6
- {pactkit_opencode-2.9.1 → pactkit_opencode-2.9.2}/tests/test_story073_command_model_routing.py +14 -4
- {pactkit_opencode-2.9.1 → pactkit_opencode-2.9.2}/README.md +0 -0
- {pactkit_opencode-2.9.1 → pactkit_opencode-2.9.2}/setup.cfg +0 -0
- {pactkit_opencode-2.9.1 → pactkit_opencode-2.9.2}/src/pactkit_opencode/__init__.py +0 -0
- {pactkit_opencode-2.9.1 → pactkit_opencode-2.9.2}/src/pactkit_opencode.egg-info/SOURCES.txt +0 -0
- {pactkit_opencode-2.9.1 → pactkit_opencode-2.9.2}/src/pactkit_opencode.egg-info/dependency_links.txt +0 -0
- {pactkit_opencode-2.9.1 → pactkit_opencode-2.9.2}/src/pactkit_opencode.egg-info/entry_points.txt +0 -0
- {pactkit_opencode-2.9.1 → pactkit_opencode-2.9.2}/src/pactkit_opencode.egg-info/requires.txt +0 -0
- {pactkit_opencode-2.9.1 → pactkit_opencode-2.9.2}/src/pactkit_opencode.egg-info/top_level.txt +0 -0
- {pactkit_opencode-2.9.1 → pactkit_opencode-2.9.2}/tests/test_deploy_opencode_parity.py +0 -0
- {pactkit_opencode-2.9.1 → pactkit_opencode-2.9.2}/tests/test_story069_opencode_format.py +0 -0
- {pactkit_opencode-2.9.1 → pactkit_opencode-2.9.2}/tests/test_story070_opencode_compliance.py +0 -0
|
@@ -113,7 +113,7 @@ class OpenCodeDeployer(DeployerBase):
|
|
|
113
113
|
if replaced != content:
|
|
114
114
|
atomic_write(cmd_md, replaced)
|
|
115
115
|
|
|
116
|
-
n_rules = _deploy_rules(opencode_root, enabled_rules)
|
|
116
|
+
n_rules = _deploy_rules(opencode_root, enabled_rules, profile=self.profile)
|
|
117
117
|
self._deploy_agents_md_inline(opencode_root)
|
|
118
118
|
|
|
119
119
|
providers = self._load_opencode_providers(opencode_root)
|
|
@@ -60,18 +60,35 @@ class TestR3ProjectInitOpencodeDetection:
|
|
|
60
60
|
"""R3: /project-init playbook must detect OpenCode environment."""
|
|
61
61
|
|
|
62
62
|
def test_project_init_contains_opencode_detection(self):
|
|
63
|
-
"""project-init.md contains OpenCode
|
|
63
|
+
"""project-init.md rendered for OpenCode contains 'OpenCode' and 'opencode'.
|
|
64
|
+
|
|
65
|
+
After STORY-slim-074 DIP refactor, the raw template uses {DISPLAY_NAME} /
|
|
66
|
+
{FORMAT_NAME} placeholders. The rendered output (via _render_prompt) is
|
|
67
|
+
what gets deployed and must contain the format-specific strings.
|
|
68
|
+
"""
|
|
69
|
+
from pactkit.generators.deployer import _render_prompt
|
|
70
|
+
from pactkit.profiles import get_profile
|
|
64
71
|
from pactkit.prompts.commands import COMMANDS_CONTENT
|
|
65
72
|
|
|
66
|
-
|
|
73
|
+
profile = get_profile("opencode")
|
|
74
|
+
content = _render_prompt(COMMANDS_CONTENT["project-init.md"], profile)
|
|
67
75
|
assert "opencode" in content.lower() or "OpenCode" in content
|
|
68
76
|
|
|
69
77
|
def test_project_init_contains_opencode_json_generation(self):
|
|
70
|
-
"""project-init.md
|
|
78
|
+
"""project-init.md template references format config via {PACTKIT_YAML} placeholder.
|
|
79
|
+
|
|
80
|
+
After STORY-slim-074 DIP refactor, opencode-specific paths are expressed as
|
|
81
|
+
template variables ({PACTKIT_YAML}, {FORMAT_NAME}) rather than hardcoded strings.
|
|
82
|
+
The rendered output for opencode will contain '.opencode/pactkit.yaml'.
|
|
83
|
+
"""
|
|
84
|
+
from pactkit.generators.deployer import _render_prompt
|
|
85
|
+
from pactkit.profiles import get_profile
|
|
71
86
|
from pactkit.prompts.commands import COMMANDS_CONTENT
|
|
72
87
|
|
|
73
|
-
|
|
74
|
-
|
|
88
|
+
profile = get_profile("opencode")
|
|
89
|
+
content = _render_prompt(COMMANDS_CONTENT["project-init.md"], profile)
|
|
90
|
+
# {PACTKIT_YAML} renders to '.opencode/pactkit.yaml' for opencode format
|
|
91
|
+
assert ".opencode/pactkit.yaml" in content or "pactkit.yaml" in content
|
|
75
92
|
|
|
76
93
|
|
|
77
94
|
# ===========================================================================
|
{pactkit_opencode-2.9.1 → pactkit_opencode-2.9.2}/tests/test_story071_opencode_config_parity.py
RENAMED
|
@@ -91,16 +91,25 @@ class TestAC3PreserveFields:
|
|
|
91
91
|
|
|
92
92
|
|
|
93
93
|
class TestAC4PlaybookPactkitYaml:
|
|
94
|
-
"""AC4: project-init playbook explains pactkit.yaml stays in .claude
|
|
94
|
+
"""AC4: project-init playbook explains pactkit.yaml stays in .claude/ (classic) or .opencode/ (OpenCode)."""
|
|
95
95
|
|
|
96
96
|
def test_playbook_mentions_pactkit_yaml_location(self):
|
|
97
|
-
"""project-init playbook references pactkit.yaml in .claude
|
|
97
|
+
"""project-init playbook rendered for classic format references pactkit.yaml in .claude/.
|
|
98
|
+
|
|
99
|
+
After STORY-slim-074 DIP refactor, config paths are expressed as {PACTKIT_YAML} and
|
|
100
|
+
{PROJECT_CONFIG_DIR} template variables. The raw template always contains 'pactkit.yaml'
|
|
101
|
+
(as part of the {PACTKIT_YAML} placeholder), and the rendered classic output contains '.claude'.
|
|
102
|
+
"""
|
|
103
|
+
from pactkit.generators.deployer import _render_prompt
|
|
104
|
+
from pactkit.profiles import get_profile
|
|
98
105
|
from pactkit.prompts import COMMANDS_CONTENT
|
|
99
106
|
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
107
|
+
raw_content = COMMANDS_CONTENT["project-init.md"]
|
|
108
|
+
# Raw template always references pactkit.yaml via the {PACTKIT_YAML} variable name
|
|
109
|
+
assert "pactkit.yaml" in raw_content
|
|
110
|
+
# Rendered for classic: {PROJECT_CONFIG_DIR} → '.claude', {PACTKIT_YAML} → '.claude/pactkit.yaml'
|
|
111
|
+
classic_content = _render_prompt(raw_content, get_profile("classic"))
|
|
112
|
+
assert ".claude" in classic_content
|
|
104
113
|
|
|
105
114
|
|
|
106
115
|
# ===========================================================================
|
{pactkit_opencode-2.9.1 → pactkit_opencode-2.9.2}/tests/test_story073_command_model_routing.py
RENAMED
|
@@ -127,16 +127,26 @@ class TestAC3ClassicNoModel:
|
|
|
127
127
|
|
|
128
128
|
|
|
129
129
|
class TestAC4InitConditional:
|
|
130
|
-
"""AC4: project-init
|
|
130
|
+
"""AC4: project-init rendered per-format references the correct instructions file."""
|
|
131
131
|
|
|
132
132
|
def test_init_has_conditional(self):
|
|
133
|
-
"""project-init playbook
|
|
133
|
+
"""project-init playbook rendered for OpenCode contains 'OpenCode' and 'AGENTS.md'.
|
|
134
|
+
|
|
135
|
+
After STORY-slim-074 DIP refactor, the raw template uses {DISPLAY_NAME} and
|
|
136
|
+
{INSTRUCTIONS_FILE} placeholders instead of hardcoded format-specific strings.
|
|
137
|
+
_render_prompt() injects the correct values at deploy time.
|
|
138
|
+
"""
|
|
139
|
+
from pactkit.generators.deployer import _render_prompt
|
|
140
|
+
from pactkit.profiles import get_profile
|
|
134
141
|
from pactkit.prompts import COMMANDS_CONTENT
|
|
135
142
|
|
|
136
|
-
|
|
143
|
+
profile = get_profile("opencode")
|
|
144
|
+
init_content = _render_prompt(COMMANDS_CONTENT["project-init.md"], profile)
|
|
137
145
|
assert "OpenCode" in init_content
|
|
138
146
|
assert "AGENTS.md" in init_content
|
|
139
|
-
|
|
147
|
+
# Rendered for classic: {DISPLAY_NAME} → 'Claude Code', {PROJECT_CONFIG_DIR} → '.claude'
|
|
148
|
+
classic_content = _render_prompt(COMMANDS_CONTENT["project-init.md"], get_profile("classic"))
|
|
149
|
+
assert "Claude Code" in classic_content or ".claude" in classic_content
|
|
140
150
|
|
|
141
151
|
|
|
142
152
|
# ===========================================================================
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pactkit_opencode-2.9.1 → pactkit_opencode-2.9.2}/src/pactkit_opencode.egg-info/dependency_links.txt
RENAMED
|
File without changes
|
{pactkit_opencode-2.9.1 → pactkit_opencode-2.9.2}/src/pactkit_opencode.egg-info/entry_points.txt
RENAMED
|
File without changes
|
{pactkit_opencode-2.9.1 → pactkit_opencode-2.9.2}/src/pactkit_opencode.egg-info/requires.txt
RENAMED
|
File without changes
|
{pactkit_opencode-2.9.1 → pactkit_opencode-2.9.2}/src/pactkit_opencode.egg-info/top_level.txt
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
{pactkit_opencode-2.9.1 → pactkit_opencode-2.9.2}/tests/test_story070_opencode_compliance.py
RENAMED
|
File without changes
|