feat: harden company resume, external sessions, and Office UI i18n

Improve suspend/resume identity continuity and external broker session handling, add Office UI internationalization with rebuilt assets, and expand company org configs.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
小东
2026-07-16 09:20:40 +08:00
parent eb934cf2bd
commit cb6b8ed6e1
32 changed files with 2562 additions and 446 deletions
+72 -3
View File
@@ -2513,7 +2513,8 @@ class ExternalAgentMonitoringTests(unittest.IsolatedAsyncioTestCase):
def test_codex_adapter_resolves_launch_binary_before_spawn(self) -> None:
metadata: dict[str, object] = {}
with patch("opc.layer3_agent.adapters.base.shutil.which", return_value=r"C:\Tools\codex.cmd"):
with patch("opc.layer3_agent.adapters.base.os.name", "posix"), \
patch("opc.layer3_agent.adapters.base.shutil.which", return_value=r"C:\Tools\codex.cmd"):
cmd = CodexAdapter._resolve_launch_command(
["codex", "exec", "--json", "-"],
launch_metadata=metadata,
@@ -2523,6 +2524,39 @@ class ExternalAgentMonitoringTests(unittest.IsolatedAsyncioTestCase):
self.assertEqual(metadata["configured_binary"], "codex")
self.assertEqual(metadata["resolved_binary"], r"C:\Tools\codex.cmd")
def test_codex_adapter_wraps_windows_cmd_shim_before_spawn(self) -> None:
metadata: dict[str, object] = {}
which_results = {
"codex": r"D:\nodejs\codex",
"cmd.exe": r"C:\Windows\System32\cmd.exe",
}
with patch("opc.layer3_agent.adapters.base.os.name", "nt"), \
patch("opc.layer3_agent.adapters.base.os.path.isfile", side_effect=lambda path: path == r"D:\nodejs\codex.cmd"), \
patch("opc.layer3_agent.adapters.base.shutil.which", side_effect=lambda name, path=None: which_results.get(name)), \
patch.dict(os.environ, {"COMSPEC": r"C:\Windows\System32\cmd.exe"}, clear=False):
cmd = CodexAdapter._resolve_launch_command(
["codex", "exec", "--json", "-"],
launch_metadata=metadata,
)
self.assertEqual(
cmd,
[
r"C:\Windows\System32\cmd.exe",
"/d",
"/s",
"/c",
r"D:\nodejs\codex.cmd",
"exec",
"--json",
"-",
],
)
self.assertEqual(metadata["configured_binary"], "codex")
self.assertEqual(metadata["resolved_binary"], r"D:\nodejs\codex.cmd")
self.assertEqual(metadata["launch_wrapper"], r"C:\Windows\System32\cmd.exe")
def test_codex_adapter_resolves_launch_binary_with_extra_env_path(self) -> None:
with patch("opc.layer3_agent.adapters.base.shutil.which", return_value=r"D:\bin\codex.cmd") as which_mock:
CodexAdapter._resolve_launch_command(
@@ -2532,6 +2566,40 @@ class ExternalAgentMonitoringTests(unittest.IsolatedAsyncioTestCase):
self.assertEqual(which_mock.call_args.kwargs["path"], r"D:\bin")
def test_codex_adapter_forwards_only_openopc_runtime_env_to_shell_policy(self) -> None:
metadata: dict[str, object] = {}
cmd = CodexAdapter._inject_runtime_shell_environment(
["codex", "exec", "--json", "-"],
{
"OPC_ALLOWED_COLLAB_TOOLS": json.dumps(["delegate_work", "inbox"]),
"OPC_COLLAB_RPC_TOKEN": "rpc-token",
"PYTHONPATH": r"D:\OpenOPC",
"UNRELATED_SECRET": "do-not-forward",
},
launch_metadata=metadata,
)
self.assertEqual(cmd[:2], ["codex", "exec"])
config_values = [cmd[index + 1] for index, value in enumerate(cmd[:-1]) if value == "-c"]
self.assertIn(
"shell_environment_policy.set.OPC_ALLOWED_COLLAB_TOOLS='''delegate_work,inbox'''",
config_values,
)
self.assertIn(
"shell_environment_policy.set.OPC_COLLAB_RPC_TOKEN='''rpc-token'''",
config_values,
)
self.assertIn(
"shell_environment_policy.set.PYTHONPATH='''D:\\OpenOPC'''",
config_values,
)
self.assertFalse(any("UNRELATED_SECRET" in value for value in config_values))
self.assertEqual(
metadata["runtime_shell_environment_keys"],
["OPC_ALLOWED_COLLAB_TOOLS", "OPC_COLLAB_RPC_TOKEN", "PYTHONPATH"],
)
def test_codex_adapter_full_auto_uses_dangerous_bypass_flag(self) -> None:
adapter = CodexAdapter(
config=ExternalAgentConfig(command="codex", approval_mode="full-auto")
@@ -5242,10 +5310,11 @@ class ExternalAgentMonitoringTests(unittest.IsolatedAsyncioTestCase):
with tempfile.TemporaryDirectory() as tmpdir:
store = _SessionStoreStub()
adapter = _CollabSurfaceScriptAdapter("print('company-mode external run')\n")
broker = ExternalAgentBroker(store, _ApprovalStub())
from opc.layer2_organization.org_engine import OrgEngine
from opc.core.config import OPCConfig
broker.org_engine = OrgEngine(OPCConfig(), Path(tmpdir))
org_engine = OrgEngine(OPCConfig(), Path(tmpdir))
broker = ExternalAgentBroker(store, _ApprovalStub(), org_engine=org_engine)
self.assertIs(broker.org_engine, org_engine)
task = Task(
id="collab-env-ceo",
title="collab env ceo",