@clemrig/flow 0.9.0 → 0.11.0
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/README.md +3 -3
- package/dist/app/run.js +14 -23
- package/dist/app/run.js.map +1 -1
- package/dist/engine/types.d.ts +50 -1
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/system/process.d.ts +57 -10
- package/dist/system/process.js +212 -31
- package/dist/system/process.js.map +1 -1
- package/dist/system/runtimes/adapter.d.ts +53 -1
- package/dist/system/runtimes/adapter.js.map +1 -1
- package/dist/system/runtimes/agent-runtime.d.ts +8 -3
- package/dist/system/runtimes/agent-runtime.js +93 -9
- package/dist/system/runtimes/agent-runtime.js.map +1 -1
- package/dist/system/runtimes/claude-code.d.ts +5 -2
- package/dist/system/runtimes/claude-code.js +381 -12
- package/dist/system/runtimes/claude-code.js.map +1 -1
- package/dist/system/runtimes/inspect.js +10 -2
- package/dist/system/runtimes/inspect.js.map +1 -1
- package/dist/system/runtimes/pi.d.ts +3 -2
- package/dist/system/runtimes/pi.js +186 -8
- package/dist/system/runtimes/pi.js.map +1 -1
- package/package.json +1 -1
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
import { createHash } from "node:crypto";
|
|
2
|
-
import { existsSync, writeFileSync } from "node:fs";
|
|
1
|
+
import { createHash, randomUUID } from "node:crypto";
|
|
2
|
+
import { existsSync, readFileSync, writeFileSync } from "node:fs";
|
|
3
|
+
import { rename, writeFile } from "node:fs/promises";
|
|
3
4
|
import { isAbsolute, join, resolve } from "node:path";
|
|
4
5
|
import { z } from "zod";
|
|
5
6
|
import { runtimeLabels } from "../../engine/profiles.js";
|
|
@@ -10,12 +11,78 @@ const anyEvent = z.looseObject({
|
|
|
10
11
|
type: z.string(),
|
|
11
12
|
subtype: z.unknown().optional(),
|
|
12
13
|
});
|
|
14
|
+
/**
|
|
15
|
+
* The background tasks still running, whenever they change: commands (Bash and
|
|
16
|
+
* Monitor watches, `local_bash`), sub-agents and others; Claude Code's own are
|
|
17
|
+
* `ambient` (its Agent SDK reference).
|
|
18
|
+
*/
|
|
19
|
+
const backgroundTasksEvent = z.looseObject({
|
|
20
|
+
tasks: z.array(z.looseObject({
|
|
21
|
+
task_type: z.string(),
|
|
22
|
+
ambient: z.boolean().optional(),
|
|
23
|
+
})),
|
|
24
|
+
});
|
|
25
|
+
/** What still runs for the agent: a task other than a command may feed its answer. */
|
|
26
|
+
function backgroundOf(tasks) {
|
|
27
|
+
const commands = tasks.filter(({ task_type }) => task_type === "local_bash").length;
|
|
28
|
+
return { agents: tasks.length - commands, commands };
|
|
29
|
+
}
|
|
13
30
|
/** The session started: its tools and MCP servers confirm what the profile grants. */
|
|
14
31
|
const initEvent = z.looseObject({
|
|
15
32
|
session_id: z.string(),
|
|
16
33
|
tools: z.array(z.string()),
|
|
17
34
|
mcp_servers: z.array(z.looseObject({ name: z.string(), status: z.string() })),
|
|
18
35
|
});
|
|
36
|
+
/** The rest of what `init` announces, kept as the session's configuration; never required. */
|
|
37
|
+
const initDetails = z.looseObject({
|
|
38
|
+
claude_code_version: z.string().optional(),
|
|
39
|
+
model: z.string().optional(),
|
|
40
|
+
permissionMode: z.string().optional(),
|
|
41
|
+
apiKeySource: z.string().optional(),
|
|
42
|
+
output_style: z.string().optional(),
|
|
43
|
+
plugins: z.array(z.looseObject({ name: z.string() })).optional(),
|
|
44
|
+
skills: z.array(z.unknown()).optional(),
|
|
45
|
+
agents: z.array(z.unknown()).optional(),
|
|
46
|
+
slash_commands: z.array(z.unknown()).optional(),
|
|
47
|
+
});
|
|
48
|
+
/** A subscription limit's state, as Claude Code reports it during a call. */
|
|
49
|
+
const rateLimitEvent = z.looseObject({
|
|
50
|
+
rate_limit_info: z.looseObject({
|
|
51
|
+
status: z.string(),
|
|
52
|
+
rateLimitType: z.string().optional(),
|
|
53
|
+
resetsAt: z.number().optional(),
|
|
54
|
+
}),
|
|
55
|
+
});
|
|
56
|
+
/** A tool the session refused, from the call's result. */
|
|
57
|
+
const permissionDenials = z.array(z.looseObject({ tool_name: z.string(), tool_use_id: z.unknown().optional() }));
|
|
58
|
+
/** A hook that ran, as `--include-hook-events` reports it; its start tells nothing more. */
|
|
59
|
+
const hookResponse = z.looseObject({
|
|
60
|
+
hook_name: z.string(),
|
|
61
|
+
outcome: z.string(),
|
|
62
|
+
exit_code: z.number().optional(),
|
|
63
|
+
output: z.string().optional(),
|
|
64
|
+
});
|
|
65
|
+
/** A compaction's figures, as its boundary reports them. */
|
|
66
|
+
const compactBoundary = z.looseObject({
|
|
67
|
+
compact_metadata: z
|
|
68
|
+
.looseObject({
|
|
69
|
+
trigger: z.string().optional(),
|
|
70
|
+
pre_tokens: z.number().optional(),
|
|
71
|
+
post_tokens: z.number().optional(),
|
|
72
|
+
duration_ms: z.number().optional(),
|
|
73
|
+
})
|
|
74
|
+
.optional(),
|
|
75
|
+
});
|
|
76
|
+
/** A request Claude Code sends again; the error's fields only explain it. */
|
|
77
|
+
const apiRetry = z.looseObject({
|
|
78
|
+
attempt: z.number(),
|
|
79
|
+
max_retries: z.number(),
|
|
80
|
+
retry_delay_ms: z.number().optional(),
|
|
81
|
+
error_status: z.number().nullable().optional(),
|
|
82
|
+
error: z.unknown().optional(),
|
|
83
|
+
});
|
|
84
|
+
/** What a tool result says when a PreToolUse hook blocked the tool (2.1.302). */
|
|
85
|
+
const hookBlock = /^PreToolUse:\S* hook error/;
|
|
19
86
|
/** A content block; a tool use names its call and its tool, a tool result its call. */
|
|
20
87
|
const contentBlock = z
|
|
21
88
|
.looseObject({
|
|
@@ -24,6 +91,7 @@ const contentBlock = z
|
|
|
24
91
|
name: z.unknown().optional(),
|
|
25
92
|
tool_use_id: z.unknown().optional(),
|
|
26
93
|
is_error: z.boolean().optional(),
|
|
94
|
+
content: z.unknown().optional(),
|
|
27
95
|
})
|
|
28
96
|
.superRefine((block, context) => {
|
|
29
97
|
const required = block.type === "tool_use"
|
|
@@ -55,10 +123,132 @@ const resultEvent = z.looseObject({
|
|
|
55
123
|
is_error: z.boolean(),
|
|
56
124
|
result: z.unknown().optional(),
|
|
57
125
|
stop_reason: z.string().nullable().optional(),
|
|
126
|
+
/** Why the session stopped, set on an error result whose subtype is `success`. */
|
|
127
|
+
terminal_reason: z.unknown().optional(),
|
|
58
128
|
errors: z.unknown().optional(),
|
|
59
129
|
modelUsage: z.unknown().optional(),
|
|
130
|
+
permission_denials: z.unknown().optional(),
|
|
60
131
|
});
|
|
61
132
|
const text = (value) => (typeof value === "string" ? value : "");
|
|
133
|
+
const seconds = (ms) => `${Math.round(ms / 100) / 10} s`;
|
|
134
|
+
/** A tool result's text, given as a string or as text blocks. */
|
|
135
|
+
const resultText = (content) => typeof content === "string"
|
|
136
|
+
? content
|
|
137
|
+
: Array.isArray(content)
|
|
138
|
+
? content
|
|
139
|
+
.map((part) => typeof part === "object" && part !== null && "text" in part
|
|
140
|
+
? text(part.text)
|
|
141
|
+
: "")
|
|
142
|
+
.join("")
|
|
143
|
+
: "";
|
|
144
|
+
/** Tools with their count: `Bash ×2, Write`. */
|
|
145
|
+
const tally = (counts) => [...counts]
|
|
146
|
+
.map(([tool, count]) => (count > 1 ? `${tool} ×${count}` : tool))
|
|
147
|
+
.join(", ");
|
|
148
|
+
/** Names, from what `init` lists as names or as objects named. */
|
|
149
|
+
const names = (values) => (values ?? []).flatMap((value) => typeof value === "string"
|
|
150
|
+
? [value]
|
|
151
|
+
: typeof value === "object" &&
|
|
152
|
+
value !== null &&
|
|
153
|
+
"name" in value &&
|
|
154
|
+
typeof value.name === "string"
|
|
155
|
+
? [value.name]
|
|
156
|
+
: []);
|
|
157
|
+
/** The session's configuration as `init` announces it, and how it differs from the profile. */
|
|
158
|
+
function effective(profile, init, raw) {
|
|
159
|
+
const details = initDetails.safeParse(raw).data ?? {};
|
|
160
|
+
const granted = (profile.tools ?? []).flatMap((tool) => toolNames[tool] ?? [tool]);
|
|
161
|
+
// Built-in tools only: the machine's MCP servers are accepted as they are,
|
|
162
|
+
// and their tools are listed with the configuration.
|
|
163
|
+
const extra = profile.tools
|
|
164
|
+
? init.tools.filter((tool) => !granted.includes(tool) && !isMcpTool(tool))
|
|
165
|
+
: [];
|
|
166
|
+
return {
|
|
167
|
+
type: "effective",
|
|
168
|
+
config: {
|
|
169
|
+
version: details.claude_code_version,
|
|
170
|
+
model: details.model,
|
|
171
|
+
permissionMode: details.permissionMode,
|
|
172
|
+
tools: init.tools,
|
|
173
|
+
mcpServers: init.mcp_servers.map(({ name, status }) => ({
|
|
174
|
+
name,
|
|
175
|
+
status,
|
|
176
|
+
})),
|
|
177
|
+
plugins: (details.plugins ?? []).map(({ name }) => name),
|
|
178
|
+
skills: names(details.skills),
|
|
179
|
+
agents: names(details.agents),
|
|
180
|
+
slashCommands: names(details.slash_commands),
|
|
181
|
+
apiKeySource: details.apiKeySource,
|
|
182
|
+
outputStyle: details.output_style,
|
|
183
|
+
},
|
|
184
|
+
differences: [
|
|
185
|
+
// An alias such as `opus` is announced as the model it names.
|
|
186
|
+
...(details.model && !details.model.includes(profile.model)
|
|
187
|
+
? [`model ${details.model} instead of ${profile.model}`]
|
|
188
|
+
: []),
|
|
189
|
+
...(profile.permissionMode &&
|
|
190
|
+
details.permissionMode &&
|
|
191
|
+
details.permissionMode !== profile.permissionMode
|
|
192
|
+
? [
|
|
193
|
+
`permission mode ${details.permissionMode} instead of ${profile.permissionMode}`,
|
|
194
|
+
]
|
|
195
|
+
: []),
|
|
196
|
+
...(extra.length
|
|
197
|
+
? [`tools not in the profile: ${extra.join(", ")}`]
|
|
198
|
+
: []),
|
|
199
|
+
],
|
|
200
|
+
};
|
|
201
|
+
}
|
|
202
|
+
/**
|
|
203
|
+
* What the result tells beyond the answer: tools refused, those a hook blocked
|
|
204
|
+
* apart, which Claude Code counts as refused too; each model's cost in this
|
|
205
|
+
* call when it used several, from the session's totals before and after it.
|
|
206
|
+
*/
|
|
207
|
+
function resultNotices(result, blocked, before) {
|
|
208
|
+
const denied = permissionDenials.safeParse(result.permission_denials);
|
|
209
|
+
const refused = new Map();
|
|
210
|
+
const hooked = new Map();
|
|
211
|
+
for (const { tool_name, tool_use_id } of denied.success ? denied.data : []) {
|
|
212
|
+
const counts = typeof tool_use_id === "string" && blocked.has(tool_use_id)
|
|
213
|
+
? hooked
|
|
214
|
+
: refused;
|
|
215
|
+
counts.set(tool_name, (counts.get(tool_name) ?? 0) + 1);
|
|
216
|
+
}
|
|
217
|
+
const models = modelUsage.safeParse(result.modelUsage);
|
|
218
|
+
const used = (models.success ? Object.entries(models.data) : []).flatMap(([model, { costUSD }]) => {
|
|
219
|
+
const cost = costUSD - (before[model] ?? 0);
|
|
220
|
+
return cost > 0 ? [[model, cost]] : [];
|
|
221
|
+
});
|
|
222
|
+
return [
|
|
223
|
+
...(refused.size
|
|
224
|
+
? [
|
|
225
|
+
{
|
|
226
|
+
type: "notice",
|
|
227
|
+
notice: "denied",
|
|
228
|
+
message: `Permission denied: ${tally(refused)}`,
|
|
229
|
+
},
|
|
230
|
+
]
|
|
231
|
+
: []),
|
|
232
|
+
...(hooked.size
|
|
233
|
+
? [
|
|
234
|
+
{
|
|
235
|
+
type: "notice",
|
|
236
|
+
notice: "denied",
|
|
237
|
+
message: `Blocked by a PreToolUse hook: ${tally(hooked)}`,
|
|
238
|
+
},
|
|
239
|
+
]
|
|
240
|
+
: []),
|
|
241
|
+
...(used.length > 1
|
|
242
|
+
? [
|
|
243
|
+
{
|
|
244
|
+
type: "notice",
|
|
245
|
+
notice: "models",
|
|
246
|
+
message: `Models: ${used.map(([model, cost]) => `${model} $${cost.toFixed(4)}`).join(", ")}`,
|
|
247
|
+
},
|
|
248
|
+
]
|
|
249
|
+
: []),
|
|
250
|
+
];
|
|
251
|
+
}
|
|
62
252
|
/** Every model of the call, subagents and compactions included; measured on a best-effort basis. */
|
|
63
253
|
const modelUsage = z
|
|
64
254
|
.record(z.string(), z.looseObject({
|
|
@@ -157,6 +347,10 @@ function checkSession(profile, init) {
|
|
|
157
347
|
? failure(`${label} does not provide tools: ${missing.join(", ")}`)
|
|
158
348
|
: [];
|
|
159
349
|
}
|
|
350
|
+
/** A session's marker: its ID, and each model's cost so far in it, as its last result announced. */
|
|
351
|
+
const sessionMarker = z.looseObject({
|
|
352
|
+
models: z.record(z.string(), z.number()).optional(),
|
|
353
|
+
});
|
|
160
354
|
/** `claude auth status --json`; it also names the account, which is never read. */
|
|
161
355
|
const loginStatus = z.looseObject({
|
|
162
356
|
loggedIn: z.boolean(),
|
|
@@ -186,6 +380,29 @@ function readLogin(stdout) {
|
|
|
186
380
|
: `${status.authMethod ?? "unknown"} login`,
|
|
187
381
|
};
|
|
188
382
|
}
|
|
383
|
+
/** A word the shell reads as it is. */
|
|
384
|
+
const quoted = (word) => `'${word.replaceAll("'", "'\\''")}'`;
|
|
385
|
+
/**
|
|
386
|
+
* The script Claude Code runs before each Bash command, its sub-agents'
|
|
387
|
+
* included, in the shell that runs the command (`CLAUDE_ENV_FILE`, its
|
|
388
|
+
* documentation), written in the runtime's directory of the run. That shell
|
|
389
|
+
* leads the command's process group (observed with Claude Code 2.1.307): the
|
|
390
|
+
* script registers it where `FLOW_COMMAND_GROUPS` says, then runs the
|
|
391
|
+
* machine's own script, when it has one, as Claude Code would have.
|
|
392
|
+
*/
|
|
393
|
+
async function commandScript(directory) {
|
|
394
|
+
const machine = process.env.CLAUDE_ENV_FILE;
|
|
395
|
+
const path = join(directory, "command-env.sh");
|
|
396
|
+
// Calls at once each write it whole, then move it in place.
|
|
397
|
+
const written = `${path}.${randomUUID()}`;
|
|
398
|
+
await writeFile(written, [
|
|
399
|
+
`[ -n "$FLOW_COMMAND_GROUPS" ] && printf '%s %s\\n' "$$" "$(date +%s)" >> "$FLOW_COMMAND_GROUPS"`,
|
|
400
|
+
...(machine ? [`[ -r ${quoted(machine)} ] && . ${quoted(machine)}`] : []),
|
|
401
|
+
"",
|
|
402
|
+
].join("\n"), { mode: 0o600 });
|
|
403
|
+
await rename(written, path);
|
|
404
|
+
return path;
|
|
405
|
+
}
|
|
189
406
|
const failure = (message) => [
|
|
190
407
|
{ type: "failure", message },
|
|
191
408
|
];
|
|
@@ -193,8 +410,11 @@ const failure = (message) => [
|
|
|
193
410
|
* Claude Code in print mode, with the machine's configuration and the profile's
|
|
194
411
|
* settings. Its sessions need UUIDs: the run keeps a marker per session, so that
|
|
195
412
|
* the next call resumes it. At the end of each call, Claude Code announces its
|
|
196
|
-
* session's total, which is reported as it is.
|
|
197
|
-
*
|
|
413
|
+
* session's total, which is reported as it is. Each turn starts with an `init`
|
|
414
|
+
* and ends with a result, held back while a sub-agent runs; with the latest
|
|
415
|
+
* turn's result, the adapter tells what still runs in the background. On
|
|
416
|
+
* SIGTERM, Claude Code ends the process tree of its running commands (its
|
|
417
|
+
* documentation).
|
|
198
418
|
*/
|
|
199
419
|
export const claudeCode = {
|
|
200
420
|
name: "claude-code",
|
|
@@ -202,6 +422,11 @@ export const claudeCode = {
|
|
|
202
422
|
executable: "claude",
|
|
203
423
|
minimumVersion: "2.1.296",
|
|
204
424
|
stopSignal: "SIGTERM",
|
|
425
|
+
// As it stops, Claude Code runs its SessionEnd hooks, within 1.5 s or the
|
|
426
|
+
// longest timeout they declare, up to 60 s (its 2.1.306 binary).
|
|
427
|
+
stopGraceMs: 60_000,
|
|
428
|
+
// Through the script it runs before each command.
|
|
429
|
+
registersGroups: true,
|
|
205
430
|
// Its settings documentation: Anthropic and Claude Code variables, Bedrock and Vertex.
|
|
206
431
|
environment: /^(ANTHROPIC_|CLAUDE_|DISABLE_|MCP_|BASH_|AWS_|VERTEX_|CLOUD_ML_)|^MAX_THINKING_TOKENS$/,
|
|
207
432
|
connection: () => ({
|
|
@@ -219,15 +444,32 @@ export const claudeCode = {
|
|
|
219
444
|
: server,
|
|
220
445
|
])),
|
|
221
446
|
}),
|
|
222
|
-
async start({ profile, systemPrompt, session, sessions }) {
|
|
447
|
+
async start({ profile, systemPrompt, session, sessions, groups }) {
|
|
223
448
|
const name = agentSessionName(sessions.runId, session);
|
|
224
449
|
const sessionId = claudeCodeSessionId(name);
|
|
225
450
|
const marker = join(sessions.directory, name);
|
|
226
451
|
// `--session-id` refuses an existing session and `--resume` a missing one.
|
|
227
452
|
const created = existsSync(marker);
|
|
453
|
+
let before = {};
|
|
454
|
+
try {
|
|
455
|
+
if (created)
|
|
456
|
+
before =
|
|
457
|
+
sessionMarker.parse(JSON.parse(readFileSync(marker, "utf8")))
|
|
458
|
+
.models ?? {};
|
|
459
|
+
}
|
|
460
|
+
catch {
|
|
461
|
+
// A marker without costs: each model's cost counts from the session's start.
|
|
462
|
+
}
|
|
228
463
|
const tools = new Map();
|
|
229
464
|
const responses = new Set();
|
|
465
|
+
/** Tool calls a PreToolUse hook blocked. */
|
|
466
|
+
const blocked = new Set();
|
|
230
467
|
let initialized = false;
|
|
468
|
+
/** The agent's background tasks still running, as Claude Code last announced them. */
|
|
469
|
+
let background = [];
|
|
470
|
+
/** Turns started and results received: a result is the latest turn's once there are as many. */
|
|
471
|
+
let turns = 0;
|
|
472
|
+
let results = 0;
|
|
231
473
|
/** A main-loop response once, however many events carry it; unreadable tokens are not reported. */
|
|
232
474
|
const responseOf = (type, parent, message) => {
|
|
233
475
|
if (type !== "assistant" || parent || typeof message.id !== "string")
|
|
@@ -255,6 +497,8 @@ export const claudeCode = {
|
|
|
255
497
|
"--output-format",
|
|
256
498
|
"stream-json",
|
|
257
499
|
"--verbose",
|
|
500
|
+
// Each hook of the machine's configuration that runs, with its outcome.
|
|
501
|
+
"--include-hook-events",
|
|
258
502
|
...profileArgs(profile, systemPrompt, shown),
|
|
259
503
|
created ? "--resume" : "--session-id",
|
|
260
504
|
sessionId,
|
|
@@ -264,14 +508,23 @@ export const claudeCode = {
|
|
|
264
508
|
return {
|
|
265
509
|
args: command(false),
|
|
266
510
|
shown: command(true),
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
511
|
+
env: {
|
|
512
|
+
// Print mode stops background work, sub-agents included, after 10
|
|
513
|
+
// minutes without a turn and drops their reports: the call waits for
|
|
514
|
+
// its sub-agents instead, within its timeout (Claude Code's headless
|
|
515
|
+
// documentation). The agent's answer ends the call, with the commands
|
|
516
|
+
// it left in the background.
|
|
517
|
+
CLAUDE_CODE_PRINT_BG_WAIT_CEILING_MS: "0",
|
|
518
|
+
// Each command registers its process group: what it leaves running
|
|
519
|
+
// ends with the call.
|
|
520
|
+
CLAUDE_ENV_FILE: await commandScript(sessions.directory),
|
|
521
|
+
FLOW_COMMAND_GROUPS: groups,
|
|
522
|
+
},
|
|
271
523
|
read(raw) {
|
|
272
524
|
const event = parseEvent(label, anyEvent, raw);
|
|
273
525
|
if (event.type === "system" && event.subtype === "init") {
|
|
274
526
|
const init = parseEvent(label, initEvent, raw);
|
|
527
|
+
turns += 1;
|
|
275
528
|
if (init.session_id !== sessionId)
|
|
276
529
|
return failure(`${label} started session ${init.session_id} instead of ${sessionId}`);
|
|
277
530
|
if (!created)
|
|
@@ -279,7 +532,82 @@ export const claudeCode = {
|
|
|
279
532
|
mode: 0o600,
|
|
280
533
|
});
|
|
281
534
|
initialized = true;
|
|
282
|
-
|
|
535
|
+
// Its configuration first: it explains a session check that fails.
|
|
536
|
+
return [
|
|
537
|
+
effective(profile, init, raw),
|
|
538
|
+
...checkSession(profile, init),
|
|
539
|
+
];
|
|
540
|
+
}
|
|
541
|
+
if (event.type === "system" &&
|
|
542
|
+
event.subtype === "background_tasks_changed") {
|
|
543
|
+
background = parseEvent(label, backgroundTasksEvent, raw).tasks.filter(({ ambient }) => !ambient);
|
|
544
|
+
return [];
|
|
545
|
+
}
|
|
546
|
+
if (event.type === "rate_limit_event") {
|
|
547
|
+
const limit = rateLimitEvent.safeParse(raw);
|
|
548
|
+
if (!limit.success || limit.data.rate_limit_info.status === "allowed")
|
|
549
|
+
return [];
|
|
550
|
+
const { status, rateLimitType, resetsAt } = limit.data.rate_limit_info;
|
|
551
|
+
return [
|
|
552
|
+
{
|
|
553
|
+
type: "notice",
|
|
554
|
+
notice: "limit",
|
|
555
|
+
message: `Subscription limit ${status}${rateLimitType ? ` (${rateLimitType})` : ""}${resetsAt ? `, resets ${new Date(resetsAt * 1000).toISOString()}` : ""}`,
|
|
556
|
+
},
|
|
557
|
+
];
|
|
558
|
+
}
|
|
559
|
+
if (event.type === "system" && event.subtype === "hook_response") {
|
|
560
|
+
const hook = hookResponse.safeParse(raw);
|
|
561
|
+
if (!hook.success)
|
|
562
|
+
return [];
|
|
563
|
+
const { hook_name, outcome, exit_code, output } = hook.data;
|
|
564
|
+
const printed = output?.trim();
|
|
565
|
+
return [
|
|
566
|
+
{
|
|
567
|
+
type: "hook",
|
|
568
|
+
name: hook_name,
|
|
569
|
+
outcome,
|
|
570
|
+
...(exit_code === undefined ? {} : { exitCode: exit_code }),
|
|
571
|
+
...(printed
|
|
572
|
+
? {
|
|
573
|
+
output: printed.length > 300
|
|
574
|
+
? `${printed.slice(0, 300)}…`
|
|
575
|
+
: printed,
|
|
576
|
+
}
|
|
577
|
+
: {}),
|
|
578
|
+
},
|
|
579
|
+
];
|
|
580
|
+
}
|
|
581
|
+
if (event.type === "system" && event.subtype === "compact_boundary") {
|
|
582
|
+
const metadata = compactBoundary.safeParse(raw).data?.compact_metadata ?? {};
|
|
583
|
+
const { trigger, pre_tokens, post_tokens, duration_ms } = metadata;
|
|
584
|
+
const count = (tokens) => tokens.toLocaleString("en-US");
|
|
585
|
+
return [
|
|
586
|
+
{
|
|
587
|
+
type: "notice",
|
|
588
|
+
notice: "compaction",
|
|
589
|
+
message: `${label} compacted its conversation${trigger ? ` (${trigger})` : ""}${pre_tokens !== undefined && post_tokens !== undefined ? `: ${count(pre_tokens)} → ${count(post_tokens)} tokens` : ""}${duration_ms === undefined ? "" : ` in ${seconds(duration_ms)}`}`,
|
|
590
|
+
},
|
|
591
|
+
];
|
|
592
|
+
}
|
|
593
|
+
if (event.type === "system" && event.subtype === "api_retry") {
|
|
594
|
+
const retry = apiRetry.safeParse(raw);
|
|
595
|
+
if (!retry.success)
|
|
596
|
+
return [];
|
|
597
|
+
const { attempt, max_retries, retry_delay_ms, error_status, error } = retry.data;
|
|
598
|
+
const reason = [
|
|
599
|
+
text(error),
|
|
600
|
+
error_status ? `status ${error_status}` : "",
|
|
601
|
+
]
|
|
602
|
+
.filter(Boolean)
|
|
603
|
+
.join(", ");
|
|
604
|
+
return [
|
|
605
|
+
{
|
|
606
|
+
type: "notice",
|
|
607
|
+
notice: "retry",
|
|
608
|
+
message: `${label} retries (${attempt}/${max_retries})${retry_delay_ms === undefined ? "" : ` in ${seconds(retry_delay_ms)}`}${reason ? `: ${reason}` : ""}`,
|
|
609
|
+
},
|
|
610
|
+
];
|
|
283
611
|
}
|
|
284
612
|
if (event.type === "assistant" || event.type === "user") {
|
|
285
613
|
const { parent_tool_use_id: parent, message } = parseEvent(label, messageEvent, raw);
|
|
@@ -300,6 +628,8 @@ export const claudeCode = {
|
|
|
300
628
|
if (block.type !== "tool_result")
|
|
301
629
|
return [];
|
|
302
630
|
const id = String(block.tool_use_id);
|
|
631
|
+
if (block.is_error && hookBlock.test(resultText(block.content)))
|
|
632
|
+
blocked.add(id);
|
|
303
633
|
return [
|
|
304
634
|
{
|
|
305
635
|
type: "tool",
|
|
@@ -314,7 +644,9 @@ export const claudeCode = {
|
|
|
314
644
|
if (event.type !== "result")
|
|
315
645
|
return [];
|
|
316
646
|
const result = parseEvent(label, resultEvent, raw);
|
|
647
|
+
results += 1;
|
|
317
648
|
const total = usageOf(result.modelUsage);
|
|
649
|
+
const notices = resultNotices(result, blocked, before);
|
|
318
650
|
// A crash result may announce zeroed figures (Claude Code's cost tracking docs):
|
|
319
651
|
// nothing is measured, so the session keeps its earlier total.
|
|
320
652
|
const crashed = result.is_error &&
|
|
@@ -326,33 +658,70 @@ export const claudeCode = {
|
|
|
326
658
|
scope: "session",
|
|
327
659
|
usage: crashed ? undefined : total,
|
|
328
660
|
};
|
|
661
|
+
const models = modelUsage.safeParse(result.modelUsage);
|
|
662
|
+
// Only once the session started: the marker makes the next call resume it.
|
|
663
|
+
if (initialized && !crashed && models.success)
|
|
664
|
+
try {
|
|
665
|
+
writeFileSync(marker, `${JSON.stringify({
|
|
666
|
+
sessionId,
|
|
667
|
+
models: Object.fromEntries(Object.entries(models.data).map(([model, { costUSD }]) => [
|
|
668
|
+
model,
|
|
669
|
+
costUSD,
|
|
670
|
+
])),
|
|
671
|
+
})}\n`, { mode: 0o600 });
|
|
672
|
+
}
|
|
673
|
+
catch (error) {
|
|
674
|
+
notices.push({
|
|
675
|
+
type: "warning",
|
|
676
|
+
message: `${label} session's costs by model could not be kept for its next call: ${error instanceof Error ? error.message : String(error)}`,
|
|
677
|
+
});
|
|
678
|
+
}
|
|
329
679
|
if (result.is_error) {
|
|
330
680
|
const errors = Array.isArray(result.errors)
|
|
331
681
|
? result.errors.filter((error) => typeof error === "string")
|
|
332
682
|
: [];
|
|
683
|
+
// An API error ends the session with the subtype `success`: its reason says more.
|
|
684
|
+
const reason = result.subtype === "success"
|
|
685
|
+
? text(result.terminal_reason)
|
|
686
|
+
: text(result.subtype);
|
|
333
687
|
return [
|
|
688
|
+
...notices,
|
|
334
689
|
usage,
|
|
335
|
-
...failure(`${label} ${
|
|
690
|
+
...failure(`${label} ${reason || "error"}: ${text(result.result) || errors.join("; ") || "no detail provided"}`),
|
|
336
691
|
];
|
|
337
692
|
}
|
|
338
693
|
if (result.stop_reason && result.stop_reason !== "end_turn")
|
|
339
694
|
return [
|
|
695
|
+
...notices,
|
|
340
696
|
usage,
|
|
341
697
|
...failure(`${label} final response ended with stop reason ${result.stop_reason}`),
|
|
342
698
|
];
|
|
343
699
|
// Without an init event, neither the session nor what it grants was checked.
|
|
344
700
|
if (!initialized)
|
|
345
701
|
return [
|
|
702
|
+
...notices,
|
|
346
703
|
usage,
|
|
347
704
|
...failure(`${label} answered without reporting its session (init)`),
|
|
348
705
|
];
|
|
349
706
|
// A successful call's final text is what the stage receives.
|
|
350
707
|
if (typeof result.result !== "string")
|
|
351
708
|
return [
|
|
709
|
+
...notices,
|
|
352
710
|
usage,
|
|
353
711
|
...failure(`${label} emitted an unexpected result event: result: expected a string`),
|
|
354
712
|
];
|
|
355
|
-
return [
|
|
713
|
+
return [
|
|
714
|
+
...notices,
|
|
715
|
+
usage,
|
|
716
|
+
{
|
|
717
|
+
type: "result",
|
|
718
|
+
text: result.result,
|
|
719
|
+
// A result held back from an earlier turn comes before the latest one's.
|
|
720
|
+
...(results >= turns
|
|
721
|
+
? { background: backgroundOf(background) }
|
|
722
|
+
: {}),
|
|
723
|
+
},
|
|
724
|
+
];
|
|
356
725
|
},
|
|
357
726
|
};
|
|
358
727
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"claude-code.js","sourceRoot":"","sources":["../../../src/system/runtimes/claude-code.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"claude-code.js","sourceRoot":"","sources":["../../../src/system/runtimes/claude-code.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAClE,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACrD,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACtD,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EAIL,UAAU,EAGV,WAAW,GACZ,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAEjD,MAAM,KAAK,GAAG,aAAa,CAAC,aAAa,CAAC,CAAC;AAE3C,MAAM,QAAQ,GAAG,CAAC,CAAC,WAAW,CAAC;IAC7B,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;CAChC,CAAC,CAAC;AAEH;;;;GAIG;AACH,MAAM,oBAAoB,GAAG,CAAC,CAAC,WAAW,CAAC;IACzC,KAAK,EAAE,CAAC,CAAC,KAAK,CACZ,CAAC,CAAC,WAAW,CAAC;QACZ,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;QACrB,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;KAChC,CAAC,CACH;CACF,CAAC,CAAC;AAEH,sFAAsF;AACtF,SAAS,YAAY,CACnB,KAAoD;IAEpD,MAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,CAC3B,CAAC,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC,SAAS,KAAK,YAAY,CAC9C,CAAC,MAAM,CAAC;IACT,OAAO,EAAE,MAAM,EAAE,KAAK,CAAC,MAAM,GAAG,QAAQ,EAAE,QAAQ,EAAE,CAAC;AACvD,CAAC;AAED,sFAAsF;AACtF,MAAM,SAAS,GAAG,CAAC,CAAC,WAAW,CAAC;IAC9B,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE;IACtB,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;IAC1B,WAAW,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;CAC9E,CAAC,CAAC;AAEH,8FAA8F;AAC9F,MAAM,WAAW,GAAG,CAAC,CAAC,WAAW,CAAC;IAChC,mBAAmB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC1C,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAC5B,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACrC,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACnC,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACnC,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE;IAChE,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,EAAE;IACvC,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,EAAE;IACvC,cAAc,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,EAAE;CAChD,CAAC,CAAC;AAEH,6EAA6E;AAC7E,MAAM,cAAc,GAAG,CAAC,CAAC,WAAW,CAAC;IACnC,eAAe,EAAE,CAAC,CAAC,WAAW,CAAC;QAC7B,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE;QAClB,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QACpC,QAAQ,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;KAChC,CAAC;CACH,CAAC,CAAC;AAEH,0DAA0D;AAC1D,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAC/B,CAAC,CAAC,WAAW,CAAC,EAAE,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,WAAW,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,CAC9E,CAAC;AAEF,4FAA4F;AAC5F,MAAM,YAAY,GAAG,CAAC,CAAC,WAAW,CAAC;IACjC,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;IACrB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;IACnB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IAChC,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CAC9B,CAAC,CAAC;AAEH,4DAA4D;AAC5D,MAAM,eAAe,GAAG,CAAC,CAAC,WAAW,CAAC;IACpC,gBAAgB,EAAE,CAAC;SAChB,WAAW,CAAC;QACX,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAC9B,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QACjC,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;QAClC,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;KACnC,CAAC;SACD,QAAQ,EAAE;CACd,CAAC,CAAC;AAEH,6EAA6E;AAC7E,MAAM,QAAQ,GAAG,CAAC,CAAC,WAAW,CAAC;IAC7B,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;IACnB,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE;IACvB,cAAc,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACrC,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;IAC9C,KAAK,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;CAC9B,CAAC,CAAC;AAEH,iFAAiF;AACjF,MAAM,SAAS,GAAG,4BAA4B,CAAC;AAE/C,uFAAuF;AACvF,MAAM,YAAY,GAAG,CAAC;KACnB,WAAW,CAAC;IACX,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE;IAChB,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IAC1B,IAAI,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IAC5B,WAAW,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IACnC,QAAQ,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IAChC,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;CAChC,CAAC;KACD,WAAW,CAAC,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;IAC9B,MAAM,QAAQ,GACZ,KAAK,CAAC,IAAI,KAAK,UAAU;QACvB,CAAC,CAAE,CAAC,IAAI,EAAE,MAAM,CAAW;QAC3B,CAAC,CAAC,KAAK,CAAC,IAAI,KAAK,aAAa;YAC5B,CAAC,CAAE,CAAC,aAAa,CAAW;YAC5B,CAAC,CAAC,EAAE,CAAC;IACX,KAAK,MAAM,GAAG,IAAI,QAAQ;QACxB,IAAI,OAAO,KAAK,CAAC,GAAG,CAAC,KAAK,QAAQ;YAChC,OAAO,CAAC,QAAQ,CAAC;gBACf,IAAI,EAAE,QAAQ;gBACd,IAAI,EAAE,CAAC,GAAG,CAAC;gBACX,OAAO,EAAE,mBAAmB;aAC7B,CAAC,CAAC;AACT,CAAC,CAAC,CAAC;AAEL,MAAM,YAAY,GAAG,CAAC,CAAC,WAAW,CAAC;IACjC,oCAAoC;IACpC,kBAAkB,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IAC1C,OAAO,EAAE,CAAC,CAAC,WAAW,CAAC;QACrB,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;QAC1B,KAAK,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;QAC7B,mCAAmC;QACnC,OAAO,EAAE,CAAC,CAAC,UAAU,CACnB,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,OAAO,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,EACzD,CAAC,CAAC,KAAK,CAAC,YAAY,CAAC,CACtB;KACF,CAAC;CACH,CAAC,CAAC;AAEH,6FAA6F;AAC7F,MAAM,WAAW,GAAG,CAAC,CAAC,WAAW,CAAC;IAChC,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IAC/B,QAAQ,EAAE,CAAC,CAAC,OAAO,EAAE;IACrB,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IAC9B,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE,CAAC,QAAQ,EAAE;IAC7C,kFAAkF;IAClF,eAAe,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IACvC,MAAM,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IAC9B,UAAU,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;IAClC,kBAAkB,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,QAAQ,EAAE;CAC3C,CAAC,CAAC;AAEH,MAAM,IAAI,GAAG,CAAC,KAAc,EAAE,EAAE,CAAC,CAAC,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AAE1E,MAAM,OAAO,GAAG,CAAC,EAAU,EAAE,EAAE,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,GAAG,CAAC,GAAG,EAAE,IAAI,CAAC;AAEjE,iEAAiE;AACjE,MAAM,UAAU,GAAG,CAAC,OAAgB,EAAE,EAAE,CACtC,OAAO,OAAO,KAAK,QAAQ;IACzB,CAAC,CAAC,OAAO;IACT,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC;QACtB,CAAC,CAAC,OAAO;aACJ,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CACZ,OAAO,IAAI,KAAK,QAAQ,IAAI,IAAI,KAAK,IAAI,IAAI,MAAM,IAAI,IAAI;YACzD,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;YACjB,CAAC,CAAC,EAAE,CACP;aACA,IAAI,CAAC,EAAE,CAAC;QACb,CAAC,CAAC,EAAE,CAAC;AAEX,gDAAgD;AAChD,MAAM,KAAK,GAAG,CAAC,MAA2B,EAAE,EAAE,CAC5C,CAAC,GAAG,MAAM,CAAC;KACR,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,KAAK,KAAK,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;KAChE,IAAI,CAAC,IAAI,CAAC,CAAC;AAEhB,kEAAkE;AAClE,MAAM,KAAK,GAAG,CAAC,MAAsC,EAAE,EAAE,CACvD,CAAC,MAAM,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE,CAC/B,OAAO,KAAK,KAAK,QAAQ;IACvB,CAAC,CAAC,CAAC,KAAK,CAAC;IACT,CAAC,CAAC,OAAO,KAAK,KAAK,QAAQ;QACvB,KAAK,KAAK,IAAI;QACd,MAAM,IAAI,KAAK;QACf,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ;QAChC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC;QACd,CAAC,CAAC,EAAE,CACT,CAAC;AAEJ,+FAA+F;AAC/F,SAAS,SAAS,CAChB,OAAiC,EACjC,IAA+B,EAC/B,GAAY;IAEZ,MAAM,OAAO,GAAG,WAAW,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,IAAI,IAAI,EAAE,CAAC;IACtD,MAAM,OAAO,GAAG,CAAC,OAAO,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,OAAO,CAC3C,CAAC,IAAI,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CACpC,CAAC;IACF,2EAA2E;IAC3E,qDAAqD;IACrD,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK;QACzB,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;QAC1E,CAAC,CAAC,EAAE,CAAC;IACP,OAAO;QACL,IAAI,EAAE,WAAW;QACjB,MAAM,EAAE;YACN,OAAO,EAAE,OAAO,CAAC,mBAAmB;YACpC,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,cAAc,EAAE,OAAO,CAAC,cAAc;YACtC,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,UAAU,EAAE,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,CAAC;gBACtD,IAAI;gBACJ,MAAM;aACP,CAAC,CAAC;YACH,OAAO,EAAE,CAAC,OAAO,CAAC,OAAO,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,IAAI,CAAC;YACxD,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;YAC7B,MAAM,EAAE,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC;YAC7B,aAAa,EAAE,KAAK,CAAC,OAAO,CAAC,cAAc,CAAC;YAC5C,YAAY,EAAE,OAAO,CAAC,YAAY;YAClC,WAAW,EAAE,OAAO,CAAC,YAAY;SAClC;QACD,WAAW,EAAE;YACX,8DAA8D;YAC9D,GAAG,CAAC,OAAO,CAAC,KAAK,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,KAAK,CAAC;gBACzD,CAAC,CAAC,CAAC,SAAS,OAAO,CAAC,KAAK,eAAe,OAAO,CAAC,KAAK,EAAE,CAAC;gBACxD,CAAC,CAAC,EAAE,CAAC;YACP,GAAG,CAAC,OAAO,CAAC,cAAc;gBAC1B,OAAO,CAAC,cAAc;gBACtB,OAAO,CAAC,cAAc,KAAK,OAAO,CAAC,cAAc;gBAC/C,CAAC,CAAC;oBACE,mBAAmB,OAAO,CAAC,cAAc,eAAe,OAAO,CAAC,cAAc,EAAE;iBACjF;gBACH,CAAC,CAAC,EAAE,CAAC;YACP,GAAG,CAAC,KAAK,CAAC,MAAM;gBACd,CAAC,CAAC,CAAC,6BAA6B,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;gBACnD,CAAC,CAAC,EAAE,CAAC;SACR;KACF,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,SAAS,aAAa,CACpB,MAAmC,EACnC,OAAoB,EACpB,MAA8B;IAE9B,MAAM,MAAM,GAAG,iBAAiB,CAAC,SAAS,CAAC,MAAM,CAAC,kBAAkB,CAAC,CAAC;IACtE,MAAM,OAAO,GAAG,IAAI,GAAG,EAAkB,CAAC;IAC1C,MAAM,MAAM,GAAG,IAAI,GAAG,EAAkB,CAAC;IACzC,KAAK,MAAM,EAAE,SAAS,EAAE,WAAW,EAAE,IAAI,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;QAC3E,MAAM,MAAM,GACV,OAAO,WAAW,KAAK,QAAQ,IAAI,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC;YACzD,CAAC,CAAC,MAAM;YACR,CAAC,CAAC,OAAO,CAAC;QACd,MAAM,CAAC,GAAG,CAAC,SAAS,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;IAC1D,CAAC;IACD,MAAM,MAAM,GAAG,UAAU,CAAC,SAAS,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;IACvD,MAAM,IAAI,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO,CACtE,CAAC,CAAC,KAAK,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,EAAE;QACvB,MAAM,IAAI,GAAG,OAAO,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;QAC5C,OAAO,IAAI,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,EAAE,IAAI,CAAU,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAClD,CAAC,CACF,CAAC;IACF,OAAO;QACL,GAAG,CAAC,OAAO,CAAC,IAAI;YACd,CAAC,CAAC;gBACE;oBACE,IAAI,EAAE,QAAiB;oBACvB,MAAM,EAAE,QAAiB;oBACzB,OAAO,EAAE,sBAAsB,KAAK,CAAC,OAAO,CAAC,EAAE;iBAChD;aACF;YACH,CAAC,CAAC,EAAE,CAAC;QACP,GAAG,CAAC,MAAM,CAAC,IAAI;YACb,CAAC,CAAC;gBACE;oBACE,IAAI,EAAE,QAAiB;oBACvB,MAAM,EAAE,QAAiB;oBACzB,OAAO,EAAE,iCAAiC,KAAK,CAAC,MAAM,CAAC,EAAE;iBAC1D;aACF;YACH,CAAC,CAAC,EAAE,CAAC;QACP,GAAG,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC;YACjB,CAAC,CAAC;gBACE;oBACE,IAAI,EAAE,QAAiB;oBACvB,MAAM,EAAE,QAAiB;oBACzB,OAAO,EAAE,WAAW,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,GAAG,KAAK,KAAK,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;iBAC7F;aACF;YACH,CAAC,CAAC,EAAE,CAAC;KACR,CAAC;AACJ,CAAC;AAED,oGAAoG;AACpG,MAAM,UAAU,GAAG,CAAC;KACjB,MAAM,CACL,CAAC,CAAC,MAAM,EAAE,EACV,CAAC,CAAC,WAAW,CAAC;IACZ,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,WAAW,EAAE;IACrC,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,WAAW,EAAE;IACtC,oBAAoB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,WAAW,EAAE;IAC9C,wBAAwB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,WAAW,EAAE;IAClD,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,WAAW,EAAE;CAClC,CAAC,CACH;KACA,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;AAEtD,SAAS,OAAO,CAAC,KAAc;IAC7B,MAAM,MAAM,GAAG,UAAU,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IAC3C,IAAI,CAAC,MAAM,CAAC,OAAO;QAAE,OAAO,SAAS,CAAC;IACtC,MAAM,KAAK,GAAG;QACZ,KAAK,EAAE,CAAC;QACR,MAAM,EAAE,CAAC;QACT,SAAS,EAAE,CAAC;QACZ,UAAU,EAAE,CAAC;QACb,OAAO,EAAE,CAAC;KACX,CAAC;IACF,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE,CAAC;QAC/C,KAAK,CAAC,KAAK,IAAI,KAAK,CAAC,WAAW,CAAC;QACjC,KAAK,CAAC,MAAM,IAAI,KAAK,CAAC,YAAY,CAAC;QACnC,KAAK,CAAC,SAAS,IAAI,KAAK,CAAC,oBAAoB,CAAC;QAC9C,KAAK,CAAC,UAAU,IAAI,KAAK,CAAC,wBAAwB,CAAC;QACnD,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC;IACjC,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED,mGAAmG;AACnG,MAAM,SAAS,GAAG,CAAC,CAAC,WAAW,CAAC;IAC9B,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,WAAW,EAAE;IACtC,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,WAAW,EAAE;IACvC,uBAAuB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,WAAW,EAAE;IACjD,2BAA2B,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,WAAW,EAAE;CACtD,CAAC,CAAC;AAEH,wEAAwE;AACxE,MAAM,UAAU,mBAAmB,CAAC,IAAY;IAC9C,MAAM,GAAG,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAC5D,MAAM,OAAO,GAAG,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,GAAG,EAAE,EAAE,CAAC,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC,QAAQ,CAC1E,EAAE,CACH,CAAC;IACF,OAAO,GAAG,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,GAAG,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,OAAO,GAAG,GAAG,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,GAAG,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC;AAC5H,CAAC;AAED,MAAM,SAAS,GAAG,CAAC,IAAY,EAAE,EAAE,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC;AAE7D;;;GAGG;AACH,MAAM,SAAS,GAA6B;IAC1C,KAAK,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC;IACxB,IAAI,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC;CACxB,CAAC;AAEF;;;GAGG;AACH,SAAS,WAAW,CAClB,OAAiC,EACjC,YAAoB,EACpB,KAAK,GAAG,KAAK;IAEb,MAAM,EAAE,KAAK,EAAE,cAAc,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC;IACtD,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;IACxC,OAAO;QACL,SAAS;QACT,OAAO,CAAC,KAAK;QACb,UAAU;QACV,OAAO,CAAC,QAAQ;QAChB,wBAAwB;QACxB,KAAK,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,YAAY;QAClC,kCAAkC;QAClC,GAAG,CAAC,OAAO,CAAC,MAAM;YAChB,CAAC,CAAC;gBACE,cAAc;gBACd,KAAK;oBACH,CAAC,CAAC,iBAAiB,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG;oBACxC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,UAAU,EAAE,CAAC;aACnC;YACH,CAAC,CAAC,EAAE,CAAC;QACP,yFAAyF;QACzF,GAAG,CAAC,KAAK;YACP,CAAC,CAAC,CAAC,SAAS,EAAE,KAAK,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACjE,CAAC,CAAC,EAAE,CAAC;QACP,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC,gBAAgB,EAAE,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QAC7D,GAAG,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,mBAAmB,EAAE,cAAc,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;KACjE,CAAC;AACJ,CAAC;AAED,yGAAyG;AACzG,SAAS,YAAY,CACnB,OAAiC,EACjC,IAA+B;IAE/B,0EAA0E;IAC1E,MAAM,WAAW,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE;QACrE,MAAM,MAAM,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC,EAAE,IAAI,EAAE,EAAE,EAAE,CAAC,IAAI,KAAK,MAAM,CAAC,EAAE,MAAM,CAAC;QAC5E,OAAO,MAAM,KAAK,WAAW,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,KAAK,MAAM,IAAI,SAAS,GAAG,CAAC,CAAC;IAC9E,CAAC,CAAC,CAAC;IACH,IAAI,WAAW,CAAC,MAAM;QACpB,OAAO,OAAO,CACZ,GAAG,KAAK,mCAAmC,WAAW,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CACpE,CAAC;IACJ,mEAAmE;IACnE,MAAM,OAAO,GAAG,CAAC,OAAO,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,MAAM,CAC1C,CAAC,IAAI,EAAE,EAAE,CACP,CAAC,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CACzE,CAAC;IACF,OAAO,OAAO,CAAC,MAAM;QACnB,CAAC,CAAC,OAAO,CAAC,GAAG,KAAK,4BAA4B,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;QACnE,CAAC,CAAC,EAAE,CAAC;AACT,CAAC;AAED,oGAAoG;AACpG,MAAM,aAAa,GAAG,CAAC,CAAC,WAAW,CAAC;IAClC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,QAAQ,EAAE;CACpD,CAAC,CAAC;AAEH,mFAAmF;AACnF,MAAM,WAAW,GAAG,CAAC,CAAC,WAAW,CAAC;IAChC,QAAQ,EAAE,CAAC,CAAC,OAAO,EAAE;IACrB,UAAU,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;IACjC,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CACpC,CAAC,CAAC;AAEH,SAAS,SAAS,CAAC,MAAc;IAC/B,IAAI,MAAmC,CAAC;IACxC,IAAI,CAAC;QACH,MAAM,GAAG,WAAW,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC;IACjD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO;YACL,SAAS,EAAE,KAAK;YAChB,MAAM,EAAE,GAAG,KAAK,6BAA6B;SAC9C,CAAC;IACJ,CAAC;IACD,IAAI,CAAC,MAAM,CAAC,QAAQ;QAClB,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,KAAK,mBAAmB,EAAE,CAAC;IACnE,oDAAoD;IACpD,OAAO;QACL,SAAS,EAAE,IAAI;QACf,MAAM,EACJ,MAAM,CAAC,UAAU,KAAK,WAAW;YAC/B,CAAC,CAAC,wBAAwB;YAC1B,CAAC,CAAC,MAAM,CAAC,UAAU,KAAK,SAAS;gBAC/B,CAAC,CAAC,YAAY,MAAM,CAAC,YAAY,IAAI,gBAAgB,GAAG;gBACxD,CAAC,CAAC,GAAG,MAAM,CAAC,UAAU,IAAI,SAAS,QAAQ;KAClD,CAAC;AACJ,CAAC;AAED,uCAAuC;AACvC,MAAM,MAAM,GAAG,CAAC,IAAY,EAAE,EAAE,CAAC,IAAI,IAAI,CAAC,UAAU,CAAC,GAAG,EAAE,OAAO,CAAC,GAAG,CAAC;AAEtE;;;;;;;GAOG;AACH,KAAK,UAAU,aAAa,CAAC,SAAiB;IAC5C,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC;IAC5C,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,EAAE,gBAAgB,CAAC,CAAC;IAC/C,4DAA4D;IAC5D,MAAM,OAAO,GAAG,GAAG,IAAI,IAAI,UAAU,EAAE,EAAE,CAAC;IAC1C,MAAM,SAAS,CACb,OAAO,EACP;QACE,iGAAiG;QACjG,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,QAAQ,MAAM,CAAC,OAAO,CAAC,WAAW,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;QACzE,EAAE;KACH,CAAC,IAAI,CAAC,IAAI,CAAC,EACZ,EAAE,IAAI,EAAE,KAAK,EAAE,CAChB,CAAC;IACF,MAAM,MAAM,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IAC5B,OAAO,IAAI,CAAC;AACd,CAAC;AAED,MAAM,OAAO,GAAG,CAAC,OAAe,EAAkB,EAAE,CAAC;IACnD,EAAE,IAAI,EAAE,SAAS,EAAE,OAAO,EAAE;CAC7B,CAAC;AAEF;;;;;;;;;GASG;AACH,MAAM,CAAC,MAAM,UAAU,GAAkC;IACvD,IAAI,EAAE,aAAa;IACnB,KAAK;IACL,UAAU,EAAE,QAAQ;IACpB,cAAc,EAAE,SAAS;IACzB,UAAU,EAAE,SAAS;IACrB,0EAA0E;IAC1E,iEAAiE;IACjE,WAAW,EAAE,MAAM;IACnB,kDAAkD;IAClD,eAAe,EAAE,IAAI;IACrB,uFAAuF;IACvF,WAAW,EACT,wFAAwF;IAC1F,UAAU,EAAE,GAAG,EAAE,CAAC,CAAC;QACjB,IAAI,EAAE,CAAC,MAAM,EAAE,QAAQ,EAAE,QAAQ,CAAC;QAClC,IAAI,EAAE,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,SAAS,CAAC,MAAM,CAAC;KACxC,CAAC;IACF,KAAK,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,OAAO,CAAC,KAAK;IACjC,mGAAmG;IACnG,YAAY,EAAE,CAAC,OAAO,EAAE,SAAS,EAAE,EAAE,CAAC,CAAC;QACrC,GAAG,OAAO;QACV,UAAU,EAAE,MAAM,CAAC,WAAW,CAC5B,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,EAAE,CAAC;YACzD,IAAI;YACJ,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC;gBACzD,CAAC,CAAC,EAAE,GAAG,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,SAAS,EAAE,MAAM,CAAC,OAAO,CAAC,EAAE;gBAC5D,CAAC,CAAC,MAAM;SACX,CAAC,CACH;KACF,CAAC;IAEF,KAAK,CAAC,KAAK,CAAC,EAAE,OAAO,EAAE,YAAY,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE;QAC9D,MAAM,IAAI,GAAG,gBAAgB,CAAC,QAAQ,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;QACvD,MAAM,SAAS,GAAG,mBAAmB,CAAC,IAAI,CAAC,CAAC;QAC5C,MAAM,MAAM,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;QAC9C,2EAA2E;QAC3E,MAAM,OAAO,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC;QACnC,IAAI,MAAM,GAA2B,EAAE,CAAC;QACxC,IAAI,CAAC;YACH,IAAI,OAAO;gBACT,MAAM;oBACJ,aAAa,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;yBAC1D,MAAM,IAAI,EAAE,CAAC;QACtB,CAAC;QAAC,MAAM,CAAC;YACP,6EAA6E;QAC/E,CAAC;QACD,MAAM,KAAK,GAAG,IAAI,GAAG,EAAkB,CAAC;QACxC,MAAM,SAAS,GAAG,IAAI,GAAG,EAAU,CAAC;QACpC,4CAA4C;QAC5C,MAAM,OAAO,GAAG,IAAI,GAAG,EAAU,CAAC;QAClC,IAAI,WAAW,GAAG,KAAK,CAAC;QACxB,sFAAsF;QACtF,IAAI,UAAU,GAAkD,EAAE,CAAC;QACnE,gGAAgG;QAChG,IAAI,KAAK,GAAG,CAAC,CAAC;QACd,IAAI,OAAO,GAAG,CAAC,CAAC;QAEhB,mGAAmG;QACnG,MAAM,UAAU,GAAG,CACjB,IAAY,EACZ,MAAe,EACf,OAA0C,EAC1B,EAAE;YAClB,IAAI,IAAI,KAAK,WAAW,IAAI,MAAM,IAAI,OAAO,OAAO,CAAC,EAAE,KAAK,QAAQ;gBAClE,OAAO,EAAE,CAAC;YACZ,IAAI,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC;gBAAE,OAAO,EAAE,CAAC;YACzC,SAAS,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;YAC1B,MAAM,KAAK,GAAG,SAAS,CAAC,SAAS,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;YACjD,OAAO,KAAK,CAAC,OAAO;gBAClB,CAAC,CAAC;oBACE;wBACE,IAAI,EAAE,UAAU;wBAChB,MAAM,EAAE;4BACN,KAAK,EAAE,KAAK,CAAC,IAAI,CAAC,YAAY;4BAC9B,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC,aAAa;4BAChC,SAAS,EAAE,KAAK,CAAC,IAAI,CAAC,uBAAuB;4BAC7C,UAAU,EAAE,KAAK,CAAC,IAAI,CAAC,2BAA2B;yBACnD;qBACF;iBACF;gBACH,CAAC,CAAC,EAAE,CAAC;QACT,CAAC,CAAC;QAEF,MAAM,OAAO,GAAG,CAAC,KAAc,EAAE,EAAE,CAAC;YAClC,SAAS;YACT,iBAAiB;YACjB,aAAa;YACb,WAAW;YACX,wEAAwE;YACxE,uBAAuB;YACvB,GAAG,WAAW,CAAC,OAAO,EAAE,YAAY,EAAE,KAAK,CAAC;YAC5C,OAAO,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,cAAc;YACrC,SAAS;YACT,QAAQ;YACR,GAAG,QAAQ,CAAC,KAAK,IAAI,OAAO,EAAE;SAC/B,CAAC;QACF,OAAO;YACL,IAAI,EAAE,OAAO,CAAC,KAAK,CAAC;YACpB,KAAK,EAAE,OAAO,CAAC,IAAI,CAAC;YACpB,GAAG,EAAE;gBACH,kEAAkE;gBAClE,qEAAqE;gBACrE,qEAAqE;gBACrE,sEAAsE;gBACtE,6BAA6B;gBAC7B,oCAAoC,EAAE,GAAG;gBACzC,mEAAmE;gBACnE,sBAAsB;gBACtB,eAAe,EAAE,MAAM,aAAa,CAAC,QAAQ,CAAC,SAAS,CAAC;gBACxD,mBAAmB,EAAE,MAAM;aAC5B;YAED,IAAI,CAAC,GAAG;gBACN,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,EAAE,QAAQ,EAAE,GAAG,CAAC,CAAC;gBAC/C,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,KAAK,MAAM,EAAE,CAAC;oBACxD,MAAM,IAAI,GAAG,UAAU,CAAC,KAAK,EAAE,SAAS,EAAE,GAAG,CAAC,CAAC;oBAC/C,KAAK,IAAI,CAAC,CAAC;oBACX,IAAI,IAAI,CAAC,UAAU,KAAK,SAAS;wBAC/B,OAAO,OAAO,CACZ,GAAG,KAAK,oBAAoB,IAAI,CAAC,UAAU,eAAe,SAAS,EAAE,CACtE,CAAC;oBACJ,IAAI,CAAC,OAAO;wBACV,aAAa,CAAC,MAAM,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,SAAS,EAAE,CAAC,IAAI,EAAE;4BAC1D,IAAI,EAAE,KAAK;yBACZ,CAAC,CAAC;oBACL,WAAW,GAAG,IAAI,CAAC;oBACnB,mEAAmE;oBACnE,OAAO;wBACL,SAAS,CAAC,OAAO,EAAE,IAAI,EAAE,GAAG,CAAC;wBAC7B,GAAG,YAAY,CAAC,OAAO,EAAE,IAAI,CAAC;qBAC/B,CAAC;gBACJ,CAAC;gBACD,IACE,KAAK,CAAC,IAAI,KAAK,QAAQ;oBACvB,KAAK,CAAC,OAAO,KAAK,0BAA0B,EAC5C,CAAC;oBACD,UAAU,GAAG,UAAU,CACrB,KAAK,EACL,oBAAoB,EACpB,GAAG,CACJ,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC;oBAC1C,OAAO,EAAE,CAAC;gBACZ,CAAC;gBACD,IAAI,KAAK,CAAC,IAAI,KAAK,kBAAkB,EAAE,CAAC;oBACtC,MAAM,KAAK,GAAG,cAAc,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;oBAC5C,IAAI,CAAC,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,MAAM,KAAK,SAAS;wBACnE,OAAO,EAAE,CAAC;oBACZ,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,QAAQ,EAAE,GACvC,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC;oBAC7B,OAAO;wBACL;4BACE,IAAI,EAAE,QAAQ;4BACd,MAAM,EAAE,OAAO;4BACf,OAAO,EAAE,sBAAsB,MAAM,GAAG,aAAa,CAAC,CAAC,CAAC,KAAK,aAAa,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,QAAQ,CAAC,CAAC,CAAC,YAAY,IAAI,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE;yBAC7J;qBACF,CAAC;gBACJ,CAAC;gBACD,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,KAAK,eAAe,EAAE,CAAC;oBACjE,MAAM,IAAI,GAAG,YAAY,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;oBACzC,IAAI,CAAC,IAAI,CAAC,OAAO;wBAAE,OAAO,EAAE,CAAC;oBAC7B,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,IAAI,CAAC;oBAC5D,MAAM,OAAO,GAAG,MAAM,EAAE,IAAI,EAAE,CAAC;oBAC/B,OAAO;wBACL;4BACE,IAAI,EAAE,MAAM;4BACZ,IAAI,EAAE,SAAS;4BACf,OAAO;4BACP,GAAG,CAAC,SAAS,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC;4BAC3D,GAAG,CAAC,OAAO;gCACT,CAAC,CAAC;oCACE,MAAM,EACJ,OAAO,CAAC,MAAM,GAAG,GAAG;wCAClB,CAAC,CAAC,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG;wCAC7B,CAAC,CAAC,OAAO;iCACd;gCACH,CAAC,CAAC,EAAE,CAAC;yBACR;qBACF,CAAC;gBACJ,CAAC;gBACD,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,KAAK,kBAAkB,EAAE,CAAC;oBACpE,MAAM,QAAQ,GACZ,eAAe,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,gBAAgB,IAAI,EAAE,CAAC;oBAC9D,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,WAAW,EAAE,GAAG,QAAQ,CAAC;oBACnE,MAAM,KAAK,GAAG,CAAC,MAAc,EAAE,EAAE,CAAC,MAAM,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC;oBACjE,OAAO;wBACL;4BACE,IAAI,EAAE,QAAQ;4BACd,MAAM,EAAE,YAAY;4BACpB,OAAO,EAAE,GAAG,KAAK,8BAA8B,OAAO,CAAC,CAAC,CAAC,KAAK,OAAO,GAAG,CAAC,CAAC,CAAC,EAAE,GAAG,UAAU,KAAK,SAAS,IAAI,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,UAAU,CAAC,MAAM,KAAK,CAAC,WAAW,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,GAAG,WAAW,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,WAAW,CAAC,EAAE,EAAE;yBACxQ;qBACF,CAAC;gBACJ,CAAC;gBACD,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,KAAK,WAAW,EAAE,CAAC;oBAC7D,MAAM,KAAK,GAAG,QAAQ,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;oBACtC,IAAI,CAAC,KAAK,CAAC,OAAO;wBAAE,OAAO,EAAE,CAAC;oBAC9B,MAAM,EAAE,OAAO,EAAE,WAAW,EAAE,cAAc,EAAE,YAAY,EAAE,KAAK,EAAE,GACjE,KAAK,CAAC,IAAI,CAAC;oBACb,MAAM,MAAM,GAAG;wBACb,IAAI,CAAC,KAAK,CAAC;wBACX,YAAY,CAAC,CAAC,CAAC,UAAU,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE;qBAC7C;yBACE,MAAM,CAAC,OAAO,CAAC;yBACf,IAAI,CAAC,IAAI,CAAC,CAAC;oBACd,OAAO;wBACL;4BACE,IAAI,EAAE,QAAQ;4BACd,MAAM,EAAE,OAAO;4BACf,OAAO,EAAE,GAAG,KAAK,aAAa,OAAO,IAAI,WAAW,IAAI,cAAc,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,OAAO,CAAC,cAAc,CAAC,EAAE,GAAG,MAAM,CAAC,CAAC,CAAC,KAAK,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE;yBAC7J;qBACF,CAAC;gBACJ,CAAC;gBACD,IAAI,KAAK,CAAC,IAAI,KAAK,WAAW,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,EAAE,CAAC;oBACxD,MAAM,EAAE,kBAAkB,EAAE,MAAM,EAAE,OAAO,EAAE,GAAG,UAAU,CACxD,KAAK,EACL,YAAY,EACZ,GAAG,CACJ,CAAC;oBACF,OAAO;wBACL,GAAG,UAAU,CAAC,KAAK,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC;wBAC1C,GAAG,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,KAAK,EAAkB,EAAE;4BACnD,IAAI,KAAK,CAAC,IAAI,KAAK,UAAU,EAAE,CAAC;gCAC9B,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC;gCAChD,OAAO;oCACL;wCACE,IAAI,EAAE,MAAM;wCACZ,EAAE,EAAE,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC;wCACpB,IAAI,EAAE,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC;wCACxB,MAAM,EAAE,SAAS;qCAClB;iCACF,CAAC;4BACJ,CAAC;4BACD,IAAI,KAAK,CAAC,IAAI,KAAK,aAAa;gCAAE,OAAO,EAAE,CAAC;4BAC5C,MAAM,EAAE,GAAG,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;4BACrC,IAAI,KAAK,CAAC,QAAQ,IAAI,SAAS,CAAC,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;gCAC7D,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;4BAClB,OAAO;gCACL;oCACE,IAAI,EAAE,MAAM;oCACZ,EAAE;oCACF,IAAI,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE;oCACzB,MAAM,EAAE,KAAK,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,WAAW;iCAChD;6BACF,CAAC;wBACJ,CAAC,CAAC;qBACH,CAAC;gBACJ,CAAC;gBACD,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ;oBAAE,OAAO,EAAE,CAAC;gBACvC,MAAM,MAAM,GAAG,UAAU,CAAC,KAAK,EAAE,WAAW,EAAE,GAAG,CAAC,CAAC;gBACnD,OAAO,IAAI,CAAC,CAAC;gBACb,MAAM,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;gBACzC,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;gBACvD,iFAAiF;gBACjF,+DAA+D;gBAC/D,MAAM,OAAO,GACX,MAAM,CAAC,QAAQ;oBACf,MAAM,CAAC,OAAO,KAAK,wBAAwB;oBAC3C,KAAK,KAAK,SAAS;oBACnB,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC;gBACrD,MAAM,KAAK,GAAiB;oBAC1B,IAAI,EAAE,OAAO;oBACb,KAAK,EAAE,SAAS;oBAChB,KAAK,EAAE,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK;iBACnC,CAAC;gBACF,MAAM,MAAM,GAAG,UAAU,CAAC,SAAS,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;gBACvD,2EAA2E;gBAC3E,IAAI,WAAW,IAAI,CAAC,OAAO,IAAI,MAAM,CAAC,OAAO;oBAC3C,IAAI,CAAC;wBACH,aAAa,CACX,MAAM,EACN,GAAG,IAAI,CAAC,SAAS,CAAC;4BAChB,SAAS;4BACT,MAAM,EAAE,MAAM,CAAC,WAAW,CACxB,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,EAAE,EAAE,OAAO,EAAE,CAAC,EAAE,EAAE,CAAC;gCACxD,KAAK;gCACL,OAAO;6BACR,CAAC,CACH;yBACF,CAAC,IAAI,EACN,EAAE,IAAI,EAAE,KAAK,EAAE,CAChB,CAAC;oBACJ,CAAC;oBAAC,OAAO,KAAK,EAAE,CAAC;wBACf,OAAO,CAAC,IAAI,CAAC;4BACX,IAAI,EAAE,SAAS;4BACf,OAAO,EAAE,GAAG,KAAK,kEAAkE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE;yBAC5I,CAAC,CAAC;oBACL,CAAC;gBACH,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;oBACpB,MAAM,MAAM,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,MAAM,CAAC;wBACzC,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,OAAO,KAAK,KAAK,QAAQ,CAAC;wBAC5D,CAAC,CAAC,EAAE,CAAC;oBACP,kFAAkF;oBAClF,MAAM,MAAM,GACV,MAAM,CAAC,OAAO,KAAK,SAAS;wBAC1B,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,eAAe,CAAC;wBAC9B,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;oBAC3B,OAAO;wBACL,GAAG,OAAO;wBACV,KAAK;wBACL,GAAG,OAAO,CACR,GAAG,KAAK,IAAI,MAAM,IAAI,OAAO,KAAK,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,oBAAoB,EAAE,CACrG;qBACF,CAAC;gBACJ,CAAC;gBACD,IAAI,MAAM,CAAC,WAAW,IAAI,MAAM,CAAC,WAAW,KAAK,UAAU;oBACzD,OAAO;wBACL,GAAG,OAAO;wBACV,KAAK;wBACL,GAAG,OAAO,CACR,GAAG,KAAK,0CAA0C,MAAM,CAAC,WAAW,EAAE,CACvE;qBACF,CAAC;gBACJ,6EAA6E;gBAC7E,IAAI,CAAC,WAAW;oBACd,OAAO;wBACL,GAAG,OAAO;wBACV,KAAK;wBACL,GAAG,OAAO,CACR,GAAG,KAAK,gDAAgD,CACzD;qBACF,CAAC;gBACJ,6DAA6D;gBAC7D,IAAI,OAAO,MAAM,CAAC,MAAM,KAAK,QAAQ;oBACnC,OAAO;wBACL,GAAG,OAAO;wBACV,KAAK;wBACL,GAAG,OAAO,CACR,GAAG,KAAK,gEAAgE,CACzE;qBACF,CAAC;gBACJ,OAAO;oBACL,GAAG,OAAO;oBACV,KAAK;oBACL;wBACE,IAAI,EAAE,QAAQ;wBACd,IAAI,EAAE,MAAM,CAAC,MAAM;wBACnB,yEAAyE;wBACzE,GAAG,CAAC,OAAO,IAAI,KAAK;4BAClB,CAAC,CAAC,EAAE,UAAU,EAAE,YAAY,CAAC,UAAU,CAAC,EAAE;4BAC1C,CAAC,CAAC,EAAE,CAAC;qBACR;iBACF,CAAC;YACJ,CAAC;SACF,CAAC;IACJ,CAAC;CACF,CAAC"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { constants } from "node:fs";
|
|
2
2
|
import { access, stat } from "node:fs/promises";
|
|
3
3
|
import { delimiter, isAbsolute, join } from "node:path";
|
|
4
|
-
import { ProcessInterruptedError, runProcess } from "../process.js";
|
|
4
|
+
import { groupsProblem, ProcessInterruptedError, runProcess, } from "../process.js";
|
|
5
5
|
import { runtimes } from "./registry.js";
|
|
6
6
|
/** Only absolute PATH entries: an empty or relative one depends on the current directory. */
|
|
7
7
|
async function findInPath(name) {
|
|
@@ -45,7 +45,10 @@ const older = (version, minimum) => {
|
|
|
45
45
|
return (a?.[i] ?? 0) < (b?.[i] ?? 0);
|
|
46
46
|
return false;
|
|
47
47
|
};
|
|
48
|
-
/**
|
|
48
|
+
/**
|
|
49
|
+
* The executable in the PATH and its version, and what else its calls need:
|
|
50
|
+
* where it is, or why it cannot be used.
|
|
51
|
+
*/
|
|
49
52
|
async function inspectExecutable(adapter, dir) {
|
|
50
53
|
const path = await findInPath(adapter.executable);
|
|
51
54
|
if (!path)
|
|
@@ -66,6 +69,11 @@ async function inspectExecutable(adapter, dir) {
|
|
|
66
69
|
return {
|
|
67
70
|
problem: `${adapter.label} ${version} is older than ${adapter.minimumVersion}, the oldest version flow supports`,
|
|
68
71
|
};
|
|
72
|
+
const unended = adapter.registersGroups ? await groupsProblem() : undefined;
|
|
73
|
+
if (unended)
|
|
74
|
+
return {
|
|
75
|
+
problem: `${adapter.label} calls end what their commands leave running with ps: ${unended}`,
|
|
76
|
+
};
|
|
69
77
|
return { path, version };
|
|
70
78
|
}
|
|
71
79
|
/** The connection a check reports, trusted only when the check succeeded; a refusal keeps its own reason. */
|