@sideboard-ai/core 0.1.318 → 0.1.320

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 (61) hide show
  1. package/dist/{abletime-TKAFNXCM.js → abletime-CRRLEYTE.js} +6 -4
  2. package/dist/{abletime-KWOBUL46.js → abletime-ICW6Q2AB.js} +6 -4
  3. package/dist/{abletime-oauth-S4AXA4WR.js → abletime-oauth-P3KPPJE4.js} +3 -3
  4. package/dist/{abletime-oauth-IUIAGLFJ.js → abletime-oauth-Q76XBSPG.js} +3 -3
  5. package/dist/{abletime-rest-RWN4EPY3.js → abletime-rest-DNFAYYLP.js} +3 -3
  6. package/dist/{abletime-rest-ORBELZQO.js → abletime-rest-DQ3PNKXP.js} +3 -3
  7. package/dist/{agents-KABJUDPI.js → agents-CJZYJOWP.js} +7 -7
  8. package/dist/{agents-2AR7I6B6.js → agents-F2E2HACB.js} +7 -7
  9. package/dist/{app-settings-CZVFMOI5.js → app-settings-KMPVI2B7.js} +1 -1
  10. package/dist/{app-settings-V6YPYY57.js → app-settings-P3H4SEIK.js} +1 -1
  11. package/dist/{chunk-YEIHCSZS.js → chunk-4GZC6DDH.js} +2 -0
  12. package/dist/{chunk-XOZNEAWF.js → chunk-56M6VEXI.js} +3 -3
  13. package/dist/{chunk-7SCVGGF6.js → chunk-5OQONGHO.js} +5 -5
  14. package/dist/{chunk-A6C67DY5.js → chunk-5S3YP5KH.js} +4 -4
  15. package/dist/{chunk-I5CLCWUK.js → chunk-72PUPPV2.js} +9 -5
  16. package/dist/{chunk-BXTISNKW.js → chunk-B7UL36WH.js} +428 -99
  17. package/dist/{chunk-W5QZWAUB.js → chunk-BTIXTH4N.js} +9 -5
  18. package/dist/{chunk-AESO2KJS.js → chunk-CB5Z5C3J.js} +2 -2
  19. package/dist/{chunk-2HOZMSKQ.js → chunk-DFUXW2IT.js} +2 -2
  20. package/dist/{chunk-ST2UQBJT.js → chunk-DJZRDTZY.js} +6 -6
  21. package/dist/{chunk-TUJFCJJU.js → chunk-EDXTP2VR.js} +2 -2
  22. package/dist/{chunk-I5TESHDN.js → chunk-EQ52JR3Q.js} +5 -5
  23. package/dist/{chunk-FDXHNROD.js → chunk-EQ5JY3MJ.js} +2 -2
  24. package/dist/{chunk-E52SQENB.js → chunk-FZKAAAEB.js} +3 -1
  25. package/dist/{chunk-VZAJVX36.js → chunk-HHPTGIKS.js} +2 -2
  26. package/dist/{chunk-23ZUL2EX.js → chunk-IDPFLXRY.js} +429 -100
  27. package/dist/{chunk-GCHSJCCX.js → chunk-IFU4W4C4.js} +3 -1
  28. package/dist/{chunk-IAPO7ZFG.js → chunk-LLIEU2ZB.js} +5 -5
  29. package/dist/{chunk-MBYGWNLQ.js → chunk-OAFBHCSM.js} +1 -1
  30. package/dist/{chunk-NRSC4N5X.js → chunk-P74GXA5V.js} +6 -6
  31. package/dist/{chunk-A46CIARU.js → chunk-PNLGWAYE.js} +2 -2
  32. package/dist/{chunk-53OCOGND.js → chunk-QGY3UNNL.js} +2 -2
  33. package/dist/{chunk-7Q327QF2.js → chunk-QIC2JXHW.js} +5 -5
  34. package/dist/{chunk-YALFZKSC.js → chunk-RHJPP26T.js} +11 -11
  35. package/dist/{chunk-AZ4GEEGL.js → chunk-UK2KESBN.js} +2 -2
  36. package/dist/{chunk-7ADEYEMH.js → chunk-V76MQ7MH.js} +5 -5
  37. package/dist/{chunk-HOLB6ZFZ.js → chunk-XMHMVEIY.js} +2 -0
  38. package/dist/{chunk-GH7UMULC.js → chunk-ZYZBCLJR.js} +6 -6
  39. package/dist/{conductor-MG2RAQNT.js → conductor-FPFY6Z5S.js} +6 -6
  40. package/dist/{conductor-NIUBJLTS.js → conductor-JA5W3L7C.js} +6 -6
  41. package/dist/{coordinator-prompt-3CT3D5UM.js → coordinator-prompt-M75TAN43.js} +4 -4
  42. package/dist/{coordinator-prompt-X74F3JIC.js → coordinator-prompt-NUC2ZXMJ.js} +4 -4
  43. package/dist/{global-workspace-BUWMRNW5.js → global-workspace-5A4H34AF.js} +4 -4
  44. package/dist/{global-workspace-FTNJEML3.js → global-workspace-SCLQUNUI.js} +4 -4
  45. package/dist/index.cjs +861 -475
  46. package/dist/index.d.cts +56 -13
  47. package/dist/index.d.ts +56 -13
  48. package/dist/index.js +54 -31
  49. package/dist/mcp/run-stdio.cjs +459 -95
  50. package/dist/mcp/run-stdio.js +23 -23
  51. package/dist/{optional-cli-EMSZBYDE.js → optional-cli-2V3SLME5.js} +3 -3
  52. package/dist/{optional-cli-6GGESWGE.js → optional-cli-MRNQKVIR.js} +4 -4
  53. package/dist/{orchestrator-N54V3B76.js → orchestrator-7BDZ5GWD.js} +10 -10
  54. package/dist/{orchestrator-2SXK4U65.js → orchestrator-NPFWU3XU.js} +10 -10
  55. package/dist/{thread-store-PLNIWFZ4.js → thread-store-JWHVXLDX.js} +1 -1
  56. package/dist/{thread-store-7BBA63KV.js → thread-store-QHYN2ZMQ.js} +1 -1
  57. package/dist/{workspaces-2V5UYPYC.js → workspaces-5QA3YM4L.js} +4 -4
  58. package/dist/{workspaces-MGKEAYNM.js → workspaces-KWMBOTQD.js} +4 -4
  59. package/dist/{worktree-THAXW5U7.js → worktree-7EATHVYQ.js} +3 -3
  60. package/dist/{worktree-XJKLDYOL.js → worktree-O6BANO2I.js} +3 -3
  61. package/package.json +1 -1
@@ -2,6 +2,7 @@
2
2
 
3
3
  import {
4
4
  ableTimeDependencyTarget,
5
+ ableTimeStateIsClosed,
5
6
  commentAbleTimeTask,
6
7
  createAbleTimeTask,
7
8
  downloadAbleTimeAttachment,
@@ -18,12 +19,12 @@ import {
18
19
  toAbleTimeIssueInfo,
19
20
  updateAbleTimeTask,
20
21
  verifyAbleTimeConnection
21
- } from "./chunk-I5CLCWUK.js";
22
- import "./chunk-VZAJVX36.js";
23
- import "./chunk-7SCVGGF6.js";
22
+ } from "./chunk-72PUPPV2.js";
23
+ import "./chunk-HHPTGIKS.js";
24
+ import "./chunk-5OQONGHO.js";
24
25
  import "./chunk-2GPQZZLY.js";
25
26
  import "./chunk-N2WW62LF.js";
26
- import "./chunk-GCHSJCCX.js";
27
+ import "./chunk-IFU4W4C4.js";
27
28
  import "./chunk-NSTQ6QKD.js";
28
29
  import "./chunk-WWUABK6B.js";
29
30
  import "./chunk-FJZWM2ON.js";
@@ -32,6 +33,7 @@ import "./chunk-KGZBYWZ3.js";
32
33
  import "./chunk-WOU343SI.js";
33
34
  export {
34
35
  ableTimeDependencyTarget,
36
+ ableTimeStateIsClosed,
35
37
  commentAbleTimeTask,
36
38
  createAbleTimeTask,
37
39
  downloadAbleTimeAttachment,
@@ -1,5 +1,6 @@
1
1
  import {
2
2
  ableTimeDependencyTarget,
3
+ ableTimeStateIsClosed,
3
4
  commentAbleTimeTask,
4
5
  createAbleTimeTask,
5
6
  downloadAbleTimeAttachment,
@@ -16,12 +17,12 @@ import {
16
17
  toAbleTimeIssueInfo,
17
18
  updateAbleTimeTask,
18
19
  verifyAbleTimeConnection
19
- } from "./chunk-W5QZWAUB.js";
20
- import "./chunk-2HOZMSKQ.js";
21
- import "./chunk-7ADEYEMH.js";
20
+ } from "./chunk-BTIXTH4N.js";
21
+ import "./chunk-DFUXW2IT.js";
22
+ import "./chunk-V76MQ7MH.js";
22
23
  import "./chunk-JAT3JFOS.js";
23
24
  import "./chunk-6K64FJDD.js";
24
- import "./chunk-E52SQENB.js";
25
+ import "./chunk-FZKAAAEB.js";
25
26
  import "./chunk-77WWLBCI.js";
26
27
  import "./chunk-4TR3HZFT.js";
27
28
  import "./chunk-WDRMZKVB.js";
@@ -30,6 +31,7 @@ import "./chunk-JT7R45JB.js";
30
31
  import "./chunk-H4UEFJRI.js";
31
32
  export {
32
33
  ableTimeDependencyTarget,
34
+ ableTimeStateIsClosed,
33
35
  commentAbleTimeTask,
34
36
  createAbleTimeTask,
35
37
  downloadAbleTimeAttachment,
@@ -3,7 +3,7 @@
3
3
  import {
4
4
  DEFAULT_ABLETIME_HOST,
5
5
  normalizeAbleTimeHost
6
- } from "./chunk-7SCVGGF6.js";
6
+ } from "./chunk-5OQONGHO.js";
7
7
  import {
8
8
  httpFetch
9
9
  } from "./chunk-2GPQZZLY.js";
@@ -12,7 +12,7 @@ import {
12
12
  getAbleTimeHost,
13
13
  loadAppSettings,
14
14
  saveAbleTimeConnection
15
- } from "./chunk-GCHSJCCX.js";
15
+ } from "./chunk-IFU4W4C4.js";
16
16
  import "./chunk-NSTQ6QKD.js";
17
17
  import "./chunk-WWUABK6B.js";
18
18
  import "./chunk-FJZWM2ON.js";
@@ -288,7 +288,7 @@ async function startAbleTimeOAuth(opts) {
288
288
  persistAbleTimeTokens(data, { host });
289
289
  const token = data.access_token.trim();
290
290
  try {
291
- const { getAbleTimeOrientation } = await import("./abletime-TKAFNXCM.js");
291
+ const { getAbleTimeOrientation } = await import("./abletime-CRRLEYTE.js");
292
292
  const orientation = await getAbleTimeOrientation({ token, host });
293
293
  return saveAbleTimeConnection({
294
294
  accessToken: token,
@@ -20,10 +20,10 @@ import {
20
20
  parseAbleTimeOAuthCallbackUrl,
21
21
  resolveAbleTimeOAuthHost,
22
22
  startAbleTimeOAuth
23
- } from "./chunk-XOZNEAWF.js";
24
- import "./chunk-7ADEYEMH.js";
23
+ } from "./chunk-56M6VEXI.js";
24
+ import "./chunk-V76MQ7MH.js";
25
25
  import "./chunk-JAT3JFOS.js";
26
- import "./chunk-E52SQENB.js";
26
+ import "./chunk-FZKAAAEB.js";
27
27
  import "./chunk-77WWLBCI.js";
28
28
  import "./chunk-4TR3HZFT.js";
29
29
  import "./chunk-WDRMZKVB.js";
@@ -5,10 +5,10 @@ import {
5
5
  callAbleTimeRestTool,
6
6
  looksLikeAbleTimeUlid,
7
7
  textFromAbleTimeDoc
8
- } from "./chunk-2HOZMSKQ.js";
9
- import "./chunk-7ADEYEMH.js";
8
+ } from "./chunk-DFUXW2IT.js";
9
+ import "./chunk-V76MQ7MH.js";
10
10
  import "./chunk-JAT3JFOS.js";
11
- import "./chunk-E52SQENB.js";
11
+ import "./chunk-FZKAAAEB.js";
12
12
  import "./chunk-77WWLBCI.js";
13
13
  import "./chunk-4TR3HZFT.js";
14
14
  import "./chunk-WDRMZKVB.js";
@@ -7,10 +7,10 @@ import {
7
7
  callAbleTimeRestTool,
8
8
  looksLikeAbleTimeUlid,
9
9
  textFromAbleTimeDoc
10
- } from "./chunk-VZAJVX36.js";
11
- import "./chunk-7SCVGGF6.js";
10
+ } from "./chunk-HHPTGIKS.js";
11
+ import "./chunk-5OQONGHO.js";
12
12
  import "./chunk-2GPQZZLY.js";
13
- import "./chunk-GCHSJCCX.js";
13
+ import "./chunk-IFU4W4C4.js";
14
14
  import "./chunk-NSTQ6QKD.js";
15
15
  import "./chunk-WWUABK6B.js";
16
16
  import "./chunk-FJZWM2ON.js";
@@ -46,7 +46,7 @@ import {
46
46
  resolveCursorSdkRoot,
47
47
  resolveQuotaFallbackAgent,
48
48
  turnCostUsdFromCursorUsage
49
- } from "./chunk-GH7UMULC.js";
49
+ } from "./chunk-ZYZBCLJR.js";
50
50
  import {
51
51
  getAgentSetupInfo,
52
52
  installAgent,
@@ -58,13 +58,13 @@ import {
58
58
  prepareTerminalCommand,
59
59
  resolveLoginCommand,
60
60
  whichOnPath
61
- } from "./chunk-53OCOGND.js";
61
+ } from "./chunk-QGY3UNNL.js";
62
62
  import "./chunk-V5BTGQ6M.js";
63
63
  import "./chunk-E63AM3PW.js";
64
64
  import "./chunk-2GPQZZLY.js";
65
- import "./chunk-I5TESHDN.js";
66
- import "./chunk-A6C67DY5.js";
67
- import "./chunk-A46CIARU.js";
65
+ import "./chunk-EQ52JR3Q.js";
66
+ import "./chunk-5S3YP5KH.js";
67
+ import "./chunk-PNLGWAYE.js";
68
68
  import "./chunk-N2WW62LF.js";
69
69
  import "./chunk-DD67JWTN.js";
70
70
  import {
@@ -83,12 +83,12 @@ import {
83
83
  assertOrchestratorCapableAgent,
84
84
  coerceOrchestratorAgent,
85
85
  isOrchestratorCapableAgent
86
- } from "./chunk-GCHSJCCX.js";
86
+ } from "./chunk-IFU4W4C4.js";
87
87
  import "./chunk-NSTQ6QKD.js";
88
88
  import "./chunk-WWUABK6B.js";
89
89
  import "./chunk-FJZWM2ON.js";
90
90
  import "./chunk-J2LNLI4S.js";
91
- import "./chunk-HOLB6ZFZ.js";
91
+ import "./chunk-XMHMVEIY.js";
92
92
  import "./chunk-WMZIANPV.js";
93
93
  import "./chunk-KGZBYWZ3.js";
94
94
  import "./chunk-WOU343SI.js";
@@ -37,9 +37,9 @@ import {
37
37
  planModeTurnInstruction,
38
38
  resolveCursorModelId,
39
39
  resolveQuotaFallbackAgent
40
- } from "./chunk-IAPO7ZFG.js";
40
+ } from "./chunk-LLIEU2ZB.js";
41
41
  import "./chunk-HH3VVTEC.js";
42
- import "./chunk-7Q327QF2.js";
42
+ import "./chunk-QIC2JXHW.js";
43
43
  import {
44
44
  getAgentSetupInfo,
45
45
  installAgent,
@@ -51,10 +51,10 @@ import {
51
51
  prepareTerminalCommand,
52
52
  resolveLoginCommand,
53
53
  whichOnPath
54
- } from "./chunk-AESO2KJS.js";
55
- import "./chunk-YALFZKSC.js";
56
- import "./chunk-TUJFCJJU.js";
57
- import "./chunk-YEIHCSZS.js";
54
+ } from "./chunk-CB5Z5C3J.js";
55
+ import "./chunk-RHJPP26T.js";
56
+ import "./chunk-EDXTP2VR.js";
57
+ import "./chunk-4GZC6DDH.js";
58
58
  import "./chunk-2P4XKWV2.js";
59
59
  import "./chunk-RSA47QYR.js";
60
60
  import "./chunk-JAT3JFOS.js";
@@ -88,7 +88,7 @@ import {
88
88
  assertOrchestratorCapableAgent,
89
89
  coerceOrchestratorAgent,
90
90
  isOrchestratorCapableAgent
91
- } from "./chunk-E52SQENB.js";
91
+ } from "./chunk-FZKAAAEB.js";
92
92
  import "./chunk-77WWLBCI.js";
93
93
  import "./chunk-4TR3HZFT.js";
94
94
  import "./chunk-WDRMZKVB.js";
@@ -109,7 +109,7 @@ import {
109
109
  updateProjectProfileSettings,
110
110
  usageOnLimit,
111
111
  writeViewerContext
112
- } from "./chunk-GCHSJCCX.js";
112
+ } from "./chunk-IFU4W4C4.js";
113
113
  import "./chunk-NSTQ6QKD.js";
114
114
  import "./chunk-WWUABK6B.js";
115
115
  import "./chunk-FJZWM2ON.js";
@@ -107,7 +107,7 @@ import {
107
107
  updateProjectProfileSettings,
108
108
  usageOnLimit,
109
109
  writeViewerContext
110
- } from "./chunk-E52SQENB.js";
110
+ } from "./chunk-FZKAAAEB.js";
111
111
  import "./chunk-77WWLBCI.js";
112
112
  import "./chunk-4TR3HZFT.js";
113
113
  import "./chunk-WDRMZKVB.js";
@@ -1095,6 +1095,7 @@ function normalizeThread(raw) {
1095
1095
  quotaContinuedFromId: raw.quotaContinuedFromId ?? null,
1096
1096
  accountId: raw.accountId === null ? null : typeof raw.accountId === "string" && raw.accountId.trim() ? raw.accountId.trim() : void 0,
1097
1097
  archivedAt: typeof raw.archivedAt === "string" && raw.archivedAt.trim() ? raw.archivedAt.trim() : void 0,
1098
+ ephemeralAutomationId: typeof raw.ephemeralAutomationId === "string" && raw.ephemeralAutomationId.trim() ? raw.ephemeralAutomationId.trim() : void 0,
1098
1099
  compactedMessages: Array.isArray(raw.compactedMessages) ? raw.compactedMessages : void 0
1099
1100
  };
1100
1101
  }
@@ -1283,6 +1284,7 @@ function updateThread(id, patch) {
1283
1284
  } else {
1284
1285
  delete next.archivedAt;
1285
1286
  }
1287
+ if (!next.ephemeralAutomationId?.trim()) delete next.ephemeralAutomationId;
1286
1288
  writeThread(next);
1287
1289
  return next;
1288
1290
  }
@@ -1,7 +1,7 @@
1
1
  import {
2
2
  DEFAULT_ABLETIME_HOST,
3
3
  normalizeAbleTimeHost
4
- } from "./chunk-7ADEYEMH.js";
4
+ } from "./chunk-V76MQ7MH.js";
5
5
  import {
6
6
  httpFetch
7
7
  } from "./chunk-JAT3JFOS.js";
@@ -10,7 +10,7 @@ import {
10
10
  getAbleTimeHost,
11
11
  loadAppSettings,
12
12
  saveAbleTimeConnection
13
- } from "./chunk-E52SQENB.js";
13
+ } from "./chunk-FZKAAAEB.js";
14
14
 
15
15
  // src/integrations/abletime-oauth.ts
16
16
  import { createHash, randomBytes } from "crypto";
@@ -280,7 +280,7 @@ async function startAbleTimeOAuth(opts) {
280
280
  persistAbleTimeTokens(data, { host });
281
281
  const token = data.access_token.trim();
282
282
  try {
283
- const { getAbleTimeOrientation } = await import("./abletime-KWOBUL46.js");
283
+ const { getAbleTimeOrientation } = await import("./abletime-ICW6Q2AB.js");
284
284
  const orientation = await getAbleTimeOrientation({ token, host });
285
285
  return saveAbleTimeConnection({
286
286
  accessToken: token,
@@ -6,7 +6,7 @@ import {
6
6
  import {
7
7
  getAbleTimeHost,
8
8
  isAbleTimeConnected
9
- } from "./chunk-GCHSJCCX.js";
9
+ } from "./chunk-IFU4W4C4.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-S4AXA4WR.js").then((m) => m.ensureAbleTimeAccessToken());
158
+ const rawToken = opts?.token ?? await import("./abletime-oauth-P3KPPJE4.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-S4AXA4WR.js").then((m) => m.ensureAbleTimeAccessToken());
229
+ const rawToken = opts?.token ?? await import("./abletime-oauth-P3KPPJE4.js").then((m) => m.ensureAbleTimeAccessToken());
230
230
  if (rawToken && ableTimeUsesRest(rawToken)) {
231
- const { callAbleTimeRestTool } = await import("./abletime-rest-ORBELZQO.js");
231
+ const { callAbleTimeRestTool } = await import("./abletime-rest-DQ3PNKXP.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-ORBELZQO.js");
247
+ const { callAbleTimeRestTool } = await import("./abletime-rest-DQ3PNKXP.js");
248
248
  return callAbleTimeRestTool(name, args, { ...opts, token: rawToken });
249
249
  }
250
250
  throw err instanceof Error ? new Error(rewriteAbleTimeError(err.message)) : err;
@@ -5,7 +5,7 @@ import {
5
5
  ensureGhPreferOrigin,
6
6
  resolveGithubRepoSlug,
7
7
  resolveRepoRoot
8
- } from "./chunk-A46CIARU.js";
8
+ } from "./chunk-PNLGWAYE.js";
9
9
  import {
10
10
  ATTACHMENTS_DIR,
11
11
  attachmentsGitignoreBody
@@ -22,7 +22,7 @@ import {
22
22
  resolveThreadDefaults,
23
23
  resolveViewerProfile,
24
24
  resolveViewerProfileForRepo
25
- } from "./chunk-GCHSJCCX.js";
25
+ } from "./chunk-IFU4W4C4.js";
26
26
  import {
27
27
  allocateTeamName,
28
28
  createEmptyThread,
@@ -31,7 +31,7 @@ import {
31
31
  teamSlugFromName,
32
32
  updateThread,
33
33
  writeThread
34
- } from "./chunk-HOLB6ZFZ.js";
34
+ } from "./chunk-XMHMVEIY.js";
35
35
  import {
36
36
  appDataDir,
37
37
  globalAgentCwd,
@@ -354,7 +354,7 @@ var COORDINATOR_TOOL_PLAYBOOK = [
354
354
  "- 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_projects (this cwd is not a project). update_viewer_context requires confirmed=true after ask_user. Never write context unprompted.",
355
355
  "- list_env / set_env / delete_env \u2014 Settings \u2192 Environment. scope=project requires repoPath from list_projects and stores the key under that project prefix (the project name, uppercased, plus _). APPLE_ID for sideboard is SIDEBOARD_APPLE_ID. scope=account is shared by every project and is not prefixed. list_env returns names only.",
356
356
  "- set_caffeinate \u2014 keep this Mac awake across turns (macOS caffeinate). Turn on for phone remote / 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.",
357
- "- list_schedules / create_schedule / update_schedule / delete_schedule / run_schedule \u2014 local jobs that send a prompt to a chat (chatId or self) or start a new Global chat (omit chatId). One-shot `at`, interval `every` (15m/1h/6h/1d), or 5-field `cron`. Recurring jobs without chatId open a new chat each run. Worktree agents have the same tools (`chatId=self` continues that coding chat). Jobs fire only while Sideboard.app is running; sleep skips until wake. Creating or enabling a future job turns on Settings \u2192 Advanced \u2192 Caffeinate while schedules are enabled (or call set_caffeinate).",
357
+ "- list_schedules / create_schedule / update_schedule / delete_schedule / run_schedule \u2014 automations that send a prompt to a chat (chatId or self) or start a new Global chat (omit chatId). One-shot `at`, interval `every` (15m/1h/6h/1d), or 5-field `cron`. Recurring jobs without chatId open a new chat each run and archive it when that run finishes (History keeps the latest run for that automation). Worktree agents have the same tools (`chatId=self` continues that coding chat). Jobs fire only while Sideboard.app is running; sleep skips until wake. Creating or enabling a future job turns on Settings \u2192 Advanced \u2192 Caffeinate while automations are enabled (or call set_caffeinate). The desktop lists them in the sidebar after Board.",
358
358
  "Projects:",
359
359
  "- add_project / remove_project \u2014 register or unregister a git repo",
360
360
  "Workspaces and chats:",
@@ -3,13 +3,13 @@
3
3
  import {
4
4
  abletimeRestUrl,
5
5
  textFromAbleTimeDoc
6
- } from "./chunk-VZAJVX36.js";
6
+ } from "./chunk-HHPTGIKS.js";
7
7
  import {
8
8
  assertAbleTimeCredential,
9
9
  callAbleTimeTool,
10
10
  normalizeAbleTimeHost,
11
11
  rewriteAbleTimeError
12
- } from "./chunk-7SCVGGF6.js";
12
+ } from "./chunk-5OQONGHO.js";
13
13
  import {
14
14
  httpFetch
15
15
  } from "./chunk-2GPQZZLY.js";
@@ -22,7 +22,7 @@ import {
22
22
  getAbleTimeHost,
23
23
  isAbleTimeConnected,
24
24
  saveAbleTimeConnection
25
- } from "./chunk-GCHSJCCX.js";
25
+ } from "./chunk-IFU4W4C4.js";
26
26
 
27
27
  // src/integrations/issue-attachments.ts
28
28
  import { existsSync, mkdirSync, writeFileSync } from "fs";
@@ -551,9 +551,12 @@ function issueAttachmentForAbleTimeTask(task) {
551
551
  ].filter(Boolean).join("\n")
552
552
  };
553
553
  }
554
+ function ableTimeStateIsClosed(state) {
555
+ const value = (state ?? "").trim().toLowerCase();
556
+ return Boolean(value && CLOSED_STATES.has(value));
557
+ }
554
558
  function isOpenTask(task) {
555
- const state = (task.state ?? "").toLowerCase();
556
- return !state || !CLOSED_STATES.has(state);
559
+ return !ableTimeStateIsClosed(task.state);
557
560
  }
558
561
  async function getAbleTimeOrientation(opts) {
559
562
  const raw = await callAbleTimeTool("orientation", {}, opts);
@@ -849,6 +852,7 @@ export {
849
852
  mapAbleTimeTask,
850
853
  toAbleTimeIssueInfo,
851
854
  issueAttachmentForAbleTimeTask,
855
+ ableTimeStateIsClosed,
852
856
  getAbleTimeOrientation,
853
857
  listAbleTimeProjects,
854
858
  listAbleTimeTasks,