@sideboard-ai/core 0.1.326 → 0.1.328
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-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-XLVLMQKN.js → chunk-EYDLXVED.js} +40 -25
- 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-NJV5YEKI.js +194 -0
- 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-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-WUCAVIIP.js → chunk-UMXBH344.js} +1 -1
- package/dist/{chunk-GP3RLZ6A.js → chunk-WD222BVP.js} +109 -491
- package/dist/{chunk-46FECFZU.js → chunk-X3XTO45Y.js} +39 -196
- package/dist/{chunk-RZVOX2MT.js → chunk-XBBZZHJY.js} +3 -3
- package/dist/{chunk-2EOLWHXH.js → chunk-XOMVOBPU.js} +127 -477
- package/dist/{chunk-ZSHS46V5.js → chunk-Y6OHM672.js} +476 -20
- package/dist/{chunk-YWQF7WAG.js → chunk-ZPBOWO64.js} +2 -2
- package/dist/{conductor-4GVTHUUB.js → conductor-G6GH5ZMU.js} +7 -7
- package/dist/{conductor-TGWI6ETZ.js → conductor-U5LGJZUJ.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 +605 -508
- package/dist/index.d.cts +23 -11
- package/dist/index.d.ts +23 -11
- 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 +19762 -19682
- 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-RQXRZW7Z.js → orchestrator-3F53AZEN.js} +11 -12
- package/dist/{orchestrator-7FVDBE7Y.js → orchestrator-YY2JUYKD.js} +12 -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
|
@@ -8,11 +8,11 @@ import {
|
|
|
8
8
|
isGlobalThread,
|
|
9
9
|
isOrchestratorThread,
|
|
10
10
|
isSlackCoordinatorThread
|
|
11
|
-
} from "./chunk-
|
|
11
|
+
} from "./chunk-RDXODLEN.js";
|
|
12
12
|
import {
|
|
13
13
|
mergeAgentGitAuthEnv,
|
|
14
14
|
resolveAgentGitAuthEnv
|
|
15
|
-
} from "./chunk-
|
|
15
|
+
} from "./chunk-R2C45NHT.js";
|
|
16
16
|
import {
|
|
17
17
|
REVIEW_TAB_TITLE,
|
|
18
18
|
allocateTeamName,
|
|
@@ -24,10 +24,15 @@ import {
|
|
|
24
24
|
updateThread,
|
|
25
25
|
worktreeNameFromPath,
|
|
26
26
|
writeThread
|
|
27
|
-
} from "./chunk-
|
|
27
|
+
} from "./chunk-Y6OHM672.js";
|
|
28
28
|
import {
|
|
29
29
|
ensureWorktreeSideboardIgnored
|
|
30
30
|
} from "./chunk-QKHEVSB5.js";
|
|
31
|
+
import {
|
|
32
|
+
extractPendingPlanQuestions,
|
|
33
|
+
isAskUserToolName,
|
|
34
|
+
lastTopLevelToolIsAskUser
|
|
35
|
+
} from "./chunk-NJV5YEKI.js";
|
|
31
36
|
import {
|
|
32
37
|
clipToolResultForStore
|
|
33
38
|
} from "./chunk-OPXEJJBM.js";
|
|
@@ -44,7 +49,7 @@ import {
|
|
|
44
49
|
import {
|
|
45
50
|
assertOrchestratorCapableAgent,
|
|
46
51
|
contextTokens
|
|
47
|
-
} from "./chunk-
|
|
52
|
+
} from "./chunk-D446IWPP.js";
|
|
48
53
|
import {
|
|
49
54
|
stripNestedElectronEnv
|
|
50
55
|
} from "./chunk-4TR3HZFT.js";
|
|
@@ -1212,185 +1217,6 @@ function jobTreeAlive(pid) {
|
|
|
1212
1217
|
return jobAlive(pid) || processGroupAlive(pid);
|
|
1213
1218
|
}
|
|
1214
1219
|
|
|
1215
|
-
// src/plan/ask-user.ts
|
|
1216
|
-
function planQuestionsSignature(questions) {
|
|
1217
|
-
return questions.map((q) => {
|
|
1218
|
-
const opts = q.options.map((o) => o.label).join("");
|
|
1219
|
-
return `${q.question}${opts}`;
|
|
1220
|
-
}).join("");
|
|
1221
|
-
}
|
|
1222
|
-
function asRecord(v) {
|
|
1223
|
-
return v != null && typeof v === "object" && !Array.isArray(v) ? v : null;
|
|
1224
|
-
}
|
|
1225
|
-
function parseOptions(raw) {
|
|
1226
|
-
if (!Array.isArray(raw)) return [];
|
|
1227
|
-
const out = [];
|
|
1228
|
-
for (const item of raw) {
|
|
1229
|
-
if (typeof item === "string" && item.trim()) {
|
|
1230
|
-
out.push({ label: item.trim() });
|
|
1231
|
-
continue;
|
|
1232
|
-
}
|
|
1233
|
-
const o = asRecord(item);
|
|
1234
|
-
if (!o) continue;
|
|
1235
|
-
const label = typeof o.label === "string" ? o.label.trim() : typeof o.text === "string" ? o.text.trim() : typeof o.title === "string" ? o.title.trim() : "";
|
|
1236
|
-
if (!label) continue;
|
|
1237
|
-
const description = typeof o.description === "string" && o.description.trim() ? o.description.trim() : void 0;
|
|
1238
|
-
out.push({ label, description });
|
|
1239
|
-
}
|
|
1240
|
-
return out;
|
|
1241
|
-
}
|
|
1242
|
-
function parseOneQuestion(raw) {
|
|
1243
|
-
const o = asRecord(raw);
|
|
1244
|
-
if (!o) return null;
|
|
1245
|
-
const question = typeof o.question === "string" ? o.question.trim() : typeof o.text === "string" ? o.text.trim() : typeof o.prompt === "string" ? o.prompt.trim() : "";
|
|
1246
|
-
if (!question) return null;
|
|
1247
|
-
const options = parseOptions(o.options);
|
|
1248
|
-
if (options.length < 1) return null;
|
|
1249
|
-
const header = typeof o.header === "string" && o.header.trim() ? o.header.trim() : void 0;
|
|
1250
|
-
const multiSelect = Boolean(o.multiSelect ?? o.multi_select);
|
|
1251
|
-
return { question, header, multiSelect, options };
|
|
1252
|
-
}
|
|
1253
|
-
function parsePlanQuestionsInput(input) {
|
|
1254
|
-
const root = asRecord(input);
|
|
1255
|
-
if (!root) return [];
|
|
1256
|
-
const list = Array.isArray(root.questions) ? root.questions : Array.isArray(root.question) ? root.question : root.question || root.prompt ? [root] : [];
|
|
1257
|
-
const out = [];
|
|
1258
|
-
for (const item of list) {
|
|
1259
|
-
const q = parseOneQuestion(item);
|
|
1260
|
-
if (q) out.push(q);
|
|
1261
|
-
}
|
|
1262
|
-
return out;
|
|
1263
|
-
}
|
|
1264
|
-
var ASK_USER_TOOL_RE = /^(AskUserQuestion|ask_user|mcp__sideboard__ask_user)$/i;
|
|
1265
|
-
function isAskUserToolName(name) {
|
|
1266
|
-
if (!name) return false;
|
|
1267
|
-
const base = name.replace(/^mcp__sideboard__/i, "");
|
|
1268
|
-
return ASK_USER_TOOL_RE.test(name) || /^ask_user$/i.test(base);
|
|
1269
|
-
}
|
|
1270
|
-
function lastTopLevelToolIsAskUser(parts) {
|
|
1271
|
-
if (!parts?.length) return false;
|
|
1272
|
-
for (let i = parts.length - 1; i >= 0; i--) {
|
|
1273
|
-
const part = parts[i];
|
|
1274
|
-
if (part.type === "tool" && !part.parentId) {
|
|
1275
|
-
return isAskUserToolName(part.name);
|
|
1276
|
-
}
|
|
1277
|
-
}
|
|
1278
|
-
return false;
|
|
1279
|
-
}
|
|
1280
|
-
function hasTopLevelTool(parts) {
|
|
1281
|
-
return Boolean(parts?.some((part) => part.type === "tool" && !part.parentId));
|
|
1282
|
-
}
|
|
1283
|
-
function questionsFromToolPart(part) {
|
|
1284
|
-
const fromInput = parsePlanQuestionsInput(part.input);
|
|
1285
|
-
if (fromInput.length) return fromInput;
|
|
1286
|
-
const raw = part.result?.trim();
|
|
1287
|
-
if (!raw || !raw.startsWith("{")) return [];
|
|
1288
|
-
try {
|
|
1289
|
-
return parsePlanQuestionsInput(JSON.parse(raw));
|
|
1290
|
-
} catch {
|
|
1291
|
-
return [];
|
|
1292
|
-
}
|
|
1293
|
-
}
|
|
1294
|
-
function extractPendingPlanQuestions(parts) {
|
|
1295
|
-
if (!parts?.length) return null;
|
|
1296
|
-
for (let i = parts.length - 1; i >= 0; i--) {
|
|
1297
|
-
const p = parts[i];
|
|
1298
|
-
if (p.type !== "tool" || !isAskUserToolName(p.name)) continue;
|
|
1299
|
-
const questions = questionsFromToolPart(p);
|
|
1300
|
-
if (!questions.length) continue;
|
|
1301
|
-
return {
|
|
1302
|
-
id: p.id || `ask-${i}`,
|
|
1303
|
-
signature: planQuestionsSignature(questions),
|
|
1304
|
-
questions,
|
|
1305
|
-
source: p.name || "ask_user"
|
|
1306
|
-
};
|
|
1307
|
-
}
|
|
1308
|
-
return null;
|
|
1309
|
-
}
|
|
1310
|
-
function pendingFromAskBlock(block, dismissedQuestionSignature) {
|
|
1311
|
-
if (!block || block.source !== "ask_user" || !block.questions?.length) return null;
|
|
1312
|
-
const dismissed = dismissedQuestionSignature?.trim();
|
|
1313
|
-
if (dismissed && (!block.questionSignature || block.questionSignature === dismissed)) {
|
|
1314
|
-
return null;
|
|
1315
|
-
}
|
|
1316
|
-
const signature = block.questionSignature?.trim() || planQuestionsSignature(block.questions);
|
|
1317
|
-
return {
|
|
1318
|
-
id: `ask-block:${signature}`,
|
|
1319
|
-
signature,
|
|
1320
|
-
questions: block.questions,
|
|
1321
|
-
source: "ask_user"
|
|
1322
|
-
};
|
|
1323
|
-
}
|
|
1324
|
-
function askBlockStillWaiting(block, messages) {
|
|
1325
|
-
if (!messages?.length) return Boolean(block?.at);
|
|
1326
|
-
const askedAt = block?.at;
|
|
1327
|
-
if (!askedAt) return false;
|
|
1328
|
-
for (let i = messages.length - 1; i >= 0; i--) {
|
|
1329
|
-
const message = messages[i];
|
|
1330
|
-
if (message.role !== "user" || message.origin === "continue") continue;
|
|
1331
|
-
if (!message.ts) return true;
|
|
1332
|
-
return askedAt > message.ts;
|
|
1333
|
-
}
|
|
1334
|
-
return true;
|
|
1335
|
-
}
|
|
1336
|
-
function latestPendingPlanQuestions(input) {
|
|
1337
|
-
if (input.userReplied) return null;
|
|
1338
|
-
const fromBlock = () => pendingFromAskBlock(input.agentBlock, input.dismissedQuestionSignature);
|
|
1339
|
-
if (lastTopLevelToolIsAskUser(input.liveParts)) {
|
|
1340
|
-
return extractPendingPlanQuestions(input.liveParts) ?? fromBlock();
|
|
1341
|
-
}
|
|
1342
|
-
const last = input.messages[input.messages.length - 1];
|
|
1343
|
-
if (last?.role === "agent" && lastTopLevelToolIsAskUser(last.parts)) {
|
|
1344
|
-
return extractPendingPlanQuestions(last.parts) ?? fromBlock();
|
|
1345
|
-
}
|
|
1346
|
-
if (hasTopLevelTool(input.liveParts) || last?.role === "agent" && hasTopLevelTool(last.parts)) {
|
|
1347
|
-
return null;
|
|
1348
|
-
}
|
|
1349
|
-
if (input.status === "running" || input.status === "queued") return null;
|
|
1350
|
-
const stamped = fromBlock();
|
|
1351
|
-
if (stamped && askBlockStillWaiting(input.agentBlock, input.messages)) {
|
|
1352
|
-
return stamped;
|
|
1353
|
-
}
|
|
1354
|
-
return null;
|
|
1355
|
-
}
|
|
1356
|
-
var PLAN_QUESTION_ANSWERS_PREFIX = "Answers to your questions:";
|
|
1357
|
-
function isPlanQuestionAnswersMessage(text) {
|
|
1358
|
-
return text.startsWith(PLAN_QUESTION_ANSWERS_PREFIX);
|
|
1359
|
-
}
|
|
1360
|
-
function formatPlanQuestionAnswers(questions, answers) {
|
|
1361
|
-
const lines = [PLAN_QUESTION_ANSWERS_PREFIX, ""];
|
|
1362
|
-
for (let i = 0; i < questions.length; i++) {
|
|
1363
|
-
const q = questions[i];
|
|
1364
|
-
const a = answers.find((x) => x.questionIndex === i);
|
|
1365
|
-
const header = q.header ? `**${q.header}** \u2014 ` : "";
|
|
1366
|
-
const parts = [];
|
|
1367
|
-
if (a?.selected.length) parts.push(a.selected.join(", "));
|
|
1368
|
-
if (a?.other?.trim()) parts.push(a.other.trim());
|
|
1369
|
-
const body = parts.length ? parts.join(" \xB7 ") : "(no answer)";
|
|
1370
|
-
lines.push(`${i + 1}. ${header}${q.question} `);
|
|
1371
|
-
lines.push(` \u2192 ${body}`);
|
|
1372
|
-
}
|
|
1373
|
-
return lines.join("\n");
|
|
1374
|
-
}
|
|
1375
|
-
function formatPlanQuestionsForChat(questions) {
|
|
1376
|
-
const lines = ["### Questions for you", ""];
|
|
1377
|
-
for (let i = 0; i < questions.length; i++) {
|
|
1378
|
-
const q = questions[i];
|
|
1379
|
-
const header = q.header ? `**${q.header}** \u2014 ` : "";
|
|
1380
|
-
lines.push(`${i + 1}. ${header}${q.question}`);
|
|
1381
|
-
for (let oi = 0; oi < q.options.length; oi++) {
|
|
1382
|
-
const opt = q.options[oi];
|
|
1383
|
-
const desc = opt.description?.trim();
|
|
1384
|
-
lines.push(
|
|
1385
|
-
desc ? ` - **${opt.label}** \u2014 ${desc}` : ` - **${opt.label}**`
|
|
1386
|
-
);
|
|
1387
|
-
}
|
|
1388
|
-
lines.push("");
|
|
1389
|
-
}
|
|
1390
|
-
lines.push("_Answer in the composer below._");
|
|
1391
|
-
return lines.join("\n").trimEnd();
|
|
1392
|
-
}
|
|
1393
|
-
|
|
1394
1220
|
// src/orchestrator/task-state.ts
|
|
1395
1221
|
function isTerminalTaskState(state) {
|
|
1396
1222
|
return state !== "submitted" && state !== "working";
|
|
@@ -1404,6 +1230,33 @@ function needsCoordinatorAction(state) {
|
|
|
1404
1230
|
function endedOnAskUser(parts) {
|
|
1405
1231
|
return lastTopLevelToolIsAskUser(parts);
|
|
1406
1232
|
}
|
|
1233
|
+
function turnWaitingOnAskUser(parts, dismissedQuestionSignature) {
|
|
1234
|
+
if (!parts?.length) return false;
|
|
1235
|
+
let ask = null;
|
|
1236
|
+
for (let i = parts.length - 1; i >= 0; i--) {
|
|
1237
|
+
const part = parts[i];
|
|
1238
|
+
if (part.type === "tool" && !part.parentId && isAskUserToolName(part.name)) {
|
|
1239
|
+
ask = part;
|
|
1240
|
+
break;
|
|
1241
|
+
}
|
|
1242
|
+
}
|
|
1243
|
+
if (!ask) return false;
|
|
1244
|
+
const dismissed = dismissedQuestionSignature?.trim();
|
|
1245
|
+
if (!dismissed) return true;
|
|
1246
|
+
const pending = extractPendingPlanQuestions([ask]);
|
|
1247
|
+
if (!pending?.signature) return false;
|
|
1248
|
+
return pending.signature !== dismissed;
|
|
1249
|
+
}
|
|
1250
|
+
function userRepliedAfterAgent(messages, lastAgent) {
|
|
1251
|
+
if (!messages || !lastAgent) return false;
|
|
1252
|
+
const index = messages.lastIndexOf(lastAgent);
|
|
1253
|
+
if (index < 0) return false;
|
|
1254
|
+
for (let i = index + 1; i < messages.length; i++) {
|
|
1255
|
+
const message = messages[i];
|
|
1256
|
+
if (message.role === "user" && message.origin !== "continue") return true;
|
|
1257
|
+
}
|
|
1258
|
+
return false;
|
|
1259
|
+
}
|
|
1407
1260
|
function deriveTaskState(input) {
|
|
1408
1261
|
if (input.stillRunning) {
|
|
1409
1262
|
return input.status === "queued" ? "submitted" : "working";
|
|
@@ -1415,7 +1268,7 @@ function deriveTaskState(input) {
|
|
|
1415
1268
|
case "stopped":
|
|
1416
1269
|
return "canceled";
|
|
1417
1270
|
default:
|
|
1418
|
-
return
|
|
1271
|
+
return !input.userAnswered && turnWaitingOnAskUser(input.lastAgentParts, input.dismissedQuestionSignature) ? "input-required" : "completed";
|
|
1419
1272
|
}
|
|
1420
1273
|
}
|
|
1421
1274
|
|
|
@@ -1811,7 +1664,7 @@ var PORT_RANGE_SIZE = 10;
|
|
|
1811
1664
|
var RECLAIM_RETRY_DELAY_MS = 40;
|
|
1812
1665
|
var RECLAIM_TRIES = 8;
|
|
1813
1666
|
async function killReclaimable(ports, worktreePath, signal) {
|
|
1814
|
-
const { killListenersOnPorts: killListenersOnPorts2, killStaleWorktreeListeners: killStaleWorktreeListeners2 } = await import("./conductor-
|
|
1667
|
+
const { killListenersOnPorts: killListenersOnPorts2, killStaleWorktreeListeners: killStaleWorktreeListeners2 } = await import("./conductor-G6GH5ZMU.js");
|
|
1815
1668
|
if (worktreePath) killStaleWorktreeListeners2(ports, worktreePath, signal);
|
|
1816
1669
|
else killListenersOnPorts2(ports);
|
|
1817
1670
|
}
|
|
@@ -2492,21 +2345,11 @@ async function startDevServer(repoPath, worktreePath, onLine, opts) {
|
|
|
2492
2345
|
}
|
|
2493
2346
|
|
|
2494
2347
|
export {
|
|
2495
|
-
planQuestionsSignature,
|
|
2496
|
-
parsePlanQuestionsInput,
|
|
2497
|
-
isAskUserToolName,
|
|
2498
|
-
lastTopLevelToolIsAskUser,
|
|
2499
|
-
extractPendingPlanQuestions,
|
|
2500
|
-
askBlockStillWaiting,
|
|
2501
|
-
latestPendingPlanQuestions,
|
|
2502
|
-
PLAN_QUESTION_ANSWERS_PREFIX,
|
|
2503
|
-
isPlanQuestionAnswersMessage,
|
|
2504
|
-
formatPlanQuestionAnswers,
|
|
2505
|
-
formatPlanQuestionsForChat,
|
|
2506
2348
|
isTerminalTaskState,
|
|
2507
2349
|
isIncompleteTaskState,
|
|
2508
2350
|
needsCoordinatorAction,
|
|
2509
2351
|
endedOnAskUser,
|
|
2352
|
+
userRepliedAfterAgent,
|
|
2510
2353
|
deriveTaskState,
|
|
2511
2354
|
mcpWaitForTurnTimeoutMs,
|
|
2512
2355
|
mcpWaitTaskHint,
|
|
@@ -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,
|