Fix remaining OpenCode review comments
This commit is contained in:
@@ -141,38 +141,41 @@ export async function execute(ctx: AdapterExecutionContext): Promise<AdapterExec
|
|||||||
}
|
}
|
||||||
|
|
||||||
const instructionsFilePath = asString(config.instructionsFilePath, "").trim();
|
const instructionsFilePath = asString(config.instructionsFilePath, "").trim();
|
||||||
const instructionsDir = instructionsFilePath ? `${path.dirname(instructionsFilePath)}/` : "";
|
const resolvedInstructionsFilePath = instructionsFilePath
|
||||||
|
? path.resolve(cwd, instructionsFilePath)
|
||||||
|
: "";
|
||||||
|
const instructionsDir = resolvedInstructionsFilePath ? `${path.dirname(resolvedInstructionsFilePath)}/` : "";
|
||||||
let instructionsPrefix = "";
|
let instructionsPrefix = "";
|
||||||
if (instructionsFilePath) {
|
if (resolvedInstructionsFilePath) {
|
||||||
try {
|
try {
|
||||||
const instructionsContents = await fs.readFile(instructionsFilePath, "utf8");
|
const instructionsContents = await fs.readFile(resolvedInstructionsFilePath, "utf8");
|
||||||
instructionsPrefix =
|
instructionsPrefix =
|
||||||
`${instructionsContents}\n\n` +
|
`${instructionsContents}\n\n` +
|
||||||
`The above agent instructions were loaded from ${instructionsFilePath}. ` +
|
`The above agent instructions were loaded from ${resolvedInstructionsFilePath}. ` +
|
||||||
`Resolve any relative file references from ${instructionsDir}.\n\n`;
|
`Resolve any relative file references from ${instructionsDir}.\n\n`;
|
||||||
await onLog(
|
await onLog(
|
||||||
"stderr",
|
"stderr",
|
||||||
`[paperclip] Loaded agent instructions file: ${instructionsFilePath}\n`,
|
`[paperclip] Loaded agent instructions file: ${resolvedInstructionsFilePath}\n`,
|
||||||
);
|
);
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
const reason = err instanceof Error ? err.message : String(err);
|
const reason = err instanceof Error ? err.message : String(err);
|
||||||
await onLog(
|
await onLog(
|
||||||
"stderr",
|
"stderr",
|
||||||
`[paperclip] Warning: could not read agent instructions file "${instructionsFilePath}": ${reason}\n`,
|
`[paperclip] Warning: could not read agent instructions file "${resolvedInstructionsFilePath}": ${reason}\n`,
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const commandNotes = (() => {
|
const commandNotes = (() => {
|
||||||
if (!instructionsFilePath) return [] as string[];
|
if (!resolvedInstructionsFilePath) return [] as string[];
|
||||||
if (instructionsPrefix.length > 0) {
|
if (instructionsPrefix.length > 0) {
|
||||||
return [
|
return [
|
||||||
`Loaded agent instructions from ${instructionsFilePath}`,
|
`Loaded agent instructions from ${resolvedInstructionsFilePath}`,
|
||||||
`Prepended instructions + path directive to stdin prompt (relative references from ${instructionsDir}).`,
|
`Prepended instructions + path directive to stdin prompt (relative references from ${instructionsDir}).`,
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
return [
|
return [
|
||||||
`Configured instructionsFilePath ${instructionsFilePath}, but file could not be read; continuing without injected instructions.`,
|
`Configured instructionsFilePath ${resolvedInstructionsFilePath}, but file could not be read; continuing without injected instructions.`,
|
||||||
];
|
];
|
||||||
})();
|
})();
|
||||||
|
|
||||||
|
|||||||
@@ -81,6 +81,15 @@ export async function testEnvironment(
|
|||||||
}
|
}
|
||||||
const runtimeEnv = normalizeEnv(ensurePathInEnv({ ...process.env, ...env }));
|
const runtimeEnv = normalizeEnv(ensurePathInEnv({ ...process.env, ...env }));
|
||||||
|
|
||||||
|
const cwdInvalid = checks.some((check) => check.code === "opencode_cwd_invalid");
|
||||||
|
if (cwdInvalid) {
|
||||||
|
checks.push({
|
||||||
|
code: "opencode_command_skipped",
|
||||||
|
level: "warn",
|
||||||
|
message: "Skipped command check because working directory validation failed.",
|
||||||
|
detail: command,
|
||||||
|
});
|
||||||
|
} else {
|
||||||
try {
|
try {
|
||||||
await ensureCommandResolvable(command, cwd, runtimeEnv);
|
await ensureCommandResolvable(command, cwd, runtimeEnv);
|
||||||
checks.push({
|
checks.push({
|
||||||
@@ -96,6 +105,7 @@ export async function testEnvironment(
|
|||||||
detail: command,
|
detail: command,
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
const canRunProbe =
|
const canRunProbe =
|
||||||
checks.every((check) => check.code !== "opencode_cwd_invalid" && check.code !== "opencode_command_unresolvable");
|
checks.every((check) => check.code !== "opencode_cwd_invalid" && check.code !== "opencode_command_unresolvable");
|
||||||
@@ -174,6 +184,7 @@ export async function testEnvironment(
|
|||||||
if (variant) args.push("--variant", variant);
|
if (variant) args.push("--variant", variant);
|
||||||
if (extraArgs.length > 0) args.push(...extraArgs);
|
if (extraArgs.length > 0) args.push(...extraArgs);
|
||||||
|
|
||||||
|
try {
|
||||||
const probe = await runChildProcess(
|
const probe = await runChildProcess(
|
||||||
`opencode-envtest-${Date.now()}-${Math.random().toString(16).slice(2)}`,
|
`opencode-envtest-${Date.now()}-${Math.random().toString(16).slice(2)}`,
|
||||||
command,
|
command,
|
||||||
@@ -232,6 +243,15 @@ export async function testEnvironment(
|
|||||||
hint: "Run `opencode run --format json` manually in this working directory to debug.",
|
hint: "Run `opencode run --format json` manually in this working directory to debug.",
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
} catch (err) {
|
||||||
|
checks.push({
|
||||||
|
code: "opencode_hello_probe_failed",
|
||||||
|
level: "error",
|
||||||
|
message: "OpenCode hello probe failed.",
|
||||||
|
detail: err instanceof Error ? err.message : String(err),
|
||||||
|
hint: "Run `opencode run --format json` manually in this working directory to debug.",
|
||||||
|
});
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return {
|
return {
|
||||||
|
|||||||
@@ -149,6 +149,8 @@ export function OnboardingWizard() {
|
|||||||
const {
|
const {
|
||||||
data: adapterModels,
|
data: adapterModels,
|
||||||
error: adapterModelsError,
|
error: adapterModelsError,
|
||||||
|
isLoading: adapterModelsLoading,
|
||||||
|
isFetching: adapterModelsFetching,
|
||||||
} = useQuery({
|
} = useQuery({
|
||||||
queryKey:
|
queryKey:
|
||||||
createdCompanyId
|
createdCompanyId
|
||||||
@@ -332,6 +334,10 @@ export function OnboardingWizard() {
|
|||||||
);
|
);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
if (adapterModelsLoading || adapterModelsFetching) {
|
||||||
|
setError("OpenCode models are still loading. Please wait and try again.");
|
||||||
|
return;
|
||||||
|
}
|
||||||
const discoveredModels = adapterModels ?? [];
|
const discoveredModels = adapterModels ?? [];
|
||||||
if (!discoveredModels.some((entry) => entry.id === selectedModelId)) {
|
if (!discoveredModels.some((entry) => entry.id === selectedModelId)) {
|
||||||
setError(
|
setError(
|
||||||
|
|||||||
@@ -12,5 +12,5 @@ export function extractProviderIdWithFallback(modelId: string, fallback = "other
|
|||||||
export function extractModelName(modelId: string): string {
|
export function extractModelName(modelId: string): string {
|
||||||
const trimmed = modelId.trim();
|
const trimmed = modelId.trim();
|
||||||
if (!trimmed.includes("/")) return trimmed;
|
if (!trimmed.includes("/")) return trimmed;
|
||||||
return trimmed.slice(trimmed.indexOf("/") + 1);
|
return trimmed.slice(trimmed.indexOf("/") + 1).trim();
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user