@sideboard-ai/core 0.1.158 → 0.1.159

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 (35) hide show
  1. package/dist/{abletime-BEIDJG7W.js → abletime-HOQBDQC4.js} +2 -2
  2. package/dist/{abletime-GWZE6OYM.js → abletime-LK7GV556.js} +2 -2
  3. package/dist/{agents-E3ZPWZRS.js → agents-5HY76BCR.js} +4 -4
  4. package/dist/{agents-RGE7PSUY.js → agents-67ZBH5OE.js} +4 -4
  5. package/dist/{app-settings-VRQI3FIE.js → app-settings-BJ5GFAE5.js} +13 -17
  6. package/dist/{app-settings-H3INSR67.js → app-settings-YWJ4MVYM.js} +13 -17
  7. package/dist/{chunk-DVJBO3M7.js → chunk-AGLPYXDT.js} +1 -1
  8. package/dist/{chunk-EPQIOAAY.js → chunk-DWUOKF3W.js} +7 -5
  9. package/dist/{chunk-D7EGJ3EI.js → chunk-EQIJ5MHR.js} +119 -110
  10. package/dist/{chunk-3BWVOUQG.js → chunk-FLG4A5FJ.js} +119 -110
  11. package/dist/{chunk-LQMFCS54.js → chunk-KEDHHXKW.js} +3 -13
  12. package/dist/{chunk-A7QXLYBN.js → chunk-MEZXWELT.js} +3 -13
  13. package/dist/{chunk-CVR4RJ6G.js → chunk-O7RWWPMR.js} +12 -13
  14. package/dist/{chunk-KYKNFJK5.js → chunk-OYOXLY6B.js} +39 -20
  15. package/dist/{chunk-3SUZMPGL.js → chunk-SIMFKJIB.js} +12 -13
  16. package/dist/{chunk-FBFIOVDH.js → chunk-TGU3LSDG.js} +38 -19
  17. package/dist/{chunk-N27GVFZY.js → chunk-UBMCEZRE.js} +1 -1
  18. package/dist/{chunk-BLRHO7XQ.js → chunk-V4R6L2ZL.js} +10 -6
  19. package/dist/{coordinator-prompt-GZESIQNH.js → coordinator-prompt-7NKY7QRK.js} +3 -3
  20. package/dist/{coordinator-prompt-26IJU2AV.js → coordinator-prompt-CNI6AK65.js} +3 -3
  21. package/dist/{global-workspace-REI55FZ6.js → global-workspace-FKAJZHO5.js} +3 -3
  22. package/dist/{global-workspace-5BIW26YR.js → global-workspace-IJYCUO4M.js} +3 -3
  23. package/dist/index.cjs +588 -472
  24. package/dist/index.d.cts +62 -57
  25. package/dist/index.d.ts +62 -57
  26. package/dist/index.js +322 -230
  27. package/dist/mcp/run-stdio.cjs +517 -399
  28. package/dist/mcp/run-stdio.js +262 -163
  29. package/dist/{orchestrator-ZVW2AC6B.js → orchestrator-KFLS5BTP.js} +5 -5
  30. package/dist/{orchestrator-J727WIJY.js → orchestrator-NSVP7DJH.js} +5 -5
  31. package/dist/{workspaces-NYSM2EPX.js → workspaces-D2M3AM2M.js} +3 -3
  32. package/dist/{workspaces-OCEPZXFD.js → workspaces-OFSDJ7PZ.js} +3 -3
  33. package/dist/{worktree-VTMBZKY6.js → worktree-BQE5KLRY.js} +2 -2
  34. package/dist/{worktree-T4SWFSTT.js → worktree-EA6AD6D6.js} +2 -2
  35. package/package.json +1 -1
@@ -24,7 +24,7 @@ import {
24
24
  stripBrightsyNdjsonNoise,
25
25
  sumUsageList,
26
26
  toolDescription
27
- } from "./chunk-BLRHO7XQ.js";
27
+ } from "./chunk-V4R6L2ZL.js";
28
28
  import {
29
29
  SLACK_REPLY_FORMATTING,
30
30
  addWorkspace,
@@ -50,7 +50,7 @@ import {
50
50
  stageAbsolutePathsAsAttachments,
51
51
  stageBuffersAsAttachments,
52
52
  syncWorkspacesFromThreads
53
- } from "./chunk-CVR4RJ6G.js";
53
+ } from "./chunk-O7RWWPMR.js";
54
54
  import {
55
55
  addPrStackLayer,
56
56
  allocateTeamName,
@@ -98,7 +98,7 @@ import {
98
98
  withRepoGitLock,
99
99
  worktreeDisplayLabelForGroup,
100
100
  worktreeNameFromPath
101
- } from "./chunk-LQMFCS54.js";
101
+ } from "./chunk-KEDHHXKW.js";
102
102
  import {
103
103
  ATTACHMENTS_DIR,
104
104
  DETACHED_JOBS_DIR,
@@ -128,6 +128,8 @@ import {
128
128
  } from "./chunk-HEII7W3Q.js";
129
129
  import {
130
130
  childEnvWithAppSettings,
131
+ formatViewerContextDirective,
132
+ formatViewerContextReminder,
131
133
  getIssueSource,
132
134
  isAbleTimeConnected,
133
135
  isLinearConnected,
@@ -140,10 +142,11 @@ import {
140
142
  resolveNewThreadOptions,
141
143
  resolveThreadDefaults,
142
144
  resolveVaultKey,
145
+ resolveViewerProfileForRepo,
143
146
  saveAppSettings,
144
147
  updateAdvancedSettings,
145
148
  writeSecureJson
146
- } from "./chunk-3BWVOUQG.js";
149
+ } from "./chunk-FLG4A5FJ.js";
147
150
  import {
148
151
  stripNestedElectronEnv
149
152
  } from "./chunk-4TR3HZFT.js";
@@ -461,7 +464,7 @@ async function continueSourceThread(threadId, prompt) {
461
464
  await continueOnReply(threadId, prompt);
462
465
  return;
463
466
  }
464
- const { getOrchestrator: getOrchestrator2 } = await import("./orchestrator-ZVW2AC6B.js");
467
+ const { getOrchestrator: getOrchestrator2 } = await import("./orchestrator-KFLS5BTP.js");
465
468
  await getOrchestrator2().send(threadId, prompt);
466
469
  } catch {
467
470
  }
@@ -741,9 +744,9 @@ async function spawnAgentTurn(thread, input, onEvent) {
741
744
  `Cannot spawn ${thread.agent}: thread ${thread.id} has no worktreePath`
742
745
  );
743
746
  }
744
- const { isGlobalThread: isGlobalThread2 } = await import("./global-workspace-5BIW26YR.js");
747
+ const { isGlobalThread: isGlobalThread2 } = await import("./global-workspace-IJYCUO4M.js");
745
748
  if (isGlobalThread2(thread)) {
746
- const { ensureGlobalCoordinatorCwd: ensureGlobalCoordinatorCwd2 } = await import("./coordinator-prompt-26IJU2AV.js");
749
+ const { ensureGlobalCoordinatorCwd: ensureGlobalCoordinatorCwd2 } = await import("./coordinator-prompt-CNI6AK65.js");
747
750
  ensureGlobalCoordinatorCwd2(
748
751
  isOrchestratorThread(thread) ? { orchestratorThreadId: thread.id } : void 0
749
752
  );
@@ -3370,7 +3373,7 @@ async function createThread(input, _onSetupLine) {
3370
3373
  });
3371
3374
  await requireAgent(resolved.agent);
3372
3375
  if (input.cowboy) {
3373
- const { cowboyModeEnabled } = await import("./app-settings-H3INSR67.js");
3376
+ const { cowboyModeEnabled } = await import("./app-settings-YWJ4MVYM.js");
3374
3377
  if (!cowboyModeEnabled()) {
3375
3378
  throw new Error(
3376
3379
  "Cowboy mode is off. Enable it in Settings \u2192 Advanced."
@@ -3428,7 +3431,7 @@ async function createThread(input, _onSetupLine) {
3428
3431
  let sourceIsFork = false;
3429
3432
  if (!input.cowboy && sourceType === "branch" && (!sourceRef || sourceRef === "HEAD" || sourceRef === "default")) {
3430
3433
  if (isAbleTimeConnected() && getIssueSource() === "abletime") {
3431
- const { ensureAbleTimeTask, issueAttachmentForAbleTimeTask } = await import("./abletime-GWZE6OYM.js");
3434
+ const { ensureAbleTimeTask, issueAttachmentForAbleTimeTask } = await import("./abletime-LK7GV556.js");
3432
3435
  const task = await ensureAbleTimeTask({
3433
3436
  title: title?.trim() || "Untitled work",
3434
3437
  description: input.prompt?.trim() || void 0
@@ -3525,7 +3528,7 @@ async function createThread(input, _onSetupLine) {
3525
3528
  return readThread(thread.id) ?? thread;
3526
3529
  }
3527
3530
  async function listLinearIssues(agent, repoPath) {
3528
- const { getAdapter: getAdapter2 } = await import("./agents-E3ZPWZRS.js");
3531
+ const { getAdapter: getAdapter2 } = await import("./agents-5HY76BCR.js");
3529
3532
  await requireAgent(agent, { requireLinear: true });
3530
3533
  const adapter = getAdapter2(agent);
3531
3534
  if (!adapter.listLinearIssues) {
@@ -3936,7 +3939,7 @@ async function adoptThread(input) {
3936
3939
  messages: input.messages ?? []
3937
3940
  });
3938
3941
  writeThread(thread);
3939
- const { ensureWorkspace: ensureWorkspace2 } = await import("./workspaces-NYSM2EPX.js");
3942
+ const { ensureWorkspace: ensureWorkspace2 } = await import("./workspaces-D2M3AM2M.js");
3940
3943
  await ensureWorkspace2(repoPath);
3941
3944
  const { ensureWorktreeSideboardIgnored: ensureWorktreeSideboardIgnored2 } = await import("./worktree-exclude-X54WSOXM.js");
3942
3945
  await ensureWorktreeSideboardIgnored2(input.worktreePath);
@@ -6490,7 +6493,7 @@ function formatScheduledPrompt(name, prompt) {
6490
6493
  ${prompt}`;
6491
6494
  }
6492
6495
  async function defaultDeps() {
6493
- const { getOrchestrator: getOrchestrator2, startOrchestration: startOrchestration2 } = await import("./orchestrator-ZVW2AC6B.js");
6496
+ const { getOrchestrator: getOrchestrator2, startOrchestration: startOrchestration2 } = await import("./orchestrator-KFLS5BTP.js");
6494
6497
  const orch = getOrchestrator2();
6495
6498
  return {
6496
6499
  findThread: (id) => findThreadByRef(id),
@@ -6752,7 +6755,7 @@ var Orchestrator = class {
6752
6755
  orphans: orphans.map((o) => ({ path: o.path, repoPath: o.repoPath }))
6753
6756
  });
6754
6757
  }
6755
- const { autoCleanupOrphansEnabled } = await import("./app-settings-H3INSR67.js");
6758
+ const { autoCleanupOrphansEnabled } = await import("./app-settings-YWJ4MVYM.js");
6756
6759
  if (autoCleanupOrphansEnabled() && shouldRunWorktreeCleanup() && orphans.length > 0) {
6757
6760
  await cleanupOrphanWorktrees({ repoPaths });
6758
6761
  }
@@ -7023,7 +7026,7 @@ var Orchestrator = class {
7023
7026
  }
7024
7027
  await setup;
7025
7028
  if (skipSetup) return;
7026
- const { autoRunAfterSetupEnabled } = await import("./app-settings-H3INSR67.js");
7029
+ const { autoRunAfterSetupEnabled } = await import("./app-settings-YWJ4MVYM.js");
7027
7030
  if (autoRunAfterSetupEnabled()) {
7028
7031
  try {
7029
7032
  await this.startDev(threadId);
@@ -7302,6 +7305,7 @@ var Orchestrator = class {
7302
7305
  ticketId: issueTicket?.id,
7303
7306
  ticketProvider: issueTicket?.provider
7304
7307
  }) : null;
7308
+ const viewerContextReminder = thread.agent !== "brightsy" && !isOrchestratorThread(thread) ? formatViewerContextReminder() : null;
7305
7309
  const slackReplyContext = formatSlackRepliesForTurn(
7306
7310
  pendingSlackExternalReplies(thread.messages)
7307
7311
  );
@@ -7311,6 +7315,7 @@ var Orchestrator = class {
7311
7315
  worktreeReminder,
7312
7316
  optionalServicesReminder,
7313
7317
  issueToolsReminder,
7318
+ viewerContextReminder,
7314
7319
  artifactReminder,
7315
7320
  longRunningReminder,
7316
7321
  slackReplyContext,
@@ -7332,7 +7337,7 @@ var Orchestrator = class {
7332
7337
  }
7333
7338
  const isBrightsy = fresh.agent === "brightsy";
7334
7339
  const isOrchestration = isOrchestratorThread(fresh);
7335
- const { autoRenameBranchEnabled, getGithubGitAuthMode } = await import("./app-settings-H3INSR67.js");
7340
+ const { autoRenameBranchEnabled, getGithubGitAuthMode } = await import("./app-settings-YWJ4MVYM.js");
7336
7341
  const gitAuthMode = getGithubGitAuthMode();
7337
7342
  const worktreeDirective = isBrightsy || isOrchestration ? null : formatWorktreeDirective(fresh, {
7338
7343
  githubSlug: await resolveGithubRepoSlug(fresh.worktreePath).catch(
@@ -7351,6 +7356,18 @@ var Orchestrator = class {
7351
7356
  ticketId: freshIssueTicket?.id,
7352
7357
  ticketProvider: freshIssueTicket?.provider
7353
7358
  });
7359
+ let viewerContextDirective = null;
7360
+ if (!isBrightsy && !isOrchestration) {
7361
+ try {
7362
+ viewerContextDirective = formatViewerContextDirective(
7363
+ resolveViewerProfileForRepo(fresh.repoPath || fresh.worktreePath)
7364
+ );
7365
+ } catch {
7366
+ viewerContextDirective = formatViewerContextDirective(
7367
+ resolveViewerProfileForRepo()
7368
+ );
7369
+ }
7370
+ }
7354
7371
  const settings = loadWorkspaceSettings(fresh.worktreePath, fresh.repoPath);
7355
7372
  const renameBranchDirective = !isBrightsy && !isOrchestration && autoRenameBranchEnabled() ? formatRenameBranchDirective(fresh, {
7356
7373
  customPrompt: settings?.prompts?.renameBranch
@@ -7382,6 +7399,7 @@ var Orchestrator = class {
7382
7399
  worktreeDirective,
7383
7400
  optionalServicesDirective,
7384
7401
  issueToolsDirective,
7402
+ viewerContextDirective,
7385
7403
  artifactDirective,
7386
7404
  longRunningDirective,
7387
7405
  renameBranchDirective,
@@ -7492,6 +7510,7 @@ var Orchestrator = class {
7492
7510
  worktreeDirective,
7493
7511
  optionalServicesDirective,
7494
7512
  issueToolsDirective,
7513
+ viewerContextDirective,
7495
7514
  artifactDirective,
7496
7515
  longRunningDirective,
7497
7516
  renameBranchDirective,
@@ -8230,7 +8249,7 @@ var Orchestrator = class {
8230
8249
  updateThread(thread.id, { title: meta.title });
8231
8250
  }
8232
8251
  }
8233
- const { autoArchiveOnMergeEnabled } = await import("./app-settings-H3INSR67.js");
8252
+ const { autoArchiveOnMergeEnabled } = await import("./app-settings-YWJ4MVYM.js");
8234
8253
  const latest = this.requireThread(thread.id);
8235
8254
  if (!shouldAutoArchiveOnPrMerge({
8236
8255
  previousPrState: prevState || null,
@@ -8547,7 +8566,7 @@ var Orchestrator = class {
8547
8566
  this.emit({ type: "status_changed", threadId: archived.id, status: "archived" });
8548
8567
  if (thread.repoPath && !isGlobalRepoPath(thread.repoPath)) {
8549
8568
  try {
8550
- const { ensureWorkspace: ensureWorkspace2 } = await import("./workspaces-NYSM2EPX.js");
8569
+ const { ensureWorkspace: ensureWorkspace2 } = await import("./workspaces-D2M3AM2M.js");
8551
8570
  await ensureWorkspace2(thread.repoPath);
8552
8571
  } catch {
8553
8572
  }
@@ -8574,7 +8593,7 @@ var Orchestrator = class {
8574
8593
  await runArchiveScript(thread.repoPath, thread.worktreePath);
8575
8594
  } catch {
8576
8595
  }
8577
- const { deleteBranchOnPurgeEnabled } = await import("./app-settings-H3INSR67.js");
8596
+ const { deleteBranchOnPurgeEnabled } = await import("./app-settings-YWJ4MVYM.js");
8578
8597
  const deleteBranch = opts?.deleteBranch ?? deleteBranchOnPurgeEnabled();
8579
8598
  await removeWorktree(thread.repoPath, thread.worktreePath, {
8580
8599
  deleteBranch: deleteBranch ? thread.branchName : void 0
@@ -8601,7 +8620,7 @@ var Orchestrator = class {
8601
8620
  `Cowboy checkout missing: ${thread.worktreePath}. Re-add the project folder, then restore.`
8602
8621
  );
8603
8622
  }
8604
- const { createThreadWorktree: createThreadWorktree2 } = await import("./worktree-T4SWFSTT.js");
8623
+ const { createThreadWorktree: createThreadWorktree2 } = await import("./worktree-EA6AD6D6.js");
8605
8624
  const slug = thread.worktreePath.split("/").pop();
8606
8625
  const dest = thread.worktreePath;
8607
8626
  await withRepoGitLock(thread.repoPath, async () => {
@@ -8711,7 +8730,7 @@ async function startOrchestration(opts) {
8711
8730
  sourceRef: "default",
8712
8731
  ...createOpts
8713
8732
  }).catch(async () => {
8714
- const { resolveDefaultBranch: resolveDefaultBranch2, resolveRepoRoot: resolveRepoRoot2 } = await import("./worktree-T4SWFSTT.js");
8733
+ const { resolveDefaultBranch: resolveDefaultBranch2, resolveRepoRoot: resolveRepoRoot2 } = await import("./worktree-EA6AD6D6.js");
8715
8734
  const repo = await resolveRepoRoot2(repoPath);
8716
8735
  const def = await resolveDefaultBranch2(repo);
8717
8736
  return orch.createThread({
@@ -7,7 +7,7 @@ import {
7
7
  resolveRepoRoot,
8
8
  takenSlugsFromThread,
9
9
  teamSlugFromName
10
- } from "./chunk-A7QXLYBN.js";
10
+ } from "./chunk-MEZXWELT.js";
11
11
  import {
12
12
  ATTACHMENTS_DIR,
13
13
  attachmentsGitignoreBody
@@ -28,7 +28,7 @@ import {
28
28
  resolveThreadDefaults,
29
29
  resolveViewerProfile,
30
30
  resolveViewerProfileForRepo
31
- } from "./chunk-D7EGJ3EI.js";
31
+ } from "./chunk-EQIJ5MHR.js";
32
32
  import {
33
33
  appDataDir,
34
34
  globalAgentCwd,
@@ -347,10 +347,10 @@ var COORDINATOR_TOOL_PLAYBOOK = [
347
347
  "Role: you oversee Sideboard worktree agents across registered repos. You do not live inside one of those worktrees.",
348
348
  "Sideboard MCP (fleet control \u2014 prefer these for status and orchestration):",
349
349
  "Discover:",
350
- "- list_workspaces \u2014 registered repos (path + github slug + roles/notes when set). Use that profile to pick the right repo for tickets or reviews.",
350
+ "- list_workspaces \u2014 registered repos (path + github slug + project context when set). Use account / project context to pick the right repo for tickets or reviews.",
351
351
  "- list_board \u2014 Home Kanban of worktrees (New / Draft / Review / Merged; one card per checkout). Path to merge: no PR \u2192 draft PR \u2192 open PR \u2192 merged. Archive removes the card to Settings \u2192 History. Queued/running are activity on the card, not columns. Orchestration chats are not on the board. Filters: query, repoPath, kind, column, limit.",
352
- '- list_branches / list_prs / list_issues \u2014 pass repoPath from list_workspaces. Review is PRs (the surface for assigned ticket work), not the tickets: "Get me N tickets to review" \u2192 list_prs(queue=review, limit=N) then create_thread sourceType=pr. That is open non-draft PRs labeled eng-review with no individual user reviewer yet. A team request (engineering-team) is not a claim \u2014 the viewer is on that team and can pick it up; claimed means an individual account is the reviewer. Bots ignored. Prefer teams that match Settings \u2192 Agents / Projects roles (check one or more of Engineering, Design, Product, or extras they added \u2014 never a combined both value; project roles override account for that repo). queue=mine is review-requested:@me; queue=approved|changes uses those labels. Also: state, label, reviewer=me|unassigned|login, query, limit default 40 max 250; raise limit or tighten when truncated. list_issues (query, assignee=me|unassigned|all|user, limit default 40 max 250) lists Linear, AbleTime, or GitHub tickets \u2014 do not use it for that review-inbox ask. When they ask for tickets to work on, use their notes (assignee=me or unassigned as the notes say) and prefer ones that match their roles.',
353
- "- Find work: when they ask to find work, pick up tickets, or list reviews, use Settings \u2192 Agents (account) plus Settings \u2192 Projects (per-repo) roles and notes. Tickets \u2192 Sideboard list_issues / linear_* (Account Linear). Reviews \u2192 list_prs(queue=review). Do not call Claude Linear MCP or any other vendor Linear MCP \u2014 those HTTP connectors hang or flap on the first turn. If a vendor MCP is down or reconnecting, ignore it and keep going with Sideboard tools. Show the options \u2014 do not create_thread or start unless they also asked to start (e.g. \u201Cfind me work and start it\u201D). Do not start this unprompted.",
352
+ '- list_branches / list_prs / list_issues \u2014 pass repoPath from list_workspaces. Review is PRs (the surface for assigned ticket work), not the tickets: "Get me N tickets to review" \u2192 list_prs(queue=review, limit=N) then create_thread sourceType=pr. That is open non-draft PRs labeled eng-review with no individual user reviewer yet. A team request (engineering-team) is not a claim \u2014 the viewer is on that team and can pick it up; claimed means an individual account is the reviewer. Bots ignored. Use Settings \u2192 Agents / Projects context (roles, teams, labels \u2014 freeform text; project adds to account) to prefer the right queues. queue=mine is review-requested:@me; queue=approved|changes uses those labels. Also: state, label, reviewer=me|unassigned|login, query, limit default 40 max 250; raise limit or tighten when truncated. list_issues (query, assignee=me|unassigned|all|user, limit default 40 max 250) lists Linear, AbleTime, or GitHub tickets \u2014 do not use it for that review-inbox ask. When they ask for tickets to work on, follow their context (assignee=me or unassigned as it says).',
353
+ "- Find work: when they ask to find work, pick up tickets, or list reviews, use Settings \u2192 Agents (account) plus Settings \u2192 Projects (per-repo) context. Tickets \u2192 Sideboard list_issues / linear_* (Account Linear). Reviews \u2192 list_prs(queue=review). Do not call Claude Linear MCP or any other vendor Linear MCP \u2014 those HTTP connectors hang or flap on the first turn. If a vendor MCP is down or reconnecting, ignore it and keep going with Sideboard tools. Show the options \u2014 do not create_thread or start unless they also asked to start (e.g. \u201Cfind me work and start it\u201D). Do not start this unprompted. To change that context, show the proposed text, ask_user (Save this context / Do not save), wait, then update_viewer_context with confirmed=true. Never write it without confirmation.",
354
354
  "- linear_* (when Linear is connected) \u2014 list_teams for team key/states; get/create/update/comment with ENG-123. Worktree agents have the same Account tools \u2014 prefer they comment, update status, and create spin-offs (parent=) on their own ticket. Scope errors: reconnect Linear in Account settings. Prefer these over any Linear MCP the CLI may still list.",
355
355
  "- github_* \u2014 get/comment/update/create GitHub issues via Account `gh` (#123). Worktree agents have these too. Prefer over any vendor GitHub MCP. Pass parent= for spin-offs.",
356
356
  "- abletime_* (when AbleTime is connected) \u2014 orientation first; get/comment/update/create (parent= for spin-offs); ensure_task when work has no ticket (or create_thread from the default branch auto-creates one). Worktree agents have the same Account tools.",
@@ -360,7 +360,8 @@ var COORDINATOR_TOOL_PLAYBOOK = [
360
360
  "- get_pr_stack / open_pr_stack_layers / add_stack_layer / create_pr_stack \u2014 GitHub stacked PRs (`gh stack`); one worktree per layer",
361
361
  "- list_models \u2014 only when you need a specific model (rare); otherwise omit model so Account defaults apply",
362
362
  "- list_threads / get_thread \u2014 live thread list (parent id + last message preview). get_thread on this orchestration chat lists child worktree agents (status + lastText). Also includes usage / lastTurnUsage.",
363
- "- ask_user \u2014 composer multiple-choice only when blocked on a concrete choice (approach fork, which API). Never for hellos, check-ins, or invented \u201Cwhat should we do?\u201D menus \u2014 reply in chat. Explain options first, description on every option, then wait.",
363
+ "- ask_user \u2014 composer multiple-choice only when blocked on a concrete choice (approach fork, which API, Save this context / Do not save). Never for hellos, check-ins, or invented \u201Cwhat should we do?\u201D menus \u2014 reply in chat. Explain options first, description on every option, then wait.",
364
+ "- get_viewer_context / update_viewer_context \u2014 read or replace Settings \u2192 Agents (account) and Settings \u2192 Projects (per-repo) context. You can update a project: pass scope=project and repoPath from list_workspaces (this cwd is not a project). update_viewer_context requires confirmed=true after ask_user. Never write context unprompted.",
364
365
  "- set_caffeinate \u2014 keep this Mac awake across turns (macOS caffeinate). Turn on for Slack / away-from-keyboard work, overnight schedules, or when the user will be away. Turn OFF when they say they are done, wrapping up, going to sleep, or no longer need the machine awake. Closing this chat also releases it.",
365
366
  "- list_schedules / create_schedule / update_schedule / delete_schedule / run_schedule \u2014 local jobs that send a prompt to an orchestration chat (threadId or self) or start a new Global chat (omit threadId). One-shot `at`, interval `every` (15m/1h/6h/1d), or 5-field `cron`. Recurring jobs without threadId open a new chat each run. Jobs fire only while Sideboard.app is running; sleep skips until wake. Overnight/unattended runs: ask the user to enable Settings \u2192 Advanced \u2192 Caffeinate while schedules are enabled, or call set_caffeinate.",
366
367
  "Workspaces:",
@@ -419,16 +420,15 @@ function accountRolePlaybookLine() {
419
420
  return "";
420
421
  }
421
422
  }
422
- function accountRoleReminderLine() {
423
+ function accountContextReminderLine() {
423
424
  let profile;
424
425
  try {
425
426
  profile = resolveAccountProfileFromSettings();
426
427
  } catch {
427
428
  return "";
428
429
  }
429
- if (profile.roleLabels.length === 0 && !profile.notes) return "";
430
- const roles = profile.roleLabels.length ? profile.roleLabels.join(", ") : "no roles";
431
- return `- Viewer profile: ${roles}. Use Settings notes with list_issues / list_prs when they ask to find work.`;
430
+ if (!profile.accountNotes) return "";
431
+ return "- Account context is set. Use get_viewer_context / Settings notes with list_issues / list_prs when they ask to find work. Update only after ask_user confirms.";
432
432
  }
433
433
  function projectProfilePlaybookBlock() {
434
434
  let settings;
@@ -445,7 +445,6 @@ function projectProfilePlaybookBlock() {
445
445
  const key = path.replace(/\/+$/, "");
446
446
  return {
447
447
  name: names.get(key) ?? key.split("/").filter(Boolean).pop() ?? path,
448
- roleLabels: resolved.rolesFromProject ? resolved.roleLabels : [],
449
448
  notes: resolved.projectNotes
450
449
  };
451
450
  });
@@ -459,7 +458,7 @@ function coordinatorTurnReminder(opts) {
459
458
  `- YOUR orchestration thread id is ${opts.parentId} \u2014 pass parentThreadId="${opts.parentId}" on create_thread, or omit it.`,
460
459
  goal ? `- Goal / title: ${goal}` : null,
461
460
  accountDefaultsPlaybookLine(),
462
- accountRoleReminderLine() || null,
461
+ accountContextReminderLine() || null,
463
462
  "- Status: list_board (worktree Kanban: New \u2192 Draft \u2192 Review \u2192 Merged) or list_threads. Link chats as `[Title](sideboard://thread/<id>)`. Merge only if the user asked. If a child is stopped/error/broken, it did not finish \u2014 resume or tell the user."
464
463
  ].filter(Boolean).join("\n");
465
464
  }
@@ -513,7 +512,7 @@ function ensureGlobalCoordinatorCwd(opts) {
513
512
  "Never pass `agent=codex` when you yourself are Codex \u2014 nested Codex deadlocks on shared ~/.codex locks. Omit agent (Account default) or use cursor/claude.",
514
513
  "Typical flow (Home board): list_board \u2192 create_thread (sourceType=ticket|pr|branch) \u2192 send_to_thread \u2192 wait_for_turn (loop while stillRunning) \u2192 ask_git create-draft \u2192 wait_for_turn. Merge only if the user explicitly asked (`ask_git` merge).",
515
514
  "Typical flow (branch / explicit source): list_workspaces \u2192 list_branches|list_prs|list_issues \u2192 create_thread \u2192 send_to_thread \u2192 wait_for_turn (loop while stillRunning) \u2192 ask_git create-draft.",
516
- "Typical flow (find work): list_workspaces \u2192 pick repo(s) matching viewer roles/notes \u2192 Sideboard list_issues / linear_* (tickets) or list_prs(queue=review) (reviews) \u2192 show the options. Never wait on Claude Linear MCP. Only create_thread + send_to_thread when they asked to start (e.g. \u201Cfind me work and start it\u201D) \u2014 then wait_for_turn (loop while stillRunning) \u2192 ask_git create-draft.",
515
+ "Typical flow (find work): list_workspaces \u2192 pick repo(s) matching account / project context \u2192 Sideboard list_issues / linear_* (tickets) or list_prs(queue=review) (reviews) \u2192 show the options. Never wait on Claude Linear MCP. Only create_thread + send_to_thread when they asked to start (e.g. \u201Cfind me work and start it\u201D) \u2014 then wait_for_turn (loop while stillRunning) \u2192 ask_git create-draft.",
517
516
  'Typical flow (review inbox): list_workspaces \u2192 list_prs(queue=review, limit=N) \u2192 show those PRs (ticket ids in the title when present). create_thread sourceType=pr only when they asked to start / do the work. Do not list_issues for "tickets to review".',
518
517
  "Typical flow (new app): Bash create/clone under repos dir \u2192 add_workspace \u2192 create_thread \u2192 send_to_thread (implement) \u2192 wait_for_turn (loop while stillRunning) \u2192 ask_git create-draft.",
519
518
  "Always ask worktree agents to commit, push, and open draft PRs (`ask_git` / `send_to_thread`). If the user gave a goal (Greptile 5/5, CI green), pass that goal through so they watch-fix-push until it lands \u2014 do not start that loop on a plain push, and do not tell the human to poll. Tell them to merge only when the user explicitly asked. The worktree agent runs git/gh; never merge from this orchestration cwd."
@@ -33,7 +33,7 @@ import {
33
33
  summarizeTurnStderr,
34
34
  toolDescription,
35
35
  turnFailChatText
36
- } from "./chunk-EPQIOAAY.js";
36
+ } from "./chunk-DWUOKF3W.js";
37
37
  import {
38
38
  extractPresentedPlan,
39
39
  readPlanFile,
@@ -67,7 +67,7 @@ import {
67
67
  stageAbsolutePathsAsAttachments,
68
68
  stageBuffersAsAttachments,
69
69
  syncWorkspacesFromThreads
70
- } from "./chunk-3SUZMPGL.js";
70
+ } from "./chunk-SIMFKJIB.js";
71
71
  import {
72
72
  addPrStackLayer,
73
73
  allocateTeamName,
@@ -115,7 +115,7 @@ import {
115
115
  withRepoGitLock,
116
116
  worktreeDisplayLabelForGroup,
117
117
  worktreeNameFromPath
118
- } from "./chunk-A7QXLYBN.js";
118
+ } from "./chunk-MEZXWELT.js";
119
119
  import {
120
120
  ATTACHMENTS_DIR,
121
121
  DETACHED_JOBS_DIR,
@@ -147,6 +147,8 @@ import {
147
147
  } from "./chunk-FNQNJOHY.js";
148
148
  import {
149
149
  childEnvWithAppSettings,
150
+ formatViewerContextDirective,
151
+ formatViewerContextReminder,
150
152
  getIssueSource,
151
153
  isAbleTimeConnected,
152
154
  isLinearConnected,
@@ -159,10 +161,11 @@ import {
159
161
  resolveNewThreadOptions,
160
162
  resolveThreadDefaults,
161
163
  resolveVaultKey,
164
+ resolveViewerProfileForRepo,
162
165
  stripNestedElectronEnv,
163
166
  updateAdvancedSettings,
164
167
  writeSecureJson
165
- } from "./chunk-D7EGJ3EI.js";
168
+ } from "./chunk-EQIJ5MHR.js";
166
169
  import {
167
170
  writePrivateFile
168
171
  } from "./chunk-NSTQ6QKD.js";
@@ -396,7 +399,7 @@ async function continueSourceThread(threadId, prompt) {
396
399
  await continueOnReply(threadId, prompt);
397
400
  return;
398
401
  }
399
- const { getOrchestrator: getOrchestrator2 } = await import("./orchestrator-J727WIJY.js");
402
+ const { getOrchestrator: getOrchestrator2 } = await import("./orchestrator-NSVP7DJH.js");
400
403
  await getOrchestrator2().send(threadId, prompt);
401
404
  } catch {
402
405
  }
@@ -737,9 +740,9 @@ async function spawnAgentTurn(thread, input, onEvent) {
737
740
  `Cannot spawn ${thread.agent}: thread ${thread.id} has no worktreePath`
738
741
  );
739
742
  }
740
- const { isGlobalThread: isGlobalThread2 } = await import("./global-workspace-REI55FZ6.js");
743
+ const { isGlobalThread: isGlobalThread2 } = await import("./global-workspace-FKAJZHO5.js");
741
744
  if (isGlobalThread2(thread)) {
742
- const { ensureGlobalCoordinatorCwd: ensureGlobalCoordinatorCwd2 } = await import("./coordinator-prompt-GZESIQNH.js");
745
+ const { ensureGlobalCoordinatorCwd: ensureGlobalCoordinatorCwd2 } = await import("./coordinator-prompt-7NKY7QRK.js");
743
746
  ensureGlobalCoordinatorCwd2(
744
747
  isOrchestratorThread(thread) ? { orchestratorThreadId: thread.id } : void 0
745
748
  );
@@ -3243,7 +3246,7 @@ async function createThread(input, _onSetupLine) {
3243
3246
  });
3244
3247
  await requireAgent(resolved.agent);
3245
3248
  if (input.cowboy) {
3246
- const { cowboyModeEnabled } = await import("./app-settings-VRQI3FIE.js");
3249
+ const { cowboyModeEnabled } = await import("./app-settings-BJ5GFAE5.js");
3247
3250
  if (!cowboyModeEnabled()) {
3248
3251
  throw new Error(
3249
3252
  "Cowboy mode is off. Enable it in Settings \u2192 Advanced."
@@ -3301,7 +3304,7 @@ async function createThread(input, _onSetupLine) {
3301
3304
  let sourceIsFork = false;
3302
3305
  if (!input.cowboy && sourceType === "branch" && (!sourceRef || sourceRef === "HEAD" || sourceRef === "default")) {
3303
3306
  if (isAbleTimeConnected() && getIssueSource() === "abletime") {
3304
- const { ensureAbleTimeTask, issueAttachmentForAbleTimeTask } = await import("./abletime-BEIDJG7W.js");
3307
+ const { ensureAbleTimeTask, issueAttachmentForAbleTimeTask } = await import("./abletime-HOQBDQC4.js");
3305
3308
  const task = await ensureAbleTimeTask({
3306
3309
  title: title?.trim() || "Untitled work",
3307
3310
  description: input.prompt?.trim() || void 0
@@ -3797,7 +3800,7 @@ async function adoptThread(input) {
3797
3800
  messages: input.messages ?? []
3798
3801
  });
3799
3802
  writeThread(thread);
3800
- const { ensureWorkspace: ensureWorkspace2 } = await import("./workspaces-OCEPZXFD.js");
3803
+ const { ensureWorkspace: ensureWorkspace2 } = await import("./workspaces-OFSDJ7PZ.js");
3801
3804
  await ensureWorkspace2(repoPath);
3802
3805
  const { ensureWorktreeSideboardIgnored: ensureWorktreeSideboardIgnored2 } = await import("./worktree-exclude-N5X5I422.js");
3803
3806
  await ensureWorktreeSideboardIgnored2(input.worktreePath);
@@ -6080,7 +6083,7 @@ function formatScheduledPrompt(name, prompt) {
6080
6083
  ${prompt}`;
6081
6084
  }
6082
6085
  async function defaultDeps() {
6083
- const { getOrchestrator: getOrchestrator2, startOrchestration: startOrchestration2 } = await import("./orchestrator-J727WIJY.js");
6086
+ const { getOrchestrator: getOrchestrator2, startOrchestration: startOrchestration2 } = await import("./orchestrator-NSVP7DJH.js");
6084
6087
  const orch = getOrchestrator2();
6085
6088
  return {
6086
6089
  findThread: (id) => findThreadByRef(id),
@@ -6342,7 +6345,7 @@ var Orchestrator = class {
6342
6345
  orphans: orphans.map((o) => ({ path: o.path, repoPath: o.repoPath }))
6343
6346
  });
6344
6347
  }
6345
- const { autoCleanupOrphansEnabled } = await import("./app-settings-VRQI3FIE.js");
6348
+ const { autoCleanupOrphansEnabled } = await import("./app-settings-BJ5GFAE5.js");
6346
6349
  if (autoCleanupOrphansEnabled() && shouldRunWorktreeCleanup() && orphans.length > 0) {
6347
6350
  await cleanupOrphanWorktrees({ repoPaths });
6348
6351
  }
@@ -6613,7 +6616,7 @@ var Orchestrator = class {
6613
6616
  }
6614
6617
  await setup;
6615
6618
  if (skipSetup) return;
6616
- const { autoRunAfterSetupEnabled } = await import("./app-settings-VRQI3FIE.js");
6619
+ const { autoRunAfterSetupEnabled } = await import("./app-settings-BJ5GFAE5.js");
6617
6620
  if (autoRunAfterSetupEnabled()) {
6618
6621
  try {
6619
6622
  await this.startDev(threadId);
@@ -6892,6 +6895,7 @@ var Orchestrator = class {
6892
6895
  ticketId: issueTicket?.id,
6893
6896
  ticketProvider: issueTicket?.provider
6894
6897
  }) : null;
6898
+ const viewerContextReminder = thread.agent !== "brightsy" && !isOrchestratorThread(thread) ? formatViewerContextReminder() : null;
6895
6899
  const slackReplyContext = formatSlackRepliesForTurn(
6896
6900
  pendingSlackExternalReplies(thread.messages)
6897
6901
  );
@@ -6901,6 +6905,7 @@ var Orchestrator = class {
6901
6905
  worktreeReminder,
6902
6906
  optionalServicesReminder,
6903
6907
  issueToolsReminder,
6908
+ viewerContextReminder,
6904
6909
  artifactReminder,
6905
6910
  longRunningReminder,
6906
6911
  slackReplyContext,
@@ -6922,7 +6927,7 @@ var Orchestrator = class {
6922
6927
  }
6923
6928
  const isBrightsy = fresh.agent === "brightsy";
6924
6929
  const isOrchestration = isOrchestratorThread(fresh);
6925
- const { autoRenameBranchEnabled, getGithubGitAuthMode } = await import("./app-settings-VRQI3FIE.js");
6930
+ const { autoRenameBranchEnabled, getGithubGitAuthMode } = await import("./app-settings-BJ5GFAE5.js");
6926
6931
  const gitAuthMode = getGithubGitAuthMode();
6927
6932
  const worktreeDirective = isBrightsy || isOrchestration ? null : formatWorktreeDirective(fresh, {
6928
6933
  githubSlug: await resolveGithubRepoSlug(fresh.worktreePath).catch(
@@ -6941,6 +6946,18 @@ var Orchestrator = class {
6941
6946
  ticketId: freshIssueTicket?.id,
6942
6947
  ticketProvider: freshIssueTicket?.provider
6943
6948
  });
6949
+ let viewerContextDirective = null;
6950
+ if (!isBrightsy && !isOrchestration) {
6951
+ try {
6952
+ viewerContextDirective = formatViewerContextDirective(
6953
+ resolveViewerProfileForRepo(fresh.repoPath || fresh.worktreePath)
6954
+ );
6955
+ } catch {
6956
+ viewerContextDirective = formatViewerContextDirective(
6957
+ resolveViewerProfileForRepo()
6958
+ );
6959
+ }
6960
+ }
6944
6961
  const settings = loadWorkspaceSettings(fresh.worktreePath, fresh.repoPath);
6945
6962
  const renameBranchDirective = !isBrightsy && !isOrchestration && autoRenameBranchEnabled() ? formatRenameBranchDirective(fresh, {
6946
6963
  customPrompt: settings?.prompts?.renameBranch
@@ -6972,6 +6989,7 @@ var Orchestrator = class {
6972
6989
  worktreeDirective,
6973
6990
  optionalServicesDirective,
6974
6991
  issueToolsDirective,
6992
+ viewerContextDirective,
6975
6993
  artifactDirective,
6976
6994
  longRunningDirective,
6977
6995
  renameBranchDirective,
@@ -7082,6 +7100,7 @@ var Orchestrator = class {
7082
7100
  worktreeDirective,
7083
7101
  optionalServicesDirective,
7084
7102
  issueToolsDirective,
7103
+ viewerContextDirective,
7085
7104
  artifactDirective,
7086
7105
  longRunningDirective,
7087
7106
  renameBranchDirective,
@@ -7820,7 +7839,7 @@ var Orchestrator = class {
7820
7839
  updateThread(thread.id, { title: meta.title });
7821
7840
  }
7822
7841
  }
7823
- const { autoArchiveOnMergeEnabled } = await import("./app-settings-VRQI3FIE.js");
7842
+ const { autoArchiveOnMergeEnabled } = await import("./app-settings-BJ5GFAE5.js");
7824
7843
  const latest = this.requireThread(thread.id);
7825
7844
  if (!shouldAutoArchiveOnPrMerge({
7826
7845
  previousPrState: prevState || null,
@@ -8137,7 +8156,7 @@ var Orchestrator = class {
8137
8156
  this.emit({ type: "status_changed", threadId: archived.id, status: "archived" });
8138
8157
  if (thread.repoPath && !isGlobalRepoPath(thread.repoPath)) {
8139
8158
  try {
8140
- const { ensureWorkspace: ensureWorkspace2 } = await import("./workspaces-OCEPZXFD.js");
8159
+ const { ensureWorkspace: ensureWorkspace2 } = await import("./workspaces-OFSDJ7PZ.js");
8141
8160
  await ensureWorkspace2(thread.repoPath);
8142
8161
  } catch {
8143
8162
  }
@@ -8164,7 +8183,7 @@ var Orchestrator = class {
8164
8183
  await runArchiveScript(thread.repoPath, thread.worktreePath);
8165
8184
  } catch {
8166
8185
  }
8167
- const { deleteBranchOnPurgeEnabled } = await import("./app-settings-VRQI3FIE.js");
8186
+ const { deleteBranchOnPurgeEnabled } = await import("./app-settings-BJ5GFAE5.js");
8168
8187
  const deleteBranch = opts?.deleteBranch ?? deleteBranchOnPurgeEnabled();
8169
8188
  await removeWorktree(thread.repoPath, thread.worktreePath, {
8170
8189
  deleteBranch: deleteBranch ? thread.branchName : void 0
@@ -8191,7 +8210,7 @@ var Orchestrator = class {
8191
8210
  `Cowboy checkout missing: ${thread.worktreePath}. Re-add the project folder, then restore.`
8192
8211
  );
8193
8212
  }
8194
- const { createThreadWorktree: createThreadWorktree2 } = await import("./worktree-VTMBZKY6.js");
8213
+ const { createThreadWorktree: createThreadWorktree2 } = await import("./worktree-BQE5KLRY.js");
8195
8214
  const slug = thread.worktreePath.split("/").pop();
8196
8215
  const dest = thread.worktreePath;
8197
8216
  await withRepoGitLock(thread.repoPath, async () => {
@@ -8301,7 +8320,7 @@ async function startOrchestration(opts) {
8301
8320
  sourceRef: "default",
8302
8321
  ...createOpts
8303
8322
  }).catch(async () => {
8304
- const { resolveDefaultBranch: resolveDefaultBranch2, resolveRepoRoot: resolveRepoRoot2 } = await import("./worktree-VTMBZKY6.js");
8323
+ const { resolveDefaultBranch: resolveDefaultBranch2, resolveRepoRoot: resolveRepoRoot2 } = await import("./worktree-BQE5KLRY.js");
8305
8324
  const repo = await resolveRepoRoot2(repoPath);
8306
8325
  const def = await resolveDefaultBranch2(repo);
8307
8326
  return orch.createThread({
@@ -8,7 +8,7 @@ import {
8
8
  getAbleTimeHost,
9
9
  isAbleTimeConnected,
10
10
  saveAbleTimeConnection
11
- } from "./chunk-D7EGJ3EI.js";
11
+ } from "./chunk-EQIJ5MHR.js";
12
12
 
13
13
  // src/integrations/abletime-mcp.ts
14
14
  var DEFAULT_ABLETIME_HOST = "https://track.abletime.com";
@@ -1,12 +1,12 @@
1
1
  import {
2
2
  isOrchestratorThread
3
- } from "./chunk-CVR4RJ6G.js";
3
+ } from "./chunk-O7RWWPMR.js";
4
4
  import {
5
5
  codexUnattendedGitConfigArgs,
6
6
  mergeAgentGitAuthEnv,
7
7
  resolveAgentGitAuthEnv,
8
8
  resolveCodexGitWritableRoots
9
- } from "./chunk-LQMFCS54.js";
9
+ } from "./chunk-KEDHHXKW.js";
10
10
  import {
11
11
  applyConnectedTeamToCli,
12
12
  brightsyMcpServerName,
@@ -36,7 +36,7 @@ import {
36
36
  loadAppSettings,
37
37
  resolveAgentExecutable,
38
38
  resolveClaudeExecutable
39
- } from "./chunk-3BWVOUQG.js";
39
+ } from "./chunk-FLG4A5FJ.js";
40
40
  import {
41
41
  isElectronLikeCommand,
42
42
  unwrapStrippedElectronLaunch
@@ -1136,7 +1136,9 @@ var WORKTREE_MCP_TOOLS = [
1136
1136
  "present_plan",
1137
1137
  "present_schema",
1138
1138
  "present_files",
1139
- "wait_for_job"
1139
+ "wait_for_job",
1140
+ "get_viewer_context",
1141
+ "update_viewer_context"
1140
1142
  ];
1141
1143
  var WORKTREE_GITHUB_MCP_TOOLS = [
1142
1144
  "github_get_issue",
@@ -1178,7 +1180,9 @@ var SIDEBOARD_ARTIFACT_MCP_ALLOWED_TOOLS = [
1178
1180
  "mcp__sideboard__present_files",
1179
1181
  "mcp__sideboard__ask_user",
1180
1182
  "mcp__sideboard__present_plan",
1181
- "mcp__sideboard__wait_for_job"
1183
+ "mcp__sideboard__wait_for_job",
1184
+ "mcp__sideboard__get_viewer_context",
1185
+ "mcp__sideboard__update_viewer_context"
1182
1186
  ];
1183
1187
  var SIDEBOARD_GITHUB_MCP_ALLOWED_TOOLS = ["mcp__sideboard__github_*"];
1184
1188
  var SIDEBOARD_LINEAR_MCP_ALLOWED_TOOLS = ["mcp__sideboard__linear_*"];
@@ -1861,7 +1865,7 @@ var claudeAdapter = {
1861
1865
  );
1862
1866
  }
1863
1867
  const mode = permissionMode(thread);
1864
- const { isOrchestratorThread: isOrchestratorThread2 } = await import("./global-workspace-5BIW26YR.js");
1868
+ const { isOrchestratorThread: isOrchestratorThread2 } = await import("./global-workspace-IJYCUO4M.js");
1865
1869
  const isOrchestrator = isOrchestratorThread2(thread);
1866
1870
  const injectedServers = await buildInjectedMcpServers({
1867
1871
  includeSideboard: true,
@@ -9,13 +9,13 @@ import {
9
9
  enrichWorkspacesWithGithub,
10
10
  ensureGlobalCoordinatorCwd,
11
11
  formatWorkspaceInventory
12
- } from "./chunk-3SUZMPGL.js";
13
- import "./chunk-A7QXLYBN.js";
12
+ } from "./chunk-SIMFKJIB.js";
13
+ import "./chunk-MEZXWELT.js";
14
14
  import "./chunk-5U4NZLBH.js";
15
15
  import "./chunk-LZQULFIT.js";
16
16
  import "./chunk-SYFVUF2C.js";
17
17
  import "./chunk-FNQNJOHY.js";
18
- import "./chunk-D7EGJ3EI.js";
18
+ import "./chunk-EQIJ5MHR.js";
19
19
  import "./chunk-NSTQ6QKD.js";
20
20
  import "./chunk-KGZBYWZ3.js";
21
21
  import "./chunk-JTJHOYCU.js";
@@ -7,10 +7,10 @@ import {
7
7
  enrichWorkspacesWithGithub,
8
8
  ensureGlobalCoordinatorCwd,
9
9
  formatWorkspaceInventory
10
- } from "./chunk-CVR4RJ6G.js";
11
- import "./chunk-LQMFCS54.js";
10
+ } from "./chunk-O7RWWPMR.js";
11
+ import "./chunk-KEDHHXKW.js";
12
12
  import "./chunk-JRH62XC4.js";
13
- import "./chunk-3BWVOUQG.js";
13
+ import "./chunk-FLG4A5FJ.js";
14
14
  import "./chunk-4TR3HZFT.js";
15
15
  import "./chunk-JT7R45JB.js";
16
16
  import "./chunk-7UURXPKD.js";