@sideboard-ai/core 0.1.147 → 0.1.149

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 (30) hide show
  1. package/dist/agents/cursor-runner.cjs +45 -10
  2. package/dist/agents/cursor-runner.js +46 -11
  3. package/dist/{agents-YVETHB2R.js → agents-HSVQ2Z6Y.js} +4 -4
  4. package/dist/{agents-N3KMRQUZ.js → agents-V4MTDWXS.js} +3 -3
  5. package/dist/{chunk-JHZ6HGRI.js → chunk-3QRGCKYL.js} +1 -1
  6. package/dist/{chunk-SXPTL222.js → chunk-EGDRPA4B.js} +1 -1
  7. package/dist/{chunk-ZZBN2MR7.js → chunk-JDYKQ6OI.js} +12 -12
  8. package/dist/{chunk-WT5HSFOU.js → chunk-LAFA56WD.js} +4 -1
  9. package/dist/{chunk-KNE3FZ46.js → chunk-N3VNOFXQ.js} +1 -1
  10. package/dist/{chunk-WWH4NNBH.js → chunk-PTI5H3RK.js} +3 -3
  11. package/dist/{chunk-4RYRNJPN.js → chunk-Q5DHVMXB.js} +6 -3
  12. package/dist/{chunk-JW436RTA.js → chunk-Q62SDB53.js} +1 -1
  13. package/dist/{chunk-IHSR7EVK.js → chunk-R4JP32P5.js} +1 -1
  14. package/dist/{chunk-KZG47SZP.js → chunk-TZWO7J4W.js} +11 -11
  15. package/dist/{chunk-67K3FRKR.js → chunk-ZVYLEF72.js} +1 -1
  16. package/dist/{coordinator-prompt-2EOR35TP.js → coordinator-prompt-5GXGBGEZ.js} +1 -1
  17. package/dist/{coordinator-prompt-6EPVHVGJ.js → coordinator-prompt-ZWBMAIWA.js} +1 -1
  18. package/dist/{global-workspace-PANZGRUS.js → global-workspace-2SIPM4PW.js} +2 -2
  19. package/dist/{global-workspace-EZVQPMWT.js → global-workspace-OJRXWXEA.js} +2 -2
  20. package/dist/index.cjs +151 -7
  21. package/dist/index.d.cts +50 -1
  22. package/dist/index.d.ts +50 -1
  23. package/dist/index.js +151 -11
  24. package/dist/mcp/run-stdio.cjs +149 -7
  25. package/dist/mcp/run-stdio.js +149 -10
  26. package/dist/{orchestrator-T35BJZWY.js → orchestrator-6TXQWBXN.js} +5 -5
  27. package/dist/{orchestrator-KWV2PPML.js → orchestrator-Z2O5OVJA.js} +6 -6
  28. package/dist/{workspaces-ZJATBC4A.js → workspaces-3NUUZTQK.js} +3 -3
  29. package/dist/{workspaces-DWERPUQJ.js → workspaces-UUJNOO4T.js} +3 -3
  30. package/package.json +1 -1
@@ -32,14 +32,14 @@ import {
32
32
  slackTokenFor,
33
33
  syncBoardPins,
34
34
  updateSchedule
35
- } from "../chunk-KZG47SZP.js";
35
+ } from "../chunk-TZWO7J4W.js";
36
36
  import {
37
37
  listModelsForAgent,
38
38
  sideboardMcpProfile
39
- } from "../chunk-4RYRNJPN.js";
39
+ } from "../chunk-Q5DHVMXB.js";
40
40
  import "../chunk-ED4UPEJX.js";
41
41
  import "../chunk-S42XV45P.js";
42
- import "../chunk-JW436RTA.js";
42
+ import "../chunk-Q62SDB53.js";
43
43
  import {
44
44
  createAbleTimeTask,
45
45
  ensureAbleTimeTask,
@@ -59,8 +59,8 @@ import "../chunk-KLBOWJ74.js";
59
59
  import {
60
60
  GLOBAL_WORKSPACE_ID,
61
61
  isCloudCoordinatorThread
62
- } from "../chunk-KNE3FZ46.js";
63
- import "../chunk-67K3FRKR.js";
62
+ } from "../chunk-N3VNOFXQ.js";
63
+ import "../chunk-ZVYLEF72.js";
64
64
  import {
65
65
  canonicalizeRepoPath,
66
66
  listBranches,
@@ -204,6 +204,12 @@ var LIST_ISSUE_FIELDS = `
204
204
  labels(first: 10) { nodes { name } }
205
205
  cycle { name number startsAt endsAt completedAt }
206
206
  `;
207
+ var ISSUE_REF_FIELDS = `
208
+ id
209
+ identifier
210
+ title
211
+ url
212
+ `;
207
213
  var ISSUE_FIELDS = `
208
214
  id
209
215
  identifier
@@ -211,11 +217,46 @@ var ISSUE_FIELDS = `
211
217
  description
212
218
  url
213
219
  priority
220
+ estimate
221
+ dueDate
222
+ branchName
223
+ createdAt
224
+ updatedAt
225
+ completedAt
214
226
  state { id name type }
215
227
  assignee { id name }
228
+ creator { id name }
216
229
  team { id key name states(first: 50) { nodes { id name type } } }
217
230
  labels(first: 50) { nodes { name } }
218
231
  cycle { name number startsAt endsAt completedAt }
232
+ project { id name }
233
+ parent { ${ISSUE_REF_FIELDS} }
234
+ children(first: 25) { nodes { ${ISSUE_REF_FIELDS} } }
235
+ relations(first: 25) {
236
+ nodes {
237
+ type
238
+ relatedIssue { ${ISSUE_REF_FIELDS} }
239
+ }
240
+ }
241
+ inverseRelations(first: 25) {
242
+ nodes {
243
+ type
244
+ issue { ${ISSUE_REF_FIELDS} }
245
+ }
246
+ }
247
+ comments(first: 50) {
248
+ nodes {
249
+ id
250
+ body
251
+ url
252
+ createdAt
253
+ updatedAt
254
+ user { id name }
255
+ }
256
+ }
257
+ attachments(first: 20) {
258
+ nodes { id title url subtitle }
259
+ }
219
260
  `;
220
261
  var ASSIGNED_ISSUES_QUERY = `
221
262
  query SideboardAssignedIssues($first: Int!) {
@@ -343,6 +384,82 @@ function mapCycle(node) {
343
384
  isActive: linearCycleIsActive(node)
344
385
  };
345
386
  }
387
+ function mapUser(node) {
388
+ if (!node?.id && !node?.name) return void 0;
389
+ return {
390
+ id: String(node.id ?? ""),
391
+ name: String(node.name ?? "")
392
+ };
393
+ }
394
+ function mapIssueRef(node) {
395
+ if (!node?.id && !node?.identifier) return void 0;
396
+ return {
397
+ id: String(node.id ?? node.identifier ?? ""),
398
+ identifier: String(node.identifier ?? node.id ?? ""),
399
+ title: String(node.title ?? ""),
400
+ url: String(node.url ?? "")
401
+ };
402
+ }
403
+ function flipLinearRelationType(type) {
404
+ switch (type) {
405
+ case "blocks":
406
+ return "blockedBy";
407
+ case "blockedBy":
408
+ return "blocks";
409
+ case "duplicate":
410
+ return "duplicateOf";
411
+ case "duplicateOf":
412
+ return "duplicate";
413
+ default:
414
+ return type;
415
+ }
416
+ }
417
+ function mapRelations(node) {
418
+ const out = [];
419
+ for (const rel of node.relations?.nodes ?? []) {
420
+ const issue = mapIssueRef(rel.relatedIssue);
421
+ if (!issue) continue;
422
+ out.push({ type: String(rel.type ?? "related"), issue });
423
+ }
424
+ for (const rel of node.inverseRelations?.nodes ?? []) {
425
+ const issue = mapIssueRef(rel.issue);
426
+ if (!issue) continue;
427
+ out.push({ type: flipLinearRelationType(String(rel.type ?? "related")), issue });
428
+ }
429
+ return out;
430
+ }
431
+ function mapComments(node) {
432
+ const out = [];
433
+ for (const comment of node.comments?.nodes ?? []) {
434
+ const id = String(comment.id ?? "");
435
+ const body = String(comment.body ?? "");
436
+ if (!id && !body) continue;
437
+ out.push({
438
+ id,
439
+ body,
440
+ url: comment.url?.trim() || void 0,
441
+ createdAt: comment.createdAt?.trim() || void 0,
442
+ updatedAt: comment.updatedAt?.trim() || void 0,
443
+ user: mapUser(comment.user)
444
+ });
445
+ }
446
+ return out;
447
+ }
448
+ function mapAttachments(node) {
449
+ const out = [];
450
+ for (const attachment of node.attachments?.nodes ?? []) {
451
+ const id = String(attachment.id ?? "");
452
+ const url = String(attachment.url ?? "").trim();
453
+ if (!id && !url) continue;
454
+ out.push({
455
+ id,
456
+ title: String(attachment.title ?? ""),
457
+ url,
458
+ subtitle: attachment.subtitle?.trim() || void 0
459
+ });
460
+ }
461
+ return out;
462
+ }
346
463
  function mapIssue(node) {
347
464
  const team = node.team;
348
465
  return {
@@ -352,16 +469,35 @@ function mapIssue(node) {
352
469
  url: String(node.url ?? ""),
353
470
  description: node.description?.trim() || void 0,
354
471
  priority: typeof node.priority === "number" ? node.priority : void 0,
472
+ estimate: typeof node.estimate === "number" ? node.estimate : void 0,
473
+ dueDate: node.dueDate?.trim() || void 0,
474
+ branchName: node.branchName?.trim() || void 0,
475
+ createdAt: node.createdAt?.trim() || void 0,
476
+ updatedAt: node.updatedAt?.trim() || void 0,
477
+ completedAt: node.completedAt?.trim() || void 0,
355
478
  state: mapState(node.state),
356
- assignee: node.assignee?.id ? { id: String(node.assignee.id), name: String(node.assignee.name ?? "") } : void 0,
479
+ assignee: mapUser(node.assignee),
480
+ creator: mapUser(node.creator),
357
481
  team: team?.id ? {
358
482
  id: String(team.id),
359
483
  key: String(team.key ?? ""),
360
484
  name: String(team.name ?? ""),
361
- states: (team.states?.nodes ?? []).map((s) => mapState(s)).filter((s) => Boolean(s))
485
+ states: (team.states?.nodes ?? []).flatMap((s) => {
486
+ const state = mapState(s);
487
+ return state ? [state] : [];
488
+ })
362
489
  } : void 0,
363
490
  labels: (node.labels?.nodes ?? []).map((l) => l.name).filter((n) => Boolean(n)),
364
- cycle: mapCycle(node.cycle)
491
+ cycle: mapCycle(node.cycle),
492
+ project: node.project?.id ? { id: String(node.project.id), name: String(node.project.name ?? "") } : void 0,
493
+ parent: mapIssueRef(node.parent),
494
+ children: (node.children?.nodes ?? []).flatMap((child) => {
495
+ const ref = mapIssueRef(child);
496
+ return ref ? [ref] : [];
497
+ }),
498
+ relations: mapRelations(node),
499
+ comments: mapComments(node),
500
+ attachments: mapAttachments(node)
365
501
  };
366
502
  }
367
503
  function toIssueInfo(issue) {
@@ -383,7 +519,10 @@ function mapTeam(node) {
383
519
  id: String(node.id ?? ""),
384
520
  key: String(node.key ?? ""),
385
521
  name: String(node.name ?? ""),
386
- states: (node.states?.nodes ?? []).map((s) => mapState(s)).filter((s) => Boolean(s))
522
+ states: (node.states?.nodes ?? []).flatMap((s) => {
523
+ const state = mapState(s);
524
+ return state ? [state] : [];
525
+ })
387
526
  };
388
527
  }
389
528
  function resolveLinearTeam(teams, team) {
@@ -1336,7 +1475,7 @@ function registerLinearTools(server) {
1336
1475
  );
1337
1476
  server.tool(
1338
1477
  "linear_get_issue",
1339
- "Get a Linear issue by uuid or identifier (ENG-123).",
1478
+ "Get a Linear issue by uuid or identifier (ENG-123). Returns description, comments, relations (blocks/blockedBy/related/duplicate), parent/children, project, cycle, labels, and other metadata.",
1340
1479
  { id: z3.string() },
1341
1480
  async ({ id }) => {
1342
1481
  try {
@@ -6,16 +6,16 @@ import {
6
6
  isPidAlive,
7
7
  startOrchestration,
8
8
  waitForPidExit
9
- } from "./chunk-KZG47SZP.js";
10
- import "./chunk-4RYRNJPN.js";
9
+ } from "./chunk-TZWO7J4W.js";
10
+ import "./chunk-Q5DHVMXB.js";
11
11
  import "./chunk-ED4UPEJX.js";
12
12
  import "./chunk-S42XV45P.js";
13
- import "./chunk-JW436RTA.js";
13
+ import "./chunk-Q62SDB53.js";
14
14
  import "./chunk-6GN5WPYZ.js";
15
15
  import "./chunk-N5PM7HGQ.js";
16
16
  import "./chunk-KLBOWJ74.js";
17
- import "./chunk-KNE3FZ46.js";
18
- import "./chunk-67K3FRKR.js";
17
+ import "./chunk-N3VNOFXQ.js";
18
+ import "./chunk-ZVYLEF72.js";
19
19
  import "./chunk-JTPDWTWJ.js";
20
20
  import "./chunk-B3SJXYIJ.js";
21
21
  import "./chunk-EUXOHTUK.js";
@@ -4,17 +4,17 @@ import {
4
4
  isPidAlive,
5
5
  startOrchestration,
6
6
  waitForPidExit
7
- } from "./chunk-ZZBN2MR7.js";
8
- import "./chunk-WWH4NNBH.js";
7
+ } from "./chunk-JDYKQ6OI.js";
8
+ import "./chunk-PTI5H3RK.js";
9
9
  import "./chunk-KBWND62T.js";
10
10
  import "./chunk-M267JPEA.js";
11
- import "./chunk-JHZ6HGRI.js";
12
- import "./chunk-IHSR7EVK.js";
13
- import "./chunk-SXPTL222.js";
11
+ import "./chunk-3QRGCKYL.js";
12
+ import "./chunk-R4JP32P5.js";
13
+ import "./chunk-EGDRPA4B.js";
14
14
  import "./chunk-ELBYOGVA.js";
15
15
  import "./chunk-QTUESPAW.js";
16
16
  import "./chunk-AXQ4ZWHK.js";
17
- import "./chunk-WT5HSFOU.js";
17
+ import "./chunk-LAFA56WD.js";
18
18
  import "./chunk-DCOZABNT.js";
19
19
  import "./chunk-YP3CSOZ6.js";
20
20
  import "./chunk-FKOIHGKV.js";
@@ -4,9 +4,9 @@ import {
4
4
  listWorkspaces,
5
5
  removeWorkspace,
6
6
  syncWorkspacesFromThreads
7
- } from "./chunk-JHZ6HGRI.js";
8
- import "./chunk-IHSR7EVK.js";
9
- import "./chunk-SXPTL222.js";
7
+ } from "./chunk-3QRGCKYL.js";
8
+ import "./chunk-R4JP32P5.js";
9
+ import "./chunk-EGDRPA4B.js";
10
10
  import "./chunk-YP3CSOZ6.js";
11
11
  import "./chunk-FKOIHGKV.js";
12
12
  import "./chunk-I77RYPOH.js";
@@ -6,9 +6,9 @@ import {
6
6
  listWorkspaces,
7
7
  removeWorkspace,
8
8
  syncWorkspacesFromThreads
9
- } from "./chunk-JW436RTA.js";
10
- import "./chunk-KNE3FZ46.js";
11
- import "./chunk-67K3FRKR.js";
9
+ } from "./chunk-Q62SDB53.js";
10
+ import "./chunk-N3VNOFXQ.js";
11
+ import "./chunk-ZVYLEF72.js";
12
12
  import "./chunk-JTPDWTWJ.js";
13
13
  import "./chunk-B3SJXYIJ.js";
14
14
  import "./chunk-EUXOHTUK.js";
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@sideboard-ai/core",
3
- "version": "0.1.147",
3
+ "version": "0.1.149",
4
4
  "description": "Sideboard core — orchestration, agents, git worktrees, MCP server",
5
5
  "license": "Apache-2.0",
6
6
  "type": "module",