@sideboard-ai/core 0.1.326 → 0.1.327
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-RYYFGKMU.js → abletime-NW4PJGHN.js} +4 -5
- package/dist/{abletime-RDHYSZL2.js → abletime-OW7LTFQD.js} +4 -5
- package/dist/{abletime-oauth-OYGS2DAU.js → abletime-oauth-KWQQRHOQ.js} +3 -4
- package/dist/{abletime-oauth-QR2QDVMK.js → abletime-oauth-TPR2QDRI.js} +3 -4
- package/dist/{abletime-rest-QDPTWNS4.js → abletime-rest-5DCWN3P4.js} +3 -4
- package/dist/{abletime-rest-BKYKNPTC.js → abletime-rest-UJ6SXDBN.js} +3 -4
- package/dist/agents/claude-runner.cjs +11 -0
- package/dist/agents/claude-runner.js +7 -1
- package/dist/{agents-QO7GKBYT.js → agents-IYBY3JT5.js} +8 -9
- package/dist/{agents-HANWZNI6.js → agents-XWIPONJR.js} +8 -9
- package/dist/{app-settings-RXBH7KY4.js → app-settings-A5D364JD.js} +1 -2
- package/dist/{app-settings-TUVLZNDE.js → app-settings-SA4HX3ZQ.js} +1 -2
- package/dist/{chunk-3Q4XNYHY.js → chunk-2GEUFPQQ.js} +1 -1
- package/dist/{chunk-MAW7DIG7.js → chunk-4F7THWIO.js} +2 -2
- package/dist/{chunk-K7M7MIWL.js → chunk-4G3W23X3.js} +3 -3
- package/dist/{chunk-Q3FHTGIW.js → chunk-5Y2C7Q55.js} +441 -20
- package/dist/{chunk-TMCK5TLA.js → chunk-ATQLP22S.js} +1 -1
- package/dist/{chunk-PB6HW7SA.js → chunk-CHYUUETG.js} +3 -3
- package/dist/{chunk-QPSKQP6E.js → chunk-D446IWPP.js} +48 -3
- package/dist/{chunk-C7HUCBX7.js → chunk-DACWFN4O.js} +5 -5
- package/dist/{chunk-GP3RLZ6A.js → chunk-DEB47BII.js} +51 -487
- package/dist/{chunk-B244TJWC.js → chunk-ECY7WL6T.js} +2 -2
- package/dist/{chunk-D744HOI5.js → chunk-EJRCHCXM.js} +18 -3
- package/dist/{chunk-KXRF6RNL.js → chunk-EUIVQAPK.js} +2 -2
- package/dist/{chunk-46FECFZU.js → chunk-IXWPCOLQ.js} +8 -195
- package/dist/{chunk-75RPUXJS.js → chunk-JKHCADKB.js} +5 -5
- package/dist/{chunk-4H5MWZ6J.js → chunk-KLVW3J2B.js} +2 -2
- package/dist/{chunk-QG4CYRA3.js → chunk-MO46K6WK.js} +14 -14
- package/dist/{chunk-F2PVRF3B.js → chunk-N6ZF3XRP.js} +2 -1
- package/dist/{chunk-BBNWKL4I.js → chunk-NQGLDQYB.js} +8 -8
- package/dist/{chunk-YGVGXQA7.js → chunk-Q4UPRQOS.js} +12 -12
- package/dist/{chunk-ZUAYA57W.js → chunk-QMLDR63X.js} +2 -2
- package/dist/{chunk-KECHK3ZT.js → chunk-R2C45NHT.js} +2 -2
- package/dist/{chunk-FWVUGLBG.js → chunk-RDXODLEN.js} +4 -4
- package/dist/{chunk-XLVLMQKN.js → chunk-RZJ3QJZT.js} +11 -11
- package/dist/{chunk-JM2TGOHP.js → chunk-SB5ADEZZ.js} +5 -5
- package/dist/{chunk-SO7G6O24.js → chunk-SFXGD5KJ.js} +1 -1
- package/dist/{chunk-LRHUBGEM.js → chunk-TUH4ICHQ.js} +1 -1
- package/dist/chunk-ULWPSBAB.js +192 -0
- package/dist/{chunk-WUCAVIIP.js → chunk-UMXBH344.js} +1 -1
- package/dist/{chunk-RZVOX2MT.js → chunk-XBBZZHJY.js} +3 -3
- package/dist/{chunk-ZSHS46V5.js → chunk-Y6OHM672.js} +476 -20
- package/dist/{chunk-2EOLWHXH.js → chunk-YUHZEIVG.js} +69 -473
- package/dist/{chunk-YWQF7WAG.js → chunk-ZPBOWO64.js} +2 -2
- package/dist/{conductor-4GVTHUUB.js → conductor-CP7TW6TN.js} +7 -7
- package/dist/{conductor-TGWI6ETZ.js → conductor-D62Q2XJC.js} +6 -7
- package/dist/{coordinator-prompt-3E6SIDTM.js → coordinator-prompt-3PJLU3UH.js} +5 -6
- package/dist/{coordinator-prompt-WEYJREV6.js → coordinator-prompt-J7O7JB26.js} +5 -6
- package/dist/{global-workspace-UIEXAG2B.js → global-workspace-4CTLU2BV.js} +5 -6
- package/dist/{global-workspace-FPDZKUPF.js → global-workspace-Y3UDZYJX.js} +5 -6
- package/dist/index.cjs +507 -492
- package/dist/index.d.cts +5 -2
- package/dist/index.d.ts +5 -2
- package/dist/index.js +67 -65
- package/dist/{linear-6S7MK5YK.js → linear-CXWGH2TW.js} +2 -3
- package/dist/{linear-Z2T4KUAQ.js → linear-WLDCJ3AF.js} +2 -3
- package/dist/{linear-list-Q4M7AZO2.js → linear-list-52LEDEWO.js} +1 -1
- package/dist/{linear-list-A37WLUBO.js → linear-list-FGVN65JU.js} +1 -1
- package/dist/mcp/run-stdio.cjs +19654 -19641
- package/dist/mcp/run-stdio.js +33 -34
- package/dist/{optional-cli-CA4LL322.js → optional-cli-FN4MGB6W.js} +4 -5
- package/dist/{optional-cli-AANBL4U5.js → optional-cli-INRVBBBG.js} +3 -4
- package/dist/{orchestrator-7FVDBE7Y.js → orchestrator-EN3ZKD73.js} +12 -12
- package/dist/{orchestrator-RQXRZW7Z.js → orchestrator-W4TZBBDO.js} +11 -12
- package/dist/{thread-store-4ZN3DS2W.js → thread-store-4WE24XA2.js} +6 -2
- package/dist/{thread-store-IC4BQXDW.js → thread-store-K2ZNGUSM.js} +7 -3
- package/dist/{workspaces-LEW4UP56.js → workspaces-MM7CQYR6.js} +5 -6
- package/dist/{workspaces-QONNLHNR.js → workspaces-WYCVZ6XH.js} +5 -6
- package/dist/{worktree-KFEJAQ2H.js → worktree-JBNEMJ5Z.js} +7 -8
- package/dist/{worktree-6GIONDQO.js → worktree-NNVRGPP4.js} +4 -5
- package/package.json +1 -1
- package/dist/chunk-77WWLBCI.js +0 -50
- package/dist/chunk-KGZBYWZ3.js +0 -23
|
@@ -11,11 +11,11 @@ import {
|
|
|
11
11
|
isGlobalThread,
|
|
12
12
|
isOrchestratorThread,
|
|
13
13
|
isSlackCoordinatorThread
|
|
14
|
-
} from "./chunk-
|
|
14
|
+
} from "./chunk-Q4UPRQOS.js";
|
|
15
15
|
import {
|
|
16
16
|
mergeAgentGitAuthEnv,
|
|
17
17
|
resolveAgentGitAuthEnv
|
|
18
|
-
} from "./chunk-
|
|
18
|
+
} from "./chunk-JKHCADKB.js";
|
|
19
19
|
import {
|
|
20
20
|
ATTACHMENTS_DIR,
|
|
21
21
|
DETACHED_JOBS_DIR,
|
|
@@ -29,13 +29,6 @@ import {
|
|
|
29
29
|
ensureAgentPath,
|
|
30
30
|
run
|
|
31
31
|
} from "./chunk-YBTSZ2SW.js";
|
|
32
|
-
import {
|
|
33
|
-
assertOrchestratorCapableAgent,
|
|
34
|
-
contextTokens
|
|
35
|
-
} from "./chunk-D744HOI5.js";
|
|
36
|
-
import {
|
|
37
|
-
stripNestedElectronEnv
|
|
38
|
-
} from "./chunk-WWUABK6B.js";
|
|
39
32
|
import {
|
|
40
33
|
REVIEW_TAB_TITLE,
|
|
41
34
|
allocateTeamName,
|
|
@@ -47,7 +40,14 @@ import {
|
|
|
47
40
|
updateThread,
|
|
48
41
|
worktreeNameFromPath,
|
|
49
42
|
writeThread
|
|
50
|
-
} from "./chunk-
|
|
43
|
+
} from "./chunk-5Y2C7Q55.js";
|
|
44
|
+
import {
|
|
45
|
+
assertOrchestratorCapableAgent,
|
|
46
|
+
contextTokens
|
|
47
|
+
} from "./chunk-EJRCHCXM.js";
|
|
48
|
+
import {
|
|
49
|
+
stripNestedElectronEnv
|
|
50
|
+
} from "./chunk-WWUABK6B.js";
|
|
51
51
|
import {
|
|
52
52
|
findConventionSetup,
|
|
53
53
|
loadRepoSettings,
|
|
@@ -1682,7 +1682,7 @@ var PORT_RANGE_SIZE = 10;
|
|
|
1682
1682
|
var RECLAIM_RETRY_DELAY_MS = 40;
|
|
1683
1683
|
var RECLAIM_TRIES = 8;
|
|
1684
1684
|
async function killReclaimable(ports, worktreePath, signal) {
|
|
1685
|
-
const { killListenersOnPorts: killListenersOnPorts2, killStaleWorktreeListeners: killStaleWorktreeListeners2 } = await import("./conductor-
|
|
1685
|
+
const { killListenersOnPorts: killListenersOnPorts2, killStaleWorktreeListeners: killStaleWorktreeListeners2 } = await import("./conductor-D62Q2XJC.js");
|
|
1686
1686
|
if (worktreePath) killStaleWorktreeListeners2(ports, worktreePath, signal);
|
|
1687
1687
|
else killListenersOnPorts2(ports);
|
|
1688
1688
|
}
|
|
@@ -6,7 +6,7 @@ import {
|
|
|
6
6
|
import {
|
|
7
7
|
getAbleTimeHost,
|
|
8
8
|
isAbleTimeConnected
|
|
9
|
-
} from "./chunk-
|
|
9
|
+
} from "./chunk-EJRCHCXM.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-
|
|
158
|
+
const rawToken = opts?.token ?? await import("./abletime-oauth-TPR2QDRI.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-
|
|
229
|
+
const rawToken = opts?.token ?? await import("./abletime-oauth-TPR2QDRI.js").then((m) => m.ensureAbleTimeAccessToken());
|
|
230
230
|
if (rawToken && ableTimeUsesRest(rawToken)) {
|
|
231
|
-
const { callAbleTimeRestTool } = await import("./abletime-rest-
|
|
231
|
+
const { callAbleTimeRestTool } = await import("./abletime-rest-5DCWN3P4.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-
|
|
247
|
+
const { callAbleTimeRestTool } = await import("./abletime-rest-5DCWN3P4.js");
|
|
248
248
|
return callAbleTimeRestTool(name, args, { ...opts, token: rawToken });
|
|
249
249
|
}
|
|
250
250
|
throw err instanceof Error ? new Error(rewriteAbleTimeError(err.message)) : err;
|
|
@@ -0,0 +1,192 @@
|
|
|
1
|
+
// src/plan/ask-user.ts
|
|
2
|
+
function planQuestionsSignature(questions) {
|
|
3
|
+
return questions.map((q) => {
|
|
4
|
+
const opts = q.options.map((o) => o.label).join("");
|
|
5
|
+
return `${q.question}${opts}`;
|
|
6
|
+
}).join("");
|
|
7
|
+
}
|
|
8
|
+
function asRecord(v) {
|
|
9
|
+
return v != null && typeof v === "object" && !Array.isArray(v) ? v : null;
|
|
10
|
+
}
|
|
11
|
+
function parseOptions(raw) {
|
|
12
|
+
if (!Array.isArray(raw)) return [];
|
|
13
|
+
const out = [];
|
|
14
|
+
for (const item of raw) {
|
|
15
|
+
if (typeof item === "string" && item.trim()) {
|
|
16
|
+
out.push({ label: item.trim() });
|
|
17
|
+
continue;
|
|
18
|
+
}
|
|
19
|
+
const o = asRecord(item);
|
|
20
|
+
if (!o) continue;
|
|
21
|
+
const label = typeof o.label === "string" ? o.label.trim() : typeof o.text === "string" ? o.text.trim() : typeof o.title === "string" ? o.title.trim() : "";
|
|
22
|
+
if (!label) continue;
|
|
23
|
+
const description = typeof o.description === "string" && o.description.trim() ? o.description.trim() : void 0;
|
|
24
|
+
out.push({ label, description });
|
|
25
|
+
}
|
|
26
|
+
return out;
|
|
27
|
+
}
|
|
28
|
+
function parseOneQuestion(raw) {
|
|
29
|
+
const o = asRecord(raw);
|
|
30
|
+
if (!o) return null;
|
|
31
|
+
const question = typeof o.question === "string" ? o.question.trim() : typeof o.text === "string" ? o.text.trim() : typeof o.prompt === "string" ? o.prompt.trim() : "";
|
|
32
|
+
if (!question) return null;
|
|
33
|
+
const options = parseOptions(o.options);
|
|
34
|
+
if (options.length < 1) return null;
|
|
35
|
+
const header = typeof o.header === "string" && o.header.trim() ? o.header.trim() : void 0;
|
|
36
|
+
const multiSelect = Boolean(o.multiSelect ?? o.multi_select);
|
|
37
|
+
return { question, header, multiSelect, options };
|
|
38
|
+
}
|
|
39
|
+
function parsePlanQuestionsInput(input) {
|
|
40
|
+
const root = asRecord(input);
|
|
41
|
+
if (!root) return [];
|
|
42
|
+
const list = Array.isArray(root.questions) ? root.questions : Array.isArray(root.question) ? root.question : root.question || root.prompt ? [root] : [];
|
|
43
|
+
const out = [];
|
|
44
|
+
for (const item of list) {
|
|
45
|
+
const q = parseOneQuestion(item);
|
|
46
|
+
if (q) out.push(q);
|
|
47
|
+
}
|
|
48
|
+
return out;
|
|
49
|
+
}
|
|
50
|
+
var ASK_USER_TOOL_RE = /^(AskUserQuestion|ask_user|mcp__sideboard__ask_user)$/i;
|
|
51
|
+
function isAskUserToolName(name) {
|
|
52
|
+
if (!name) return false;
|
|
53
|
+
const base = name.replace(/^mcp__sideboard__/i, "");
|
|
54
|
+
return ASK_USER_TOOL_RE.test(name) || /^ask_user$/i.test(base);
|
|
55
|
+
}
|
|
56
|
+
function lastTopLevelToolIsAskUser(parts) {
|
|
57
|
+
if (!parts?.length) return false;
|
|
58
|
+
for (let i = parts.length - 1; i >= 0; i--) {
|
|
59
|
+
const part = parts[i];
|
|
60
|
+
if (part.type === "tool" && !part.parentId) {
|
|
61
|
+
return isAskUserToolName(part.name);
|
|
62
|
+
}
|
|
63
|
+
}
|
|
64
|
+
return false;
|
|
65
|
+
}
|
|
66
|
+
function hasTopLevelTool(parts) {
|
|
67
|
+
return Boolean(parts?.some((part) => part.type === "tool" && !part.parentId));
|
|
68
|
+
}
|
|
69
|
+
function questionsFromToolPart(part) {
|
|
70
|
+
const fromInput = parsePlanQuestionsInput(part.input);
|
|
71
|
+
if (fromInput.length) return fromInput;
|
|
72
|
+
const raw = part.result?.trim();
|
|
73
|
+
if (!raw || !raw.startsWith("{")) return [];
|
|
74
|
+
try {
|
|
75
|
+
return parsePlanQuestionsInput(JSON.parse(raw));
|
|
76
|
+
} catch {
|
|
77
|
+
return [];
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
function extractPendingPlanQuestions(parts) {
|
|
81
|
+
if (!parts?.length) return null;
|
|
82
|
+
for (let i = parts.length - 1; i >= 0; i--) {
|
|
83
|
+
const p = parts[i];
|
|
84
|
+
if (p.type !== "tool" || !isAskUserToolName(p.name)) continue;
|
|
85
|
+
const questions = questionsFromToolPart(p);
|
|
86
|
+
if (!questions.length) continue;
|
|
87
|
+
return {
|
|
88
|
+
id: p.id || `ask-${i}`,
|
|
89
|
+
signature: planQuestionsSignature(questions),
|
|
90
|
+
questions,
|
|
91
|
+
source: p.name || "ask_user"
|
|
92
|
+
};
|
|
93
|
+
}
|
|
94
|
+
return null;
|
|
95
|
+
}
|
|
96
|
+
function pendingFromAskBlock(block, dismissedQuestionSignature) {
|
|
97
|
+
if (!block || block.source !== "ask_user" || !block.questions?.length) return null;
|
|
98
|
+
const dismissed = dismissedQuestionSignature?.trim();
|
|
99
|
+
if (dismissed && (!block.questionSignature || block.questionSignature === dismissed)) {
|
|
100
|
+
return null;
|
|
101
|
+
}
|
|
102
|
+
const signature = block.questionSignature?.trim() || planQuestionsSignature(block.questions);
|
|
103
|
+
return {
|
|
104
|
+
id: `ask-block:${signature}`,
|
|
105
|
+
signature,
|
|
106
|
+
questions: block.questions,
|
|
107
|
+
source: "ask_user"
|
|
108
|
+
};
|
|
109
|
+
}
|
|
110
|
+
function askBlockStillWaiting(block, messages) {
|
|
111
|
+
if (!messages?.length) return Boolean(block?.at);
|
|
112
|
+
const askedAt = block?.at;
|
|
113
|
+
if (!askedAt) return false;
|
|
114
|
+
for (let i = messages.length - 1; i >= 0; i--) {
|
|
115
|
+
const message = messages[i];
|
|
116
|
+
if (message.role !== "user" || message.origin === "continue") continue;
|
|
117
|
+
if (!message.ts) return true;
|
|
118
|
+
return askedAt > message.ts;
|
|
119
|
+
}
|
|
120
|
+
return true;
|
|
121
|
+
}
|
|
122
|
+
function latestPendingPlanQuestions(input) {
|
|
123
|
+
if (input.userReplied) return null;
|
|
124
|
+
const fromBlock = () => pendingFromAskBlock(input.agentBlock, input.dismissedQuestionSignature);
|
|
125
|
+
if (lastTopLevelToolIsAskUser(input.liveParts)) {
|
|
126
|
+
return extractPendingPlanQuestions(input.liveParts) ?? fromBlock();
|
|
127
|
+
}
|
|
128
|
+
const last = input.messages[input.messages.length - 1];
|
|
129
|
+
if (last?.role === "agent" && lastTopLevelToolIsAskUser(last.parts)) {
|
|
130
|
+
return extractPendingPlanQuestions(last.parts) ?? fromBlock();
|
|
131
|
+
}
|
|
132
|
+
if (hasTopLevelTool(input.liveParts) || last?.role === "agent" && hasTopLevelTool(last.parts)) {
|
|
133
|
+
return null;
|
|
134
|
+
}
|
|
135
|
+
if (input.status === "running" || input.status === "queued") return null;
|
|
136
|
+
const stamped = fromBlock();
|
|
137
|
+
if (stamped && askBlockStillWaiting(input.agentBlock, input.messages)) {
|
|
138
|
+
return stamped;
|
|
139
|
+
}
|
|
140
|
+
return null;
|
|
141
|
+
}
|
|
142
|
+
var PLAN_QUESTION_ANSWERS_PREFIX = "Answers to your questions:";
|
|
143
|
+
function isPlanQuestionAnswersMessage(text) {
|
|
144
|
+
return text.startsWith(PLAN_QUESTION_ANSWERS_PREFIX);
|
|
145
|
+
}
|
|
146
|
+
function formatPlanQuestionAnswers(questions, answers) {
|
|
147
|
+
const lines = [PLAN_QUESTION_ANSWERS_PREFIX, ""];
|
|
148
|
+
for (let i = 0; i < questions.length; i++) {
|
|
149
|
+
const q = questions[i];
|
|
150
|
+
const a = answers.find((x) => x.questionIndex === i);
|
|
151
|
+
const header = q.header ? `**${q.header}** \u2014 ` : "";
|
|
152
|
+
const parts = [];
|
|
153
|
+
if (a?.selected.length) parts.push(a.selected.join(", "));
|
|
154
|
+
if (a?.other?.trim()) parts.push(a.other.trim());
|
|
155
|
+
const body = parts.length ? parts.join(" \xB7 ") : "(no answer)";
|
|
156
|
+
lines.push(`${i + 1}. ${header}${q.question} `);
|
|
157
|
+
lines.push(` \u2192 ${body}`);
|
|
158
|
+
}
|
|
159
|
+
return lines.join("\n");
|
|
160
|
+
}
|
|
161
|
+
function formatPlanQuestionsForChat(questions) {
|
|
162
|
+
const lines = ["### Questions for you", ""];
|
|
163
|
+
for (let i = 0; i < questions.length; i++) {
|
|
164
|
+
const q = questions[i];
|
|
165
|
+
const header = q.header ? `**${q.header}** \u2014 ` : "";
|
|
166
|
+
lines.push(`${i + 1}. ${header}${q.question}`);
|
|
167
|
+
for (let oi = 0; oi < q.options.length; oi++) {
|
|
168
|
+
const opt = q.options[oi];
|
|
169
|
+
const desc = opt.description?.trim();
|
|
170
|
+
lines.push(
|
|
171
|
+
desc ? ` - **${opt.label}** \u2014 ${desc}` : ` - **${opt.label}**`
|
|
172
|
+
);
|
|
173
|
+
}
|
|
174
|
+
lines.push("");
|
|
175
|
+
}
|
|
176
|
+
lines.push("_Answer in the composer below._");
|
|
177
|
+
return lines.join("\n").trimEnd();
|
|
178
|
+
}
|
|
179
|
+
|
|
180
|
+
export {
|
|
181
|
+
planQuestionsSignature,
|
|
182
|
+
parsePlanQuestionsInput,
|
|
183
|
+
isAskUserToolName,
|
|
184
|
+
lastTopLevelToolIsAskUser,
|
|
185
|
+
extractPendingPlanQuestions,
|
|
186
|
+
askBlockStillWaiting,
|
|
187
|
+
latestPendingPlanQuestions,
|
|
188
|
+
PLAN_QUESTION_ANSWERS_PREFIX,
|
|
189
|
+
isPlanQuestionAnswersMessage,
|
|
190
|
+
formatPlanQuestionAnswers,
|
|
191
|
+
formatPlanQuestionsForChat
|
|
192
|
+
};
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
var LIST_TIMEOUT_MS = 15e3;
|
|
6
6
|
async function listAssignedLinearIssues(opts) {
|
|
7
7
|
try {
|
|
8
|
-
const { listLinearIssuesDirect } = await import("./linear-
|
|
8
|
+
const { listLinearIssuesDirect } = await import("./linear-CXWGH2TW.js");
|
|
9
9
|
const listed = listLinearIssuesDirect({ limit: 50 }).catch(() => []);
|
|
10
10
|
let timer;
|
|
11
11
|
try {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import {
|
|
2
2
|
DEFAULT_ABLETIME_HOST,
|
|
3
3
|
normalizeAbleTimeHost
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-DACWFN4O.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-
|
|
13
|
+
} from "./chunk-D446IWPP.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-
|
|
283
|
+
const { getAbleTimeOrientation } = await import("./abletime-OW7LTFQD.js");
|
|
284
284
|
const orientation = await getAbleTimeOrientation({ token, host });
|
|
285
285
|
return saveAbleTimeConnection({
|
|
286
286
|
accessToken: token,
|