@sideboard-ai/core 0.1.318 → 0.1.320

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 (61) hide show
  1. package/dist/{abletime-TKAFNXCM.js → abletime-CRRLEYTE.js} +6 -4
  2. package/dist/{abletime-KWOBUL46.js → abletime-ICW6Q2AB.js} +6 -4
  3. package/dist/{abletime-oauth-S4AXA4WR.js → abletime-oauth-P3KPPJE4.js} +3 -3
  4. package/dist/{abletime-oauth-IUIAGLFJ.js → abletime-oauth-Q76XBSPG.js} +3 -3
  5. package/dist/{abletime-rest-RWN4EPY3.js → abletime-rest-DNFAYYLP.js} +3 -3
  6. package/dist/{abletime-rest-ORBELZQO.js → abletime-rest-DQ3PNKXP.js} +3 -3
  7. package/dist/{agents-KABJUDPI.js → agents-CJZYJOWP.js} +7 -7
  8. package/dist/{agents-2AR7I6B6.js → agents-F2E2HACB.js} +7 -7
  9. package/dist/{app-settings-CZVFMOI5.js → app-settings-KMPVI2B7.js} +1 -1
  10. package/dist/{app-settings-V6YPYY57.js → app-settings-P3H4SEIK.js} +1 -1
  11. package/dist/{chunk-YEIHCSZS.js → chunk-4GZC6DDH.js} +2 -0
  12. package/dist/{chunk-XOZNEAWF.js → chunk-56M6VEXI.js} +3 -3
  13. package/dist/{chunk-7SCVGGF6.js → chunk-5OQONGHO.js} +5 -5
  14. package/dist/{chunk-A6C67DY5.js → chunk-5S3YP5KH.js} +4 -4
  15. package/dist/{chunk-I5CLCWUK.js → chunk-72PUPPV2.js} +9 -5
  16. package/dist/{chunk-BXTISNKW.js → chunk-B7UL36WH.js} +428 -99
  17. package/dist/{chunk-W5QZWAUB.js → chunk-BTIXTH4N.js} +9 -5
  18. package/dist/{chunk-AESO2KJS.js → chunk-CB5Z5C3J.js} +2 -2
  19. package/dist/{chunk-2HOZMSKQ.js → chunk-DFUXW2IT.js} +2 -2
  20. package/dist/{chunk-ST2UQBJT.js → chunk-DJZRDTZY.js} +6 -6
  21. package/dist/{chunk-TUJFCJJU.js → chunk-EDXTP2VR.js} +2 -2
  22. package/dist/{chunk-I5TESHDN.js → chunk-EQ52JR3Q.js} +5 -5
  23. package/dist/{chunk-FDXHNROD.js → chunk-EQ5JY3MJ.js} +2 -2
  24. package/dist/{chunk-E52SQENB.js → chunk-FZKAAAEB.js} +3 -1
  25. package/dist/{chunk-VZAJVX36.js → chunk-HHPTGIKS.js} +2 -2
  26. package/dist/{chunk-23ZUL2EX.js → chunk-IDPFLXRY.js} +429 -100
  27. package/dist/{chunk-GCHSJCCX.js → chunk-IFU4W4C4.js} +3 -1
  28. package/dist/{chunk-IAPO7ZFG.js → chunk-LLIEU2ZB.js} +5 -5
  29. package/dist/{chunk-MBYGWNLQ.js → chunk-OAFBHCSM.js} +1 -1
  30. package/dist/{chunk-NRSC4N5X.js → chunk-P74GXA5V.js} +6 -6
  31. package/dist/{chunk-A46CIARU.js → chunk-PNLGWAYE.js} +2 -2
  32. package/dist/{chunk-53OCOGND.js → chunk-QGY3UNNL.js} +2 -2
  33. package/dist/{chunk-7Q327QF2.js → chunk-QIC2JXHW.js} +5 -5
  34. package/dist/{chunk-YALFZKSC.js → chunk-RHJPP26T.js} +11 -11
  35. package/dist/{chunk-AZ4GEEGL.js → chunk-UK2KESBN.js} +2 -2
  36. package/dist/{chunk-7ADEYEMH.js → chunk-V76MQ7MH.js} +5 -5
  37. package/dist/{chunk-HOLB6ZFZ.js → chunk-XMHMVEIY.js} +2 -0
  38. package/dist/{chunk-GH7UMULC.js → chunk-ZYZBCLJR.js} +6 -6
  39. package/dist/{conductor-MG2RAQNT.js → conductor-FPFY6Z5S.js} +6 -6
  40. package/dist/{conductor-NIUBJLTS.js → conductor-JA5W3L7C.js} +6 -6
  41. package/dist/{coordinator-prompt-3CT3D5UM.js → coordinator-prompt-M75TAN43.js} +4 -4
  42. package/dist/{coordinator-prompt-X74F3JIC.js → coordinator-prompt-NUC2ZXMJ.js} +4 -4
  43. package/dist/{global-workspace-BUWMRNW5.js → global-workspace-5A4H34AF.js} +4 -4
  44. package/dist/{global-workspace-FTNJEML3.js → global-workspace-SCLQUNUI.js} +4 -4
  45. package/dist/index.cjs +861 -475
  46. package/dist/index.d.cts +56 -13
  47. package/dist/index.d.ts +56 -13
  48. package/dist/index.js +54 -31
  49. package/dist/mcp/run-stdio.cjs +459 -95
  50. package/dist/mcp/run-stdio.js +23 -23
  51. package/dist/{optional-cli-EMSZBYDE.js → optional-cli-2V3SLME5.js} +3 -3
  52. package/dist/{optional-cli-6GGESWGE.js → optional-cli-MRNQKVIR.js} +4 -4
  53. package/dist/{orchestrator-N54V3B76.js → orchestrator-7BDZ5GWD.js} +10 -10
  54. package/dist/{orchestrator-2SXK4U65.js → orchestrator-NPFWU3XU.js} +10 -10
  55. package/dist/{thread-store-PLNIWFZ4.js → thread-store-JWHVXLDX.js} +1 -1
  56. package/dist/{thread-store-7BBA63KV.js → thread-store-QHYN2ZMQ.js} +1 -1
  57. package/dist/{workspaces-2V5UYPYC.js → workspaces-5QA3YM4L.js} +4 -4
  58. package/dist/{workspaces-MGKEAYNM.js → workspaces-KWMBOTQD.js} +4 -4
  59. package/dist/{worktree-THAXW5U7.js → worktree-7EATHVYQ.js} +3 -3
  60. package/dist/{worktree-XJKLDYOL.js → worktree-O6BANO2I.js} +3 -3
  61. package/package.json +1 -1
package/dist/index.js CHANGED
@@ -122,6 +122,7 @@ import {
122
122
  issueMatchesUpdatedSince,
123
123
  issueNeedsWorkspacePick,
124
124
  issueTicketFromThread,
125
+ joinSteerPrompt,
125
126
  lastAgentReply,
126
127
  latestVisibleMessageText,
127
128
  linearTicketIdFromThread,
@@ -131,6 +132,7 @@ import {
131
132
  listLinearIssues,
132
133
  listSchedules,
133
134
  listWorktreeFiles,
135
+ livePartsShowAgentReply,
134
136
  localhostPreviewUrl,
135
137
  markdownPreviewSource,
136
138
  mcpIssueUpdatedSinceSchema,
@@ -194,6 +196,7 @@ import {
194
196
  syncBoardPins,
195
197
  takePendingTurnAttachments,
196
198
  thisProcessShouldDrainAgentQueues,
199
+ trailingUnansweredUserText,
197
200
  updateSchedule,
198
201
  visibleAgentBlock,
199
202
  waitForPidExit,
@@ -203,7 +206,7 @@ import {
203
206
  worktreeCleanupSettings,
204
207
  writeAgentBlock,
205
208
  writeWorktreeFile
206
- } from "./chunk-23ZUL2EX.js";
209
+ } from "./chunk-IDPFLXRY.js";
207
210
  import {
208
211
  LEGACY_PLAN_FILE_REL,
209
212
  PLAN_FILE_NAME,
@@ -293,7 +296,7 @@ import {
293
296
  userMcpNamesToDisable,
294
297
  worktreeMcpToolNames,
295
298
  writeInjectedMcpConfig
296
- } from "./chunk-IAPO7ZFG.js";
299
+ } from "./chunk-LLIEU2ZB.js";
297
300
  import {
298
301
  brightsyMcpServerName,
299
302
  connectBrightsyTeam,
@@ -424,7 +427,7 @@ import {
424
427
  workspaceAgentChatSummaries,
425
428
  worktreeRunPortsPath,
426
429
  wrapReviewSkillMarkdown
427
- } from "./chunk-ST2UQBJT.js";
430
+ } from "./chunk-DJZRDTZY.js";
428
431
  import {
429
432
  STDERR_EVENT_MAX_CHARS,
430
433
  STDOUT_EVENT_MAX_CHARS,
@@ -466,7 +469,7 @@ import {
466
469
  visibleToolRowDetail,
467
470
  withEventParentId,
468
471
  withEventsParentId
469
- } from "./chunk-7Q327QF2.js";
472
+ } from "./chunk-QIC2JXHW.js";
470
473
  import "./chunk-7H655NEW.js";
471
474
  import {
472
475
  ABLETIME_OAUTH_CALLBACK_PATH,
@@ -490,9 +493,10 @@ import {
490
493
  parseAbleTimeOAuthCallbackUrl,
491
494
  resolveAbleTimeOAuthHost,
492
495
  startAbleTimeOAuth
493
- } from "./chunk-XOZNEAWF.js";
496
+ } from "./chunk-56M6VEXI.js";
494
497
  import {
495
498
  ableTimeDependencyTarget,
499
+ ableTimeStateIsClosed,
496
500
  commentAbleTimeTask,
497
501
  createAbleTimeTask,
498
502
  downloadAbleTimeAttachment,
@@ -515,10 +519,10 @@ import {
515
519
  toAbleTimeIssueInfo,
516
520
  updateAbleTimeTask,
517
521
  verifyAbleTimeConnection
518
- } from "./chunk-W5QZWAUB.js";
522
+ } from "./chunk-BTIXTH4N.js";
519
523
  import {
520
524
  looksLikeAbleTimeUlid
521
- } from "./chunk-2HOZMSKQ.js";
525
+ } from "./chunk-DFUXW2IT.js";
522
526
  import {
523
527
  ABLETIME_MCP_PATH,
524
528
  ABLETIME_MCP_PM_PATH,
@@ -539,13 +543,13 @@ import {
539
543
  normalizeAbleTimeCredential,
540
544
  normalizeAbleTimeHost,
541
545
  rewriteAbleTimeError
542
- } from "./chunk-7ADEYEMH.js";
546
+ } from "./chunk-V76MQ7MH.js";
543
547
  import {
544
548
  clearOptionalCliPresenceCache,
545
549
  detectOptionalServiceClis,
546
550
  installOptionalServiceCli,
547
551
  optionalCliPresence
548
- } from "./chunk-AZ4GEEGL.js";
552
+ } from "./chunk-UK2KESBN.js";
549
553
  import {
550
554
  OPTIONAL_SERVICES,
551
555
  OPTIONAL_SERVICE_IDS,
@@ -561,7 +565,7 @@ import {
561
565
  optionalServiceConnected,
562
566
  optionalServiceSpec,
563
567
  verifyOptionalService
564
- } from "./chunk-FDXHNROD.js";
568
+ } from "./chunk-EQ5JY3MJ.js";
565
569
  import {
566
570
  getAgentSetupInfo,
567
571
  installAgent,
@@ -573,7 +577,7 @@ import {
573
577
  prepareTerminalCommand,
574
578
  resolveLoginCommand,
575
579
  whichOnPath
576
- } from "./chunk-AESO2KJS.js";
580
+ } from "./chunk-CB5Z5C3J.js";
577
581
  import {
578
582
  CLOUD_COORDINATOR_BUSY_REPLY,
579
583
  CLOUD_COORDINATOR_CANCELED_REPLY,
@@ -626,7 +630,7 @@ import {
626
630
  stageBuffersAsAttachments,
627
631
  syncWorkspacesFromThreads,
628
632
  takenTeamSlugsForOrchestration
629
- } from "./chunk-YALFZKSC.js";
633
+ } from "./chunk-RHJPP26T.js";
630
634
  import {
631
635
  GITHUB_PR_BODY_MAX_CHARS,
632
636
  GITHUB_PR_BODY_SAFE_CHARS,
@@ -714,7 +718,7 @@ import {
714
718
  suggestSlug,
715
719
  switchWorktreeBranch,
716
720
  warmGithubAgentAuth
717
- } from "./chunk-TUJFCJJU.js";
721
+ } from "./chunk-EDXTP2VR.js";
718
722
  import {
719
723
  FAMOUS_SOCCER_TEAMS,
720
724
  allocateTeamName,
@@ -748,7 +752,7 @@ import {
748
752
  worktreeNameFromPath,
749
753
  worktreeSlugForTicket,
750
754
  writeThread
751
- } from "./chunk-YEIHCSZS.js";
755
+ } from "./chunk-4GZC6DDH.js";
752
756
  import "./chunk-2P4XKWV2.js";
753
757
  import {
754
758
  BRIGHTSY_OAUTH_CLIENT_ID,
@@ -1013,7 +1017,7 @@ import {
1013
1017
  withTurnScopedCost,
1014
1018
  writeSecureJson,
1015
1019
  writeViewerContext
1016
- } from "./chunk-E52SQENB.js";
1020
+ } from "./chunk-FZKAAAEB.js";
1017
1021
  import {
1018
1022
  THINKING_EFFORTS,
1019
1023
  isThinkingEffort,
@@ -8753,7 +8757,7 @@ async function startHeadlessHost(opts) {
8753
8757
  };
8754
8758
  const refreshRunning = async () => {
8755
8759
  try {
8756
- const { getOrchestrator: getOrchestrator2 } = await import("./orchestrator-2SXK4U65.js");
8760
+ const { getOrchestrator: getOrchestrator2 } = await import("./orchestrator-NPFWU3XU.js");
8757
8761
  agentsRunning = getOrchestrator2().getRuntime().running;
8758
8762
  } catch {
8759
8763
  agentsRunning = 0;
@@ -10375,7 +10379,7 @@ function parseWhen(args) {
10375
10379
  function registerScheduleTools(server) {
10376
10380
  server.tool(
10377
10381
  "list_schedules",
10378
- "List local Sideboard schedules that trigger a chat when due. Jobs fire only while Sideboard.app is running on this Mac (sleep skips until wake).",
10382
+ "List local Sideboard automations that trigger a chat when due. Jobs fire only while Sideboard.app is running on this Mac (sleep skips until wake). Shown in the sidebar after Board.",
10379
10383
  {},
10380
10384
  async () => {
10381
10385
  try {
@@ -10387,9 +10391,9 @@ function registerScheduleTools(server) {
10387
10391
  );
10388
10392
  server.tool(
10389
10393
  "create_schedule",
10390
- "Create a local schedule that, when due, sends a prompt to an existing chat (chatId) or starts a new Global orchestration chat (omit chatId). Pass chatId=self to continue this chat. If that chat is missing or archived when the job fires, Sideboard starts a new Global chat (recurring jobs then continue that chat). Exactly one of at (ISO datetime), every (15m/1h/6h/1d), or cron (5-field). Recurring jobs without chatId open a new Global chat each run. Creating or enabling a future job turns on Settings \u2192 Advanced \u2192 Caffeinate while schedules are enabled so the Mac stays awake until due. Sideboard.app must be running for the job to fire.",
10394
+ "Create a local automation that, when due, sends a prompt to an existing chat (chatId) or starts a new Global orchestration chat (omit chatId). Pass chatId=self to continue this chat. If that chat is missing or archived when the job fires, Sideboard starts a new Global chat (recurring jobs then continue that chat). Exactly one of at (ISO datetime), every (15m/1h/6h/1d), or cron (5-field). Recurring jobs without chatId open a new Global chat each run and archive it when that run finishes. History keeps the latest run for that automation. Creating or enabling a future job turns on Settings \u2192 Advanced \u2192 Caffeinate while automations are enabled so the Mac stays awake until due. Sideboard.app must be running for the job to fire.",
10391
10395
  {
10392
- prompt: z7.string().describe("User message / goal queued when the schedule fires"),
10396
+ prompt: z7.string().describe("User message / goal queued when the automation fires"),
10393
10397
  name: z7.string().optional(),
10394
10398
  at: z7.string().optional().describe("ISO datetime for a one-shot"),
10395
10399
  every: z7.string().optional().describe("Interval such as 15m, 1h, 6h, 1d"),
@@ -10425,7 +10429,7 @@ function registerScheduleTools(server) {
10425
10429
  });
10426
10430
  return text4({
10427
10431
  schedule,
10428
- hint: scheduleNeedsCaffeinate(schedule) ? "Fires while Sideboard.app is running. Recurring jobs without chatId create a new orchestration chat each run. Caffeinate while schedules are enabled is now on so the Mac can stay awake until this job is due." : "Fires while Sideboard.app is running. Recurring jobs without chatId create a new orchestration chat each run."
10432
+ hint: scheduleNeedsCaffeinate(schedule) ? "Fires while Sideboard.app is running. Recurring jobs without chatId create a new orchestration chat each run and archive it when that run finishes (History keeps the latest). Caffeinate while automations are enabled is now on so the Mac can stay awake until this job is due." : "Fires while Sideboard.app is running. Recurring jobs without chatId create a new orchestration chat each run and archive it when that run finishes (History keeps the latest)."
10429
10433
  });
10430
10434
  } catch (err) {
10431
10435
  return fail4(err);
@@ -10434,7 +10438,7 @@ function registerScheduleTools(server) {
10434
10438
  );
10435
10439
  server.tool(
10436
10440
  "update_schedule",
10437
- "Update a local schedule (prompt, cadence, target chat, enabled). Pass id from list_schedules.",
10441
+ "Update a local automation (prompt, cadence, target chat, enabled). Pass id from list_schedules.",
10438
10442
  {
10439
10443
  id: z7.string(),
10440
10444
  prompt: z7.string().optional(),
@@ -10489,7 +10493,7 @@ function registerScheduleTools(server) {
10489
10493
  );
10490
10494
  server.tool(
10491
10495
  "delete_schedule",
10492
- "Delete a local schedule. Pass id from list_schedules.",
10496
+ "Delete a local automation. Pass id from list_schedules.",
10493
10497
  { id: z7.string() },
10494
10498
  async ({ id }) => {
10495
10499
  try {
@@ -10502,12 +10506,12 @@ function registerScheduleTools(server) {
10502
10506
  );
10503
10507
  server.tool(
10504
10508
  "run_schedule",
10505
- "Fire a schedule now (does not wait for nextRunAt). Queues the prompt on the target chat or starts a new Global chat. If Sideboard.app is running, the desktop drains the turn.",
10509
+ "Fire an automation now (does not wait for nextRunAt). Queues the prompt on the target chat or starts a new Global chat. If Sideboard.app is running, the desktop drains the turn.",
10506
10510
  { id: z7.string() },
10507
10511
  async ({ id }) => {
10508
10512
  try {
10509
10513
  if (!getSchedule(id)) {
10510
- return fail4(new Error(`Schedule not found: ${id}`));
10514
+ return fail4(new Error(`Automation not found: ${id}`));
10511
10515
  }
10512
10516
  const schedule = await fireSchedule(id);
10513
10517
  return text4({ schedule });
@@ -10686,7 +10690,7 @@ async function handleJobStop(params, _ctx) {
10686
10690
  return stopDetachedJob(jobCwd(rec), id, reason ? { reason } : void 0);
10687
10691
  }
10688
10692
  async function defaultTurnWait(ref, timeoutMs) {
10689
- const { getOrchestrator: getOrchestrator2 } = await import("./orchestrator-2SXK4U65.js");
10693
+ const { getOrchestrator: getOrchestrator2 } = await import("./orchestrator-NPFWU3XU.js");
10690
10694
  const orch = getOrchestrator2();
10691
10695
  const thread = await orch.waitForTurn(ref, timeoutMs, {
10692
10696
  resolveIfStillRunning: true
@@ -11039,7 +11043,7 @@ async function startMcpServer() {
11039
11043
  );
11040
11044
  }
11041
11045
  try {
11042
- const { maxConcurrentAgents: maxConcurrentAgents2 } = await import("./app-settings-V6YPYY57.js");
11046
+ const { maxConcurrentAgents: maxConcurrentAgents2 } = await import("./app-settings-P3H4SEIK.js");
11043
11047
  orch.setMaxConcurrent(maxConcurrentAgents2());
11044
11048
  } catch {
11045
11049
  }
@@ -11587,7 +11591,7 @@ async function startMcpServer() {
11587
11591
  if (!worktreeProfile) {
11588
11592
  registerConnectedIssueVendorTools(server);
11589
11593
  const { getCaffeinateHold: getCaffeinateHold2, setCaffeinateHold: setCaffeinateHold2 } = await import("./caffeinate-hold-ZNUEZGHB.js");
11590
- const { resolveNewThreadOptions: resolveNewThreadOptions2, resolveThreadDefaults: resolveThreadDefaults2 } = await import("./app-settings-V6YPYY57.js");
11594
+ const { resolveNewThreadOptions: resolveNewThreadOptions2, resolveThreadDefaults: resolveThreadDefaults2 } = await import("./app-settings-P3H4SEIK.js");
11591
11595
  const accountDefaults = resolveThreadDefaults2();
11592
11596
  const accountDefaultsHint = `Account defaults: agent=${accountDefaults.agent}, model=${accountDefaults.model?.trim() || "Auto"}, effort=${accountDefaults.effort}`;
11593
11597
  server.tool(
@@ -12471,6 +12475,9 @@ function firstRecord(record, keys) {
12471
12475
  }
12472
12476
  return null;
12473
12477
  }
12478
+ function taskState(record) {
12479
+ return firstString(record, ["state", "board_state", "boardState", "status", "taskState"]);
12480
+ }
12474
12481
  function identifierFromUnknown(value) {
12475
12482
  if (typeof value === "string" || typeof value === "number") {
12476
12483
  const id2 = String(value).trim();
@@ -12482,6 +12489,7 @@ function identifierFromUnknown(value) {
12482
12489
  for (const key of ["nodes", "data", "tasks", "items"]) {
12483
12490
  if (Array.isArray(rec[key])) return identifierFromUnknown(rec[key]);
12484
12491
  }
12492
+ if (ableTimeStateIsClosed(taskState(rec))) return [];
12485
12493
  const id = firstString(rec, ["identifier", "reference", "ref", "key", "code", "number", "id"]);
12486
12494
  return id ? [id] : [];
12487
12495
  }
@@ -12516,6 +12524,8 @@ async function getAbleTimeIssueBlockedBy(id, opts) {
12516
12524
  continue;
12517
12525
  }
12518
12526
  const parent = await callAbleTimeTool("get_task", { id: blockerId, task_id: blockerId }, opts);
12527
+ const parentRecord = firstRecord(asRecord4(parent), ["task", "data"]) ?? asRecord4(parent);
12528
+ if (ableTimeStateIsClosed(taskState(parentRecord))) continue;
12519
12529
  const ref = taskReference(parent);
12520
12530
  if (!ref || looksLikeAbleTimeUlid(ref)) {
12521
12531
  throw new Error(`AbleTime blocker has no reference: ${blockerId}`);
@@ -12539,6 +12549,8 @@ function githubBlockedByIdentifiers(payload) {
12539
12549
  const rec = node && typeof node === "object" && !Array.isArray(node) ? node : null;
12540
12550
  const number = Number(rec?.number ?? node);
12541
12551
  if (!Number.isFinite(number) || number <= 0) continue;
12552
+ const state = String(rec?.state ?? "").trim().toUpperCase();
12553
+ if (state === "CLOSED") continue;
12542
12554
  const id = `#${number}`;
12543
12555
  const key = id.toLowerCase();
12544
12556
  if (seen.has(key)) continue;
@@ -12551,7 +12563,7 @@ var GITHUB_BLOCKED_BY_QUERY = `
12551
12563
  query($owner: String!, $name: String!, $number: Int!) {
12552
12564
  repository(owner: $owner, name: $name) {
12553
12565
  issue(number: $number) {
12554
- blockedBy(first: 25) { nodes { number } }
12566
+ blockedBy(first: 25) { nodes { number state } }
12555
12567
  }
12556
12568
  }
12557
12569
  }
@@ -12599,15 +12611,21 @@ async function getGitHubIssueBlockedBy(id, opts) {
12599
12611
  }
12600
12612
 
12601
12613
  // src/integrations/linear-blocked.ts
12614
+ var RESOLVED_LINEAR_STATE = /* @__PURE__ */ new Set(["completed", "canceled", "cancelled", "duplicate"]);
12615
+ function linearBlockerStillBlocks(issue) {
12616
+ const type = (issue?.state?.type ?? "").trim().toLowerCase();
12617
+ if (!type) return true;
12618
+ return !RESOLVED_LINEAR_STATE.has(type);
12619
+ }
12602
12620
  var ISSUE_BLOCKED_BY_QUERY = `
12603
12621
  query SideboardIssueBlockedBy($id: String!) {
12604
12622
  issue(id: $id) {
12605
12623
  identifier
12606
12624
  relations(first: 25) {
12607
- nodes { id type relatedIssue { id identifier } }
12625
+ nodes { id type relatedIssue { id identifier state { type } } }
12608
12626
  }
12609
12627
  inverseRelations(first: 25) {
12610
- nodes { id type issue { id identifier } }
12628
+ nodes { id type issue { id identifier state { type } } }
12611
12629
  }
12612
12630
  }
12613
12631
  }
@@ -12618,6 +12636,7 @@ function linearBlockedByIdentifiers(relations) {
12618
12636
  for (const rel of relations) {
12619
12637
  const type = (rel.type ?? "").trim().toLowerCase().replace(/[\s_-]+/g, "");
12620
12638
  if (type !== "blockedby" && type !== "blocked") continue;
12639
+ if (!linearBlockerStillBlocks(rel.issue)) continue;
12621
12640
  const id = (rel.issue?.identifier || rel.issue?.id || "").trim();
12622
12641
  const key = id.toLowerCase();
12623
12642
  if (!id || seen.has(key)) continue;
@@ -14339,7 +14358,7 @@ async function continueSourceThread(threadId, prompt) {
14339
14358
  await continueOnReply(threadId, prompt);
14340
14359
  return;
14341
14360
  }
14342
- const { getOrchestrator: getOrchestrator2 } = await import("./orchestrator-2SXK4U65.js");
14361
+ const { getOrchestrator: getOrchestrator2 } = await import("./orchestrator-NPFWU3XU.js");
14343
14362
  await getOrchestrator2().send(threadId, prompt);
14344
14363
  } catch {
14345
14364
  }
@@ -14755,6 +14774,7 @@ export {
14755
14774
  ableTimeOAuthLocalBounceUrl,
14756
14775
  ableTimeOAuthRedirectUri,
14757
14776
  ableTimeOAuthResource,
14777
+ ableTimeStateIsClosed,
14758
14778
  ableTimeUsesRest,
14759
14779
  abletimeMcpRequest,
14760
14780
  abletimeMcpUrl,
@@ -15237,6 +15257,7 @@ export {
15237
15257
  issueMatchesAssignee,
15238
15258
  issueSourceLabel,
15239
15259
  issueTicketFromThread,
15260
+ joinSteerPrompt,
15240
15261
  killDetachedRunTree,
15241
15262
  killListenersOnPorts,
15242
15263
  killStaleWorktreeListeners,
@@ -15295,6 +15316,7 @@ export {
15295
15316
  listWorktrees,
15296
15317
  listenerCwd,
15297
15318
  liveActivitySummary,
15319
+ livePartsShowAgentReply,
15298
15320
  loadAppSettings,
15299
15321
  loadBrightsyConfig,
15300
15322
  loadConductorSettings,
@@ -15632,6 +15654,7 @@ export {
15632
15654
  toolDetail,
15633
15655
  toolFilePath,
15634
15656
  totalTokens,
15657
+ trailingUnansweredUserText,
15635
15658
  trustSystemCertificates,
15636
15659
  tryReservePort,
15637
15660
  tryReservePorts,