Files
steipete--codexbar/Sources/CodexBarCore/Providers/Codex/CodexStatusProbeIsolation.swift
T
2026-07-13 12:22:33 +08:00

47 lines
1.6 KiB
Swift

import Foundation
enum CodexStatusProbeIsolation {
static func supportDirectory(environment: [String: String]) throws -> URL {
let baseURL: URL = if let tmp = environment["TMPDIR"]?.trimmingCharacters(in: .whitespacesAndNewlines),
!tmp.isEmpty
{
URL(fileURLWithPath: tmp, isDirectory: true)
} else {
FileManager.default.temporaryDirectory
}
let directory = baseURL
.appendingPathComponent("CodexBar", isDirectory: true)
.appendingPathComponent("CodexStatusProbe", isDirectory: true)
try FileManager.default.createDirectory(at: directory, withIntermediateDirectories: true)
return directory
}
static func workingDirectory(environment: [String: String]) -> URL? {
let home = environment["HOME"]?.trimmingCharacters(in: .whitespacesAndNewlines)
guard let home, !home.isEmpty else { return nil }
return URL(fileURLWithPath: home, isDirectory: true)
}
static func codexArguments(stateHome: URL) -> [String] {
[
"-s",
"read-only",
"-a",
"untrusted",
"-c",
"history.persistence=\"none\"",
"-c",
"experimental_thread_store={type=\"in_memory\",id=\"codexbar-status\"}",
"-c",
"sqlite_home=\"\(self.tomlEscaped(stateHome.path))\"",
]
}
private static func tomlEscaped(_ value: String) -> String {
value
.replacingOccurrences(of: "\\", with: "\\\\")
.replacingOccurrences(of: "\"", with: "\\\"")
}
}