@sideboard-ai/core 0.1.156 → 0.1.157
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.
- package/dist/{abletime-JSTJLXAW.js → abletime-BEIDJG7W.js} +5 -1
- package/dist/{abletime-H7LPGIP2.js → abletime-GWZE6OYM.js} +5 -1
- package/dist/{agents-2FTZAXO3.js → agents-C55LAEUR.js} +2 -2
- package/dist/{agents-IY4CSPWV.js → agents-LCDXN2B2.js} +2 -2
- package/dist/{chunk-TI6UMRWK.js → chunk-4I4VKAPZ.js} +3 -2
- package/dist/{chunk-MSFPM5VK.js → chunk-CVR4RJ6G.js} +3 -2
- package/dist/{chunk-JOK4XWBG.js → chunk-DVJBO3M7.js} +87 -3
- package/dist/{chunk-7EIPEPAH.js → chunk-GWEEGE6L.js} +119 -10
- package/dist/{chunk-UA3YZKRX.js → chunk-KQ4JOGUH.js} +19 -3
- package/dist/{chunk-FDCFXMDG.js → chunk-N27GVFZY.js} +87 -3
- package/dist/{chunk-OLE2BLIX.js → chunk-SUCJAWV4.js} +90 -9
- package/dist/{chunk-XLU7DXHH.js → chunk-TIJ6QVX5.js} +47 -3
- package/dist/{coordinator-prompt-D2FHU5IZ.js → coordinator-prompt-26IJU2AV.js} +1 -1
- package/dist/{coordinator-prompt-UZDNIVP7.js → coordinator-prompt-AM47SATF.js} +1 -1
- package/dist/{global-workspace-5WZVSWNT.js → global-workspace-5BIW26YR.js} +1 -1
- package/dist/{global-workspace-MR75BDBY.js → global-workspace-QV7CC7SK.js} +1 -1
- package/dist/index.cjs +951 -379
- package/dist/index.d.cts +128 -3
- package/dist/index.d.ts +128 -3
- package/dist/index.js +590 -252
- package/dist/mcp/run-stdio.cjs +799 -320
- package/dist/mcp/run-stdio.js +501 -199
- package/dist/{orchestrator-G4WKJG5Y.js → orchestrator-BUH3LJLL.js} +3 -3
- package/dist/{orchestrator-LXO2CDOG.js → orchestrator-KQO4MXBI.js} +3 -3
- package/dist/{workspaces-RP32AW6X.js → workspaces-NYSM2EPX.js} +1 -1
- package/dist/{workspaces-HO4EQNNM.js → workspaces-Q2VCHIAS.js} +1 -1
- package/package.json +1 -1
|
@@ -226,6 +226,27 @@ function labelsOf(record) {
|
|
|
226
226
|
return rec ? firstString(rec, ["name", "title", "label"]) : "";
|
|
227
227
|
}).filter(Boolean);
|
|
228
228
|
}
|
|
229
|
+
function commentsOf(record) {
|
|
230
|
+
const raw = record.comments ?? record.notes ?? record.discussion;
|
|
231
|
+
const out = [];
|
|
232
|
+
for (const item of asList(raw)) {
|
|
233
|
+
const rec = asRecord2(item);
|
|
234
|
+
if (!rec) continue;
|
|
235
|
+
const body = firstString(rec, ["body", "text", "comment", "content", "message"]);
|
|
236
|
+
if (!body) continue;
|
|
237
|
+
const user = firstString(asRecord2(rec.user) ?? asRecord2(rec.author), ["name", "display_name"]) || firstString(rec, ["user_name", "author"]);
|
|
238
|
+
const comment = { body };
|
|
239
|
+
const id = firstString(rec, ["id", "comment_id"]);
|
|
240
|
+
if (id) comment.id = id;
|
|
241
|
+
const url = firstString(rec, ["url", "permalink"]);
|
|
242
|
+
if (url) comment.url = url;
|
|
243
|
+
const createdAt = firstString(rec, ["created_at", "createdAt", "created"]);
|
|
244
|
+
if (createdAt) comment.createdAt = createdAt;
|
|
245
|
+
if (user) comment.user = user;
|
|
246
|
+
out.push(comment);
|
|
247
|
+
}
|
|
248
|
+
return out;
|
|
249
|
+
}
|
|
229
250
|
function assigneeOf(record) {
|
|
230
251
|
const nested = firstRecord(record, ["assignee", "assigned_to", "user", "owner"]);
|
|
231
252
|
const name = firstString(nested, ["name", "display_name", "full_name", "email"]) || firstString(record, ["assignee_name", "assigneeName"]);
|
|
@@ -259,7 +280,8 @@ function mapAbleTimeTask(raw, host) {
|
|
|
259
280
|
projectId: firstString(nested, ["project_id", "projectId"]) || firstString(asRecord2(nested.project), ["id"]) || void 0,
|
|
260
281
|
categoryId: firstString(nested, ["category_id", "categoryId"]) || firstString(asRecord2(nested.category), ["id"]) || void 0,
|
|
261
282
|
assignee: assigneeOf(nested),
|
|
262
|
-
labels: labelsOf(nested)
|
|
283
|
+
labels: labelsOf(nested),
|
|
284
|
+
comments: commentsOf(nested)
|
|
263
285
|
};
|
|
264
286
|
}
|
|
265
287
|
function toAbleTimeIssueInfo(task) {
|
|
@@ -352,16 +374,24 @@ async function createAbleTimeTask(input, opts) {
|
|
|
352
374
|
if (!title) throw new Error("AbleTime task title is required");
|
|
353
375
|
const project = await resolveAbleTimeProject(input.projectId, opts);
|
|
354
376
|
const category = resolveAbleTimeCategory(project, input.categoryId);
|
|
377
|
+
const parent = input.parent?.trim();
|
|
378
|
+
const descriptionParts = [
|
|
379
|
+
parent ? `Spin-off of ${parent}.` : null,
|
|
380
|
+
input.description?.trim() || null
|
|
381
|
+
].filter(Boolean);
|
|
355
382
|
const raw = await callAbleTimeTool(
|
|
356
383
|
"create_task",
|
|
357
384
|
{
|
|
358
385
|
title,
|
|
359
|
-
description:
|
|
386
|
+
description: descriptionParts.join("\n\n") || void 0,
|
|
360
387
|
state: input.state ?? "todo",
|
|
361
388
|
project: project.id,
|
|
362
389
|
project_id: project.id,
|
|
363
390
|
category: category?.id,
|
|
364
|
-
category_id: category?.id
|
|
391
|
+
category_id: category?.id,
|
|
392
|
+
parent,
|
|
393
|
+
parent_id: parent,
|
|
394
|
+
related_task_id: parent
|
|
365
395
|
},
|
|
366
396
|
opts
|
|
367
397
|
);
|
|
@@ -369,6 +399,58 @@ async function createAbleTimeTask(input, opts) {
|
|
|
369
399
|
if (!task) throw new Error("AbleTime create_task returned no task");
|
|
370
400
|
return task;
|
|
371
401
|
}
|
|
402
|
+
async function commentAbleTimeTask(input, opts) {
|
|
403
|
+
const id = input.id.trim();
|
|
404
|
+
const body = input.body.trim();
|
|
405
|
+
if (!id) throw new Error("AbleTime task id is required");
|
|
406
|
+
if (!body) throw new Error("AbleTime comment body is required");
|
|
407
|
+
const raw = await callAbleTimeTool(
|
|
408
|
+
"create_comment",
|
|
409
|
+
{ id, task_id: id, task: id, body, comment: body, text: body },
|
|
410
|
+
opts
|
|
411
|
+
);
|
|
412
|
+
const rec = asRecord2(raw);
|
|
413
|
+
return {
|
|
414
|
+
id: rec ? firstString(rec, ["id", "comment_id"]) || void 0 : void 0,
|
|
415
|
+
body: rec ? firstString(rec, ["body", "text", "comment"]) || body : body
|
|
416
|
+
};
|
|
417
|
+
}
|
|
418
|
+
async function updateAbleTimeTask(input, opts) {
|
|
419
|
+
const id = input.id.trim();
|
|
420
|
+
if (!id) throw new Error("AbleTime task id is required");
|
|
421
|
+
const title = input.title?.trim();
|
|
422
|
+
const description = input.description;
|
|
423
|
+
const state = input.state?.trim();
|
|
424
|
+
if (!title && description === void 0 && !state) {
|
|
425
|
+
throw new Error("abletime_update_task needs at least one of title, description, state");
|
|
426
|
+
}
|
|
427
|
+
if (state) {
|
|
428
|
+
await callAbleTimeTool(
|
|
429
|
+
"set_task_state",
|
|
430
|
+
{ id, task_id: id, task: id, state },
|
|
431
|
+
opts
|
|
432
|
+
).catch(async () => {
|
|
433
|
+
await callAbleTimeTool(
|
|
434
|
+
"update_task",
|
|
435
|
+
{ id, task_id: id, title, description, state },
|
|
436
|
+
opts
|
|
437
|
+
);
|
|
438
|
+
});
|
|
439
|
+
}
|
|
440
|
+
if (title || description !== void 0) {
|
|
441
|
+
await callAbleTimeTool(
|
|
442
|
+
"update_task",
|
|
443
|
+
{
|
|
444
|
+
id,
|
|
445
|
+
task_id: id,
|
|
446
|
+
...title ? { title } : {},
|
|
447
|
+
...description !== void 0 ? { description } : {}
|
|
448
|
+
},
|
|
449
|
+
opts
|
|
450
|
+
);
|
|
451
|
+
}
|
|
452
|
+
return getAbleTimeTask(id, opts);
|
|
453
|
+
}
|
|
372
454
|
async function resolveAbleTimeProject(projectId, opts) {
|
|
373
455
|
const wanted = projectId?.trim().toLowerCase();
|
|
374
456
|
const fromOrientation = (await getAbleTimeOrientation(opts).catch(() => null))?.projects ?? [];
|
|
@@ -457,6 +539,8 @@ export {
|
|
|
457
539
|
searchAbleTimeTasks,
|
|
458
540
|
getAbleTimeTask,
|
|
459
541
|
createAbleTimeTask,
|
|
542
|
+
commentAbleTimeTask,
|
|
543
|
+
updateAbleTimeTask,
|
|
460
544
|
ensureAbleTimeTask,
|
|
461
545
|
listAbleTimeAssignedIssues,
|
|
462
546
|
verifyAbleTimeConnection
|
|
@@ -33,7 +33,7 @@ import {
|
|
|
33
33
|
summarizeTurnStderr,
|
|
34
34
|
toolDescription,
|
|
35
35
|
turnFailChatText
|
|
36
|
-
} from "./chunk-
|
|
36
|
+
} from "./chunk-KQ4JOGUH.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-
|
|
70
|
+
} from "./chunk-4I4VKAPZ.js";
|
|
71
71
|
import {
|
|
72
72
|
addPrStackLayer,
|
|
73
73
|
allocateTeamName,
|
|
@@ -147,11 +147,13 @@ import {
|
|
|
147
147
|
childEnvWithAppSettings,
|
|
148
148
|
getIssueSource,
|
|
149
149
|
isAbleTimeConnected,
|
|
150
|
+
isLinearConnected,
|
|
150
151
|
isSecureFileEncrypted,
|
|
151
152
|
loadAppSettings,
|
|
152
153
|
orchestrationQuotaFallbackAgent,
|
|
153
154
|
orchestrationQuotaOnLimit,
|
|
154
155
|
readSecureJson,
|
|
156
|
+
resolveEffectiveIssueSource,
|
|
155
157
|
resolveNewThreadOptions,
|
|
156
158
|
resolveThreadDefaults,
|
|
157
159
|
resolveVaultKey,
|
|
@@ -392,7 +394,7 @@ async function continueSourceThread(threadId, prompt) {
|
|
|
392
394
|
await continueOnReply(threadId, prompt);
|
|
393
395
|
return;
|
|
394
396
|
}
|
|
395
|
-
const { getOrchestrator: getOrchestrator2 } = await import("./orchestrator-
|
|
397
|
+
const { getOrchestrator: getOrchestrator2 } = await import("./orchestrator-KQO4MXBI.js");
|
|
396
398
|
await getOrchestrator2().send(threadId, prompt);
|
|
397
399
|
} catch {
|
|
398
400
|
}
|
|
@@ -733,9 +735,9 @@ async function spawnAgentTurn(thread, input, onEvent) {
|
|
|
733
735
|
`Cannot spawn ${thread.agent}: thread ${thread.id} has no worktreePath`
|
|
734
736
|
);
|
|
735
737
|
}
|
|
736
|
-
const { isGlobalThread: isGlobalThread2 } = await import("./global-workspace-
|
|
738
|
+
const { isGlobalThread: isGlobalThread2 } = await import("./global-workspace-QV7CC7SK.js");
|
|
737
739
|
if (isGlobalThread2(thread)) {
|
|
738
|
-
const { ensureGlobalCoordinatorCwd: ensureGlobalCoordinatorCwd2 } = await import("./coordinator-prompt-
|
|
740
|
+
const { ensureGlobalCoordinatorCwd: ensureGlobalCoordinatorCwd2 } = await import("./coordinator-prompt-AM47SATF.js");
|
|
739
741
|
ensureGlobalCoordinatorCwd2(
|
|
740
742
|
isOrchestratorThread(thread) ? { orchestratorThreadId: thread.id } : void 0
|
|
741
743
|
);
|
|
@@ -3073,7 +3075,7 @@ async function createThread(input, _onSetupLine) {
|
|
|
3073
3075
|
let sourceIsFork = false;
|
|
3074
3076
|
if (!input.cowboy && sourceType === "branch" && (!sourceRef || sourceRef === "HEAD" || sourceRef === "default")) {
|
|
3075
3077
|
if (isAbleTimeConnected() && getIssueSource() === "abletime") {
|
|
3076
|
-
const { ensureAbleTimeTask, issueAttachmentForAbleTimeTask } = await import("./abletime-
|
|
3078
|
+
const { ensureAbleTimeTask, issueAttachmentForAbleTimeTask } = await import("./abletime-BEIDJG7W.js");
|
|
3077
3079
|
const task = await ensureAbleTimeTask({
|
|
3078
3080
|
title: title?.trim() || "Untitled work",
|
|
3079
3081
|
description: input.prompt?.trim() || void 0
|
|
@@ -3569,7 +3571,7 @@ async function adoptThread(input) {
|
|
|
3569
3571
|
messages: input.messages ?? []
|
|
3570
3572
|
});
|
|
3571
3573
|
writeThread(thread);
|
|
3572
|
-
const { ensureWorkspace: ensureWorkspace2 } = await import("./workspaces-
|
|
3574
|
+
const { ensureWorkspace: ensureWorkspace2 } = await import("./workspaces-Q2VCHIAS.js");
|
|
3573
3575
|
await ensureWorkspace2(repoPath);
|
|
3574
3576
|
const { ensureWorktreeSideboardIgnored: ensureWorktreeSideboardIgnored2 } = await import("./worktree-exclude-N5X5I422.js");
|
|
3575
3577
|
await ensureWorktreeSideboardIgnored2(input.worktreePath);
|
|
@@ -5372,6 +5374,66 @@ function formatWorktreeDirective(thread, opts) {
|
|
|
5372
5374
|
function formatWorktreeReminder() {
|
|
5373
5375
|
return "Sideboard worktree: stay in this cwd for all file and git work. Push and open PRs against origin, never upstream. Do not edit the main repo checkout. If a goal is given (Greptile 5/5, CI green), watch-fix-push until it lands \u2014 do not watch after every push.";
|
|
5374
5376
|
}
|
|
5377
|
+
var GITHUB_TICKET_REF = /^(?:#?\d+|gh-\d+)$/i;
|
|
5378
|
+
var KEYED_TICKET_REF = /^(?:[A-Z][A-Z0-9]{0,9}-\d+|[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12})$/i;
|
|
5379
|
+
function issueTicketFromThread(thread, preferredSource = "github") {
|
|
5380
|
+
if (thread?.sourceType !== "ticket") return null;
|
|
5381
|
+
const ref = thread.sourceRef?.trim() ?? "";
|
|
5382
|
+
if (!ref) return null;
|
|
5383
|
+
if (/github\.com\/[^/]+\/[^/]+\/issues\/\d+/i.test(ref) || GITHUB_TICKET_REF.test(ref)) {
|
|
5384
|
+
return { id: ref, provider: "github" };
|
|
5385
|
+
}
|
|
5386
|
+
if (KEYED_TICKET_REF.test(ref)) {
|
|
5387
|
+
return { id: ref, provider: preferredSource === "github" ? "linear" : preferredSource };
|
|
5388
|
+
}
|
|
5389
|
+
return { id: ref, provider: preferredSource };
|
|
5390
|
+
}
|
|
5391
|
+
function formatIssueToolsDirective(opts) {
|
|
5392
|
+
const github = opts.github !== false;
|
|
5393
|
+
if (!opts.linear && !opts.abletime && !github) return null;
|
|
5394
|
+
const lines = [
|
|
5395
|
+
"Issue tracking (Settings \u2192 Issues / Git \u2014 already signed in):",
|
|
5396
|
+
"- Use Sideboard `linear_*` / `github_*` / `abletime_*` tools. Do not call Claude Linear MCP, vendor GitHub MCP, or any other vendor issue MCP \u2014 those need a separate login and hang. If a vendor namespace shows needsAuth, ignore it and keep going with Sideboard tools."
|
|
5397
|
+
];
|
|
5398
|
+
if (opts.linear) {
|
|
5399
|
+
lines.push(
|
|
5400
|
+
"- Linear: `linear_get_issue` (comments), `linear_comment`, `linear_update_issue` (state), `linear_create_issue` (pass `parent` for spin-offs; call `linear_list_teams` first). Scope errors: reconnect Linear in Settings \u2192 Issues."
|
|
5401
|
+
);
|
|
5402
|
+
}
|
|
5403
|
+
if (github) {
|
|
5404
|
+
lines.push(
|
|
5405
|
+
"- GitHub: `github_get_issue` (comments), `github_comment`, `github_update_issue` (state open|closed), `github_create_issue` (pass `parent` for spin-offs). Uses Account `gh`."
|
|
5406
|
+
);
|
|
5407
|
+
}
|
|
5408
|
+
if (opts.abletime) {
|
|
5409
|
+
lines.push(
|
|
5410
|
+
"- AbleTime: `abletime_get_task` (comments), `abletime_comment`, `abletime_update_task` (state), `abletime_create_task` (pass `parent` for spin-offs; `abletime_list_projects` if needed)."
|
|
5411
|
+
);
|
|
5412
|
+
}
|
|
5413
|
+
lines.push(
|
|
5414
|
+
"- Do not ask the user to `claude mcp login` for tickets. Reconnect the Account source in Settings \u2192 Issues (or Git for `gh`)."
|
|
5415
|
+
);
|
|
5416
|
+
const ticket = opts.ticketId?.trim();
|
|
5417
|
+
if (ticket) {
|
|
5418
|
+
const provider = opts.ticketProvider ?? "linear";
|
|
5419
|
+
lines.push(
|
|
5420
|
+
`- This thread's ticket is \`${ticket}\` (${provider}). Use that id for get/comment/update; pass it as \`parent\` on spin-offs.`
|
|
5421
|
+
);
|
|
5422
|
+
}
|
|
5423
|
+
return lines.join("\n");
|
|
5424
|
+
}
|
|
5425
|
+
function formatIssueToolsReminder(opts) {
|
|
5426
|
+
const github = opts.github !== false;
|
|
5427
|
+
if (!opts.linear && !opts.abletime && !github) return null;
|
|
5428
|
+
const names = [
|
|
5429
|
+
opts.linear ? "linear_*" : null,
|
|
5430
|
+
github ? "github_*" : null,
|
|
5431
|
+
opts.abletime ? "abletime_*" : null
|
|
5432
|
+
].filter(Boolean);
|
|
5433
|
+
const ticket = opts.ticketId?.trim();
|
|
5434
|
+
const ticketBit = ticket ? ` This ticket: ${ticket}${opts.ticketProvider ? ` (${opts.ticketProvider})` : ""} \u2014 get/comment/update; create with parent for spin-offs.` : " get/comment/update/create (parent= for spin-offs).";
|
|
5435
|
+
return `Issues: Sideboard ${names.join(" / ")} (Account). Ignore vendor issue MCP auth.${ticketBit}`;
|
|
5436
|
+
}
|
|
5375
5437
|
function formatPrGateDirective() {
|
|
5376
5438
|
return [
|
|
5377
5439
|
"If a goal is given (not after every push):",
|
|
@@ -5790,7 +5852,7 @@ function formatScheduledPrompt(name, prompt) {
|
|
|
5790
5852
|
${prompt}`;
|
|
5791
5853
|
}
|
|
5792
5854
|
async function defaultDeps() {
|
|
5793
|
-
const { getOrchestrator: getOrchestrator2, startOrchestration: startOrchestration2 } = await import("./orchestrator-
|
|
5855
|
+
const { getOrchestrator: getOrchestrator2, startOrchestration: startOrchestration2 } = await import("./orchestrator-KQO4MXBI.js");
|
|
5794
5856
|
const orch = getOrchestrator2();
|
|
5795
5857
|
return {
|
|
5796
5858
|
findThread: (id) => findThreadByRef(id),
|
|
@@ -6558,6 +6620,14 @@ var Orchestrator = class {
|
|
|
6558
6620
|
const longRunningReminder = thread.agent !== "brightsy" && !isOrchestratorThread(thread) ? formatLongRunningReminder() : null;
|
|
6559
6621
|
const worktreeReminder = thread.agent !== "brightsy" && !isOrchestratorThread(thread) ? formatWorktreeReminder() : null;
|
|
6560
6622
|
const optionalServicesReminder = thread.agent !== "brightsy" && !isOrchestratorThread(thread) ? formatOptionalServicesReminder(loadAppSettings().integrations) : null;
|
|
6623
|
+
const issueTicket = issueTicketFromThread(thread, resolveEffectiveIssueSource());
|
|
6624
|
+
const issueToolsReminder = thread.agent !== "brightsy" && !isOrchestratorThread(thread) ? formatIssueToolsReminder({
|
|
6625
|
+
linear: isLinearConnected(),
|
|
6626
|
+
abletime: isAbleTimeConnected(),
|
|
6627
|
+
github: true,
|
|
6628
|
+
ticketId: issueTicket?.id,
|
|
6629
|
+
ticketProvider: issueTicket?.provider
|
|
6630
|
+
}) : null;
|
|
6561
6631
|
const slackReplyContext = formatSlackRepliesForTurn(
|
|
6562
6632
|
pendingSlackExternalReplies(thread.messages)
|
|
6563
6633
|
);
|
|
@@ -6566,6 +6636,7 @@ var Orchestrator = class {
|
|
|
6566
6636
|
orchestrationReminder,
|
|
6567
6637
|
worktreeReminder,
|
|
6568
6638
|
optionalServicesReminder,
|
|
6639
|
+
issueToolsReminder,
|
|
6569
6640
|
artifactReminder,
|
|
6570
6641
|
longRunningReminder,
|
|
6571
6642
|
slackReplyContext,
|
|
@@ -6598,6 +6669,14 @@ var Orchestrator = class {
|
|
|
6598
6669
|
const artifactDirective = isBrightsy ? null : formatArtifactDirective();
|
|
6599
6670
|
const longRunningDirective = isBrightsy || isOrchestration ? null : formatLongRunningDirective();
|
|
6600
6671
|
const optionalServicesDirective = isBrightsy || isOrchestration ? null : formatOptionalServicesDirective(loadAppSettings().integrations);
|
|
6672
|
+
const freshIssueTicket = issueTicketFromThread(fresh, resolveEffectiveIssueSource());
|
|
6673
|
+
const issueToolsDirective = isBrightsy || isOrchestration ? null : formatIssueToolsDirective({
|
|
6674
|
+
linear: isLinearConnected(),
|
|
6675
|
+
abletime: isAbleTimeConnected(),
|
|
6676
|
+
github: true,
|
|
6677
|
+
ticketId: freshIssueTicket?.id,
|
|
6678
|
+
ticketProvider: freshIssueTicket?.provider
|
|
6679
|
+
});
|
|
6601
6680
|
const settings = loadWorkspaceSettings(fresh.worktreePath, fresh.repoPath);
|
|
6602
6681
|
const renameBranchDirective = !isBrightsy && !isOrchestration && autoRenameBranchEnabled() ? formatRenameBranchDirective(fresh, {
|
|
6603
6682
|
customPrompt: settings?.prompts?.renameBranch
|
|
@@ -6628,6 +6707,7 @@ var Orchestrator = class {
|
|
|
6628
6707
|
coordinatorDirective,
|
|
6629
6708
|
worktreeDirective,
|
|
6630
6709
|
optionalServicesDirective,
|
|
6710
|
+
issueToolsDirective,
|
|
6631
6711
|
artifactDirective,
|
|
6632
6712
|
longRunningDirective,
|
|
6633
6713
|
renameBranchDirective,
|
|
@@ -6737,6 +6817,7 @@ var Orchestrator = class {
|
|
|
6737
6817
|
coordinatorDirective,
|
|
6738
6818
|
worktreeDirective,
|
|
6739
6819
|
optionalServicesDirective,
|
|
6820
|
+
issueToolsDirective,
|
|
6740
6821
|
artifactDirective,
|
|
6741
6822
|
longRunningDirective,
|
|
6742
6823
|
renameBranchDirective,
|
|
@@ -7791,7 +7872,7 @@ var Orchestrator = class {
|
|
|
7791
7872
|
this.emit({ type: "status_changed", threadId: archived.id, status: "archived" });
|
|
7792
7873
|
if (thread.repoPath && !isGlobalRepoPath(thread.repoPath)) {
|
|
7793
7874
|
try {
|
|
7794
|
-
const { ensureWorkspace: ensureWorkspace2 } = await import("./workspaces-
|
|
7875
|
+
const { ensureWorkspace: ensureWorkspace2 } = await import("./workspaces-Q2VCHIAS.js");
|
|
7795
7876
|
await ensureWorkspace2(thread.repoPath);
|
|
7796
7877
|
} catch {
|
|
7797
7878
|
}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import {
|
|
2
2
|
isOrchestratorThread
|
|
3
|
-
} from "./chunk-
|
|
3
|
+
} from "./chunk-CVR4RJ6G.js";
|
|
4
4
|
import {
|
|
5
5
|
codexUnattendedGitConfigArgs,
|
|
6
6
|
mergeAgentGitAuthEnv,
|
|
@@ -31,6 +31,8 @@ import {
|
|
|
31
31
|
} from "./chunk-HEII7W3Q.js";
|
|
32
32
|
import {
|
|
33
33
|
claudeChromeEnabled,
|
|
34
|
+
isAbleTimeConnected,
|
|
35
|
+
isLinearConnected,
|
|
34
36
|
loadAppSettings,
|
|
35
37
|
resolveAgentExecutable,
|
|
36
38
|
resolveClaudeExecutable
|
|
@@ -1132,6 +1134,31 @@ var WORKTREE_MCP_TOOLS = [
|
|
|
1132
1134
|
"present_schema",
|
|
1133
1135
|
"present_files"
|
|
1134
1136
|
];
|
|
1137
|
+
var WORKTREE_GITHUB_MCP_TOOLS = [
|
|
1138
|
+
"github_get_issue",
|
|
1139
|
+
"github_comment",
|
|
1140
|
+
"github_update_issue",
|
|
1141
|
+
"github_create_issue"
|
|
1142
|
+
];
|
|
1143
|
+
var WORKTREE_LINEAR_MCP_TOOLS = [
|
|
1144
|
+
"linear_list_teams",
|
|
1145
|
+
"linear_search_issues",
|
|
1146
|
+
"linear_get_issue",
|
|
1147
|
+
"linear_create_issue",
|
|
1148
|
+
"linear_update_issue",
|
|
1149
|
+
"linear_comment"
|
|
1150
|
+
];
|
|
1151
|
+
var WORKTREE_ABLETIME_MCP_TOOLS = [
|
|
1152
|
+
"abletime_orientation",
|
|
1153
|
+
"abletime_list_projects",
|
|
1154
|
+
"abletime_list_tasks",
|
|
1155
|
+
"abletime_search_tasks",
|
|
1156
|
+
"abletime_get_task",
|
|
1157
|
+
"abletime_comment",
|
|
1158
|
+
"abletime_update_task",
|
|
1159
|
+
"abletime_create_task",
|
|
1160
|
+
"abletime_ensure_task"
|
|
1161
|
+
];
|
|
1135
1162
|
function sideboardMcpProfile(env = process.env) {
|
|
1136
1163
|
return env[SIDEBOARD_MCP_PROFILE_ENV]?.trim().toLowerCase() === "worktree" ? "worktree" : "orchestration";
|
|
1137
1164
|
}
|
|
@@ -1148,6 +1175,16 @@ var SIDEBOARD_ARTIFACT_MCP_ALLOWED_TOOLS = [
|
|
|
1148
1175
|
"mcp__sideboard__ask_user",
|
|
1149
1176
|
"mcp__sideboard__present_plan"
|
|
1150
1177
|
];
|
|
1178
|
+
var SIDEBOARD_GITHUB_MCP_ALLOWED_TOOLS = ["mcp__sideboard__github_*"];
|
|
1179
|
+
var SIDEBOARD_LINEAR_MCP_ALLOWED_TOOLS = ["mcp__sideboard__linear_*"];
|
|
1180
|
+
var SIDEBOARD_ABLETIME_MCP_ALLOWED_TOOLS = ["mcp__sideboard__abletime_*"];
|
|
1181
|
+
function sideboardWorktreeAllowedTools(opts) {
|
|
1182
|
+
const out = [...SIDEBOARD_ARTIFACT_MCP_ALLOWED_TOOLS];
|
|
1183
|
+
if (opts?.github !== false) out.push(...SIDEBOARD_GITHUB_MCP_ALLOWED_TOOLS);
|
|
1184
|
+
if (opts?.linear) out.push(...SIDEBOARD_LINEAR_MCP_ALLOWED_TOOLS);
|
|
1185
|
+
if (opts?.abletime) out.push(...SIDEBOARD_ABLETIME_MCP_ALLOWED_TOOLS);
|
|
1186
|
+
return out;
|
|
1187
|
+
}
|
|
1151
1188
|
var BRIGHTSY_MCP_ALLOWED_TOOLS = [
|
|
1152
1189
|
"mcp__brightsy",
|
|
1153
1190
|
"mcp__brightsy__*"
|
|
@@ -1819,7 +1856,7 @@ var claudeAdapter = {
|
|
|
1819
1856
|
);
|
|
1820
1857
|
}
|
|
1821
1858
|
const mode = permissionMode(thread);
|
|
1822
|
-
const { isOrchestratorThread: isOrchestratorThread2 } = await import("./global-workspace-
|
|
1859
|
+
const { isOrchestratorThread: isOrchestratorThread2 } = await import("./global-workspace-5BIW26YR.js");
|
|
1823
1860
|
const isOrchestrator = isOrchestratorThread2(thread);
|
|
1824
1861
|
const injectedServers = await buildInjectedMcpServers({
|
|
1825
1862
|
includeSideboard: true,
|
|
@@ -1842,7 +1879,11 @@ var claudeAdapter = {
|
|
|
1842
1879
|
allowedTools = [
|
|
1843
1880
|
...BASE_ALLOWED_TOOLS,
|
|
1844
1881
|
...mcpAllowTools(servers),
|
|
1845
|
-
...
|
|
1882
|
+
...sideboardWorktreeAllowedTools({
|
|
1883
|
+
github: true,
|
|
1884
|
+
linear: isLinearConnected(),
|
|
1885
|
+
abletime: isAbleTimeConnected()
|
|
1886
|
+
}),
|
|
1846
1887
|
...brightsyMcpAllowedTools(injectedBrightsyNames)
|
|
1847
1888
|
];
|
|
1848
1889
|
}
|
|
@@ -3588,6 +3629,9 @@ export {
|
|
|
3588
3629
|
normalizeParseResult,
|
|
3589
3630
|
SIDEBOARD_MCP_PROFILE_ENV,
|
|
3590
3631
|
WORKTREE_MCP_TOOLS,
|
|
3632
|
+
WORKTREE_GITHUB_MCP_TOOLS,
|
|
3633
|
+
WORKTREE_LINEAR_MCP_TOOLS,
|
|
3634
|
+
WORKTREE_ABLETIME_MCP_TOOLS,
|
|
3591
3635
|
sideboardMcpProfile,
|
|
3592
3636
|
SIDEBOARD_MCP_ALLOWED_TOOLS,
|
|
3593
3637
|
BRIGHTSY_MCP_ALLOWED_TOOLS,
|
|
@@ -15,7 +15,7 @@ import {
|
|
|
15
15
|
orchestratorSessionPoisonedByBuiltins,
|
|
16
16
|
slackCoordinatorSourceRef,
|
|
17
17
|
takenTeamSlugsForOrchestration
|
|
18
|
-
} from "./chunk-
|
|
18
|
+
} from "./chunk-CVR4RJ6G.js";
|
|
19
19
|
import "./chunk-LQMFCS54.js";
|
|
20
20
|
import "./chunk-JRH62XC4.js";
|
|
21
21
|
import "./chunk-3BWVOUQG.js";
|
|
@@ -17,7 +17,7 @@ import {
|
|
|
17
17
|
orchestratorSessionPoisonedByBuiltins,
|
|
18
18
|
slackCoordinatorSourceRef,
|
|
19
19
|
takenTeamSlugsForOrchestration
|
|
20
|
-
} from "./chunk-
|
|
20
|
+
} from "./chunk-4I4VKAPZ.js";
|
|
21
21
|
import "./chunk-CJQLPPEJ.js";
|
|
22
22
|
import "./chunk-NVXVEGGM.js";
|
|
23
23
|
import "./chunk-LZQULFIT.js";
|