nolo-cli 0.147.0-alpha.2 → 0.149.0-alpha.1
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/{_executeModel-3OCR5R5P.js → _executeModel-OW3H7ICR.js} +29 -28
- package/{action-3ZOODRBC.js → action-GI44T4DR.js} +6 -6
- package/{addContentAction-IJHG2ZV7.js → addContentAction-B2DRF7P6.js} +5 -5
- package/{addDialogAgentAction-RLPSTAQ2.js → addDialogAgentAction-2P2FLTLD.js} +4 -4
- package/{agentDeleteCommand-6OGADD24.js → agentDeleteCommand-7IDWF6E3.js} +14 -13
- package/{agentEmailCommands-OAPYGNYC.js → agentEmailCommands-A6XBQZBN.js} +31 -30
- package/{agentListCommands-FRJZOOEG.js → agentListCommands-IW3GQVUP.js} +16 -15
- package/{agentMachineCommands-OWLOV5WO.js → agentMachineCommands-DQPUIMAC.js} +14 -13
- package/{agentProviderCommands-TWB6E5WD.js → agentProviderCommands-YK2BIIXZ.js} +1 -1
- package/{agentRecordCommands-BW7HM6VH.js → agentRecordCommands-VCA76W6B.js} +31 -30
- package/{agentRunCommand-O2F3NU2H.js → agentRunCommand-YNLDKVR7.js} +31 -30
- package/{agentRuntimeLocal-QQCDFR7B.js → agentRuntimeLocal-AK2QVJHY.js} +12 -11
- package/{agentSlice-ZOCKW66S.js → agentSlice-O4RUQUMT.js} +5 -5
- package/{appDeleteCommands-OGKQC2AM.js → appDeleteCommands-N3XEVVYC.js} +15 -14
- package/{appDeployCommands-Y2FV4JML.js → appDeployCommands-AWFIXYVW.js} +15 -14
- package/{appDeployStatusCommands-FNML5SUV.js → appDeployStatusCommands-CZRON2FO.js} +15 -14
- package/{appGetCommands-4FOY7W5E.js → appGetCommands-XQIUY4TD.js} +15 -14
- package/{appListCommands-E5SF6SIY.js → appListCommands-NNG4H36Y.js} +15 -14
- package/{chatQueueReduxAdapter-DFZ6QB4K.js → chatQueueReduxAdapter-TJRMXMYA.js} +11 -11
- package/{chunk-27VHPPII.js → chunk-36KZDDO5.js} +6 -6
- package/{chunk-KRC6GI2Q.js → chunk-3DAVPNFT.js} +2 -2
- package/{chunk-T76D3OYX.js → chunk-3SV7RM24.js} +1 -1
- package/{chunk-O7WXJIUI.js → chunk-4H22P2JV.js} +11 -9
- package/{chunk-M2YBIBBS.js → chunk-5TEEECZM.js} +1 -1
- package/{chunk-Z7IZQF56.js → chunk-6FGTMQCL.js} +1 -1
- package/{chunk-ETZWFV6M.js → chunk-7CHC4W22.js} +1 -1
- package/{chunk-PZ3HKBET.js → chunk-ACQD6YI2.js} +19 -19
- package/{chunk-ZSPC3ZTC.js → chunk-AKG5W4LG.js} +1 -1
- package/{chunk-CCOXTK3I.js → chunk-ALFH24P3.js} +26 -0
- package/{chunk-7NANRWL4.js → chunk-ALGORS6Y.js} +1 -1
- package/chunk-ATLTFRYJ.js +411 -0
- package/{chunk-HNRASX3X.js → chunk-CPUFH46E.js} +1 -1
- package/{chunk-GMVELWJG.js → chunk-CU3QB4HW.js} +2 -2
- package/{chunk-LQ6P2MFG.js → chunk-DXHL7G2L.js} +14 -14
- package/{chunk-2EE5UD3N.js → chunk-DY7ANLKG.js} +1 -1
- package/{chunk-I44MDY73.js → chunk-GOH6RW6F.js} +3 -3
- package/chunk-HTVYCXBP.js +681 -0
- package/{chunk-QALRKMHF.js → chunk-HYZIYH2H.js} +5 -5
- package/{chunk-EFZKILX6.js → chunk-IAESIMK7.js} +1 -1
- package/{chunk-OXGHM2WW.js → chunk-ID7LNBWR.js} +27 -257
- package/{chunk-HLUYTEBY.js → chunk-K2CSUCHJ.js} +1 -1
- package/{chunk-JORF7I7F.js → chunk-MST6R3E4.js} +3 -3
- package/{chunk-QJLEMM2V.js → chunk-O2OWEFII.js} +1 -1
- package/{chunk-724HIKHT.js → chunk-OHOVNO7I.js} +4 -127
- package/{chunk-P4CRULYJ.js → chunk-OMRJYNCI.js} +3 -3
- package/chunk-PQWU42UQ.js +132 -0
- package/{chunk-JQ4LUB5I.js → chunk-PZZTFEKK.js} +1 -1
- package/{chunk-QIH323EV.js → chunk-QXGPFY6J.js} +1 -1
- package/{chunk-B7ANJQWZ.js → chunk-RSEEDUMS.js} +2 -2
- package/{chunk-ELYEQNUI.js → chunk-RYZINGPM.js} +3 -3
- package/{chunk-AATZZAZE.js → chunk-SLLGJZDT.js} +1 -1
- package/{chunk-3IYMTWYZ.js → chunk-SONWNI3L.js} +2 -2
- package/chunk-TB3MIBRC.js +1716 -0
- package/{chunk-2B74TU77.js → chunk-TXH4IWJL.js} +3 -3
- package/{chunk-UC3Q7X3J.js → chunk-TZZ2WRBL.js} +5 -5
- package/{chunk-36HTQWBD.js → chunk-UASIEDKM.js} +3 -3
- package/{chunk-BJUDYFV5.js → chunk-UQNS32WZ.js} +1 -1
- package/{chunk-AUXHZ2M5.js → chunk-WIWM4FE3.js} +1 -1
- package/{chunk-YU2THNST.js → chunk-XISEYOGH.js} +1 -1
- package/{chunk-BFLSOVHN.js → chunk-XYJSY4KG.js} +16 -14
- package/{chunk-NU4DCNMR.js → chunk-YAQJJDC2.js} +4 -571
- package/{chunk-D76D3RTR.js → chunk-Z4CSIXYP.js} +2 -2
- package/{chunk-BCJPO6SE.js → chunk-ZUEK6A6C.js} +10 -10
- package/{commandRegistry-OPVCVVOQ.js → commandRegistry-2KBOXZQC.js} +42 -42
- package/{contentThunks-IWXWFN6P.js → contentThunks-BDIQRZR6.js} +12 -12
- package/{createAgentAutomationAction-ROWX5ZPK.js → createAgentAutomationAction-5UGTB26P.js} +12 -12
- package/{createDialogAction-WLVAITHA.js → createDialogAction-B7VGVEVU.js} +13 -13
- package/{createPageAction-DAJL6GES.js → createPageAction-CDLDKPRM.js} +12 -12
- package/{dbSlice-HFPIJT5P.js → dbSlice-DQ32LYTJ.js} +4 -4
- package/{deleteFile-UEAD5A5Z.js → deleteFile-NX6QHCWZ.js} +2 -2
- package/{dialogCommands-KSPH6QOU.js → dialogCommands-G7YBVAMC.js} +15 -14
- package/{dialogSlice-WW75BKLO.js → dialogSlice-N3YB65G5.js} +11 -11
- package/{docCreateCommands-B64BLZVJ.js → docCreateCommands-ZSLGVBZT.js} +14 -13
- package/{docDeleteCommands-UX2GXKUT.js → docDeleteCommands-5N4GVZBG.js} +15 -14
- package/{docReadCommands-5A6GF3XL.js → docReadCommands-YJSAA7AV.js} +14 -13
- package/{docStore-2SADZYLX.js → docStore-E3CEOV5Q.js} +5 -5
- package/{docUpdateCommands-UTBGZPSR.js → docUpdateCommands-WEMLSW6W.js} +14 -13
- package/{handleSendMessageAction-2M57WHLO.js → handleSendMessageAction-DQAD5ERJ.js} +440 -106
- package/index.js +3 -3
- package/{machineCommands-7JUTOZP2.js → machineCommands-HAP75VSG.js} +30 -29
- package/{machineWsRunDispatch-6EETR3RV.js → machineWsRunDispatch-L32G7C4P.js} +30 -29
- package/{memberThunks-SKFZ37VS.js → memberThunks-5ZXPR63F.js} +5 -5
- package/package.json +1 -1
- package/{providerPresetApply-XTEXOH7X.js → providerPresetApply-DD6NGWW6.js} +1 -1
- package/{providerRegistry-ADYDSLKR.js → providerRegistry-XDRLMYGJ.js} +1 -1
- package/{read-IEJLLUXY.js → read-EPTJRAEF.js} +2 -2
- package/{readDocTool-4SPYCP2Y.js → readDocTool-W4NDXNEX.js} +1 -1
- package/{readlineWorkspace-LBLAGNGM.js → readlineWorkspace-7BC66QSX.js} +34 -33
- package/{removeDialogAgentAction-R4RTGM2S.js → removeDialogAgentAction-OSYNZRX7.js} +6 -6
- package/{runAgentClientLoop-RPEULJFS.js → runAgentClientLoop-6E6UC3CE.js} +30 -28
- package/{setDialogExtraReferencesAction-NU2VZ7JZ.js → setDialogExtraReferencesAction-M32UYNCG.js} +5 -5
- package/{setPrimaryDialogAgentAction-VUY2FRVL.js → setPrimaryDialogAgentAction-WZ7KI3YA.js} +6 -6
- package/{settingSlice-CNE75ISY.js → settingSlice-Q6EKL7EQ.js} +5 -5
- package/{spaceCommands-HZUAGZXH.js → spaceCommands-UJOVU4XI.js} +14 -13
- package/{streamAgentChatTurn-D5POCPVX.js → streamAgentChatTurn-3UXPYFNX.js} +71 -1268
- package/{switchDialogAgentAction-JC27CP72.js → switchDialogAgentAction-GMR7WN3P.js} +4 -4
- package/{tools-I6D2B2G6.js → tools-MKYDMWA4.js} +21 -21
- package/{tuiSummaryLlmCaller-RVW6CJSK.js → tuiSummaryLlmCaller-3YFNHCTW.js} +7 -7
- package/{updateDialogTitleAction-7YZ7FNAK.js → updateDialogTitleAction-UPFV7TDT.js} +12 -12
- package/chunk-BJ3KD73I.js +0 -155
- package/chunk-JK5XW3NO.js +0 -108
- package/chunk-YYKMFBK7.js +0 -306
package/chunk-YYKMFBK7.js
DELETED
|
@@ -1,306 +0,0 @@
|
|
|
1
|
-
import {
|
|
2
|
-
asOptionalFiniteNumber
|
|
3
|
-
} from "./chunk-WWC7I6TA.js";
|
|
4
|
-
import {
|
|
5
|
-
isAbortError
|
|
6
|
-
} from "./chunk-QOKAKDPE.js";
|
|
7
|
-
import {
|
|
8
|
-
isRecord
|
|
9
|
-
} from "./chunk-KUG52IAP.js";
|
|
10
|
-
import {
|
|
11
|
-
asOptionalTrimmedString
|
|
12
|
-
} from "./chunk-G3SUCT4W.js";
|
|
13
|
-
|
|
14
|
-
// packages/ai/agent/projectDesktopToolUiContent.ts
|
|
15
|
-
var DESKTOP_TOOL_UI_CONTENT_MAX_CHARS = 48e3;
|
|
16
|
-
function clipUiText(value, max = DESKTOP_TOOL_UI_CONTENT_MAX_CHARS) {
|
|
17
|
-
if (value.length <= max) return value;
|
|
18
|
-
return `${value.slice(0, Math.max(0, max - 20))}
|
|
19
|
-
\u2026[truncated for UI]`;
|
|
20
|
-
}
|
|
21
|
-
function tryParseJsonRecord(text) {
|
|
22
|
-
const trimmed2 = text.trim();
|
|
23
|
-
if (!trimmed2.startsWith("{") && !trimmed2.startsWith("[")) return null;
|
|
24
|
-
try {
|
|
25
|
-
const parsed = JSON.parse(trimmed2);
|
|
26
|
-
return isRecord(parsed) ? parsed : null;
|
|
27
|
-
} catch {
|
|
28
|
-
return null;
|
|
29
|
-
}
|
|
30
|
-
}
|
|
31
|
-
function parseShellToolTextContent(content) {
|
|
32
|
-
const text = content ?? "";
|
|
33
|
-
if (!text.trim()) return { stdout: "", stderr: "" };
|
|
34
|
-
const exitMatch = text.match(/(?:^|\n)exitCode:\s*(-?\d+)\s*$/);
|
|
35
|
-
const exitCode = exitMatch ? Number(exitMatch[1]) : void 0;
|
|
36
|
-
const body = (exitMatch ? text.slice(0, exitMatch.index) : text).replace(
|
|
37
|
-
/\s+$/,
|
|
38
|
-
""
|
|
39
|
-
);
|
|
40
|
-
let stdout = "";
|
|
41
|
-
let stderr = "";
|
|
42
|
-
if (body.startsWith("stdout:\n") || body.includes("\nstdout:\n")) {
|
|
43
|
-
const afterStdout = body.replace(/^[\s\S]*?stdout:\n/, "");
|
|
44
|
-
if (afterStdout.includes("\n\nstderr:\n")) {
|
|
45
|
-
const [out, err] = afterStdout.split("\n\nstderr:\n");
|
|
46
|
-
stdout = out ?? "";
|
|
47
|
-
stderr = err ?? "";
|
|
48
|
-
} else if (afterStdout.startsWith("stderr:\n")) {
|
|
49
|
-
stderr = afterStdout.slice("stderr:\n".length);
|
|
50
|
-
} else {
|
|
51
|
-
stdout = afterStdout;
|
|
52
|
-
}
|
|
53
|
-
} else if (body.startsWith("stderr:\n") || body.includes("\nstderr:\n")) {
|
|
54
|
-
stderr = body.replace(/^[\s\S]*?stderr:\n/, "");
|
|
55
|
-
} else {
|
|
56
|
-
stdout = body;
|
|
57
|
-
}
|
|
58
|
-
return {
|
|
59
|
-
stdout,
|
|
60
|
-
stderr,
|
|
61
|
-
...typeof exitCode === "number" && Number.isFinite(exitCode) ? { exitCode } : {}
|
|
62
|
-
};
|
|
63
|
-
}
|
|
64
|
-
function resolveShellCommand(metadata, argumentsPreview) {
|
|
65
|
-
return asOptionalTrimmedString(metadata.command) || asOptionalTrimmedString(metadata.cmd) || asOptionalTrimmedString(argumentsPreview) || "";
|
|
66
|
-
}
|
|
67
|
-
function projectDesktopToolUiContent(args) {
|
|
68
|
-
const toolName = asOptionalTrimmedString(args.toolName) || "tool";
|
|
69
|
-
const metadata = isRecord(args.metadata) ? args.metadata : {};
|
|
70
|
-
const rawContent = typeof args.content === "string" ? args.content : typeof args.summary === "string" ? args.summary : typeof args.message === "string" ? args.message : "";
|
|
71
|
-
if (toolName === "setTodoList") {
|
|
72
|
-
const existing = tryParseJsonRecord(rawContent);
|
|
73
|
-
if (existing && Array.isArray(existing.todos)) {
|
|
74
|
-
return clipUiText(JSON.stringify({ todos: existing.todos }));
|
|
75
|
-
}
|
|
76
|
-
}
|
|
77
|
-
if (toolName === "execShell") {
|
|
78
|
-
const existing = tryParseJsonRecord(rawContent);
|
|
79
|
-
if (existing && (typeof existing.stdout === "string" || typeof existing.command === "string" || typeof existing.stderr === "string")) {
|
|
80
|
-
const command2 = asOptionalTrimmedString(existing.command) || resolveShellCommand(metadata, args.argumentsPreview);
|
|
81
|
-
return JSON.stringify({
|
|
82
|
-
...existing,
|
|
83
|
-
command: command2,
|
|
84
|
-
cwd: asOptionalTrimmedString(existing.cwd) || asOptionalTrimmedString(metadata.cwd) || null,
|
|
85
|
-
exitCode: asOptionalFiniteNumber(existing.exitCode) ?? asOptionalFiniteNumber(metadata.exitCode)
|
|
86
|
-
});
|
|
87
|
-
}
|
|
88
|
-
const parsed = parseShellToolTextContent(rawContent);
|
|
89
|
-
const command = resolveShellCommand(metadata, args.argumentsPreview);
|
|
90
|
-
return JSON.stringify({
|
|
91
|
-
command,
|
|
92
|
-
cwd: asOptionalTrimmedString(metadata.cwd) || null,
|
|
93
|
-
stdout: clipUiText(parsed.stdout),
|
|
94
|
-
stderr: clipUiText(parsed.stderr),
|
|
95
|
-
exitCode: asOptionalFiniteNumber(metadata.exitCode) ?? parsed.exitCode,
|
|
96
|
-
timedOut: metadata.timedOut === true,
|
|
97
|
-
blocked: metadata.blocked === true
|
|
98
|
-
});
|
|
99
|
-
}
|
|
100
|
-
if (toolName === "readFile" || toolName === "read_file") {
|
|
101
|
-
const filePath = asOptionalTrimmedString(metadata.path) || asOptionalTrimmedString(metadata.filePath) || asOptionalTrimmedString(metadata.file_path) || asOptionalTrimmedString(args.argumentsPreview) || "";
|
|
102
|
-
const body = typeof args.content === "string" && args.content || typeof args.summary === "string" && args.summary || typeof args.message === "string" && args.message || "";
|
|
103
|
-
return JSON.stringify({
|
|
104
|
-
filePath,
|
|
105
|
-
content: clipUiText(body),
|
|
106
|
-
...asOptionalFiniteNumber(metadata.startLine) != null ? { startLine: asOptionalFiniteNumber(metadata.startLine) } : {},
|
|
107
|
-
...asOptionalFiniteNumber(metadata.endLine) != null ? { endLine: asOptionalFiniteNumber(metadata.endLine) } : {},
|
|
108
|
-
...asOptionalFiniteNumber(metadata.totalLines) != null ? { totalLines: asOptionalFiniteNumber(metadata.totalLines) } : {},
|
|
109
|
-
...metadata.truncated === true ? { truncated: true } : {}
|
|
110
|
-
});
|
|
111
|
-
}
|
|
112
|
-
const preferred = typeof args.content === "string" && args.content || typeof args.summary === "string" && args.summary || typeof args.message === "string" && args.message || "";
|
|
113
|
-
return clipUiText(preferred);
|
|
114
|
-
}
|
|
115
|
-
|
|
116
|
-
// packages/ai/agent/foregroundTurnAdmissionFetch.ts
|
|
117
|
-
var FOREGROUND_TURN_KEEPALIVE_MAX_BODY_BYTES = 60 * 1024;
|
|
118
|
-
function getUtf8ByteLength(value) {
|
|
119
|
-
return new TextEncoder().encode(value).byteLength;
|
|
120
|
-
}
|
|
121
|
-
function shouldKeepForegroundTurnAdmissionAlive(serializedBody) {
|
|
122
|
-
return serializedBody.length > 0 && getUtf8ByteLength(serializedBody) <= FOREGROUND_TURN_KEEPALIVE_MAX_BODY_BYTES;
|
|
123
|
-
}
|
|
124
|
-
function buildForegroundTurnAdmissionFetchInit(args) {
|
|
125
|
-
return {
|
|
126
|
-
method: "POST",
|
|
127
|
-
headers: args.headers,
|
|
128
|
-
body: args.body,
|
|
129
|
-
...args.signal ? { signal: args.signal } : {},
|
|
130
|
-
...shouldKeepForegroundTurnAdmissionAlive(args.body) ? { keepalive: true } : {}
|
|
131
|
-
};
|
|
132
|
-
}
|
|
133
|
-
|
|
134
|
-
// packages/ai/agent/foregroundExecutionClientState.ts
|
|
135
|
-
var stateByDialogId = /* @__PURE__ */ new Map();
|
|
136
|
-
var MAX_TRACKED_DIALOGS = 256;
|
|
137
|
-
function trimmed(value) {
|
|
138
|
-
return typeof value === "string" ? value.trim() : "";
|
|
139
|
-
}
|
|
140
|
-
function trimCache() {
|
|
141
|
-
while (stateByDialogId.size > MAX_TRACKED_DIALOGS) {
|
|
142
|
-
const oldest = stateByDialogId.keys().next().value;
|
|
143
|
-
if (!oldest) return;
|
|
144
|
-
stateByDialogId.delete(oldest);
|
|
145
|
-
}
|
|
146
|
-
}
|
|
147
|
-
function setForegroundExecutionClientState(args) {
|
|
148
|
-
const dialogId = trimmed(args.dialogId);
|
|
149
|
-
const executionId = trimmed(args.executionId);
|
|
150
|
-
if (!dialogId || !executionId) return;
|
|
151
|
-
stateByDialogId.delete(dialogId);
|
|
152
|
-
stateByDialogId.set(dialogId, { dialogId, executionId, status: "running" });
|
|
153
|
-
trimCache();
|
|
154
|
-
}
|
|
155
|
-
function clearForegroundExecutionClientState(dialogId, expectedExecutionId) {
|
|
156
|
-
const normalizedDialogId = trimmed(dialogId);
|
|
157
|
-
if (!normalizedDialogId) return;
|
|
158
|
-
if (expectedExecutionId) {
|
|
159
|
-
const current = stateByDialogId.get(normalizedDialogId);
|
|
160
|
-
if (current && current.executionId !== expectedExecutionId) return;
|
|
161
|
-
}
|
|
162
|
-
stateByDialogId.delete(normalizedDialogId);
|
|
163
|
-
}
|
|
164
|
-
function observeForegroundExecutionPayload(payload) {
|
|
165
|
-
if (!payload || typeof payload !== "object") return;
|
|
166
|
-
const event = payload;
|
|
167
|
-
const type = trimmed(event.type);
|
|
168
|
-
const dialogId = trimmed(event.dialogId);
|
|
169
|
-
const executionId = trimmed(event.executionId);
|
|
170
|
-
if ((type === "dialog" || type === "foreground_turn_status") && event.status === "running" && dialogId && executionId) {
|
|
171
|
-
setForegroundExecutionClientState({ dialogId, executionId });
|
|
172
|
-
return;
|
|
173
|
-
}
|
|
174
|
-
if (type === "foreground_turn_terminal" || type === "done" || type === "cancelled" || type === "error" || type === "failed") {
|
|
175
|
-
if (dialogId && executionId) {
|
|
176
|
-
clearForegroundExecutionClientState(dialogId, executionId);
|
|
177
|
-
}
|
|
178
|
-
}
|
|
179
|
-
}
|
|
180
|
-
|
|
181
|
-
// packages/ai/agent/streamTurnStreamConsumer.ts
|
|
182
|
-
async function readAgentRunStreamChunk(reader, signal, isAborted) {
|
|
183
|
-
if (isAborted() || signal?.aborted) {
|
|
184
|
-
void reader.cancel().catch(() => {
|
|
185
|
-
});
|
|
186
|
-
throw new DOMException("The operation was aborted.", "AbortError");
|
|
187
|
-
}
|
|
188
|
-
if (!signal) {
|
|
189
|
-
return reader.read();
|
|
190
|
-
}
|
|
191
|
-
let settled = false;
|
|
192
|
-
return new Promise((resolve, reject) => {
|
|
193
|
-
const finish = (cb) => {
|
|
194
|
-
if (settled) return;
|
|
195
|
-
settled = true;
|
|
196
|
-
signal.removeEventListener("abort", onAbort);
|
|
197
|
-
cb();
|
|
198
|
-
};
|
|
199
|
-
const onAbort = () => {
|
|
200
|
-
void reader.cancel().catch(() => {
|
|
201
|
-
});
|
|
202
|
-
finish(
|
|
203
|
-
() => reject(new DOMException("The operation was aborted.", "AbortError"))
|
|
204
|
-
);
|
|
205
|
-
};
|
|
206
|
-
signal.addEventListener("abort", onAbort);
|
|
207
|
-
reader.read().then(
|
|
208
|
-
(result) => finish(() => resolve(result)),
|
|
209
|
-
(err) => finish(() => reject(err))
|
|
210
|
-
);
|
|
211
|
-
});
|
|
212
|
-
}
|
|
213
|
-
async function consumeAgentRunStream(handlers) {
|
|
214
|
-
const {
|
|
215
|
-
reader,
|
|
216
|
-
decoder,
|
|
217
|
-
parseChunk,
|
|
218
|
-
onPayload,
|
|
219
|
-
isDoneEvent,
|
|
220
|
-
isAborted,
|
|
221
|
-
signal,
|
|
222
|
-
onAbort
|
|
223
|
-
} = handlers;
|
|
224
|
-
let sawDone = false;
|
|
225
|
-
let observedDialogId = "";
|
|
226
|
-
let observedExecutionId = "";
|
|
227
|
-
const clearObservedExecution = () => {
|
|
228
|
-
if (!observedDialogId || !observedExecutionId) return;
|
|
229
|
-
clearForegroundExecutionClientState(
|
|
230
|
-
observedDialogId,
|
|
231
|
-
observedExecutionId
|
|
232
|
-
);
|
|
233
|
-
};
|
|
234
|
-
try {
|
|
235
|
-
while (true) {
|
|
236
|
-
let done;
|
|
237
|
-
let value;
|
|
238
|
-
try {
|
|
239
|
-
({ done, value } = await readAgentRunStreamChunk(
|
|
240
|
-
reader,
|
|
241
|
-
signal,
|
|
242
|
-
isAborted
|
|
243
|
-
));
|
|
244
|
-
} catch (error) {
|
|
245
|
-
if (isAbortError(error) || isAborted() || signal?.aborted) {
|
|
246
|
-
clearObservedExecution();
|
|
247
|
-
await onAbort();
|
|
248
|
-
return { outcome: "aborted" };
|
|
249
|
-
}
|
|
250
|
-
throw error;
|
|
251
|
-
}
|
|
252
|
-
if (isAborted() || signal?.aborted) {
|
|
253
|
-
clearObservedExecution();
|
|
254
|
-
await onAbort();
|
|
255
|
-
return { outcome: "aborted" };
|
|
256
|
-
}
|
|
257
|
-
if (done) {
|
|
258
|
-
clearObservedExecution();
|
|
259
|
-
return { outcome: "streamEnded", sawDone };
|
|
260
|
-
}
|
|
261
|
-
const payloads = parseChunk(
|
|
262
|
-
decoder.decode(value, { stream: true })
|
|
263
|
-
);
|
|
264
|
-
for (const payload of payloads) {
|
|
265
|
-
if (isAborted() || signal?.aborted) {
|
|
266
|
-
clearObservedExecution();
|
|
267
|
-
await onAbort();
|
|
268
|
-
return { outcome: "aborted" };
|
|
269
|
-
}
|
|
270
|
-
if (payload && typeof payload === "object") {
|
|
271
|
-
if (payload.type === "dialog" && typeof payload.dialogId === "string") {
|
|
272
|
-
observedDialogId = payload.dialogId.trim();
|
|
273
|
-
observedExecutionId = typeof payload.executionId === "string" ? payload.executionId.trim() : "";
|
|
274
|
-
}
|
|
275
|
-
observeForegroundExecutionPayload(payload);
|
|
276
|
-
}
|
|
277
|
-
const directive = await onPayload(payload);
|
|
278
|
-
if (directive?.reject !== void 0) {
|
|
279
|
-
clearObservedExecution();
|
|
280
|
-
return { outcome: "rejected", message: directive.reject };
|
|
281
|
-
}
|
|
282
|
-
if (directive?.abort) {
|
|
283
|
-
clearObservedExecution();
|
|
284
|
-
await onAbort();
|
|
285
|
-
return { outcome: "aborted" };
|
|
286
|
-
}
|
|
287
|
-
if (isDoneEvent(payload)) {
|
|
288
|
-
sawDone = true;
|
|
289
|
-
}
|
|
290
|
-
}
|
|
291
|
-
}
|
|
292
|
-
} catch (error) {
|
|
293
|
-
clearObservedExecution();
|
|
294
|
-
if (isAbortError(error) || isAborted() || signal?.aborted) {
|
|
295
|
-
await onAbort();
|
|
296
|
-
return { outcome: "aborted" };
|
|
297
|
-
}
|
|
298
|
-
throw error;
|
|
299
|
-
}
|
|
300
|
-
}
|
|
301
|
-
|
|
302
|
-
export {
|
|
303
|
-
projectDesktopToolUiContent,
|
|
304
|
-
buildForegroundTurnAdmissionFetchInit,
|
|
305
|
-
consumeAgentRunStream
|
|
306
|
-
};
|