@sideboard-ai/core 0.1.245 → 0.1.246

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.
@@ -46,7 +46,7 @@ import {
46
46
  resolveLoginCommand,
47
47
  resolveQuotaFallbackAgent,
48
48
  whichOnPath
49
- } from "./chunk-QRWVKBGP.js";
49
+ } from "./chunk-RLNEKXXT.js";
50
50
  import "./chunk-GFRC6JQN.js";
51
51
  import "./chunk-E6C5NR46.js";
52
52
  import "./chunk-6K64FJDD.js";
@@ -55,7 +55,7 @@ import {
55
55
  resolveQuotaFallbackAgent,
56
56
  turnCostUsdFromCursorUsage,
57
57
  whichOnPath
58
- } from "./chunk-3ZEBUVUI.js";
58
+ } from "./chunk-HRWCW6LC.js";
59
59
  import "./chunk-576S3HJ7.js";
60
60
  import "./chunk-J5GON4SU.js";
61
61
  import "./chunk-P2BSMNHB.js";
@@ -2081,6 +2081,14 @@ function lastRunningSkillIndex(parts, parentId) {
2081
2081
  }
2082
2082
  return -1;
2083
2083
  }
2084
+ function markRunningSkillsDone(parts, parentId) {
2085
+ return parts.map((p) => {
2086
+ if (p.type === "tool" && isSkillToolName(p.name) && p.status === "running" && sameParentId(p.parentId, parentId)) {
2087
+ return withPartTimes({ ...p, status: "done" }, p);
2088
+ }
2089
+ return p;
2090
+ });
2091
+ }
2084
2092
  function promoteOrFoldSkillText(parts, textIdx) {
2085
2093
  const acc = parts[textIdx];
2086
2094
  if (acc?.type !== "text") return parts;
@@ -2208,7 +2216,10 @@ function applyAgentEvent(parts, event) {
2208
2216
  {
2209
2217
  ...prev,
2210
2218
  result: clipToolResultForStore(result),
2211
- status: looksLikeSkillBody(result) ? "done" : prev.status
2219
+ // Stay running after the YAML `name:` fence so later content_block_delta
2220
+ // tokens of SKILL.md stay on this row. thinking / tool_use / finalizeParts
2221
+ // mark the row done so the real reply can be chat.
2222
+ status: "running"
2212
2223
  },
2213
2224
  prev
2214
2225
  );
@@ -2250,6 +2261,7 @@ function applyAgentEvent(parts, event) {
2250
2261
  if (event.type === "thinking") {
2251
2262
  const data = event.data;
2252
2263
  if (!data) return parts;
2264
+ parts = markRunningSkillsDone(parts, event.parentId);
2253
2265
  const next = [...parts];
2254
2266
  if (event.replace) {
2255
2267
  for (let i = next.length - 1; i >= 0; i--) {
@@ -2297,6 +2309,7 @@ function applyAgentEvent(parts, event) {
2297
2309
  return withCompactFinish(next, data, event.parentId);
2298
2310
  }
2299
2311
  if (event.type === "tool_use") {
2312
+ parts = markRunningSkillsDone(parts, event.parentId);
2300
2313
  const input = asRecord(event.input);
2301
2314
  const diff = diffFromInput(input);
2302
2315
  const existing = parts.findIndex((p) => p.type === "tool" && p.id === event.id);
@@ -25,7 +25,7 @@ import {
25
25
  resolveQuotaFallbackAgent,
26
26
  stripBrightsyNdjsonNoise,
27
27
  toolDescription
28
- } from "./chunk-QRWVKBGP.js";
28
+ } from "./chunk-RLNEKXXT.js";
29
29
  import {
30
30
  SLACK_REPLY_FORMATTING,
31
31
  addWorkspace,
@@ -4223,7 +4223,7 @@ async function createThread(input, _onSetupLine) {
4223
4223
  return readThread(thread.id) ?? thread;
4224
4224
  }
4225
4225
  async function listLinearIssues(agent, repoPath) {
4226
- const { getAdapter: getAdapter2 } = await import("./agents-BOIIFMNG.js");
4226
+ const { getAdapter: getAdapter2 } = await import("./agents-47WI5IV2.js");
4227
4227
  await requireAgent(agent, { requireLinear: true });
4228
4228
  const adapter = getAdapter2(agent);
4229
4229
  if (!adapter.listLinearIssues) {
@@ -7408,7 +7408,7 @@ function formatScheduledPrompt(name, prompt) {
7408
7408
  ${prompt}`;
7409
7409
  }
7410
7410
  async function defaultDeps() {
7411
- const { getOrchestrator: getOrchestrator2, startOrchestration: startOrchestration2 } = await import("./orchestrator-7YCQ7V5S.js");
7411
+ const { getOrchestrator: getOrchestrator2, startOrchestration: startOrchestration2 } = await import("./orchestrator-2QGJ7CW2.js");
7412
7412
  const orch = getOrchestrator2();
7413
7413
  return {
7414
7414
  findThread: (id) => findThreadByRef(id),
@@ -1654,6 +1654,14 @@ function lastRunningSkillIndex(parts, parentId) {
1654
1654
  }
1655
1655
  return -1;
1656
1656
  }
1657
+ function markRunningSkillsDone(parts, parentId) {
1658
+ return parts.map((p) => {
1659
+ if (p.type === "tool" && isSkillToolName(p.name) && p.status === "running" && sameParentId(p.parentId, parentId)) {
1660
+ return withPartTimes({ ...p, status: "done" }, p);
1661
+ }
1662
+ return p;
1663
+ });
1664
+ }
1657
1665
  function promoteOrFoldSkillText(parts, textIdx) {
1658
1666
  const acc = parts[textIdx];
1659
1667
  if (acc?.type !== "text") return parts;
@@ -1788,7 +1796,10 @@ function applyAgentEvent(parts, event) {
1788
1796
  {
1789
1797
  ...prev,
1790
1798
  result: clipToolResultForStore(result),
1791
- status: looksLikeSkillBody(result) ? "done" : prev.status
1799
+ // Stay running after the YAML `name:` fence so later content_block_delta
1800
+ // tokens of SKILL.md stay on this row. thinking / tool_use / finalizeParts
1801
+ // mark the row done so the real reply can be chat.
1802
+ status: "running"
1792
1803
  },
1793
1804
  prev
1794
1805
  );
@@ -1830,6 +1841,7 @@ function applyAgentEvent(parts, event) {
1830
1841
  if (event.type === "thinking") {
1831
1842
  const data = event.data;
1832
1843
  if (!data) return parts;
1844
+ parts = markRunningSkillsDone(parts, event.parentId);
1833
1845
  const next = [...parts];
1834
1846
  if (event.replace) {
1835
1847
  for (let i = next.length - 1; i >= 0; i--) {
@@ -1877,6 +1889,7 @@ function applyAgentEvent(parts, event) {
1877
1889
  return withCompactFinish(next, data, event.parentId);
1878
1890
  }
1879
1891
  if (event.type === "tool_use") {
1892
+ parts = markRunningSkillsDone(parts, event.parentId);
1880
1893
  const input = asRecord(event.input);
1881
1894
  const diff = diffFromInput(input);
1882
1895
  const existing = parts.findIndex((p) => p.type === "tool" && p.id === event.id);
@@ -44,7 +44,7 @@ import {
44
44
  summarizeTurnStderr,
45
45
  toolDescription,
46
46
  turnFailChatText
47
- } from "./chunk-3ZEBUVUI.js";
47
+ } from "./chunk-HRWCW6LC.js";
48
48
  import {
49
49
  SLACK_REPLY_FORMATTING,
50
50
  addWorkspace,
@@ -7060,7 +7060,7 @@ function formatScheduledPrompt(name, prompt) {
7060
7060
  ${prompt}`;
7061
7061
  }
7062
7062
  async function defaultDeps() {
7063
- const { getOrchestrator: getOrchestrator2, startOrchestration: startOrchestration2 } = await import("./orchestrator-5ROSTGGH.js");
7063
+ const { getOrchestrator: getOrchestrator2, startOrchestration: startOrchestration2 } = await import("./orchestrator-DPMS5KMY.js");
7064
7064
  const orch = getOrchestrator2();
7065
7065
  return {
7066
7066
  findThread: (id) => findThreadByRef(id),
package/dist/index.cjs CHANGED
@@ -4449,6 +4449,14 @@ function lastRunningSkillIndex(parts, parentId) {
4449
4449
  }
4450
4450
  return -1;
4451
4451
  }
4452
+ function markRunningSkillsDone(parts, parentId) {
4453
+ return parts.map((p) => {
4454
+ if (p.type === "tool" && isSkillToolName(p.name) && p.status === "running" && sameParentId(p.parentId, parentId)) {
4455
+ return withPartTimes({ ...p, status: "done" }, p);
4456
+ }
4457
+ return p;
4458
+ });
4459
+ }
4452
4460
  function promoteOrFoldSkillText(parts, textIdx) {
4453
4461
  const acc = parts[textIdx];
4454
4462
  if (acc?.type !== "text") return parts;
@@ -4583,7 +4591,10 @@ function applyAgentEvent(parts, event) {
4583
4591
  {
4584
4592
  ...prev,
4585
4593
  result: clipToolResultForStore(result),
4586
- status: looksLikeSkillBody(result) ? "done" : prev.status
4594
+ // Stay running after the YAML `name:` fence so later content_block_delta
4595
+ // tokens of SKILL.md stay on this row. thinking / tool_use / finalizeParts
4596
+ // mark the row done so the real reply can be chat.
4597
+ status: "running"
4587
4598
  },
4588
4599
  prev
4589
4600
  );
@@ -4625,6 +4636,7 @@ function applyAgentEvent(parts, event) {
4625
4636
  if (event.type === "thinking") {
4626
4637
  const data = event.data;
4627
4638
  if (!data) return parts;
4639
+ parts = markRunningSkillsDone(parts, event.parentId);
4628
4640
  const next = [...parts];
4629
4641
  if (event.replace) {
4630
4642
  for (let i = next.length - 1; i >= 0; i--) {
@@ -4672,6 +4684,7 @@ function applyAgentEvent(parts, event) {
4672
4684
  return withCompactFinish(next, data, event.parentId);
4673
4685
  }
4674
4686
  if (event.type === "tool_use") {
4687
+ parts = markRunningSkillsDone(parts, event.parentId);
4675
4688
  const input = asRecord(event.input);
4676
4689
  const diff = diffFromInput(input);
4677
4690
  const existing = parts.findIndex((p) => p.type === "tool" && p.id === event.id);
package/dist/index.js CHANGED
@@ -336,7 +336,7 @@ import {
336
336
  worktreeRunPortsPath,
337
337
  wrapReviewSkillMarkdown,
338
338
  writeWorktreeFile
339
- } from "./chunk-NT6MCFSB.js";
339
+ } from "./chunk-QFRX5S2E.js";
340
340
  import {
341
341
  LEGACY_PLAN_FILE_REL,
342
342
  PLAN_FILE_NAME,
@@ -474,7 +474,7 @@ import {
474
474
  withEventParentId,
475
475
  withEventsParentId,
476
476
  writeInjectedMcpConfig
477
- } from "./chunk-QRWVKBGP.js";
477
+ } from "./chunk-RLNEKXXT.js";
478
478
  import {
479
479
  CLOUD_COORDINATOR_BUSY_REPLY,
480
480
  CLOUD_COORDINATOR_CANCELED_REPLY,
@@ -3962,7 +3962,7 @@ async function continueSourceThread(threadId, prompt) {
3962
3962
  await continueOnReply(threadId, prompt);
3963
3963
  return;
3964
3964
  }
3965
- const { getOrchestrator: getOrchestrator2 } = await import("./orchestrator-7YCQ7V5S.js");
3965
+ const { getOrchestrator: getOrchestrator2 } = await import("./orchestrator-2QGJ7CW2.js");
3966
3966
  await getOrchestrator2().send(threadId, prompt);
3967
3967
  } catch {
3968
3968
  }
@@ -10610,6 +10610,14 @@ function lastRunningSkillIndex(parts, parentId) {
10610
10610
  }
10611
10611
  return -1;
10612
10612
  }
10613
+ function markRunningSkillsDone(parts, parentId) {
10614
+ return parts.map((p) => {
10615
+ if (p.type === "tool" && isSkillToolName(p.name) && p.status === "running" && sameParentId(p.parentId, parentId)) {
10616
+ return withPartTimes({ ...p, status: "done" }, p);
10617
+ }
10618
+ return p;
10619
+ });
10620
+ }
10613
10621
  function promoteOrFoldSkillText(parts, textIdx) {
10614
10622
  const acc = parts[textIdx];
10615
10623
  if (acc?.type !== "text") return parts;
@@ -10737,7 +10745,10 @@ function applyAgentEvent(parts, event) {
10737
10745
  {
10738
10746
  ...prev,
10739
10747
  result: clipToolResultForStore(result),
10740
- status: looksLikeSkillBody(result) ? "done" : prev.status
10748
+ // Stay running after the YAML `name:` fence so later content_block_delta
10749
+ // tokens of SKILL.md stay on this row. thinking / tool_use / finalizeParts
10750
+ // mark the row done so the real reply can be chat.
10751
+ status: "running"
10741
10752
  },
10742
10753
  prev
10743
10754
  );
@@ -10779,6 +10790,7 @@ function applyAgentEvent(parts, event) {
10779
10790
  if (event.type === "thinking") {
10780
10791
  const data = event.data;
10781
10792
  if (!data) return parts;
10793
+ parts = markRunningSkillsDone(parts, event.parentId);
10782
10794
  const next = [...parts];
10783
10795
  if (event.replace) {
10784
10796
  for (let i = next.length - 1; i >= 0; i--) {
@@ -10826,6 +10838,7 @@ function applyAgentEvent(parts, event) {
10826
10838
  return withCompactFinish(next, data, event.parentId);
10827
10839
  }
10828
10840
  if (event.type === "tool_use") {
10841
+ parts = markRunningSkillsDone(parts, event.parentId);
10829
10842
  const input = asRecord(event.input);
10830
10843
  const diff = diffFromInput(input);
10831
10844
  const existing = parts.findIndex((p) => p.type === "tool" && p.id === event.id);
@@ -49,7 +49,7 @@ import {
49
49
  threadsSharingWorktree,
50
50
  updateSchedule,
51
51
  waitForDetachedJob
52
- } from "../chunk-J5IZXFLD.js";
52
+ } from "../chunk-TLPJ44Y7.js";
53
53
  import {
54
54
  PRESENT_PLAN_REQUIRES_PLAN_MODE,
55
55
  PRESENT_PLAN_TOOL_DESCRIPTION,
@@ -66,7 +66,7 @@ import {
66
66
  materializeSystemCaBundle,
67
67
  sideboardMcpProfile,
68
68
  trustSystemCertificates
69
- } from "../chunk-3ZEBUVUI.js";
69
+ } from "../chunk-HRWCW6LC.js";
70
70
  import {
71
71
  GLOBAL_WORKSPACE_ID,
72
72
  isCloudCoordinatorThread,
@@ -2366,7 +2366,7 @@ async function continueSourceThread(threadId, prompt) {
2366
2366
  await continueOnReply(threadId, prompt);
2367
2367
  return;
2368
2368
  }
2369
- const { getOrchestrator: getOrchestrator2 } = await import("../orchestrator-5ROSTGGH.js");
2369
+ const { getOrchestrator: getOrchestrator2 } = await import("../orchestrator-DPMS5KMY.js");
2370
2370
  await getOrchestrator2().send(threadId, prompt);
2371
2371
  } catch {
2372
2372
  }
@@ -9,9 +9,9 @@ import {
9
9
  resolveSendFollowUp,
10
10
  startOrchestration,
11
11
  waitForPidExit
12
- } from "./chunk-NT6MCFSB.js";
12
+ } from "./chunk-QFRX5S2E.js";
13
13
  import "./chunk-PGPSIEMW.js";
14
- import "./chunk-QRWVKBGP.js";
14
+ import "./chunk-RLNEKXXT.js";
15
15
  import "./chunk-GFRC6JQN.js";
16
16
  import "./chunk-E6C5NR46.js";
17
17
  import "./chunk-6K64FJDD.js";
@@ -11,10 +11,10 @@ import {
11
11
  resolveSendFollowUp,
12
12
  startOrchestration,
13
13
  waitForPidExit
14
- } from "./chunk-J5IZXFLD.js";
14
+ } from "./chunk-TLPJ44Y7.js";
15
15
  import "./chunk-WDDUIGFK.js";
16
16
  import "./chunk-DQN5U2VH.js";
17
- import "./chunk-3ZEBUVUI.js";
17
+ import "./chunk-HRWCW6LC.js";
18
18
  import "./chunk-576S3HJ7.js";
19
19
  import "./chunk-J5GON4SU.js";
20
20
  import "./chunk-P2BSMNHB.js";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sideboard-ai/core",
3
- "version": "0.1.245",
3
+ "version": "0.1.246",
4
4
  "description": "Sideboard core — orchestration, agents, git worktrees, MCP server",
5
5
  "license": "Apache-2.0",
6
6
  "type": "module",