@straiffi/archon 1.2.12 → 1.2.13

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -5,10 +5,10 @@
5
5
  <link rel="icon" type="image/svg+xml" href="/favicon.svg" />
6
6
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
7
7
  <title>Archon</title>
8
- <script type="module" crossorigin src="/assets/index-H9DIfzZA.js"></script>
8
+ <script type="module" crossorigin src="/assets/index-DjNzaUeI.js"></script>
9
9
  <link rel="modulepreload" crossorigin href="/assets/rolldown-runtime-BYbx6iT9.js">
10
- <link rel="modulepreload" crossorigin href="/assets/badge-DtLPY3ow.js">
11
- <link rel="stylesheet" crossorigin href="/assets/index-BrRotzsY.css">
10
+ <link rel="modulepreload" crossorigin href="/assets/dropdown-menu-CeChQYkP.js">
11
+ <link rel="stylesheet" crossorigin href="/assets/index-BlAMKuS9.css">
12
12
  </head>
13
13
  <body>
14
14
  <div id="root"></div>
@@ -15,7 +15,7 @@ import { resolveChatSessionTarget } from './lib/chatTargets.js';
15
15
  import { createChatMessage, getChatMessage, updateChatMessageContent } from './lib/chatMessages.js';
16
16
  import { attachChatTicketProposalsToMessageContent } from './lib/chatTicketProposals.js';
17
17
  import { createCorsOriginResolver, parseCorsOrigins } from './lib/cors.js';
18
- import { branchExistsLocally, commitGitChanges, createWorktreeAsync, deleteWorktree, getBundleReviewDiffForCwd, getGitDiffData, getGitDiffFiles, getGitStatus, getGitUnifiedDiff, getProjectBranch, getProjectBranchSuggestions, getSelectedGitUnifiedDiff, listUnpushedCommitsForCwd, pullGitBranch, pushCurrentBranch, resolveExistingWorktreePath, resolveWorktreePath, summarizeTicketDiffFiles, switchProjectBranch, syncWorktreeFilesAsync, undoLatestUnpushedCommitForCwd } from './lib/git.js';
18
+ import { abortGitOperation, branchExistsLocally, commitGitChanges, createWorktreeAsync, deleteWorktree, getBundleReviewDiffForCwd, getGitDiffData, getGitDiffFiles, getGitStatus, getGitUnifiedDiff, getProjectBranch, getProjectBranchSuggestions, getSelectedGitUnifiedDiff, listUnpushedCommitsForCwd, pullGitBranch, pushCurrentBranch, rebaseGitBranchOntoBase, resolveExistingWorktreePath, resolveWorktreePath, summarizeTicketDiffFiles, switchProjectBranch, syncWorktreeFilesAsync, undoLatestUnpushedCommitForCwd } from './lib/git.js';
19
19
  import config from './lib/config.js';
20
20
  import { autoConfigProject, ProjectAutoConfigError } from './lib/projectAutoConfig.js';
21
21
  import { analyzeRepoPath, createInitialCommit, ensureInitialCommitForWorktrees, initializeGitRepo, isInitialCommitRequiredError, } from './lib/projectRepos.js';
@@ -4196,6 +4196,53 @@ app.post('/projects/:id/git-pull', async (req, res) => {
4196
4196
  return res.status(500).json({ error: 'Unable to determine project branch' });
4197
4197
  }
4198
4198
  });
4199
+ app.post('/projects/:id/git-rebase', async (req, res) => {
4200
+ const project = getProjectById(req.params.id);
4201
+ if (!project) {
4202
+ return res.status(404).json({ error: 'Not found' });
4203
+ }
4204
+ const workspace = resolveProjectTargetGitWorkspace(project);
4205
+ if ('error' in workspace) {
4206
+ return res.status(workspace.status).json({ error: workspace.error });
4207
+ }
4208
+ const baseBranch = typeof req.body?.base_branch === 'string' ? req.body.base_branch.trim() : '';
4209
+ try {
4210
+ await rebaseGitBranchOntoBase(workspace.cwd, workspace.branch, workspace.project, baseBranch || null);
4211
+ }
4212
+ catch (error) {
4213
+ return res.status(409).json({ error: getErrorMessage(error) || 'Unable to rebase the current branch right now.' });
4214
+ }
4215
+ try {
4216
+ return res.json(getGitStatus(workspace.cwd, workspace.branch, workspace.project));
4217
+ }
4218
+ catch (error) {
4219
+ console.error(`Failed to read branch after rebase for project ${project.id}:`, error);
4220
+ return res.status(500).json({ error: 'Unable to determine project branch' });
4221
+ }
4222
+ });
4223
+ app.post('/projects/:id/git-abort', async (req, res) => {
4224
+ const project = getProjectById(req.params.id);
4225
+ if (!project) {
4226
+ return res.status(404).json({ error: 'Not found' });
4227
+ }
4228
+ const workspace = resolveProjectTargetGitWorkspace(project);
4229
+ if ('error' in workspace) {
4230
+ return res.status(workspace.status).json({ error: workspace.error });
4231
+ }
4232
+ try {
4233
+ await abortGitOperation(workspace.cwd);
4234
+ }
4235
+ catch (error) {
4236
+ return res.status(409).json({ error: getErrorMessage(error) || 'Unable to abort the current git operation right now.' });
4237
+ }
4238
+ try {
4239
+ return res.json(getGitStatus(workspace.cwd, workspace.branch, workspace.project));
4240
+ }
4241
+ catch (error) {
4242
+ console.error(`Failed to read branch after aborting git operation for project ${project.id}:`, error);
4243
+ return res.status(500).json({ error: 'Unable to determine project branch' });
4244
+ }
4245
+ });
4199
4246
  app.get('/projects/:id/diff', (req, res) => {
4200
4247
  const project = getProjectById(req.params.id);
4201
4248
  if (!project) {
@@ -4324,8 +4371,9 @@ app.post('/projects/:id/git-push', async (req, res) => {
4324
4371
  if ('error' in workspace) {
4325
4372
  return res.status(workspace.status).json({ error: workspace.error });
4326
4373
  }
4374
+ const forceWithLease = req.body?.force_with_lease === true;
4327
4375
  try {
4328
- await pushCurrentBranch(workspace.cwd, workspace.branch);
4376
+ await pushCurrentBranch(workspace.cwd, workspace.branch, { forceWithLease });
4329
4377
  }
4330
4378
  catch (error) {
4331
4379
  return res.status(409).json({ error: getErrorMessage(error) || 'Unable to push the branch right now.' });
@@ -4980,8 +5028,9 @@ app.post('/tickets/:id/git-push', async (req, res) => {
4980
5028
  return res.status(workspace.status).json({ error: workspace.error });
4981
5029
  }
4982
5030
  const previousTickets = listTicketsInRunContext(ticket);
5031
+ const forceWithLease = req.body?.force_with_lease === true;
4983
5032
  try {
4984
- await pushCurrentBranch(workspace.cwd, workspace.branch);
5033
+ await pushCurrentBranch(workspace.cwd, workspace.branch, { forceWithLease });
4985
5034
  }
4986
5035
  catch (error) {
4987
5036
  return res.status(409).json({ error: getErrorMessage(error) || 'Unable to push the branch right now.' });