glimmervoid 0.44.2 → 0.45.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/dist/bin/glimmervoid.js +8 -8
- package/dist/chunks/{adapters-B_ss_kZh.js → adapters-BGuI5U_-.js} +1 -1
- package/dist/chunks/{adapters-7AfJ6yb3.js → adapters-D99c4zCx.js} +2 -2
- package/dist/chunks/{agent-api-cli-zwuWZlwk.js → agent-api-cli-DIGH1v3_.js} +1 -1
- package/dist/chunks/{agent-api-cli-prUJ5ZGN.js → agent-api-cli-DdrR2vnB.js} +1 -1
- package/dist/chunks/{agent-api-core-DQwd2ClI.js → agent-api-core-D49OzKho.js} +2 -2
- package/dist/chunks/{config-DlKkg6IX.js → config-BLeRKmn9.js} +11 -1
- package/dist/chunks/{config-store-DIrwF5iQ.js → config-store-CXLnauAa.js} +2 -2
- package/dist/chunks/config-store-DlaaBY9p.js +1 -0
- package/dist/chunks/{contracts-lxJ0sQEl.js → contracts-CucdticH.js} +1 -1
- package/dist/chunks/{main-BCbulgNv.js → main-CX9CkTDx.js} +203 -31
- package/dist/chunks/{pair-cli-B3VRcrHm.js → pair-cli-BPyh48--.js} +2 -2
- package/dist/chunks/{remote-config-C91HwjWq.js → remote-config-B0zBDBak.js} +1 -1
- package/dist/chunks/{settings-cli-C9eCc60b.js → settings-cli-DzIasX94.js} +4 -4
- package/dist/chunks/{settings-readout-core-DK1m5TUq.js → settings-readout-core-BOv6tqdK.js} +1 -1
- package/dist/chunks/{ssh-sign-cli-DCnHgHqo.js → ssh-sign-cli-C_QYhDvI.js} +1 -1
- package/dist/client/assets/{action-status-DXcC95xv.js → action-status-DrMQzohk.js} +1 -1
- package/dist/client/assets/action-status-DrMQzohk.js.br +0 -0
- package/dist/client/assets/{benchmark-panel-Cssmnd3z.js → benchmark-panel-D09qvrAY.js} +1 -1
- package/dist/client/assets/benchmark-panel-D09qvrAY.js.br +0 -0
- package/dist/client/assets/{dom-helpers-CcEFPh-F.js → dom-helpers-CZ8NZKxw.js} +1 -1
- package/dist/client/assets/dom-helpers-CZ8NZKxw.js.br +0 -0
- package/dist/client/assets/{hooks-panel-Cli8EeBB.js → hooks-panel-R-L7DuIz.js} +1 -1
- package/dist/client/assets/hooks-panel-R-L7DuIz.js.br +0 -0
- package/dist/client/assets/{index-C8u3ZjM3.js → index-B7TvZo7W.js} +37 -37
- package/dist/client/assets/index-B7TvZo7W.js.br +0 -0
- package/dist/client/assets/{issues-panel-Bev1wadi.js → issues-panel-CyB4oq9Z.js} +1 -1
- package/dist/client/assets/issues-panel-CyB4oq9Z.js.br +0 -0
- package/dist/client/assets/{modal-CvDX5-_2.js → modal-M_mJ8--V.js} +1 -1
- package/dist/client/assets/modal-M_mJ8--V.js.br +0 -0
- package/dist/client/assets/{poll-ago-Dj148faJ.js → poll-ago-ItO-gOWA.js} +1 -1
- package/dist/client/assets/poll-ago-ItO-gOWA.js.br +0 -0
- package/dist/client/assets/{pr-queue-columns-Jleg5z3W.js → pr-queue-columns-Cu3-PADL.js} +1 -1
- package/dist/client/assets/pr-queue-columns-Cu3-PADL.js.br +0 -0
- package/dist/client/assets/{radar-panel-Dtp4ZzT3.js → radar-panel-Cl3yPWed.js} +1 -1
- package/dist/client/assets/radar-panel-Cl3yPWed.js.br +0 -0
- package/dist/client/assets/{review-queue-panel-BQvU_-xl.js → review-queue-panel-CVujzadC.js} +1 -1
- package/dist/client/assets/review-queue-panel-CVujzadC.js.br +0 -0
- package/dist/client/assets/{settings-panel-DegKCsoZ.js → settings-panel-DW5An8lQ.js} +1 -1
- package/dist/client/assets/settings-panel-DW5An8lQ.js.br +0 -0
- package/dist/client/assets/{trace-panel-DFqImX92.js → trace-panel-B6TiM5pb.js} +1 -1
- package/dist/client/assets/trace-panel-B6TiM5pb.js.br +0 -0
- package/dist/client/assets/ui-prefs-CQHZFVx6.js +1 -0
- package/dist/client/assets/ui-prefs-CQHZFVx6.js.br +0 -0
- package/dist/client/assets/{usage-panel-CEJqXYIA.js → usage-panel-D2RX3LtG.js} +1 -1
- package/dist/client/assets/usage-panel-D2RX3LtG.js.br +0 -0
- package/dist/client/assets/{visions-panel-Dm3iKlhv.js → visions-panel-BV9EKCBw.js} +1 -1
- package/dist/client/assets/visions-panel-BV9EKCBw.js.br +0 -0
- package/dist/client/index.html +6 -6
- package/dist/client/index.html.br +0 -0
- package/dist/server/index.js +1 -1
- package/package.json +1 -1
- package/dist/chunks/config-store-LYSRHNQs.js +0 -1
- package/dist/client/assets/action-status-DXcC95xv.js.br +0 -0
- package/dist/client/assets/benchmark-panel-Cssmnd3z.js.br +0 -0
- package/dist/client/assets/dom-helpers-CcEFPh-F.js.br +0 -0
- package/dist/client/assets/hooks-panel-Cli8EeBB.js.br +0 -0
- package/dist/client/assets/index-C8u3ZjM3.js.br +0 -0
- package/dist/client/assets/issues-panel-Bev1wadi.js.br +0 -0
- package/dist/client/assets/modal-CvDX5-_2.js.br +0 -0
- package/dist/client/assets/poll-ago-Dj148faJ.js.br +0 -0
- package/dist/client/assets/pr-queue-columns-Jleg5z3W.js.br +0 -0
- package/dist/client/assets/radar-panel-Dtp4ZzT3.js.br +0 -0
- package/dist/client/assets/review-queue-panel-BQvU_-xl.js.br +0 -0
- package/dist/client/assets/settings-panel-DegKCsoZ.js.br +0 -0
- package/dist/client/assets/trace-panel-DFqImX92.js.br +0 -0
- package/dist/client/assets/ui-prefs-CavQQH-s.js +0 -1
- package/dist/client/assets/ui-prefs-CavQQH-s.js.br +0 -0
- package/dist/client/assets/usage-panel-CEJqXYIA.js.br +0 -0
- package/dist/client/assets/visions-panel-Dm3iKlhv.js.br +0 -0
package/dist/bin/glimmervoid.js
CHANGED
|
@@ -4,7 +4,7 @@ import { i as errorText } from "../chunks/text-DoirglWV.js";
|
|
|
4
4
|
import { o as packageRoot } from "../chunks/runtime-paths-ghcH9CeW.js";
|
|
5
5
|
import { t as AGENT_API_VERBS } from "../chunks/session-CUc6d7aS.js";
|
|
6
6
|
import { i as execSync } from "../chunks/child-process-safe-D4hyVIXj.js";
|
|
7
|
-
import { r as agentCommandHelpLines } from "../chunks/agent-api-core-
|
|
7
|
+
import { r as agentCommandHelpLines } from "../chunks/agent-api-core-D49OzKho.js";
|
|
8
8
|
import { t as renderTable } from "../chunks/ascii-figure-core-pDAwtlKO.js";
|
|
9
9
|
import { n as glimmervoidHomeDir, t as decideConfigPath } from "../chunks/config-path-core-DFt-TemS.js";
|
|
10
10
|
import { i as parseCommandLine, r as gitDoctorRows, t as probeGitVersion } from "../chunks/git-version-C3lznLS_.js";
|
|
@@ -65,7 +65,7 @@ var OWN_SUBCOMMAND_RUNNERS = [
|
|
|
65
65
|
return 0;
|
|
66
66
|
}],
|
|
67
67
|
["pair", async (subcommandArgs) => {
|
|
68
|
-
const { runPairCli } = await import("../chunks/pair-cli-
|
|
68
|
+
const { runPairCli } = await import("../chunks/pair-cli-BPyh48--.js");
|
|
69
69
|
return runPairCli(subcommandArgs);
|
|
70
70
|
}],
|
|
71
71
|
["agent", async (subcommandArgs) => {
|
|
@@ -73,7 +73,7 @@ var OWN_SUBCOMMAND_RUNNERS = [
|
|
|
73
73
|
return runAgentSetupCli(subcommandArgs);
|
|
74
74
|
}],
|
|
75
75
|
["settings", async (subcommandArgs) => {
|
|
76
|
-
const { runSettingsCli } = await import("../chunks/settings-cli-
|
|
76
|
+
const { runSettingsCli } = await import("../chunks/settings-cli-DzIasX94.js");
|
|
77
77
|
return runSettingsCli(subcommandArgs);
|
|
78
78
|
}],
|
|
79
79
|
["visions", async (subcommandArgs) => {
|
|
@@ -81,13 +81,13 @@ var OWN_SUBCOMMAND_RUNNERS = [
|
|
|
81
81
|
return runVisionsCli(subcommandArgs);
|
|
82
82
|
}],
|
|
83
83
|
["ssh-sign", async (subcommandArgs) => {
|
|
84
|
-
const { runSshSignCli } = await import("../chunks/ssh-sign-cli-
|
|
84
|
+
const { runSshSignCli } = await import("../chunks/ssh-sign-cli-C_QYhDvI.js");
|
|
85
85
|
return runSshSignCli(subcommandArgs);
|
|
86
86
|
}]
|
|
87
87
|
];
|
|
88
88
|
var ownSubcommandNames = new Set(OWN_SUBCOMMAND_RUNNERS.map(([name]) => name));
|
|
89
89
|
var SUBCOMMAND_RUNNERS = new Map([...OWN_SUBCOMMAND_RUNNERS, ...AGENT_API_VERBS.filter((verb) => !ownSubcommandNames.has(verb)).map((verb) => [verb, async (subcommandArgs, subcommandName) => {
|
|
90
|
-
const { runAgentApiCli } = await import("../chunks/agent-api-cli-
|
|
90
|
+
const { runAgentApiCli } = await import("../chunks/agent-api-cli-DdrR2vnB.js");
|
|
91
91
|
return runAgentApiCli([subcommandName, ...subcommandArgs]);
|
|
92
92
|
}])]);
|
|
93
93
|
var AGENT_INSTALL_COMMAND_BY_ID = {
|
|
@@ -101,7 +101,7 @@ function missingAgentText(agentId) {
|
|
|
101
101
|
}
|
|
102
102
|
async function printSessionLimits() {
|
|
103
103
|
if (!process.env["GLIMMERVOID_AGENT_URL"]) return;
|
|
104
|
-
const { sessionLimitsHelpLines } = await import("../chunks/agent-api-cli-
|
|
104
|
+
const { sessionLimitsHelpLines } = await import("../chunks/agent-api-cli-DdrR2vnB.js");
|
|
105
105
|
const limitsLines = await sessionLimitsHelpLines();
|
|
106
106
|
console.log(`\n${limitsLines.join("\n")}`);
|
|
107
107
|
}
|
|
@@ -158,7 +158,7 @@ async function readDeclaredCustomAgents() {
|
|
|
158
158
|
declared: [],
|
|
159
159
|
error: null
|
|
160
160
|
};
|
|
161
|
-
const { loadConfigFile } = await import("../chunks/config-store-
|
|
161
|
+
const { loadConfigFile } = await import("../chunks/config-store-DlaaBY9p.js");
|
|
162
162
|
try {
|
|
163
163
|
const loaded = loadConfigFile(decided.path, { exitOnError: false });
|
|
164
164
|
if (!loaded.config) return {
|
|
@@ -234,7 +234,7 @@ async function runDoctor() {
|
|
|
234
234
|
}
|
|
235
235
|
switchSection("Agents");
|
|
236
236
|
try {
|
|
237
|
-
const { listAgentIds, describeAgentResolvability, setCustomAgents } = await import("../chunks/adapters-
|
|
237
|
+
const { listAgentIds, describeAgentResolvability, setCustomAgents } = await import("../chunks/adapters-BGuI5U_-.js");
|
|
238
238
|
const declaredCustomAgents = await readDeclaredCustomAgents();
|
|
239
239
|
if (declaredCustomAgents.error) line("config", declaredCustomAgents.error);
|
|
240
240
|
setCustomAgents(declaredCustomAgents.declared);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export { a as describeAgentResolvability, l as listAgentIds, f as setCustomAgents } from "./adapters-
|
|
1
|
+
export { a as describeAgentResolvability, l as listAgentIds, f as setCustomAgents } from "./adapters-D99c4zCx.js";
|
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
import { s as relayPath } from "./runtime-paths-ghcH9CeW.js";
|
|
2
2
|
import { Vt as shortSha$1, zt as FULL_SHA_RE } from "./session-CUc6d7aS.js";
|
|
3
3
|
import { n as execFileAsync, r as execFileSync } from "./child-process-safe-D4hyVIXj.js";
|
|
4
|
-
import { S as InstallFlavor } from "./config-
|
|
4
|
+
import { S as InstallFlavor } from "./config-BLeRKmn9.js";
|
|
5
5
|
import { o as supervisionLine } from "./session-routes--hrsvv7a.js";
|
|
6
6
|
import { c as textOr, s as rawTextOr } from "./coerce-NSst8oRP.js";
|
|
7
7
|
import { n as resolveAgentCommand, t as buildAgentSpawnCommand } from "./spawn-command-Cc40FiZI.js";
|
|
8
8
|
import { r as nextBackoffMs } from "./backoff-DjVpfHk7.js";
|
|
9
9
|
import { i as isSpinnerChar, n as classifyAgentTitle, r as isBrailleChar, s as buildAgentEnv, t as grok } from "./grok-Di4aQGre.js";
|
|
10
10
|
import { t as buildHookCommand } from "./hook-command-core-qTNK-xMF.js";
|
|
11
|
-
import "./contracts-
|
|
11
|
+
import "./contracts-CucdticH.js";
|
|
12
12
|
import { n as mergeCodexPreToolUse, t as HOOK_TOOLS } from "./hook-tools-Dl7-r2Eb.js";
|
|
13
13
|
import fs from "node:fs";
|
|
14
14
|
import path from "node:path";
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { t as errorCode } from "./text-DoirglWV.js";
|
|
2
2
|
import { c as AgentLimitsReply, n as AGENT_URL_ENV } from "./session-CUc6d7aS.js";
|
|
3
3
|
import { i as formatSessionLimits } from "./session-routes--hrsvv7a.js";
|
|
4
|
-
import { f as isAgentApiVerb, t as AGENT_COMMAND_HELP } from "./agent-api-core-
|
|
4
|
+
import { f as isAgentApiVerb, t as AGENT_COMMAND_HELP } from "./agent-api-core-D49OzKho.js";
|
|
5
5
|
import { i as resolveHookTarget } from "./hook-relay-core-DA_bz2KA.js";
|
|
6
6
|
import { n as decideGuardrailsProxy } from "./guardrails-proxy-core-BI3rdY-m.js";
|
|
7
7
|
import { t as parseJsonOrNull } from "./json-core-dfa_7Fak.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
export { t as askAgentApi, r as runAgentApiCli, i as sessionLimitsHelpLines } from "./agent-api-cli-
|
|
1
|
+
export { t as askAgentApi, r as runAgentApiCli, i as sessionLimitsHelpLines } from "./agent-api-cli-DIGH1v3_.js";
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { R as TASK_TITLE_CONTROL_CHARACTERS, T as RefinedTaskTitle, a as AgentAttentionRequest, d as AgentSendRequest, i as AgentAnswerRequest, l as AgentPullRequestRequest, m as AgentSpawnRequest, o as AgentCloseRequest, p as AgentSettingsRequest, s as AgentEditRequest, t as AGENT_API_VERBS, u as AgentReadRequest } from "./session-CUc6d7aS.js";
|
|
2
|
-
import { D as pullRequestKeyFromReference, c as TASK_TITLE_SOURCE_PRIORITY, o as PersistedTaskTitle } from "./config-
|
|
2
|
+
import { D as pullRequestKeyFromReference, c as TASK_TITLE_SOURCE_PRIORITY, o as PersistedTaskTitle } from "./config-BLeRKmn9.js";
|
|
3
3
|
import { n as NO_OWN_WORKTREE_REASON, t as COMMAND_ROUTES } from "./session-routes--hrsvv7a.js";
|
|
4
4
|
import path from "node:path";
|
|
5
5
|
import crypto from "node:crypto";
|
|
@@ -786,4 +786,4 @@ function agentCommandHelpLines() {
|
|
|
786
786
|
return Object.values(AGENT_COMMAND_HELP).map(({ usage, summary }) => ` ${usage.padEnd(Math.max(USAGE_COLUMN_WIDTH, usage.length + 1))}${summary}`);
|
|
787
787
|
}
|
|
788
788
|
//#endregion
|
|
789
|
-
export { seedTaskTitleSources as A, listRepoWorktreePaths as B, extractPromptTaskTitle as C, parseRefinedTaskTitle as D, parseRefinedSessionName as E, resumePromptFor as F, shouldAdoptReportedResumeId as I, claudeProjectsDir as L, RESUME_ID_RE as M, pickAutoResume as N, resolveRefocusTaskTitle as O, resolveResumeTarget as P, encodeProjectDir as R, extractOscTaskTitle as S, isSubstantivePrompt as T, isAutoNameOf as V, buildTaskTitleRefinementPrompt as _, decideSpawnAllowance as a, decideTaskTitleRefinement as b, describeKeptChildAttention as c, describeUnpushedCloseRefusal as d, isAgentApiVerb as f, buildPersistedTaskTitle as g, projectReviews as h, decideAgentRequest as i, AUTO_CONTINUE_PROMPT as j, resolveTaskTitle as k, describePushLanding as l, projectMyPrs as m, REFUSAL_REASON as n, deriveChildSessionName as o, parseAgentVerb as p, agentCommandHelpLines as r, describeChildEndNote as s, AGENT_COMMAND_HELP as t, describeRoleRefusal as u, chooseRefinedSessionName as v, isSelfWakePrompt as w, extractAiTitle as x, cleanTaskPrompt as y, listRepoConversations as z };
|
|
789
|
+
export { seedTaskTitleSources as A, listRepoWorktreePaths as B, extractPromptTaskTitle as C, parseRefinedTaskTitle as D, parseRefinedSessionName as E, resumePromptFor as F, nextSuggestedName as H, shouldAdoptReportedResumeId as I, claudeProjectsDir as L, RESUME_ID_RE as M, pickAutoResume as N, resolveRefocusTaskTitle as O, resolveResumeTarget as P, encodeProjectDir as R, extractOscTaskTitle as S, isSubstantivePrompt as T, isAutoNameOf as V, buildTaskTitleRefinementPrompt as _, decideSpawnAllowance as a, decideTaskTitleRefinement as b, describeKeptChildAttention as c, describeUnpushedCloseRefusal as d, isAgentApiVerb as f, buildPersistedTaskTitle as g, projectReviews as h, decideAgentRequest as i, AUTO_CONTINUE_PROMPT as j, resolveTaskTitle as k, describePushLanding as l, projectMyPrs as m, REFUSAL_REASON as n, deriveChildSessionName as o, parseAgentVerb as p, agentCommandHelpLines as r, describeChildEndNote as s, AGENT_COMMAND_HELP as t, describeRoleRefusal as u, chooseRefinedSessionName as v, isSelfWakePrompt as w, extractAiTitle as x, cleanTaskPrompt as y, listRepoConversations as z };
|
|
@@ -1530,6 +1530,10 @@ var clientVariants = [
|
|
|
1530
1530
|
environment: z.string().optional(),
|
|
1531
1531
|
requestId
|
|
1532
1532
|
}),
|
|
1533
|
+
loose("quick-session", {
|
|
1534
|
+
id: sessionId,
|
|
1535
|
+
requestId
|
|
1536
|
+
}),
|
|
1533
1537
|
loose("remove-session", {
|
|
1534
1538
|
id: sessionId,
|
|
1535
1539
|
force: z.unknown().optional(),
|
|
@@ -1759,6 +1763,7 @@ Object.freeze([
|
|
|
1759
1763
|
"state-change",
|
|
1760
1764
|
"session-added",
|
|
1761
1765
|
"session-removed",
|
|
1766
|
+
"session-close-confirm",
|
|
1762
1767
|
"session-renamed",
|
|
1763
1768
|
"session-title",
|
|
1764
1769
|
"session-prs",
|
|
@@ -1879,7 +1884,8 @@ var serverVariants = [
|
|
|
1879
1884
|
requestId,
|
|
1880
1885
|
ok: z.boolean(),
|
|
1881
1886
|
error: optionalError,
|
|
1882
|
-
reason: z.enum(["not-git"]).optional()
|
|
1887
|
+
reason: z.enum(["not-git"]).optional(),
|
|
1888
|
+
sessionId: z.string().optional()
|
|
1883
1889
|
}),
|
|
1884
1890
|
loose("remove-session-result", {
|
|
1885
1891
|
requestId,
|
|
@@ -1937,6 +1943,10 @@ var serverVariants = [
|
|
|
1937
1943
|
id: sessionId,
|
|
1938
1944
|
session: z.string()
|
|
1939
1945
|
}),
|
|
1946
|
+
loose("session-close-confirm", {
|
|
1947
|
+
id: sessionId,
|
|
1948
|
+
mergeStatus: z.string()
|
|
1949
|
+
}),
|
|
1940
1950
|
loose("session-renamed", {
|
|
1941
1951
|
id: sessionId,
|
|
1942
1952
|
oldName: z.string(),
|
|
@@ -1,10 +1,10 @@
|
|
|
1
1
|
import { n as errorLabel, r as errorMessage } from "./text-DoirglWV.js";
|
|
2
2
|
import { n as equalsIgnoringCaseOnWindows } from "./paths-Bu4eH1Yd.js";
|
|
3
|
-
import { $ as MEMORY_RESERVE_MB_RANGE, J as FLYING_ANIMALS_DEFAULTS, Q as KEEP_MERGEABLE_TIMEOUT_MINUTES_RANGE, X as FLYING_ANIMALS_GAP_RANGE, Y as FLYING_ANIMALS_DURATION_RANGE, Z as FLYING_ANIMALS_SCALE_RANGE, at as POSTHOG_TRAFFIC_MIN_USERS_RANGE, ct as TASK_TITLE_TIMEOUT_RANGE, d as POST_TURN_CHECK_MODES, dt as USAGE_RETAIN_DAYS_RANGE, et as NON_NEGATIVE_NUMBER_RANGE, f as UPDATE_CHANNELS, ft as USAGE_SCAN_INTERVAL_RANGE, h as normalizeLegacyConfigNumbers, i as Config, it as POSTHOG_TRAFFIC_BASELINE_RANGE, l as configIssueMessage, lt as USAGE_BUDGET_RANGE, mt as WORKFLOWS_MAX_CONCURRENT_SESSIONS_RANGE, n as BUILTIN_AGENT_IDS, nt as POSITIVE_NUMBER_RANGE, ot as POSTHOG_TRAFFIC_MULTIPLIER_RANGE, p as USAGE_COST_MODES, pt as WORKFLOWS_MAX_ACTIONS_PER_POLL_RANGE, rt as POSTHOG_FIX_TIMEOUT_RANGE, s as RUNTIME_CONFIG_SCALAR_KEYS, st as REPLAY_BUFFER_KB_RANGE, t as AGENT_ID_SHAPE_MESSAGE, tt as PORT_RANGE, u as BranchGcFileSettings, ut as USAGE_INTEGER_RANGES } from "./config-
|
|
3
|
+
import { $ as MEMORY_RESERVE_MB_RANGE, J as FLYING_ANIMALS_DEFAULTS, Q as KEEP_MERGEABLE_TIMEOUT_MINUTES_RANGE, X as FLYING_ANIMALS_GAP_RANGE, Y as FLYING_ANIMALS_DURATION_RANGE, Z as FLYING_ANIMALS_SCALE_RANGE, at as POSTHOG_TRAFFIC_MIN_USERS_RANGE, ct as TASK_TITLE_TIMEOUT_RANGE, d as POST_TURN_CHECK_MODES, dt as USAGE_RETAIN_DAYS_RANGE, et as NON_NEGATIVE_NUMBER_RANGE, f as UPDATE_CHANNELS, ft as USAGE_SCAN_INTERVAL_RANGE, h as normalizeLegacyConfigNumbers, i as Config, it as POSTHOG_TRAFFIC_BASELINE_RANGE, l as configIssueMessage, lt as USAGE_BUDGET_RANGE, mt as WORKFLOWS_MAX_CONCURRENT_SESSIONS_RANGE, n as BUILTIN_AGENT_IDS, nt as POSITIVE_NUMBER_RANGE, ot as POSTHOG_TRAFFIC_MULTIPLIER_RANGE, p as USAGE_COST_MODES, pt as WORKFLOWS_MAX_ACTIONS_PER_POLL_RANGE, rt as POSTHOG_FIX_TIMEOUT_RANGE, s as RUNTIME_CONFIG_SCALAR_KEYS, st as REPLAY_BUFFER_KB_RANGE, t as AGENT_ID_SHAPE_MESSAGE, tt as PORT_RANGE, u as BranchGcFileSettings, ut as USAGE_INTEGER_RANGES } from "./config-BLeRKmn9.js";
|
|
4
4
|
import { n as isRecord } from "./coerce-NSst8oRP.js";
|
|
5
5
|
import { n as glimmervoidHomeDir$1, t as decideConfigPath } from "./config-path-core-DFt-TemS.js";
|
|
6
6
|
import { d as writeJsonAtomicSync, f as writeTextAtomic, p as writeTextAtomicSync } from "./json-file-DFCTvPjj.js";
|
|
7
|
-
import { s as FeatureFlagsResponse, u as TELEMETRY_KILL_SWITCH_FLAG } from "./contracts-
|
|
7
|
+
import { s as FeatureFlagsResponse, u as TELEMETRY_KILL_SWITCH_FLAG } from "./contracts-CucdticH.js";
|
|
8
8
|
import fs from "node:fs";
|
|
9
9
|
import path from "node:path";
|
|
10
10
|
import os from "node:os";
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { s as loadConfigFile } from "./config-store-CXLnauAa.js";
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import "./session-CUc6d7aS.js";
|
|
2
|
-
import { C as ONBOARDING_STEPS, E as OPERATOR_SURFACES, T as OPERATOR_ACTIONS_BY_SURFACE, n as BUILTIN_AGENT_IDS, w as ONBOARDING_STEP_STATES, x as DASHBOARD_VIEWS } from "./config-
|
|
2
|
+
import { C as ONBOARDING_STEPS, E as OPERATOR_SURFACES, T as OPERATOR_ACTIONS_BY_SURFACE, n as BUILTIN_AGENT_IDS, w as ONBOARDING_STEP_STATES, x as DASHBOARD_VIEWS } from "./config-BLeRKmn9.js";
|
|
3
3
|
import { z } from "zod";
|
|
4
4
|
//#region shared/contracts/telemetry.ts
|
|
5
5
|
var TELEMETRY_ADAPTERS = Object.freeze([...BUILTIN_AGENT_IDS, "custom"]);
|
|
@@ -4,9 +4,9 @@ import { a as sanitizeWorktreeName, i as safePathSegment, n as equalsIgnoringCas
|
|
|
4
4
|
import { c as resolvePackageBin, i as clientDir, n as bundled, o as packageRoot, r as cliPath, s as relayPath, t as assetRoot } from "./runtime-paths-ghcH9CeW.js";
|
|
5
5
|
import { $ as MyPrMergeWhenReadyRequest, $t as RESTARTABLE_STATES, A as SESSION_NAME_RULE_TEXT, At as TeamReviewStateEntry, Bt as HEX_SHA_RE, C as ConversationQuestion, Ct as ReviewResult, D as SESSION_DOC_BODY_CAP_BYTES, Et as TeamReviewActionRequest, Ft as canApproveAfterComment, G as MyPrCheckContextsResponse, Gt as repoParts, H as MyPr, Ht as GH_SEGMENT, It as decisionAsIfApprovalRequired, J as MyPrLaneEntry, K as MyPrKeepMergeableRequest, L as SshSignRequest, M as SSH_SIGN_BODY_CAP_BYTES, Mt as TeamReviewThreadCommentsResponse, Nt as TeamReviewThreadResult, Ot as TeamReviewCompareFiles, Pt as TeamReviewThreadsRepository, Q as MyPrMergeStateResponse, Qt as MERGEABLE_LIVE_STATES, Rt as hasStandingViewerApproval, St as ReviewFinding, Tt as ReviewVerdict, U as MyPrAutoRebase, Ut as NODE_ID_RE, V as LinkedPr, Vt as shortSha, W as MyPrCheckContext, Wt as REPO_SLUG_RE, X as MyPrMergeRequest, Xt as BADGE_LABELS, Y as MyPrMergeMethod, Zt as KILLABLE_STATES, _ as CONVERSATION_PERMISSION_HOOK_EVENT, _t as PrDetail, at as MyPrsState, bt as ReviewComment, dt as DECIDING_REVIEW_STATES, en as STATES, ft as EarlierReview, g as CONVERSATION_APPROVAL_SUMMARY_MAX_CHARS, gt as PostingPlan, h as COHERENCE_HOOKS_INACTIVE, ht as GithubReviewState, it as MyPrsSnapshot, j as SIGN_URL_ENV, jt as TeamReviewStatus, k as SESSION_NAME_PATTERN, kt as TeamReviewResolveResponse, n as AGENT_URL_ENV, nt as MyPrThreadNode, pt as FindingSeverity, r as ASK_USER_QUESTION_TOOL_NAME, rt as MyPrThreadsResponse, ut as CommitSha, v as CONVERSATION_TOOL_RESULT_HOOK_EVENT, vt as QueuedReview, wt as ReviewThreadId, xt as ReviewDraft, z as TaskTitle } from "./session-CUc6d7aS.js";
|
|
6
6
|
import { n as execFileAsync, o as spawn, r as execFileSync, t as execFile } from "./child-process-safe-D4hyVIXj.js";
|
|
7
|
-
import { A as BenchmarkId, At as parseExitPlanModeHookPayload, B as GithubPrKey, Ct as PLAN_BODY_CAP_BYTES, D as pullRequestKeyFromReference, Dt as PLAN_TOOL_NAME, Et as PLAN_RESULT_HOOK_EVENT, F as CommitComparison, Ft as IssueUpdate, G as WorkflowLabelName, H as GithubPrsFrame, I as MergedPrListing, It as IssuesSearchResponse, K as WorkflowsSettings, L as MinedPrReviewData, Lt as IssuesState, M as BenchmarkRun, Mt as GithubIssuePullRequestsRepository, N as BenchmarkStatus, Nt as GithubIssueResponse, O as BenchmarkActionRequest, Ot as PlanDecision, P as BenchmarkSuite, Pt as IssueKey, Q as KEEP_MERGEABLE_TIMEOUT_MINUTES_RANGE, R as PrCheckoutCaseInput, Rt as IssuesStatus, St as changeMapFactId, Tt as PLAN_HOOK_OUTPUT_MAX_CHARS, U as comparablePrKey, V as GithubPrLightSearchNode, W as WorkflowCommentBody, _t as MAX_RAW_LINE_CHARS, a as ConfigUpdate, b as ClientMessage, bt as CoherenceJournalOutput, g as CHANGES_POLL_INTERVAL_MS, gt as SessionSetup, ht as UpdateJournal, j as BenchmarkJudgement, jt as planTitle, k as BenchmarkCase, kt as PlanRevision, l as configIssueMessage, m as USAGE_VENDOR_KEYS, p as USAGE_COST_MODES, q as WorkflowsState, r as BrowserConfig, s as RUNTIME_CONFIG_SCALAR_KEYS, ut as USAGE_INTEGER_RANGES, v as CLIENT_LOG_TEXT_MAX_CHARS, vt as TraceCheckpoint, wt as PLAN_HOOK_EVENT, xt as ChangeMap, y as CONTROL_FRAME_MAX_BYTES, yt as TraceRecord, z as GithubPrDetailNode, zt as issuePullRequestStateFromGithub } from "./config-
|
|
7
|
+
import { A as BenchmarkId, At as parseExitPlanModeHookPayload, B as GithubPrKey, Ct as PLAN_BODY_CAP_BYTES, D as pullRequestKeyFromReference, Dt as PLAN_TOOL_NAME, Et as PLAN_RESULT_HOOK_EVENT, F as CommitComparison, Ft as IssueUpdate, G as WorkflowLabelName, H as GithubPrsFrame, I as MergedPrListing, It as IssuesSearchResponse, K as WorkflowsSettings, L as MinedPrReviewData, Lt as IssuesState, M as BenchmarkRun, Mt as GithubIssuePullRequestsRepository, N as BenchmarkStatus, Nt as GithubIssueResponse, O as BenchmarkActionRequest, Ot as PlanDecision, P as BenchmarkSuite, Pt as IssueKey, Q as KEEP_MERGEABLE_TIMEOUT_MINUTES_RANGE, R as PrCheckoutCaseInput, Rt as IssuesStatus, St as changeMapFactId, Tt as PLAN_HOOK_OUTPUT_MAX_CHARS, U as comparablePrKey, V as GithubPrLightSearchNode, W as WorkflowCommentBody, _t as MAX_RAW_LINE_CHARS, a as ConfigUpdate, b as ClientMessage, bt as CoherenceJournalOutput, g as CHANGES_POLL_INTERVAL_MS, gt as SessionSetup, ht as UpdateJournal, j as BenchmarkJudgement, jt as planTitle, k as BenchmarkCase, kt as PlanRevision, l as configIssueMessage, m as USAGE_VENDOR_KEYS, p as USAGE_COST_MODES, q as WorkflowsState, r as BrowserConfig, s as RUNTIME_CONFIG_SCALAR_KEYS, ut as USAGE_INTEGER_RANGES, v as CLIENT_LOG_TEXT_MAX_CHARS, vt as TraceCheckpoint, wt as PLAN_HOOK_EVENT, xt as ChangeMap, y as CONTROL_FRAME_MAX_BYTES, yt as TraceRecord, z as GithubPrDetailNode, zt as issuePullRequestStateFromGithub } from "./config-BLeRKmn9.js";
|
|
8
8
|
import { a as permitsHelpCommand, r as describeSessionLimits } from "./session-routes--hrsvv7a.js";
|
|
9
|
-
import { A as seedTaskTitleSources, B as listRepoWorktreePaths, C as extractPromptTaskTitle, D as parseRefinedTaskTitle, E as parseRefinedSessionName, F as resumePromptFor, I as shouldAdoptReportedResumeId, L as claudeProjectsDir, M as RESUME_ID_RE, N as pickAutoResume, O as resolveRefocusTaskTitle, P as resolveResumeTarget, R as encodeProjectDir, S as extractOscTaskTitle, T as isSubstantivePrompt, V as isAutoNameOf, _ as buildTaskTitleRefinementPrompt, a as decideSpawnAllowance, b as decideTaskTitleRefinement, c as describeKeptChildAttention, d as describeUnpushedCloseRefusal, g as buildPersistedTaskTitle, h as projectReviews, i as decideAgentRequest, j as AUTO_CONTINUE_PROMPT, k as resolveTaskTitle, l as describePushLanding, m as projectMyPrs, n as REFUSAL_REASON, o as deriveChildSessionName, p as parseAgentVerb, s as describeChildEndNote, u as describeRoleRefusal, v as chooseRefinedSessionName, w as isSelfWakePrompt, x as extractAiTitle, y as cleanTaskPrompt, z as listRepoConversations } from "./agent-api-core-
|
|
9
|
+
import { A as seedTaskTitleSources, B as listRepoWorktreePaths, C as extractPromptTaskTitle, D as parseRefinedTaskTitle, E as parseRefinedSessionName, F as resumePromptFor, H as nextSuggestedName, I as shouldAdoptReportedResumeId, L as claudeProjectsDir, M as RESUME_ID_RE, N as pickAutoResume, O as resolveRefocusTaskTitle, P as resolveResumeTarget, R as encodeProjectDir, S as extractOscTaskTitle, T as isSubstantivePrompt, V as isAutoNameOf, _ as buildTaskTitleRefinementPrompt, a as decideSpawnAllowance, b as decideTaskTitleRefinement, c as describeKeptChildAttention, d as describeUnpushedCloseRefusal, g as buildPersistedTaskTitle, h as projectReviews, i as decideAgentRequest, j as AUTO_CONTINUE_PROMPT, k as resolveTaskTitle, l as describePushLanding, m as projectMyPrs, n as REFUSAL_REASON, o as deriveChildSessionName, p as parseAgentVerb, s as describeChildEndNote, u as describeRoleRefusal, v as chooseRefinedSessionName, w as isSelfWakePrompt, x as extractAiTitle, y as cleanTaskPrompt, z as listRepoConversations } from "./agent-api-core-D49OzKho.js";
|
|
10
10
|
import { a as positiveIntOr, c as textOr, i as numberOr, n as isRecord, o as positiveNumberOr, r as nonNegativeIntOr, s as rawTextOr, t as coercedNumberOr } from "./coerce-NSst8oRP.js";
|
|
11
11
|
import { n as glimmervoidHomeDir, t as decideConfigPath } from "./config-path-core-DFt-TemS.js";
|
|
12
12
|
import { i as parseCommandLine, n as warnWhenGitIsTooOld } from "./git-version-C3lznLS_.js";
|
|
@@ -21,13 +21,13 @@ import { n as DEFAULT_MAX_MS, r as nextBackoffMs, t as DEFAULT_BASE_MS } from ".
|
|
|
21
21
|
import { n as unrefTimer, t as DEFAULT_TIMER_FNS } from "./timer-deps-u2DAQLok.js";
|
|
22
22
|
import { n as shellQuote } from "./hook-command-core-qTNK-xMF.js";
|
|
23
23
|
import { C as parseCgroupBytes, S as memoryReserveBytes, T as parseMemAvailableBytes, _ as createSpawnGate, a as jsonStateLoadError, b as cgroupLimitBytes, c as loadedJsonValue, d as writeJsonAtomicSync, f as writeTextAtomic, g as createSerialQueue, h as createMemoryAdmission, i as createJsonStateWriter, m as createKeyedSerialQueue, n as appendJsonLines, o as loadJsonStateFile, p as writeTextAtomicSync, r as createJsonStateStore, s as loadJsonStateFileSync, t as appendJsonLine, u as writeJsonAtomic, v as isQueueAdmissionTimeout, w as parseCgroupV2Path, x as headroomFromReadings, y as cgroupAncestorPaths } from "./json-file-DFCTvPjj.js";
|
|
24
|
-
import { B as buildExceptionProperties, F as TELEMETRY_BATCH_URL, G as decideIsDevInstall, H as classifySessionExit, I as TELEMETRY_FLAGS_URL, J as exceptionFingerprint, K as decideRemoteTelemetryState, L as adapterBucket, P as FIRST_RUN_NOTICE, R as buildAiGenerationEvents, U as claudeAccountUuidOf, V as buildPersonProperties, W as codexUserIdOf, X as parsePosthogReleaseId, Y as nodeMajorVersion, Z as resolveProjectToken, a as generateProjectId, at as planWorktreeGc, b as validateSettingsBlock, ct as worktreeIntegrationTips, d as assetForPlatform, dt as isSameDirectoryPath, et as stableConfigKey, f as decideRtkInstall, g as verifyDigest, h as isRtkBinaryName, i as ensureProjectIds, it as planBranchGc, lt as canonicalizePath, m as installTargetPath, n as DEFAULT_CONFIG, nt as DEFAULT_BRANCH_GC_PREFIXES, o as glimmervoidHomeDir$1, ot as sessionIdFromBranch, p as findEscapingArchiveMember, q as decideTelemetryConsent, r as createConfigStore, rt as matchedPrefix, st as usablePrefixes, t as ABORT_CONFIG_SAVE, ut as comparableDirectoryPath, v as mergeSettingsBlock, y as settingsBlockSpecFor, z as buildBrowserExceptionProperties } from "./config-store-
|
|
25
|
-
import { a as parseDataClientMessage, c as PendingCrashReport, d as TelemetryState, i as parseDataAttach, l as TELEMETRY_EVENT_SCHEMAS, n as HookEnvelope, o as DashboardTelemetryReport, r as DEEP_HISTORY_SCROLLBACK_LINES, t as HTTP_URL_RE } from "./contracts-
|
|
26
|
-
import { A as dedupeCodexFiles, B as shouldPersistWarehouse, C as shortSha$1, D as codexSessionIdFromPath, E as codexRootCandidates, F as passOutcome, H as claudeCode, I as projectDirCandidates, L as resolveProjectsDirs, M as grokHomes, N as grokRootCandidates, O as continuationDelayMs, P as isUsageFile, R as scopedClaudeRoots, S as parseResolvedSha, T as codexHomes, V as splitLines$1, _ as isCheckFresh, a as describeAgentResolvability, b as parseRegistryDeprecation, c as isKnownAgentId, d as resolveAdapter, f as setCustomAgents, g as decideUpdateStatus, h as decideInstallFlavor, i as customAgentFingerprint, j as expandTilde, k as decideFileRead, l as listAgentIds, m as readHostCodexVersion, n as cachedAgentResolvability, o as getAdapter, p as codex, r as commandFor, s as hookProfileOf, t as DEFAULT_AGENT_ID, u as resetCommandCache, v as normalizeSha, w as codexFallbackRoots, x as parseRegistryLatest, y as normalizeUpdateChannel, z as shouldEvaluateDespiteIoFailures } from "./adapters-
|
|
24
|
+
import { B as buildExceptionProperties, F as TELEMETRY_BATCH_URL, G as decideIsDevInstall, H as classifySessionExit, I as TELEMETRY_FLAGS_URL, J as exceptionFingerprint, K as decideRemoteTelemetryState, L as adapterBucket, P as FIRST_RUN_NOTICE, R as buildAiGenerationEvents, U as claudeAccountUuidOf, V as buildPersonProperties, W as codexUserIdOf, X as parsePosthogReleaseId, Y as nodeMajorVersion, Z as resolveProjectToken, a as generateProjectId, at as planWorktreeGc, b as validateSettingsBlock, ct as worktreeIntegrationTips, d as assetForPlatform, dt as isSameDirectoryPath, et as stableConfigKey, f as decideRtkInstall, g as verifyDigest, h as isRtkBinaryName, i as ensureProjectIds, it as planBranchGc, lt as canonicalizePath, m as installTargetPath, n as DEFAULT_CONFIG, nt as DEFAULT_BRANCH_GC_PREFIXES, o as glimmervoidHomeDir$1, ot as sessionIdFromBranch, p as findEscapingArchiveMember, q as decideTelemetryConsent, r as createConfigStore, rt as matchedPrefix, st as usablePrefixes, t as ABORT_CONFIG_SAVE, ut as comparableDirectoryPath, v as mergeSettingsBlock, y as settingsBlockSpecFor, z as buildBrowserExceptionProperties } from "./config-store-CXLnauAa.js";
|
|
25
|
+
import { a as parseDataClientMessage, c as PendingCrashReport, d as TelemetryState, i as parseDataAttach, l as TELEMETRY_EVENT_SCHEMAS, n as HookEnvelope, o as DashboardTelemetryReport, r as DEEP_HISTORY_SCROLLBACK_LINES, t as HTTP_URL_RE } from "./contracts-CucdticH.js";
|
|
26
|
+
import { A as dedupeCodexFiles, B as shouldPersistWarehouse, C as shortSha$1, D as codexSessionIdFromPath, E as codexRootCandidates, F as passOutcome, H as claudeCode, I as projectDirCandidates, L as resolveProjectsDirs, M as grokHomes, N as grokRootCandidates, O as continuationDelayMs, P as isUsageFile, R as scopedClaudeRoots, S as parseResolvedSha, T as codexHomes, V as splitLines$1, _ as isCheckFresh, a as describeAgentResolvability, b as parseRegistryDeprecation, c as isKnownAgentId, d as resolveAdapter, f as setCustomAgents, g as decideUpdateStatus, h as decideInstallFlavor, i as customAgentFingerprint, j as expandTilde, k as decideFileRead, l as listAgentIds, m as readHostCodexVersion, n as cachedAgentResolvability, o as getAdapter, p as codex, r as commandFor, s as hookProfileOf, t as DEFAULT_AGENT_ID, u as resetCommandCache, v as normalizeSha, w as codexFallbackRoots, x as parseRegistryLatest, y as normalizeUpdateChannel, z as shouldEvaluateDespiteIoFailures } from "./adapters-D99c4zCx.js";
|
|
27
27
|
import { t as HOOK_TOOLS } from "./hook-tools-Dl7-r2Eb.js";
|
|
28
28
|
import { a as formatSshPublicKey, c as orderAgentSockets, i as commitSigningShimText, l as parseSshPublicKey, n as NO_AGENT_HOLDS_KEY, o as isForwardedAgentDirName, r as agentListsKey, s as isSignableGitObject, t as COMMIT_SIGNING_SHIM_NAME } from "./ssh-signing-core-CRhVVWNW.js";
|
|
29
|
-
import { a as configSiblingPath, c as defaultPairingsPath, d as decideDeviceAuth, f as deviceNameFromUserAgent, l as defaultSeenPath, n as normalizeRemoteConfig, o as createPairingsStore, p as hashSecret, r as validateRemoteConfig, s as createSeenStore, t as decideBindHost, u as DEFAULT_DEVICE_MAX_AGE_MS } from "./remote-config-
|
|
30
|
-
import { n as configFileViewOf, u as readSettingsForAgent } from "./settings-readout-core-
|
|
29
|
+
import { a as configSiblingPath, c as defaultPairingsPath, d as decideDeviceAuth, f as deviceNameFromUserAgent, l as defaultSeenPath, n as normalizeRemoteConfig, o as createPairingsStore, p as hashSecret, r as validateRemoteConfig, s as createSeenStore, t as decideBindHost, u as DEFAULT_DEVICE_MAX_AGE_MS } from "./remote-config-B0zBDBak.js";
|
|
30
|
+
import { n as configFileViewOf, u as readSettingsForAgent } from "./settings-readout-core-BOv6tqdK.js";
|
|
31
31
|
import { _ as escapeMarkup, g as createLaneLog, n as createVisionsSetup } from "./visions-setup-VMMyqOpl.js";
|
|
32
32
|
import { t as getRtkPath } from "./rtk-resolver-BDHi6RMv.js";
|
|
33
33
|
import { createRequire } from "node:module";
|
|
@@ -4737,7 +4737,13 @@ function createAgentApiWiring({ config, agentSessions, listAllSessions, listBoar
|
|
|
4737
4737
|
if (roleRefusal) return roleRefusal;
|
|
4738
4738
|
return dispatch(session, parsed.verb, parsed.request);
|
|
4739
4739
|
}
|
|
4740
|
-
|
|
4740
|
+
function markChildWorktreeDiscard(childId) {
|
|
4741
|
+
childIdsToDiscard.add(childId);
|
|
4742
|
+
}
|
|
4743
|
+
return {
|
|
4744
|
+
handle,
|
|
4745
|
+
markChildWorktreeDiscard
|
|
4746
|
+
};
|
|
4741
4747
|
}
|
|
4742
4748
|
//#endregion
|
|
4743
4749
|
//#region server/remote-setup-wiring.ts
|
|
@@ -5984,6 +5990,15 @@ function decideAcknowledge(isAcknowledgeDeferred, from, event, isIdleCompactionA
|
|
|
5984
5990
|
};
|
|
5985
5991
|
}
|
|
5986
5992
|
//#endregion
|
|
5993
|
+
//#region session/core/exit-close.ts
|
|
5994
|
+
var UNMERGED_MERGE_STATUSES = /* @__PURE__ */ new Set(["pending-review", "parked"]);
|
|
5995
|
+
function decideExitClose(facts) {
|
|
5996
|
+
if (!facts.exitedOnItsOwn || !facts.isConfiguredSession) return "keep";
|
|
5997
|
+
if (facts.isWorkspace || facts.hasRemoteEnvironment) return "confirm";
|
|
5998
|
+
if (UNMERGED_MERGE_STATUSES.has(facts.mergeStatus)) return "confirm";
|
|
5999
|
+
return "remove";
|
|
6000
|
+
}
|
|
6001
|
+
//#endregion
|
|
5987
6002
|
//#region session/core/claude-approval-core.ts
|
|
5988
6003
|
var MAIN_AGENT_KEY$1 = "";
|
|
5989
6004
|
var SESSION_DESTINATION = "session";
|
|
@@ -7064,7 +7079,7 @@ function createSessionEventWiring(dependencies) {
|
|
|
7064
7079
|
dependencies.logger.error(`[${session.name}] error: ${errorMessage(error)}`);
|
|
7065
7080
|
dependencies.telemetry?.captureException(error, { handled: true });
|
|
7066
7081
|
});
|
|
7067
|
-
session.on("exit", ({ exitCode, signal, reason }) => {
|
|
7082
|
+
session.on("exit", ({ exitCode, signal, reason, exitedOnItsOwn }) => {
|
|
7068
7083
|
if (postTurnDebounce) {
|
|
7069
7084
|
clearTimeout(postTurnDebounce);
|
|
7070
7085
|
postTurnDebounce = null;
|
|
@@ -7077,7 +7092,28 @@ function createSessionEventWiring(dependencies) {
|
|
|
7077
7092
|
signal,
|
|
7078
7093
|
reason
|
|
7079
7094
|
}));
|
|
7095
|
+
closeSessionAfterExit(exitedOnItsOwn === true);
|
|
7080
7096
|
});
|
|
7097
|
+
function closeSessionAfterExit(exitedOnItsOwn) {
|
|
7098
|
+
const project = dependencies.config.projects.find((candidate) => candidate.id === session.id);
|
|
7099
|
+
const exitClose = decideExitClose({
|
|
7100
|
+
exitedOnItsOwn,
|
|
7101
|
+
isConfiguredSession: project !== void 0,
|
|
7102
|
+
mergeStatus: session.mergeStatus,
|
|
7103
|
+
isWorkspace: session.isWorkspace,
|
|
7104
|
+
hasRemoteEnvironment: Boolean(project?.environment)
|
|
7105
|
+
});
|
|
7106
|
+
if (exitClose === "remove") {
|
|
7107
|
+
dependencies.logger.log(`[${session.name}] agent quit on its own, removing the session`);
|
|
7108
|
+
dependencies.removeExitedSession?.(session.id);
|
|
7109
|
+
return;
|
|
7110
|
+
}
|
|
7111
|
+
if (exitClose === "confirm") dependencies.broadcastControl({
|
|
7112
|
+
type: "session-close-confirm",
|
|
7113
|
+
id: session.id,
|
|
7114
|
+
mergeStatus: session.mergeStatus
|
|
7115
|
+
});
|
|
7116
|
+
}
|
|
7081
7117
|
session.on("teardown", ({ cause }) => {
|
|
7082
7118
|
clearCompactionConfirm();
|
|
7083
7119
|
isAcknowledgeDeferredForCompaction = false;
|
|
@@ -21206,7 +21242,7 @@ var Session = class extends EventEmitter {
|
|
|
21206
21242
|
const remoteExitReason = await pendingRemoteExitReason;
|
|
21207
21243
|
if (remoteExitReason && this._isExitHeadedForFailure(event)) this.failureReason = remoteExitReason;
|
|
21208
21244
|
}
|
|
21209
|
-
this.transition(event, detail);
|
|
21245
|
+
const isUnsignalledCleanExit = this.transition(event, detail) && event === "process_exit_ok" && !signal;
|
|
21210
21246
|
if (this._recorder) {
|
|
21211
21247
|
this._recorder.writeFooter("pty_exit", exitCode);
|
|
21212
21248
|
this._recorder.finishRecordingFile();
|
|
@@ -21214,10 +21250,12 @@ var Session = class extends EventEmitter {
|
|
|
21214
21250
|
try {
|
|
21215
21251
|
await this._settleWorktreeOnExit();
|
|
21216
21252
|
} catch {}
|
|
21253
|
+
const exitedOnItsOwn = isUnsignalledCleanExit && this.state === STATES.DONE && !this._teardownPending() && !this._destroyed;
|
|
21217
21254
|
this.emit("exit", {
|
|
21218
21255
|
exitCode,
|
|
21219
21256
|
signal,
|
|
21220
|
-
reason
|
|
21257
|
+
reason,
|
|
21258
|
+
exitedOnItsOwn
|
|
21221
21259
|
});
|
|
21222
21260
|
}
|
|
21223
21261
|
getScreenSnapshot() {
|
|
@@ -49887,6 +49925,55 @@ function deriveIssueSessionName(issue) {
|
|
|
49887
49925
|
return sanitizeSessionName(`issue-${issueNumber}-${String(issue.title ?? "").toLowerCase().replace(/[^a-z0-9]+/g, "-").replace(/^-+|-+$/g, "") || "untitled"}`) || `issue-${issueNumber}`;
|
|
49888
49926
|
}
|
|
49889
49927
|
//#endregion
|
|
49928
|
+
//#region server/session/core/quick-session-core.ts
|
|
49929
|
+
var COPIED_RUN_SETTINGS = [
|
|
49930
|
+
"baseBranch",
|
|
49931
|
+
"codexBypassHookTrust",
|
|
49932
|
+
"conversationView"
|
|
49933
|
+
];
|
|
49934
|
+
var AUTO_NAME_SUFFIX = / \(\d+\)$/;
|
|
49935
|
+
function autoNameBase(name) {
|
|
49936
|
+
return name.replace(AUTO_NAME_SUFFIX, "");
|
|
49937
|
+
}
|
|
49938
|
+
function runSettingsOf(project) {
|
|
49939
|
+
const runSettings = {};
|
|
49940
|
+
for (const field of COPIED_RUN_SETTINGS) if (project[field] !== void 0) Object.assign(runSettings, { [field]: project[field] });
|
|
49941
|
+
return runSettings;
|
|
49942
|
+
}
|
|
49943
|
+
function requestFromLiveSession(live, name) {
|
|
49944
|
+
const repos = live.workspaceRepos && live.workspaceRepos.length >= 2 ? [...live.workspaceRepos] : void 0;
|
|
49945
|
+
return {
|
|
49946
|
+
name,
|
|
49947
|
+
path: repos?.[0] ?? live.path,
|
|
49948
|
+
repos,
|
|
49949
|
+
agent: live.agentId,
|
|
49950
|
+
dangerouslySkipPermissions: live.dangerouslySkipPermissions,
|
|
49951
|
+
unguarded: live.isMarkedUnguarded && !live.isGuardrailsReleased
|
|
49952
|
+
};
|
|
49953
|
+
}
|
|
49954
|
+
function requestFromProject(project, live, name) {
|
|
49955
|
+
return {
|
|
49956
|
+
name,
|
|
49957
|
+
path: project.repos?.[0] ?? project.path,
|
|
49958
|
+
repos: project.repos ? [...project.repos] : void 0,
|
|
49959
|
+
agent: project.agent,
|
|
49960
|
+
dangerouslySkipPermissions: project.dangerouslySkipPermissions,
|
|
49961
|
+
unguarded: project.unguarded === true && !live.isGuardrailsReleased,
|
|
49962
|
+
environment: project.environment?.name
|
|
49963
|
+
};
|
|
49964
|
+
}
|
|
49965
|
+
function planQuickSession({ live, project, sessionNames }) {
|
|
49966
|
+
const name = nextSuggestedName(autoNameBase(live.name), sessionNames);
|
|
49967
|
+
if (!project) return {
|
|
49968
|
+
request: requestFromLiveSession(live, name),
|
|
49969
|
+
runSettings: {}
|
|
49970
|
+
};
|
|
49971
|
+
return {
|
|
49972
|
+
request: requestFromProject(project, live, name),
|
|
49973
|
+
runSettings: runSettingsOf(project)
|
|
49974
|
+
};
|
|
49975
|
+
}
|
|
49976
|
+
//#endregion
|
|
49890
49977
|
//#region server/settings-payload.ts
|
|
49891
49978
|
function summarizeCustomAgents(declarations) {
|
|
49892
49979
|
return declarations.map((declaration) => ({
|
|
@@ -51466,6 +51553,12 @@ function requestValidationErrorReply(msg, message) {
|
|
|
51466
51553
|
ok: false,
|
|
51467
51554
|
error: message
|
|
51468
51555
|
}),
|
|
51556
|
+
"quick-session": () => ({
|
|
51557
|
+
type: "add-session-result",
|
|
51558
|
+
requestId,
|
|
51559
|
+
ok: false,
|
|
51560
|
+
error: message
|
|
51561
|
+
}),
|
|
51469
51562
|
"remove-session": () => ({
|
|
51470
51563
|
type: "remove-session-result",
|
|
51471
51564
|
requestId,
|
|
@@ -51538,7 +51631,7 @@ function parseSinceParam(url) {
|
|
|
51538
51631
|
return Number.isFinite(n) ? n : null;
|
|
51539
51632
|
}
|
|
51540
51633
|
function registerControlHandlers(controlWss, deps) {
|
|
51541
|
-
const { sessions, agentSessions = /* @__PURE__ */ new Map(), config, configStore, broadcastControl, generateProjectId, applyConfigReload, applySettingsReload, requestShutdown, requestRestart, handleClientFocus, buildHealthSnapshot, getUpdateStatus, getUpdateJournal = null, getPostTurnLeftoversNotice = null, recheckPostTurnLeftovers = null, checkNow = null, applyUpdate = null, noteRestartRequested = null, getRadarStatus, posthogReportsDir = null, posthogSetIssueStatus = null, radarArchiveInvestigation = null, getTeamReviewStatus = null, getMyPrsStatus = null, getIssuesStatus = null, githubStore = null, issues = null, teamReview = null, myPrs = null, getBenchmarkStatus = null, benchmarks = null, requestIssue = async () => ({
|
|
51634
|
+
const { sessions, agentSessions = /* @__PURE__ */ new Map(), markChildWorktreeDiscard = null, config, configStore, broadcastControl, generateProjectId, applyConfigReload, applySettingsReload, requestShutdown, requestRestart, handleClientFocus, buildHealthSnapshot, getUpdateStatus, getUpdateJournal = null, getPostTurnLeftoversNotice = null, recheckPostTurnLeftovers = null, checkNow = null, applyUpdate = null, noteRestartRequested = null, getRadarStatus, posthogReportsDir = null, posthogSetIssueStatus = null, radarArchiveInvestigation = null, getTeamReviewStatus = null, getMyPrsStatus = null, getIssuesStatus = null, githubStore = null, issues = null, teamReview = null, myPrs = null, getBenchmarkStatus = null, benchmarks = null, requestIssue = async () => ({
|
|
51542
51635
|
isRateLimited: false,
|
|
51543
51636
|
value: {
|
|
51544
51637
|
ok: false,
|
|
@@ -51604,6 +51697,27 @@ function registerControlHandlers(controlWss, deps) {
|
|
|
51604
51697
|
}
|
|
51605
51698
|
return createAddedSessionOnceWorktreeCapable(msg, ws);
|
|
51606
51699
|
}
|
|
51700
|
+
function handleQuickSession(msg, ws) {
|
|
51701
|
+
const source = findSession(msg);
|
|
51702
|
+
if (!source) {
|
|
51703
|
+
replyTo(ws, msg, "add-session-result", {
|
|
51704
|
+
ok: false,
|
|
51705
|
+
error: "The session to copy no longer exists."
|
|
51706
|
+
});
|
|
51707
|
+
return;
|
|
51708
|
+
}
|
|
51709
|
+
const plan = planQuickSession({
|
|
51710
|
+
live: source,
|
|
51711
|
+
project: config.projects.find((project) => project.id === source.id) ?? null,
|
|
51712
|
+
sessionNames: [...sessions.values(), ...agentSessions.values()].map((session) => session.name)
|
|
51713
|
+
});
|
|
51714
|
+
return handleAddSession({
|
|
51715
|
+
type: "add-session",
|
|
51716
|
+
requestId: msg.requestId,
|
|
51717
|
+
...plan.request,
|
|
51718
|
+
runSettings: plan.runSettings
|
|
51719
|
+
}, ws);
|
|
51720
|
+
}
|
|
51607
51721
|
function needsOwnWorktreeCheck(msg) {
|
|
51608
51722
|
if (msg.repos || msg.runInPlace === true) return false;
|
|
51609
51723
|
const projectPath = (msg.path || "").trim();
|
|
@@ -51635,7 +51749,8 @@ function registerControlHandlers(controlWss, deps) {
|
|
|
51635
51749
|
dangerouslySkipPermissions: skipPerms,
|
|
51636
51750
|
unguarded: msg.unguarded === true,
|
|
51637
51751
|
requireExistingPath: !repos,
|
|
51638
|
-
environment: remote?.environment
|
|
51752
|
+
environment: remote?.environment,
|
|
51753
|
+
runSettings: msg.runSettings
|
|
51639
51754
|
});
|
|
51640
51755
|
if (!created.ok) {
|
|
51641
51756
|
refuseAddSession(msg, ws, { error: created.error });
|
|
@@ -51643,7 +51758,8 @@ function registerControlHandlers(controlWss, deps) {
|
|
|
51643
51758
|
}
|
|
51644
51759
|
if (msg.requestId) replyTo(ws, msg, "add-session-result", {
|
|
51645
51760
|
ok: true,
|
|
51646
|
-
error: null
|
|
51761
|
+
error: null,
|
|
51762
|
+
sessionId: created.project.id
|
|
51647
51763
|
});
|
|
51648
51764
|
console.log(`[control] Added session via UI: ${name}${skipPerms ? " (skip permissions)" : " (permission prompts)"}${remote ? ` (Coder environment ${remote.environment.name})` : ""}`);
|
|
51649
51765
|
return created.project;
|
|
@@ -51802,37 +51918,64 @@ function registerControlHandlers(controlWss, deps) {
|
|
|
51802
51918
|
if (sess.state !== STATES.DORMANT) return;
|
|
51803
51919
|
sess.start();
|
|
51804
51920
|
}
|
|
51921
|
+
const lastRemovalRefusalBySessionId = /* @__PURE__ */ new Map();
|
|
51922
|
+
function refuseRemoval(error, keptPaths) {
|
|
51923
|
+
return keptPaths ? {
|
|
51924
|
+
ok: false,
|
|
51925
|
+
error,
|
|
51926
|
+
canDiscardWork: true,
|
|
51927
|
+
keptPaths
|
|
51928
|
+
} : {
|
|
51929
|
+
ok: false,
|
|
51930
|
+
error,
|
|
51931
|
+
canDiscardWork: true
|
|
51932
|
+
};
|
|
51933
|
+
}
|
|
51934
|
+
function keptWorkRefusal(sess, firstKept, otherKeptCount, keptPaths) {
|
|
51935
|
+
const more = otherKeptCount > 0 ? ` and ${otherKeptCount} more` : "";
|
|
51936
|
+
return refuseRemoval(`"${sess.name}" has work not saved in ${firstKept.path} (${firstKept.reason})${more}. Removing it deletes that work.`, keptPaths);
|
|
51937
|
+
}
|
|
51938
|
+
async function findLocalRemovalRefusal(sess, confirmedKeptPaths) {
|
|
51939
|
+
if (!sess.isWorkspace && await sess.hasUnmergedWork()) return refuseRemoval(`"${sess.name}" has uncommitted changes or commits not merged into its base branch. Removing it deletes them.`);
|
|
51940
|
+
const keptPaths = sess.isWorkspace ? await sess.findWorkspaceKeptWork() : [];
|
|
51941
|
+
const [firstUnconfirmedKept, ...otherUnconfirmedKept] = keptPaths.filter((kept) => !confirmedKeptPaths.has(kept.path));
|
|
51942
|
+
if (firstUnconfirmedKept) return keptWorkRefusal(sess, firstUnconfirmedKept, otherUnconfirmedKept.length, keptPaths);
|
|
51943
|
+
if (sess.state === STATES.RUNNING) return refuseRemoval(`"${sess.name}" is working. Removing it stops the agent mid-task.`);
|
|
51944
|
+
return null;
|
|
51945
|
+
}
|
|
51805
51946
|
async function removeSession(msg) {
|
|
51806
51947
|
const sess = findSession(msg);
|
|
51807
51948
|
if (!sess) return {
|
|
51808
51949
|
ok: false,
|
|
51809
51950
|
error: "Session not found"
|
|
51810
51951
|
};
|
|
51952
|
+
const isDiscardingWork = msg.discardWork === true;
|
|
51953
|
+
const isDiscardingWorkspaceWork = sess.isWorkspace && isDiscardingWork;
|
|
51954
|
+
if (isDiscardingWorkspaceWork) sess.killSession();
|
|
51955
|
+
const refusal = await findLocalRemovalRefusal(sess, new Set(isDiscardingWorkspaceWork ? msg.confirmedKeptPaths ?? [] : []));
|
|
51956
|
+
const isRefusalConfirmed = isDiscardingWork && refusal?.error === lastRemovalRefusalBySessionId.get(sess.id);
|
|
51957
|
+
if (refusal && !isRefusalConfirmed) {
|
|
51958
|
+
lastRemovalRefusalBySessionId.set(sess.id, refusal.error);
|
|
51959
|
+
return refusal;
|
|
51960
|
+
}
|
|
51811
51961
|
if (agentSessions.get(sess.id) === sess) {
|
|
51962
|
+
if (isDiscardingWork) markChildWorktreeDiscard?.(sess.id);
|
|
51963
|
+
lastRemovalRefusalBySessionId.delete(sess.id);
|
|
51812
51964
|
sess.destroy();
|
|
51813
51965
|
console.log(`[control] Removed spawned session via UI: ${sess.name}`);
|
|
51814
51966
|
return { ok: true };
|
|
51815
51967
|
}
|
|
51816
|
-
const isDiscardingWorkspaceWork = sess.isWorkspace && msg.discardWork === true;
|
|
51817
|
-
if (isDiscardingWorkspaceWork) sess.killSession();
|
|
51818
|
-
const keptPaths = sess.isWorkspace ? await sess.findWorkspaceKeptWork() : [];
|
|
51819
|
-
const confirmedKeptPaths = new Set(isDiscardingWorkspaceWork ? msg.confirmedKeptPaths ?? [] : []);
|
|
51820
|
-
if (keptPaths.some((kept) => !confirmedKeptPaths.has(kept.path))) return {
|
|
51821
|
-
ok: false,
|
|
51822
|
-
error: "Workspace members hold work that is not saved",
|
|
51823
|
-
canDiscardWork: true,
|
|
51824
|
-
keptPaths
|
|
51825
|
-
};
|
|
51826
51968
|
if (config.projects.some((project) => project.id === sess.id && project.environment) && coderEnv) {
|
|
51827
51969
|
sess.killSession();
|
|
51828
51970
|
const settlement = await coderEnv.settleRemoval({
|
|
51829
51971
|
projectId: sess.id,
|
|
51830
|
-
discardRemoteWork:
|
|
51972
|
+
discardRemoteWork: isDiscardingWork
|
|
51831
51973
|
});
|
|
51974
|
+
if (!settlement.ok && settlement.canDiscardRemoteWork) return refuseRemoval(`${settlement.reason}. Removing "${sess.name}" deletes its Coder workspace and that work with it.`);
|
|
51832
51975
|
if (!settlement.ok) return {
|
|
51833
51976
|
ok: false,
|
|
51834
51977
|
error: settlement.reason,
|
|
51835
|
-
canDiscardWork:
|
|
51978
|
+
canDiscardWork: false
|
|
51836
51979
|
};
|
|
51837
51980
|
}
|
|
51838
51981
|
const freshConfig = configStore.save((cfg) => {
|
|
@@ -51843,6 +51986,7 @@ function registerControlHandlers(controlWss, deps) {
|
|
|
51843
51986
|
error: `Could not save the removal of session "${sess.name}"`
|
|
51844
51987
|
};
|
|
51845
51988
|
if (isDiscardingWorkspaceWork) sess.confirmWorkspaceWorkDiscard();
|
|
51989
|
+
lastRemovalRefusalBySessionId.delete(sess.id);
|
|
51846
51990
|
applyConfigReload(freshConfig);
|
|
51847
51991
|
console.log(`[control] Removed session via UI: ${sess.name}`);
|
|
51848
51992
|
return { ok: true };
|
|
@@ -52353,7 +52497,7 @@ function registerControlHandlers(controlWss, deps) {
|
|
|
52353
52497
|
}
|
|
52354
52498
|
return entries;
|
|
52355
52499
|
}
|
|
52356
|
-
function createProjectSession({ id = generateProjectId(), name, path: projectPath, repos, baseBranch, agent, dangerouslySkipPermissions, unguarded, requireExistingPath, environment }) {
|
|
52500
|
+
function createProjectSession({ id = generateProjectId(), name, path: projectPath, repos, baseBranch, agent, dangerouslySkipPermissions, unguarded, requireExistingPath, environment, runSettings }) {
|
|
52357
52501
|
for (const [, session] of sessions) {
|
|
52358
52502
|
if (session.name !== name) continue;
|
|
52359
52503
|
return {
|
|
@@ -52387,6 +52531,7 @@ function registerControlHandlers(controlWss, deps) {
|
|
|
52387
52531
|
error: missingFolderError(projectPath)
|
|
52388
52532
|
};
|
|
52389
52533
|
const project = {
|
|
52534
|
+
...runSettings,
|
|
52390
52535
|
id,
|
|
52391
52536
|
name,
|
|
52392
52537
|
path: resolvedPath
|
|
@@ -53065,6 +53210,7 @@ function registerControlHandlers(controlWss, deps) {
|
|
|
53065
53210
|
}
|
|
53066
53211
|
const handlers = {
|
|
53067
53212
|
"add-session": handleAddSession,
|
|
53213
|
+
"quick-session": handleQuickSession,
|
|
53068
53214
|
"list-conversations": handleListConversations,
|
|
53069
53215
|
"resume-conversation": handleResumeConversation,
|
|
53070
53216
|
"remove-session": handleRemoveSession,
|
|
@@ -53577,15 +53723,37 @@ function registerControlHandlers(controlWss, deps) {
|
|
|
53577
53723
|
});
|
|
53578
53724
|
});
|
|
53579
53725
|
});
|
|
53580
|
-
|
|
53726
|
+
function removeExitedSession(id) {
|
|
53727
|
+
removeSession({
|
|
53728
|
+
type: "remove-session",
|
|
53729
|
+
id
|
|
53730
|
+
}).then((removal) => {
|
|
53731
|
+
if (removal.ok) return;
|
|
53732
|
+
const sess = sessions.get(id);
|
|
53733
|
+
if (removal.canDiscardWork && sess) {
|
|
53734
|
+
broadcastControl({
|
|
53735
|
+
type: "session-close-confirm",
|
|
53736
|
+
id,
|
|
53737
|
+
mergeStatus: sess.mergeStatus
|
|
53738
|
+
});
|
|
53739
|
+
return;
|
|
53740
|
+
}
|
|
53741
|
+
console.warn(`[control] Could not remove session ${id} after its agent quit: ${removal.error}`);
|
|
53742
|
+
});
|
|
53743
|
+
}
|
|
53744
|
+
return {
|
|
53745
|
+
buildSnapshot,
|
|
53746
|
+
removeExitedSession
|
|
53747
|
+
};
|
|
53581
53748
|
}
|
|
53582
53749
|
//#endregion
|
|
53583
53750
|
//#region server/backend/backend-control.ts
|
|
53584
53751
|
function createBackendControl(dependencies) {
|
|
53585
53752
|
const { controlWss, sessions, config, configStore, broadcastControl, controlReplayLog, laneAssembly, posthog, teamReview, myPrs, issues, benchmarks, usage, logger } = dependencies;
|
|
53586
|
-
registerControlHandlers(controlWss, {
|
|
53753
|
+
const controlHandlers = registerControlHandlers(controlWss, {
|
|
53587
53754
|
sessions,
|
|
53588
53755
|
agentSessions: dependencies.agentSessions,
|
|
53756
|
+
markChildWorktreeDiscard: dependencies.markChildWorktreeDiscard,
|
|
53589
53757
|
config,
|
|
53590
53758
|
configStore,
|
|
53591
53759
|
broadcastControl,
|
|
@@ -53655,6 +53823,7 @@ function createBackendControl(dependencies) {
|
|
|
53655
53823
|
sendLaneSnapshotOnConnect("ingest", laneAssembly.currentIngest, true);
|
|
53656
53824
|
sendLaneSnapshotOnConnect("session-docs", () => dependencies.sessionDocs, false);
|
|
53657
53825
|
sendLaneSnapshotOnConnect("coherence-feed", () => dependencies.coherenceFeed, false);
|
|
53826
|
+
return { removeExitedSession: controlHandlers.removeExitedSession };
|
|
53658
53827
|
}
|
|
53659
53828
|
//#endregion
|
|
53660
53829
|
//#region server/core/update-apply-core.ts
|
|
@@ -57439,6 +57608,7 @@ function createBackend(httpServer, options = {}) {
|
|
|
57439
57608
|
const outcomes = createOutcomesLane();
|
|
57440
57609
|
const recordOutcome = outcomes.record;
|
|
57441
57610
|
let broadcastControl = null;
|
|
57611
|
+
let removeExitedSession = null;
|
|
57442
57612
|
let agentApi = null;
|
|
57443
57613
|
let gitWorkspace = null;
|
|
57444
57614
|
const guardrailsRefusal = checkGuardrailsDependencies({ log: console });
|
|
@@ -57606,6 +57776,7 @@ function createBackend(httpServer, options = {}) {
|
|
|
57606
57776
|
coherenceFeed,
|
|
57607
57777
|
planReview: laneAssembly.planReview,
|
|
57608
57778
|
closeSessionDataClients,
|
|
57779
|
+
removeExitedSession: (id) => removeExitedSession?.(id),
|
|
57609
57780
|
telemetry,
|
|
57610
57781
|
logger: console
|
|
57611
57782
|
});
|
|
@@ -57794,10 +57965,11 @@ function createBackend(httpServer, options = {}) {
|
|
|
57794
57965
|
spawn,
|
|
57795
57966
|
beforeHandOff: updateApply.handOffStagedUpdate
|
|
57796
57967
|
});
|
|
57797
|
-
createBackendControl({
|
|
57968
|
+
({removeExitedSession} = createBackendControl({
|
|
57798
57969
|
controlWss,
|
|
57799
57970
|
sessions,
|
|
57800
57971
|
agentSessions,
|
|
57972
|
+
markChildWorktreeDiscard: (childId) => agentApi?.markChildWorktreeDiscard(childId),
|
|
57801
57973
|
config,
|
|
57802
57974
|
configStore,
|
|
57803
57975
|
broadcastControl,
|
|
@@ -57840,7 +58012,7 @@ function createBackend(httpServer, options = {}) {
|
|
|
57840
58012
|
serverBuild: () => serverBuild,
|
|
57841
58013
|
telemetry,
|
|
57842
58014
|
logger: console
|
|
57843
|
-
});
|
|
58015
|
+
}));
|
|
57844
58016
|
webSockets.attachDataConnection();
|
|
57845
58017
|
const { handleUpgrade } = webSockets;
|
|
57846
58018
|
httpServer.on("upgrade", handleUpgrade);
|