mirror of
https://github.com/stablyai/orca.git
synced 2026-10-18 00:03:20 +00:00
* feat(mobile): add commit failure recovery panel with AI fix action - Surfaces a "Commit failed" panel with a one-tap AI fix button when a git commit fails in the source control view or PR creation flow - Detects commit failures specifically during the committing progress step and captures staged entries and commit message for context - Extracts commit failure summary and prompt logic into `src/shared/source-control-commit-failure.ts` and PR checks prompt into `src/shared/pr-checks-fix-prompt.ts` so both desktop and mobile share the same implementations - Adds auto-find of an available Metro port starting from 8081 and extracts expo CLI bootstrap into `mobile-expo-cli.mjs` shared by `start-emulator` and a new `start-expo.mjs` wrapper * Share source-control AI prompts and simplify mobile PR actions - Extract conflict, check-fixing, and commit-failure prompt builders to shared modules for reuse by both desktop and mobile. - Configure Metro in the mobile package to watch and bundle modules from the repository-root shared directory. - Remove the desktop-style merge method picker from the mobile PR actions panel, opting to use repository defaults automatically. - Refactor mobile hosted review creation and git preparation logic into dedicated helper files.
25 lines
852 B
TypeScript
25 lines
852 B
TypeScript
import type { MobileGitStatusEntry } from './mobile-git-status'
|
|
|
|
export {
|
|
COMMIT_FAILURE_SUMMARY_SCAN_CODE_UNITS,
|
|
buildFixCommitFailurePrompt,
|
|
hasExpandedCommitFailureDetails,
|
|
summarizeCommitFailure
|
|
} from '../../../src/shared/source-control-commit-failure'
|
|
|
|
export type MobileCommitFailureRecovery = {
|
|
error: string
|
|
commitMessage: string
|
|
stagedEntries: Pick<MobileGitStatusEntry, 'path' | 'status' | 'area'>[]
|
|
}
|
|
|
|
export type RecordMobileCommitFailure = (failure: MobileCommitFailureRecovery | null) => void
|
|
|
|
export function getMobileCommitFailureStagedEntries(
|
|
entries: readonly MobileGitStatusEntry[] | undefined
|
|
): Pick<MobileGitStatusEntry, 'path' | 'status' | 'area'>[] {
|
|
return (entries ?? [])
|
|
.filter((entry) => entry.area === 'staged')
|
|
.map((entry) => ({ path: entry.path, status: entry.status, area: entry.area }))
|
|
}
|