glimmervoid 0.45.1-next.46 → 0.45.1-next.57

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.
Files changed (87) hide show
  1. package/dist/bin/glimmervoid.js +8 -8
  2. package/dist/chunks/{adapters-BE9BKVW0.js → adapters-MedfwWEt.js} +2 -2
  3. package/dist/chunks/{adapters-CPaysZkO.js → adapters-llOyoibJ.js} +1 -1
  4. package/dist/chunks/{agent-api-cli-B0l8uLos.js → agent-api-cli-21VH66DW.js} +1 -1
  5. package/dist/chunks/{agent-api-cli-Bq9J0_D5.js → agent-api-cli-Ctyl-wQE.js} +1 -1
  6. package/dist/chunks/{agent-api-core-ClU9-5K3.js → agent-api-core-Bul8RBo6.js} +1 -1
  7. package/dist/chunks/{build-channel-qgKwNssc.js → build-channel-BFlbN47U.js} +1 -1
  8. package/dist/chunks/{config-BqJTnPae.js → config-C8kfugVN.js} +8 -1
  9. package/dist/chunks/config-store-7dRssEkS.js +1 -0
  10. package/dist/chunks/{config-store-BGTg8oKO.js → config-store-sSqr3E3v.js} +2 -4
  11. package/dist/chunks/{main-x9ygUnoL.js → main-DBD_Lbu7.js} +103 -92
  12. package/dist/chunks/{pair-cli-Cph4TZ2R.js → pair-cli-IfDAq5Y9.js} +2 -2
  13. package/dist/chunks/{remote-config-CmP36r_s.js → remote-config-CEaLpe86.js} +1 -1
  14. package/dist/chunks/{settings-cli-Bete5oVk.js → settings-cli-DNtrC3KP.js} +4 -4
  15. package/dist/chunks/{settings-readout-core-CS8MPaIE.js → settings-readout-core-BVBHnzSn.js} +1 -1
  16. package/dist/chunks/{ssh-sign-cli-DXhuqzuy.js → ssh-sign-cli-CCUgMvZp.js} +1 -1
  17. package/dist/client/assets/{action-status-BwqYb9eF.js → action-status-0U-hFn7S.js} +1 -1
  18. package/dist/client/assets/action-status-0U-hFn7S.js.br +0 -0
  19. package/dist/client/assets/{benchmark-panel-cv4w_jfa.js → benchmark-panel-Bvzzcwzi.js} +1 -1
  20. package/dist/client/assets/benchmark-panel-Bvzzcwzi.js.br +0 -0
  21. package/dist/client/assets/{card-dom-DkZgkeG9.js → card-dom-_fAuKTwE.js} +1 -1
  22. package/dist/client/assets/card-dom-_fAuKTwE.js.br +0 -0
  23. package/dist/client/assets/{control-ws-CAcwW-r9.js → control-ws-CR2udDof.js} +1 -1
  24. package/dist/client/assets/control-ws-CR2udDof.js.br +0 -0
  25. package/dist/client/assets/dialogs-BpXz8cZR.js +74 -0
  26. package/dist/client/assets/dialogs-BpXz8cZR.js.br +0 -0
  27. package/dist/client/assets/{dom-helpers-xJduxDcc.js → dom-helpers-BQnoww4P.js} +1 -1
  28. package/dist/client/assets/dom-helpers-BQnoww4P.js.br +0 -0
  29. package/dist/client/assets/{hooks-panel-R2N1db0F.js → hooks-panel-BGXfkOfB.js} +1 -1
  30. package/dist/client/assets/hooks-panel-BGXfkOfB.js.br +0 -0
  31. package/dist/client/assets/index-Dw48sFGf.js +84 -0
  32. package/dist/client/assets/index-Dw48sFGf.js.br +0 -0
  33. package/dist/client/assets/index-DxwzvtXc.css +2 -0
  34. package/dist/client/assets/index-DxwzvtXc.css.br +0 -0
  35. package/dist/client/assets/{issues-panel-D1-aYqED.js → issues-panel-CoY7FI5w.js} +1 -1
  36. package/dist/client/assets/issues-panel-CoY7FI5w.js.br +0 -0
  37. package/dist/client/assets/{modal-mWl2H7A_.js → modal-BRBfeCUF.js} +1 -1
  38. package/dist/client/assets/modal-BRBfeCUF.js.br +0 -0
  39. package/dist/client/assets/{plan-face-fMTjf0DW.js → plan-face-BgqMsocl.js} +1 -1
  40. package/dist/client/assets/plan-face-BgqMsocl.js.br +0 -0
  41. package/dist/client/assets/{poll-ago-Bc-8mMFj.js → poll-ago-CuGmNCv5.js} +1 -1
  42. package/dist/client/assets/poll-ago-CuGmNCv5.js.br +0 -0
  43. package/dist/client/assets/{pr-scope-tabs-BxXGKoO4.js → pr-scope-tabs-DHVp0N0b.js} +1 -1
  44. package/dist/client/assets/pr-scope-tabs-DHVp0N0b.js.br +0 -0
  45. package/dist/client/assets/{radar-panel-Ceg8PWmF.js → radar-panel-BtZa4z4v.js} +1 -1
  46. package/dist/client/assets/radar-panel-BtZa4z4v.js.br +0 -0
  47. package/dist/client/assets/{review-queue-panel-CWSHIbOH.js → review-queue-panel-DOnO2t1V.js} +1 -1
  48. package/dist/client/assets/review-queue-panel-DOnO2t1V.js.br +0 -0
  49. package/dist/client/assets/{settings-panel-C1c627sY.js → settings-panel-LhF_Gkdk.js} +2 -2
  50. package/dist/client/assets/settings-panel-LhF_Gkdk.js.br +0 -0
  51. package/dist/client/assets/{trace-panel-CjNW2loY.js → trace-panel-C2oldexF.js} +1 -1
  52. package/dist/client/assets/trace-panel-C2oldexF.js.br +0 -0
  53. package/dist/client/assets/{ui-prefs-CNf6fId2.js → ui-prefs-DemZczQT.js} +1 -1
  54. package/dist/client/assets/ui-prefs-DemZczQT.js.br +0 -0
  55. package/dist/client/assets/{usage-panel-DQQpGJY7.js → usage-panel-D43x-wwv.js} +1 -1
  56. package/dist/client/assets/usage-panel-D43x-wwv.js.br +0 -0
  57. package/dist/client/assets/{visions-panel-CtcJckL5.js → visions-panel-81h64G9y.js} +1 -1
  58. package/dist/client/assets/visions-panel-81h64G9y.js.br +0 -0
  59. package/dist/client/index.html +9 -9
  60. package/dist/client/index.html.br +0 -0
  61. package/dist/server/index.js +1 -1
  62. package/package.json +2 -1
  63. package/dist/chunks/config-store-5xpRLHFo.js +0 -1
  64. package/dist/client/assets/action-status-BwqYb9eF.js.br +0 -0
  65. package/dist/client/assets/benchmark-panel-cv4w_jfa.js.br +0 -0
  66. package/dist/client/assets/card-dom-DkZgkeG9.js.br +0 -0
  67. package/dist/client/assets/control-ws-CAcwW-r9.js.br +0 -0
  68. package/dist/client/assets/dialogs-CBLquNyw.js +0 -79
  69. package/dist/client/assets/dialogs-CBLquNyw.js.br +0 -0
  70. package/dist/client/assets/dom-helpers-xJduxDcc.js.br +0 -0
  71. package/dist/client/assets/hooks-panel-R2N1db0F.js.br +0 -0
  72. package/dist/client/assets/index-CY9JZfNS.css +0 -2
  73. package/dist/client/assets/index-CY9JZfNS.css.br +0 -0
  74. package/dist/client/assets/index-vCdYvr8W.js +0 -84
  75. package/dist/client/assets/index-vCdYvr8W.js.br +0 -0
  76. package/dist/client/assets/issues-panel-D1-aYqED.js.br +0 -0
  77. package/dist/client/assets/modal-mWl2H7A_.js.br +0 -0
  78. package/dist/client/assets/plan-face-fMTjf0DW.js.br +0 -0
  79. package/dist/client/assets/poll-ago-Bc-8mMFj.js.br +0 -0
  80. package/dist/client/assets/pr-scope-tabs-BxXGKoO4.js.br +0 -0
  81. package/dist/client/assets/radar-panel-Ceg8PWmF.js.br +0 -0
  82. package/dist/client/assets/review-queue-panel-CWSHIbOH.js.br +0 -0
  83. package/dist/client/assets/settings-panel-C1c627sY.js.br +0 -0
  84. package/dist/client/assets/trace-panel-CjNW2loY.js.br +0 -0
  85. package/dist/client/assets/ui-prefs-CNf6fId2.js.br +0 -0
  86. package/dist/client/assets/usage-panel-DQQpGJY7.js.br +0 -0
  87. package/dist/client/assets/visions-panel-CtcJckL5.js.br +0 -0
@@ -5,7 +5,7 @@ import { o as packageRoot } from "../chunks/runtime-paths-ghcH9CeW.js";
5
5
  import { n as glimmervoidHomeDir, t as decideConfigPath } from "../chunks/config-path-core-DUWk0Lui.js";
6
6
  import { t as AGENT_API_VERBS } from "../chunks/session-BwlLY_mv.js";
7
7
  import { i as execSync } from "../chunks/child-process-safe-D4hyVIXj.js";
8
- import { r as agentCommandHelpLines } from "../chunks/agent-api-core-ClU9-5K3.js";
8
+ import { r as agentCommandHelpLines } from "../chunks/agent-api-core-Bul8RBo6.js";
9
9
  import { t as renderTable } from "../chunks/ascii-figure-core-pDAwtlKO.js";
10
10
  import { i as parseCommandLine, r as gitDoctorRows, t as probeGitVersion } from "../chunks/git-version-BpdkKH2j.js";
11
11
  import { i as guardrailsDoctorRows, r as probeGuardrailsDependencies } from "../chunks/guardrails-deps-BjPzk1rE.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-Cph4TZ2R.js");
68
+ const { runPairCli } = await import("../chunks/pair-cli-IfDAq5Y9.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-Bete5oVk.js");
76
+ const { runSettingsCli } = await import("../chunks/settings-cli-DNtrC3KP.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-DXhuqzuy.js");
84
+ const { runSshSignCli } = await import("../chunks/ssh-sign-cli-CCUgMvZp.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-B0l8uLos.js");
90
+ const { runAgentApiCli } = await import("../chunks/agent-api-cli-21VH66DW.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-B0l8uLos.js");
104
+ const { sessionLimitsHelpLines } = await import("../chunks/agent-api-cli-21VH66DW.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-5xpRLHFo.js");
161
+ const { loadConfigFile } = await import("../chunks/config-store-7dRssEkS.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-CPaysZkO.js");
237
+ const { listAgentIds, describeAgentResolvability, setCustomAgents } = await import("../chunks/adapters-llOyoibJ.js");
238
238
  const declaredCustomAgents = await readDeclaredCustomAgents();
239
239
  if (declaredCustomAgents.error) line("config", declaredCustomAgents.error);
240
240
  setCustomAgents(declaredCustomAgents.declared);
@@ -1,14 +1,14 @@
1
1
  import { s as relayPath } from "./runtime-paths-ghcH9CeW.js";
2
2
  import { Bt as FULL_SHA_RE, Ht as shortSha$1 } from "./session-BwlLY_mv.js";
3
3
  import { n as execFileAsync, r as execFileSync } from "./child-process-safe-D4hyVIXj.js";
4
- import { b as InstallFlavor, mt as UpdateChannel } from "./config-BqJTnPae.js";
4
+ import { b as InstallFlavor, mt as UpdateChannel } from "./config-C8kfugVN.js";
5
5
  import { o as supervisionLine } from "./session-routes-CviNvxcz.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-7jK8ZNtf.js";
10
10
  import { t as buildHookCommand } from "./hook-command-core-qTNK-xMF.js";
11
- import { n as isExperimentalBuild, t as compareReleaseVersions } from "./build-channel-qgKwNssc.js";
11
+ import { n as isExperimentalBuild, t as compareReleaseVersions } from "./build-channel-BFlbN47U.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 +1 @@
1
- export { a as describeAgentResolvability, l as listAgentIds, f as setCustomAgents } from "./adapters-BE9BKVW0.js";
1
+ export { a as describeAgentResolvability, l as listAgentIds, f as setCustomAgents } from "./adapters-MedfwWEt.js";
@@ -1 +1 @@
1
- export { t as askAgentApi, r as runAgentApiCli, i as sessionLimitsHelpLines } from "./agent-api-cli-Bq9J0_D5.js";
1
+ export { t as askAgentApi, r as runAgentApiCli, i as sessionLimitsHelpLines } from "./agent-api-cli-Ctyl-wQE.js";
@@ -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-BwlLY_mv.js";
3
3
  import { i as formatSessionLimits } from "./session-routes-CviNvxcz.js";
4
- import { f as isAgentApiVerb, t as AGENT_COMMAND_HELP } from "./agent-api-core-ClU9-5K3.js";
4
+ import { f as isAgentApiVerb, t as AGENT_COMMAND_HELP } from "./agent-api-core-Bul8RBo6.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,5 +1,5 @@
1
1
  import { 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, w as RefinedTaskTitle, z as TASK_TITLE_CONTROL_CHARACTERS } from "./session-BwlLY_mv.js";
2
- import { T as pullRequestKeyFromReference, c as TASK_TITLE_SOURCE_PRIORITY, o as PersistedTaskTitle } from "./config-BqJTnPae.js";
2
+ import { T as pullRequestKeyFromReference, c as TASK_TITLE_SOURCE_PRIORITY, o as PersistedTaskTitle } from "./config-C8kfugVN.js";
3
3
  import { n as NO_OWN_WORKTREE_REASON, t as COMMAND_ROUTES } from "./session-routes-CviNvxcz.js";
4
4
  import path from "node:path";
5
5
  import crypto from "node:crypto";
@@ -1,5 +1,5 @@
1
1
  import "./session-BwlLY_mv.js";
2
- import { C as OPERATOR_ACTIONS_BY_SURFACE, S as ONBOARDING_STEP_STATES, n as BUILTIN_AGENT_IDS, w as OPERATOR_SURFACES, x as ONBOARDING_STEPS, y as DASHBOARD_VIEWS } from "./config-BqJTnPae.js";
2
+ import { C as OPERATOR_ACTIONS_BY_SURFACE, S as ONBOARDING_STEP_STATES, n as BUILTIN_AGENT_IDS, w as OPERATOR_SURFACES, x as ONBOARDING_STEPS, y as DASHBOARD_VIEWS } from "./config-C8kfugVN.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"]);
@@ -1298,6 +1298,12 @@ function openObject(shape = {}) {
1298
1298
  return z.looseObject(shape);
1299
1299
  }
1300
1300
  var nullableString = z.string().nullable();
1301
+ var DiffBase = z.object({
1302
+ member: nullableString,
1303
+ ref: nullableString,
1304
+ sha: z.string(),
1305
+ verified: z.boolean()
1306
+ });
1301
1307
  var timestamp = z.number().finite();
1302
1308
  var optionalTimestamp = timestamp.optional();
1303
1309
  var optionalError = nullableString.optional();
@@ -2028,7 +2034,8 @@ var serverVariants = [
2028
2034
  stat: z.string(),
2029
2035
  diff: z.string()
2030
2036
  }),
2031
- hasCommits: z.boolean()
2037
+ hasCommits: z.boolean(),
2038
+ bases: z.array(DiffBase)
2032
2039
  }),
2033
2040
  loose("session-diff-error", {
2034
2041
  id: sessionId,
@@ -0,0 +1 @@
1
+ export { c as loadConfigFile } from "./config-store-sSqr3E3v.js";
@@ -2,10 +2,10 @@ import { n as errorLabel, r as errorMessage } from "./text-DoirglWV.js";
2
2
  import { n as equalsIgnoringCaseOnWindows } from "./paths-Bu4eH1Yd.js";
3
3
  import { o as packageRoot } from "./runtime-paths-ghcH9CeW.js";
4
4
  import { n as glimmervoidHomeDir$1, t as decideConfigPath } from "./config-path-core-DUWk0Lui.js";
5
- import { $ as PORT_RANGE, J as FLYING_ANIMALS_GAP_RANGE, K as FLYING_ANIMALS_DEFAULTS, Q as NON_NEGATIVE_NUMBER_RANGE, X as KEEP_MERGEABLE_TIMEOUT_MINUTES_RANGE, Y as FLYING_ANIMALS_SCALE_RANGE, Z as MEMORY_RESERVE_MB_RANGE, at as REPLAY_BUFFER_KB_RANGE, ct as USAGE_INTEGER_RANGES, d as USAGE_COST_MODES, dt as WORKFLOWS_MAX_ACTIONS_PER_POLL_RANGE, et as POSITIVE_NUMBER_RANGE, ft as WORKFLOWS_MAX_CONCURRENT_SESSIONS_RANGE, i as Config, it as POSTHOG_TRAFFIC_MULTIPLIER_RANGE, l as configIssueMessage, lt as USAGE_RETAIN_DAYS_RANGE, n as BUILTIN_AGENT_IDS, nt as POSTHOG_TRAFFIC_BASELINE_RANGE, ot as TASK_TITLE_TIMEOUT_RANGE, p as normalizeLegacyConfigNumbers, pt as UPDATE_CHANNELS, q as FLYING_ANIMALS_DURATION_RANGE, rt as POSTHOG_TRAFFIC_MIN_USERS_RANGE, s as RUNTIME_CONFIG_SCALAR_KEYS, st as USAGE_BUDGET_RANGE, t as AGENT_ID_SHAPE_MESSAGE, tt as POSTHOG_FIX_TIMEOUT_RANGE, u as BranchGcFileSettings, ut as USAGE_SCAN_INTERVAL_RANGE } from "./config-BqJTnPae.js";
5
+ import { $ as PORT_RANGE, J as FLYING_ANIMALS_GAP_RANGE, K as FLYING_ANIMALS_DEFAULTS, Q as NON_NEGATIVE_NUMBER_RANGE, X as KEEP_MERGEABLE_TIMEOUT_MINUTES_RANGE, Y as FLYING_ANIMALS_SCALE_RANGE, Z as MEMORY_RESERVE_MB_RANGE, at as REPLAY_BUFFER_KB_RANGE, ct as USAGE_INTEGER_RANGES, d as USAGE_COST_MODES, dt as WORKFLOWS_MAX_ACTIONS_PER_POLL_RANGE, et as POSITIVE_NUMBER_RANGE, ft as WORKFLOWS_MAX_CONCURRENT_SESSIONS_RANGE, i as Config, it as POSTHOG_TRAFFIC_MULTIPLIER_RANGE, l as configIssueMessage, lt as USAGE_RETAIN_DAYS_RANGE, n as BUILTIN_AGENT_IDS, nt as POSTHOG_TRAFFIC_BASELINE_RANGE, ot as TASK_TITLE_TIMEOUT_RANGE, p as normalizeLegacyConfigNumbers, pt as UPDATE_CHANNELS, q as FLYING_ANIMALS_DURATION_RANGE, rt as POSTHOG_TRAFFIC_MIN_USERS_RANGE, s as RUNTIME_CONFIG_SCALAR_KEYS, st as USAGE_BUDGET_RANGE, t as AGENT_ID_SHAPE_MESSAGE, tt as POSTHOG_FIX_TIMEOUT_RANGE, u as BranchGcFileSettings, ut as USAGE_SCAN_INTERVAL_RANGE } from "./config-C8kfugVN.js";
6
6
  import { n as isRecord } from "./coerce-NSst8oRP.js";
7
7
  import { d as writeJsonAtomicSync, f as writeTextAtomic, p as writeTextAtomicSync } from "./json-file-BjFK_eSH.js";
8
- import { f as TELEMETRY_KILL_SWITCH_FLAG, l as FeatureFlagsResponse, n as isExperimentalBuild } from "./build-channel-qgKwNssc.js";
8
+ import { f as TELEMETRY_KILL_SWITCH_FLAG, l as FeatureFlagsResponse, n as isExperimentalBuild } from "./build-channel-BFlbN47U.js";
9
9
  import fs from "node:fs";
10
10
  import path from "node:path";
11
11
  import os from "node:os";
@@ -2110,7 +2110,6 @@ var FILE_ONLY_SETTINGS = Object.freeze([
2110
2110
  control: "list",
2111
2111
  keywords: ["files", "context"],
2112
2112
  defaultValue: [
2113
- "node_modules",
2114
2113
  ".env",
2115
2114
  ".env.local",
2116
2115
  ".claude"
@@ -3474,7 +3473,6 @@ var DEFAULT_CONFIG = {
3474
3473
  integrationBranch: null,
3475
3474
  worktreeRoot: "",
3476
3475
  worktreeShare: [
3477
- "node_modules",
3478
3476
  ".env",
3479
3477
  ".env.local",
3480
3478
  ".claude"
@@ -5,9 +5,9 @@ import { c as resolvePackageBin, i as clientDir, n as bundled, o as packageRoot,
5
5
  import { n as glimmervoidHomeDir, r as isOperatorHomeUnderTest, t as decideConfigPath } from "./config-path-core-DUWk0Lui.js";
6
6
  import { $ as MyPrMergeStateResponse, $t as MERGEABLE_LIVE_STATES, A as SHOWN_FILE_CAP_BYTES, At as TeamReviewResolveResponse, B as TaskTitle, C as ConversationQuestion, Ct as ReviewFinding, Dt as TeamReviewActionRequest, E as SESSION_DOC_BODY_CAP_BYTES, Et as ReviewVerdict, Ft as TeamReviewThreadsRepository, G as MyPrCheckContext, Gt as REPO_SLUG_RE, H as LinkedPr, Ht as shortSha, I as ShownFile, It as canApproveAfterComment, K as MyPrCheckContextsResponse, Kt as repoParts, Lt as decisionAsIfApprovalRequired, M as SSH_SIGN_BODY_CAP_BYTES, Mt as TeamReviewStatus, Nt as TeamReviewThreadCommentsResponse, O as SESSION_NAME_PATTERN, Pt as TeamReviewThreadResult, Qt as KILLABLE_STATES, R as SshSignRequest, St as ReviewDraft, Tt as ReviewThreadId, U as MyPr, Ut as GH_SEGMENT, Vt as HEX_SHA_RE, W as MyPrAutoRebase, Wt as NODE_ID_RE, X as MyPrMergeMethod, Y as MyPrLaneEntry, Z as MyPrMergeRequest, Zt as BADGE_LABELS, _ as CONVERSATION_PERMISSION_HOOK_EVENT, _t as PostedReviewEvent, at as MyPrsSnapshot, dt as CommitSha, en as RESTARTABLE_STATES, et as MyPrMergeWhenReadyRequest, ft as DECIDING_REVIEW_STATES, g as CONVERSATION_APPROVAL_SUMMARY_MAX_CHARS, gt as GithubReviewState, h as COHERENCE_HOOKS_INACTIVE, it as MyPrThreadsResponse, j as SIGN_URL_ENV, jt as TeamReviewStateEntry, k as SESSION_NAME_RULE_TEXT, kt as TeamReviewCompareFiles, mt as FindingSeverity, n as AGENT_URL_ENV, ot as MyPrsState, pt as EarlierReview, q as MyPrKeepMergeableRequest, r as ASK_USER_QUESTION_TOOL_NAME, rt as MyPrThreadNode, tn as STATES, v as CONVERSATION_TOOL_RESULT_HOOK_EVENT, vt as PostingPlan, wt as ReviewResult, xt as ReviewComment, yt as PrDetail, zt as hasStandingViewerApproval } from "./session-BwlLY_mv.js";
7
7
  import { n as execFileAsync, o as spawn, r as execFileSync, t as execFile } from "./child-process-safe-D4hyVIXj.js";
8
- import { A as BenchmarkRun, At as parseExitPlanModeHookPayload, B as GithubPrsFrame, Ct as PLAN_BODY_CAP_BYTES, D as BenchmarkCase, Dt as PLAN_TOOL_NAME, E as BenchmarkActionRequest, Et as PLAN_RESULT_HOOK_EVENT, F as MinedPrReviewData, Ft as IssueUpdate, G as WorkflowsState, H as WorkflowCommentBody, I as PrCheckoutCaseInput, It as IssuesSearchResponse, L as GithubPrDetailNode, Lt as IssuesState, M as BenchmarkSuite, Mt as GithubIssuePullRequestsRepository, N as CommitComparison, Nt as GithubIssueResponse, O as BenchmarkId, Ot as PlanDecision, P as MergedPrListing, Pt as IssueKey, R as GithubPrKey, Rt as IssuesStatus, St as changeMapFactId, T as pullRequestKeyFromReference, Tt as PLAN_HOOK_OUTPUT_MAX_CHARS, U as WorkflowLabelName, V as comparablePrKey, W as WorkflowsSettings, X as KEEP_MERGEABLE_TIMEOUT_MINUTES_RANGE, _ as CONTROL_FRAME_MAX_BYTES, _t as MAX_RAW_LINE_CHARS, a as ConfigUpdate, bt as CoherenceJournalOutput, ct as USAGE_INTEGER_RANGES, d as USAGE_COST_MODES, f as USAGE_VENDOR_KEYS, g as CLIENT_LOG_TEXT_MAX_CHARS, gt as SessionSetup, ht as UpdateJournal, j as BenchmarkStatus, jt as planTitle, k as BenchmarkJudgement, kt as PlanRevision, l as configIssueMessage, m as CHANGES_POLL_INTERVAL_MS, r as BrowserConfig, s as RUNTIME_CONFIG_SCALAR_KEYS, v as ClientMessage, vt as TraceCheckpoint, wt as PLAN_HOOK_EVENT, xt as ChangeMap, yt as TraceRecord, z as GithubPrLightSearchNode, zt as issuePullRequestStateFromGithub } from "./config-BqJTnPae.js";
8
+ import { A as BenchmarkRun, At as parseExitPlanModeHookPayload, B as GithubPrsFrame, Ct as PLAN_BODY_CAP_BYTES, D as BenchmarkCase, Dt as PLAN_TOOL_NAME, E as BenchmarkActionRequest, Et as PLAN_RESULT_HOOK_EVENT, F as MinedPrReviewData, Ft as IssueUpdate, G as WorkflowsState, H as WorkflowCommentBody, I as PrCheckoutCaseInput, It as IssuesSearchResponse, L as GithubPrDetailNode, Lt as IssuesState, M as BenchmarkSuite, Mt as GithubIssuePullRequestsRepository, N as CommitComparison, Nt as GithubIssueResponse, O as BenchmarkId, Ot as PlanDecision, P as MergedPrListing, Pt as IssueKey, R as GithubPrKey, Rt as IssuesStatus, St as changeMapFactId, T as pullRequestKeyFromReference, Tt as PLAN_HOOK_OUTPUT_MAX_CHARS, U as WorkflowLabelName, V as comparablePrKey, W as WorkflowsSettings, X as KEEP_MERGEABLE_TIMEOUT_MINUTES_RANGE, _ as CONTROL_FRAME_MAX_BYTES, _t as MAX_RAW_LINE_CHARS, a as ConfigUpdate, bt as CoherenceJournalOutput, ct as USAGE_INTEGER_RANGES, d as USAGE_COST_MODES, f as USAGE_VENDOR_KEYS, g as CLIENT_LOG_TEXT_MAX_CHARS, gt as SessionSetup, ht as UpdateJournal, j as BenchmarkStatus, jt as planTitle, k as BenchmarkJudgement, kt as PlanRevision, l as configIssueMessage, m as CHANGES_POLL_INTERVAL_MS, r as BrowserConfig, s as RUNTIME_CONFIG_SCALAR_KEYS, v as ClientMessage, vt as TraceCheckpoint, wt as PLAN_HOOK_EVENT, xt as ChangeMap, yt as TraceRecord, z as GithubPrLightSearchNode, zt as issuePullRequestStateFromGithub } from "./config-C8kfugVN.js";
9
9
  import { a as permitsHelpCommand, r as describeSessionLimits } from "./session-routes-CviNvxcz.js";
10
- 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-ClU9-5K3.js";
10
+ 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-Bul8RBo6.js";
11
11
  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";
12
12
  import { i as parseCommandLine, n as warnWhenGitIsTooOld } from "./git-version-BpdkKH2j.js";
13
13
  import { n as checkGuardrailsDependencies, t as allowGuardedSpawn } from "./guardrails-deps-BjPzk1rE.js";
@@ -22,13 +22,13 @@ import { n as unrefTimer, t as DEFAULT_TIMER_FNS } from "./timer-deps-u2DAQLok.j
22
22
  import { a as readPageTitle, i as filesAfterRetention, n as decideShownKind, o as shownMimeForFilename, r as describeOverCap, t as SHOWN_SNIFF_BYTES } from "./shown-files-core-soMzCQ1D.js";
23
23
  import { n as shellQuote } from "./hook-command-core-qTNK-xMF.js";
24
24
  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-BjFK_eSH.js";
25
- import { $ as resolveProjectToken, B as buildAiGenerationEvents, G as claudeAccountUuidOf, H as buildExceptionProperties, I as FIRST_RUN_NOTICE, J as decideRemoteTelemetryState, K as codexUserIdOf, L as TELEMETRY_BATCH_URL, Q as parsePosthogReleaseId, R as TELEMETRY_FLAGS_URL, S as validateSettingsBlock, U as buildPersonProperties, V as buildBrowserExceptionProperties, W as classifySessionExit, X as exceptionFingerprint, Y as decideTelemetryConsent, Z as nodeMajorVersion, _ as isRtkBinaryName, a as ensureProjectIds, at as matchedPrefix, b as mergeSettingsBlock, ct as sessionIdFromBranch, dt as canonicalizePath, ft as comparableDirectoryPath, g as installTargetPath, h as findEscapingArchiveMember, i as createConfigStore, it as DEFAULT_BRANCH_GC_PREFIXES, lt as usablePrefixes, m as decideRtkInstall, n as DEFAULT_CONFIG, nt as stableConfigKey, o as generateProjectId, ot as planBranchGc, p as assetForPlatform, pt as isSameDirectoryPath, q as decideIsDevInstall, s as glimmervoidHomeDir$1, st as planWorktreeGc, t as ABORT_CONFIG_SAVE, ut as worktreeIntegrationTips, v as verifyDigest, x as settingsBlockSpecFor, z as adapterBucket } from "./config-store-BGTg8oKO.js";
26
- import { a as DEEP_HISTORY_SCROLLBACK_LINES, c as DashboardTelemetryReport, d as TELEMETRY_EVENT_SCHEMAS, i as HookEnvelope, o as parseDataAttach, p as TelemetryState, r as HTTP_URL_RE, s as parseDataClientMessage, u as PendingCrashReport } from "./build-channel-qgKwNssc.js";
27
- import { A as decideFileRead, B as shouldEvaluateDespiteIoFailures, C as pickNewestPublished, D as codexRootCandidates, E as codexHomes, F as isUsageFile, H as splitLines$1, I as passOutcome, L as projectDirCandidates, M as expandTilde, N as grokHomes, O as codexSessionIdFromPath, P as grokRootCandidates, R as resolveProjectsDirs, S as parseResolvedSha, T as codexFallbackRoots, U as claudeCode, V as shouldPersistWarehouse, _ 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 dedupeCodexFiles, k as continuationDelayMs, 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 shortSha$1, x as parseRegistryLatest, y as normalizeUpdateChannel, z as scopedClaudeRoots } from "./adapters-BE9BKVW0.js";
25
+ import { $ as resolveProjectToken, B as buildAiGenerationEvents, G as claudeAccountUuidOf, H as buildExceptionProperties, I as FIRST_RUN_NOTICE, J as decideRemoteTelemetryState, K as codexUserIdOf, L as TELEMETRY_BATCH_URL, Q as parsePosthogReleaseId, R as TELEMETRY_FLAGS_URL, S as validateSettingsBlock, U as buildPersonProperties, V as buildBrowserExceptionProperties, W as classifySessionExit, X as exceptionFingerprint, Y as decideTelemetryConsent, Z as nodeMajorVersion, _ as isRtkBinaryName, a as ensureProjectIds, at as matchedPrefix, b as mergeSettingsBlock, ct as sessionIdFromBranch, dt as canonicalizePath, ft as comparableDirectoryPath, g as installTargetPath, h as findEscapingArchiveMember, i as createConfigStore, it as DEFAULT_BRANCH_GC_PREFIXES, lt as usablePrefixes, m as decideRtkInstall, n as DEFAULT_CONFIG, nt as stableConfigKey, o as generateProjectId, ot as planBranchGc, p as assetForPlatform, pt as isSameDirectoryPath, q as decideIsDevInstall, s as glimmervoidHomeDir$1, st as planWorktreeGc, t as ABORT_CONFIG_SAVE, ut as worktreeIntegrationTips, v as verifyDigest, x as settingsBlockSpecFor, z as adapterBucket } from "./config-store-sSqr3E3v.js";
26
+ import { a as DEEP_HISTORY_SCROLLBACK_LINES, c as DashboardTelemetryReport, d as TELEMETRY_EVENT_SCHEMAS, i as HookEnvelope, o as parseDataAttach, p as TelemetryState, r as HTTP_URL_RE, s as parseDataClientMessage, u as PendingCrashReport } from "./build-channel-BFlbN47U.js";
27
+ import { A as decideFileRead, B as shouldEvaluateDespiteIoFailures, C as pickNewestPublished, D as codexRootCandidates, E as codexHomes, F as isUsageFile, H as splitLines$1, I as passOutcome, L as projectDirCandidates, M as expandTilde, N as grokHomes, O as codexSessionIdFromPath, P as grokRootCandidates, R as resolveProjectsDirs, S as parseResolvedSha, T as codexFallbackRoots, U as claudeCode, V as shouldPersistWarehouse, _ 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 dedupeCodexFiles, k as continuationDelayMs, 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 shortSha$1, x as parseRegistryLatest, y as normalizeUpdateChannel, z as scopedClaudeRoots } from "./adapters-MedfwWEt.js";
28
28
  import { t as HOOK_TOOLS } from "./hook-tools-Dl7-r2Eb.js";
29
29
  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";
30
- 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-CmP36r_s.js";
31
- import { n as configFileViewOf, u as readSettingsForAgent } from "./settings-readout-core-CS8MPaIE.js";
30
+ 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-CEaLpe86.js";
31
+ import { n as configFileViewOf, u as readSettingsForAgent } from "./settings-readout-core-BVBHnzSn.js";
32
32
  import { _ as escapeMarkup, g as createLaneLog, n as createVisionsSetup } from "./visions-setup-VMMyqOpl.js";
33
33
  import { t as getRtkPath } from "./rtk-resolver-C_IReILP.js";
34
34
  import { createRequire } from "node:module";
@@ -7057,6 +7057,22 @@ function defaultBranchFromRemoteHead(remoteHead) {
7057
7057
  if (!remoteHead.startsWith(REMOTE_HEAD_PREFIX)) return null;
7058
7058
  return remoteHead.slice(7) || null;
7059
7059
  }
7060
+ function originTrackingRefProbe(base) {
7061
+ return [
7062
+ "rev-parse",
7063
+ "--verify",
7064
+ "--quiet",
7065
+ `refs/remotes/origin/${base}`
7066
+ ];
7067
+ }
7068
+ function unlandedCommitCountArgs({ tip, measuredBase, originBaseRef }) {
7069
+ return [
7070
+ "rev-list",
7071
+ "--count",
7072
+ tip,
7073
+ ...(originBaseRef ? [measuredBase, originBaseRef] : [measuredBase]).map((ref) => `^${ref}`)
7074
+ ];
7075
+ }
7060
7076
  function markerProbeCommands({ marker, detectedDefaultBranch }) {
7061
7077
  if (!marker || !detectedDefaultBranch || detectedDefaultBranch === marker) return null;
7062
7078
  return {
@@ -17961,6 +17977,11 @@ function createSessionWorktreeLifecycle({ id, projectPath, integrationBranch = n
17961
17977
  if (workspaceMembers) return provisionWorkspaceMembers(workspaceMembers);
17962
17978
  if (!gitWorkspace) return true;
17963
17979
  if (lifecycleState.worktreeDir && fs.existsSync(lifecycleState.worktreeDir)) {
17980
+ await Promise.resolve(gitWorkspace.populate({
17981
+ projectPath: currentProjectPath(),
17982
+ wtDir: lifecycleState.worktreeDir,
17983
+ shareList: worktreeShare
17984
+ })).catch(() => {});
17964
17985
  if (fresh) await syncFreshWorktree();
17965
17986
  return true;
17966
17987
  }
@@ -18211,11 +18232,15 @@ function createSessionWorktreeLifecycle({ id, projectPath, integrationBranch = n
18211
18232
  "rev-list",
18212
18233
  "--count",
18213
18234
  `${baseRef}..HEAD`
18214
- ], opts)).trim()
18235
+ ], opts)).trim(),
18236
+ ref: baseRef,
18237
+ verified
18215
18238
  };
18216
18239
  if (!baseRef) return {
18217
18240
  base: "",
18218
- aheadCount: "0"
18241
+ aheadCount: "0",
18242
+ ref: null,
18243
+ verified
18219
18244
  };
18220
18245
  return {
18221
18246
  base: baseRef,
@@ -18223,7 +18248,9 @@ function createSessionWorktreeLifecycle({ id, projectPath, integrationBranch = n
18223
18248
  "rev-list",
18224
18249
  "--count",
18225
18250
  `${baseRef}..HEAD`
18226
- ], opts)).trim()
18251
+ ], opts)).trim(),
18252
+ ref: null,
18253
+ verified
18227
18254
  };
18228
18255
  }
18229
18256
  async function readChangeScope(name, root, base, sessionPathPrefix) {
@@ -18271,13 +18298,19 @@ function createSessionWorktreeLifecycle({ id, projectPath, integrationBranch = n
18271
18298
  "--quiet",
18272
18299
  candidate
18273
18300
  ], opts) === null) continue;
18274
- return (await gitLookup([
18275
- "merge-base",
18276
- candidate,
18277
- "HEAD"
18278
- ], opts))?.trim() ?? "";
18301
+ return {
18302
+ ref: candidate,
18303
+ sha: (await gitLookup([
18304
+ "merge-base",
18305
+ candidate,
18306
+ "HEAD"
18307
+ ], opts))?.trim() ?? ""
18308
+ };
18279
18309
  }
18280
- return "";
18310
+ return {
18311
+ ref: null,
18312
+ sha: ""
18313
+ };
18281
18314
  }
18282
18315
  async function getChangeScopes() {
18283
18316
  const members = lifecycleState.provisionedMembers;
@@ -18285,7 +18318,7 @@ function createSessionWorktreeLifecycle({ id, projectPath, integrationBranch = n
18285
18318
  const scopes = [];
18286
18319
  for (const member of members) {
18287
18320
  if (!(await fs.promises.stat(member.dir).catch(() => null))?.isDirectory()) continue;
18288
- scopes.push(await readChangeScope(member.name, member.dir, await memberMergeBase(member), `${member.name}/`));
18321
+ scopes.push(await readChangeScope(member.name, member.dir, (await memberMergeBase(member)).sha, `${member.name}/`));
18289
18322
  }
18290
18323
  return scopes;
18291
18324
  }
@@ -18298,7 +18331,7 @@ function createSessionWorktreeLifecycle({ id, projectPath, integrationBranch = n
18298
18331
  const run = (args) => gitOut(args, diffGitOptions(member.dir));
18299
18332
  const prefixArgs = [`--src-prefix=a/${member.name}/`, `--dst-prefix=b/${member.name}/`];
18300
18333
  await markUntrackedIntentToAdd(member.dir);
18301
- const base = await memberMergeBase(member);
18334
+ const { ref: baseRef, sha: base } = await memberMergeBase(member);
18302
18335
  const aheadCount = base ? (await run([
18303
18336
  "rev-list",
18304
18337
  "--count",
@@ -18330,7 +18363,9 @@ function createSessionWorktreeLifecycle({ id, projectPath, integrationBranch = n
18330
18363
  ])).trim(),
18331
18364
  diff: await readPrefixedDiff("HEAD")
18332
18365
  },
18333
- hasCommits: aheadCount !== "" && aheadCount !== "0"
18366
+ hasCommits: aheadCount !== "" && aheadCount !== "0",
18367
+ baseRef,
18368
+ baseSha: base
18334
18369
  };
18335
18370
  }
18336
18371
  async function getWorkspaceDiff(members) {
@@ -18346,7 +18381,13 @@ function createSessionWorktreeLifecycle({ id, projectPath, integrationBranch = n
18346
18381
  return {
18347
18382
  committed: joinSection("committed"),
18348
18383
  uncommitted: joinSection("uncommitted"),
18349
- hasCommits: memberDiffs.some((memberDiff) => memberDiff.hasCommits)
18384
+ hasCommits: memberDiffs.some((memberDiff) => memberDiff.hasCommits),
18385
+ bases: memberDiffs.filter((memberDiff) => memberDiff.baseSha).map((memberDiff) => ({
18386
+ member: memberDiff.name,
18387
+ ref: memberDiff.baseRef,
18388
+ sha: memberDiff.baseSha,
18389
+ verified: true
18390
+ }))
18350
18391
  };
18351
18392
  }
18352
18393
  async function markUntrackedIntentToAdd(dir) {
@@ -18370,12 +18411,13 @@ function createSessionWorktreeLifecycle({ id, projectPath, integrationBranch = n
18370
18411
  if (!lifecycleState.worktreeDir) return {
18371
18412
  committed: empty,
18372
18413
  uncommitted: empty,
18373
- hasCommits: false
18414
+ hasCommits: false,
18415
+ bases: []
18374
18416
  };
18375
18417
  const opts = diffGitOptions(lifecycleState.worktreeDir);
18376
18418
  const run = (args) => gitOut(args, opts);
18377
18419
  await markUntrackedIntentToAdd(lifecycleState.worktreeDir);
18378
- const { base, aheadCount } = await resolveDiffBase(opts);
18420
+ const { base, aheadCount, ref, verified } = await resolveDiffBase(opts);
18379
18421
  const committed = base ? {
18380
18422
  stat: (await run([
18381
18423
  "diff",
@@ -18397,7 +18439,13 @@ function createSessionWorktreeLifecycle({ id, projectPath, integrationBranch = n
18397
18439
  return {
18398
18440
  committed,
18399
18441
  uncommitted,
18400
- hasCommits: aheadCount !== "" && aheadCount !== "0"
18442
+ hasCommits: aheadCount !== "" && aheadCount !== "0",
18443
+ bases: base ? [{
18444
+ member: null,
18445
+ ref,
18446
+ sha: base,
18447
+ verified
18448
+ }] : []
18401
18449
  };
18402
18450
  }
18403
18451
  function noUpstream(branch) {
@@ -25895,7 +25943,13 @@ function createGitWorkspace(opts = {}) {
25895
25943
  };
25896
25944
  }
25897
25945
  async function populateShare({ projectPath, wtDir, shareList, keepTrackableLinks = false }) {
25898
- if (!wtDir || !shareList || !shareList.length) return;
25946
+ if (!wtDir) return;
25947
+ const projectRealPath = await fs.promises.realpath(projectPath).catch(() => null);
25948
+ if (projectRealPath) removeWorktreeLinks(wtDir, {
25949
+ projectRealPath,
25950
+ shareList: shareList ?? []
25951
+ });
25952
+ if (!shareList || !shareList.length) return;
25899
25953
  const ignored = [];
25900
25954
  for (const rel of shareList) if (rel && !String(rel).includes("..") && (await run([
25901
25955
  "check-ignore",
@@ -26578,11 +26632,11 @@ function createGitWorkspace(opts = {}) {
26578
26632
  const dirty = await run(WORK_PRESENCE_STATUS_ARGS, cwd);
26579
26633
  return {
26580
26634
  dirty,
26581
- ahead: !isDirtyResult(dirty) && resolvedIntegrationBranch ? await run([
26582
- "rev-list",
26583
- "--count",
26584
- `${measureRef || resolvedIntegrationBranch}..${measuredTip}`
26585
- ], projectPath) : null,
26635
+ ahead: !isDirtyResult(dirty) && resolvedIntegrationBranch ? await run(unlandedCommitCountArgs({
26636
+ tip: measuredTip,
26637
+ measuredBase: measureRef || resolvedIntegrationBranch,
26638
+ originBaseRef: markerFrom(await run(originTrackingRefProbe(resolvedIntegrationBranch), projectPath))
26639
+ }), projectPath) : null,
26586
26640
  integrationBranch: resolvedIntegrationBranch ?? null
26587
26641
  };
26588
26642
  }
@@ -27745,11 +27799,11 @@ function createGitWorkspaceSync(opts = {}) {
27745
27799
  "--porcelain",
27746
27800
  ...COHERENCE_BOOKKEEPING_PATHSPEC
27747
27801
  ], wt);
27748
- const ahead = !isDirtyResult(dirty) && resolvedIntegrationBranch ? run([
27749
- "rev-list",
27750
- "--count",
27751
- `${measureRef || resolvedIntegrationBranch}..${name}`
27752
- ], projectPath) : null;
27802
+ const ahead = !isDirtyResult(dirty) && resolvedIntegrationBranch ? run(unlandedCommitCountArgs({
27803
+ tip: name,
27804
+ measuredBase: measureRef || resolvedIntegrationBranch,
27805
+ originBaseRef: markerFrom(run(originTrackingRefProbe(resolvedIntegrationBranch), projectPath))
27806
+ }), projectPath) : null;
27753
27807
  out.push({
27754
27808
  cwd: wt,
27755
27809
  branch: name,
@@ -27912,7 +27966,15 @@ function statUnlessMissingSync(targetPath) {
27912
27966
  return isMissingFileError(error) ? "missing" : null;
27913
27967
  }
27914
27968
  }
27915
- function removeWorktreeLinks(wtDir) {
27969
+ function isRetiredShareLink(linkPath, name, keep) {
27970
+ if (keep.shareList.includes(name)) return false;
27971
+ try {
27972
+ return fs.realpathSync.native(linkPath) === path.join(keep.projectRealPath, name);
27973
+ } catch {
27974
+ return false;
27975
+ }
27976
+ }
27977
+ function removeWorktreeLinks(wtDir, keep) {
27916
27978
  if (!wtDir) return;
27917
27979
  let entries;
27918
27980
  try {
@@ -27923,6 +27985,7 @@ function removeWorktreeLinks(wtDir) {
27923
27985
  for (const e of entries) {
27924
27986
  if (!e.isSymbolicLink()) continue;
27925
27987
  const p = path.join(wtDir, e.name);
27988
+ if (keep && !isRetiredShareLink(p, e.name, keep)) continue;
27926
27989
  try {
27927
27990
  fs.rmSync(p, {
27928
27991
  recursive: false,
@@ -51428,30 +51491,6 @@ function createChangesWatch({ findSession, isHolderOpen, setIntervalFn = DEFAULT
51428
51491
  }
51429
51492
  //#endregion
51430
51493
  //#region server/control-handlers.ts
51431
- function isInsideGitCheckout(folderPath) {
51432
- const resolvedFolder = path.resolve(folderPath);
51433
- if (fs.existsSync(path.join(resolvedFolder, ".git"))) return true;
51434
- const parentFolder = path.dirname(resolvedFolder);
51435
- if (parentFolder === resolvedFolder) return false;
51436
- return isInsideGitCheckout(parentFolder);
51437
- }
51438
- async function hasCommittedGitCheckout(folderPath) {
51439
- const insideWorkTree = await runGit(["rev-parse", "--is-inside-work-tree"], { cwd: folderPath });
51440
- if (!insideWorkTree.ok || insideWorkTree.out !== "true") return false;
51441
- return (await runGit(["rev-parse", "HEAD"], { cwd: folderPath })).ok;
51442
- }
51443
- async function canHaveOwnWorktree(folderPath) {
51444
- if (!isInsideGitCheckout(folderPath)) return false;
51445
- return hasCommittedGitCheckout(folderPath);
51446
- }
51447
- async function markWorktreeCapableProjects(projects) {
51448
- const scannedProjects = [];
51449
- for (const project of projects) scannedProjects.push({
51450
- ...project,
51451
- isGit: await canHaveOwnWorktree(project.path)
51452
- });
51453
- return scannedProjects;
51454
- }
51455
51494
  function scanRepoRoots(roots) {
51456
51495
  const results = [];
51457
51496
  if (!roots) return results;
@@ -51507,9 +51546,6 @@ async function runGitForConversationHistory(args, cwd) {
51507
51546
  if (!result.ok) throw result.error;
51508
51547
  return result.out;
51509
51548
  }
51510
- function notGitRepositoryError(folderPath) {
51511
- return `${folderPath} is not a git repository with a commit, so the session cannot get its own worktree. Tick "Run in this folder, no worktree" to let the agent work in the folder directly, or run git init there and make a first commit.`;
51512
- }
51513
51549
  function missingFolderError(folderPath) {
51514
51550
  return `No folder at ${folderPath}. It may have been moved or renamed; pick it again or enter its current path.`;
51515
51551
  }
@@ -51850,11 +51886,7 @@ function registerControlHandlers(controlWss, deps) {
51850
51886
  }
51851
51887
  const environmentName = typeof msg.environment === "string" ? msg.environment.trim() : "";
51852
51888
  if (environmentName) return createRemoteAddedSession(msg, ws, environmentName);
51853
- if (!needsOwnWorktreeCheck(msg)) {
51854
- createAddedSession(msg, ws);
51855
- return;
51856
- }
51857
- return createAddedSessionOnceWorktreeCapable(msg, ws);
51889
+ createAddedSession(msg, ws);
51858
51890
  }
51859
51891
  function handleQuickSession(msg, ws) {
51860
51892
  const source = findSession(msg);
@@ -51877,22 +51909,6 @@ function registerControlHandlers(controlWss, deps) {
51877
51909
  runSettings: plan.runSettings
51878
51910
  }, ws);
51879
51911
  }
51880
- function needsOwnWorktreeCheck(msg) {
51881
- if (msg.repos || msg.runInPlace === true) return false;
51882
- const projectPath = (msg.path || "").trim();
51883
- return !config.projects.some((project) => isSameDirectoryPath(project.path, projectPath));
51884
- }
51885
- async function createAddedSessionOnceWorktreeCapable(msg, ws) {
51886
- const projectPath = (msg.path || "").trim();
51887
- if (!await hasCommittedGitCheckout(projectPath)) {
51888
- refuseAddSession(msg, ws, {
51889
- error: notGitRepositoryError(projectPath),
51890
- reason: "not-git"
51891
- });
51892
- return;
51893
- }
51894
- createAddedSession(msg, ws);
51895
- }
51896
51912
  function createAddedSession(msg, ws, remote) {
51897
51913
  const name = (msg.name || "").trim();
51898
51914
  const projectPath = (msg.path || "").trim();
@@ -52577,10 +52593,7 @@ function registerControlHandlers(controlWss, deps) {
52577
52593
  }));
52578
52594
  }
52579
52595
  async function handleScanRepoRoots(msg, ws) {
52580
- const directories = await Promise.all(scanRepoRoots(config.repoRoots).map(async ({ root, projects }) => ({
52581
- root,
52582
- projects: await markWorktreeCapableProjects(projects)
52583
- })));
52596
+ const directories = scanRepoRoots(config.repoRoots);
52584
52597
  const suggestions = msg.includeSuggestions ? await suggestRepoRoots({
52585
52598
  homeDir: os.homedir(),
52586
52599
  configuredRoots: config.repoRoots || []
@@ -53443,13 +53456,11 @@ function registerControlHandlers(controlWss, deps) {
53443
53456
  const s = findSession(msg);
53444
53457
  if (!s) return;
53445
53458
  try {
53446
- const { committed, uncommitted, hasCommits } = await s.getDiff();
53459
+ const diff = await s.getDiff();
53447
53460
  ws.send(JSON.stringify({
53461
+ ...diff,
53448
53462
  type: "session-diff",
53449
- id: s.id,
53450
- committed,
53451
- uncommitted,
53452
- hasCommits
53463
+ id: s.id
53453
53464
  }));
53454
53465
  } catch (error) {
53455
53466
  console.warn(`[control] request-session-diff failed: id=${s.id}: ${errorMessage(error)}`);
@@ -1,6 +1,6 @@
1
1
  import { r as errorMessage } from "./text-DoirglWV.js";
2
- import { l as resolveConfigPath } from "./config-store-BGTg8oKO.js";
3
- import { c as defaultPairingsPath, i as REVOCATION_PROPAGATION_SECONDS, l as defaultSeenPath, n as normalizeRemoteConfig, o as createPairingsStore, s as createSeenStore } from "./remote-config-CmP36r_s.js";
2
+ import { l as resolveConfigPath } from "./config-store-sSqr3E3v.js";
3
+ import { c as defaultPairingsPath, i as REVOCATION_PROPAGATION_SECONDS, l as defaultSeenPath, n as normalizeRemoteConfig, o as createPairingsStore, s as createSeenStore } from "./remote-config-CEaLpe86.js";
4
4
  import fs from "node:fs";
5
5
  //#region server/text-format.ts
6
6
  function trimIso(iso) {
@@ -3,7 +3,7 @@ import { n as equalsIgnoringCaseOnWindows } from "./paths-Bu4eH1Yd.js";
3
3
  import { n as isRecord } from "./coerce-NSst8oRP.js";
4
4
  import { n as unrefTimer, t as DEFAULT_TIMER_FNS } from "./timer-deps-u2DAQLok.js";
5
5
  import { a as jsonStateLoadError, d as writeJsonAtomicSync, l as sleepSync, s as loadJsonStateFileSync, u as writeJsonAtomic } from "./json-file-BjFK_eSH.js";
6
- import { dt as canonicalizePath, s as glimmervoidHomeDir } from "./config-store-BGTg8oKO.js";
6
+ import { dt as canonicalizePath, s as glimmervoidHomeDir } from "./config-store-sSqr3E3v.js";
7
7
  import fs from "node:fs";
8
8
  import path from "node:path";
9
9
  import crypto from "node:crypto";
@@ -1,11 +1,11 @@
1
1
  import { r as errorMessage, t as errorCode } from "./text-DoirglWV.js";
2
2
  import { n as glimmervoidHomeDir, t as decideConfigPath } from "./config-path-core-DUWk0Lui.js";
3
3
  import { f as AgentSettingsReply } from "./session-BwlLY_mv.js";
4
- import { r as BrowserConfig } from "./config-BqJTnPae.js";
4
+ import { r as BrowserConfig } from "./config-C8kfugVN.js";
5
5
  import { n as isRecord } from "./coerce-NSst8oRP.js";
6
6
  import { t as renderTable } from "./ascii-figure-core-pDAwtlKO.js";
7
- import { A as setValueAtPath, F as SETTINGS_REGISTRY, N as valueAtPath, O as parsePosthogProjectSelection, T as deleteValueAtPath, c as loadConfigFile, d as validateConfig, et as ENV_SECRET_BINDINGS, f as isSettingAvailable, k as scoreSettingsSearch, r as IS_EXPERIMENTAL_BUILD, rt as withEnvSecrets, tt as readEnvSecrets, u as saveConfigFileOnce, w as cloneValue } from "./config-store-BGTg8oKO.js";
8
- import { a as fail, c as listSettings, d as renderSectionTables, f as requireConfigFileSetting, g as valueText, h as succeed, i as describeSetting, l as readSetting, m as settingsRequestForServer, n as configFileViewOf, o as fitColumn, p as sectionOf, r as defaultText, s as getSetting, t as availableSettings } from "./settings-readout-core-CS8MPaIE.js";
7
+ import { A as setValueAtPath, F as SETTINGS_REGISTRY, N as valueAtPath, O as parsePosthogProjectSelection, T as deleteValueAtPath, c as loadConfigFile, d as validateConfig, et as ENV_SECRET_BINDINGS, f as isSettingAvailable, k as scoreSettingsSearch, r as IS_EXPERIMENTAL_BUILD, rt as withEnvSecrets, tt as readEnvSecrets, u as saveConfigFileOnce, w as cloneValue } from "./config-store-sSqr3E3v.js";
8
+ import { a as fail, c as listSettings, d as renderSectionTables, f as requireConfigFileSetting, g as valueText, h as succeed, i as describeSetting, l as readSetting, m as settingsRequestForServer, n as configFileViewOf, o as fitColumn, p as sectionOf, r as defaultText, s as getSetting, t as availableSettings } from "./settings-readout-core-BVBHnzSn.js";
9
9
  import fs from "node:fs";
10
10
  import os from "node:os";
11
11
  import { parseArgs } from "node:util";
@@ -330,7 +330,7 @@ function processIo() {
330
330
  async function runSettingsCli(commandArguments, io = processIo()) {
331
331
  const serverRequest = settingsRequestForServer(commandArguments, process.env);
332
332
  if (!serverRequest) return runSettingsCommand(commandArguments, io);
333
- const { askAgentApi } = await import("./agent-api-cli-B0l8uLos.js");
333
+ const { askAgentApi } = await import("./agent-api-cli-21VH66DW.js");
334
334
  const reply = AgentSettingsReply.safeParse(await askAgentApi("settings", serverRequest).catch((error) => ({
335
335
  ok: false,
336
336
  error: errorMessage(error)
@@ -1,6 +1,6 @@
1
1
  import { p as AgentSettingsRequest } from "./session-BwlLY_mv.js";
2
2
  import { t as renderTable } from "./ascii-figure-core-pDAwtlKO.js";
3
- import { C as SETTINGS_INDEX, D as hasScaledUnit, E as displayText, F as SETTINGS_REGISTRY, M as settingsOf, N as valueAtPath, P as FILE_ONLY_GROUPS, f as isSettingAvailable, j as settingsGroupOf, tt as readEnvSecrets, w as cloneValue } from "./config-store-BGTg8oKO.js";
3
+ import { C as SETTINGS_INDEX, D as hasScaledUnit, E as displayText, F as SETTINGS_REGISTRY, M as settingsOf, N as valueAtPath, P as FILE_ONLY_GROUPS, f as isSettingAvailable, j as settingsGroupOf, tt as readEnvSecrets, w as cloneValue } from "./config-store-sSqr3E3v.js";
4
4
  import { parseArgs } from "node:util";
5
5
  //#region server/core/settings-readout-core.ts
6
6
  var VALUE_COLUMN_WIDTH = 40;
@@ -2,7 +2,7 @@ import { r as errorMessage } from "./text-DoirglWV.js";
2
2
  import { L as SshSignReply, j as SIGN_URL_ENV } from "./session-BwlLY_mv.js";
3
3
  import { n as execFileAsync, o as spawn } from "./child-process-safe-D4hyVIXj.js";
4
4
  import { a as isLoopbackHostname } from "./hook-relay-core-DA_bz2KA.js";
5
- import { n as postToAgentIngress } from "./agent-api-cli-Bq9J0_D5.js";
5
+ import { n as postToAgentIngress } from "./agent-api-cli-Ctyl-wQE.js";
6
6
  import { l as parseSshPublicKey } from "./ssh-signing-core-CRhVVWNW.js";
7
7
  import path from "node:path";
8
8
  import fs from "node:fs/promises";