Skip to content
Merged
Show file tree
Hide file tree
Changes from 2 commits
Commits
Show all changes
27 commits
Select commit Hold shift + click to select a range
3c4ae55
fix: reuse existing PR in updateFromSourceSpec instead of creating du…
devin-ai-integration[bot] Mar 2, 2026
9ec7e45
test: add tests for updateFromSourceSpec PR reuse behavior
devin-ai-integration[bot] Mar 2, 2026
37823c8
ci: add CI workflow for tests and build verification
devin-ai-integration[bot] Mar 2, 2026
ee726d4
refactor: migrate tests from Jest to Vitest
devin-ai-integration[bot] Mar 2, 2026
5f76e07
ci: update CI workflow to use vitest
devin-ai-integration[bot] Mar 2, 2026
256055b
feat: add push fallback with rebase retry and PR comment on conflict
devin-ai-integration[bot] Mar 2, 2026
b1e6c01
fix: call setFailed when push fails with existing PR (review feedback)
devin-ai-integration[bot] Mar 2, 2026
c156b63
fix: include rebase/abort errors in PR comment instead of swallowing
devin-ai-integration[bot] Mar 2, 2026
bc361d8
feat: warn on timestamp-like branch names, include rebase abort error…
devin-ai-integration[bot] Mar 2, 2026
fc92cd5
refactor: make run() explicitly callable in tests, remove flaky setTi…
devin-ai-integration[bot] Mar 2, 2026
bb02f2f
revert: drop timestamp branch name warning (false positive risk)
devin-ai-integration[bot] Mar 2, 2026
e77f9e0
fix: use VITEST env guard instead of NODE_ENV to prevent silent break…
devin-ai-integration[bot] Mar 2, 2026
98821fd
test: add E2E test script for happy path and conflict path validation
devin-ai-integration[bot] Mar 2, 2026
4a45df4
feat: capture detailed git stderr in PR comments and default branch t…
devin-ai-integration[bot] Mar 2, 2026
0dd2dfe
fix: rename default branch to fern/sync-openapi
devin-ai-integration[bot] Mar 2, 2026
2102f86
fix: separate error paths for rebase failure vs post-rebase push failure
devin-ai-integration[bot] Mar 2, 2026
3fe89d5
fix: update stale comment on pushWithFallback
devin-ai-integration[bot] Mar 2, 2026
2106203
fix: use fenced code blocks for multi-line error messages in PR comments
devin-ai-integration[bot] Mar 2, 2026
f3c875b
ci: add release workflow to auto-update major version tag on publish
devin-ai-integration[bot] Mar 2, 2026
2f70c00
ci: also move minor version tag on release (e.g. v3.1.0 updates v3 an…
devin-ai-integration[bot] Mar 2, 2026
6cf3276
docs: update README with PR deduplication, default branch, releasing …
devin-ai-integration[bot] Mar 2, 2026
8a31f0c
docs: update README examples to reference @v4
devin-ai-integration[bot] Mar 2, 2026
223880c
chore: add biomejs, replace eslint with biome for linting and formatting
devin-ai-integration[bot] Mar 2, 2026
8ed80f7
fix: replace non-null assertions with runtime guards in syncChanges
devin-ai-integration[bot] Mar 2, 2026
996e234
chore: address PR comments - upgrade actions, vitest v4, log errors, …
devin-ai-integration[bot] Mar 2, 2026
d2bcf06
docs: add CHANGELOG.md
devin-ai-integration[bot] Mar 2, 2026
3bfab34
docs: remove [Unreleased] from changelog
devin-ai-integration[bot] Mar 2, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
10 changes: 8 additions & 2 deletions dist/index.js
Original file line number Diff line number Diff line change
Expand Up @@ -39368,9 +39368,15 @@ async function updateFromSourceSpec(token, branch, autoMerge) {
await exec.exec("git", ["add", "."], { silent: true });
await exec.exec("git", ["commit", "-m", "Update API specifications with fern api update"], { silent: true });
core.info(`Pushing changes to branch: ${branch}`);
await exec.exec("git", ["push", "--force", "--verbose", "origin", branch], { silent: false });
await exec.exec("git", ["push", "--verbose", "origin", branch], { silent: false });
if (!autoMerge) {
await createPR(octokit, owner, repo, branch, github.context.ref.replace("refs/heads/", ""), true);
const existingPRNumber = await prExists(owner, repo, branch, octokit);
if (existingPRNumber) {
core.info(`PR #${existingPRNumber} already exists for branch '${branch}'. New commit has been pushed to the existing PR.`);
}
else {
await createPR(octokit, owner, repo, branch, github.context.ref.replace("refs/heads/", ""), true);
}
}
else {
core.info(`Changes pushed directly to branch '${branch}' because auto-merge is enabled.`);
Expand Down
20 changes: 20 additions & 0 deletions jest.config.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
module.exports = {
preset: "ts-jest",
testEnvironment: "node",
transform: {
"^.+\\.ts$": [
"ts-jest",
{
tsconfig: {
module: "commonjs",
moduleResolution: "node",
esModuleInterop: true,
strict: true,
target: "ES2022",
lib: ["ES2022"],
},
},
],
},
moduleFileExtensions: ["ts", "js"],
};
Loading