agkan 3.6.0 → 3.10.0

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.
Files changed (60) hide show
  1. package/dist/board/BulkRunService.d.ts +2 -0
  2. package/dist/board/BulkRunService.d.ts.map +1 -1
  3. package/dist/board/BulkRunService.js +23 -5
  4. package/dist/board/BulkRunService.js.map +1 -1
  5. package/dist/board/boardRenderer.d.ts.map +1 -1
  6. package/dist/board/boardRenderer.js +6 -1
  7. package/dist/board/boardRenderer.js.map +1 -1
  8. package/dist/board/boardRoutes.d.ts.map +1 -1
  9. package/dist/board/boardRoutes.js +48 -4
  10. package/dist/board/boardRoutes.js.map +1 -1
  11. package/dist/board/boardStyles.d.ts +1 -1
  12. package/dist/board/boardStyles.d.ts.map +1 -1
  13. package/dist/board/boardStyles.js +27 -5
  14. package/dist/board/boardStyles.js.map +1 -1
  15. package/dist/board/client/main.js +383 -50
  16. package/dist/board/server.js +1 -1
  17. package/dist/board/server.js.map +1 -1
  18. package/dist/cli/commands/agent-guide.d.ts.map +1 -1
  19. package/dist/cli/commands/agent-guide.js +8 -2
  20. package/dist/cli/commands/agent-guide.js.map +1 -1
  21. package/dist/cli/commands/task/add-helpers.d.ts.map +1 -1
  22. package/dist/cli/commands/task/add-helpers.js +1 -0
  23. package/dist/cli/commands/task/add-helpers.js.map +1 -1
  24. package/dist/cli/commands/task/add.d.ts.map +1 -1
  25. package/dist/cli/commands/task/add.js +2 -0
  26. package/dist/cli/commands/task/add.js.map +1 -1
  27. package/dist/cli/commands/task/copy.d.ts.map +1 -1
  28. package/dist/cli/commands/task/copy.js +2 -0
  29. package/dist/cli/commands/task/copy.js.map +1 -1
  30. package/dist/cli/commands/task/get.d.ts.map +1 -1
  31. package/dist/cli/commands/task/get.js +4 -0
  32. package/dist/cli/commands/task/get.js.map +1 -1
  33. package/dist/cli/commands/task/update-helpers.d.ts +1 -0
  34. package/dist/cli/commands/task/update-helpers.d.ts.map +1 -1
  35. package/dist/cli/commands/task/update-helpers.js +13 -4
  36. package/dist/cli/commands/task/update-helpers.js.map +1 -1
  37. package/dist/cli/commands/task/update.d.ts.map +1 -1
  38. package/dist/cli/commands/task/update.js +5 -1
  39. package/dist/cli/commands/task/update.js.map +1 -1
  40. package/dist/db/adapters/sqlite-storage-backend.d.ts.map +1 -1
  41. package/dist/db/adapters/sqlite-storage-backend.js +4 -3
  42. package/dist/db/adapters/sqlite-storage-backend.js.map +1 -1
  43. package/dist/db/migrations/20260516000000_add_branch_to_tasks.d.ts +3 -0
  44. package/dist/db/migrations/20260516000000_add_branch_to_tasks.d.ts.map +1 -0
  45. package/dist/db/migrations/20260516000000_add_branch_to_tasks.js +10 -0
  46. package/dist/db/migrations/20260516000000_add_branch_to_tasks.js.map +1 -0
  47. package/dist/db/migrations/index.d.ts.map +1 -1
  48. package/dist/db/migrations/index.js +6 -0
  49. package/dist/db/migrations/index.js.map +1 -1
  50. package/dist/hooks/hook-session-start.mjs +23 -0
  51. package/dist/hooks/hook-stop.mjs +18 -4
  52. package/dist/models/Task.d.ts +7 -0
  53. package/dist/models/Task.d.ts.map +1 -1
  54. package/dist/models/Task.js +5 -0
  55. package/dist/models/Task.js.map +1 -1
  56. package/dist/terminal/PtySessionService.d.ts +2 -1
  57. package/dist/terminal/PtySessionService.d.ts.map +1 -1
  58. package/dist/terminal/PtySessionService.js +37 -6
  59. package/dist/terminal/PtySessionService.js.map +1 -1
  60. package/package.json +1 -1
@@ -9924,6 +9924,57 @@ Move task to "${label}"?`);
9924
9924
  renderPills();
9925
9925
  }
9926
9926
 
9927
+ // src/board/client/connectionStatus.ts
9928
+ var streamStates = {
9929
+ board: "connecting",
9930
+ attention: "connecting",
9931
+ "run-logs": "connected"
9932
+ // Not always active; treated as connected when not in use
9933
+ };
9934
+ var activeRunLogs = false;
9935
+ var listeners = [];
9936
+ function computeOverallState() {
9937
+ const monitored = activeRunLogs ? ["board", "attention", "run-logs"] : ["board", "attention"];
9938
+ if (monitored.some((k) => streamStates[k] === "disconnected")) return "disconnected";
9939
+ if (monitored.some((k) => streamStates[k] === "connecting")) return "connecting";
9940
+ return "connected";
9941
+ }
9942
+ var lastEmitted = null;
9943
+ function notify() {
9944
+ const state = computeOverallState();
9945
+ if (state === lastEmitted) return;
9946
+ lastEmitted = state;
9947
+ listeners.forEach((fn2) => fn2(state));
9948
+ }
9949
+ function setStreamState(key, state) {
9950
+ streamStates[key] = state;
9951
+ notify();
9952
+ }
9953
+ function setRunLogsActive(active) {
9954
+ activeRunLogs = active;
9955
+ if (!active) streamStates["run-logs"] = "connected";
9956
+ notify();
9957
+ }
9958
+ function onConnectionStateChange(fn2) {
9959
+ listeners.push(fn2);
9960
+ fn2(computeOverallState());
9961
+ return () => {
9962
+ const idx = listeners.indexOf(fn2);
9963
+ if (idx !== -1) listeners.splice(idx, 1);
9964
+ };
9965
+ }
9966
+ var reconnectCallbacks = [];
9967
+ function registerReconnect(fn2) {
9968
+ reconnectCallbacks.push(fn2);
9969
+ return () => {
9970
+ const idx = reconnectCallbacks.indexOf(fn2);
9971
+ if (idx !== -1) reconnectCallbacks.splice(idx, 1);
9972
+ };
9973
+ }
9974
+ function triggerReconnectAll() {
9975
+ reconnectCallbacks.forEach((fn2) => fn2());
9976
+ }
9977
+
9927
9978
  // src/board/client/boardPolling.ts
9928
9979
  var activeFilters = { tagIds: [], priorities: [], assignee: "", searchText: "" };
9929
9980
  function buildFilterParams() {
@@ -10078,17 +10129,112 @@ Move task to "${label}"?`);
10078
10129
  }
10079
10130
  }
10080
10131
  function initBoardPolling() {
10081
- const es2 = new EventSource("/api/board/stream");
10082
- es2.addEventListener("update", () => {
10083
- if (draggedCard !== null || isPendingStatusUpdate) return;
10084
- refreshBoardCards();
10085
- });
10132
+ let backoffMs = 1e3;
10133
+ let reconnectTimer = null;
10134
+ let es2;
10135
+ let stopped = false;
10136
+ function connect() {
10137
+ es2 = new EventSource("/api/board/stream");
10138
+ setStreamState("board", "connecting");
10139
+ es2.addEventListener("open", () => {
10140
+ setStreamState("board", "connected");
10141
+ backoffMs = 1e3;
10142
+ });
10143
+ es2.addEventListener("update", () => {
10144
+ if (draggedCard !== null || isPendingStatusUpdate) return;
10145
+ refreshBoardCards();
10146
+ });
10147
+ es2.onerror = () => {
10148
+ if (stopped) return;
10149
+ setStreamState("board", "disconnected");
10150
+ es2.close();
10151
+ reconnectTimer = setTimeout(() => {
10152
+ backoffMs = Math.min(backoffMs * 2, 3e4);
10153
+ connect();
10154
+ }, backoffMs);
10155
+ };
10156
+ }
10157
+ function reconnectNow() {
10158
+ if (stopped) return;
10159
+ if (reconnectTimer !== null) {
10160
+ clearTimeout(reconnectTimer);
10161
+ reconnectTimer = null;
10162
+ }
10163
+ es2.close();
10164
+ backoffMs = 1e3;
10165
+ connect();
10166
+ }
10167
+ connect();
10168
+ registerReconnect(reconnectNow);
10086
10169
  }
10087
10170
 
10088
10171
  // src/board/client/addTaskModal.ts
10172
+ var BRANCH_AUTO_GENERATE = "<auto-generate>";
10173
+ var BRANCH_AUTO_GENERATE_DISPLAY = "\u2728 Auto-generate on run";
10089
10174
  var selectedTags = [];
10090
10175
  var tagInputValue = "";
10091
10176
  var tagFocusedIndex = -1;
10177
+ var branchSuggestions = [];
10178
+ var branchSuggestionsLoaded = false;
10179
+ var branchInternalValue = BRANCH_AUTO_GENERATE;
10180
+ async function loadBranchSuggestions() {
10181
+ if (branchSuggestionsLoaded) return;
10182
+ try {
10183
+ const res = await fetch("/api/git/branches");
10184
+ if (!res.ok) throw new Error("Server error");
10185
+ const data = await res.json();
10186
+ branchSuggestions = data.branches;
10187
+ } catch {
10188
+ branchSuggestions = [];
10189
+ }
10190
+ branchSuggestionsLoaded = true;
10191
+ }
10192
+ function setBranchAutoMode(input) {
10193
+ branchInternalValue = BRANCH_AUTO_GENERATE;
10194
+ input.value = BRANCH_AUTO_GENERATE_DISPLAY;
10195
+ input.readOnly = true;
10196
+ input.classList.add("branch-auto-mode");
10197
+ }
10198
+ function setBranchManualMode(input, branch) {
10199
+ branchInternalValue = branch;
10200
+ input.value = branch;
10201
+ input.readOnly = false;
10202
+ input.classList.remove("branch-auto-mode");
10203
+ }
10204
+ function renderBranchDropdown(dropdown, inputValue) {
10205
+ const input = document.getElementById("add-branch");
10206
+ const isAutoMode = branchInternalValue === BRANCH_AUTO_GENERATE;
10207
+ const q2 = isAutoMode ? "" : inputValue.trim().toLowerCase();
10208
+ const filtered = q2 ? branchSuggestions.filter((b2) => b2.toLowerCase().includes(q2)).slice(0, 10) : branchSuggestions.slice(0, 10);
10209
+ dropdown.innerHTML = "";
10210
+ const autoOpt = document.createElement("div");
10211
+ autoOpt.className = "branch-select-option branch-select-option-auto";
10212
+ autoOpt.textContent = BRANCH_AUTO_GENERATE_DISPLAY;
10213
+ if (branchInternalValue === BRANCH_AUTO_GENERATE) {
10214
+ autoOpt.classList.add("selected");
10215
+ }
10216
+ autoOpt.addEventListener("mousedown", (e) => {
10217
+ e.preventDefault();
10218
+ if (input) setBranchAutoMode(input);
10219
+ dropdown.style.display = "none";
10220
+ });
10221
+ dropdown.appendChild(autoOpt);
10222
+ const separator = document.createElement("div");
10223
+ separator.className = "branch-select-separator";
10224
+ dropdown.appendChild(separator);
10225
+ filtered.forEach((branch) => {
10226
+ const opt = document.createElement("div");
10227
+ opt.className = "branch-select-option";
10228
+ opt.textContent = branch;
10229
+ opt.addEventListener("mousedown", (e) => {
10230
+ e.preventDefault();
10231
+ if (input) setBranchManualMode(input, branch);
10232
+ dropdown.style.display = "none";
10233
+ });
10234
+ dropdown.appendChild(opt);
10235
+ });
10236
+ dropdown.style.display = "block";
10237
+ }
10092
10238
  function getFilteredAddTags() {
10093
10239
  const selectedIds = new Set(selectedTags.map((t) => t.id));
10094
10240
  const available = allAvailableTags.filter((t) => !selectedIds.has(t.id));
@@ -10289,6 +10435,10 @@ Move task to "${label}"?`);
10289
10435
  if (control && input) {
10290
10436
  renderAddTagPills(control, input);
10291
10437
  }
10438
+ const branchInput = document.getElementById("add-branch");
10439
+ if (branchInput) setBranchAutoMode(branchInput);
10440
+ const branchDropdown = document.getElementById("add-branch-dropdown");
10441
+ if (branchDropdown) branchDropdown.style.display = "none";
10292
10442
  elements.addMetadataRows.innerHTML = "";
10293
10443
  }
10294
10444
  function openAddModal(elements, status) {
@@ -10317,7 +10467,8 @@ Move task to "${label}"?`);
10317
10467
  status,
10318
10468
  priority: elements.addPriority.value || null,
10319
10469
  tags: tags.length > 0 ? tags : void 0,
10320
- metadata: metadata.length > 0 ? metadata : void 0
10470
+ metadata: metadata.length > 0 ? metadata : void 0,
10471
+ branch: branchInternalValue || void 0
10321
10472
  })
10322
10473
  });
10323
10474
  if (!res.ok) throw new Error("Server error");
@@ -10338,6 +10489,27 @@ Move task to "${label}"?`);
10338
10489
  addMetadataRows: document.getElementById("add-metadata-rows")
10339
10490
  };
10340
10491
  initAddTagSelector();
10492
+ const branchInput = document.getElementById("add-branch");
10493
+ const branchDropdown = document.getElementById("add-branch-dropdown");
10494
+ if (branchInput && branchDropdown) {
10495
+ branchInput.addEventListener("focus", async () => {
10496
+ await loadBranchSuggestions();
10497
+ renderBranchDropdown(branchDropdown, branchInput.value);
10498
+ });
10499
+ branchInput.addEventListener("input", () => {
10500
+ if (branchInternalValue === BRANCH_AUTO_GENERATE) {
10501
+ branchInput.readOnly = false;
10502
+ branchInput.classList.remove("branch-auto-mode");
10503
+ }
10504
+ branchInternalValue = branchInput.value;
10505
+ renderBranchDropdown(branchDropdown, branchInput.value);
10506
+ });
10507
+ branchInput.addEventListener("blur", () => {
10508
+ setTimeout(() => {
10509
+ branchDropdown.style.display = "none";
10510
+ }, 150);
10511
+ });
10512
+ }
10341
10513
  document.querySelectorAll(".add-btn").forEach((btn) => {
10342
10514
  btn.addEventListener("click", (e) => {
10343
10515
  e.stopPropagation();
@@ -10477,6 +10649,9 @@ Move task to "${label}"?`);
10477
10649
  }
10478
10650
  function subscribeRunLogs(taskId, onUpdate, onError) {
10479
10651
  const es2 = new EventSource("/api/claude/tasks/" + taskId + "/run-logs/stream");
10652
+ es2.addEventListener("open", () => {
10653
+ setStreamState("run-logs", "connected");
10654
+ });
10480
10655
  es2.addEventListener("update", (event) => {
10481
10656
  const msgEvent = event;
10482
10657
  try {
@@ -10485,11 +10660,16 @@ Move task to "${label}"?`);
10485
10660
  } catch {
10486
10661
  }
10487
10662
  });
10488
- es2.onerror = () => onError();
10663
+ es2.onerror = () => {
10664
+ setStreamState("run-logs", "disconnected");
10665
+ onError();
10666
+ };
10489
10667
  return es2;
10490
10668
  }
10491
10669
 
10492
10670
  // src/board/client/detailPanelHtml.ts
10671
+ var BRANCH_AUTO_GENERATE2 = "<auto-generate>";
10672
+ var BRANCH_AUTO_GENERATE_DISPLAY2 = "\u2728 Auto-generate on run";
10493
10673
  function renderCommentItemHtml(comment, taskId) {
10494
10674
  const authorText = comment.author ? escapeHtmlClient(comment.author) : "Anonymous";
10495
10675
  const dateRel = relativeTime(comment.created_at);
@@ -10545,6 +10725,19 @@ Move task to "${label}"?`);
10545
10725
  html += "</select></div>";
10546
10726
  return html;
10547
10727
  }
10728
+ function renderBranchField(currentBranch) {
10729
+ const isAuto = currentBranch === null || currentBranch === void 0 || currentBranch === BRANCH_AUTO_GENERATE2;
10730
+ const displayValue = isAuto ? BRANCH_AUTO_GENERATE_DISPLAY2 : escapeHtmlClient(currentBranch);
10731
+ const readOnlyAttr = isAuto ? " readonly" : "";
10732
+ const autoClass = isAuto ? " branch-auto-mode" : "";
10733
+ let html = '<div class="detail-field">';
10734
+ html += '<div class="detail-field-label">Branch</div>';
10735
+ html += '<div class="branch-select-wrapper" id="detail-branch-wrapper">';
10736
+ html += '<input id="detail-edit-branch" class="detail-edit-input' + autoClass + '" type="text" value="' + displayValue + '" autocomplete="off"' + readOnlyAttr + ">";
10737
+ html += '<div id="detail-branch-dropdown" class="branch-select-dropdown" style="display:none;"></div>';
10738
+ html += "</div></div>";
10739
+ return html;
10740
+ }
10548
10741
  function renderRelationsHtml(parent, blockedBy, blocking) {
10549
10742
  let html = '<div class="detail-relations">';
10550
10743
  if (parent) {
@@ -10611,6 +10804,7 @@ Move task to "${label}"?`);
10611
10804
  let html = "";
10612
10805
  html += renderStatusField(task.status, allStatuses, statusLabels);
10613
10806
  html += renderPriorityField(task.priority, allPriorities);
10807
+ html += renderBranchField(task.branch);
10614
10808
  html += '<div class="detail-field"><div class="detail-field-label">Tags</div>';
10615
10809
  html += '<div id="detail-tags-container"></div></div>';
10616
10810
  const hasRelations = parent || blockedBy.length > 0 || blocking.length > 0;
@@ -10661,16 +10855,34 @@ Move task to "${label}"?`);
10661
10855
  }
10662
10856
 
10663
10857
  // src/board/client/detailPanel.ts
10858
+ var BRANCH_AUTO_GENERATE3 = "<auto-generate>";
10859
+ var BRANCH_AUTO_GENERATE_DISPLAY3 = "\u2728 Auto-generate on run";
10664
10860
  var detailTaskId = null;
10665
10861
  var lastTab = "details";
10666
10862
  var runLogEventSource = null;
10667
10863
  var currentFetchController = null;
10668
10864
  var runLogLoadSeq = 0;
10669
10865
  var runLogsLoadedTaskId = null;
10866
+ var branchSuggestions2 = [];
10867
+ var branchSuggestionsLoaded2 = false;
10868
+ var branchInternalValue2 = BRANCH_AUTO_GENERATE3;
10869
+ function setDetailBranchAutoMode(input) {
10870
+ branchInternalValue2 = BRANCH_AUTO_GENERATE3;
10871
+ input.value = BRANCH_AUTO_GENERATE_DISPLAY3;
10872
+ input.readOnly = true;
10873
+ input.classList.add("branch-auto-mode");
10874
+ }
10875
+ function setDetailBranchManualMode(input, branch) {
10876
+ branchInternalValue2 = branch;
10877
+ input.value = branch;
10878
+ input.readOnly = false;
10879
+ input.classList.remove("branch-auto-mode");
10880
+ }
10670
10881
  function closeRunLogStream() {
10671
10882
  if (runLogEventSource !== null) {
10672
10883
  runLogEventSource.close();
10673
10884
  runLogEventSource = null;
10885
+ setRunLogsActive(false);
10674
10886
  }
10675
10887
  }
10676
10888
  function getDetailTaskId() {
@@ -10720,6 +10932,12 @@ Move task to "${label}"?`);
10720
10932
  }
10721
10933
  const footer = document.getElementById("detail-panel-footer");
10722
10934
  if (footer) footer.style.display = tabName === "details" ? "" : "none";
10935
+ if (tabName === "details") {
10936
+ const textarea = document.getElementById("detail-edit-body");
10937
+ if (textarea) {
10938
+ requestAnimationFrame(() => autoResizeTextarea(textarea));
10939
+ }
10940
+ }
10723
10941
  if (tabName === "run-logs" && detailTaskId !== null && (!isSameTab || runLogsLoadedTaskId !== detailTaskId)) {
10724
10942
  loadRunLogs(detailTaskId);
10725
10943
  }
@@ -10954,6 +11172,7 @@ Move task to "${label}"?`);
10954
11172
  }
10955
11173
  pane.removeEventListener("click", handleRunLogToggle);
10956
11174
  pane.addEventListener("click", handleRunLogToggle);
11175
+ setRunLogsActive(true);
10957
11176
  runLogEventSource = subscribeRunLogs(
10958
11177
  taskId,
10959
11178
  (logs) => {
@@ -10977,6 +11196,76 @@ Move task to "${label}"?`);
10977
11196
  const item = target.closest(".run-log-item");
10978
11197
  if (item) item.classList.toggle("open");
10979
11198
  }
11199
+ async function loadDetailBranchSuggestions() {
11200
+ if (branchSuggestionsLoaded2) return;
11201
+ try {
11202
+ const res = await fetch("/api/git/branches");
11203
+ if (!res.ok) throw new Error("Server error");
11204
+ const data = await res.json();
11205
+ branchSuggestions2 = data.branches;
11206
+ } catch {
11207
+ branchSuggestions2 = [];
11208
+ }
11209
+ branchSuggestionsLoaded2 = true;
11210
+ }
11211
+ function renderDetailBranchDropdown(dropdown, inputValue) {
11212
+ const input = document.getElementById("detail-edit-branch");
11213
+ const isAutoMode = branchInternalValue2 === BRANCH_AUTO_GENERATE3;
11214
+ const q2 = isAutoMode ? "" : inputValue.trim().toLowerCase();
11215
+ const filtered = q2 ? branchSuggestions2.filter((b2) => b2.toLowerCase().includes(q2)).slice(0, 10) : branchSuggestions2.slice(0, 10);
11216
+ dropdown.innerHTML = "";
11217
+ const autoOpt = document.createElement("div");
11218
+ autoOpt.className = "branch-select-option branch-select-option-auto";
11219
+ autoOpt.textContent = BRANCH_AUTO_GENERATE_DISPLAY3;
11220
+ if (branchInternalValue2 === BRANCH_AUTO_GENERATE3) {
11221
+ autoOpt.classList.add("selected");
11222
+ }
11223
+ autoOpt.addEventListener("mousedown", (e) => {
11224
+ e.preventDefault();
11225
+ if (input) setDetailBranchAutoMode(input);
11226
+ dropdown.style.display = "none";
11227
+ });
11228
+ dropdown.appendChild(autoOpt);
11229
+ const separator = document.createElement("div");
11230
+ separator.className = "branch-select-separator";
11231
+ dropdown.appendChild(separator);
11232
+ filtered.forEach((branch) => {
11233
+ const opt = document.createElement("div");
11234
+ opt.className = "branch-select-option";
11235
+ opt.textContent = branch;
11236
+ opt.addEventListener("mousedown", (e) => {
11237
+ e.preventDefault();
11238
+ if (input) setDetailBranchManualMode(input, branch);
11239
+ dropdown.style.display = "none";
11240
+ });
11241
+ dropdown.appendChild(opt);
11242
+ });
11243
+ dropdown.style.display = "block";
11244
+ }
11245
+ function wireBranchField(currentBranch) {
11246
+ const branchInput = document.getElementById("detail-edit-branch");
11247
+ const branchDropdown = document.getElementById("detail-branch-dropdown");
11248
+ const isAuto = currentBranch === null || currentBranch === void 0 || currentBranch === BRANCH_AUTO_GENERATE3;
11249
+ branchInternalValue2 = isAuto ? BRANCH_AUTO_GENERATE3 : currentBranch;
11250
+ if (!branchInput || !branchDropdown) return;
11251
+ branchInput.addEventListener("focus", async () => {
11252
+ await loadDetailBranchSuggestions();
11253
+ renderDetailBranchDropdown(branchDropdown, branchInput.value);
11254
+ });
11255
+ branchInput.addEventListener("input", () => {
11256
+ if (branchInternalValue2 === BRANCH_AUTO_GENERATE3) {
11257
+ branchInput.readOnly = false;
11258
+ branchInput.classList.remove("branch-auto-mode");
11259
+ }
11260
+ branchInternalValue2 = branchInput.value;
11261
+ renderDetailBranchDropdown(branchDropdown, branchInput.value);
11262
+ });
11263
+ branchInput.addEventListener("blur", () => {
11264
+ setTimeout(() => {
11265
+ branchDropdown.style.display = "none";
11266
+ }, 150);
11267
+ });
11268
+ }
10980
11269
  function renderDetailPanel(data) {
10981
11270
  document.getElementById("detail-panel-update-warning")?.remove();
10982
11271
  const detailPanelTitle = document.getElementById("detail-panel-title");
@@ -10996,6 +11285,7 @@ Move task to "${label}"?`);
10996
11285
  });
10997
11286
  });
10998
11287
  }
11288
+ wireBranchField(data.task.branch);
10999
11289
  const footer = document.getElementById("detail-panel-footer");
11000
11290
  if (footer) {
11001
11291
  footer.innerHTML = '<span class="detail-footer-timestamp">created ' + relativeTime(task.created_at) + " &middot; updated " + relativeTime(task.updated_at) + '</span><button id="detail-save-btn">Save</button>';
@@ -11003,36 +11293,16 @@ Move task to "${label}"?`);
11003
11293
  }
11004
11294
  const textarea = document.getElementById("detail-edit-body");
11005
11295
  if (textarea) {
11006
- const detailPanel = document.getElementById("detail-panel");
11007
- if (detailPanel && !detailPanel.classList.contains("open")) {
11008
- const prefersReducedMotion = window.matchMedia("(prefers-reduced-motion: reduce)").matches;
11009
- if (prefersReducedMotion) {
11010
- autoResizeTextarea(textarea);
11011
- } else {
11012
- let done = false;
11013
- const finish = () => {
11014
- if (done) return;
11015
- done = true;
11016
- detailPanel.removeEventListener("transitionend", onTransitionEnd);
11017
- requestAnimationFrame(() => {
11018
- requestAnimationFrame(() => {
11019
- autoResizeTextarea(textarea);
11020
- });
11021
- });
11022
- };
11023
- const onTransitionEnd = (e) => {
11024
- if (e.propertyName === "width") finish();
11025
- };
11026
- detailPanel.addEventListener("transitionend", onTransitionEnd);
11027
- setTimeout(finish, 260);
11028
- }
11029
- } else {
11296
+ const ro2 = new ResizeObserver(() => {
11297
+ autoResizeTextarea(textarea);
11298
+ });
11299
+ ro2.observe(textarea);
11300
+ setTimeout(() => ro2.disconnect(), 400);
11301
+ requestAnimationFrame(() => {
11030
11302
  requestAnimationFrame(() => {
11031
- requestAnimationFrame(() => {
11032
- autoResizeTextarea(textarea);
11033
- });
11303
+ autoResizeTextarea(textarea);
11034
11304
  });
11035
- }
11305
+ });
11036
11306
  textarea.addEventListener("input", () => {
11037
11307
  autoResizeTextarea(textarea);
11038
11308
  });
@@ -11115,7 +11385,8 @@ Move task to "${label}"?`);
11115
11385
  title,
11116
11386
  body: bodyEl ? bodyEl.value.trim() || null : null,
11117
11387
  status: statusEl ? statusEl.value : void 0,
11118
- priority: priorityEl ? priorityEl.value || null : null
11388
+ priority: priorityEl ? priorityEl.value || null : null,
11389
+ branch: branchInternalValue2 || null
11119
11390
  };
11120
11391
  }
11121
11392
  async function saveDetailTask() {
@@ -11652,6 +11923,30 @@ Move task to "${label}"?`);
11652
11923
  }
11653
11924
  });
11654
11925
  }
11926
+ var STATE_ICONS = {
11927
+ connected: "\u{1F7E2}",
11928
+ connecting: "\u{1F7E1}",
11929
+ disconnected: "\u{1F534}"
11930
+ };
11931
+ var STATE_TITLES = {
11932
+ connected: "Connected",
11933
+ connecting: "Connecting...",
11934
+ disconnected: "Disconnected \u2014 Click to reconnect"
11935
+ };
11936
+ function initConnectionStatusBtn() {
11937
+ const btn = document.getElementById("connection-status-btn");
11938
+ if (!btn) return;
11939
+ onConnectionStateChange((state) => {
11940
+ btn.className = `connection-status-btn ${state}`;
11941
+ btn.textContent = STATE_ICONS[state] ?? "\u26AA";
11942
+ btn.title = STATE_TITLES[state] ?? "";
11943
+ });
11944
+ btn.addEventListener("click", () => {
11945
+ if (btn.classList.contains("disconnected")) {
11946
+ triggerReconnectAll();
11947
+ }
11948
+ });
11949
+ }
11655
11950
  function initBurgerMenu() {
11656
11951
  const burgerBtn = document.getElementById("burger-menu-btn");
11657
11952
  const burgerDropdown = document.getElementById("burger-menu-dropdown");
@@ -11662,6 +11957,7 @@ Move task to "${label}"?`);
11662
11957
  initImportModal(burgerDropdown);
11663
11958
  initVersionModal(burgerDropdown);
11664
11959
  initDarkMode();
11960
+ initConnectionStatusBtn();
11665
11961
  }
11666
11962
 
11667
11963
  // src/board/client/dependencyVisualization.ts
@@ -11915,21 +12211,58 @@ Move task to "${label}"?`);
11915
12211
  }
11916
12212
  }
11917
12213
  function startAttentionStream() {
11918
- const es2 = new EventSource("/api/attention/stream");
11919
- es2.onmessage = (e) => {
11920
- let msg;
11921
- try {
11922
- msg = JSON.parse(e.data);
11923
- } catch {
11924
- return;
11925
- }
11926
- if (msg.type === "snapshot") {
11927
- msg.taskIds.forEach((id) => applyAttention(id, true));
11928
- } else if (msg.type === "update") {
11929
- applyAttention(msg.taskId, msg.needsAttention);
11930
- }
12214
+ let backoffMs = 1e3;
12215
+ let reconnectTimer = null;
12216
+ let es2;
12217
+ let stopped = false;
12218
+ function connect() {
12219
+ es2 = new EventSource("/api/attention/stream");
12220
+ setStreamState("attention", "connecting");
12221
+ es2.addEventListener("open", () => {
12222
+ setStreamState("attention", "connected");
12223
+ backoffMs = 1e3;
12224
+ });
12225
+ es2.onmessage = (e) => {
12226
+ let msg;
12227
+ try {
12228
+ msg = JSON.parse(e.data);
12229
+ } catch {
12230
+ return;
12231
+ }
12232
+ if (msg.type === "snapshot") {
12233
+ msg.taskIds.forEach((id) => applyAttention(id, true));
12234
+ } else if (msg.type === "update") {
12235
+ applyAttention(msg.taskId, msg.needsAttention);
12236
+ }
12237
+ };
12238
+ es2.onerror = () => {
12239
+ if (stopped) return;
12240
+ setStreamState("attention", "disconnected");
12241
+ es2.close();
12242
+ reconnectTimer = setTimeout(() => {
12243
+ backoffMs = Math.min(backoffMs * 2, 3e4);
12244
+ connect();
12245
+ }, backoffMs);
12246
+ };
12247
+ }
12248
+ function reconnectNow() {
12249
+ if (stopped) return;
12250
+ if (reconnectTimer !== null) {
12251
+ clearTimeout(reconnectTimer);
12252
+ reconnectTimer = null;
12253
+ }
12254
+ es2.close();
12255
+ backoffMs = 1e3;
12256
+ connect();
12257
+ }
12258
+ connect();
12259
+ const unregister = registerReconnect(reconnectNow);
12260
+ return () => {
12261
+ stopped = true;
12262
+ if (reconnectTimer !== null) clearTimeout(reconnectTimer);
12263
+ unregister();
12264
+ es2.close();
11931
12265
  };
11932
- return () => es2.close();
11933
12266
  }
11934
12267
 
11935
12268
  // src/board/client/bulkRunButton.ts
@@ -50,7 +50,7 @@ function startBoardServer(port, boardTitle) {
50
50
  const app = new hono_1.Hono();
51
51
  const resolvedConfigDir = path_1.default.join(process.cwd(), (0, config_1.getDefaultDirName)());
52
52
  const ptyService = new PtySessionService_1.PtySessionService(resolvedDb, {
53
- boardApiUrl: '',
53
+ boardApiUrl: null,
54
54
  attentionStateService,
55
55
  hookSettingsDataDir,
56
56
  });
@@ -1 +1 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/board/server.ts"],"names":[],"mappings":";;;;;AA0BA,wCA6BC;AAED,4CA8CC;AAvGD,+BAA4B;AAC5B,mDAA0C;AAE1C,gDAAwB;AACxB,2BAA6B;AAC7B,+BAA4B;AAC5B,yDAAsD;AACtD,+DAA4D;AAC5D,uDAAoD;AACpD,iEAA8D;AAC9D,+DAA4D;AAC5D,mEAAgE;AAChE,qEAAkE;AAClE,6EAA0E;AAC1E,mEAAsE;AACtE,iDAAqD;AAErD,yCAAiD;AACjD,+CAMuB;AAEvB,SAAgB,cAAc,CAC5B,WAAyB,EACzB,cAA+B,EAC/B,eAAiC,EACjC,EAAmB,EACnB,UAAmB,EACnB,UAAuB,EACvB,SAAkB,EAClB,cAA+B,EAC/B,gBAAmC,EACnC,iBAAqC;IAErC,MAAM,GAAG,GAAG,IAAI,WAAI,EAAE,CAAC;IACvB,MAAM,iBAAiB,GAAG,SAAS,IAAI,cAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,IAAA,0BAAiB,GAAE,CAAC,CAAC;IACrF,MAAM,UAAU,GAAG,EAAE,IAAI,IAAA,8BAAiB,GAAE,CAAC;IAC7C,MAAM,QAAQ,GAAkB;QAC9B,EAAE,EAAE,WAAW,IAAI,IAAI,yBAAW,CAAC,UAAU,CAAC;QAC9C,GAAG,EAAE,cAAc,IAAI,IAAI,+BAAc,CAAC,UAAU,CAAC;QACrD,IAAI,EAAE,UAAU,IAAI,IAAI,uBAAU,CAAC,UAAU,CAAC;QAC9C,EAAE,EAAE,eAAe,IAAI,IAAI,iCAAe,CAAC,UAAU,CAAC;QACtD,EAAE,EAAE,cAAc,IAAI,IAAI,+BAAc,CAAC,UAAU,CAAC;QACpD,GAAG,EAAE,gBAAgB,IAAI,IAAI,mCAAgB,CAAC,UAAU,CAAC;QACzD,QAAQ,EAAE,UAAU;QACpB,UAAU;QACV,SAAS,EAAE,iBAAiB;QAC5B,iBAAiB;KAClB,CAAC;IACF,IAAA,iCAAmB,EAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;IACnC,OAAO,GAAG,CAAC;AACb,CAAC;AAED,SAAgB,gBAAgB,CAAC,IAAY,EAAE,UAAmB;IAChE,MAAM,UAAU,GAAG,IAAA,8BAAiB,GAAE,CAAC;IAEvC,MAAM,qBAAqB,GAAG,IAAI,6CAAqB,EAAE,CAAC;IAC1D,MAAM,mBAAmB,GAAG,OAAO,CAAC,GAAG,CAAC,cAAc;QACpD,CAAC,CAAC,IAAA,WAAI,EAAC,OAAO,CAAC,GAAG,CAAC,cAAc,EAAE,aAAa,CAAC;QACjD,CAAC,CAAC,IAAA,WAAI,EAAC,IAAA,YAAO,GAAE,EAAE,QAAQ,EAAE,aAAa,CAAC,CAAC;IAE7C,MAAM,GAAG,GAAG,IAAI,WAAI,EAAE,CAAC;IACvB,MAAM,iBAAiB,GAAG,cAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,IAAA,0BAAiB,GAAE,CAAC,CAAC;IACxE,MAAM,UAAU,GAAG,IAAI,qCAAiB,CAAC,UAAU,EAAE;QACnD,WAAW,EAAE,EAAE;QACf,qBAAqB;QACrB,mBAAmB;KACpB,CAAC,CAAC;IACH,MAAM,QAAQ,GAAkB;QAC9B,EAAE,EAAE,IAAI,yBAAW,CAAC,UAAU,CAAC;QAC/B,GAAG,EAAE,IAAI,+BAAc,CAAC,UAAU,CAAC;QACnC,IAAI,EAAE,IAAI,uBAAU,CAAC,UAAU,CAAC;QAChC,EAAE,EAAE,IAAI,iCAAe,CAAC,UAAU,CAAC;QACnC,EAAE,EAAE,IAAI,+BAAc,CAAC,UAAU,CAAC;QAClC,GAAG,EAAE,IAAI,mCAAgB,CAAC,UAAU,CAAC;QACrC,QAAQ,EAAE,UAAU;QACpB,UAAU;QACV,SAAS,EAAE,iBAAiB;QAC5B,iBAAiB,EAAE,UAAU;KAC9B,CAAC;IAEF,IAAA,iCAAmB,EAAC,GAAG,EAAE,QAAQ,CAAC,CAAC;IACnC,IAAA,0CAA4B,EAAC,GAAG,EAAE,EAAE,qBAAqB,EAAE,CAAC,CAAC;IAC7D,IAAA,gCAAkB,EAAC,GAAG,EAAE,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,UAAU,EAAE,CAAC,CAAC;IAClF,IAAA,wCAA0B,EAAC,GAAG,CAAC,CAAC;IAEhC,MAAM,MAAM,GAAG,IAAA,mBAAK,EAAC,EAAE,KAAK,EAAE,GAAG,CAAC,KAAK,EAAE,IAAI,EAAE,EAAE,CAAC,IAAI,EAAE,EAAE;QACxD,MAAM,WAAW,GAAG,oBAAoB,IAAI,CAAC,IAAI,EAAE,CAAC;QACpD,OAAO,CAAC,GAAG,CAAC,yCAAyC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;QAElE,UAAU,CAAC,cAAc,CAAC,WAAW,CAAC,CAAC;QAEvC,MAAM,EAAE,aAAa,EAAE,GAAG,IAAA,yCAAsB,EAAC,UAAU,CAAC,CAAC;QAC7D,MAAM,CAAC,EAAE,CAAC,SAAS,EAAE,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,EAAE,EAAE;YACzC,IAAI,GAAG,CAAC,GAAG,EAAE,UAAU,CAAC,gBAAgB,CAAC,EAAE,CAAC;gBAC1C,aAAa,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;YACnC,CAAC;QACH,CAAC,CAAC,CAAC;IACL,CAAC,CAAW,CAAC;AACf,CAAC"}
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/board/server.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"agent-guide.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/agent-guide.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAyTpC,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAO7D"}
1
+ {"version":3,"file":"agent-guide.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/agent-guide.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAyTpC,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CAY7D"}
@@ -318,8 +318,14 @@ function setupAgentGuideCommand(program) {
318
318
  program
319
319
  .command('agent-guide')
320
320
  .description('Show agent guide for using agkan')
321
- .action(() => {
322
- console.log(AGENT_GUIDE_CONTENT);
321
+ .option('--hook', 'Output as JSON for use in SessionStart hooks')
322
+ .action((options) => {
323
+ if (options.hook) {
324
+ console.log(JSON.stringify({ additionalContext: AGENT_GUIDE_CONTENT }));
325
+ }
326
+ else {
327
+ console.log(AGENT_GUIDE_CONTENT);
328
+ }
323
329
  });
324
330
  }
325
331
  //# sourceMappingURL=agent-guide.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"agent-guide.js","sourceRoot":"","sources":["../../../src/cli/commands/agent-guide.ts"],"names":[],"mappings":";AAAA;;GAEG;;AA2TH,wDAOC;AA9TD,MAAM,mBAAmB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAqT3B,CAAC;AAEF,SAAgB,sBAAsB,CAAC,OAAgB;IACrD,OAAO;SACJ,OAAO,CAAC,aAAa,CAAC;SACtB,WAAW,CAAC,kCAAkC,CAAC;SAC/C,MAAM,CAAC,GAAG,EAAE;QACX,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC;IACnC,CAAC,CAAC,CAAC;AACP,CAAC"}
1
+ {"version":3,"file":"agent-guide.js","sourceRoot":"","sources":["../../../src/cli/commands/agent-guide.ts"],"names":[],"mappings":";AAAA;;GAEG;;AA2TH,wDAYC;AAnUD,MAAM,mBAAmB,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAqT3B,CAAC;AAEF,SAAgB,sBAAsB,CAAC,OAAgB;IACrD,OAAO;SACJ,OAAO,CAAC,aAAa,CAAC;SACtB,WAAW,CAAC,kCAAkC,CAAC;SAC/C,MAAM,CAAC,QAAQ,EAAE,8CAA8C,CAAC;SAChE,MAAM,CAAC,CAAC,OAA2B,EAAE,EAAE;QACtC,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;YACjB,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,CAAC,CAAC,CAAC;QAC1E,CAAC;aAAM,CAAC;YACN,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAAC;QACnC,CAAC;IACH,CAAC,CAAC,CAAC;AACP,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"add-helpers.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/task/add-helpers.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,gBAAgB,EAAe,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAC/E,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAKvC,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAQzD;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,CAOhF;AAED,wBAAgB,qBAAqB,CACnC,gBAAgB,EAAE,gBAAgB,EAClC,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,MAAM,EAAE,EACtB,SAAS,EAAE,MAAM,EAAE,GAClB,IAAI,CAuBN;AAED,wBAAgB,iBAAiB,CAC/B,WAAW,EAAE,WAAW,EACxB,IAAI,EAAE,IAAI,EACV,YAAY,EAAE,MAAM,EAAE,EACtB,SAAS,EAAE,MAAM,EAAE,GAClB;IAAE,UAAU,EAAE,IAAI,GAAG,IAAI,CAAC;IAAC,YAAY,EAAE,IAAI,EAAE,CAAC;IAAC,YAAY,EAAE,IAAI,EAAE,CAAA;CAAE,CAKzE;AAiBD,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,IAAI,EACV,UAAU,EAAE,IAAI,GAAG,IAAI,EACvB,YAAY,EAAE,IAAI,EAAE,EACpB,YAAY,EAAE,IAAI,EAAE,GACnB,MAAM,CAQR;AAED,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,IAAI,EACV,UAAU,EAAE,IAAI,GAAG,IAAI,EACvB,YAAY,EAAE,IAAI,EAAE,EACpB,YAAY,EAAE,IAAI,EAAE,GACnB,IAAI,CAwCN"}
1
+ {"version":3,"file":"add-helpers.d.ts","sourceRoot":"","sources":["../../../../src/cli/commands/task/add-helpers.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,gBAAgB,EAAe,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAC/E,OAAO,EAAE,IAAI,EAAE,MAAM,iBAAiB,CAAC;AAKvC,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAQzD;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,EAAE,CAOhF;AAED,wBAAgB,qBAAqB,CACnC,gBAAgB,EAAE,gBAAgB,EAClC,MAAM,EAAE,MAAM,EACd,YAAY,EAAE,MAAM,EAAE,EACtB,SAAS,EAAE,MAAM,EAAE,GAClB,IAAI,CAuBN;AAED,wBAAgB,iBAAiB,CAC/B,WAAW,EAAE,WAAW,EACxB,IAAI,EAAE,IAAI,EACV,YAAY,EAAE,MAAM,EAAE,EACtB,SAAS,EAAE,MAAM,EAAE,GAClB;IAAE,UAAU,EAAE,IAAI,GAAG,IAAI,CAAC;IAAC,YAAY,EAAE,IAAI,EAAE,CAAC;IAAC,YAAY,EAAE,IAAI,EAAE,CAAA;CAAE,CAKzE;AAkBD,wBAAgB,iBAAiB,CAC/B,IAAI,EAAE,IAAI,EACV,UAAU,EAAE,IAAI,GAAG,IAAI,EACvB,YAAY,EAAE,IAAI,EAAE,EACpB,YAAY,EAAE,IAAI,EAAE,GACnB,MAAM,CAQR;AAED,wBAAgB,gBAAgB,CAC9B,IAAI,EAAE,IAAI,EACV,UAAU,EAAE,IAAI,GAAG,IAAI,EACvB,YAAY,EAAE,IAAI,EAAE,EACpB,YAAY,EAAE,IAAI,EAAE,GACnB,IAAI,CAwCN"}
@@ -77,6 +77,7 @@ function taskToJson(task) {
77
77
  status: task.status,
78
78
  priority: task.priority,
79
79
  parent_id: task.parent_id,
80
+ branch: task.branch,
80
81
  created_at: task.created_at,
81
82
  updated_at: task.updated_at,
82
83
  };