glimmervoid 0.42.1 → 0.42.3

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 (25) hide show
  1. package/README.md +2 -2
  2. package/dist/bin/glimmervoid.js +8 -8
  3. package/dist/chunks/{adapters-CWIHOfVo.js → adapters-Bga1N6Ie.js} +2 -2
  4. package/dist/chunks/{adapters-DzClvFt5.js → adapters-DeqV4wUv.js} +1 -1
  5. package/dist/chunks/{agent-api-cli-Cn-g_ej_.js → agent-api-cli-DWVeqlLu.js} +1 -1
  6. package/dist/chunks/{agent-api-cli-2FKWf5jj.js → agent-api-cli-YvQ8WxHA.js} +1 -1
  7. package/dist/chunks/{agent-api-core-CP4J2B39.js → agent-api-core-DFYLP1bF.js} +1 -1
  8. package/dist/chunks/config-store-CGrS8s6x.js +1 -0
  9. package/dist/chunks/{config-store-Br2PY4Tg.js → config-store-DOGtTJ1d.js} +2 -69
  10. package/dist/chunks/{contracts-DJqeCtR3.js → contracts-Ds_eevZs.js} +2 -12
  11. package/dist/chunks/{control-messages-DHDEMTLI.js → control-messages-Dgap3JRR.js} +1 -44
  12. package/dist/chunks/{main-ZpBLKI1h.js → main-DOZJniDn.js} +44 -456
  13. package/dist/chunks/{pair-cli-DW5mUBZa.js → pair-cli-PCXITdEd.js} +2 -2
  14. package/dist/chunks/{remote-config-DcmhRuRc.js → remote-config-DeWURqqr.js} +1 -1
  15. package/dist/chunks/{settings-cli-BnM9rg8B.js → settings-cli-xpR7vk9L.js} +4 -4
  16. package/dist/chunks/{settings-readout-core-2XunjdBA.js → settings-readout-core-C2mOk9Yz.js} +1 -1
  17. package/dist/chunks/{ssh-sign-cli-CmnA5lFM.js → ssh-sign-cli-rKiqiNem.js} +1 -1
  18. package/dist/client/assets/index-CuuOi3Bp.js +177 -0
  19. package/dist/client/assets/index-NhAGtpDY.css +2 -0
  20. package/dist/client/index.html +2 -3
  21. package/dist/server/index.js +1 -1
  22. package/package.json +2 -2
  23. package/dist/chunks/config-store-DwYjz6h1.js +0 -1
  24. package/dist/client/assets/index-CBGmkbVV.js +0 -176
  25. package/dist/client/assets/index-NhlaT6eP.css +0 -2
package/README.md CHANGED
@@ -6,11 +6,11 @@
6
6
  [![Node.js](https://img.shields.io/badge/node-%3E%3D22.18-brightgreen.svg)](https://nodejs.org)
7
7
  [![Platform: Windows | Linux | macOS](https://img.shields.io/badge/platform-Windows%20%7C%20Linux%20%7C%20macOS-0078d4)](https://github.com/johncwaters/glimmervoid)
8
8
 
9
- **Mission control for your coding agents. Run dozens of Claude Code, Codex and Grok sessions at once. See every one. Miss nothing.**
9
+ **Mission control that ships. Not a terminal multiplexer. Grids are for watching. This is for shipping.**
10
10
 
11
11
  [glimmervoid.dev](https://glimmervoid.dev)
12
12
 
13
- Glimmervoid is one browser dashboard for all your coding agents: a live terminal for every session, exact status instead of a guess, a notification the moment an agent needs you, and a git worktree per agent that you review and merge from the same page.
13
+ Glimmervoid takes a feature from start to finish. Every agent works in its own git worktree, status comes from the agent's own hooks, and the one session that needs you comes to the front. Review and merge from the same page.
14
14
 
15
15
  It is an orchestrator, not a harness. Claude Code, Codex and Grok run unmodified, as real processes in real terminals on your own machine. No cloud service, no account. Glimmervoid is developed inside Glimmervoid.
16
16
 
@@ -4,7 +4,7 @@ import { i as errorText } from "../chunks/text-DoirglWV.js";
4
4
  import { a as packageRoot } from "../chunks/runtime-paths-BkeftE60.js";
5
5
  import { t as AGENT_API_VERBS } from "../chunks/session-3eSP3t1i.js";
6
6
  import { i as execSync } from "../chunks/child-process-safe-D4hyVIXj.js";
7
- import { r as agentCommandHelpLines } from "../chunks/agent-api-core-CP4J2B39.js";
7
+ import { r as agentCommandHelpLines } from "../chunks/agent-api-core-DFYLP1bF.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-DqagvnAZ.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-DW5mUBZa.js");
68
+ const { runPairCli } = await import("../chunks/pair-cli-PCXITdEd.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-BnM9rg8B.js");
76
+ const { runSettingsCli } = await import("../chunks/settings-cli-xpR7vk9L.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-CmnA5lFM.js");
84
+ const { runSshSignCli } = await import("../chunks/ssh-sign-cli-rKiqiNem.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-Cn-g_ej_.js");
90
+ const { runAgentApiCli } = await import("../chunks/agent-api-cli-DWVeqlLu.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-Cn-g_ej_.js");
104
+ const { sessionLimitsHelpLines } = await import("../chunks/agent-api-cli-DWVeqlLu.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-DwYjz6h1.js");
161
+ const { loadConfigFile } = await import("../chunks/config-store-CGrS8s6x.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-DzClvFt5.js");
237
+ const { listAgentIds, describeAgentResolvability, setCustomAgents } = await import("../chunks/adapters-DeqV4wUv.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 { o as relayPath } from "./runtime-paths-BkeftE60.js";
2
2
  import { Bt as shortSha$1, Rt as FULL_SHA_RE } from "./session-3eSP3t1i.js";
3
3
  import { n as execFileAsync, r as execFileSync } from "./child-process-safe-D4hyVIXj.js";
4
- import { a as InstallFlavor } from "./control-messages-DHDEMTLI.js";
4
+ import { i as InstallFlavor } from "./control-messages-Dgap3JRR.js";
5
5
  import { o as supervisionLine } from "./session-routes-B2oSzmQn.js";
6
6
  import { n as resolveAgentCommand, t as buildAgentSpawnCommand } from "./spawn-command-Cc40FiZI.js";
7
7
  import { c as textOr, s as rawTextOr } from "./coerce-NSst8oRP.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-DwrAcNHC.js";
10
10
  import { t as buildHookCommand } from "./hook-command-core-qTNK-xMF.js";
11
- import "./contracts-DJqeCtR3.js";
11
+ import "./contracts-Ds_eevZs.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-CWIHOfVo.js";
1
+ export { a as describeAgentResolvability, l as listAgentIds, f as setCustomAgents } from "./adapters-Bga1N6Ie.js";
@@ -1 +1 @@
1
- export { t as askAgentApi, r as runAgentApiCli, i as sessionLimitsHelpLines } from "./agent-api-cli-2FKWf5jj.js";
1
+ export { t as askAgentApi, r as runAgentApiCli, i as sessionLimitsHelpLines } from "./agent-api-cli-YvQ8WxHA.js";
@@ -1,7 +1,7 @@
1
1
  import { t as errorCode } from "./text-DoirglWV.js";
2
2
  import { n as AGENT_URL_ENV, s as AgentLimitsReply } from "./session-3eSP3t1i.js";
3
3
  import { i as formatSessionLimits } from "./session-routes-B2oSzmQn.js";
4
- import { f as isAgentApiVerb, t as AGENT_COMMAND_HELP } from "./agent-api-core-CP4J2B39.js";
4
+ import { f as isAgentApiVerb, t as AGENT_COMMAND_HELP } from "./agent-api-core-DFYLP1bF.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 AgentCloseRequest, c as AgentPullRequestRequest, f as AgentSettingsRequest, i as AgentAttentionRequest, l as AgentReadRequest, o as AgentEditRequest, p as AgentSpawnRequest, t as AGENT_API_VERBS, u as AgentSendRequest } from "./session-3eSP3t1i.js";
2
- import { c as pullRequestKeyFromReference } from "./control-messages-DHDEMTLI.js";
2
+ import { s as pullRequestKeyFromReference } from "./control-messages-Dgap3JRR.js";
3
3
  import { n as NO_OWN_WORKTREE_REASON, t as COMMAND_ROUTES } from "./session-routes-B2oSzmQn.js";
4
4
  import crypto from "node:crypto";
5
5
  var MAX_SPAWNS_IN_FLIGHT = 1;
@@ -0,0 +1 @@
1
+ export { s as loadConfigFile } from "./config-store-DOGtTJ1d.js";
@@ -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 { B as PORT_RANGE, F as FLYING_ANIMALS_GAP_RANGE, I as FLYING_ANIMALS_SCALE_RANGE, L as KEEP_MERGEABLE_TIMEOUT_MINUTES_RANGE, M as CHANGE_MAP_NARRATOR_TIMEOUT_RANGE, N as FLYING_ANIMALS_DEFAULTS, P as FLYING_ANIMALS_DURATION_RANGE, Q as POSTHOG_TRAFFIC_MULTIPLIER_RANGE, R as MEMORY_RESERVE_MB_RANGE, U as POSTHOG_FIX_TIMEOUT_RANGE, V as POSITIVE_NUMBER_RANGE, Y as POSTHOG_TRAFFIC_BASELINE_RANGE, Z as POSTHOG_TRAFFIC_MIN_USERS_RANGE, at as USAGE_SCAN_INTERVAL_RANGE, et as REPLAY_BUFFER_KB_RANGE, ft as WORKFLOWS_MAX_ACTIONS_PER_POLL_RANGE, it as USAGE_RETAIN_DAYS_RANGE, nt as USAGE_BUDGET_RANGE, pt as WORKFLOWS_MAX_CONCURRENT_SESSIONS_RANGE, rt as USAGE_INTEGER_RANGES, tt as TASK_TITLE_TIMEOUT_RANGE, z as NON_NEGATIVE_NUMBER_RANGE } from "./control-messages-DHDEMTLI.js";
3
+ import { $ as TASK_TITLE_TIMEOUT_RANGE, F as KEEP_MERGEABLE_TIMEOUT_MINUTES_RANGE, I as MEMORY_RESERVE_MB_RANGE, L as NON_NEGATIVE_NUMBER_RANGE, M as FLYING_ANIMALS_DURATION_RANGE, N as FLYING_ANIMALS_GAP_RANGE, P as FLYING_ANIMALS_SCALE_RANGE, Q as REPLAY_BUFFER_KB_RANGE, R as PORT_RANGE, V as POSTHOG_FIX_TIMEOUT_RANGE, X as POSTHOG_TRAFFIC_MULTIPLIER_RANGE, Y as POSTHOG_TRAFFIC_MIN_USERS_RANGE, dt as WORKFLOWS_MAX_CONCURRENT_SESSIONS_RANGE, et as USAGE_BUDGET_RANGE, j as FLYING_ANIMALS_DEFAULTS, nt as USAGE_RETAIN_DAYS_RANGE, q as POSTHOG_TRAFFIC_BASELINE_RANGE, rt as USAGE_SCAN_INTERVAL_RANGE, tt as USAGE_INTEGER_RANGES, ut as WORKFLOWS_MAX_ACTIONS_PER_POLL_RANGE, z as POSITIVE_NUMBER_RANGE } from "./control-messages-Dgap3JRR.js";
4
4
  import { n as glimmervoidHomeDir$1, t as decideConfigPath } from "./config-path-core-DFt-TemS.js";
5
5
  import { n as isRecord } from "./coerce-NSst8oRP.js";
6
6
  import { d as writeJsonAtomicSync, f as writeTextAtomic, p as writeTextAtomicSync } from "./json-file-DFCTvPjj.js";
7
- import { C as POST_TURN_CHECK_MODES, D as normalizeLegacyConfigNumbers, S as CHANGE_MAP_NARRATOR_ENGINES, T as USAGE_COST_MODES, b as configIssueMessage, f as AGENT_ID_SHAPE_MESSAGE, h as Config, p as BUILTIN_AGENT_IDS, s as FeatureFlagsResponse, u as TELEMETRY_KILL_SWITCH_FLAG, v as RUNTIME_CONFIG_SCALAR_KEYS, w as UPDATE_CHANNELS, x as BranchGcFileSettings } from "./contracts-DJqeCtR3.js";
7
+ import { C as UPDATE_CHANNELS, E as normalizeLegacyConfigNumbers, S as POST_TURN_CHECK_MODES, b as configIssueMessage, f as AGENT_ID_SHAPE_MESSAGE, h as Config, p as BUILTIN_AGENT_IDS, s as FeatureFlagsResponse, u as TELEMETRY_KILL_SWITCH_FLAG, v as RUNTIME_CONFIG_SCALAR_KEYS, w as USAGE_COST_MODES, x as BranchGcFileSettings } from "./contracts-Ds_eevZs.js";
8
8
  import fs from "node:fs";
9
9
  import path from "node:path";
10
10
  import os from "node:os";
@@ -1789,50 +1789,6 @@ var SECTIONS = Object.freeze([
1789
1789
  ...MACHINE_NOW
1790
1790
  }]
1791
1791
  },
1792
- {
1793
- id: "lanes-change-map",
1794
- level: "lanes",
1795
- title: "Change map",
1796
- description: "Optional model narration for deterministic change facts.",
1797
- legacyIds: ["change-map"],
1798
- settings: [
1799
- {
1800
- id: "change-map-narrator-enabled",
1801
- path: "changeMap.narrator.enabled",
1802
- title: "Enable narration",
1803
- description: "Add cited model claims to the change map.",
1804
- control: "toggle",
1805
- keywords: ["review", "claims"],
1806
- defaultValue: false,
1807
- ...MACHINE_NOW
1808
- },
1809
- {
1810
- id: "change-map-narrator-engine",
1811
- path: "changeMap.narrator.engine",
1812
- title: "Narrator engine",
1813
- description: "CLI used to generate change map claims.",
1814
- control: "select",
1815
- options: capitalizedOptions(CHANGE_MAP_NARRATOR_ENGINES),
1816
- keywords: ["claude", "codex"],
1817
- defaultValue: "claude",
1818
- ...MACHINE_NOW
1819
- },
1820
- {
1821
- id: "change-map-narrator-model",
1822
- path: "changeMap.narrator.model",
1823
- title: "Narrator model",
1824
- description: "Blank uses the engine default: haiku for Claude, the configured Codex model for Codex.",
1825
- control: "text",
1826
- keywords: [
1827
- "claude",
1828
- "codex",
1829
- "haiku"
1830
- ],
1831
- defaultValue: "",
1832
- ...MACHINE_NOW
1833
- }
1834
- ]
1835
- },
1836
1792
  {
1837
1793
  id: "machine-privacy",
1838
1794
  level: "machine",
@@ -2477,21 +2433,6 @@ var FILE_ONLY_SETTINGS = Object.freeze([
2477
2433
  fileOnlyReason: TUNING_KNOB,
2478
2434
  ...FILE_ONLY
2479
2435
  },
2480
- {
2481
- id: "file-change-map-narrator-timeout",
2482
- path: "changeMap.narrator.timeoutSeconds",
2483
- title: "Narrator timeout",
2484
- group: "lanes-change-map",
2485
- description: "Maximum time allowed for one narration.",
2486
- control: "number",
2487
- range: CHANGE_MAP_NARRATOR_TIMEOUT_RANGE,
2488
- unit: SECONDS,
2489
- keywords: ["deadline", "narration"],
2490
- defaultValue: 90,
2491
- takesEffect: "now",
2492
- fileOnlyReason: TUNING_KNOB,
2493
- ...FILE_ONLY
2494
- },
2495
2436
  {
2496
2437
  id: "file-visions-quiet-delay",
2497
2438
  path: "visions.dispatch.quietMs",
@@ -3417,12 +3358,6 @@ var DEFAULT_CONFIG = {
3417
3358
  minIntervalSeconds: 60,
3418
3359
  timeoutSeconds: 60
3419
3360
  } },
3420
- changeMap: { narrator: {
3421
- enabled: false,
3422
- engine: "claude",
3423
- model: "",
3424
- timeoutSeconds: 90
3425
- } },
3426
3361
  guardrails: {
3427
3362
  unguardedRepos: [],
3428
3363
  blockedPaths: [],
@@ -3872,7 +3807,6 @@ function createConfigStore({ settingsDefaults } = {}) {
3872
3807
  repoRoots: config.repoRoots,
3873
3808
  repositoryRootCaseInsensitive: equalsIgnoringCaseOnWindows("root", "ROOT"),
3874
3809
  taskTitle: pickBlock("taskTitle", config.taskTitle ?? DEFAULT_CONFIG.taskTitle),
3875
- changeMap: pickBlock("changeMap", config.changeMap),
3876
3810
  branchGc: pickBlock("branchGc", config.branchGc),
3877
3811
  postTurnChecks: pickBlock("postTurnChecks", config.postTurnChecks ?? DEFAULT_CONFIG.postTurnChecks),
3878
3812
  visions: pickBlock("visions", config.visions),
@@ -3920,7 +3854,6 @@ function createConfigStore({ settingsDefaults } = {}) {
3920
3854
  if (newConfig.worktreeShare == null) delete config.worktreeShare;
3921
3855
  if (newConfig.worktreeShare != null) config.worktreeShare = newConfig.worktreeShare;
3922
3856
  if (newConfig.taskTitle != null) config.taskTitle = newConfig.taskTitle;
3923
- if (newConfig.changeMap != null) config.changeMap = newConfig.changeMap;
3924
3857
  if (newConfig.branchGc != null) config.branchGc = resolveBranchGc(newConfig.branchGc);
3925
3858
  if (newConfig.visions != null) config.visions = newConfig.visions;
3926
3859
  if (newConfig.github != null) config.github = newConfig.github;
@@ -1,5 +1,5 @@
1
1
  import { R as TaskTitle, Wt as repoParts, ot as SessionPrLinks } from "./session-3eSP3t1i.js";
2
- import { $ as POSTHOG_TRANSIENT_RECURRENCE_RANGE, A as BRANCH_GC_INTERVAL_MS_RANGE, B as PORT_RANGE, D as WorkflowsSettings, G as POSTHOG_INVESTIGATION_TIMEOUT_RANGE, H as POSTHOG_ESCALATION_RANGE, J as POSTHOG_RECURRENCE_WINDOW_RANGE, K as POSTHOG_MAX_CONCURRENT_RANGE, L as KEEP_MERGEABLE_TIMEOUT_MINUTES_RANGE, M as CHANGE_MAP_NARRATOR_TIMEOUT_RANGE, O as WorkflowsSettingsUpdate, Q as POSTHOG_TRAFFIC_MULTIPLIER_RANGE, R as MEMORY_RESERVE_MB_RANGE, U as POSTHOG_FIX_TIMEOUT_RANGE, V as POSITIVE_NUMBER_RANGE, W as POSTHOG_INTERVAL_RANGE, X as POSTHOG_TRAFFIC_COOLDOWN_RANGE, Y as POSTHOG_TRAFFIC_BASELINE_RANGE, Z as POSTHOG_TRAFFIC_MIN_USERS_RANGE, ct as VISIONS_DISPATCH_TIMEOUT_RANGE, dt as VISIONS_QUIET_MS_RANGE, et as REPLAY_BUFFER_KB_RANGE, j as BRANCH_GC_STALE_DAYS_RANGE, lt as VISIONS_INTENT_THREAD_TTL_MS_RANGE, o as OPERATOR_ACTIONS_BY_SURFACE, ot as VISIONS_ACTIVITY_MAX_PER_HOUR_RANGE, q as POSTHOG_MIN_USERS_RANGE, r as DASHBOARD_VIEWS, rt as USAGE_INTEGER_RANGES, s as OPERATOR_SURFACES, st as VISIONS_COOLDOWN_MS_RANGE, tt as TASK_TITLE_TIMEOUT_RANGE, ut as VISIONS_MAX_PER_HOUR_RANGE } from "./control-messages-DHDEMTLI.js";
2
+ import { $ as TASK_TITLE_TIMEOUT_RANGE, A as BRANCH_GC_STALE_DAYS_RANGE, B as POSTHOG_ESCALATION_RANGE, D as WorkflowsSettingsUpdate, E as WorkflowsSettings, F as KEEP_MERGEABLE_TIMEOUT_MINUTES_RANGE, G as POSTHOG_MIN_USERS_RANGE, H as POSTHOG_INTERVAL_RANGE, I as MEMORY_RESERVE_MB_RANGE, J as POSTHOG_TRAFFIC_COOLDOWN_RANGE, K as POSTHOG_RECURRENCE_WINDOW_RANGE, Q as REPLAY_BUFFER_KB_RANGE, R as PORT_RANGE, U as POSTHOG_INVESTIGATION_TIMEOUT_RANGE, V as POSTHOG_FIX_TIMEOUT_RANGE, W as POSTHOG_MAX_CONCURRENT_RANGE, X as POSTHOG_TRAFFIC_MULTIPLIER_RANGE, Y as POSTHOG_TRAFFIC_MIN_USERS_RANGE, Z as POSTHOG_TRANSIENT_RECURRENCE_RANGE, a as OPERATOR_ACTIONS_BY_SURFACE, at as VISIONS_COOLDOWN_MS_RANGE, ct as VISIONS_MAX_PER_HOUR_RANGE, it as VISIONS_ACTIVITY_MAX_PER_HOUR_RANGE, k as BRANCH_GC_INTERVAL_MS_RANGE, lt as VISIONS_QUIET_MS_RANGE, o as OPERATOR_SURFACES, ot as VISIONS_DISPATCH_TIMEOUT_RANGE, q as POSTHOG_TRAFFIC_BASELINE_RANGE, r as DASHBOARD_VIEWS, st as VISIONS_INTENT_THREAD_TTL_MS_RANGE, tt as USAGE_INTEGER_RANGES, z as POSITIVE_NUMBER_RANGE } from "./control-messages-Dgap3JRR.js";
3
3
  import { n as isRecord } from "./coerce-NSst8oRP.js";
4
4
  import path from "node:path";
5
5
  import { z } from "zod";
@@ -120,15 +120,8 @@ var optionalWholeNumber = (field, range) => optionalNumber(field, range).unwrap(
120
120
  var optionalInteger = (field, range) => z.number({ error: `${field} must be an integer between ${range.min} and ${range.max}` }).int({ error: `${field} must be an integer between ${range.min} and ${range.max}` }).min(range.min, { error: `${field} must be an integer between ${range.min} and ${range.max}` }).max(range.max, { error: `${field} must be an integer between ${range.min} and ${range.max}` }).optional();
121
121
  var optionalObject = (field, shape) => z.object(shape, { error: `${field} must be an object` }).nullable().optional();
122
122
  var optionalLooseObject = (field) => z.object({}, { error: `${field} must be an object` }).passthrough().nullable().optional();
123
- var CHANGE_MAP_NARRATOR_ENGINES = Object.freeze(["claude", "codex"]);
124
123
  var UPDATE_CHANNELS = Object.freeze(["release", "main"]);
125
124
  var POST_TURN_CHECK_MODES = Object.freeze(["report", "fix"]);
126
- var ChangeMapSettings = optionalObject("changeMap", { narrator: optionalObject("changeMap.narrator", {
127
- enabled: optionalBoolean("changeMap.narrator.enabled"),
128
- engine: z.enum(CHANGE_MAP_NARRATOR_ENGINES, { error: `changeMap.narrator.engine must be one of ${CHANGE_MAP_NARRATOR_ENGINES.join(", ")}` }).optional(),
129
- model: optionalString("changeMap.narrator.model", true),
130
- timeoutSeconds: optionalInteger("changeMap.narrator.timeoutSeconds", CHANGE_MAP_NARRATOR_TIMEOUT_RANGE)
131
- }) });
132
125
  var TaskTitleSettings = z.object({ refiner: z.object({
133
126
  enabled: optionalBoolean("taskTitle.refiner.enabled"),
134
127
  model: optionalString("taskTitle.refiner.model", true),
@@ -274,7 +267,6 @@ var createBrowserConfigShape = (isAbsolutePath) => ({
274
267
  worktreeRoot: optionalString("worktreeRoot"),
275
268
  worktreeShare: z.array(z.string()).optional(),
276
269
  repoRoots: z.array(z.string()).optional(),
277
- changeMap: ChangeMapSettings,
278
270
  taskTitle: TaskTitleSettings,
279
271
  branchGc: BranchGcSettings,
280
272
  postTurnChecks: PostTurnChecksSettings,
@@ -442,7 +434,6 @@ var ProjectConfig = z.object({
442
434
  }).passthrough();
443
435
  var FILE_CONFIG_SHAPE = {
444
436
  ...BROWSER_CONFIG_SHAPE,
445
- changeMap: ChangeMapSettings,
446
437
  branchGc: optionalLooseObject("branchGc"),
447
438
  coder: CoderSettings,
448
439
  visions: optionalLooseObject("visions"),
@@ -512,7 +503,6 @@ var Config = z.object({
512
503
  }
513
504
  });
514
505
  var CONFIG_BLOCK_KEYS = Object.freeze([
515
- "changeMap",
516
506
  "taskTitle",
517
507
  "branchGc",
518
508
  "postTurnChecks",
@@ -838,4 +828,4 @@ z.object({
838
828
  projects: z.array(z.string()).optional()
839
829
  }).passthrough();
840
830
  //#endregion
841
- export { POST_TURN_CHECK_MODES as C, normalizeLegacyConfigNumbers as D, USAGE_VENDOR_KEYS as E, CHANGE_MAP_NARRATOR_ENGINES as S, USAGE_COST_MODES as T, PersistedTaskTitle as _, parseDataClientMessage as a, configIssueMessage as b, PendingCrashReport as c, TelemetryState as d, AGENT_ID_SHAPE_MESSAGE as f, ConfigUpdate as g, Config as h, parseDataAttachHistory as i, TELEMETRY_EVENT_SCHEMAS as l, BrowserConfig as m, HookEnvelope as n, DashboardTelemetryReport as o, BUILTIN_AGENT_IDS as p, DEEP_HISTORY_SCROLLBACK_LINES as r, FeatureFlagsResponse as s, HTTP_URL_RE as t, TELEMETRY_KILL_SWITCH_FLAG as u, RUNTIME_CONFIG_SCALAR_KEYS as v, UPDATE_CHANNELS as w, BranchGcFileSettings as x, TASK_TITLE_SOURCE_PRIORITY as y };
831
+ export { UPDATE_CHANNELS as C, normalizeLegacyConfigNumbers as E, POST_TURN_CHECK_MODES as S, USAGE_VENDOR_KEYS as T, PersistedTaskTitle as _, parseDataClientMessage as a, configIssueMessage as b, PendingCrashReport as c, TelemetryState as d, AGENT_ID_SHAPE_MESSAGE as f, ConfigUpdate as g, Config as h, parseDataAttachHistory as i, TELEMETRY_EVENT_SCHEMAS as l, BrowserConfig as m, HookEnvelope as n, DashboardTelemetryReport as o, BUILTIN_AGENT_IDS as p, DEEP_HISTORY_SCROLLBACK_LINES as r, FeatureFlagsResponse as s, HTTP_URL_RE as t, TELEMETRY_KILL_SWITCH_FLAG as u, RUNTIME_CONFIG_SCALAR_KEYS as v, USAGE_COST_MODES as w, BranchGcFileSettings as x, TASK_TITLE_SOURCE_PRIORITY as y };
@@ -365,28 +365,11 @@ var RepoChangeMap = z.strictObject({
365
365
  links: z.array(CrossRepoLink),
366
366
  error: z.string().nullable()
367
367
  });
368
- var NarrativeClaim = z.strictObject({
369
- text: z.string().min(1).max(600),
370
- factIds: z.array(factId).min(1)
371
- });
372
- var ChangeNarrative = z.strictObject({
373
- factsHash: z.string().min(1),
374
- model: z.string().nullable(),
375
- claims: z.array(NarrativeClaim).max(12)
376
- });
377
- var NarratorState = z.enum([
378
- "disabled",
379
- "pending",
380
- "ready",
381
- "failed"
382
- ]);
383
368
  var ChangeMap = z.strictObject({
384
369
  sessionId: z.string().min(1),
385
370
  sig: z.string().nullable(),
386
371
  generatedAt: z.number().finite(),
387
372
  repos: z.array(RepoChangeMap),
388
- narrative: ChangeNarrative.nullable(),
389
- narratorState: NarratorState,
390
373
  error: z.string().min(1).optional()
391
374
  });
392
375
  var CoherenceJournalKind = z.enum([
@@ -775,10 +758,6 @@ var USAGE_INTEGER_RANGES = Object.freeze({
775
758
  warehouseRetainDays: USAGE_WAREHOUSE_RETAIN_DAYS_RANGE,
776
759
  sessionBlockHours: USAGE_SESSION_BLOCK_HOURS_RANGE
777
760
  });
778
- var CHANGE_MAP_NARRATOR_TIMEOUT_RANGE = Object.freeze({
779
- min: 15,
780
- max: 600
781
- });
782
761
  var KEEP_MERGEABLE_TIMEOUT_MINUTES_RANGE = Object.freeze({
783
762
  min: 5,
784
763
  max: 120
@@ -796,7 +775,6 @@ Object.freeze({
796
775
  FLYING_ANIMALS_GAP_RANGE,
797
776
  FLYING_ANIMALS_DURATION_RANGE,
798
777
  FLYING_ANIMALS_SCALE_RANGE,
799
- CHANGE_MAP_NARRATOR_TIMEOUT_RANGE,
800
778
  KEEP_MERGEABLE_TIMEOUT_MINUTES_RANGE,
801
779
  PORT_RANGE,
802
780
  POSTHOG_ESCALATION_RANGE,
@@ -1384,15 +1362,6 @@ var SessionCardFields = z.object({
1384
1362
  ownerId: sessionId.optional(),
1385
1363
  linkedPrs: z.array(LinkedPr).optional()
1386
1364
  });
1387
- var DIFF_ANNOTATION_NOTE_MAX_CHARS = 1e3;
1388
- var DIFF_ANNOTATION_PATH_RE = new RegExp(`^[^${String.fromCharCode(0)}-${String.fromCharCode(31)}${String.fromCharCode(127)}-${String.fromCharCode(159)}]+$`);
1389
- var DiffAnnotation = z.strictObject({
1390
- section: z.enum(["committed", "uncommitted"]),
1391
- path: z.string().min(1).max(400).regex(DIFF_ANNOTATION_PATH_RE),
1392
- line: z.number().int().positive(),
1393
- side: z.enum(["old", "new"]),
1394
- note: z.string().min(1).max(DIFF_ANNOTATION_NOTE_MAX_CHARS)
1395
- });
1396
1365
  var CONTROL_FRAME_MAX_BYTES = 4096 + 2 * (PLAN_BODY_CAP_BYTES + PLAN_FEEDBACK_MAX_CHARS + 80 * PLAN_COMMENT_MAX_CHARS);
1397
1366
  var UpdateApplyRefusal = z.object({
1398
1367
  reason: z.string(),
@@ -1657,11 +1626,6 @@ var clientVariants = [
1657
1626
  force: z.unknown().optional()
1658
1627
  }),
1659
1628
  loose("request-hooks-report", { requestId }),
1660
- loose("send-diff-annotations", {
1661
- id: sessionId,
1662
- annotations: z.array(DiffAnnotation).min(1).max(50),
1663
- requestId
1664
- }),
1665
1629
  loose("save-hook", {
1666
1630
  hook: z.record(z.string(), z.unknown()),
1667
1631
  requestId
@@ -1767,7 +1731,6 @@ Object.freeze([
1767
1731
  "session-diff",
1768
1732
  "session-diff-error",
1769
1733
  "change-map",
1770
- "send-diff-annotations-result",
1771
1734
  "branch-sync-status",
1772
1735
  "session-changed",
1773
1736
  "post-turn-result",
@@ -2018,12 +1981,6 @@ var serverVariants = [
2018
1981
  id: sessionId,
2019
1982
  map: ChangeMap
2020
1983
  }),
2021
- loose("send-diff-annotations-result", {
2022
- requestId,
2023
- ok: z.boolean(),
2024
- error: optionalError,
2025
- pending: z.boolean().optional()
2026
- }),
2027
1984
  loose("branch-sync-status", {
2028
1985
  id: sessionId,
2029
1986
  branch: nullableString,
@@ -2396,4 +2353,4 @@ var serverVariants = [
2396
2353
  ];
2397
2354
  z.discriminatedUnion("type", serverVariants);
2398
2355
  //#endregion
2399
- export { POSTHOG_TRANSIENT_RECURRENCE_RANGE as $, BRANCH_GC_INTERVAL_MS_RANGE as A, planTitle as At, PORT_RANGE as B, GithubPrsFrame as C, PLAN_HOOK_EVENT as Ct, WorkflowsSettings as D, PlanDecision as Dt, WorkflowLabelName as E, PLAN_TOOL_NAME as Et, FLYING_ANIMALS_GAP_RANGE as F, IssuesSearchResponse as Ft, POSTHOG_INVESTIGATION_TIMEOUT_RANGE as G, POSTHOG_ESCALATION_RANGE as H, FLYING_ANIMALS_SCALE_RANGE as I, IssuesState as It, POSTHOG_RECURRENCE_WINDOW_RANGE as J, POSTHOG_MAX_CONCURRENT_RANGE as K, KEEP_MERGEABLE_TIMEOUT_MINUTES_RANGE as L, IssuesStatus as Lt, CHANGE_MAP_NARRATOR_TIMEOUT_RANGE as M, GithubIssueResponse as Mt, FLYING_ANIMALS_DEFAULTS as N, IssueKey as Nt, WorkflowsSettingsUpdate as O, PlanRevision as Ot, FLYING_ANIMALS_DURATION_RANGE as P, IssueUpdate as Pt, POSTHOG_TRAFFIC_MULTIPLIER_RANGE as Q, MEMORY_RESERVE_MB_RANGE as R, issuePullRequestStateFromGithub as Rt, GithubPrLightSearchNode as S, PLAN_BODY_CAP_BYTES as St, WorkflowCommentBody as T, PLAN_RESULT_HOOK_EVENT as Tt, POSTHOG_FIX_TIMEOUT_RANGE as U, POSITIVE_NUMBER_RANGE as V, POSTHOG_INTERVAL_RANGE as W, POSTHOG_TRAFFIC_COOLDOWN_RANGE as X, POSTHOG_TRAFFIC_BASELINE_RANGE as Y, POSTHOG_TRAFFIC_MIN_USERS_RANGE as Z, MergedPrListing as _, TraceCheckpoint as _t, InstallFlavor as a, USAGE_SCAN_INTERVAL_RANGE as at, GithubPrDetailNode as b, ChangeMap as bt, pullRequestKeyFromReference as c, VISIONS_DISPATCH_TIMEOUT_RANGE as ct, BenchmarkId as d, VISIONS_QUIET_MS_RANGE as dt, REPLAY_BUFFER_KB_RANGE as et, BenchmarkJudgement as f, WORKFLOWS_MAX_ACTIONS_PER_POLL_RANGE as ft, CommitComparison as g, MAX_RAW_LINE_CHARS as gt, BenchmarkSuite as h, SessionSetup as ht, DIFF_ANNOTATION_NOTE_MAX_CHARS as i, USAGE_RETAIN_DAYS_RANGE as it, BRANCH_GC_STALE_DAYS_RANGE as j, GithubIssuePullRequestsRepository as jt, WorkflowsState as k, parseExitPlanModeHookPayload as kt, BenchmarkActionRequest as l, VISIONS_INTENT_THREAD_TTL_MS_RANGE as lt, BenchmarkStatus as m, UpdateJournal as mt, ClientMessage as n, USAGE_BUDGET_RANGE as nt, OPERATOR_ACTIONS_BY_SURFACE as o, VISIONS_ACTIVITY_MAX_PER_HOUR_RANGE as ot, BenchmarkRun as p, WORKFLOWS_MAX_CONCURRENT_SESSIONS_RANGE as pt, POSTHOG_MIN_USERS_RANGE as q, DASHBOARD_VIEWS as r, USAGE_INTEGER_RANGES as rt, OPERATOR_SURFACES as s, VISIONS_COOLDOWN_MS_RANGE as st, CONTROL_FRAME_MAX_BYTES as t, TASK_TITLE_TIMEOUT_RANGE as tt, BenchmarkCase as u, VISIONS_MAX_PER_HOUR_RANGE as ut, MinedPrReviewData as v, TraceRecord as vt, comparablePrKey as w, PLAN_HOOK_OUTPUT_MAX_CHARS as wt, GithubPrKey as x, changeMapFactId as xt, PrCheckoutCaseInput as y, CoherenceJournalOutput as yt, NON_NEGATIVE_NUMBER_RANGE as z };
2356
+ export { TASK_TITLE_TIMEOUT_RANGE as $, BRANCH_GC_STALE_DAYS_RANGE as A, GithubIssueResponse as At, POSTHOG_ESCALATION_RANGE as B, comparablePrKey as C, PLAN_RESULT_HOOK_EVENT as Ct, WorkflowsSettingsUpdate as D, parseExitPlanModeHookPayload as Dt, WorkflowsSettings as E, PlanRevision as Et, KEEP_MERGEABLE_TIMEOUT_MINUTES_RANGE as F, IssuesStatus as Ft, POSTHOG_MIN_USERS_RANGE as G, POSTHOG_INTERVAL_RANGE as H, MEMORY_RESERVE_MB_RANGE as I, issuePullRequestStateFromGithub as It, POSTHOG_TRAFFIC_COOLDOWN_RANGE as J, POSTHOG_RECURRENCE_WINDOW_RANGE as K, NON_NEGATIVE_NUMBER_RANGE as L, FLYING_ANIMALS_DURATION_RANGE as M, IssueUpdate as Mt, FLYING_ANIMALS_GAP_RANGE as N, IssuesSearchResponse as Nt, WorkflowsState as O, planTitle as Ot, FLYING_ANIMALS_SCALE_RANGE as P, IssuesState as Pt, REPLAY_BUFFER_KB_RANGE as Q, PORT_RANGE as R, GithubPrsFrame as S, PLAN_HOOK_OUTPUT_MAX_CHARS as St, WorkflowLabelName as T, PlanDecision as Tt, POSTHOG_INVESTIGATION_TIMEOUT_RANGE as U, POSTHOG_FIX_TIMEOUT_RANGE as V, POSTHOG_MAX_CONCURRENT_RANGE as W, POSTHOG_TRAFFIC_MULTIPLIER_RANGE as X, POSTHOG_TRAFFIC_MIN_USERS_RANGE as Y, POSTHOG_TRANSIENT_RECURRENCE_RANGE as Z, MinedPrReviewData as _, CoherenceJournalOutput as _t, OPERATOR_ACTIONS_BY_SURFACE as a, VISIONS_COOLDOWN_MS_RANGE as at, GithubPrKey as b, PLAN_BODY_CAP_BYTES as bt, BenchmarkActionRequest as c, VISIONS_MAX_PER_HOUR_RANGE as ct, BenchmarkJudgement as d, WORKFLOWS_MAX_CONCURRENT_SESSIONS_RANGE as dt, USAGE_BUDGET_RANGE as et, BenchmarkRun as f, UpdateJournal as ft, MergedPrListing as g, TraceRecord as gt, CommitComparison as h, TraceCheckpoint as ht, InstallFlavor as i, VISIONS_ACTIVITY_MAX_PER_HOUR_RANGE as it, FLYING_ANIMALS_DEFAULTS as j, IssueKey as jt, BRANCH_GC_INTERVAL_MS_RANGE as k, GithubIssuePullRequestsRepository as kt, BenchmarkCase as l, VISIONS_QUIET_MS_RANGE as lt, BenchmarkSuite as m, MAX_RAW_LINE_CHARS as mt, ClientMessage as n, USAGE_RETAIN_DAYS_RANGE as nt, OPERATOR_SURFACES as o, VISIONS_DISPATCH_TIMEOUT_RANGE as ot, BenchmarkStatus as p, SessionSetup as pt, POSTHOG_TRAFFIC_BASELINE_RANGE as q, DASHBOARD_VIEWS as r, USAGE_SCAN_INTERVAL_RANGE as rt, pullRequestKeyFromReference as s, VISIONS_INTENT_THREAD_TTL_MS_RANGE as st, CONTROL_FRAME_MAX_BYTES as t, USAGE_INTEGER_RANGES as tt, BenchmarkId as u, WORKFLOWS_MAX_ACTIONS_PER_POLL_RANGE as ut, PrCheckoutCaseInput as v, ChangeMap as vt, WorkflowCommentBody as w, PLAN_TOOL_NAME as wt, GithubPrLightSearchNode as x, PLAN_HOOK_EVENT as xt, GithubPrDetailNode as y, changeMapFactId as yt, POSITIVE_NUMBER_RANGE as z };