MCPcopy Create free account
hub / github.com/backnotprop/plannotator / handleReviewCommand

Function handleReviewCommand

apps/opencode-plugin/commands.ts:51–196  ·  view source on GitHub ↗
(
  event: any,
  deps: CommandDeps
)

Source from the content-addressed store, hash-verified

49}
50
51export async function handleReviewCommand(
52 event: any,
53 deps: CommandDeps
54) {
55 const { client, reviewHtmlContent, getSharingEnabled, getShareBaseUrl, directory } = deps;
56
57 // @ts-ignore - Event properties contain arguments
58 const reviewArgs = parseReviewArgs(event.properties?.arguments || "");
59 const urlArg = reviewArgs.prUrl;
60 const isPRMode = urlArg !== undefined;
61
62 let rawPatch: string;
63 let gitRef: string;
64 let diffError: string | undefined;
65 let userDiffType: DiffType | WorkspaceDiffType | undefined;
66 let gitContext: Awaited<ReturnType<typeof prepareLocalReviewDiff>>["gitContext"] | undefined;
67 let prMetadata: Awaited<ReturnType<typeof fetchPR>>["metadata"] | undefined;
68 let workspace: Awaited<ReturnType<typeof buildLocalWorkspaceReview>> | undefined;
69 let agentCwd: string | undefined;
70
71 if (isPRMode) {
72 const prRef = parsePRUrl(urlArg);
73 if (!prRef) {
74 client.app.log({ level: "error", message: `Invalid PR/MR URL: ${urlArg}` });
75 return;
76 }
77
78 client.app.log({ level: "info", message: `Fetching ${getMRLabel(prRef)} ${getMRNumberLabel(prRef)} from ${getDisplayRepo(prRef)}...` });
79
80 try {
81 await checkPRAuth(prRef);
82 } catch (err) {
83 const cliName = getCliName(prRef);
84 client.app.log({ level: "error", message: err instanceof Error ? err.message : `${cliName} auth check failed` });
85 return;
86 }
87
88 try {
89 const pr = await fetchPR(prRef);
90 rawPatch = pr.rawPatch;
91 gitRef = `${getMRLabel(prRef)} ${getMRNumberLabel(prRef)}`;
92 prMetadata = pr.metadata;
93 } catch (err) {
94 client.app.log({ level: "error", message: err instanceof Error ? err.message : `Failed to fetch ${getMRLabel(prRef)} ${getMRNumberLabel(prRef)}` });
95 return;
96 }
97 } else {
98 client.app.log({ level: "info", message: "Opening code review UI..." });
99
100 const config = loadConfig();
101 const cwd = directory ?? process.cwd();
102 const managedVcs = await detectManagedVcs(cwd, reviewArgs.vcsType);
103 const forcedVcs = !!reviewArgs.vcsType && reviewArgs.vcsType !== "auto";
104 if (managedVcs || forcedVcs) {
105 try {
106 const diffResult = await prepareLocalReviewDiff({
107 cwd,
108 vcsType: reviewArgs.vcsType,

Callers 1

handleEmbeddedCommandFunction · 0.85

Calls 15

parseReviewArgsFunction · 0.90
parsePRUrlFunction · 0.90
getMRLabelFunction · 0.90
getMRNumberLabelFunction · 0.90
getDisplayRepoFunction · 0.90
checkPRAuthFunction · 0.90
getCliNameFunction · 0.90
fetchPRFunction · 0.90
loadConfigFunction · 0.90
detectManagedVcsFunction · 0.90
prepareLocalReviewDiffFunction · 0.90
resolveDefaultDiffTypeFunction · 0.90

Tested by

no test coverage detected