feat: add prepush lifecycle hook (#498)

* feat: add prepush lifecycle hook

Add `prepushScript` configuration — an optional shell script that runs
automatically before pushing code to the remote repository. Reuses the
existing `executeLifecycleHook` infrastructure (bash execution, 2-min
timeout, error propagation on non-zero exit). When unconfigured the
hook is a no-op.

Made-with: Cursor

* fix: add prepushScript to run-context API response, fix UI separator

Include prepushScript in the settings returned by the run-context
endpoint so the hook actually fires in production. Also fix the
separator pattern in AgentSettings to match the existing convention
(spacer + hr + spacer instead of margin).

Made-with: Cursor
This commit is contained in:
Colin McDonnell
2026-03-26 04:28:24 +00:00
committed by pullfrog[bot]
parent 7454e66533
commit cb8e33360c
5 changed files with 13 additions and 1 deletions
+3
View File
@@ -14,6 +14,7 @@ export interface RepoSettings {
modes: Mode[];
setupScript: string | null;
postCheckoutScript: string | null;
prepushScript: string | null;
push: PushPermission;
shell: ShellPermission;
prApproveEnabled: boolean;
@@ -33,6 +34,7 @@ const defaultSettings: RepoSettings = {
modes: [],
setupScript: null,
postCheckoutScript: null,
prepushScript: null,
push: "restricted",
shell: "restricted",
prApproveEnabled: false,
@@ -93,6 +95,7 @@ export async function fetchRunContext(params: {
modes: data.settings?.modes ?? [],
setupScript: data.settings?.setupScript ?? null,
postCheckoutScript: data.settings?.postCheckoutScript ?? null,
prepushScript: data.settings?.prepushScript ?? null,
},
apiToken: data.apiToken,
oss: data.oss ?? false,