mng-opencode 0.1.1__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.
File without changes
@@ -0,0 +1,55 @@
1
+ from pydantic import Field
2
+
3
+ from imbue.mng import hookimpl
4
+ from imbue.mng.config.data_types import AgentTypeConfig
5
+ from imbue.mng.errors import ConfigParseError
6
+ from imbue.mng.interfaces.agent import AgentInterface
7
+ from imbue.mng.primitives import CommandString
8
+
9
+
10
+ class OpenCodeAgentConfig(AgentTypeConfig):
11
+ """Config for the opencode agent type."""
12
+
13
+ command: CommandString = Field(
14
+ default=CommandString("opencode"),
15
+ description="Command to run opencode agent",
16
+ )
17
+
18
+ def merge_with(self, override: AgentTypeConfig) -> AgentTypeConfig:
19
+ """
20
+ Merge this config with an override config.
21
+
22
+ Important note: despite the type signatures, any of these fields may be None in the override--this means that they were NOT set in the toml (and thus should be ignored)
23
+ """
24
+ if not isinstance(override, OpenCodeAgentConfig):
25
+ raise ConfigParseError("Cannot merge OpenCodeAgentConfig with different agent config type")
26
+
27
+ # Merge parent_type (scalar - override wins if not None)
28
+ merged_parent_type = override.parent_type if override.parent_type is not None else self.parent_type
29
+
30
+ # Merge command (scalar - override wins if not None)
31
+ merged_command = self.command
32
+ if hasattr(override, "command") and override.command is not None:
33
+ merged_command = override.command
34
+
35
+ # Merge cli_args (concatenate both tuples)
36
+ merged_cli_args = self.cli_args + override.cli_args if override.cli_args else self.cli_args
37
+
38
+ # Merge permissions (list - concatenate if override is not None)
39
+ merged_permissions = self.permissions
40
+ if override.permissions is not None:
41
+ merged_permissions = list(self.permissions) + list(override.permissions)
42
+
43
+ return self.__class__(
44
+ parent_type=merged_parent_type,
45
+ cli_args=merged_cli_args,
46
+ command=merged_command,
47
+ permissions=merged_permissions,
48
+ )
49
+
50
+
51
+ # Module-level hook implementation for pluggy entry point discovery
52
+ @hookimpl
53
+ def register_agent_type() -> tuple[str, type[AgentInterface] | None, type[AgentTypeConfig]]:
54
+ """Register the opencode agent type."""
55
+ return ("opencode", None, OpenCodeAgentConfig)
@@ -0,0 +1,25 @@
1
+ """Unit tests for OpenCodeAgentConfig."""
2
+
3
+ from imbue.mng_opencode.plugin import OpenCodeAgentConfig
4
+
5
+
6
+ def test_opencode_agent_config_has_correct_defaults() -> None:
7
+ """Verify that OpenCodeAgentConfig has the expected default values."""
8
+ config = OpenCodeAgentConfig()
9
+
10
+ assert str(config.command) == "opencode"
11
+ assert config.cli_args == ()
12
+ assert config.permissions == []
13
+ assert config.parent_type is None
14
+
15
+
16
+ def test_opencode_agent_config_merge_with_override() -> None:
17
+ """Verify that merge_with works correctly for OpenCodeAgentConfig."""
18
+ base = OpenCodeAgentConfig()
19
+ override = OpenCodeAgentConfig(cli_args=("--verbose",))
20
+
21
+ merged = base.merge_with(override)
22
+
23
+ assert isinstance(merged, OpenCodeAgentConfig)
24
+ assert merged.cli_args == ("--verbose",)
25
+ assert str(merged.command) == "opencode"
@@ -0,0 +1,6 @@
1
+ Metadata-Version: 2.4
2
+ Name: mng-opencode
3
+ Version: 0.1.1
4
+ Summary: OpenCode agent type plugin for mng
5
+ Requires-Python: >=3.11
6
+ Requires-Dist: mng==0.1.5
@@ -0,0 +1,7 @@
1
+ imbue/mng_opencode/__init__.py,sha256=47DEQpj8HBSa-_TImW-5JCeuQeRkm5NMpJWZG3hSuFU,0
2
+ imbue/mng_opencode/plugin.py,sha256=EhZUc23nDhx-gJoiWZ8efJKZJAbloaU7pzzn-BAjrZE,2249
3
+ imbue/mng_opencode/plugin_test.py,sha256=xZJ9aU1k4_4HsTLsgEtXDaeCeEbEFpiN0lq_hzVV3zA,842
4
+ mng_opencode-0.1.1.dist-info/METADATA,sha256=bpSosBD0TkdQ5o65CP3axbuNyVah-yLO2LUxyrg9iHY,150
5
+ mng_opencode-0.1.1.dist-info/WHEEL,sha256=QccIxa26bgl1E6uMy58deGWi-0aeIkkangHcxk2kWfw,87
6
+ mng_opencode-0.1.1.dist-info/entry_points.txt,sha256=snkxZD1XaD8RRZkhRSAcAMfEmyqyKh7uI-k8YbX5jhU,43
7
+ mng_opencode-0.1.1.dist-info/RECORD,,
@@ -0,0 +1,4 @@
1
+ Wheel-Version: 1.0
2
+ Generator: hatchling 1.29.0
3
+ Root-Is-Purelib: true
4
+ Tag: py3-none-any
@@ -0,0 +1,2 @@
1
+ [mng]
2
+ opencode = imbue.mng_opencode.plugin