+
+ {t("integrations.optional")}{t("integrations.claudeHooks")}
+
+ {snapshot.hookStatus.status}
+
+
+ } disabled={isBusy} onClick={() => void onRunIntegrationAction(t("integrations.busy.installingHooks"), "install-hooks")}>{t("integrations.installHooks")}
+ } disabled={isBusy || snapshot.hookStatus.status === "needs_setup"} onClick={() => void onRunIntegrationAction(t("integrations.busy.removingHooks"), "uninstall-hooks")}>{t("integrations.removeHooks")}
+
+
+
+ {t("integrations.included")}{t("integrations.instructions")}
+
+ {snapshot.memoryStatus.state}
+
+ } disabled={isBusy} onClick={() => void onRunIntegrationAction(t("integrations.busy.updatingInstructions"), "install-memory")}>{t("integrations.updateInstructions")}
+
+
+
+
+ {t("integrations.actions")}{t("integrations.management")}
+
+ {snapshot.status.canConfigure && } disabled={isBusy} onClick={() => void onRunIntegrationAction(t("integrations.busy.installing"), "configure")}>{t("integrations.installMcp")}}
+ {snapshot.status.canReplace && } disabled={isBusy} onClick={() => void onRunIntegrationAction(t("integrations.busy.replacing"), "replace")}>{t("integrations.replaceMcp")}}
+ {snapshot.status.canRemove && } disabled={isBusy} onClick={() => void onRunIntegrationAction(t("integrations.busy.removing"), "remove")}>{t("integrations.removeMcp")}}
+ } disabled={isBusy} onClick={() => void onReloadIntegrations()}>{t("integrations.refreshStatus")}
+
+
+ >;
+}
+
+export function OpenCodeIntegrationSections({
+ snapshot,
+ isBusy,
+ onRunIntegrationAction,
+ onUpdatePath,
+ onReloadIntegrations,
+}: {
+ snapshot: AgentSetupSnapshot;
+ isBusy: boolean;
+ onRunIntegrationAction: (label: string, action: AgentSetupAction) => Promise