@tea-agent/loop-agent 0.42.1 → 0.43.0-next.10
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/CHANGELOG.md +63 -3
- package/dist/build-stamp.json +3 -3
- package/dist/executors/dag-pi-executor.js +5 -20
- package/dist/worker/console/chat/pi-runtime/custom-tools/ask-user-question.js +44 -0
- package/dist/worker/console/chat/pi-runtime/custom-tools/explore-tools.js +202 -0
- package/dist/worker/console/chat/pi-runtime/custom-tools/goal-tools.js +78 -0
- package/dist/worker/console/chat/pi-runtime/custom-tools/operator-tools.js +86 -0
- package/dist/worker/console/chat/pi-runtime/custom-tools/todo-write.js +38 -0
- package/dist/worker/console/chat/pi-runtime/inspection-types.js +28 -0
- package/dist/worker/console/chat/pi-runtime/inspection.js +439 -0
- package/dist/worker/console/chat/pi-runtime/sdk-bindings.js +153 -0
- package/dist/worker/console/chat/pi-runtime/sdk-session.js +5 -0
- package/dist/worker/console/chat/pi-runtime.js +100 -1104
- package/dist/worker/console/chat/routes.js +32 -17
- package/dist/worker/console/chat/terminal-sessions.js +65 -1
- package/dist/worker/console/chat/terminal-tools.js +17 -5
- package/dist/worker/console/static/assets/{abnfDiagram-N423BO3Z-C9eI7nEo.js → abnfDiagram-N423BO3Z-D_fNbWc_.js} +1 -1
- package/dist/worker/console/static/assets/{arc-VJWsxWhB.js → arc-_HuqLW6m.js} +1 -1
- package/dist/worker/console/static/assets/{architectureDiagram-T3A2C74G-BGcyiMSo.js → architectureDiagram-T3A2C74G-Djy2qY1m.js} +1 -1
- package/dist/worker/console/static/assets/{blockDiagram-VBNYF7ZC-BScnFwyi.js → blockDiagram-VBNYF7ZC-bB-1TSyY.js} +1 -1
- package/dist/worker/console/static/assets/{c4Diagram-5PPSVZJV-Bl9_BsLi.js → c4Diagram-5PPSVZJV-C5Hmghrz.js} +1 -1
- package/dist/worker/console/static/assets/channel-C0A6UEIa.js +1 -0
- package/dist/worker/console/static/assets/{chunk-2GRJ4B5K-F1uKxiUt.js → chunk-2GRJ4B5K-Duyl39oy.js} +1 -1
- package/dist/worker/console/static/assets/{chunk-2Q5K7J3B-rSRMynVu.js → chunk-2Q5K7J3B-x6mdnSyf.js} +1 -1
- package/dist/worker/console/static/assets/{chunk-5RXB4S5H-DAsJm1WD.js → chunk-5RXB4S5H-WlBuFj7W.js} +1 -1
- package/dist/worker/console/static/assets/{chunk-5VM5RSS4-DQIdVI0a.js → chunk-5VM5RSS4-CTF429HX.js} +1 -1
- package/dist/worker/console/static/assets/{chunk-6Q2QTUOP-4A_8rJ-Q.js → chunk-6Q2QTUOP-Dwd6r-SF.js} +1 -1
- package/dist/worker/console/static/assets/{chunk-GF5L2VYU-BHnT-vjh.js → chunk-GF5L2VYU-C-Br82D1.js} +1 -1
- package/dist/worker/console/static/assets/{chunk-JWPE2WC7-Rq7QKBkn.js → chunk-JWPE2WC7-CuGp0DeE.js} +1 -1
- package/dist/worker/console/static/assets/{chunk-KBJHAD2P-BXh-AI2u.js → chunk-KBJHAD2P-CJhFX6Lh.js} +1 -1
- package/dist/worker/console/static/assets/{chunk-RYQCIY6F-BblcLy8m.js → chunk-RYQCIY6F-DpGOa_jT.js} +1 -1
- package/dist/worker/console/static/assets/{chunk-XXDRQBXY-zHZmVnB6.js → chunk-XXDRQBXY-DXJaTynd.js} +1 -1
- package/dist/worker/console/static/assets/classDiagram-JCYQIIEL-DzguNppy.js +1 -0
- package/dist/worker/console/static/assets/classDiagram-v2-OCEON4UE-DzguNppy.js +1 -0
- package/dist/worker/console/static/assets/{cose-bilkent-JH36ORCC-Cmwz0Wi4.js → cose-bilkent-JH36ORCC-CRBZWjE4.js} +1 -1
- package/dist/worker/console/static/assets/{cynefin-VYW2F7L2-Dq76MHQU.js → cynefin-VYW2F7L2-BdXcxtlb.js} +1 -1
- package/dist/worker/console/static/assets/{cynefinDiagram-MW4NZA55-zPahV1fM.js → cynefinDiagram-MW4NZA55-07UKsOts.js} +1 -1
- package/dist/worker/console/static/assets/{dagre-VZM6K2ZE-DQJ3xPc_.js → dagre-VZM6K2ZE-D38p9__S.js} +1 -1
- package/dist/worker/console/static/assets/{diagram-7IWD3JNH-BwX7u6fv.js → diagram-7IWD3JNH-nSiBNNjH.js} +1 -1
- package/dist/worker/console/static/assets/{diagram-B4RE2ZJO-CodnDCco.js → diagram-B4RE2ZJO-BFOTot5D.js} +1 -1
- package/dist/worker/console/static/assets/{diagram-LBJQPF4R-gAjtWkxG.js → diagram-LBJQPF4R-DypKaZ6k.js} +1 -1
- package/dist/worker/console/static/assets/{diagram-Q27KOJAE-CGCqz0cS.js → diagram-Q27KOJAE-B6yoOQeW.js} +1 -1
- package/dist/worker/console/static/assets/{diagram-UB23O5K3-RHwYEywd.js → diagram-UB23O5K3-BHYS6viX.js} +1 -1
- package/dist/worker/console/static/assets/{ebnfDiagram-BXEA7PRR-B6seb_p_.js → ebnfDiagram-BXEA7PRR-D2VD5Snj.js} +1 -1
- package/dist/worker/console/static/assets/{erDiagram-JOGREHBK-CmwCKYe8.js → erDiagram-JOGREHBK-E98mWxN1.js} +1 -1
- package/dist/worker/console/static/assets/{flowDiagram-UKHOOZJN-BfNsaZ0V.js → flowDiagram-UKHOOZJN-CT1zxhqP.js} +1 -1
- package/dist/worker/console/static/assets/{ganttDiagram-PKOTCBZU-zmYgi_Z3.js → ganttDiagram-PKOTCBZU-6GcngNcy.js} +1 -1
- package/dist/worker/console/static/assets/{gitGraphDiagram-DS77QQ5N-BDEzzSKF.js → gitGraphDiagram-DS77QQ5N-DCL6NvKe.js} +1 -1
- package/dist/worker/console/static/assets/{index-DgenUAfc.js → index-24jp3aBh.js} +77 -77
- package/dist/worker/console/static/assets/index-CY6y6I8M.css +1 -0
- package/dist/worker/console/static/assets/{infoDiagram-6WML65LV-DeSz8l42.js → infoDiagram-6WML65LV-C0627e-9.js} +1 -1
- package/dist/worker/console/static/assets/{ishikawaDiagram-WSZJBQD7-B1LV29aH.js → ishikawaDiagram-WSZJBQD7-C_u3P6Ik.js} +1 -1
- package/dist/worker/console/static/assets/{journeyDiagram-NVQOT4AX-CCw4W2oU.js → journeyDiagram-NVQOT4AX-DPDPv9HL.js} +1 -1
- package/dist/worker/console/static/assets/{kanban-definition-27J2QSJJ-BozaMoRJ.js → kanban-definition-27J2QSJJ-D3OHdWiO.js} +1 -1
- package/dist/worker/console/static/assets/{linear-G1JR40SX.js → linear-DI88zD7n.js} +1 -1
- package/dist/worker/console/static/assets/{mermaid.core-CCgPF0oA.js → mermaid.core-p2l8IrWY.js} +5 -5
- package/dist/worker/console/static/assets/{mindmap-definition-FAOFIHXS-CEqnCHnD.js → mindmap-definition-FAOFIHXS-B1bAX-oS.js} +1 -1
- package/dist/worker/console/static/assets/{pegDiagram-VL7TDLO6-DpmQPKuI.js → pegDiagram-VL7TDLO6-DwOnWxdD.js} +1 -1
- package/dist/worker/console/static/assets/{pieDiagram-7S7Q4E2Y-BP501AxR.js → pieDiagram-7S7Q4E2Y-xRkTXnJC.js} +1 -1
- package/dist/worker/console/static/assets/{quadrantDiagram-CIZ2JOQS-D1dBhl_A.js → quadrantDiagram-CIZ2JOQS-_9UC5Zio.js} +1 -1
- package/dist/worker/console/static/assets/{railroadDiagram-AXF67PYL-DgZDS5pY.js → railroadDiagram-AXF67PYL-CgEUirWJ.js} +1 -1
- package/dist/worker/console/static/assets/{requirementDiagram-LRYGKXZP-BzB3pyIq.js → requirementDiagram-LRYGKXZP-Czbpwiyz.js} +1 -1
- package/dist/worker/console/static/assets/{sankeyDiagram-W5VNT64P-B9ZprFFP.js → sankeyDiagram-W5VNT64P-_j7_KiqY.js} +1 -1
- package/dist/worker/console/static/assets/{sequenceDiagram-SI44F4Z6-CC2-_XrA.js → sequenceDiagram-SI44F4Z6-BNJa6Hyi.js} +1 -1
- package/dist/worker/console/static/assets/{sizeCapture-X5ZJPWSS-UVtAUqgB.js → sizeCapture-X5ZJPWSS-DedpKtOc.js} +1 -1
- package/dist/worker/console/static/assets/{stateDiagram-OKZ733FA-CWcS5JYG.js → stateDiagram-OKZ733FA-BBvthr7c.js} +1 -1
- package/dist/worker/console/static/assets/stateDiagram-v2-UEYNNEHI-BABVQnfM.js +1 -0
- package/dist/worker/console/static/assets/{swimlanes-SLNWSIFB-C4p-dn06.js → swimlanes-SLNWSIFB-Ds7umgEM.js} +2 -2
- package/dist/worker/console/static/assets/swimlanesDiagram-ULZ7WXOC-D0qsLaxR.js +8 -0
- package/dist/worker/console/static/assets/{timeline-definition-Z64GVDOM-Dnz52OHX.js → timeline-definition-Z64GVDOM-CKa-p1nF.js} +1 -1
- package/dist/worker/console/static/assets/{vennDiagram-T6HMQDX7-CzTE0Nfu.js → vennDiagram-T6HMQDX7-LoUNR56o.js} +1 -1
- package/dist/worker/console/static/assets/{wardleyDiagram-T6FBY63Y-NAR9cjQQ.js → wardleyDiagram-T6FBY63Y-Bqbl6ym7.js} +1 -1
- package/dist/worker/console/static/assets/{xychartDiagram-ELKLHX3M-DVMk8413.js → xychartDiagram-ELKLHX3M-B8dUg4lf.js} +1 -1
- package/dist/worker/console/static/index.html +2 -2
- package/dist/worker/console/static-src/operator-chat/active-turn-tail.js +10 -0
- package/dist/worker/console/static-src/operator-chat/compaction-message.js +7 -0
- package/dist/worker/console/static-src/operator-chat/turn-process-disclosure.js +10 -0
- package/dist/worker/console/static-src/operator-chat/useChatSessions.js +13 -6
- package/dist/worker/console/static-src/operator-chat/useChatThread.js +2 -4
- package/dist/worker/console/static-src/operator-chat/useComposer.js +13 -4
- package/dist/worker/observe/static/styles.css +7 -4
- package/dist/worker/observe/static/views/dag-inspector.js +5 -19
- package/package.json +1 -1
- package/dist/worker/console/static/assets/channel-B6sQYuOE.js +0 -1
- package/dist/worker/console/static/assets/classDiagram-JCYQIIEL-Z6s5QoeI.js +0 -1
- package/dist/worker/console/static/assets/classDiagram-v2-OCEON4UE-Z6s5QoeI.js +0 -1
- package/dist/worker/console/static/assets/index-aF4u-Y__.css +0 -1
- package/dist/worker/console/static/assets/stateDiagram-v2-UEYNNEHI-BooX8u1Q.js +0 -1
- package/dist/worker/console/static/assets/swimlanesDiagram-ULZ7WXOC-D64_eqqE.js +0 -8
|
@@ -4161,27 +4161,42 @@ export async function handleChatCompact(req, res, deps, sessionId) {
|
|
|
4161
4161
|
});
|
|
4162
4162
|
try {
|
|
4163
4163
|
const snapshot = await deps.runtime.compact(sessionId, customInstructions);
|
|
4164
|
+
const completedAt = new Date().toISOString();
|
|
4165
|
+
const completedData = {
|
|
4166
|
+
schemaVersion: 1,
|
|
4167
|
+
compactionId,
|
|
4168
|
+
reason: "manual",
|
|
4169
|
+
status: "completed",
|
|
4170
|
+
summary: snapshot.summary,
|
|
4171
|
+
...(snapshot.firstKeptEntryId
|
|
4172
|
+
? { firstKeptEntryId: snapshot.firstKeptEntryId }
|
|
4173
|
+
: {}),
|
|
4174
|
+
...(snapshot.tokensBefore === undefined
|
|
4175
|
+
? {}
|
|
4176
|
+
: { tokensBefore: snapshot.tokensBefore }),
|
|
4177
|
+
...(snapshot.estimatedTokensAfter === undefined
|
|
4178
|
+
? {}
|
|
4179
|
+
: { estimatedTokensAfter: snapshot.estimatedTokensAfter }),
|
|
4180
|
+
willRetry: false,
|
|
4181
|
+
};
|
|
4164
4182
|
const event = deps.events.append(sessionId, turnId, {
|
|
4165
4183
|
kind: "compaction_end",
|
|
4166
|
-
|
|
4167
|
-
|
|
4168
|
-
|
|
4169
|
-
|
|
4170
|
-
|
|
4171
|
-
|
|
4172
|
-
|
|
4173
|
-
|
|
4174
|
-
|
|
4175
|
-
|
|
4176
|
-
|
|
4177
|
-
|
|
4178
|
-
|
|
4179
|
-
|
|
4180
|
-
: { estimatedTokensAfter: snapshot.estimatedTokensAfter }),
|
|
4181
|
-
willRetry: false,
|
|
4184
|
+
at: completedAt,
|
|
4185
|
+
data: completedData,
|
|
4186
|
+
});
|
|
4187
|
+
sendJson(res, 200, {
|
|
4188
|
+
ok: true,
|
|
4189
|
+
snapshot,
|
|
4190
|
+
eventId: event.eventId,
|
|
4191
|
+
compaction: {
|
|
4192
|
+
eventId: event.eventId,
|
|
4193
|
+
kind: "compaction_end",
|
|
4194
|
+
at: completedAt,
|
|
4195
|
+
seq: event.seq,
|
|
4196
|
+
turnId,
|
|
4197
|
+
data: completedData,
|
|
4182
4198
|
},
|
|
4183
4199
|
});
|
|
4184
|
-
sendJson(res, 200, { ok: true, snapshot, eventId: event.eventId });
|
|
4185
4200
|
}
|
|
4186
4201
|
catch (error) {
|
|
4187
4202
|
const classified = classifyChatCompactionFailure(error);
|
|
@@ -16,6 +16,7 @@
|
|
|
16
16
|
import { spawn as ptySpawn } from "node-pty";
|
|
17
17
|
import { existsSync } from "node:fs";
|
|
18
18
|
import { randomBytes } from "node:crypto";
|
|
19
|
+
import { release as osRelease } from "node:os";
|
|
19
20
|
/** Bounded ring buffer of raw output chunks (bytes preserved as utf8 text). */
|
|
20
21
|
const MAX_BUFFER_CHARS = 200_000;
|
|
21
22
|
export class TerminalSessionError extends Error {
|
|
@@ -97,6 +98,51 @@ function resolveZsh() {
|
|
|
97
98
|
const file = firstExisting(["/bin/zsh", "/usr/bin/zsh", "/usr/local/bin/zsh", "/opt/homebrew/bin/zsh"]);
|
|
98
99
|
return file ? { file, args: ["-i"] } : undefined;
|
|
99
100
|
}
|
|
101
|
+
/** Windows `cmd.exe`. Always present on Windows; offered alongside
|
|
102
|
+
* PowerShell so users can use native Windows tooling (`dir`, `where`,
|
|
103
|
+
* `mklink`, `net user`, etc.) without leaving the terminal panel.
|
|
104
|
+
* - `/Q` turns off command echo (otherwise cmd echoes every input line,
|
|
105
|
+
* doubling every prompt in PTY output).
|
|
106
|
+
* - `/D` disables AutoRun execution from the registry (avoid running the
|
|
107
|
+
* user's HKCU\...\RunOnce / autorun scripts on every fresh shell).
|
|
108
|
+
* - `/K "prompt $P$G"` keeps the shell alive across tool calls (cwd/env
|
|
109
|
+
* survive) and uses the classic cmd prompt `C:\path>` instead of the
|
|
110
|
+
* bare `>`, so the user can see the working directory at a glance —
|
|
111
|
+
* matching the default `cmd.exe` window. */
|
|
112
|
+
function resolveCmd() {
|
|
113
|
+
if (!IS_WINDOWS)
|
|
114
|
+
return undefined;
|
|
115
|
+
const file = firstExisting([
|
|
116
|
+
"C:\\Windows\\System32\\cmd.exe",
|
|
117
|
+
// Wine / uncommon layouts
|
|
118
|
+
"C:\\Windows\\Sysnative\\cmd.exe",
|
|
119
|
+
]);
|
|
120
|
+
if (!file)
|
|
121
|
+
return undefined;
|
|
122
|
+
return {
|
|
123
|
+
file,
|
|
124
|
+
args: ["/Q", "/D", "/K", "prompt $P$G"],
|
|
125
|
+
};
|
|
126
|
+
}
|
|
127
|
+
/** Synthesize the cmd.exe startup banner that node-pty drops. cmd prints
|
|
128
|
+
* `Microsoft Windows [版本 10.0.26200]\n(c) Microsoft Corporation。保留所有权利。`
|
|
129
|
+
* via `WriteConsole` BEFORE ConPTY attaches to its stdio handles, so
|
|
130
|
+
* node-pty / ConPTY never sees those writes. We re-emit an equivalent
|
|
131
|
+
* banner using `os.release()` (kernel build, e.g. "10.0.26200") so the
|
|
132
|
+
* console terminal looks like a real cmd window. The leading \r\n avoids
|
|
133
|
+
* the banner colliding with whatever ANSI preamble ConPTY already sent.
|
|
134
|
+
*
|
|
135
|
+
* Only meaningful for the cmd shell — bash and PowerShell on Windows have
|
|
136
|
+
* their own startup output that we must NOT paper over with a Windows
|
|
137
|
+
* banner they don't print. */
|
|
138
|
+
function makeCmdBanner(shell) {
|
|
139
|
+
if (!IS_WINDOWS)
|
|
140
|
+
return undefined;
|
|
141
|
+
if (shell !== "cmd")
|
|
142
|
+
return undefined;
|
|
143
|
+
const build = osRelease();
|
|
144
|
+
return `\r\nMicrosoft Windows [版本 ${build}]\r\n(c) Microsoft Corporation。保留所有权利。\r\n\r\n`;
|
|
145
|
+
}
|
|
100
146
|
let cachedCatalog;
|
|
101
147
|
/** Platform shell catalog, computed once per process. Drives both the UI
|
|
102
148
|
* button set and the model tool's shell parameter enum. */
|
|
@@ -113,6 +159,9 @@ export function availableShellKinds() {
|
|
|
113
159
|
const zsh = resolveZsh();
|
|
114
160
|
if (zsh)
|
|
115
161
|
resolved.set("zsh", zsh);
|
|
162
|
+
const cmd = resolveCmd();
|
|
163
|
+
if (cmd)
|
|
164
|
+
resolved.set("cmd", cmd);
|
|
116
165
|
cachedCatalog = { kinds: [...resolved.keys()], resolved };
|
|
117
166
|
return cachedCatalog;
|
|
118
167
|
}
|
|
@@ -165,10 +214,18 @@ export class TerminalSessionRegistry {
|
|
|
165
214
|
bufferChars: 0,
|
|
166
215
|
subscribers: new Set(),
|
|
167
216
|
disposing: undefined,
|
|
217
|
+
pendingBanner: makeCmdBanner(options.shell) ?? undefined,
|
|
168
218
|
};
|
|
169
219
|
this.entries.set(sessionId, entry);
|
|
170
220
|
pty.onData((chunk) => {
|
|
171
221
|
entry.info.totalOutputChars += chunk.length;
|
|
222
|
+
// Inject the synthesized cmd banner into the FIRST chunk the
|
|
223
|
+
// subscribers see, so SSE/streaming attaches still see it even
|
|
224
|
+
// though node-pty already missed cmd's real banner.
|
|
225
|
+
if (entry.pendingBanner !== undefined) {
|
|
226
|
+
chunk = entry.pendingBanner + chunk;
|
|
227
|
+
entry.pendingBanner = undefined;
|
|
228
|
+
}
|
|
172
229
|
entry.buffer.push(chunk);
|
|
173
230
|
entry.bufferChars += chunk.length;
|
|
174
231
|
while (entry.bufferChars > MAX_BUFFER_CHARS && entry.buffer.length > 1) {
|
|
@@ -219,8 +276,15 @@ export class TerminalSessionRegistry {
|
|
|
219
276
|
/** Full buffered output (post-trim prefix may be incomplete). */
|
|
220
277
|
readAll(sessionId) {
|
|
221
278
|
const entry = this.mustGet(sessionId);
|
|
279
|
+
let text = entry.buffer.join("");
|
|
280
|
+
// If the caller reads before any real PTY output has arrived, the
|
|
281
|
+
// banner injection in onData hasn't fired yet — fold it in here.
|
|
282
|
+
if (entry.pendingBanner !== undefined) {
|
|
283
|
+
text = entry.pendingBanner + text;
|
|
284
|
+
entry.pendingBanner = undefined;
|
|
285
|
+
}
|
|
222
286
|
return {
|
|
223
|
-
text
|
|
287
|
+
text,
|
|
224
288
|
truncated: entry.info.totalOutputChars > entry.bufferChars,
|
|
225
289
|
totalOutputChars: entry.info.totalOutputChars,
|
|
226
290
|
};
|
|
@@ -48,10 +48,16 @@ export async function buildPersistentTerminalTools(deps) {
|
|
|
48
48
|
const marker = `${MARKER_PREFIX}${Date.now().toString(36)}${Math.random()
|
|
49
49
|
.toString(36)
|
|
50
50
|
.slice(2, 8)}`;
|
|
51
|
-
// Exit-code echo
|
|
51
|
+
// Exit-code echo per shell:
|
|
52
|
+
// - PowerShell: $LASTEXITCODE
|
|
53
|
+
// - bash / zsh: $?
|
|
54
|
+
// - cmd.exe: %ERRORLEVEL% (interpolation happens before echo runs,
|
|
55
|
+
// so we use `prompt` substitution style `echo MARKER:%ERRORLEVEL%`).
|
|
52
56
|
const exitEcho = kind === "powershell"
|
|
53
57
|
? `Write-Host "${marker}:$LASTEXITCODE"`
|
|
54
|
-
:
|
|
58
|
+
: kind === "cmd"
|
|
59
|
+
? `echo ${marker}:%ERRORLEVEL%`
|
|
60
|
+
: `echo "${marker}:$?"`;
|
|
55
61
|
const wrapped = `${command}\n${exitEcho}\n`;
|
|
56
62
|
// Capture output from the moment of send until the marker line shows up.
|
|
57
63
|
const pending = [];
|
|
@@ -122,15 +128,21 @@ export async function buildPersistentTerminalTools(deps) {
|
|
|
122
128
|
});
|
|
123
129
|
};
|
|
124
130
|
const kinds = availableShellKinds().kinds;
|
|
131
|
+
// Default precedence: bash (most posix-feel for cross-platform models) →
|
|
132
|
+
// cmd (native Windows shell, offered when bash is absent) → zsh (macOS
|
|
133
|
+
// default on some dev boxes) → powershell (universal Windows fallback).
|
|
125
134
|
const defaultKind = kinds.includes("bash")
|
|
126
135
|
? "bash"
|
|
127
|
-
: kinds.includes("
|
|
128
|
-
? "
|
|
129
|
-
: "
|
|
136
|
+
: kinds.includes("cmd")
|
|
137
|
+
? "cmd"
|
|
138
|
+
: kinds.includes("zsh")
|
|
139
|
+
? "zsh"
|
|
140
|
+
: "powershell";
|
|
130
141
|
const kindLabels = {
|
|
131
142
|
powershell: "PowerShell",
|
|
132
143
|
bash: "bash",
|
|
133
144
|
zsh: "zsh",
|
|
145
|
+
cmd: "cmd",
|
|
134
146
|
};
|
|
135
147
|
const tool = defineTool({
|
|
136
148
|
name: "terminal",
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{g as p,r as u,d as a}from"./chunk-6Q2QTUOP-
|
|
1
|
+
import{g as p,r as u,d as a}from"./chunk-6Q2QTUOP-Dwd6r-SF.js";import{p as f}from"./chunk-JWPE2WC7-CuGp0DeE.js";import{_ as n,l as o}from"./mermaid.core-p2l8IrWY.js";import{M as c,b as d}from"./cynefin-VYW2F7L2-BdXcxtlb.js";import"./index-24jp3aBh.js";var v=d().RailroadAbnf.parser.LangiumParser,i=n(e=>{const r=e.alternatives.map(g);return r.length===1?r[0]:{type:"choice",alternatives:r}},"transformAlternation"),g=n(e=>{const r=e.elements.map(y);return r.length===1?r[0]:{type:"sequence",elements:r}},"transformConcatenation"),b=n(e=>{if(e.includes("*")){const[t,s]=e.split("*"),l=t?parseInt(t,10):0,m=s?parseInt(s,10):1/0;return{min:l,max:m}}const r=parseInt(e,10);return{min:r,max:r}},"parseRepeat"),y=n(e=>{const r=A(e.primary);if(!e.repeat)return r;const{min:t,max:s}=b(e.repeat);return t===0&&s===1?{type:"optional",element:r}:{type:"repetition",element:r,min:t,max:s}},"transformElement"),A=n(e=>{switch(e.$type){case"AbnfStringLiteral":return{type:"terminal",value:e.value};case"AbnfNumVal":return{type:"terminal",value:e.value};case"AbnfRuleName":return{type:"nonterminal",name:e.name};case"AbnfGroup":return i(e.element);case"AbnfOptionalGroup":return{type:"optional",element:i(e.element)};default:throw new Error(`Unsupported ABNF primary node: ${e.$type}`)}},"transformPrimary"),P=n(e=>({name:e.name,definition:i(e.definition)}),"transformRule"),h=n(e=>{f(e,a),e.title&&a.setTitle(e.title),e.rules.map(r=>a.addRule(P(r)))},"populateDb"),R={parse:n(e=>{a.clear(),o.debug("[ABNF Parser] Starting Langium parse");const r=v.parse(e);if(r.lexerErrors.length>0||r.parserErrors.length>0)throw new c(r);const t=r.value;o.debug("[ABNF Parser] Parsed rules:",t.rules.length),h(t),o.debug("[ABNF Parser] Parse complete")},"parse"),parser:{yy:a}},B={parser:R,db:a,renderer:u,styles:p};export{B as diagram};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{Y as ln,$ as an,a0 as F,a1 as q,a2 as j,a3 as un,a4 as y,a5 as tn,a6 as J,a7 as _,a8 as rn,a9 as o,aa as on,ab as sn,ac as fn}from"./mermaid.core-
|
|
1
|
+
import{Y as ln,$ as an,a0 as F,a1 as q,a2 as j,a3 as un,a4 as y,a5 as tn,a6 as J,a7 as _,a8 as rn,a9 as o,aa as on,ab as sn,ac as fn}from"./mermaid.core-p2l8IrWY.js";function cn(l){return l.innerRadius}function yn(l){return l.outerRadius}function gn(l){return l.startAngle}function dn(l){return l.endAngle}function mn(l){return l&&l.padAngle}function pn(l,h,I,D,v,A,z,a){var O=I-l,i=D-h,n=z-v,d=a-A,u=d*O-n*i;if(!(u*u<y))return u=(n*(h-A)-d*(l-v))/u,[l+u*O,h+u*i]}function U(l,h,I,D,v,A,z){var a=l-I,O=h-D,i=(z?A:-A)/J(a*a+O*O),n=i*O,d=-i*a,u=l+n,s=h+d,f=I+n,c=D+d,B=(u+f)/2,t=(s+c)/2,m=f-u,g=c-s,R=m*m+g*g,T=v-A,P=u*c-f*s,S=(g<0?-1:1)*J(on(0,T*T*R-P*P)),Y=(P*g-m*S)/R,$=(-P*m-g*S)/R,w=(P*g+m*S)/R,p=(-P*m+g*S)/R,x=Y-B,e=$-t,r=w-B,C=p-t;return x*x+e*e>r*r+C*C&&(Y=w,$=p),{cx:Y,cy:$,x01:-n,y01:-d,x11:Y*(v/T-1),y11:$*(v/T-1)}}function hn(){var l=cn,h=yn,I=j(0),D=null,v=gn,A=dn,z=mn,a=null,O=ln(i);function i(){var n,d,u=+l.apply(this,arguments),s=+h.apply(this,arguments),f=v.apply(this,arguments)-un,c=A.apply(this,arguments)-un,B=rn(c-f),t=c>f;if(a||(a=n=O()),s<u&&(d=s,s=u,u=d),!(s>y))a.moveTo(0,0);else if(B>tn-y)a.moveTo(s*F(f),s*q(f)),a.arc(0,0,s,f,c,!t),u>y&&(a.moveTo(u*F(c),u*q(c)),a.arc(0,0,u,c,f,t));else{var m=f,g=c,R=f,T=c,P=B,S=B,Y=z.apply(this,arguments)/2,$=Y>y&&(D?+D.apply(this,arguments):J(u*u+s*s)),w=_(rn(s-u)/2,+I.apply(this,arguments)),p=w,x=w,e,r;if($>y){var C=sn($/u*q(Y)),K=sn($/s*q(Y));(P-=C*2)>y?(C*=t?1:-1,R+=C,T-=C):(P=0,R=T=(f+c)/2),(S-=K*2)>y?(K*=t?1:-1,m+=K,g-=K):(S=0,m=g=(f+c)/2)}var G=s*F(m),H=s*q(m),L=u*F(T),M=u*q(T);if(w>y){var N=s*F(g),Q=s*q(g),V=u*F(R),W=u*q(R),E;if(B<an)if(E=pn(G,H,V,W,N,Q,L,M)){var X=G-E[0],Z=H-E[1],b=N-E[0],k=Q-E[1],nn=1/q(fn((X*b+Z*k)/(J(X*X+Z*Z)*J(b*b+k*k)))/2),en=J(E[0]*E[0]+E[1]*E[1]);p=_(w,(u-en)/(nn-1)),x=_(w,(s-en)/(nn+1))}else p=x=0}S>y?x>y?(e=U(V,W,G,H,s,x,t),r=U(N,Q,L,M,s,x,t),a.moveTo(e.cx+e.x01,e.cy+e.y01),x<w?a.arc(e.cx,e.cy,x,o(e.y01,e.x01),o(r.y01,r.x01),!t):(a.arc(e.cx,e.cy,x,o(e.y01,e.x01),o(e.y11,e.x11),!t),a.arc(0,0,s,o(e.cy+e.y11,e.cx+e.x11),o(r.cy+r.y11,r.cx+r.x11),!t),a.arc(r.cx,r.cy,x,o(r.y11,r.x11),o(r.y01,r.x01),!t))):(a.moveTo(G,H),a.arc(0,0,s,m,g,!t)):a.moveTo(G,H),!(u>y)||!(P>y)?a.lineTo(L,M):p>y?(e=U(L,M,N,Q,u,-p,t),r=U(G,H,V,W,u,-p,t),a.lineTo(e.cx+e.x01,e.cy+e.y01),p<w?a.arc(e.cx,e.cy,p,o(e.y01,e.x01),o(r.y01,r.x01),!t):(a.arc(e.cx,e.cy,p,o(e.y01,e.x01),o(e.y11,e.x11),!t),a.arc(0,0,u,o(e.cy+e.y11,e.cx+e.x11),o(r.cy+r.y11,r.cx+r.x11),t),a.arc(r.cx,r.cy,p,o(r.y11,r.x11),o(r.y01,r.x01),!t))):a.arc(0,0,u,T,R,t)}if(a.closePath(),n)return a=null,n+""||null}return i.centroid=function(){var n=(+l.apply(this,arguments)+ +h.apply(this,arguments))/2,d=(+v.apply(this,arguments)+ +A.apply(this,arguments))/2-an/2;return[F(d)*n,q(d)*n]},i.innerRadius=function(n){return arguments.length?(l=typeof n=="function"?n:j(+n),i):l},i.outerRadius=function(n){return arguments.length?(h=typeof n=="function"?n:j(+n),i):h},i.cornerRadius=function(n){return arguments.length?(I=typeof n=="function"?n:j(+n),i):I},i.padRadius=function(n){return arguments.length?(D=n==null?null:typeof n=="function"?n:j(+n),i):D},i.startAngle=function(n){return arguments.length?(v=typeof n=="function"?n:j(+n),i):v},i.endAngle=function(n){return arguments.length?(A=typeof n=="function"?n:j(+n),i):A},i.padAngle=function(n){return arguments.length?(z=typeof n=="function"?n:j(+n),i):z},i.context=function(n){return arguments.length?(a=n??null,i):a},i}export{hn as d};
|