@krapht/ork 1.0.0-alpha.11 → 1.0.0-alpha.12
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{__build_info__-CIchF6nr.mjs → __build_info__-BJbE3Zvp.mjs} +3 -2
- package/dist/attach-BmV5ckb9.mjs +89 -0
- package/dist/bin.mjs +132 -1208
- package/dist/{decide-B6PnKeqo.mjs → builtin-files-w0YULJ4c.mjs} +2 -50
- package/dist/{chips-BA7SrrH5.mjs → chips-CyeB_rhR.mjs} +1 -1
- package/dist/{clean-Di-KT7Mf.mjs → clean-D8GI_2K-.mjs} +1 -1
- package/dist/{completion-C5D0sEs5.mjs → completion-CzElB8nS.mjs} +7 -6
- package/dist/{context-BaNshWr9.mjs → context-BAwgVSX5.mjs} +5 -5
- package/dist/decide-DlbyctOE.mjs +50 -0
- package/dist/{find-BicBbGMg.mjs → find-p05wlbmu.mjs} +1 -1
- package/dist/{format-lWhN-jYR.mjs → format-Dni98cbh.mjs} +5 -85
- package/dist/{help-groups-BwYoAWsh.mjs → help-groups-DYP_zMRP.mjs} +4 -0
- package/dist/{in-a-run-CgkVouyG.mjs → in-a-run-BI-hLIl_.mjs} +4 -2
- package/dist/{limits-jZQp9ZJC.mjs → limits-CElmhowV.mjs} +1 -1
- package/dist/{list-CEaJ07jd.mjs → list-zW2xKuGr.mjs} +1 -1
- package/dist/{mcp-DYgVA9f5.mjs → mcp-CM3b65AZ.mjs} +6 -6
- package/dist/{output-CM95njYt.mjs → output-CnRzrbUM.mjs} +3 -1
- package/dist/{pause-D6PuSlNl.mjs → pause-BuS83WAI.mjs} +4 -4
- package/dist/{relay-DNx7be9k.mjs → relay-DAsJA8wF.mjs} +2 -2
- package/dist/{remove-CpMb4NDl.mjs → remove-Dh7D_hVn.mjs} +3 -3
- package/dist/{send-CLs_fyg7.mjs → send-MFEQZH31.mjs} +3 -3
- package/dist/{src-9iGkjnsy.mjs → src-BfxkJOYm.mjs} +1 -1
- package/dist/{src-D6_xjm-x.mjs → src-CdDTQLdQ.mjs} +173 -24
- package/dist/{src-BnZgZGrf.mjs → src-D1QedD5y.mjs} +1 -1
- package/dist/{src-B6KvTm7B.mjs → src-S9yK2OHU.mjs} +7 -6
- package/dist/store-B2OaE4ID.mjs +1356 -0
- package/dist/ui/assets/{app-CxURph7a.js → app-CAoZtku5.js} +1 -1
- package/dist/ui/assets/{index-By_8KKG6.js → index-BL7Ad0OA.js} +2 -2
- package/dist/ui/index.html +1 -1
- package/dist/{ui-CIci4UBW.mjs → ui-C4Ys26oO.mjs} +4 -4
- package/dist/{usage-GceBGMjU.mjs → usage-C2zx-X6q.mjs} +6 -6
- package/dist/verdict-CIy8tAyX.mjs +84 -0
- package/dist/{watch-BmoybMQg.mjs → watch-DzCeqM05.mjs} +7 -7
- package/dist/{workflows-DZvW3i1e.mjs → workflows-Rr5w90A0.mjs} +3 -3
- package/dist/{worktrees-Be51E2rB.mjs → worktrees-f6SAbum5.mjs} +5 -5
- package/package.json +1 -1
|
@@ -544,13 +544,14 @@ const DriverSchema = z.enum(DRIVER_IDS, { error: (issue) => retiredDriverHint(is
|
|
|
544
544
|
/** `opus`, `sonnet`, `haiku`, or a full model id such as `claude-opus-5-5`. */
|
|
545
545
|
const ModelSchema = z.string().min(1);
|
|
546
546
|
/** How hard the model thinks; Claude Code's own default when unset. */
|
|
547
|
-
const
|
|
547
|
+
const EFFORTS = [
|
|
548
548
|
"low",
|
|
549
549
|
"medium",
|
|
550
550
|
"high",
|
|
551
551
|
"xhigh",
|
|
552
552
|
"max"
|
|
553
|
-
]
|
|
553
|
+
];
|
|
554
|
+
const EffortSchema = z.enum(EFFORTS).describe("Reasoning effort. Default: Claude Code's for the model.");
|
|
554
555
|
const IsolationSchema = z.enum([
|
|
555
556
|
"worktree",
|
|
556
557
|
"continue",
|
|
@@ -720,13 +721,20 @@ const TOOL_NODE_SCHEMAS = INTEGRATIONS.map((i) => toolNodeSchema(i));
|
|
|
720
721
|
const base = nodeBaseFields;
|
|
721
722
|
/** A Claude node's output field that is not a list: a rule or JSON Schema. */
|
|
722
723
|
const NotListSchema = z.unknown().refine((value) => typeof value !== "object" || value === null || !("list" in value), { message: LIST_RULE_HINT });
|
|
724
|
+
const NODE_EFFORT_HINT = "expected low, medium, high, xhigh or max, or {{item.<field>}}";
|
|
725
|
+
/**
|
|
726
|
+
* A Claude node's effort: a level, or on a `forEach` node a template reading
|
|
727
|
+
* its item (`{{item.effort}}`), which the compiler checks and each item
|
|
728
|
+
* renders.
|
|
729
|
+
*/
|
|
730
|
+
const NodeEffortSchema = z.union([EffortSchema, z.string().regex(/\{\{.*\}\}/su, { error: NODE_EFFORT_HINT })], { error: NODE_EFFORT_HINT }).describe("Reasoning effort, or {{item.<field>}} on a forEach node. Default: Claude Code's for the model.");
|
|
723
731
|
/**
|
|
724
732
|
* What an agent brings to the node it fills, and what a plain Claude node sets
|
|
725
733
|
* itself. A node's own value wins over its agent's.
|
|
726
734
|
*/
|
|
727
735
|
const agentSettings = {
|
|
728
736
|
model: ModelSchema.optional(),
|
|
729
|
-
effort:
|
|
737
|
+
effort: NodeEffortSchema.optional(),
|
|
730
738
|
driver: DriverSchema.optional(),
|
|
731
739
|
skills: z.array(z.string()).optional().describe("Node-layer skills (highest precedence)."),
|
|
732
740
|
context: z.array(z.string()).optional().describe("Node-layer context files."),
|
|
@@ -6449,6 +6457,122 @@ const gatherProblems = (id, node) => {
|
|
|
6449
6457
|
return isList(rule) ? [] : [error("output.gather", `\`${field}\` isn't declared as a list (\`{ type: array }\` or \`{ list: … }\`), so its rounds can't be added together`, [...path, index])];
|
|
6450
6458
|
});
|
|
6451
6459
|
};
|
|
6460
|
+
// ../core/src/graph/item-settings.ts
|
|
6461
|
+
/**
|
|
6462
|
+
* @file A fanned node's `model` and `effort` from its item (`{{item.model}}`):
|
|
6463
|
+
* the compiler's checks (only on a `forEach` node, reading only `item`, and
|
|
6464
|
+
* every written item's value), and the rendering each item's session plan
|
|
6465
|
+
* uses, which checks an item from `from:` when it runs.
|
|
6466
|
+
*/
|
|
6467
|
+
const FIELDS$1 = ["model", "effort"];
|
|
6468
|
+
/**
|
|
6469
|
+
* The parts of a template that reads something, or `null` for a plain value (or
|
|
6470
|
+
* one that does not parse, which the compiler reports).
|
|
6471
|
+
*/
|
|
6472
|
+
const templateOf$1 = (text) => {
|
|
6473
|
+
const parsed = parseTemplate(text);
|
|
6474
|
+
if (!parsed.ok) return null;
|
|
6475
|
+
return parsed.parts.some((part) => typeof part !== "string") ? parsed.parts : null;
|
|
6476
|
+
};
|
|
6477
|
+
const isEffort = (text) => EFFORTS.includes(text);
|
|
6478
|
+
/** Checks what one item's template rendered to. */
|
|
6479
|
+
const checkRendered = (field, template, rendered) => {
|
|
6480
|
+
const text = rendered.trim();
|
|
6481
|
+
if (text === "") return {
|
|
6482
|
+
ok: true,
|
|
6483
|
+
value: void 0
|
|
6484
|
+
};
|
|
6485
|
+
return (field === "effort" ? isEffort(text) : /^[^\s{}"]+$/u.test(text)) ? {
|
|
6486
|
+
ok: true,
|
|
6487
|
+
value: text
|
|
6488
|
+
} : {
|
|
6489
|
+
ok: false,
|
|
6490
|
+
error: `\`${field}: ${template}\` gave \`${text}\`, which is not ${field === "effort" ? `an effort level (${EFFORTS.join(", ")})` : "a model name"}`
|
|
6491
|
+
};
|
|
6492
|
+
};
|
|
6493
|
+
/**
|
|
6494
|
+
* A node's `model` or `effort` for one item: a plain value as written, a
|
|
6495
|
+
* template rendered with the item. Without an item, a template renders empty.
|
|
6496
|
+
*/
|
|
6497
|
+
const itemSetting = (field, value, scope) => {
|
|
6498
|
+
if (value === void 0) return {
|
|
6499
|
+
ok: true,
|
|
6500
|
+
value: void 0
|
|
6501
|
+
};
|
|
6502
|
+
const parts = templateOf$1(value);
|
|
6503
|
+
if (parts === null) return {
|
|
6504
|
+
ok: true,
|
|
6505
|
+
value
|
|
6506
|
+
};
|
|
6507
|
+
return checkRendered(field, value, renderTemplate(parts, scope));
|
|
6508
|
+
};
|
|
6509
|
+
/** `itemSetting` for `effort`, as an effort level. */
|
|
6510
|
+
const itemEffort = (value, scope) => {
|
|
6511
|
+
const given = itemSetting("effort", value, scope);
|
|
6512
|
+
if (!given.ok) return given;
|
|
6513
|
+
if (given.value === void 0) return {
|
|
6514
|
+
ok: true,
|
|
6515
|
+
value: void 0
|
|
6516
|
+
};
|
|
6517
|
+
return isEffort(given.value) ? {
|
|
6518
|
+
ok: true,
|
|
6519
|
+
value: given.value
|
|
6520
|
+
} : {
|
|
6521
|
+
ok: false,
|
|
6522
|
+
error: `\`effort\` is \`${given.value}\``
|
|
6523
|
+
};
|
|
6524
|
+
};
|
|
6525
|
+
/** A `model` or `effort` template's problems on one node. */
|
|
6526
|
+
const checkNodeField = (workflow, says, id, field) => {
|
|
6527
|
+
const node = workflow.nodes[id];
|
|
6528
|
+
const value = node === void 0 ? void 0 : Reflect.get(node, field);
|
|
6529
|
+
if (node === void 0 || typeof value !== "string") return [];
|
|
6530
|
+
const path = [
|
|
6531
|
+
"nodes",
|
|
6532
|
+
id,
|
|
6533
|
+
field
|
|
6534
|
+
];
|
|
6535
|
+
const parsed = parseTemplate(value);
|
|
6536
|
+
if (!parsed.ok) return [error("template.syntax", `${parsed.message} at column ${parsed.offset + 1}`, path)];
|
|
6537
|
+
if (parsed.parts.every((part) => typeof part === "string")) return [];
|
|
6538
|
+
const each = forEachOf$1(node);
|
|
6539
|
+
if (each === void 0) return [error(`${field}.template`, `\`${field}\` may be a template only on a node with \`forEach\`, reading its item, e.g. \`{{item.${field}}}\``, path)];
|
|
6540
|
+
const reads = parsed.parts.flatMap((part) => typeof part === "string" ? [] : collectPaths(part.expr));
|
|
6541
|
+
const outside = reads.filter(([root]) => root !== "item");
|
|
6542
|
+
if (outside.length > 0) return outside.map((segments) => error(`${field}.template`, `\`${describePath(segments)}\`: a \`${field}\` template reads only the item, e.g. \`{{item.${field}}}\``, path));
|
|
6543
|
+
const scope = { fields: itemFieldsOf(node, says) };
|
|
6544
|
+
const fields = reads.flatMap((segments) => checkItemRead(segments, scope, path));
|
|
6545
|
+
if (fields.length > 0 || !("items" in each)) return fields;
|
|
6546
|
+
return each.items.flatMap((item, index) => {
|
|
6547
|
+
const given = checkRendered(field, value, renderTemplate(parsed.parts, {
|
|
6548
|
+
inputs: {},
|
|
6549
|
+
nodes: {},
|
|
6550
|
+
item,
|
|
6551
|
+
index
|
|
6552
|
+
}));
|
|
6553
|
+
return given.ok ? [] : [error(`${field}.item`, `item ${String(index)}: ${given.error}`, [
|
|
6554
|
+
"nodes",
|
|
6555
|
+
id,
|
|
6556
|
+
"forEach",
|
|
6557
|
+
"items",
|
|
6558
|
+
index
|
|
6559
|
+
])];
|
|
6560
|
+
});
|
|
6561
|
+
};
|
|
6562
|
+
/**
|
|
6563
|
+
* `model` and `effort` templates: only on a `forEach` node, reading only
|
|
6564
|
+
* `item`, and every written item's value a model name or an effort level.
|
|
6565
|
+
* `defaults:` belong to no node, so they take no template.
|
|
6566
|
+
*/
|
|
6567
|
+
const checkItemSettings = (workflow, edges) => {
|
|
6568
|
+
const says = nodeSays(workflow.nodes, edges);
|
|
6569
|
+
const defaults = FIELDS$1.flatMap((field) => {
|
|
6570
|
+
const value = workflow.defaults?.[field];
|
|
6571
|
+
return value !== void 0 && templateOf$1(value) !== null ? [error(`${field}.template`, `\`defaults.${field}\` applies to every node, so it can't read an item; set the template on the \`forEach\` node`, ["defaults", field])] : [];
|
|
6572
|
+
});
|
|
6573
|
+
const nodes = Object.entries(workflow.nodes).flatMap(([id, node]) => isClaudeNode(node) ? FIELDS$1.flatMap((field) => checkNodeField(workflow, says, id, field)) : []);
|
|
6574
|
+
return [...defaults, ...nodes];
|
|
6575
|
+
};
|
|
6452
6576
|
// ../core/src/graph/script.ts
|
|
6453
6577
|
/**
|
|
6454
6578
|
* @file Checks on the programs a workflow declares (RFC-006): a tool node's and
|
|
@@ -6514,7 +6638,7 @@ const statusProblems = (id, node) => {
|
|
|
6514
6638
|
};
|
|
6515
6639
|
/** Per-type checks that need the rest of the graph. */
|
|
6516
6640
|
const checkNodes = (workflow, edges) => {
|
|
6517
|
-
const diagnostics = checkScripts(workflow);
|
|
6641
|
+
const diagnostics = [...checkScripts(workflow), ...checkItemSettings(workflow, edges)];
|
|
6518
6642
|
for (const [id, node] of Object.entries(workflow.nodes)) {
|
|
6519
6643
|
const path = ["nodes", id];
|
|
6520
6644
|
const incoming = edges.filter((e) => e.to === id);
|
|
@@ -7090,11 +7214,13 @@ const startAt = (priority, bin, args, env = process.env) => {
|
|
|
7090
7214
|
return [first, [...rest, ...args]];
|
|
7091
7215
|
};
|
|
7092
7216
|
/**
|
|
7093
|
-
* Lowers a started child's priority for `low
|
|
7094
|
-
*
|
|
7217
|
+
* Lowers a started child's priority for `low` where {@link startAt} had no
|
|
7218
|
+
* `nice` to start it under (Windows), best effort; what it starts later
|
|
7219
|
+
* inherits it. Under `nice` it does nothing: `nice` lowers relative to the
|
|
7220
|
+
* priority it finds, so lowering here too could land first and the two add up.
|
|
7095
7221
|
*/
|
|
7096
7222
|
const lowerChild = (priority, pid) => {
|
|
7097
|
-
if (priority !== "low" || pid === void 0) return;
|
|
7223
|
+
if (priority !== "low" || pid === void 0 || existsSync(NICE)) return;
|
|
7098
7224
|
try {
|
|
7099
7225
|
setPriority(pid, constants$1.priority.PRIORITY_BELOW_NORMAL);
|
|
7100
7226
|
} catch {}
|
|
@@ -11481,12 +11607,13 @@ const parseReport = (value) => {
|
|
|
11481
11607
|
// ../core/src/run/brief.ts
|
|
11482
11608
|
/**
|
|
11483
11609
|
* @file What a Claude node is asked: its brief, rendered against the run's
|
|
11484
|
-
* inputs and outputs, and
|
|
11485
|
-
*
|
|
11486
|
-
*
|
|
11487
|
-
* its
|
|
11488
|
-
*
|
|
11489
|
-
* worktree or edges
|
|
11610
|
+
* inputs and outputs, the model and effort it runs on (a fanned node's from
|
|
11611
|
+
* its item), and its `claude.subagent` children as Claude Code subagents of
|
|
11612
|
+
* its session (the SDK's `agents`, the CLI's `--agents`). A subagent's role
|
|
11613
|
+
* (its agent's instructions), `instructions` and `prompt` are its system
|
|
11614
|
+
* prompt, and its `description` says when the session hands it work with the
|
|
11615
|
+
* Agent tool; it runs inside that session, with no process, worktree or edges
|
|
11616
|
+
* of its own.
|
|
11490
11617
|
*/
|
|
11491
11618
|
/** The tool a session hands a subagent work with. */
|
|
11492
11619
|
const AGENT_TOOL = "Agent";
|
|
@@ -11515,6 +11642,23 @@ const renderBrief = (text, inputs, outputs, before, item) => {
|
|
|
11515
11642
|
warnings
|
|
11516
11643
|
};
|
|
11517
11644
|
};
|
|
11645
|
+
/**
|
|
11646
|
+
* The model and effort a session asks for: the node's own, rendered with its
|
|
11647
|
+
* item on a fanned node (`{{item.model}}`), else the workflow's defaults. An
|
|
11648
|
+
* item's value that is no model name or effort level fails it.
|
|
11649
|
+
*/
|
|
11650
|
+
const modelOf = (node, defaults, run) => {
|
|
11651
|
+
const scope = runScope(run.inputs, run.outputs ?? {}, void 0, run.item);
|
|
11652
|
+
const model = itemSetting("model", node.model, scope);
|
|
11653
|
+
if (!model.ok) return model;
|
|
11654
|
+
const effort = itemEffort(node.effort, scope);
|
|
11655
|
+
if (!effort.ok) return effort;
|
|
11656
|
+
return {
|
|
11657
|
+
ok: true,
|
|
11658
|
+
model: model.value ?? defaults.model,
|
|
11659
|
+
effort: effort.value ?? defaults.effort
|
|
11660
|
+
};
|
|
11661
|
+
};
|
|
11518
11662
|
const rendered = (text, inputs, outputs) => {
|
|
11519
11663
|
const brief = renderBrief(text, inputs, outputs);
|
|
11520
11664
|
return brief.ok ? brief.text : (text ?? "").trim();
|
|
@@ -11691,6 +11835,11 @@ const planNodeSession = (workflow, id, options) => {
|
|
|
11691
11835
|
ok: false,
|
|
11692
11836
|
error: `\`${id}\` uses worktree isolation, which a run on its own does not set up; run the whole workflow, or pass \`--in-place\` to run it in this checkout`
|
|
11693
11837
|
};
|
|
11838
|
+
const models = modelOf(node, defaults, options);
|
|
11839
|
+
if (!models.ok) return {
|
|
11840
|
+
ok: false,
|
|
11841
|
+
error: models.error
|
|
11842
|
+
};
|
|
11694
11843
|
const warnings = [];
|
|
11695
11844
|
const brief = renderBrief(node.prompt, options.inputs, options.outputs, options.before, options.item);
|
|
11696
11845
|
if (!brief.ok) return {
|
|
@@ -11738,10 +11887,8 @@ const planNodeSession = (workflow, id, options) => {
|
|
|
11738
11887
|
spec.agents = agents;
|
|
11739
11888
|
spec.tools.only?.push(AGENT_TOOL);
|
|
11740
11889
|
}
|
|
11741
|
-
|
|
11742
|
-
if (
|
|
11743
|
-
const effort = node.effort ?? defaults.effort;
|
|
11744
|
-
if (effort !== void 0) spec.effort = effort;
|
|
11890
|
+
if (models.model !== void 0) spec.model = models.model;
|
|
11891
|
+
if (models.effort !== void 0) spec.effort = models.effort;
|
|
11745
11892
|
const maxTurns = node.maxTurns ?? defaults.maxTurns;
|
|
11746
11893
|
if (maxTurns !== void 0) spec.maxTurns = maxTurns;
|
|
11747
11894
|
const budgets = [node.budgetUsd ?? defaults.budgetUsd, options.budgetLeftUsd].filter((b) => b !== void 0);
|
|
@@ -12063,18 +12210,16 @@ const followEvents = async (store, runId, onEvent, options) => {
|
|
|
12063
12210
|
seq: options.after ?? 0,
|
|
12064
12211
|
finished: false
|
|
12065
12212
|
};
|
|
12066
|
-
const done = new AbortController();
|
|
12067
12213
|
const emit = (stored) => {
|
|
12068
12214
|
if (stored.seq <= seen.seq) return;
|
|
12069
12215
|
seen.seq = stored.seq;
|
|
12070
12216
|
onEvent(stored);
|
|
12071
|
-
|
|
12072
|
-
|
|
12073
|
-
|
|
12074
|
-
}
|
|
12217
|
+
const { type } = stored.event;
|
|
12218
|
+
if (type === "run.finished") seen.finished = true;
|
|
12219
|
+
else if (type === "run.started" || type === "run.resumed") seen.finished = false;
|
|
12075
12220
|
};
|
|
12076
12221
|
const aborted = () => options.signal?.aborted === true;
|
|
12077
|
-
/** Takes what the store has; true once
|
|
12222
|
+
/** Takes what the store has; true once the run's latest go has finished. */
|
|
12078
12223
|
const drain = () => {
|
|
12079
12224
|
for (const stored of store.events(runId, seen.seq)) emit(stored);
|
|
12080
12225
|
return seen.finished;
|
|
@@ -12083,7 +12228,11 @@ const followEvents = async (store, runId, onEvent, options) => {
|
|
|
12083
12228
|
if (drain()) return "finished";
|
|
12084
12229
|
if (!options.follow) return "stored";
|
|
12085
12230
|
if (aborted()) return "aborted";
|
|
12086
|
-
const
|
|
12231
|
+
const done = new AbortController();
|
|
12232
|
+
const via = await followSocket(socketPath(runId, options.home), seen.seq, (stored) => {
|
|
12233
|
+
emit(stored);
|
|
12234
|
+
if (seen.finished) done.abort();
|
|
12235
|
+
}, options.signal === void 0 ? done.signal : AbortSignal.any([options.signal, done.signal]));
|
|
12087
12236
|
if (seen.finished) return "finished";
|
|
12088
12237
|
if (aborted()) return "aborted";
|
|
12089
12238
|
if (via === "ended") continue;
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { Ar as AGENT_DRIVERS, Bt as lowerChild, En as maskSecrets, Vt as startAt, an as FEEDBACK_SEVERITIES, en as outcomeEnd, ft as parseReport, in as FEEDBACK_KINDS, nn as END_KINDS, on as FEEDBACK_TARGETS, rn as endFor, wn as MASK } from "./src-
|
|
1
|
+
import { Ar as AGENT_DRIVERS, Bt as lowerChild, En as maskSecrets, Vt as startAt, an as FEEDBACK_SEVERITIES, en as outcomeEnd, ft as parseReport, in as FEEDBACK_KINDS, nn as END_KINDS, on as FEEDBACK_TARGETS, rn as endFor, wn as MASK } from "./src-CdDTQLdQ.mjs";
|
|
2
2
|
import path from "node:path";
|
|
3
3
|
import { z } from "zod";
|
|
4
4
|
import { existsSync, linkSync, mkdirSync, mkdtempSync, readFileSync, readdirSync, realpathSync, renameSync, rmSync, writeFileSync } from "node:fs";
|
|
@@ -1,10 +1,11 @@
|
|
|
1
|
-
import { $n as skillsIn, $t as endOf, At as nestItems, B as linkNodes, Bn as placeFiles, C as openStore, Ct as runStatus, Dt as processAlive, G as requestContinue, Gn as workflowDirOf, In as loadAgents, J as tellLiveRun, Jn as LESSON_CAP_TOKENS, K as requestPause, Kn as inside, S as isNodeEvent, St as pausedOf, U as unlinkNodes, Un as runDirOf, Ut as nodeSays, Vn as placeFor, X as detachResume, Z as resumable, a as releaseNotes, c as detectInstaller, cn as planPost, er as WorkflowEditSchema, et as detachRun, gt as walkSummary, hr as NodeSchema, ht as walkChecks, i as planUpgrade, it as limitsReport, ln as runGh, mt as checkWorkflowText, nn as END_KINDS, nr as newWorkflowText, o as runningRunIds, or as renderJsonSchema, p as triggersReport, pr as expandEdge, q as requestStop, r as capsHere, rr as readDocument, s as runningScript, sn as DISCUSSIONS, sr as parseWorkflow, st as explainWorkflowText, tr as applyEdits, tt as followEvents, un as sendPost, ur as EdgeInputSchema, w as storePath, x as activeTree, xt as liveStatus, yn as readCondition } from "./src-
|
|
2
|
-
import { C as feedbackActions, S as placeOf$1, _ as previewPost, a as registryShown, b as acceptItem, c as checkDue, f as readUpdateCache, g as nodeSession, h as writeUpdateCache, i as registryOf, l as fetchLatest, m as updateCachePath, o as updateSwitchOff, p as refreshUpdateCache, s as runInstall, u as newerVersion, w as openFixRun, x as lessonPlaceOf, y as recordNote } from "./__build_info__-
|
|
3
|
-
import {
|
|
4
|
-
import { n as
|
|
1
|
+
import { $n as skillsIn, $t as endOf, At as nestItems, B as linkNodes, Bn as placeFiles, C as openStore, Ct as runStatus, Dt as processAlive, G as requestContinue, Gn as workflowDirOf, In as loadAgents, J as tellLiveRun, Jn as LESSON_CAP_TOKENS, K as requestPause, Kn as inside, S as isNodeEvent, St as pausedOf, U as unlinkNodes, Un as runDirOf, Ut as nodeSays, Vn as placeFor, X as detachResume, Z as resumable, a as releaseNotes, c as detectInstaller, cn as planPost, er as WorkflowEditSchema, et as detachRun, gt as walkSummary, hr as NodeSchema, ht as walkChecks, i as planUpgrade, it as limitsReport, ln as runGh, mt as checkWorkflowText, nn as END_KINDS, nr as newWorkflowText, o as runningRunIds, or as renderJsonSchema, p as triggersReport, pr as expandEdge, q as requestStop, r as capsHere, rr as readDocument, s as runningScript, sn as DISCUSSIONS, sr as parseWorkflow, st as explainWorkflowText, tr as applyEdits, tt as followEvents, un as sendPost, ur as EdgeInputSchema, w as storePath, x as activeTree, xt as liveStatus, yn as readCondition } from "./src-CdDTQLdQ.mjs";
|
|
2
|
+
import { C as feedbackActions, S as placeOf$1, _ as previewPost, a as registryShown, b as acceptItem, c as checkDue, f as readUpdateCache, g as nodeSession, h as writeUpdateCache, i as registryOf, l as fetchLatest, m as updateCachePath, o as updateSwitchOff, p as refreshUpdateCache, s as runInstall, u as newerVersion, w as openFixRun, x as lessonPlaceOf, y as recordNote } from "./__build_info__-BJbE3Zvp.mjs";
|
|
3
|
+
import { t as builtinProblem } from "./builtin-files-w0YULJ4c.mjs";
|
|
4
|
+
import { n as pendingDecisions, t as answerDecision } from "./decide-DlbyctOE.mjs";
|
|
5
|
+
import { n as newRunId, t as findRun } from "./find-p05wlbmu.mjs";
|
|
5
6
|
import { n as usageReport } from "./report-CEN8VoUb.mjs";
|
|
6
|
-
import { a as planClean, i as keyOf, o as stepActs, r as cleanStep, s as stepPrunes, t as applyClean } from "./clean-
|
|
7
|
-
import { a as readWorktrees, c as mergeStateOf, d as stateParts, i as projectHead, l as planLine, n as lostWork, r as planRemove, s as labelOf, t as applyRemove, u as removeRefusal } from "./remove-
|
|
7
|
+
import { a as planClean, i as keyOf, o as stepActs, r as cleanStep, s as stepPrunes, t as applyClean } from "./clean-D8GI_2K-.mjs";
|
|
8
|
+
import { a as readWorktrees, c as mergeStateOf, d as stateParts, i as projectHead, l as planLine, n as lostWork, r as planRemove, s as labelOf, t as applyRemove, u as removeRefusal } from "./remove-Dh7D_hVn.mjs";
|
|
8
9
|
import path from "node:path";
|
|
9
10
|
import { z } from "zod";
|
|
10
11
|
import { chmodSync, existsSync, lstatSync, mkdirSync, readFileSync, readdirSync, realpathSync, renameSync, rmSync, statSync, writeFileSync } from "node:fs";
|