@sideboard-ai/core 0.1.245 → 0.1.247

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 (48) hide show
  1. package/dist/{abletime-OI6FNSXX.js → abletime-GAPUN2LL.js} +4 -4
  2. package/dist/{abletime-CWIJ7INC.js → abletime-HTRIHTL5.js} +4 -4
  3. package/dist/{abletime-oauth-CHVTUZBR.js → abletime-oauth-G6ZPGVAE.js} +3 -3
  4. package/dist/{abletime-oauth-PUIPZTA4.js → abletime-oauth-ME7ZY2RS.js} +3 -3
  5. package/dist/{abletime-rest-32NIVXAY.js → abletime-rest-73EKIAZU.js} +3 -3
  6. package/dist/{abletime-rest-APJUKFKL.js → abletime-rest-M2D2NELV.js} +3 -3
  7. package/dist/{agents-FTQZFMDS.js → agents-3PQ2BWGB.js} +5 -5
  8. package/dist/{agents-BOIIFMNG.js → agents-7SCJTTZN.js} +5 -5
  9. package/dist/{app-settings-VOPXJMGV.js → app-settings-2BHGANQH.js} +7 -1
  10. package/dist/{app-settings-652J57CX.js → app-settings-NKXH4PKM.js} +7 -1
  11. package/dist/{chunk-576S3HJ7.js → chunk-64NUGRZ3.js} +4 -4
  12. package/dist/{chunk-IMO7AZI4.js → chunk-6HIAYIXT.js} +2 -2
  13. package/dist/{chunk-WURF67ID.js → chunk-BEQE7VOE.js} +5 -5
  14. package/dist/{chunk-6I5YQTNK.js → chunk-CXTIOJRX.js} +12 -0
  15. package/dist/{chunk-QRWVKBGP.js → chunk-D3DYMGZS.js} +18 -5
  16. package/dist/{chunk-J5IZXFLD.js → chunk-ERQYYL4I.js} +74 -23
  17. package/dist/{chunk-C64YQAA6.js → chunk-GFGSC4Z7.js} +3 -3
  18. package/dist/{chunk-43F44EKX.js → chunk-GVAR6R6R.js} +2 -2
  19. package/dist/{chunk-NT6MCFSB.js → chunk-KFXP4KSP.js} +143 -24
  20. package/dist/{chunk-G45QP2ZD.js → chunk-LPS6D346.js} +3 -3
  21. package/dist/{chunk-7HOKP4GR.js → chunk-PELMZRDB.js} +12 -0
  22. package/dist/{chunk-PPJ5JTWA.js → chunk-QVQPIFBV.js} +28 -2
  23. package/dist/{chunk-QNJXJIWJ.js → chunk-RF46WMSI.js} +5 -5
  24. package/dist/{chunk-GFRC6JQN.js → chunk-U2ZZMGPV.js} +4 -4
  25. package/dist/{chunk-3ZEBUVUI.js → chunk-UVWIYSAA.js} +18 -5
  26. package/dist/{chunk-E6C5NR46.js → chunk-W4F7JKXF.js} +20 -6
  27. package/dist/{chunk-YLGBQVRK.js → chunk-XEBQRCDW.js} +28 -2
  28. package/dist/{chunk-5ZFULOTC.js → chunk-XM4UIFQU.js} +20 -6
  29. package/dist/{chunk-BL2UGKWU.js → chunk-Z7QWXE4W.js} +3 -3
  30. package/dist/{coordinator-prompt-ZBYRREHD.js → coordinator-prompt-BFO2TAVR.js} +4 -4
  31. package/dist/{coordinator-prompt-WQIICPT6.js → coordinator-prompt-IG676OSP.js} +4 -4
  32. package/dist/{global-workspace-3SQU4GL4.js → global-workspace-J6H7X5SM.js} +4 -4
  33. package/dist/{global-workspace-2N6KISDO.js → global-workspace-RLCICVQE.js} +4 -4
  34. package/dist/index.cjs +207 -15
  35. package/dist/index.d.cts +66 -2
  36. package/dist/index.d.ts +66 -2
  37. package/dist/index.js +27 -16
  38. package/dist/mcp/run-stdio.cjs +131 -15
  39. package/dist/mcp/run-stdio.js +17 -15
  40. package/dist/{orchestrator-5ROSTGGH.js → orchestrator-2NZUV4LI.js} +6 -6
  41. package/dist/{orchestrator-7YCQ7V5S.js → orchestrator-JCETTHVV.js} +6 -6
  42. package/dist/{thread-store-JQB7KZJR.js → thread-store-BEBZMOS7.js} +1 -1
  43. package/dist/{thread-store-SCV2IZYS.js → thread-store-S6PJADDM.js} +1 -1
  44. package/dist/{workspaces-QLKWW3O2.js → workspaces-NJF3GG5F.js} +4 -4
  45. package/dist/{workspaces-CFI7XVAE.js → workspaces-OLBW42V3.js} +4 -4
  46. package/dist/{worktree-PK3QETXO.js → worktree-2FYRYJTB.js} +3 -3
  47. package/dist/{worktree-4UAOZUJ4.js → worktree-UKLK7VHH.js} +3 -3
  48. package/package.json +1 -1
@@ -17,11 +17,11 @@ import {
17
17
  toAbleTimeIssueInfo,
18
18
  updateAbleTimeTask,
19
19
  verifyAbleTimeConnection
20
- } from "./chunk-BL2UGKWU.js";
21
- import "./chunk-IMO7AZI4.js";
22
- import "./chunk-WURF67ID.js";
20
+ } from "./chunk-Z7QWXE4W.js";
21
+ import "./chunk-6HIAYIXT.js";
22
+ import "./chunk-BEQE7VOE.js";
23
23
  import "./chunk-VKQGAWHY.js";
24
- import "./chunk-YLGBQVRK.js";
24
+ import "./chunk-XEBQRCDW.js";
25
25
  import "./chunk-NSTQ6QKD.js";
26
26
  import "./chunk-KGZBYWZ3.js";
27
27
  import "./chunk-KK63BFYN.js";
@@ -15,11 +15,11 @@ import {
15
15
  toAbleTimeIssueInfo,
16
16
  updateAbleTimeTask,
17
17
  verifyAbleTimeConnection
18
- } from "./chunk-G45QP2ZD.js";
19
- import "./chunk-43F44EKX.js";
20
- import "./chunk-QNJXJIWJ.js";
18
+ } from "./chunk-LPS6D346.js";
19
+ import "./chunk-GVAR6R6R.js";
20
+ import "./chunk-RF46WMSI.js";
21
21
  import "./chunk-N7WZ6NIN.js";
22
- import "./chunk-PPJ5JTWA.js";
22
+ import "./chunk-QVQPIFBV.js";
23
23
  import "./chunk-WDRMZKVB.js";
24
24
  import "./chunk-JT7R45JB.js";
25
25
  import "./chunk-77WWLBCI.js";
@@ -3,7 +3,7 @@
3
3
  import {
4
4
  DEFAULT_ABLETIME_HOST,
5
5
  normalizeAbleTimeHost
6
- } from "./chunk-WURF67ID.js";
6
+ } from "./chunk-BEQE7VOE.js";
7
7
  import {
8
8
  httpFetch
9
9
  } from "./chunk-VKQGAWHY.js";
@@ -12,7 +12,7 @@ import {
12
12
  getAbleTimeHost,
13
13
  loadAppSettings,
14
14
  saveAbleTimeConnection
15
- } from "./chunk-YLGBQVRK.js";
15
+ } from "./chunk-XEBQRCDW.js";
16
16
  import "./chunk-NSTQ6QKD.js";
17
17
  import "./chunk-KGZBYWZ3.js";
18
18
  import "./chunk-KK63BFYN.js";
@@ -287,7 +287,7 @@ async function startAbleTimeOAuth(opts) {
287
287
  persistAbleTimeTokens(data, { host });
288
288
  const token = data.access_token.trim();
289
289
  try {
290
- const { getAbleTimeOrientation } = await import("./abletime-OI6FNSXX.js");
290
+ const { getAbleTimeOrientation } = await import("./abletime-GAPUN2LL.js");
291
291
  const orientation = await getAbleTimeOrientation({ token, host });
292
292
  return saveAbleTimeConnection({
293
293
  accessToken: token,
@@ -20,10 +20,10 @@ import {
20
20
  parseAbleTimeOAuthCallbackUrl,
21
21
  resolveAbleTimeOAuthHost,
22
22
  startAbleTimeOAuth
23
- } from "./chunk-C64YQAA6.js";
24
- import "./chunk-QNJXJIWJ.js";
23
+ } from "./chunk-GFGSC4Z7.js";
24
+ import "./chunk-RF46WMSI.js";
25
25
  import "./chunk-N7WZ6NIN.js";
26
- import "./chunk-PPJ5JTWA.js";
26
+ import "./chunk-QVQPIFBV.js";
27
27
  import "./chunk-WDRMZKVB.js";
28
28
  import "./chunk-JT7R45JB.js";
29
29
  import "./chunk-77WWLBCI.js";
@@ -5,10 +5,10 @@ import {
5
5
  callAbleTimeRestTool,
6
6
  looksLikeAbleTimeUlid,
7
7
  textFromAbleTimeDoc
8
- } from "./chunk-43F44EKX.js";
9
- import "./chunk-QNJXJIWJ.js";
8
+ } from "./chunk-GVAR6R6R.js";
9
+ import "./chunk-RF46WMSI.js";
10
10
  import "./chunk-N7WZ6NIN.js";
11
- import "./chunk-PPJ5JTWA.js";
11
+ import "./chunk-QVQPIFBV.js";
12
12
  import "./chunk-WDRMZKVB.js";
13
13
  import "./chunk-JT7R45JB.js";
14
14
  import "./chunk-77WWLBCI.js";
@@ -7,10 +7,10 @@ import {
7
7
  callAbleTimeRestTool,
8
8
  looksLikeAbleTimeUlid,
9
9
  textFromAbleTimeDoc
10
- } from "./chunk-IMO7AZI4.js";
11
- import "./chunk-WURF67ID.js";
10
+ } from "./chunk-6HIAYIXT.js";
11
+ import "./chunk-BEQE7VOE.js";
12
12
  import "./chunk-VKQGAWHY.js";
13
- import "./chunk-YLGBQVRK.js";
13
+ import "./chunk-XEBQRCDW.js";
14
14
  import "./chunk-NSTQ6QKD.js";
15
15
  import "./chunk-KGZBYWZ3.js";
16
16
  import "./chunk-KK63BFYN.js";
@@ -55,14 +55,14 @@ import {
55
55
  resolveQuotaFallbackAgent,
56
56
  turnCostUsdFromCursorUsage,
57
57
  whichOnPath
58
- } from "./chunk-3ZEBUVUI.js";
59
- import "./chunk-576S3HJ7.js";
58
+ } from "./chunk-UVWIYSAA.js";
59
+ import "./chunk-64NUGRZ3.js";
60
60
  import "./chunk-J5GON4SU.js";
61
61
  import "./chunk-P2BSMNHB.js";
62
62
  import "./chunk-VKQGAWHY.js";
63
- import "./chunk-5ZFULOTC.js";
63
+ import "./chunk-XM4UIFQU.js";
64
64
  import "./chunk-D6JWYJ4P.js";
65
- import "./chunk-7HOKP4GR.js";
65
+ import "./chunk-PELMZRDB.js";
66
66
  import "./chunk-N6XI5KXL.js";
67
67
  import "./chunk-DD67JWTN.js";
68
68
  import {
@@ -81,7 +81,7 @@ import {
81
81
  assertOrchestratorCapableAgent,
82
82
  coerceOrchestratorAgent,
83
83
  isOrchestratorCapableAgent
84
- } from "./chunk-YLGBQVRK.js";
84
+ } from "./chunk-XEBQRCDW.js";
85
85
  import "./chunk-NSTQ6QKD.js";
86
86
  import "./chunk-KGZBYWZ3.js";
87
87
  import "./chunk-KK63BFYN.js";
@@ -46,9 +46,9 @@ import {
46
46
  resolveLoginCommand,
47
47
  resolveQuotaFallbackAgent,
48
48
  whichOnPath
49
- } from "./chunk-QRWVKBGP.js";
50
- import "./chunk-GFRC6JQN.js";
51
- import "./chunk-E6C5NR46.js";
49
+ } from "./chunk-D3DYMGZS.js";
50
+ import "./chunk-U2ZZMGPV.js";
51
+ import "./chunk-W4F7JKXF.js";
52
52
  import "./chunk-6K64FJDD.js";
53
53
  import "./chunk-2P4XKWV2.js";
54
54
  import "./chunk-CJKL7A4G.js";
@@ -68,10 +68,10 @@ import {
68
68
  assertOrchestratorCapableAgent,
69
69
  coerceOrchestratorAgent,
70
70
  isOrchestratorCapableAgent
71
- } from "./chunk-PPJ5JTWA.js";
71
+ } from "./chunk-QVQPIFBV.js";
72
72
  import "./chunk-WDRMZKVB.js";
73
73
  import "./chunk-JT7R45JB.js";
74
- import "./chunk-6I5YQTNK.js";
74
+ import "./chunk-CXTIOJRX.js";
75
75
  import "./chunk-224IXQOM.js";
76
76
  import "./chunk-77WWLBCI.js";
77
77
  import "./chunk-A4JGXX2F.js";
@@ -5,6 +5,7 @@ import {
5
5
  HARNESS_ENV_KEYS,
6
6
  ISSUE_SOURCE_LABELS,
7
7
  PROFILE_NOTES_MAX,
8
+ REVIEW_LABEL_MAX,
8
9
  USAGE_ON_LIMIT_VALUES,
9
10
  agentDoneSound,
10
11
  appSettingsPath,
@@ -61,6 +62,7 @@ import {
61
62
  issueSourceLabel,
62
63
  loadAppSettings,
63
64
  maxConcurrentAgents,
65
+ normalizeReviewLabel,
64
66
  orchestrationQuotaFallbackAgent,
65
67
  orchestrationQuotaOnLimit,
66
68
  readViewerContext,
@@ -72,6 +74,7 @@ import {
72
74
  resolveNewOrchestratorOptions,
73
75
  resolveNewThreadOptions,
74
76
  resolveOrchestratorDefaults,
77
+ resolveProjectReviewLabel,
75
78
  resolveThreadDefaults,
76
79
  resolveUsageOnLimit,
77
80
  resolveViewerProfile,
@@ -95,7 +98,7 @@ import {
95
98
  updateProjectProfileSettings,
96
99
  usageOnLimit,
97
100
  writeViewerContext
98
- } from "./chunk-PPJ5JTWA.js";
101
+ } from "./chunk-QVQPIFBV.js";
99
102
  import "./chunk-WDRMZKVB.js";
100
103
  import "./chunk-JT7R45JB.js";
101
104
  import "./chunk-77WWLBCI.js";
@@ -108,6 +111,7 @@ export {
108
111
  HARNESS_ENV_KEYS,
109
112
  ISSUE_SOURCE_LABELS,
110
113
  PROFILE_NOTES_MAX,
114
+ REVIEW_LABEL_MAX,
111
115
  USAGE_ON_LIMIT_VALUES,
112
116
  agentDoneSound,
113
117
  appSettingsPath,
@@ -164,6 +168,7 @@ export {
164
168
  issueSourceLabel,
165
169
  loadAppSettings,
166
170
  maxConcurrentAgents,
171
+ normalizeReviewLabel,
167
172
  orchestrationQuotaFallbackAgent,
168
173
  orchestrationQuotaOnLimit,
169
174
  readViewerContext,
@@ -175,6 +180,7 @@ export {
175
180
  resolveNewOrchestratorOptions,
176
181
  resolveNewThreadOptions,
177
182
  resolveOrchestratorDefaults,
183
+ resolveProjectReviewLabel,
178
184
  resolveThreadDefaults,
179
185
  resolveUsageOnLimit,
180
186
  resolveViewerProfile,
@@ -7,6 +7,7 @@ import {
7
7
  HARNESS_ENV_KEYS,
8
8
  ISSUE_SOURCE_LABELS,
9
9
  PROFILE_NOTES_MAX,
10
+ REVIEW_LABEL_MAX,
10
11
  USAGE_ON_LIMIT_VALUES,
11
12
  agentDoneSound,
12
13
  appSettingsPath,
@@ -63,6 +64,7 @@ import {
63
64
  issueSourceLabel,
64
65
  loadAppSettings,
65
66
  maxConcurrentAgents,
67
+ normalizeReviewLabel,
66
68
  orchestrationQuotaFallbackAgent,
67
69
  orchestrationQuotaOnLimit,
68
70
  readViewerContext,
@@ -74,6 +76,7 @@ import {
74
76
  resolveNewOrchestratorOptions,
75
77
  resolveNewThreadOptions,
76
78
  resolveOrchestratorDefaults,
79
+ resolveProjectReviewLabel,
77
80
  resolveThreadDefaults,
78
81
  resolveUsageOnLimit,
79
82
  resolveViewerProfile,
@@ -97,7 +100,7 @@ import {
97
100
  updateProjectProfileSettings,
98
101
  usageOnLimit,
99
102
  writeViewerContext
100
- } from "./chunk-YLGBQVRK.js";
103
+ } from "./chunk-XEBQRCDW.js";
101
104
  import "./chunk-NSTQ6QKD.js";
102
105
  import "./chunk-KGZBYWZ3.js";
103
106
  import "./chunk-KK63BFYN.js";
@@ -110,6 +113,7 @@ export {
110
113
  HARNESS_ENV_KEYS,
111
114
  ISSUE_SOURCE_LABELS,
112
115
  PROFILE_NOTES_MAX,
116
+ REVIEW_LABEL_MAX,
113
117
  USAGE_ON_LIMIT_VALUES,
114
118
  agentDoneSound,
115
119
  appSettingsPath,
@@ -166,6 +170,7 @@ export {
166
170
  issueSourceLabel,
167
171
  loadAppSettings,
168
172
  maxConcurrentAgents,
173
+ normalizeReviewLabel,
169
174
  orchestrationQuotaFallbackAgent,
170
175
  orchestrationQuotaOnLimit,
171
176
  readViewerContext,
@@ -177,6 +182,7 @@ export {
177
182
  resolveNewOrchestratorOptions,
178
183
  resolveNewThreadOptions,
179
184
  resolveOrchestratorDefaults,
185
+ resolveProjectReviewLabel,
180
186
  resolveThreadDefaults,
181
187
  resolveUsageOnLimit,
182
188
  resolveViewerProfile,
@@ -8,7 +8,7 @@ import {
8
8
  resolveRepoRoot,
9
9
  takenSlugsFromThread,
10
10
  teamSlugFromName
11
- } from "./chunk-5ZFULOTC.js";
11
+ } from "./chunk-XM4UIFQU.js";
12
12
  import {
13
13
  ATTACHMENTS_DIR,
14
14
  attachmentsGitignoreBody
@@ -18,7 +18,7 @@ import {
18
18
  listThreads,
19
19
  updateThread,
20
20
  writeThread
21
- } from "./chunk-7HOKP4GR.js";
21
+ } from "./chunk-PELMZRDB.js";
22
22
  import {
23
23
  assertOrchestratorCapableAgent,
24
24
  formatAccountProfilePlaybookLine,
@@ -31,7 +31,7 @@ import {
31
31
  resolveThreadDefaults,
32
32
  resolveViewerProfile,
33
33
  resolveViewerProfileForRepo
34
- } from "./chunk-YLGBQVRK.js";
34
+ } from "./chunk-XEBQRCDW.js";
35
35
  import {
36
36
  appDataDir,
37
37
  globalAgentCwd,
@@ -338,7 +338,7 @@ var COORDINATOR_TOOL_PLAYBOOK = [
338
338
  "Discover:",
339
339
  "- 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.",
340
340
  "- 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.",
341
- '- 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).',
341
+ `- 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 with this project's ready-for-review GitHub label (Settings \u2192 Projects; default 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).`,
342
342
  "- 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.",
343
343
  "- Ticket updates: list_issues / linear_search_issues / github_search_issues with updatedSince (yesterday, 2d, or ISO). One call returns new assignments, ticket edits, and new comments \u2014 do not get_issue every ticket just to check for comments. kind=created vs updated distinguishes new tickets from existing ones.",
344
344
  "- 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 when they were asked to do the work. When reviewing a PR or ticket, do not comment or update until the user types a next step \u2014 they should work through the feedback in chat first. Do not tell the child to ask_user after the review. Scope errors: reconnect Linear in Account settings. Prefer these over any Linear MCP the CLI may still list.",
@@ -6,14 +6,14 @@ import {
6
6
  normalizeAbleTimeCredential,
7
7
  normalizeAbleTimeHost,
8
8
  rewriteAbleTimeError
9
- } from "./chunk-WURF67ID.js";
9
+ } from "./chunk-BEQE7VOE.js";
10
10
  import {
11
11
  httpFetch
12
12
  } from "./chunk-VKQGAWHY.js";
13
13
  import {
14
14
  getAbleTimeAccessToken,
15
15
  getAbleTimeHost
16
- } from "./chunk-YLGBQVRK.js";
16
+ } from "./chunk-XEBQRCDW.js";
17
17
 
18
18
  // src/integrations/abletime-rest.ts
19
19
  var ABLETIME_REST_PREFIX = "/api/public/v2";
@@ -6,7 +6,7 @@ import {
6
6
  import {
7
7
  getAbleTimeHost,
8
8
  isAbleTimeConnected
9
- } from "./chunk-YLGBQVRK.js";
9
+ } from "./chunk-XEBQRCDW.js";
10
10
 
11
11
  // src/integrations/abletime-mcp.ts
12
12
  var DEFAULT_ABLETIME_HOST = "https://track.abletime.com";
@@ -155,7 +155,7 @@ function textsFromUnknown(value) {
155
155
  return "";
156
156
  }
157
157
  async function abletimeMcpRequest(method, params, opts) {
158
- const rawToken = opts?.token ?? await import("./abletime-oauth-CHVTUZBR.js").then((m) => m.ensureAbleTimeAccessToken());
158
+ const rawToken = opts?.token ?? await import("./abletime-oauth-G6ZPGVAE.js").then((m) => m.ensureAbleTimeAccessToken());
159
159
  if (!rawToken?.trim()) {
160
160
  throw new Error("AbleTime is not connected \u2014 paste a personal access token in Account settings");
161
161
  }
@@ -226,9 +226,9 @@ async function callAbleTimeTool(name, args = {}, opts) {
226
226
  if (!opts?.token && !isAbleTimeConnected()) {
227
227
  throw new Error("AbleTime is not connected \u2014 paste a personal access token in Account settings");
228
228
  }
229
- const rawToken = opts?.token ?? await import("./abletime-oauth-CHVTUZBR.js").then((m) => m.ensureAbleTimeAccessToken());
229
+ const rawToken = opts?.token ?? await import("./abletime-oauth-G6ZPGVAE.js").then((m) => m.ensureAbleTimeAccessToken());
230
230
  if (rawToken && ableTimeUsesRest(rawToken)) {
231
- const { callAbleTimeRestTool } = await import("./abletime-rest-APJUKFKL.js");
231
+ const { callAbleTimeRestTool } = await import("./abletime-rest-M2D2NELV.js");
232
232
  return callAbleTimeRestTool(name, args, { ...opts, token: rawToken });
233
233
  }
234
234
  const requestOpts = { ...opts, pm: opts?.pm ?? abletimeToolUsesPm(name) };
@@ -244,7 +244,7 @@ async function callAbleTimeTool(name, args = {}, opts) {
244
244
  return await call();
245
245
  }
246
246
  if (rawToken && ableTimeUsesRest(rawToken) && isAbleTimeRejectedCredential(message)) {
247
- const { callAbleTimeRestTool } = await import("./abletime-rest-APJUKFKL.js");
247
+ const { callAbleTimeRestTool } = await import("./abletime-rest-M2D2NELV.js");
248
248
  return callAbleTimeRestTool(name, args, { ...opts, token: rawToken });
249
249
  }
250
250
  throw err instanceof Error ? new Error(rewriteAbleTimeError(err.message)) : err;
@@ -66,6 +66,12 @@ function normalizeThread(raw) {
66
66
  prTitle: raw.prTitle ?? null,
67
67
  prState: raw.prState ?? null,
68
68
  prIsDraft: Boolean(raw.prIsDraft),
69
+ prReviewDecision: raw.prReviewDecision ?? null,
70
+ prMergeable: raw.prMergeable ?? null,
71
+ prMergeStateStatus: raw.prMergeStateStatus ?? null,
72
+ prIsInMergeQueue: Boolean(raw.prIsInMergeQueue),
73
+ prLabels: Array.isArray(raw.prLabels) ? raw.prLabels : [],
74
+ prChecksFailed: typeof raw.prChecksFailed === "boolean" ? raw.prChecksFailed : void 0,
69
75
  skipAutoArchiveOnMerge: Boolean(raw.skipAutoArchiveOnMerge),
70
76
  cowboy: Boolean(raw.cowboy),
71
77
  stackId: raw.stackId ?? null,
@@ -101,6 +107,12 @@ function createEmptyThread(partial) {
101
107
  prIsDraft: Boolean(partial.prIsDraft),
102
108
  prAuthorLogin: partial.prAuthorLogin?.trim() || null,
103
109
  prReviewerLogins: partial.prReviewerLogins ?? [],
110
+ prReviewDecision: partial.prReviewDecision ?? null,
111
+ prMergeable: partial.prMergeable ?? null,
112
+ prMergeStateStatus: partial.prMergeStateStatus ?? null,
113
+ prIsInMergeQueue: Boolean(partial.prIsInMergeQueue),
114
+ prLabels: partial.prLabels ?? [],
115
+ prChecksFailed: partial.prChecksFailed,
104
116
  skipAutoArchiveOnMerge: partial.skipAutoArchiveOnMerge ?? false,
105
117
  cowboy: Boolean(partial.cowboy),
106
118
  stackId: partial.stackId ?? null,
@@ -1,12 +1,12 @@
1
1
  import {
2
2
  isOrchestratorThread
3
- } from "./chunk-GFRC6JQN.js";
3
+ } from "./chunk-U2ZZMGPV.js";
4
4
  import {
5
5
  codexUnattendedGitConfigArgs,
6
6
  mergeAgentGitAuthEnv,
7
7
  resolveAgentGitAuthEnv,
8
8
  resolveCodexGitWritableRoots
9
- } from "./chunk-E6C5NR46.js";
9
+ } from "./chunk-W4F7JKXF.js";
10
10
  import {
11
11
  applyConnectedTeamToCli,
12
12
  brightsyMcpServerName,
@@ -45,7 +45,7 @@ import {
45
45
  loadAppSettings,
46
46
  resolveAgentExecutable,
47
47
  resolveClaudeExecutable
48
- } from "./chunk-PPJ5JTWA.js";
48
+ } from "./chunk-QVQPIFBV.js";
49
49
  import {
50
50
  appDataDir
51
51
  } from "./chunk-A4JGXX2F.js";
@@ -1654,6 +1654,14 @@ function lastRunningSkillIndex(parts, parentId) {
1654
1654
  }
1655
1655
  return -1;
1656
1656
  }
1657
+ function markRunningSkillsDone(parts, parentId) {
1658
+ return parts.map((p) => {
1659
+ if (p.type === "tool" && isSkillToolName(p.name) && p.status === "running" && sameParentId(p.parentId, parentId)) {
1660
+ return withPartTimes({ ...p, status: "done" }, p);
1661
+ }
1662
+ return p;
1663
+ });
1664
+ }
1657
1665
  function promoteOrFoldSkillText(parts, textIdx) {
1658
1666
  const acc = parts[textIdx];
1659
1667
  if (acc?.type !== "text") return parts;
@@ -1788,7 +1796,10 @@ function applyAgentEvent(parts, event) {
1788
1796
  {
1789
1797
  ...prev,
1790
1798
  result: clipToolResultForStore(result),
1791
- status: looksLikeSkillBody(result) ? "done" : prev.status
1799
+ // Stay running after the YAML `name:` fence so later content_block_delta
1800
+ // tokens of SKILL.md stay on this row. thinking / tool_use / finalizeParts
1801
+ // mark the row done so the real reply can be chat.
1802
+ status: "running"
1792
1803
  },
1793
1804
  prev
1794
1805
  );
@@ -1830,6 +1841,7 @@ function applyAgentEvent(parts, event) {
1830
1841
  if (event.type === "thinking") {
1831
1842
  const data = event.data;
1832
1843
  if (!data) return parts;
1844
+ parts = markRunningSkillsDone(parts, event.parentId);
1833
1845
  const next = [...parts];
1834
1846
  if (event.replace) {
1835
1847
  for (let i = next.length - 1; i >= 0; i--) {
@@ -1877,6 +1889,7 @@ function applyAgentEvent(parts, event) {
1877
1889
  return withCompactFinish(next, data, event.parentId);
1878
1890
  }
1879
1891
  if (event.type === "tool_use") {
1892
+ parts = markRunningSkillsDone(parts, event.parentId);
1880
1893
  const input = asRecord(event.input);
1881
1894
  const diff = diffFromInput(input);
1882
1895
  const existing = parts.findIndex((p) => p.type === "tool" && p.id === event.id);
@@ -2520,7 +2533,7 @@ var claudeAdapter = {
2520
2533
  );
2521
2534
  }
2522
2535
  const mode = permissionMode(thread);
2523
- const { isOrchestratorThread: isOrchestratorThread2 } = await import("./global-workspace-2N6KISDO.js");
2536
+ const { isOrchestratorThread: isOrchestratorThread2 } = await import("./global-workspace-RLCICVQE.js");
2524
2537
  const isOrchestrator = isOrchestratorThread2(thread);
2525
2538
  const injectedServers = await buildInjectedMcpServers({
2526
2539
  includeSideboard: true,