@sideboard-ai/core 0.1.139 → 0.1.143

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 (63) hide show
  1. package/dist/{abletime-VTP4JR63.js → abletime-DI55AJX3.js} +2 -2
  2. package/dist/{abletime-DDTV7WO3.js → abletime-QEVAE67D.js} +2 -2
  3. package/dist/agents/cursor-runner.cjs +0 -0
  4. package/dist/agents/cursor-runner.js +1 -1
  5. package/dist/{agents-665S7Z3R.js → agents-E5AAMHDY.js} +11 -7
  6. package/dist/{agents-OC3XM7UE.js → agents-OEEOIKUB.js} +10 -6
  7. package/dist/{app-settings-U5RZKUXG.js → app-settings-WJDCJFSY.js} +3 -1
  8. package/dist/{app-settings-YQ7YX2CC.js → app-settings-ZCN632OJ.js} +3 -1
  9. package/dist/caffeinate-hold-NBRUWYXO.js +0 -0
  10. package/dist/{chunk-HLIHBGVO.js → chunk-4D4PEBGB.js} +2 -2
  11. package/dist/{chunk-DJJ3DTT4.js → chunk-4Q45TLZ5.js} +7 -7
  12. package/dist/chunk-6GN5WPYZ.js +0 -0
  13. package/dist/chunk-B3SJXYIJ.js +0 -0
  14. package/dist/chunk-BD2ICC4D.js +0 -0
  15. package/dist/{chunk-GKKHXZCT.js → chunk-BGQBELGJ.js} +201 -2
  16. package/dist/{chunk-2XXAAIN3.js → chunk-BOD5V52W.js} +1 -1
  17. package/dist/{chunk-23KCPND2.js → chunk-CG25RYQQ.js} +47 -40
  18. package/dist/{chunk-YZQEJOAU.js → chunk-EAP4SMR3.js} +342 -36
  19. package/dist/chunk-ED4UPEJX.js +0 -0
  20. package/dist/chunk-EUXOHTUK.js +0 -0
  21. package/dist/{chunk-5XH5M6RA.js → chunk-FADNFPZO.js} +3 -3
  22. package/dist/{chunk-SSBM4GZX.js → chunk-HC5N3BDL.js} +2 -2
  23. package/dist/{chunk-GJBHOJCZ.js → chunk-I77RYPOH.js} +201 -2
  24. package/dist/chunk-KGZBYWZ3.js +0 -0
  25. package/dist/chunk-KLBOWJ74.js +0 -0
  26. package/dist/{chunk-ZCLHAOFR.js → chunk-KP4OJUPH.js} +551 -39
  27. package/dist/chunk-KPIYENTF.js +0 -0
  28. package/dist/chunk-N5PM7HGQ.js +0 -0
  29. package/dist/chunk-NSTQ6QKD.js +0 -0
  30. package/dist/{chunk-DKXZCIB2.js → chunk-O3JEC2UJ.js} +7 -7
  31. package/dist/{chunk-RTX3AY42.js → chunk-OHWN4JEL.js} +5 -3
  32. package/dist/{chunk-E2RE7P2S.js → chunk-R2W7A2UO.js} +3 -3
  33. package/dist/chunk-S42XV45P.js +0 -0
  34. package/dist/{chunk-7SYFWPOZ.js → chunk-UG5N7ET3.js} +5 -3
  35. package/dist/{chunk-CDJISVKN.js → chunk-VHTIHOHE.js} +47 -41
  36. package/dist/{chunk-AT346U23.js → chunk-VZJVKQHH.js} +1 -1
  37. package/dist/{chunk-FSCQXMGI.js → chunk-WT5HSFOU.js} +1 -0
  38. package/dist/connected-teams-IJUJQ7R6.js +0 -0
  39. package/dist/{coordinator-prompt-43O6EPA2.js → coordinator-prompt-2LD3C74O.js} +3 -3
  40. package/dist/{coordinator-prompt-4TXU6Q3R.js → coordinator-prompt-FBX7Y4EM.js} +3 -3
  41. package/dist/cursor-recover-NOQYOFRF.js +0 -0
  42. package/dist/{global-workspace-ZDYKHQ4O.js → global-workspace-NG7SU3GV.js} +4 -4
  43. package/dist/{global-workspace-VIU57E3Y.js → global-workspace-OCV77UYF.js} +4 -4
  44. package/dist/index.cjs +945 -129
  45. package/dist/index.d.cts +249 -62
  46. package/dist/index.d.ts +249 -62
  47. package/dist/index.js +110 -14
  48. package/dist/mcp/run-stdio.cjs +646 -112
  49. package/dist/mcp/run-stdio.js +12 -12
  50. package/dist/oauth-YJBAURIJ.js +0 -0
  51. package/dist/{orchestrator-ZCMYSDTC.js → orchestrator-TDJZKQPT.js} +7 -7
  52. package/dist/{orchestrator-WEFXUHFX.js → orchestrator-VIFXOHF4.js} +8 -8
  53. package/dist/paths-QCI3MTO5.js +0 -0
  54. package/dist/plan-file-PHVKUAEE.js +0 -0
  55. package/dist/run-USF6FRKV.js +0 -0
  56. package/dist/thread-store-57ZLHR3A.js +0 -0
  57. package/dist/title-4WAKWZRF.js +0 -0
  58. package/dist/{workspaces-4HYGNH4B.js → workspaces-4FUQW5LD.js} +5 -5
  59. package/dist/{workspaces-ALCTB65T.js → workspaces-PU5YHQ7Z.js} +5 -5
  60. package/dist/{worktree-GXD2NGOZ.js → worktree-GKLPPNWR.js} +2 -2
  61. package/dist/{worktree-NSNZODAM.js → worktree-Z22HTSCU.js} +2 -2
  62. package/package.json +9 -8
  63. package/LICENSE +0 -190
package/dist/index.js CHANGED
@@ -1,6 +1,9 @@
1
1
  import {
2
2
  AGENT_GIT_ACTIONS,
3
3
  BOARD_COLUMN_DEFS,
4
+ BRIGHTSY_SUMMARIZE_CONTEXT_TOOL,
5
+ BUNDLED_LONG_RUNNING_PATH,
6
+ BUNDLED_SKILL_PREFIX,
4
7
  CHARS_PER_CONTEXT_TOKEN,
5
8
  CONTEXT_COMPACT_CHARS,
6
9
  CONTEXT_KEEP_RECENT_CHARS,
@@ -10,6 +13,9 @@ import {
10
13
  HOME_BOARD_AGENT_HINT,
11
14
  HOME_BOARD_CACHE_TTL_MS,
12
15
  LEGACY_REVIEW_REQUEST_PATH,
16
+ LONG_RUNNING_SKILL_COMMAND,
17
+ OPTIONAL_SERVICES,
18
+ OPTIONAL_SERVICE_IDS,
13
19
  Orchestrator,
14
20
  REPO_REVIEW_NAME,
15
21
  REPO_REVIEW_PATH,
@@ -33,6 +39,7 @@ import {
33
39
  armSchedules,
34
40
  assembleHomeBoard,
35
41
  boardPinIdentity,
42
+ buildBrightsySessionSeed,
36
43
  buildForkTranscriptAttachment,
37
44
  buildReviewRequestAttachment,
38
45
  buildSessionSeed,
@@ -46,7 +53,9 @@ import {
46
53
  computeNextRunAt,
47
54
  conductorDbPath,
48
55
  confirmLand,
56
+ connectOptionalService,
49
57
  connectSlackToken,
58
+ connectedOptionalServices,
50
59
  copyConfiguredFiles,
51
60
  createChatTab,
52
61
  createPrStack,
@@ -58,6 +67,7 @@ import {
58
67
  deleteSchedule,
59
68
  desktopHostPidPath,
60
69
  detectAgents,
70
+ disconnectOptionalService,
61
71
  disconnectSlackWorkspace,
62
72
  discoverSkills,
63
73
  ensureReviewRequestFile,
@@ -66,10 +76,12 @@ import {
66
76
  estimateOccupancyTokens,
67
77
  estimateThreadChars,
68
78
  expandComposerPrompt,
79
+ extractBrightsyContextSummary,
69
80
  extractiveSummary,
70
81
  findBoardIssue,
71
82
  findBoardPin,
72
83
  findBoardPr,
84
+ findLastBrightsyContextSummary,
73
85
  findLiveThreadForCreate,
74
86
  findOrphanWorktrees,
75
87
  findThreadForStackLayer,
@@ -79,7 +91,12 @@ import {
79
91
  forkThreadWorktree,
80
92
  formatAgentInstructions,
81
93
  formatArtifactDirective,
94
+ formatDetachedJobInvoke,
95
+ formatLongRunningDirective,
96
+ formatLongRunningReminder,
82
97
  formatMessagesAsTranscript,
98
+ formatOptionalServicesDirective,
99
+ formatOptionalServicesReminder,
83
100
  formatProcessGuideDirective,
84
101
  formatRenameBranchDirective,
85
102
  formatScheduleWhen,
@@ -92,6 +109,7 @@ import {
92
109
  formatWorktreeDirective,
93
110
  formatWorktreeReminder,
94
111
  forwardContextUsage,
112
+ forwardOccupancyTokens,
95
113
  getDefaultRunScript,
96
114
  getDiff,
97
115
  getDiffSummary,
@@ -112,6 +130,7 @@ import {
112
130
  isCowboyThread,
113
131
  isDesktopHostAlive,
114
132
  isHomeBoardThread,
133
+ isOptionalServiceId,
115
134
  isPidAlive,
116
135
  isPrimaryCheckoutThread,
117
136
  isSlackExternalReplyPrompt,
@@ -129,8 +148,13 @@ import {
129
148
  listWorktreeFiles,
130
149
  loadAgentInstructions,
131
150
  maybeCompactContext,
151
+ messagesSinceLastBrightsyContextSummary,
152
+ normalizeServiceOrigin,
132
153
  openPrStackLayers,
133
154
  openStackLayer,
155
+ optionalServiceConnected,
156
+ optionalServiceSpec,
157
+ packagedDetachedJobPath,
134
158
  parseDurationMs,
135
159
  pendingSlackExternalReplies,
136
160
  pollSlackOutboundWatches,
@@ -148,6 +172,7 @@ import {
148
172
  requireAgent,
149
173
  requireSlackWorkspace,
150
174
  resolveConductorCursorAgentId,
175
+ resolveDetachedJobScript,
151
176
  resolveFilesToCopy,
152
177
  resolveReviewGuidelines,
153
178
  resolveScheduleThreadId,
@@ -180,13 +205,14 @@ import {
180
205
  threadsSharingWorktree,
181
206
  updateSchedule,
182
207
  upsertSlackWorkspace,
208
+ verifyOptionalService,
183
209
  waitForPidExit,
184
210
  withAgentInstructions,
185
211
  worktreeBoardStatus,
186
212
  worktreeCleanupSettings,
187
213
  wrapReviewSkillMarkdown,
188
214
  writeWorktreeFile
189
- } from "./chunk-ZCLHAOFR.js";
215
+ } from "./chunk-KP4OJUPH.js";
190
216
  import {
191
217
  BRIGHTSY_MCP_ALLOWED_TOOLS,
192
218
  CLAUDE_MODEL_CATALOG,
@@ -217,6 +243,7 @@ import {
217
243
  getAdapter,
218
244
  getAgentSetupInfo,
219
245
  installAgent,
246
+ installNpmGlobalPackage,
220
247
  isBrightsyConnected,
221
248
  isBrightsyNdjsonLine,
222
249
  isCursorAutoModel,
@@ -263,10 +290,11 @@ import {
263
290
  toolFilePath,
264
291
  totalTokens,
265
292
  visibleToolRowDetail,
293
+ whichOnPath,
266
294
  withEventParentId,
267
295
  withEventsParentId,
268
296
  writeInjectedMcpConfig
269
- } from "./chunk-CDJISVKN.js";
297
+ } from "./chunk-VHTIHOHE.js";
270
298
  import {
271
299
  brightsyMcpServerName,
272
300
  connectBrightsyTeam,
@@ -291,7 +319,7 @@ import {
291
319
  listWorkspaces,
292
320
  removeWorkspace,
293
321
  syncWorkspacesFromThreads
294
- } from "./chunk-SSBM4GZX.js";
322
+ } from "./chunk-HC5N3BDL.js";
295
323
  import {
296
324
  CLOUD_COORDINATOR_BUSY_REPLY,
297
325
  CLOUD_COORDINATOR_STOPPED_REPLY,
@@ -326,7 +354,7 @@ import {
326
354
  stageAbsolutePathsAsAttachments,
327
355
  stageBuffersAsAttachments,
328
356
  takenTeamSlugsForOrchestration
329
- } from "./chunk-E2RE7P2S.js";
357
+ } from "./chunk-R2W7A2UO.js";
330
358
  import {
331
359
  COORDINATOR_TOOL_PLAYBOOK,
332
360
  SLACK_REPLY_FORMATTING,
@@ -335,7 +363,7 @@ import {
335
363
  enrichWorkspacesWithGithub,
336
364
  ensureGlobalCoordinatorCwd,
337
365
  formatWorkspaceInventory
338
- } from "./chunk-7SYFWPOZ.js";
366
+ } from "./chunk-UG5N7ET3.js";
339
367
  import {
340
368
  ABLETIME_MCP_PATH,
341
369
  DEFAULT_ABLETIME_HOST,
@@ -357,7 +385,7 @@ import {
357
385
  taskUrl,
358
386
  toAbleTimeIssueInfo,
359
387
  verifyAbleTimeConnection
360
- } from "./chunk-AT346U23.js";
388
+ } from "./chunk-VZJVKQHH.js";
361
389
  import {
362
390
  formatFetchError,
363
391
  httpFetch,
@@ -383,7 +411,7 @@ import {
383
411
  preferredCursorCostCents,
384
412
  turnCostUsdFromCursorUsage,
385
413
  withMaxOldSpaceSize
386
- } from "./chunk-FSCQXMGI.js";
414
+ } from "./chunk-WT5HSFOU.js";
387
415
  import {
388
416
  caffeinateHoldPath,
389
417
  getCaffeinateHold,
@@ -472,7 +500,7 @@ import {
472
500
  worktreeDisplayLabel,
473
501
  worktreeDisplayLabelForGroup,
474
502
  worktreeNameFromPath
475
- } from "./chunk-DKXZCIB2.js";
503
+ } from "./chunk-O3JEC2UJ.js";
476
504
  import {
477
505
  ATTACHMENTS_DIR,
478
506
  LEGACY_ATTACHMENTS_DIR,
@@ -503,6 +531,7 @@ import {
503
531
  deleteBranchOnPurgeEnabled,
504
532
  disconnectAbleTimeConnection,
505
533
  disconnectLinearConnection,
534
+ emptyPublicIntegrations,
506
535
  ensureSlackDeviceIdentity,
507
536
  getAbleTimeAccessToken,
508
537
  getAbleTimeHost,
@@ -549,7 +578,7 @@ import {
549
578
  updateDefaultsSettings,
550
579
  updateIntegrationsSettings,
551
580
  updateOpencodeSettings
552
- } from "./chunk-GJBHOJCZ.js";
581
+ } from "./chunk-I77RYPOH.js";
553
582
  import {
554
583
  stripNestedElectronEnv
555
584
  } from "./chunk-4TR3HZFT.js";
@@ -1393,6 +1422,42 @@ async function listIssues(repoPath) {
1393
1422
  };
1394
1423
  }
1395
1424
 
1425
+ // src/integrations/optional-cli.ts
1426
+ async function detectOptionalServiceClis() {
1427
+ enrichPathWithNpmGlobalBin();
1428
+ return Promise.all(
1429
+ OPTIONAL_SERVICES.map(async (spec) => {
1430
+ if (!spec.cli) {
1431
+ return { id: spec.id, cli: null, installed: false, path: null };
1432
+ }
1433
+ const path2 = await whichOnPath(spec.cli);
1434
+ return {
1435
+ id: spec.id,
1436
+ cli: spec.cli,
1437
+ installed: Boolean(path2),
1438
+ path: path2
1439
+ };
1440
+ })
1441
+ );
1442
+ }
1443
+ async function installOptionalServiceCli(id) {
1444
+ if (!isOptionalServiceId(id)) {
1445
+ return { ok: false, message: "Unknown optional service" };
1446
+ }
1447
+ const spec = optionalServiceSpec(id);
1448
+ if (!spec.cli || !spec.npmPackage) {
1449
+ return {
1450
+ ok: false,
1451
+ message: `${spec.label} has no CLI to install. Use the HTTP API with the stored token.`
1452
+ };
1453
+ }
1454
+ return installNpmGlobalPackage({
1455
+ npmPackage: spec.npmPackage,
1456
+ installCommand: `npm install -g ${spec.npmPackage}`,
1457
+ cliBin: spec.cli
1458
+ });
1459
+ }
1460
+
1396
1461
  // src/composer/diff-comment.ts
1397
1462
  function lineRangeLabel(lines) {
1398
1463
  const nos = lines.map((l) => l.lineNo);
@@ -1899,14 +1964,14 @@ function fail(err) {
1899
1964
  function registerSlackTools(server) {
1900
1965
  server.tool(
1901
1966
  "list_teams",
1902
- "List Slack workspaces connected in Sideboard Account settings. Each row is team_id + name. Pass team_id to slack_list_channels, slack_list_users, slack_search, slack_read, slack_post, and slack_replies.",
1967
+ "List Slack workspaces connected in Settings \u2192 Remote. Each row is team_id + name. Pass team_id to slack_list_channels, slack_list_users, slack_search, slack_read, slack_post, and slack_replies.",
1903
1968
  {},
1904
1969
  async () => {
1905
1970
  const teams = listSlackWorkspaces();
1906
1971
  if (teams.length === 0) {
1907
1972
  return text({
1908
1973
  teams: [],
1909
- hint: "No Slack workspaces connected. Add one in Account \u2192 Slack workspaces (paste xoxb-/xoxp- or browser sign-in)."
1974
+ hint: "No Slack workspaces connected. Add one in Settings \u2192 Remote \u2192 Slack (paste xoxb-/xoxp- or browser sign-in)."
1910
1975
  });
1911
1976
  }
1912
1977
  return text({
@@ -2927,7 +2992,7 @@ async function startMcpServer() {
2927
2992
  );
2928
2993
  }
2929
2994
  try {
2930
- const { maxConcurrentAgents: maxConcurrentAgents2 } = await import("./app-settings-U5RZKUXG.js");
2995
+ const { maxConcurrentAgents: maxConcurrentAgents2 } = await import("./app-settings-WJDCJFSY.js");
2931
2996
  orch.setMaxConcurrent(maxConcurrentAgents2());
2932
2997
  } catch {
2933
2998
  }
@@ -3209,7 +3274,7 @@ async function startMcpServer() {
3209
3274
  registerAbleTimeTools(server);
3210
3275
  registerScheduleTools(server);
3211
3276
  const { getCaffeinateHold: getCaffeinateHold2, setCaffeinateHold: setCaffeinateHold2 } = await import("./caffeinate-hold-X3JNPR42.js");
3212
- const { resolveNewThreadOptions: resolveNewThreadOptions2, resolveThreadDefaults: resolveThreadDefaults2 } = await import("./app-settings-U5RZKUXG.js");
3277
+ const { resolveNewThreadOptions: resolveNewThreadOptions2, resolveThreadDefaults: resolveThreadDefaults2 } = await import("./app-settings-WJDCJFSY.js");
3213
3278
  const accountDefaults = resolveThreadDefaults2();
3214
3279
  const accountDefaultsHint = `Account defaults: agent=${accountDefaults.agent}, model=${accountDefaults.model?.trim() || "Auto"}, effort=${accountDefaults.effort}`;
3215
3280
  server.tool(
@@ -4590,7 +4655,7 @@ function slackOAuthCredentials() {
4590
4655
  const clientSecret = process.env.SIDEBOARD_SLACK_CLIENT_SECRET?.trim() || settings.integrations.slackClientSecret?.trim() || "";
4591
4656
  if (!clientId) {
4592
4657
  throw new Error(
4593
- "Slack browser sign-in needs a Slack app Client ID (Account \u2192 Slack, or SIDEBOARD_SLACK_CLIENT_ID). You can still paste an xoxb- or xoxp- token."
4658
+ "Slack browser sign-in needs a Slack app Client ID (Settings \u2192 Remote \u2192 Slack, or SIDEBOARD_SLACK_CLIENT_ID). You can still paste an xoxb- or xoxp- token."
4594
4659
  );
4595
4660
  }
4596
4661
  return { clientId, clientSecret: clientSecret || null };
@@ -6335,6 +6400,9 @@ export {
6335
6400
  ATTACHMENTS_DIR,
6336
6401
  BAKED_SLACK_RELAY_URL,
6337
6402
  BRIGHTSY_MCP_ALLOWED_TOOLS,
6403
+ BRIGHTSY_SUMMARIZE_CONTEXT_TOOL,
6404
+ BUNDLED_LONG_RUNNING_PATH,
6405
+ BUNDLED_SKILL_PREFIX,
6338
6406
  BrightsySideboardApi,
6339
6407
  CHARS_PER_CONTEXT_TOKEN,
6340
6408
  CLAUDE_MODEL_CATALOG,
@@ -6363,8 +6431,11 @@ export {
6363
6431
  LINEAR_OAUTH_PORT,
6364
6432
  LINEAR_OAUTH_REDIRECT,
6365
6433
  LINEAR_OAUTH_SCOPES,
6434
+ LONG_RUNNING_SKILL_COMMAND,
6366
6435
  LinearOAuthCancelledError,
6367
6436
  MAX_ANTHROPIC_CACHE_CONTROL_BLOCKS,
6437
+ OPTIONAL_SERVICES,
6438
+ OPTIONAL_SERVICE_IDS,
6368
6439
  ORCHESTRATOR_AGENT_KINDS,
6369
6440
  Orchestrator,
6370
6441
  PASTE_ATTACH_MIN_CHARS,
@@ -6443,6 +6514,7 @@ export {
6443
6514
  brightsyInjectWorktreeMcpEnabled,
6444
6515
  brightsyMcpAllowedTools,
6445
6516
  brightsyMcpServerName,
6517
+ buildBrightsySessionSeed,
6446
6518
  buildCachedUserContent,
6447
6519
  buildClaudeStreamJsonUserMessage,
6448
6520
  buildDiffCommentAttachment,
@@ -6483,7 +6555,9 @@ export {
6483
6555
  conductorDbPath,
6484
6556
  confirmLand,
6485
6557
  connectBrightsyTeam,
6558
+ connectOptionalService,
6486
6559
  connectSlackToken,
6560
+ connectedOptionalServices,
6487
6561
  contextTokens,
6488
6562
  coordinatorSystemPrompt,
6489
6563
  coordinatorTurnReminder,
@@ -6514,13 +6588,16 @@ export {
6514
6588
  detectAgents,
6515
6589
  detectGhStack,
6516
6590
  detectLocalMergeConflicts,
6591
+ detectOptionalServiceClis,
6517
6592
  disconnectAbleTimeConnection,
6518
6593
  disconnectBrightsyTeam,
6519
6594
  disconnectLinear,
6520
6595
  disconnectLinearConnection,
6596
+ disconnectOptionalService,
6521
6597
  disconnectSlackWorkspace,
6522
6598
  discoverSkills,
6523
6599
  dropCachedPrefixOnResume,
6600
+ emptyPublicIntegrations,
6524
6601
  encodeBrightsyTarget,
6525
6602
  enrichPathWithNpmGlobalBin,
6526
6603
  enrichWorkspacesWithGithub,
@@ -6540,6 +6617,7 @@ export {
6540
6617
  estimateOccupancyTokens,
6541
6618
  estimateThreadChars,
6542
6619
  expandComposerPrompt,
6620
+ extractBrightsyContextSummary,
6543
6621
  extractGhErrorDetail,
6544
6622
  extractPendingPlanQuestions,
6545
6623
  extractPresentedPlan,
@@ -6548,6 +6626,7 @@ export {
6548
6626
  finalizeParts,
6549
6627
  findConventionSetup,
6550
6628
  findInvalidCacheControlTtlOrder,
6629
+ findLastBrightsyContextSummary,
6551
6630
  findLiveThreadForCreate,
6552
6631
  findOrphanWorktrees,
6553
6632
  findSlackCoordinator,
@@ -6561,12 +6640,17 @@ export {
6561
6640
  formatAgentInstructions,
6562
6641
  formatArtifactDirective,
6563
6642
  formatBrightsyFetchError,
6643
+ formatDetachedJobInvoke,
6564
6644
  formatFetchError,
6565
6645
  formatGhLandError,
6566
6646
  formatGitAuthModeDirective,
6567
6647
  formatIpcInvokeError,
6648
+ formatLongRunningDirective,
6649
+ formatLongRunningReminder,
6568
6650
  formatMergePrError,
6569
6651
  formatMessagesAsTranscript,
6652
+ formatOptionalServicesDirective,
6653
+ formatOptionalServicesReminder,
6570
6654
  formatPlanQuestionAnswers,
6571
6655
  formatPlanQuestionsForChat,
6572
6656
  formatProcessGuideDirective,
@@ -6586,6 +6670,7 @@ export {
6586
6670
  formatWorktreeDirective,
6587
6671
  formatWorktreeReminder,
6588
6672
  forwardContextUsage,
6673
+ forwardOccupancyTokens,
6589
6674
  fromInclusiveInputUsage,
6590
6675
  getAbleTimeAccessToken,
6591
6676
  getAbleTimeHost,
@@ -6648,6 +6733,8 @@ export {
6648
6733
  initializeGitRepository,
6649
6734
  inspectGitWorktree,
6650
6735
  installAgent,
6736
+ installNpmGlobalPackage,
6737
+ installOptionalServiceCli,
6651
6738
  interruptSlackCoordinatorForInbound,
6652
6739
  invalidateThreadListCache,
6653
6740
  isAbleTimeConnected,
@@ -6671,6 +6758,7 @@ export {
6671
6758
  isIssueSourceConnected,
6672
6759
  isLinearConnected,
6673
6760
  isLinearOAuthCancelled,
6761
+ isOptionalServiceId,
6674
6762
  isOrchestratorCapableAgent,
6675
6763
  isOrchestratorThread,
6676
6764
  isPidAlive,
@@ -6754,11 +6842,13 @@ export {
6754
6842
  mergeSideboardIntoMcpServersJson,
6755
6843
  mergeUsage,
6756
6844
  messagePartParentId,
6845
+ messagesSinceLastBrightsyContextSummary,
6757
6846
  nextPastedTextName,
6758
6847
  nextThinkingEffort,
6759
6848
  nonInteractiveGitProcessEnv,
6760
6849
  normalizeAbleTimeHost,
6761
6850
  normalizeParseResult,
6851
+ normalizeServiceOrigin,
6762
6852
  normalizeThinkingEffort,
6763
6853
  normalizeThread,
6764
6854
  normalizeTurnInput,
@@ -6767,11 +6857,14 @@ export {
6767
6857
  openPrStackLayers,
6768
6858
  openStackLayer,
6769
6859
  opencodeAdapter,
6860
+ optionalServiceConnected,
6861
+ optionalServiceSpec,
6770
6862
  orchestrationQuotaFallbackAgent,
6771
6863
  orchestrationQuotaOnLimit,
6772
6864
  orchestrationTitleNeedsSoccerNickname,
6773
6865
  orchestratorSessionPoisonedByBuiltins,
6774
6866
  originGhRepoEnv,
6867
+ packagedDetachedJobPath,
6775
6868
  parseCursorRunnerLine,
6776
6869
  parseDurationMs,
6777
6870
  parseForceStopMessage,
@@ -6829,6 +6922,7 @@ export {
6829
6922
  resolveConductorCursorAgentId,
6830
6923
  resolveCursorModelId,
6831
6924
  resolveDefaultBranch,
6925
+ resolveDetachedJobScript,
6832
6926
  resolveDiffBaseRef,
6833
6927
  resolveEffectiveIssueSource,
6834
6928
  resolveFilesToCopy,
@@ -6957,9 +7051,11 @@ export {
6957
7051
  userCursorMcpConfigPath,
6958
7052
  validateLinearApiKey,
6959
7053
  verifyAbleTimeConnection,
7054
+ verifyOptionalService,
6960
7055
  visibleToolRowDetail,
6961
7056
  waitForPidExit,
6962
7057
  warmGithubAgentAuth,
7058
+ whichOnPath,
6963
7059
  withAgentInstructions,
6964
7060
  withEventParentId,
6965
7061
  withEventsParentId,