auto-sync: 2026-10-18 22:21:16
This commit is contained in:
1 parent
f144665d31
commit
9fd683144a
6 files changed
+135
-1
No files matched your search
@@ -0,0 +1,65 @@
|
||||
model = "gpt-6-astra"
|
||||
model_reasoning_effort = "high"
|
||||
service_tier = "priority"
|
||||
approval_policy = "on-request"
|
||||
approvals_reviewer = "auto_review"
|
||||
sandbox_mode = "workspace-write"
|
||||
web_search = "live"
|
||||
|
||||
[tui]
|
||||
theme = "coldark-dark"
|
||||
status_line = ["model-with-reasoning", "project-name", "context-remaining", "total-input-tokens", "total-output-tokens", "five-hour-limit", "weekly-limit"]
|
||||
notifications = ["agent-turn-complete", "approval-requested"]
|
||||
notification_method = "auto"
|
||||
|
||||
[desktop]
|
||||
followUpQueueMode = "steer"
|
||||
conversationDetailMode = "STEPS_COMMANDS"
|
||||
ambient-suggestions-enabled = false
|
||||
|
||||
[features]
|
||||
apps = false
|
||||
worktrees = false
|
||||
|
||||
[mcp_servers.joplin]
|
||||
command = "/bin/sh"
|
||||
args = ["-c", 'exec "$HOME/.local/share/joplin-agent/runtime/bin/python" -I "$HOME/.local/share/joplin-agent/app/agent.py" serve']
|
||||
enabled = true
|
||||
startup_timeout_sec = 30
|
||||
tool_timeout_sec = 60
|
||||
|
||||
[plugins."codex-app-tools@openai-bundled"]
|
||||
enabled = true
|
||||
[plugins."codex-app-tools@openai-bundled".mcp_servers.codex_app]
|
||||
enabled = false
|
||||
|
||||
[plugins."browser@openai-bundled"]
|
||||
enabled = true
|
||||
|
||||
[plugins."unified-computer-use@openai-bundled"]
|
||||
enabled = true
|
||||
[plugins."unified-computer-use@openai-bundled".mcp_servers.cua_repl]
|
||||
enabled = false
|
||||
|
||||
[plugins."visualize@openai-bundled"]
|
||||
enabled = true
|
||||
|
||||
[plugins."documents@openai-primary-runtime"]
|
||||
enabled = true
|
||||
|
||||
[plugins."pdf@openai-primary-runtime"]
|
||||
enabled = true
|
||||
|
||||
[plugins."spreadsheets@openai-primary-runtime"]
|
||||
enabled = true
|
||||
|
||||
[plugins."presentations@openai-primary-runtime"]
|
||||
enabled = true
|
||||
|
||||
[plugins."template-creator@openai-primary-runtime"]
|
||||
enabled = true
|
||||
|
||||
[plugins."code-review@openai-bundled"]
|
||||
enabled = true
|
||||
[plugins."code-review@openai-bundled".mcp_servers.code-review]
|
||||
enabled = false
|
||||
@@ -0,0 +1,7 @@
|
||||
name: Codex configuration
|
||||
category: Agent Harness
|
||||
description: Copy portable defaults while preserving existing local configuration
|
||||
platforms:
|
||||
generic:
|
||||
copy:
|
||||
- [config.base.toml, ~/.codex/config.toml]
|
||||
@@ -0,0 +1,33 @@
|
||||
import json
|
||||
import os
|
||||
from pathlib import Path
|
||||
import subprocess
|
||||
import sys
|
||||
import tempfile
|
||||
import tomllib
|
||||
import unittest
|
||||
|
||||
ROOT = Path(__file__).resolve().parents[3]
|
||||
BASE = ROOT / ".codex/config.base.toml"
|
||||
|
||||
|
||||
def recorder(path):
|
||||
path.parent.mkdir(parents=True, exist_ok=True)
|
||||
path.write_text("#!" + sys.executable + "\nimport json,sys\nprint(json.dumps(sys.argv[1:]))\n")
|
||||
path.chmod(0o755)
|
||||
|
||||
|
||||
class CodexConfigTest(unittest.TestCase):
|
||||
def test_portable_joplin_launch_uses_home_with_spaces_without_path_lookup(self):
|
||||
config = tomllib.loads(BASE.read_text())["mcp_servers"]["joplin"]
|
||||
with tempfile.TemporaryDirectory(prefix="codex home ") as directory:
|
||||
home = Path(directory)
|
||||
recorder(home / ".local/share/joplin-agent/runtime/bin/python")
|
||||
result = subprocess.run([config["command"], *config["args"]],
|
||||
env={"HOME": str(home), "PATH": "/nonexistent"},
|
||||
capture_output=True, text=True, check=True, timeout=10)
|
||||
self.assertEqual(json.loads(result.stdout), ["-I", str(home / ".local/share/joplin-agent/app/agent.py"), "serve"])
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
unittest.main()
|
||||
@@ -128,6 +128,8 @@ assets/**
|
||||
!.codex
|
||||
.codex/**
|
||||
!.codex/strap.yaml
|
||||
!.codex/config.base.toml
|
||||
!.codex/config.strap.yaml
|
||||
!.codex/status.strap.yaml
|
||||
!.codex/hooks.json
|
||||
!.codex/agents/
|
||||
|
||||
@@ -7,9 +7,35 @@ from pathlib import Path
|
||||
ROOT = Path(__file__).resolve().parents[4]
|
||||
sys.path.insert(0, str(ROOT / ".local/share"))
|
||||
from dotfiles.strap.discovery import discover_straps
|
||||
from dotfiles.strap.executor import execute_plan
|
||||
from dotfiles.strap.planner import combine_plans, plan_strap
|
||||
from dotfiles.strap.models import TargetState
|
||||
|
||||
|
||||
class RepositoryStrapsTest(unittest.TestCase):
|
||||
def test_codex_configuration_is_copied_and_later_local_edits_are_preserved(self):
|
||||
class NoCron:
|
||||
def read(self): return "\n"
|
||||
def install(self, content):
|
||||
if content != "\n":
|
||||
raise AssertionError("Config deployment must not change cron")
|
||||
|
||||
for platform in ("linux", "darwin"):
|
||||
with self.subTest(platform=platform), tempfile.TemporaryDirectory() as directory:
|
||||
home = Path(directory) / "home"
|
||||
home.mkdir()
|
||||
strap = next(s for s in discover_straps(ROOT, home=home, platform_name=platform) if s.name == "Codex configuration")
|
||||
plan = combine_plans((plan_strap(strap, home=home),), home=home, reconcile_all_cron=False)
|
||||
execute_plan(plan, cron_backend=NoCron())
|
||||
target = home / ".codex/config.toml"
|
||||
self.assertFalse(target.is_symlink())
|
||||
self.assertEqual(target.read_bytes(), (ROOT / ".codex/config.base.toml").read_bytes())
|
||||
target.write_text('model = "machine-specific"\n')
|
||||
replanned = plan_strap(strap, home=home)
|
||||
self.assertEqual(replanned.actions[0].state, TargetState.SKIP)
|
||||
execute_plan(combine_plans((replanned,), home=home, reconcile_all_cron=False), cron_backend=NoCron())
|
||||
self.assertEqual(target.read_text(), 'model = "machine-specific"\n')
|
||||
|
||||
def test_repository_validates_on_linux_and_darwin_without_legacy_names(self):
|
||||
with tempfile.TemporaryDirectory() as directory:
|
||||
home = Path(directory) / "home"; home.mkdir()
|
||||
@@ -20,7 +46,7 @@ class RepositoryStrapsTest(unittest.TestCase):
|
||||
self.assertNotIn("Rofi", {item.name for item in darwin})
|
||||
self.assertFalse(any(re.search(r"strap@|\.strap$", path.name) for path in ROOT.rglob("*")))
|
||||
harness = {item.name: item for item in linux if item.category == "Agent Harness"}
|
||||
self.assertEqual(set(harness), {"OpenCode", "Shared skills", "Shared instructions", "Codex agents", "Codex status hooks", "Gemini agents", "Joplin integration"})
|
||||
self.assertEqual(set(harness), {"OpenCode", "Shared skills", "Shared instructions", "Codex agents", "Codex status hooks", "Gemini agents", "Joplin integration", "Codex configuration"})
|
||||
skills = ROOT / ".config/opencode/skills"
|
||||
skill_entries = {
|
||||
Path("_shared/artifact-policy.md"),
|
||||
|
||||
@@ -23,6 +23,7 @@ python@3.13
|
||||
rclone
|
||||
restic
|
||||
ripgrep
|
||||
ruby@3.3
|
||||
shadowsocks-rust
|
||||
tree
|
||||
tree-sitter-cli
|
||||
|
||||
Reference in new issue
Block a user