mirror of
https://github.com/stablyai/orca.git
synced 2026-10-09 00:02:39 +00:00
fix(opencode): keep Go credentials private and resolve backend keys (#24615)
Preserve the complete credential storage, migration, IPC, Settings and rate-limit refresh change alongside standalone GLM plans, current-main database diagnostics and the reviewed unknown-backend environment correction. Keep native discovery cancellation third and selected environment fourth. Original-topic-commit:7903f1cddbOriginal-topic-commit:588117b5cfOriginal-topic-commit:dedd4f8c86Original-topic-commit:6645dae104Original-topic-commit: a25b80c02c1af7830b0e6a65e72d965b3ad98276 Restacked-from: a25b80c02c1af7830b0e6a65e72d965b3ad98276 Restacked-onto:b032867021Co-authored-by: kespineira <kespineira@users.noreply.github.com> Co-authored-by: kevimux <kevimux@users.noreply.github.com> Reported-by: pullfrog Reviewed-full-source: 849fe093073f4c1606bd65d79a0c725d955d0d1f Native-helper-source:80dbe23237Reviewed-full-current-source: 36acb57d44adb3d378c0289c8c15f7da0fda214c
This commit is contained in:
co-authored by
kespineira
kevimux
parent
e8402b4619
commit
53f9ea7839
@@ -10,8 +10,11 @@ type OpenCodeDatabaseOverride = {
|
||||
path: string | null
|
||||
}
|
||||
|
||||
function getOpenCodeDatabaseOverride(dataDirectory: string): OpenCodeDatabaseOverride {
|
||||
const raw = process.env.OPENCODE_DB?.trim()
|
||||
function getOpenCodeDatabaseOverride(
|
||||
dataDirectory: string,
|
||||
environment: NodeJS.ProcessEnv
|
||||
): OpenCodeDatabaseOverride {
|
||||
const raw = environment.OPENCODE_DB?.trim()
|
||||
if (!raw) {
|
||||
return { isConfigured: false, path: null }
|
||||
}
|
||||
@@ -32,31 +35,44 @@ export async function listOpenCodeDatabases(
|
||||
* "OpenCode not used" rather than "we could not look". */
|
||||
onRefusal?: (path: string, error: WslTranscriptFsError) => void,
|
||||
/** Every other stat/readdir failure, including ENOENT; also read as an empty list. */
|
||||
onFsError?: (path: string, error: unknown) => void
|
||||
onFsError?: (path: string, error: unknown) => void,
|
||||
signal?: AbortSignal,
|
||||
environment: NodeJS.ProcessEnv = process.env
|
||||
): Promise<string[]> {
|
||||
const dataDirectory = resolveOpenCodeDataDirectory()
|
||||
const databaseOverride = getOpenCodeDatabaseOverride(dataDirectory)
|
||||
const dataDirectory = resolveOpenCodeDataDirectory(environment)
|
||||
const databaseOverride = getOpenCodeDatabaseOverride(dataDirectory, environment)
|
||||
if (databaseOverride.isConfigured) {
|
||||
if (!databaseOverride.path) {
|
||||
return []
|
||||
}
|
||||
try {
|
||||
return (await wslGatedStat(databaseOverride.path, 'scan')).isFile()
|
||||
return (await wslGatedStat(databaseOverride.path, 'scan', signal)).isFile()
|
||||
? [databaseOverride.path]
|
||||
: []
|
||||
} catch (error) {
|
||||
signal?.throwIfAborted()
|
||||
reportFailure(databaseOverride.path, error, onRefusal, onFsError)
|
||||
return []
|
||||
}
|
||||
}
|
||||
|
||||
return listOpenCodeDatabasesInDirectory(dataDirectory, onRefusal, signal, onFsError)
|
||||
}
|
||||
|
||||
export async function listOpenCodeDatabasesInDirectory(
|
||||
dataDirectory: string,
|
||||
onRefusal?: (path: string, error: WslTranscriptFsError) => void,
|
||||
signal?: AbortSignal,
|
||||
onFsError?: (path: string, error: unknown) => void
|
||||
): Promise<string[]> {
|
||||
try {
|
||||
const entries = await wslGatedReaddir(dataDirectory, 'scan')
|
||||
const entries = await wslGatedReaddir(dataDirectory, 'scan', signal)
|
||||
return entries
|
||||
.filter((entry) => entry.isFile() && /^opencode(?:-[A-Za-z0-9_.-]+)?\.db$/.test(entry.name))
|
||||
.map((entry) => join(dataDirectory, entry.name))
|
||||
.sort()
|
||||
} catch (error) {
|
||||
signal?.throwIfAborted()
|
||||
reportFailure(dataDirectory, error, onRefusal, onFsError)
|
||||
return []
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user