@sideboard-ai/core 0.1.186 → 0.1.187

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.
@@ -38,7 +38,7 @@ import {
38
38
  resolveQuotaFallbackAgent,
39
39
  turnCostUsdFromCursorUsage,
40
40
  whichOnPath
41
- } from "./chunk-AHV36NL3.js";
41
+ } from "./chunk-7DBYKEYF.js";
42
42
  import "./chunk-HVIEYTUK.js";
43
43
  import "./chunk-Y4MIXGPA.js";
44
44
  import "./chunk-VKQGAWHY.js";
@@ -32,7 +32,7 @@ import {
32
32
  resolveLoginCommand,
33
33
  resolveQuotaFallbackAgent,
34
34
  whichOnPath
35
- } from "./chunk-5FTIOINZ.js";
35
+ } from "./chunk-6XOSOIDJ.js";
36
36
  import "./chunk-VIODP5PT.js";
37
37
  import "./chunk-WXKXSZN4.js";
38
38
  import "./chunk-6K64FJDD.js";
@@ -599,10 +599,18 @@ function asRecord(input) {
599
599
  function str(v) {
600
600
  return typeof v === "string" && v.trim() ? v : void 0;
601
601
  }
602
+ var CHAT_DETAIL_MAX = 72;
603
+ function clipChatLine(value, max = CHAT_DETAIL_MAX) {
604
+ const line = value.trim().split(/\r?\n/, 1)[0] ?? "";
605
+ if (line.length <= max) return line;
606
+ return `${line.slice(0, Math.max(1, max - 1))}\u2026`;
607
+ }
602
608
  function looksLikeFilePath(value) {
603
- if (value.startsWith("/") || value.startsWith("~/")) return true;
604
- if (/^[A-Za-z]:[\\/]/.test(value)) return true;
605
- return value.includes("/") || value.includes("\\");
609
+ const trimmed = value.trim();
610
+ if (!trimmed || /[\s;|&<>]/.test(trimmed)) return false;
611
+ if (trimmed.startsWith("/") || trimmed.startsWith("~/")) return true;
612
+ if (/^[A-Za-z]:[\\/]/.test(trimmed)) return true;
613
+ return trimmed.includes("/") || trimmed.includes("\\");
606
614
  }
607
615
  function stripWorktreePrefix(path, worktreePath) {
608
616
  if (!worktreePath) return path;
@@ -616,8 +624,9 @@ function visibleToolRowDetail(detail, description, worktreePath) {
616
624
  const raw = detail.trim();
617
625
  const desc = (description ?? "").trim();
618
626
  if (!looksLikeFilePath(raw)) {
619
- if (desc === raw) return void 0;
620
- return raw;
627
+ const clipped = clipChatLine(raw);
628
+ if (!clipped || desc === clipped || desc === raw) return void 0;
629
+ return clipped;
621
630
  }
622
631
  const rel = stripWorktreePrefix(raw, worktreePath);
623
632
  if (!rel) return void 0;
@@ -631,7 +640,7 @@ function visibleToolRowDetail(detail, description, worktreePath) {
631
640
  function toolDetail(name, input) {
632
641
  if (!input) return void 0;
633
642
  const command = str(input.command) ?? str(input.cmd);
634
- if (command) return command;
643
+ if (command) return clipChatLine(command);
635
644
  const pattern = str(input.pattern) ?? str(input.glob) ?? str(input.glob_pattern);
636
645
  const isSearch = /grep|glob|search|ripgrep|findfiles|semsearch/i.test(name);
637
646
  if (isSearch && pattern) {
@@ -828,10 +828,16 @@ function asRecord(input) {
828
828
  function str(v) {
829
829
  return typeof v === "string" && v.trim() ? v : void 0;
830
830
  }
831
+ var CHAT_DETAIL_MAX = 72;
832
+ function clipChatLine(value, max = CHAT_DETAIL_MAX) {
833
+ const line = value.trim().split(/\r?\n/, 1)[0] ?? "";
834
+ if (line.length <= max) return line;
835
+ return `${line.slice(0, Math.max(1, max - 1))}\u2026`;
836
+ }
831
837
  function toolDetail(name, input) {
832
838
  if (!input) return void 0;
833
839
  const command = str(input.command) ?? str(input.cmd);
834
- if (command) return command;
840
+ if (command) return clipChatLine(command);
835
841
  const pattern = str(input.pattern) ?? str(input.glob) ?? str(input.glob_pattern);
836
842
  const isSearch = /grep|glob|search|ripgrep|findfiles|semsearch/i.test(name);
837
843
  if (isSearch && pattern) {
@@ -24,7 +24,7 @@ import {
24
24
  stripBrightsyNdjsonNoise,
25
25
  sumUsageList,
26
26
  toolDescription
27
- } from "./chunk-5FTIOINZ.js";
27
+ } from "./chunk-6XOSOIDJ.js";
28
28
  import {
29
29
  SLACK_REPLY_FORMATTING,
30
30
  addWorkspace,
@@ -467,7 +467,7 @@ async function continueSourceThread(threadId, prompt) {
467
467
  await continueOnReply(threadId, prompt);
468
468
  return;
469
469
  }
470
- const { getOrchestrator: getOrchestrator2 } = await import("./orchestrator-RNDMJXAY.js");
470
+ const { getOrchestrator: getOrchestrator2 } = await import("./orchestrator-5CFTLN7B.js");
471
471
  await getOrchestrator2().send(threadId, prompt);
472
472
  } catch {
473
473
  }
@@ -3841,7 +3841,7 @@ async function createThread(input, _onSetupLine) {
3841
3841
  return readThread(thread.id) ?? thread;
3842
3842
  }
3843
3843
  async function listLinearIssues(agent, repoPath) {
3844
- const { getAdapter: getAdapter2 } = await import("./agents-HC6HWBDB.js");
3844
+ const { getAdapter: getAdapter2 } = await import("./agents-W3JQANEC.js");
3845
3845
  await requireAgent(agent, { requireLinear: true });
3846
3846
  const adapter = getAdapter2(agent);
3847
3847
  if (!adapter.listLinearIssues) {
@@ -6772,7 +6772,7 @@ function formatScheduledPrompt(name, prompt) {
6772
6772
  ${prompt}`;
6773
6773
  }
6774
6774
  async function defaultDeps() {
6775
- const { getOrchestrator: getOrchestrator2, startOrchestration: startOrchestration2 } = await import("./orchestrator-RNDMJXAY.js");
6775
+ const { getOrchestrator: getOrchestrator2, startOrchestration: startOrchestration2 } = await import("./orchestrator-5CFTLN7B.js");
6776
6776
  const orch = getOrchestrator2();
6777
6777
  return {
6778
6778
  findThread: (id) => findThreadByRef(id),
@@ -33,7 +33,7 @@ import {
33
33
  summarizeTurnStderr,
34
34
  toolDescription,
35
35
  turnFailChatText
36
- } from "./chunk-AHV36NL3.js";
36
+ } from "./chunk-7DBYKEYF.js";
37
37
  import {
38
38
  extractPresentedPlan,
39
39
  readPlanFile,
@@ -402,7 +402,7 @@ async function continueSourceThread(threadId, prompt) {
402
402
  await continueOnReply(threadId, prompt);
403
403
  return;
404
404
  }
405
- const { getOrchestrator: getOrchestrator2 } = await import("./orchestrator-RJEULR5I.js");
405
+ const { getOrchestrator: getOrchestrator2 } = await import("./orchestrator-6PZQ7DZS.js");
406
406
  await getOrchestrator2().send(threadId, prompt);
407
407
  } catch {
408
408
  }
@@ -6425,7 +6425,7 @@ function formatScheduledPrompt(name, prompt) {
6425
6425
  ${prompt}`;
6426
6426
  }
6427
6427
  async function defaultDeps() {
6428
- const { getOrchestrator: getOrchestrator2, startOrchestration: startOrchestration2 } = await import("./orchestrator-RJEULR5I.js");
6428
+ const { getOrchestrator: getOrchestrator2, startOrchestration: startOrchestration2 } = await import("./orchestrator-6PZQ7DZS.js");
6429
6429
  const orch = getOrchestrator2();
6430
6430
  return {
6431
6431
  findThread: (id) => findThreadByRef(id),
package/dist/index.cjs CHANGED
@@ -9929,10 +9929,17 @@ function asRecord(input) {
9929
9929
  function str2(v) {
9930
9930
  return typeof v === "string" && v.trim() ? v : void 0;
9931
9931
  }
9932
+ function clipChatLine(value, max = CHAT_DETAIL_MAX) {
9933
+ const line = value.trim().split(/\r?\n/, 1)[0] ?? "";
9934
+ if (line.length <= max) return line;
9935
+ return `${line.slice(0, Math.max(1, max - 1))}\u2026`;
9936
+ }
9932
9937
  function looksLikeFilePath(value) {
9933
- if (value.startsWith("/") || value.startsWith("~/")) return true;
9934
- if (/^[A-Za-z]:[\\/]/.test(value)) return true;
9935
- return value.includes("/") || value.includes("\\");
9938
+ const trimmed = value.trim();
9939
+ if (!trimmed || /[\s;|&<>]/.test(trimmed)) return false;
9940
+ if (trimmed.startsWith("/") || trimmed.startsWith("~/")) return true;
9941
+ if (/^[A-Za-z]:[\\/]/.test(trimmed)) return true;
9942
+ return trimmed.includes("/") || trimmed.includes("\\");
9936
9943
  }
9937
9944
  function stripWorktreePrefix(path2, worktreePath) {
9938
9945
  if (!worktreePath) return path2;
@@ -9946,8 +9953,9 @@ function visibleToolRowDetail(detail, description, worktreePath) {
9946
9953
  const raw = detail.trim();
9947
9954
  const desc = (description ?? "").trim();
9948
9955
  if (!looksLikeFilePath(raw)) {
9949
- if (desc === raw) return void 0;
9950
- return raw;
9956
+ const clipped = clipChatLine(raw);
9957
+ if (!clipped || desc === clipped || desc === raw) return void 0;
9958
+ return clipped;
9951
9959
  }
9952
9960
  const rel = stripWorktreePrefix(raw, worktreePath);
9953
9961
  if (!rel) return void 0;
@@ -9961,7 +9969,7 @@ function visibleToolRowDetail(detail, description, worktreePath) {
9961
9969
  function toolDetail(name, input) {
9962
9970
  if (!input) return void 0;
9963
9971
  const command = str2(input.command) ?? str2(input.cmd);
9964
- if (command) return command;
9972
+ if (command) return clipChatLine(command);
9965
9973
  const pattern = str2(input.pattern) ?? str2(input.glob) ?? str2(input.glob_pattern);
9966
9974
  const isSearch = /grep|glob|search|ripgrep|findfiles|semsearch/i.test(name);
9967
9975
  if (isSearch && pattern) {
@@ -10481,10 +10489,12 @@ function normalizeParseResult(parsed) {
10481
10489
  if (!parsed) return [];
10482
10490
  return Array.isArray(parsed) ? parsed : [parsed];
10483
10491
  }
10492
+ var CHAT_DETAIL_MAX;
10484
10493
  var init_message_parts = __esm({
10485
10494
  "src/agents/message-parts.ts"() {
10486
10495
  "use strict";
10487
10496
  init_error_detail();
10497
+ CHAT_DETAIL_MAX = 72;
10488
10498
  }
10489
10499
  });
10490
10500
 
package/dist/index.js CHANGED
@@ -238,7 +238,7 @@ import {
238
238
  worktreeCleanupSettings,
239
239
  wrapReviewSkillMarkdown,
240
240
  writeWorktreeFile
241
- } from "./chunk-VTIVVVEC.js";
241
+ } from "./chunk-P56XKPWT.js";
242
242
  import {
243
243
  LEGACY_PLAN_FILE_REL,
244
244
  PLAN_FILE_NAME,
@@ -344,7 +344,7 @@ import {
344
344
  withEventParentId,
345
345
  withEventsParentId,
346
346
  writeInjectedMcpConfig
347
- } from "./chunk-5FTIOINZ.js";
347
+ } from "./chunk-6XOSOIDJ.js";
348
348
  import {
349
349
  CLOUD_COORDINATOR_BUSY_REPLY,
350
350
  CLOUD_COORDINATOR_STOPPED_REPLY,
@@ -9021,10 +9021,15 @@ function asRecord(input) {
9021
9021
  function str2(v) {
9022
9022
  return typeof v === "string" && v.trim() ? v : void 0;
9023
9023
  }
9024
+ function clipChatLine(value, max = CHAT_DETAIL_MAX) {
9025
+ const line = value.trim().split(/\r?\n/, 1)[0] ?? "";
9026
+ if (line.length <= max) return line;
9027
+ return `${line.slice(0, Math.max(1, max - 1))}\u2026`;
9028
+ }
9024
9029
  function toolDetail(name, input) {
9025
9030
  if (!input) return void 0;
9026
9031
  const command = str2(input.command) ?? str2(input.cmd);
9027
- if (command) return command;
9032
+ if (command) return clipChatLine(command);
9028
9033
  const pattern = str2(input.pattern) ?? str2(input.glob) ?? str2(input.glob_pattern);
9029
9034
  const isSearch = /grep|glob|search|ripgrep|findfiles|semsearch/i.test(name);
9030
9035
  if (isSearch && pattern) {
@@ -9461,10 +9466,12 @@ function normalizeParseResult(parsed) {
9461
9466
  if (!parsed) return [];
9462
9467
  return Array.isArray(parsed) ? parsed : [parsed];
9463
9468
  }
9469
+ var CHAT_DETAIL_MAX;
9464
9470
  var init_message_parts = __esm({
9465
9471
  "src/agents/message-parts.ts"() {
9466
9472
  "use strict";
9467
9473
  init_error_detail();
9474
+ CHAT_DETAIL_MAX = 72;
9468
9475
  }
9469
9476
  });
9470
9477
 
@@ -37,7 +37,7 @@ import {
37
37
  syncBoardPins,
38
38
  updateSchedule,
39
39
  waitForDetachedJob
40
- } from "../chunk-3QTEXR7L.js";
40
+ } from "../chunk-S6HYHXFO.js";
41
41
  import {
42
42
  applySystemCaEnv,
43
43
  isCursorApiKeyConfigured,
@@ -46,7 +46,7 @@ import {
46
46
  materializeSystemCaBundle,
47
47
  sideboardMcpProfile,
48
48
  trustSystemCertificates
49
- } from "../chunk-AHV36NL3.js";
49
+ } from "../chunk-7DBYKEYF.js";
50
50
  import "../chunk-HVIEYTUK.js";
51
51
  import "../chunk-Y4MIXGPA.js";
52
52
  import {
@@ -6,9 +6,9 @@ import {
6
6
  resolveSendFollowUp,
7
7
  startOrchestration,
8
8
  waitForPidExit
9
- } from "./chunk-VTIVVVEC.js";
9
+ } from "./chunk-P56XKPWT.js";
10
10
  import "./chunk-DJU54RYW.js";
11
- import "./chunk-5FTIOINZ.js";
11
+ import "./chunk-6XOSOIDJ.js";
12
12
  import "./chunk-VIODP5PT.js";
13
13
  import "./chunk-WXKXSZN4.js";
14
14
  import "./chunk-6K64FJDD.js";
@@ -8,8 +8,8 @@ import {
8
8
  resolveSendFollowUp,
9
9
  startOrchestration,
10
10
  waitForPidExit
11
- } from "./chunk-3QTEXR7L.js";
12
- import "./chunk-AHV36NL3.js";
11
+ } from "./chunk-S6HYHXFO.js";
12
+ import "./chunk-7DBYKEYF.js";
13
13
  import "./chunk-HVIEYTUK.js";
14
14
  import "./chunk-Y4MIXGPA.js";
15
15
  import "./chunk-VKQGAWHY.js";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sideboard-ai/core",
3
- "version": "0.1.186",
3
+ "version": "0.1.187",
4
4
  "description": "Sideboard core — orchestration, agents, git worktrees, MCP server",
5
5
  "license": "Apache-2.0",
6
6
  "type": "module",