@krapht/ork 1.0.0-alpha.3 → 1.0.0-alpha.4
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__-BwrKe6yz.mjs → __build_info__-1i1IwLg7.mjs} +2 -2
- package/dist/bin.mjs +37 -29
- package/dist/{clean-hXSaN8BT.mjs → clean-B1zPxq6A.mjs} +1 -1
- package/dist/{completion-Cga01yQP.mjs → completion-BY-frez8.mjs} +5 -5
- package/dist/{context-mCAwzFFM.mjs → context-CD5TCD1D.mjs} +3 -3
- package/dist/{decide-BvZnKErW.mjs → decide-CBhYcjwI.mjs} +1 -1
- package/dist/{find-CbetS8I2.mjs → find-BgZjVKhv.mjs} +1 -1
- package/dist/{format-D87bY6Ud.mjs → format-Creyq4U3.mjs} +2 -2
- package/dist/{in-a-run-Bs4Wv-Cz.mjs → in-a-run-CsSBQQ2q.mjs} +1 -1
- package/dist/{limits-RzKQ_zPk.mjs → limits-D_HxH0CK.mjs} +1 -1
- package/dist/{list-DX65Sbu7.mjs → list-CzzpVEpM.mjs} +1 -1
- package/dist/{mcp-DKrrxowo.mjs → mcp-DYmQt372.mjs} +6 -6
- package/dist/{output-Q3TZ-Ave.mjs → output-CuivUcDa.mjs} +1 -1
- package/dist/{pause-B5Z41lR3.mjs → pause-W6MzQqg8.mjs} +4 -4
- package/dist/{relay-BLnjMdjT.mjs → relay-CsdoZUXJ.mjs} +2 -2
- package/dist/{remove-IbcZOemm.mjs → remove-DLfDjBdF.mjs} +3 -3
- package/dist/{send-CJKEhBL1.mjs → send-Bw2FI_Sv.mjs} +3 -3
- package/dist/{src-DnETlJ1r.mjs → src-BRB5EQyC.mjs} +133 -11
- package/dist/{src-XDSRnAZV.mjs → src-Bc9yaAiZ.mjs} +159 -161
- package/dist/{src-LSxjnWDH.mjs → src-CrYCkU9J.mjs} +16 -8
- package/dist/{src-BTDzibW3.mjs → src-CsjumY1t.mjs} +7 -7
- package/dist/ui/assets/{app-BNElhp7Z.js → app-m9Gfrg_S.js} +1 -1
- package/dist/ui/assets/{index-BkI68sr5.js → index-UEC5ZLYw.js} +2 -2
- package/dist/ui/index.html +1 -1
- package/dist/{ui-fvrO7Gxd.mjs → ui-wX050aH1.mjs} +4 -4
- package/dist/{usage-bNdcBcj9.mjs → usage-C96RDH-G.mjs} +5 -5
- package/dist/{watch-EhlO304A.mjs → watch-vdRobJil.mjs} +6 -6
- package/dist/{workflows-C5hYAVcE.mjs → workflows-B28q8zMY.mjs} +3 -3
- package/dist/{worktrees-BQFcpYz1.mjs → worktrees-CKDRkl6b.mjs} +4 -4
- package/package.json +1 -1
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { Cn as placeFiles, Fn as writePlainFile, Ht as FEEDBACK_SEVERITIES, Jt as publishPost, Mn as estimateTokens, Nn as guardedBase, Pn as plainPathInside, Qt as targetOf, Vt as FEEDBACK_KINDS, Xt as fingerprint, en as maskSecrets, g as parseVersion, h as isNewer, jn as LESSON_CAP_TOKENS, kn as inside, m as compareVersions, wn as placeFor } from "./src-BRB5EQyC.mjs";
|
|
2
2
|
import path from "node:path";
|
|
3
3
|
import { existsSync, mkdirSync, readFileSync, realpathSync, renameSync, writeFileSync } from "node:fs";
|
|
4
4
|
import { homedir } from "node:os";
|
|
@@ -611,5 +611,5 @@ const registryShown = (registry) => {
|
|
|
611
611
|
* fails when it is stale.
|
|
612
612
|
*/
|
|
613
613
|
const ORK_NAME = "@krapht/ork";
|
|
614
|
-
const ORK_VERSION = "1.0.0-alpha.
|
|
614
|
+
const ORK_VERSION = "1.0.0-alpha.4";
|
|
615
615
|
export { feedbackActions as C, placeOf as S, previewPost as _, registryShown as a, acceptItem as b, checkDue as c, pendingNotice as d, readUpdateCache as f, nodeSession as g, writeUpdateCache as h, registryOf as i, fetchLatest as l, updateCachePath as m, ORK_VERSION as n, updateSwitchOff as o, refreshUpdateCache as p, isSwitchedOn as r, runInstall as s, ORK_NAME as t, newerVersion as u, checkNote as v, openFixRun as w, lessonPlaceOf as x, recordNote as y };
|
package/dist/bin.mjs
CHANGED
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
|
-
import {
|
|
3
|
-
import { C as feedbackActions, S as placeOf, _ as previewPost, b as acceptItem, c as checkDue, d as pendingNotice, f as readUpdateCache, g as nodeSession, h as writeUpdateCache, i as registryOf, l as fetchLatest, m as updateCachePath, n as ORK_VERSION, o as updateSwitchOff, p as refreshUpdateCache, r as isSwitchedOn, s as runInstall, t as ORK_NAME, u as newerVersion$1, v as checkNote, w as openFixRun, y as recordNote } from "./__build_info__-
|
|
4
|
-
import { i as builtinWorkflowFile, n as pendingDecisions, r as builtinProblem, t as answerDecision } from "./decide-
|
|
5
|
-
import { n as newRunId, t as findRun } from "./find-
|
|
6
|
-
import { a as write, c as openStore, i as style, l as storePath, n as cost, o as writeErr, s as nodeOf, t as confirm } from "./output-
|
|
7
|
-
import { n as listOrkWorktrees, t as createdWorktrees } from "./list-
|
|
8
|
-
import { a as planClean, t as applyClean } from "./clean-
|
|
2
|
+
import { $t as maskReplacer, An as projectRootOf, Cn as placeFiles, D as inspectProject, Dn as shownPath, Dt as userMessageText, En as runDirOf, Ft as PROJECT_FILE, Gt as planPost, H as tellNode, Ht as FEEDBACK_SEVERITIES, I as createCalls, It as gitRulesOf, J as tellLiveRun, Kn as WorkflowSchema, L as addressOf, Lt as loadProject, M as clearGitLocalEnv, N as parseInputPairs, P as resolveInputs, Qn as isClaudeNode, R as endLink, Sn as newProjectId, Tn as projectsHome, Tt as startRun, Un as serializeWorkflow, Ut as FEEDBACK_TARGETS, V as peerOf, Vt as FEEDBACK_KINDS, W as flattenTree, Xt as fingerprint, Yn as settingsOf, Yt as createFeedback, Zn as beforeOf, Zt as normalizeTitle, _ as lateTriggers, _n as catalogAgent, _t as runStatus, an as serveRun, bn as hasInRepoFiles, cn as wakeRun, cr as CLAUDE_DRIVERS, d as runningRunIds, dn as planMoveInto, dr as experimentsOn, dt as namingNoDriver, et as adoptedCalls, f as runningScript, fn as linkTools, fr as knownExperiments, ft as sessionDriver, gn as deleteAgent, h as isNewer, hn as createAgent, ht as liveStatus, i as NOT_STARTED, it as replayLoopAnswers, kn as inside, l as planUpgrade, ln as planAgentMigration, lr as firstLine, mn as toolsInUse, n as resolveBase, nt as resumable, on as socketPath, or as AGENT_TOOL_LAYOUTS, ot as detachRun, pn as toolLinks, q as requestStop, qt as sendPost, rr as INTEGRATIONS, rt as createReplay, sn as socketRoom, sr as ORK_LAYOUT, st as followEvents, t as createWorkspace, tt as detachResume, u as releaseNotes, un as applySteps, ur as EXPERIMENTS, ut as planNodeSession, v as triggersReport, vn as loadAgents, vt as runTree, wn as placeFor, wt as walkSummary, xn as inRepoPlace, z as endLinksOf } from "./src-BRB5EQyC.mjs";
|
|
3
|
+
import { C as feedbackActions, S as placeOf, _ as previewPost, b as acceptItem, c as checkDue, d as pendingNotice, f as readUpdateCache, g as nodeSession, h as writeUpdateCache, i as registryOf, l as fetchLatest, m as updateCachePath, n as ORK_VERSION, o as updateSwitchOff, p as refreshUpdateCache, r as isSwitchedOn, s as runInstall, t as ORK_NAME, u as newerVersion$1, v as checkNote, w as openFixRun, y as recordNote } from "./__build_info__-1i1IwLg7.mjs";
|
|
4
|
+
import { i as builtinWorkflowFile, n as pendingDecisions, r as builtinProblem, t as answerDecision } from "./decide-CBhYcjwI.mjs";
|
|
5
|
+
import { n as newRunId, t as findRun } from "./find-BgZjVKhv.mjs";
|
|
6
|
+
import { a as write, c as openStore, i as style, l as storePath, n as cost, o as writeErr, s as nodeOf, t as confirm } from "./output-CuivUcDa.mjs";
|
|
7
|
+
import { n as listOrkWorktrees, t as createdWorktrees } from "./list-CzzpVEpM.mjs";
|
|
8
|
+
import { a as planClean, t as applyClean } from "./clean-B1zPxq6A.mjs";
|
|
9
9
|
import { c as subcommandsOf, i as argsOf, n as groupedEntries, o as publicArgs, s as resolved, t as groupOf } from "./help-groups-BwYoAWsh.mjs";
|
|
10
|
-
import { a as formatRunEvent, i as formatEvent, n as formatRuns, o as createTerminalHuman, r as formatTree, t as ago } from "./format-
|
|
11
|
-
import {
|
|
12
|
-
import {
|
|
13
|
-
import { i as
|
|
14
|
-
import {
|
|
15
|
-
import { i as decideRefusal, n as chatRefusal } from "./in-a-run-
|
|
10
|
+
import { a as formatRunEvent, i as formatEvent, n as formatRuns, o as createTerminalHuman, r as formatTree, t as ago } from "./format-Creyq4U3.mjs";
|
|
11
|
+
import { _ as namedMcpEntries, a as builtinExecutors, d as maskedEnv, f as maskedNamesOfRun, g as clearOutputFiles, h as sessionEnv, i as onPath, l as clearStateFiles, m as runScrubber, n as missingProgramMessage, r as missingPrograms, t as envProblems, v as resultOf } from "./src-Bc9yaAiZ.mjs";
|
|
12
|
+
import { c as registeredProjects, i as refusedBuiltin, n as WORKFLOW_SUFFIX, o as workflowArg, s as projectAt, t as WORKFLOW_DIR } from "./workflows-B28q8zMY.mjs";
|
|
13
|
+
import { a as validate, c as warningLines, i as loadWorkflow, o as validateFile, r as formatReport, s as walkLoaded, t as context } from "./context-CD5TCD1D.mjs";
|
|
14
|
+
import { i as runLimits, r as limitsRefusal, t as chatNotice } from "./limits-D_HxH0CK.mjs";
|
|
15
|
+
import { i as decideRefusal, n as chatRefusal } from "./in-a-run-CsSBQQ2q.mjs";
|
|
16
16
|
import path from "node:path";
|
|
17
17
|
import { stringify } from "yaml";
|
|
18
18
|
import { z } from "zod";
|
|
@@ -1064,6 +1064,8 @@ const resumeChat = async (options) => {
|
|
|
1064
1064
|
...template === void 0 ? {} : { template }
|
|
1065
1065
|
});
|
|
1066
1066
|
if (!plan.ok) return plan.error;
|
|
1067
|
+
const servers = namedMcpEntries(run.project, plan.mcp);
|
|
1068
|
+
if (!servers.ok) return servers.error;
|
|
1067
1069
|
let driver = options.driver ?? session.driver ?? plan.driver;
|
|
1068
1070
|
if (driver === void 0) {
|
|
1069
1071
|
const ready = readyDriver(await (options.driverChecks ?? checksHere)());
|
|
@@ -1079,6 +1081,7 @@ const resumeChat = async (options) => {
|
|
|
1079
1081
|
});
|
|
1080
1082
|
const started = (await options.runtime(driver)).start({
|
|
1081
1083
|
...plan.spec,
|
|
1084
|
+
...servers.value,
|
|
1082
1085
|
resume: session.sessionId,
|
|
1083
1086
|
prompt: options.body,
|
|
1084
1087
|
...machineClaudeOf(events)
|
|
@@ -1195,6 +1198,8 @@ const runNode = async (options) => {
|
|
|
1195
1198
|
pluginDir: path.join(runDir, "plugins", options.nodeId)
|
|
1196
1199
|
});
|
|
1197
1200
|
if (!plan.ok) return failed([plan.error]);
|
|
1201
|
+
const servers = namedMcpEntries(projectRoot, plan.mcp);
|
|
1202
|
+
if (!servers.ok) return failed([servers.error]);
|
|
1198
1203
|
const named = sessionDriver({
|
|
1199
1204
|
override: options.driver,
|
|
1200
1205
|
named: plan.driver
|
|
@@ -1268,7 +1273,10 @@ const runNode = async (options) => {
|
|
|
1268
1273
|
});
|
|
1269
1274
|
const runtime = await options.runtime(driver);
|
|
1270
1275
|
if (options.machineClaude === true) plan.spec.machineClaude = true;
|
|
1271
|
-
const session = runtime.start(
|
|
1276
|
+
const session = runtime.start({
|
|
1277
|
+
...plan.spec,
|
|
1278
|
+
...servers.value
|
|
1279
|
+
}, {
|
|
1272
1280
|
human: control.human,
|
|
1273
1281
|
...graph === null ? {} : { feedback: createFeedback({
|
|
1274
1282
|
graph,
|
|
@@ -1714,7 +1722,7 @@ const flagValues = (rawArgs, flag) => {
|
|
|
1714
1722
|
};
|
|
1715
1723
|
const isDriver = (value) => CLAUDE_DRIVERS.some((d) => d.id === value);
|
|
1716
1724
|
/** Loads the drivers only when a run starts, so other commands stay fast. */
|
|
1717
|
-
const loadRuntime = async (driver) => (await import("./src-
|
|
1725
|
+
const loadRuntime = async (driver) => (await import("./src-CrYCkU9J.mjs")).createRuntime(driver, sessionEnv(process.env));
|
|
1718
1726
|
/**
|
|
1719
1727
|
* Ctrl-C asks the run to stop, and so does a terminal closing or a polite kill,
|
|
1720
1728
|
* so that the run ends tidily and leaves no result unscrubbed.
|
|
@@ -4607,27 +4615,27 @@ const main = defineCommand({
|
|
|
4607
4615
|
ps,
|
|
4608
4616
|
logs,
|
|
4609
4617
|
tree,
|
|
4610
|
-
usage: () => import("./usage-
|
|
4611
|
-
prune: () => import("./usage-
|
|
4618
|
+
usage: () => import("./usage-C96RDH-G.mjs").then((module) => module.usage),
|
|
4619
|
+
prune: () => import("./usage-C96RDH-G.mjs").then((module) => module.prune),
|
|
4612
4620
|
decide,
|
|
4613
|
-
relay: () => import("./relay-
|
|
4614
|
-
pause: () => import("./pause-
|
|
4615
|
-
continue: () => import("./pause-
|
|
4621
|
+
relay: () => import("./relay-CsdoZUXJ.mjs").then((module) => module.relay),
|
|
4622
|
+
pause: () => import("./pause-W6MzQqg8.mjs").then((module) => module.pause),
|
|
4623
|
+
continue: () => import("./pause-W6MzQqg8.mjs").then((module) => module.continueRun),
|
|
4616
4624
|
stop,
|
|
4617
4625
|
chat,
|
|
4618
|
-
send: () => import("./send-
|
|
4626
|
+
send: () => import("./send-Bw2FI_Sv.mjs").then((module) => module.send),
|
|
4619
4627
|
resume,
|
|
4620
4628
|
feedback,
|
|
4621
4629
|
context,
|
|
4622
|
-
worktrees: () => import("./worktrees-
|
|
4623
|
-
wt: () => import("./worktrees-
|
|
4624
|
-
watch: () => import("./watch-
|
|
4625
|
-
mcp: () => import("./mcp-
|
|
4626
|
-
ui: () => import("./ui-
|
|
4630
|
+
worktrees: () => import("./worktrees-CKDRkl6b.mjs").then((module) => module.worktrees),
|
|
4631
|
+
wt: () => import("./worktrees-CKDRkl6b.mjs").then((module) => module.worktrees),
|
|
4632
|
+
watch: () => import("./watch-vdRobJil.mjs").then((module) => module.watch),
|
|
4633
|
+
mcp: () => import("./mcp-DYmQt372.mjs").then((module) => module.mcp),
|
|
4634
|
+
ui: () => import("./ui-wX050aH1.mjs").then((module) => module.ui),
|
|
4627
4635
|
doctor,
|
|
4628
4636
|
upgrade,
|
|
4629
|
-
completion: () => import("./completion-
|
|
4630
|
-
__complete: () => import("./completion-
|
|
4637
|
+
completion: () => import("./completion-BY-frez8.mjs").then((module) => module.completion),
|
|
4638
|
+
__complete: () => import("./completion-BY-frez8.mjs").then((module) => module.completeCommand(main))
|
|
4631
4639
|
}
|
|
4632
4640
|
});
|
|
4633
4641
|
// src/bin.ts
|
|
@@ -4645,7 +4653,7 @@ const main = defineCommand({
|
|
|
4645
4653
|
clearGitLocalEnv();
|
|
4646
4654
|
const argv = process.argv.slice(2);
|
|
4647
4655
|
if (argv[0] === "__complete") {
|
|
4648
|
-
const { printCompletions } = await import("./completion-
|
|
4656
|
+
const { printCompletions } = await import("./completion-BY-frez8.mjs");
|
|
4649
4657
|
await printCompletions(main, argv.slice(1));
|
|
4650
4658
|
} else if (process.env["ORK_UPDATE_CHECK_CHILD"] === "1") await runUpdateChild();
|
|
4651
4659
|
else {
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { a as builtinWorkflowNames, n as pendingDecisions, o as builtinWorkflowText, s as isBuiltinArg } from "./decide-
|
|
3
|
-
import { t as findRun } from "./find-
|
|
4
|
-
import { c as openStore, l as storePath, o as writeErr } from "./output-
|
|
1
|
+
import { Cn as placeFiles, cr as CLAUDE_DRIVERS, ht as liveStatus, tr as NodeIdSchema, wn as placeFor } from "./src-BRB5EQyC.mjs";
|
|
2
|
+
import { a as builtinWorkflowNames, n as pendingDecisions, o as builtinWorkflowText, s as isBuiltinArg } from "./decide-CBhYcjwI.mjs";
|
|
3
|
+
import { t as findRun } from "./find-BgZjVKhv.mjs";
|
|
4
|
+
import { c as openStore, l as storePath, o as writeErr } from "./output-CuivUcDa.mjs";
|
|
5
5
|
import { a as findEntry, c as subcommandsOf, d as SHELL_SCRIPTS, l as COMPLETE_COMMAND, n as groupedEntries, r as argInfoOf, t as groupOf, u as SHELLS } from "./help-groups-BwYoAWsh.mjs";
|
|
6
|
-
import { a as resolveWorkflowArg, n as WORKFLOW_SUFFIX } from "./workflows-
|
|
6
|
+
import { a as resolveWorkflowArg, n as WORKFLOW_SUFFIX } from "./workflows-B28q8zMY.mjs";
|
|
7
7
|
import path from "node:path";
|
|
8
8
|
import { parse } from "yaml";
|
|
9
9
|
import { existsSync, readFileSync, readdirSync, statSync } from "node:fs";
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { C as workflowTextHash, Ct as walkChecks, On as
|
|
2
|
-
import { a as write, i as style, r as plain } from "./output-
|
|
3
|
-
import { c as registeredProjects, i as refusedBuiltin, o as workflowArg, r as findWorkflowFiles, s as projectAt } from "./workflows-
|
|
1
|
+
import { C as workflowTextHash, Cn as placeFiles, Ct as walkChecks, On as workflowDirOf, S as readProjectTriggers, St as checkWorkflowText, jn as LESSON_CAP_TOKENS, lt as explainSession, wn as placeFor, wt as walkSummary } from "./src-BRB5EQyC.mjs";
|
|
2
|
+
import { a as write, i as style, r as plain } from "./output-CuivUcDa.mjs";
|
|
3
|
+
import { c as registeredProjects, i as refusedBuiltin, o as workflowArg, r as findWorkflowFiles, s as projectAt } from "./workflows-B28q8zMY.mjs";
|
|
4
4
|
import path from "node:path";
|
|
5
5
|
import { readFileSync } from "node:fs";
|
|
6
6
|
import { defineCommand } from "citty";
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { Cn as placeFiles, Fn as writePlainFile, Nn as guardedBase, Pn as plainPathInside, cn as wakeRun, ht as liveStatus, on as socketPath } from "./src-BRB5EQyC.mjs";
|
|
2
2
|
import path from "node:path";
|
|
3
3
|
import { existsSync, readFileSync } from "node:fs";
|
|
4
4
|
import { createHash } from "node:crypto";
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { ht as liveStatus } from "./src-
|
|
2
|
-
import { i as style, n as cost } from "./output-
|
|
1
|
+
import { ht as liveStatus } from "./src-BRB5EQyC.mjs";
|
|
2
|
+
import { i as style, n as cost } from "./output-CuivUcDa.mjs";
|
|
3
3
|
import { createInterface } from "node:readline/promises";
|
|
4
4
|
// src/human.ts
|
|
5
5
|
/**
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { a as limitsNow, i as NOT_STARTED, o as limitsReport, r as capsHere } from "./src-
|
|
1
|
+
import { a as limitsNow, i as NOT_STARTED, o as limitsReport, r as capsHere } from "./src-BRB5EQyC.mjs";
|
|
2
2
|
// src/run/limits.ts
|
|
3
3
|
/**
|
|
4
4
|
* @file The limits across runs that apply here (RFC-007): the user's settings
|
|
@@ -1,8 +1,8 @@
|
|
|
1
|
-
import { h as isNewer } from "./src-
|
|
2
|
-
import { n as ORK_VERSION } from "./__build_info__-
|
|
3
|
-
import { a as openMcp, c as refused, o as tool, s as answer } from "./src-
|
|
4
|
-
import {
|
|
5
|
-
import {
|
|
1
|
+
import { h as isNewer } from "./src-BRB5EQyC.mjs";
|
|
2
|
+
import { n as ORK_VERSION } from "./__build_info__-1i1IwLg7.mjs";
|
|
3
|
+
import { a as openMcp, c as refused, o as tool, s as answer } from "./src-CsjumY1t.mjs";
|
|
4
|
+
import { p as runMarkerIn } from "./src-Bc9yaAiZ.mjs";
|
|
5
|
+
import { n as explainNode } from "./context-CD5TCD1D.mjs";
|
|
6
6
|
import { z } from "zod";
|
|
7
7
|
import { defineCommand } from "citty";
|
|
8
8
|
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
@@ -43,7 +43,7 @@ const orkMcpServer = (options = {}) => {
|
|
|
43
43
|
...options.script === void 0 ? {} : { script: options.script }
|
|
44
44
|
});
|
|
45
45
|
const all = [...opened.tools, explainTool(opened, options.home)];
|
|
46
|
-
const tools = options.expects !== void 0 && isNewer(options.expects, "1.0.0-alpha.
|
|
46
|
+
const tools = options.expects !== void 0 && isNewer(options.expects, "1.0.0-alpha.4") ? tooOld(all, options.expects) : all;
|
|
47
47
|
const server = new McpServer({
|
|
48
48
|
name: "ork",
|
|
49
49
|
version: ORK_VERSION
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { $ as text,
|
|
1
|
+
import { $ as text, $t as maskReplacer, Ht as FEEDBACK_SEVERITIES, Q as inTransaction, Ut as FEEDBACK_TARGETS, Vt as FEEDBACK_KINDS, X as usageQueries, Y as backfillUsage, Z as eventOf, en as maskSecrets, yn as PROJECT_MODES, yt as ownProcessStart } from "./src-BRB5EQyC.mjs";
|
|
2
2
|
import path from "node:path";
|
|
3
3
|
import { mkdirSync } from "node:fs";
|
|
4
4
|
import { homedir } from "node:os";
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { G as requestContinue, K as requestPause } from "./src-
|
|
2
|
-
import { t as findRun } from "./find-
|
|
3
|
-
import { a as write, c as openStore, i as style, o as writeErr } from "./output-
|
|
4
|
-
import { r as continueRefusal } from "./in-a-run-
|
|
1
|
+
import { G as requestContinue, K as requestPause } from "./src-BRB5EQyC.mjs";
|
|
2
|
+
import { t as findRun } from "./find-BgZjVKhv.mjs";
|
|
3
|
+
import { a as write, c as openStore, i as style, o as writeErr } from "./output-CuivUcDa.mjs";
|
|
4
|
+
import { r as continueRefusal } from "./in-a-run-CsSBQQ2q.mjs";
|
|
5
5
|
import { defineCommand } from "citty";
|
|
6
6
|
// src/commands/pause.ts
|
|
7
7
|
/**
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { B as linkNodes, L as addressOf, U as unlinkNodes } from "./src-
|
|
2
|
-
import { a as write, c as openStore, i as style, o as writeErr } from "./output-
|
|
1
|
+
import { B as linkNodes, L as addressOf, U as unlinkNodes } from "./src-BRB5EQyC.mjs";
|
|
2
|
+
import { a as write, c as openStore, i as style, o as writeErr } from "./output-CuivUcDa.mjs";
|
|
3
3
|
import { defineCommand } from "citty";
|
|
4
4
|
// src/commands/relay.ts
|
|
5
5
|
/**
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { ht as liveStatus, j as lines, k as git } from "./src-
|
|
2
|
-
import { n as listOrkWorktrees, t as createdWorktrees } from "./list-
|
|
3
|
-
import { i as keyOf, n as applyStep, r as cleanStep, s as stepPrunes } from "./clean-
|
|
1
|
+
import { ht as liveStatus, j as lines, k as git } from "./src-BRB5EQyC.mjs";
|
|
2
|
+
import { n as listOrkWorktrees, t as createdWorktrees } from "./list-CzzpVEpM.mjs";
|
|
3
|
+
import { i as keyOf, n as applyStep, r as cleanStep, s as stepPrunes } from "./clean-B1zPxq6A.mjs";
|
|
4
4
|
// ../core/src/worktree/words.ts
|
|
5
5
|
/**
|
|
6
6
|
* @file The plain words for what `ork worktrees` shows, in one place, so the
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { c as openStore, o as writeErr } from "./output-
|
|
3
|
-
import { u as inheritedScrubber } from "./src-
|
|
1
|
+
import { cn as wakeRun, ht as liveStatus, kt as scriptContactsOf, on as socketPath } from "./src-BRB5EQyC.mjs";
|
|
2
|
+
import { c as openStore, o as writeErr } from "./output-CuivUcDa.mjs";
|
|
3
|
+
import { u as inheritedScrubber } from "./src-Bc9yaAiZ.mjs";
|
|
4
4
|
import { defineCommand } from "citty";
|
|
5
5
|
// ../core/src/remote/send.ts
|
|
6
6
|
/**
|
|
@@ -459,6 +459,7 @@ const PracticesSchema = z.strictObject({
|
|
|
459
459
|
])]).optional().describe("Smallest complete change. `true` is `full`. Default: `full`.")
|
|
460
460
|
});
|
|
461
461
|
const TurnsSchema = z.number().int().positive();
|
|
462
|
+
const McpNamesSchema = z.array(z.string().min(1)).optional().describe("MCP servers from the project's `.mcp.json` this node's sessions load, beside Ork's own. Default: none.");
|
|
462
463
|
const ToolRulesSchema = z.strictObject({
|
|
463
464
|
allow: z.array(z.string()).optional(),
|
|
464
465
|
deny: z.array(z.string()).optional(),
|
|
@@ -612,6 +613,7 @@ const claudeFields = {
|
|
|
612
613
|
const ClaudeLeaderNodeSchema = z.strictObject({
|
|
613
614
|
type: z.literal("claude.leader"),
|
|
614
615
|
...claudeFields,
|
|
616
|
+
mcp: McpNamesSchema,
|
|
615
617
|
...notifyFields,
|
|
616
618
|
...stepFields,
|
|
617
619
|
maxWorkers: z.number().int().nonnegative().optional().describe("Cap on dynamically spawned workers."),
|
|
@@ -620,6 +622,7 @@ const ClaudeLeaderNodeSchema = z.strictObject({
|
|
|
620
622
|
const ClaudeWorkerNodeSchema = z.strictObject({
|
|
621
623
|
type: z.literal("claude.worker"),
|
|
622
624
|
...claudeFields,
|
|
625
|
+
mcp: McpNamesSchema,
|
|
623
626
|
...notifyFields,
|
|
624
627
|
...stepFields
|
|
625
628
|
});
|
|
@@ -922,6 +925,7 @@ const DefaultsSchema = z.strictObject({
|
|
|
922
925
|
maxTurns: TurnsSchema.optional(),
|
|
923
926
|
timeout: TimeoutSchema.optional().describe("For tool and Claude nodes that set none; a gate's own timeout is separate."),
|
|
924
927
|
practices: PracticesSchema.optional(),
|
|
928
|
+
mcp: McpNamesSchema,
|
|
925
929
|
before: stepFields.before
|
|
926
930
|
});
|
|
927
931
|
/** What the placeholders in a git template may name. */
|
|
@@ -1283,7 +1287,7 @@ const renderJsonSchema = () => {
|
|
|
1283
1287
|
* model the serializer follows, so that a document edit puts a new key where
|
|
1284
1288
|
* the serializer would and a canonical file stays canonical (RFC-008).
|
|
1285
1289
|
*/
|
|
1286
|
-
const isRecord$
|
|
1290
|
+
const isRecord$3 = (value) => typeof value === "object" && value !== null && !Array.isArray(value);
|
|
1287
1291
|
const unwrapped = (schema) => {
|
|
1288
1292
|
let current = schema;
|
|
1289
1293
|
while (current instanceof z.ZodOptional || current instanceof z.ZodNullable || current instanceof z.ZodDefault) current = current.unwrap();
|
|
@@ -1304,8 +1308,8 @@ const declaresType = (object, type) => {
|
|
|
1304
1308
|
/** The object `value` is, among those `schema` allows. */
|
|
1305
1309
|
const objectFor = (schema, value) => {
|
|
1306
1310
|
const objects = objectsIn(schema);
|
|
1307
|
-
const keys = isRecord$
|
|
1308
|
-
const type = isRecord$
|
|
1311
|
+
const keys = isRecord$3(value) ? Object.keys(value) : [];
|
|
1312
|
+
const type = isRecord$3(value) ? value["type"] : void 0;
|
|
1309
1313
|
return objects.find((object) => declaresType(object, type)) ?? objects.find((object) => keys.every((key) => key in object.shape)) ?? objects[0];
|
|
1310
1314
|
};
|
|
1311
1315
|
/** The keys `schema` declares for `value`, in canonical order. */
|
|
@@ -1321,14 +1325,14 @@ const childOf = (schema, key, value) => {
|
|
|
1321
1325
|
/** `value` with every object's keys in canonical order and no undefined. */
|
|
1322
1326
|
const inCanonicalOrder = (value, schema) => {
|
|
1323
1327
|
if (Array.isArray(value)) return value.map((item, index) => inCanonicalOrder(item, childOf(schema, index, value)));
|
|
1324
|
-
if (!isRecord$
|
|
1328
|
+
if (!isRecord$3(value)) return value;
|
|
1325
1329
|
const order = keysOf(schema, value);
|
|
1326
1330
|
return Object.fromEntries([...order.filter((known) => known in value), ...Object.keys(value).filter((other) => !order.includes(other))].filter((key) => value[key] !== void 0).map((key) => [key, inCanonicalOrder(value[key], childOf(schema, key, value))]));
|
|
1327
1331
|
};
|
|
1328
1332
|
/** Two plain values alike, whatever the order of their keys. */
|
|
1329
1333
|
const sameValue$1 = (a, b) => {
|
|
1330
1334
|
if (Array.isArray(a) && Array.isArray(b)) return a.length === b.length && a.every((x, i) => sameValue$1(x, b[i]));
|
|
1331
|
-
if (isRecord$
|
|
1335
|
+
if (isRecord$3(a) && isRecord$3(b)) {
|
|
1332
1336
|
const left = Object.entries(a);
|
|
1333
1337
|
return left.length === Object.keys(b).length && left.every(([key, value]) => sameValue$1(value, b[key]));
|
|
1334
1338
|
}
|
|
@@ -1495,7 +1499,7 @@ const entryOf = (doc, raw) => {
|
|
|
1495
1499
|
}
|
|
1496
1500
|
if (!isMap(item)) return void 0;
|
|
1497
1501
|
const value = item.toJS(doc);
|
|
1498
|
-
if (!isRecord$
|
|
1502
|
+
if (!isRecord$3(value)) return void 0;
|
|
1499
1503
|
const { from, to, when, maxRounds, ...rest } = value;
|
|
1500
1504
|
const whenIsText = typeof when === "string";
|
|
1501
1505
|
const roundsIsNumber = typeof maxRounds === "number";
|
|
@@ -1713,7 +1717,7 @@ const withOptions = (doc, item, next) => {
|
|
|
1713
1717
|
const custom = Object.keys(next.extra).length > 0;
|
|
1714
1718
|
if (!isMap(item) || !hasOptions && !custom && !hasComment(item)) return authored(next);
|
|
1715
1719
|
const value = item.toJS(doc);
|
|
1716
|
-
const { when: _when, maxRounds: _rounds, ...rest } = isRecord$
|
|
1720
|
+
const { when: _when, maxRounds: _rounds, ...rest } = isRecord$3(value) ? value : {};
|
|
1717
1721
|
return {
|
|
1718
1722
|
...rest,
|
|
1719
1723
|
...next.when === void 0 ? {} : { when: next.when },
|
|
@@ -4563,6 +4567,119 @@ const FEEDBACK_SEVERITIES = [
|
|
|
4563
4567
|
"medium",
|
|
4564
4568
|
"high"
|
|
4565
4569
|
];
|
|
4570
|
+
// ../core/src/project/mcp-file.ts
|
|
4571
|
+
/**
|
|
4572
|
+
* @file The project's `.mcp.json`, the file Claude Code reads too, so a server
|
|
4573
|
+
* is defined in one place: reading its servers, and the compiler's check of
|
|
4574
|
+
* the servers a Claude node names (`mcp:`, ADR-067). A session's servers are
|
|
4575
|
+
* read with the file's text left as written, so no value leaves the file.
|
|
4576
|
+
*/
|
|
4577
|
+
const MCP_FILE = ".mcp.json";
|
|
4578
|
+
/** Ork's own MCP server: a project can't redefine it. */
|
|
4579
|
+
const ORK_MCP_NAME = "ork";
|
|
4580
|
+
const isRecord$2 = (value) => typeof value === "object" && value !== null && !Array.isArray(value);
|
|
4581
|
+
/** The file's `mcpServers`; `{}` when there is no file. */
|
|
4582
|
+
const serversIn = (root) => {
|
|
4583
|
+
const file = path.join(root, MCP_FILE);
|
|
4584
|
+
if (!existsSync(file)) return {
|
|
4585
|
+
ok: true,
|
|
4586
|
+
value: {}
|
|
4587
|
+
};
|
|
4588
|
+
try {
|
|
4589
|
+
const parsed = JSON.parse(readFileSync(file, "utf8"));
|
|
4590
|
+
const servers = isRecord$2(parsed) ? parsed["mcpServers"] : void 0;
|
|
4591
|
+
return {
|
|
4592
|
+
ok: true,
|
|
4593
|
+
value: isRecord$2(servers) ? servers : {}
|
|
4594
|
+
};
|
|
4595
|
+
} catch (error) {
|
|
4596
|
+
const reason = error instanceof SyntaxError ? "it is not valid JSON" : error instanceof Error ? error.message : String(error);
|
|
4597
|
+
return {
|
|
4598
|
+
ok: false,
|
|
4599
|
+
error: `${MCP_FILE} can't be read: ${reason}`
|
|
4600
|
+
};
|
|
4601
|
+
}
|
|
4602
|
+
};
|
|
4603
|
+
/** A server's field that holds something other than text: it would be dropped. */
|
|
4604
|
+
const mcpNotText = (server) => [
|
|
4605
|
+
"args",
|
|
4606
|
+
"env",
|
|
4607
|
+
"headers"
|
|
4608
|
+
].find((field) => {
|
|
4609
|
+
const value = server[field];
|
|
4610
|
+
return (Array.isArray(value) ? value : isRecord$2(value) ? Object.values(value) : []).some((item) => typeof item !== "string");
|
|
4611
|
+
});
|
|
4612
|
+
/** Why an entry can't be loaded, whatever its name; its values aren't quoted. */
|
|
4613
|
+
const entryProblem = (server) => {
|
|
4614
|
+
if (!isRecord$2(server)) return "it is not an object";
|
|
4615
|
+
if (server["args"] !== void 0 && !Array.isArray(server["args"])) return "its args is not a list";
|
|
4616
|
+
const notRecord = ["env", "headers"].find((field) => server[field] !== void 0 && !isRecord$2(server[field]));
|
|
4617
|
+
if (notRecord !== void 0) return `its ${notRecord} is not an object`;
|
|
4618
|
+
const field = mcpNotText(server);
|
|
4619
|
+
if (field !== void 0) return `its ${field} holds a value that isn't text`;
|
|
4620
|
+
return typeof server["command"] === "string" || typeof server["url"] === "string" ? void 0 : "it has neither a command nor a url";
|
|
4621
|
+
};
|
|
4622
|
+
/** What the compiler checks a workflow's `mcp:` names against. */
|
|
4623
|
+
const mcpFileOptions = (root) => {
|
|
4624
|
+
const read = serversIn(root);
|
|
4625
|
+
if (!read.ok) return {
|
|
4626
|
+
mcpServers: [],
|
|
4627
|
+
mcpFileProblem: read.error
|
|
4628
|
+
};
|
|
4629
|
+
if (!existsSync(path.join(root, ".mcp.json"))) return {
|
|
4630
|
+
mcpServers: [],
|
|
4631
|
+
mcpFileProblem: `there is no ${MCP_FILE}`
|
|
4632
|
+
};
|
|
4633
|
+
return {
|
|
4634
|
+
mcpServers: Object.keys(read.value),
|
|
4635
|
+
mcpMalformed: Object.fromEntries(Object.entries(read.value).flatMap(([name, server]) => {
|
|
4636
|
+
const problem = entryProblem(server);
|
|
4637
|
+
return problem === void 0 ? [] : [[name, problem]];
|
|
4638
|
+
}))
|
|
4639
|
+
};
|
|
4640
|
+
};
|
|
4641
|
+
/** The error for one name a node gave, or nothing when it can load. */
|
|
4642
|
+
const nameProblem = (id, name, options, known) => {
|
|
4643
|
+
if (name === ORK_MCP_NAME) return {
|
|
4644
|
+
code: "mcp.reserved",
|
|
4645
|
+
message: `\`${id}\`: \`${ORK_MCP_NAME}\` is Ork's own server, name another`
|
|
4646
|
+
};
|
|
4647
|
+
if (!known.includes(name)) return {
|
|
4648
|
+
code: "mcp.unknown",
|
|
4649
|
+
message: `\`${id}\`: no MCP server \`${name}\`${options.mcpFileProblem === void 0 ? ` in ${MCP_FILE}, which has ${known.length === 0 ? "none" : known.join(", ")}` : `: ${options.mcpFileProblem}`}`
|
|
4650
|
+
};
|
|
4651
|
+
const problem = Object.hasOwn(options.mcpMalformed ?? {}, name) ? options.mcpMalformed?.[name] : void 0;
|
|
4652
|
+
return problem === void 0 ? void 0 : {
|
|
4653
|
+
code: "mcp.malformed",
|
|
4654
|
+
message: `\`${id}\`: MCP server \`${name}\` in ${MCP_FILE} is malformed: ${problem}`
|
|
4655
|
+
};
|
|
4656
|
+
};
|
|
4657
|
+
/** Every server a Claude node's sessions would load exists and can load. */
|
|
4658
|
+
const checkMcpServers = (workflow, options) => {
|
|
4659
|
+
const known = options.mcpServers;
|
|
4660
|
+
if (known === void 0) return [];
|
|
4661
|
+
return Object.entries(workflow.nodes).flatMap(([id, node]) => {
|
|
4662
|
+
if (node.type !== "claude.leader" && node.type !== "claude.worker") return [];
|
|
4663
|
+
const own = node.mcp !== void 0;
|
|
4664
|
+
return (node.mcp ?? workflow.defaults?.mcp ?? []).flatMap((name, index) => {
|
|
4665
|
+
const problem = nameProblem(id, name, options, known);
|
|
4666
|
+
return problem === void 0 ? [] : [{
|
|
4667
|
+
severity: "error",
|
|
4668
|
+
...problem,
|
|
4669
|
+
path: own ? [
|
|
4670
|
+
"nodes",
|
|
4671
|
+
id,
|
|
4672
|
+
"mcp",
|
|
4673
|
+
index
|
|
4674
|
+
] : [
|
|
4675
|
+
"defaults",
|
|
4676
|
+
"mcp",
|
|
4677
|
+
index
|
|
4678
|
+
]
|
|
4679
|
+
}];
|
|
4680
|
+
});
|
|
4681
|
+
});
|
|
4682
|
+
};
|
|
4566
4683
|
// ../core/src/project/templates.ts
|
|
4567
4684
|
/**
|
|
4568
4685
|
* @file Git name templates (`ork/{run}/{node}`, `{inputs.type}/{inputs.slug}`):
|
|
@@ -5942,6 +6059,7 @@ const compileWorkflow = (authored, options = {}) => {
|
|
|
5942
6059
|
...rules.diagnostics,
|
|
5943
6060
|
...channels.diagnostics,
|
|
5944
6061
|
...checkRules(workflow),
|
|
6062
|
+
...checkMcpServers(workflow, options),
|
|
5945
6063
|
...checkReach(workflow, edges, entries)
|
|
5946
6064
|
];
|
|
5947
6065
|
diagnostics.sort((a, b) => SEVERITY_ORDER[a.severity] - SEVERITY_ORDER[b.severity]);
|
|
@@ -9073,7 +9191,8 @@ const checkWorkflowText = (text, { place, workflowDir, registered, home }) => {
|
|
|
9073
9191
|
catalog,
|
|
9074
9192
|
workflowDir,
|
|
9075
9193
|
projectRoot,
|
|
9076
|
-
...loaded.project === void 0 ? {} : { project: loaded.project }
|
|
9194
|
+
...loaded.project === void 0 ? {} : { project: loaded.project },
|
|
9195
|
+
...mcpFileOptions(projectRoot)
|
|
9077
9196
|
});
|
|
9078
9197
|
const { graph } = compiled;
|
|
9079
9198
|
const diagnostics = [];
|
|
@@ -9667,10 +9786,11 @@ const roleSection = (workflow, node) => {
|
|
|
9667
9786
|
return role === void 0 || role === "" ? [] : [`# Your role: ${node.agent}\n\n${role}`];
|
|
9668
9787
|
};
|
|
9669
9788
|
/** The node's own tool rules, the project's and workflow's, and isolation's. */
|
|
9670
|
-
const toolRules = (node, readonly, rules) => ({
|
|
9789
|
+
const toolRules = (node, readonly, rules, mcp) => ({
|
|
9671
9790
|
allow: [.../* @__PURE__ */ new Set([
|
|
9672
9791
|
...rules?.permissions?.allow ?? [],
|
|
9673
9792
|
...node.tools?.allow ?? [],
|
|
9793
|
+
...mcp.map((server) => `mcp__${server.replaceAll(/[^\w-]/gu, "_")}`),
|
|
9674
9794
|
...readonly ? READ_ONLY_COMMANDS : []
|
|
9675
9795
|
])],
|
|
9676
9796
|
deny: [.../* @__PURE__ */ new Set([
|
|
@@ -9700,6 +9820,7 @@ const planNodeSession = (workflow, id, options) => {
|
|
|
9700
9820
|
error: `\`${id}\` is a sub-agent; it runs inside \`${node.parent}\`'s session`
|
|
9701
9821
|
};
|
|
9702
9822
|
const defaults = workflow.defaults ?? {};
|
|
9823
|
+
const mcp = node.mcp ?? defaults.mcp ?? [];
|
|
9703
9824
|
const isolation = node.isolation ?? defaults.isolation ?? "worktree";
|
|
9704
9825
|
const ownWorktree = options.checkout?.own === true;
|
|
9705
9826
|
if ((isolation === "worktree" && !ownWorktree || isolation === "continue" && options.checkout === void 0) && options.inPlace !== true) return {
|
|
@@ -9743,7 +9864,7 @@ const planNodeSession = (workflow, id, options) => {
|
|
|
9743
9864
|
...contextSections(context.files, "node")
|
|
9744
9865
|
].join("\n\n"),
|
|
9745
9866
|
settingSources: ["project", "local"],
|
|
9746
|
-
tools: toolRules(node, isolation === "readonly", workflow.rules),
|
|
9867
|
+
tools: toolRules(node, isolation === "readonly", workflow.rules, mcp),
|
|
9747
9868
|
permissionMode: "default",
|
|
9748
9869
|
reportSchema: reportSchemaFor(node)
|
|
9749
9870
|
};
|
|
@@ -9769,6 +9890,7 @@ const planNodeSession = (workflow, id, options) => {
|
|
|
9769
9890
|
ok: true,
|
|
9770
9891
|
spec,
|
|
9771
9892
|
driver: namedDriver(node, workflow),
|
|
9893
|
+
mcp,
|
|
9772
9894
|
warnings,
|
|
9773
9895
|
context
|
|
9774
9896
|
};
|
|
@@ -13018,4 +13140,4 @@ const createWorkspace = (options) => {
|
|
|
13018
13140
|
close
|
|
13019
13141
|
};
|
|
13020
13142
|
};
|
|
13021
|
-
export { text as $,
|
|
13143
|
+
export { text as $, isToolNode as $n, maskReplacer as $t, gitOk as A, projectRootOf as An, runScope as At, linkNodes as B, readDocument as Bn, serversIn as Bt, workflowTextHash as C, placeFiles as Cn, walkChecks as Ct, inspectProject as D, shownPath as Dn, userMessageText as Dt, BRANCH_PREFIX as E, runDirOf as En, MESSAGE_LIMIT as Et, declaredProblem as F, writePlainFile as Fn, PROJECT_FILE as Ft, requestContinue as G, EdgeInputSchema as Gn, planPost as Gt, tellNode as H, parseWorkflow as Hn, FEEDBACK_SEVERITIES as Ht, createCalls as I, skillsIn as In, gitRulesOf as It, tellLiveRun as J, expandEdge as Jn, publishPost as Jt, requestPause as K, WorkflowSchema as Kn, runGh as Kt, addressOf as L, WorkflowEditSchema as Ln, loadProject as Lt, clearGitLocalEnv as M, estimateTokens as Mn, envReadsOf as Mt, parseInputPairs as N, guardedBase as Nn, nodeSays as Nt, removeWorktree as O, workflowDirOf as On, heldTimeout as Ot, resolveInputs as P, plainPathInside as Pn, declaredOutputOf as Pt, inTransaction as Q, isClaudeNode as Qn, targetOf as Qt, endLink as R, applyEdits as Rn, MCP_FILE as Rt, readProjectTriggers as S, newProjectId as Sn, checkWorkflowText as St, watchingPid as T, projectsHome as Tn, startRun as Tt, unlinkNodes as U, serializeWorkflow as Un, FEEDBACK_TARGETS as Ut, peerOf as V, renderJsonSchema as Vn, FEEDBACK_KINDS as Vt, flattenTree as W, markValue as Wn, DISCUSSIONS as Wt, usageQueries as X, NodeSchema as Xn, fingerprint as Xt, backfillUsage as Y, settingsOf as Yn, createFeedback as Yt, eventOf as Z, beforeOf as Zn, normalizeTitle as Zt, lateTriggers as _, catalogAgent as _n, runStatus as _t, limitsNow as a, serveRun as an, integrationFor as ar, DETACHED_ENV as at, triggerStanding as b, hasInRepoFiles as bn, processAlive as bt, usd as c, wakeRun as cn, CLAUDE_DRIVERS as cr, explainWorkflowText as ct, runningRunIds as d, planMoveInto as dn, experimentsOn as dr, namingNoDriver as dt, maskSecrets as en, programsRunBy as er, adoptedCalls as et, runningScript as f, linkTools as fn, knownExperiments as fr, sessionDriver as ft, parseVersion as g, deleteAgent as gn, pausedOf as gt, isNewer as h, createAgent as hn, liveStatus as ht, NOT_STARTED as i, readCondition as in, TOOL_PREFIX as ir, replayLoopAnswers as it, lines as j, LESSON_CAP_TOKENS as jn, calledWorkflows as jt, git as k, inside as kn, scriptContactsOf as kt, planUpgrade as l, planAgentMigration as ln, firstLine as lr, explainSession as lt, compareVersions as m, toolsInUse as mn, reportSchemaFor as mt, resolveBase as n, parseTemplate as nn, timeoutMs as nr, resumable as nt, limitsReport as o, socketPath as on, AGENT_TOOL_LAYOUTS as or, detachRun as ot, detectInstaller as p, toolLinks as pn, parseReport as pt, requestStop as q, CheckReportSchema as qn, sendPost as qt, capsHere as r, renderTemplate as rn, INTEGRATIONS as rr, createReplay as rt, planReason as s, socketRoom as sn, ORK_LAYOUT as sr, followEvents as st, createWorkspace as t, evaluate as tn, NodeIdSchema as tr, detachResume as tt, releaseNotes as u, applySteps as un, EXPERIMENTS as ur, planNodeSession as ut, triggersReport as v, loadAgents as vn, runTree as vt, takeWatchLock as w, placeFor as wn, walkSummary as wt, declaredTriggers as x, inRepoPlace as xn, stillTheSameProcess as xt, createWatcher as y, PROJECT_MODES as yn, ownProcessStart as yt, endLinksOf as z, newWorkflowText as zn, mcpNotText as zt };
|