glimmervoid 0.44.1 → 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.
Files changed (163) hide show
  1. package/README.md +1 -1
  2. package/dist/bin/glimmervoid.js +8 -8
  3. package/dist/chunks/{adapters-B2IgKmuZ.js → adapters-BGuI5U_-.js} +1 -1
  4. package/dist/chunks/{adapters-BsoXEvlZ.js → adapters-D99c4zCx.js} +2 -2
  5. package/dist/chunks/{agent-api-cli-DIl92JjQ.js → agent-api-cli-DIGH1v3_.js} +1 -1
  6. package/dist/chunks/{agent-api-cli-B-QxkZAQ.js → agent-api-cli-DdrR2vnB.js} +1 -1
  7. package/dist/chunks/{agent-api-core-BCFplxXu.js → agent-api-core-D49OzKho.js} +2 -2
  8. package/dist/chunks/{config-Dh4e-Mkv.js → config-BLeRKmn9.js} +21 -2
  9. package/dist/chunks/{config-store-CEsetno2.js → config-store-CXLnauAa.js} +2 -2
  10. package/dist/chunks/config-store-DlaaBY9p.js +1 -0
  11. package/dist/chunks/{contracts-dj-GFptp.js → contracts-CucdticH.js} +19 -10
  12. package/dist/chunks/{main-CA3ONCUS.js → main-CX9CkTDx.js} +408 -44
  13. package/dist/chunks/{pair-cli-CWHMbInF.js → pair-cli-BPyh48--.js} +2 -2
  14. package/dist/chunks/{remote-config-CtcoO10O.js → remote-config-B0zBDBak.js} +1 -1
  15. package/dist/chunks/{settings-cli-DGOkkmW-.js → settings-cli-DzIasX94.js} +4 -4
  16. package/dist/chunks/{settings-readout-core-BVb6tTLq.js → settings-readout-core-BOv6tqdK.js} +1 -1
  17. package/dist/chunks/{ssh-sign-cli-BdvvBKkj.js → ssh-sign-cli-C_QYhDvI.js} +1 -1
  18. package/dist/client/assets/action-status-DrMQzohk.js +1 -0
  19. package/dist/client/assets/action-status-DrMQzohk.js.br +0 -0
  20. package/dist/client/assets/benchmark-panel-D09qvrAY.js +1 -0
  21. package/dist/client/assets/benchmark-panel-D09qvrAY.js.br +0 -0
  22. package/dist/client/assets/dom-helpers-CZ8NZKxw.js +4 -0
  23. package/dist/client/assets/dom-helpers-CZ8NZKxw.js.br +0 -0
  24. package/dist/client/assets/hooks-panel-R-L7DuIz.js +1 -0
  25. package/dist/client/assets/hooks-panel-R-L7DuIz.js.br +0 -0
  26. package/dist/client/assets/index-B7TvZo7W.js +173 -0
  27. package/dist/client/assets/index-B7TvZo7W.js.br +0 -0
  28. package/dist/client/assets/index-C3nOrTwM.css +2 -0
  29. package/dist/client/assets/index-C3nOrTwM.css.br +0 -0
  30. package/dist/client/assets/issues-panel-CyB4oq9Z.js +1 -0
  31. package/dist/client/assets/issues-panel-CyB4oq9Z.js.br +0 -0
  32. package/dist/client/assets/modal-M_mJ8--V.js +1 -0
  33. package/dist/client/assets/modal-M_mJ8--V.js.br +0 -0
  34. package/dist/client/assets/poll-ago-ItO-gOWA.js +1 -0
  35. package/dist/client/assets/poll-ago-ItO-gOWA.js.br +0 -0
  36. package/dist/client/assets/pr-queue-columns-Cu3-PADL.js +1 -0
  37. package/dist/client/assets/pr-queue-columns-Cu3-PADL.js.br +0 -0
  38. package/dist/client/assets/radar-panel-Cl3yPWed.js +1 -0
  39. package/dist/client/assets/radar-panel-Cl3yPWed.js.br +0 -0
  40. package/dist/client/assets/review-queue-panel-CVujzadC.js +2 -0
  41. package/dist/client/assets/review-queue-panel-CVujzadC.js.br +0 -0
  42. package/dist/client/assets/settings-panel-DW5An8lQ.js +3 -0
  43. package/dist/client/assets/settings-panel-DW5An8lQ.js.br +0 -0
  44. package/dist/client/assets/sprite-bee-DwCVghaj.png +0 -0
  45. package/dist/client/assets/sprite-cat-DRx9MYM3.png +0 -0
  46. package/dist/client/assets/sprite-cow-BX3Phf6B.png +0 -0
  47. package/dist/client/assets/sprite-deer-DwQYMzDV.png +0 -0
  48. package/dist/client/assets/sprite-dragon-CTIHOQJ3.png +0 -0
  49. package/dist/client/assets/sprite-fox-BI43RV3z.png +0 -0
  50. package/dist/client/assets/sprite-frog-CwGTpt-c.png +0 -0
  51. package/dist/client/assets/sprite-giraffe-DwM3MmKG.png +0 -0
  52. package/dist/client/assets/sprite-hamster-WN4q03Wr.png +0 -0
  53. package/dist/client/assets/sprite-hedgehog-CM9XZtPS.png +0 -0
  54. package/dist/client/assets/sprite-horse-B5CMO0Ue.png +0 -0
  55. package/dist/client/assets/sprite-owl-BybpXmvP.png +0 -0
  56. package/dist/client/assets/sprite-panda-DxAHDNb3.png +0 -0
  57. package/dist/client/assets/sprite-penguin-Du588fg8.png +0 -0
  58. package/dist/client/assets/sprite-pig-BTuwvuhq.png +0 -0
  59. package/dist/client/assets/sprite-red-panda-5y9J8xSy.png +0 -0
  60. package/dist/client/assets/sprite-sheep-vHUTjc5U.png +0 -0
  61. package/dist/client/assets/sprite-unicorn-CJ3g8Zet.png +0 -0
  62. package/dist/client/assets/sprite-whale-C3Galw4z.png +0 -0
  63. package/dist/client/assets/trace-panel-B6TiM5pb.js +1 -0
  64. package/dist/client/assets/trace-panel-B6TiM5pb.js.br +0 -0
  65. package/dist/client/assets/trail-acacia-5Fr79eBl.png +0 -0
  66. package/dist/client/assets/trail-acacia-frame2-D83GtoaY.png +0 -0
  67. package/dist/client/assets/trail-acacia-frame3-BBXTo5I-.png +0 -0
  68. package/dist/client/assets/trail-acacia-frame4-Xv9ZEsyD.png +0 -0
  69. package/dist/client/assets/trail-acorns-BOCEZemb.png +0 -0
  70. package/dist/client/assets/trail-acorns-frame2-BhHnaBud.png +0 -0
  71. package/dist/client/assets/trail-acorns-frame3-DKXXievy.png +0 -0
  72. package/dist/client/assets/trail-acorns-frame4-Ch2VXeMA.png +0 -0
  73. package/dist/client/assets/trail-bamboo-GqKJxCTV.png +0 -0
  74. package/dist/client/assets/trail-bamboo-frame2-bHacG8f_.png +0 -0
  75. package/dist/client/assets/trail-bamboo-frame3-CaoctCwJ.png +0 -0
  76. package/dist/client/assets/trail-bamboo-frame4-CqBfq3ff.png +0 -0
  77. package/dist/client/assets/trail-bubbles-frame2-eNpysXFZ.png +0 -0
  78. package/dist/client/assets/trail-bubbles-frame3-CWwqOJLM.png +0 -0
  79. package/dist/client/assets/trail-bubbles-frame4-Dj9TUXsV.png +0 -0
  80. package/dist/client/assets/trail-bubbles-pZ5FzCq7.png +0 -0
  81. package/dist/client/assets/trail-clouds-D18nQlSc.png +0 -0
  82. package/dist/client/assets/trail-clouds-frame2-W-_5l_i2.png +0 -0
  83. package/dist/client/assets/trail-clouds-frame3-CGQnOEBI.png +0 -0
  84. package/dist/client/assets/trail-clouds-frame4-CvlkFN6d.png +0 -0
  85. package/dist/client/assets/trail-clover-Ci7hUdO0.png +0 -0
  86. package/dist/client/assets/trail-clover-frame2-Z6NRhQ3U.png +0 -0
  87. package/dist/client/assets/trail-clover-frame3-0srIKU22.png +0 -0
  88. package/dist/client/assets/trail-clover-frame4-BO9UjM_-.png +0 -0
  89. package/dist/client/assets/trail-daisies-DVEPmnHq.png +0 -0
  90. package/dist/client/assets/trail-daisies-frame2-C_3-bnO5.png +0 -0
  91. package/dist/client/assets/trail-daisies-frame3-CR7GzXzm.png +0 -0
  92. package/dist/client/assets/trail-daisies-frame4-CKQDb8cR.png +0 -0
  93. package/dist/client/assets/trail-dust-Cf48D_ja.png +0 -0
  94. package/dist/client/assets/trail-dust-frame2-DAisulyH.png +0 -0
  95. package/dist/client/assets/trail-dust-frame3-BLi-DUzo.png +0 -0
  96. package/dist/client/assets/trail-dust-frame4-DGXo_Q2f.png +0 -0
  97. package/dist/client/assets/trail-embers-c-vlGDDo.png +0 -0
  98. package/dist/client/assets/trail-embers-frame2-wCK1DXpW.png +0 -0
  99. package/dist/client/assets/trail-embers-frame3-C5QS1ZRt.png +0 -0
  100. package/dist/client/assets/trail-embers-frame4-DA-O9bwZ.png +0 -0
  101. package/dist/client/assets/trail-hearts-DQwkXjr0.png +0 -0
  102. package/dist/client/assets/trail-hearts-frame2-DbyTUdl2.png +0 -0
  103. package/dist/client/assets/trail-hearts-frame3-XHaluU_W.png +0 -0
  104. package/dist/client/assets/trail-hearts-frame4-BA0W9inL.png +0 -0
  105. package/dist/client/assets/trail-honey-BC7CvXOJ.png +0 -0
  106. package/dist/client/assets/trail-honey-frame2-C4tRQx2J.png +0 -0
  107. package/dist/client/assets/trail-honey-frame3-V4pdDsZr.png +0 -0
  108. package/dist/client/assets/trail-honey-frame4-BqfUOIZk.png +0 -0
  109. package/dist/client/assets/trail-leaves-Di39skyY.png +0 -0
  110. package/dist/client/assets/trail-leaves-frame2-Dibep-05.png +0 -0
  111. package/dist/client/assets/trail-leaves-frame3-ByxojOFR.png +0 -0
  112. package/dist/client/assets/trail-leaves-frame4-CQGuAWJE.png +0 -0
  113. package/dist/client/assets/trail-logomarks-eIe8WIQx.png +0 -0
  114. package/dist/client/assets/trail-logomarks-frame2-Dw7X4i4F.png +0 -0
  115. package/dist/client/assets/trail-logomarks-frame3-CwoFgR8k.png +0 -0
  116. package/dist/client/assets/trail-logomarks-frame4-B7tFxRZO.png +0 -0
  117. package/dist/client/assets/trail-paws-C4cgGpTt.png +0 -0
  118. package/dist/client/assets/trail-paws-frame2-D8gNCPFb.png +0 -0
  119. package/dist/client/assets/trail-paws-frame3-BiEhbm80.png +0 -0
  120. package/dist/client/assets/trail-paws-frame4-BLLXXSyZ.png +0 -0
  121. package/dist/client/assets/trail-rainbow-BavE03WZ.png +0 -0
  122. package/dist/client/assets/trail-rainbow-frame2-BGZ7ZuQD.png +0 -0
  123. package/dist/client/assets/trail-rainbow-frame3-CY3FOgWe.png +0 -0
  124. package/dist/client/assets/trail-rainbow-frame4-DPWH6W3T.png +0 -0
  125. package/dist/client/assets/trail-seeds-BVCYzFRY.png +0 -0
  126. package/dist/client/assets/trail-seeds-frame2-CgopUUJh.png +0 -0
  127. package/dist/client/assets/trail-seeds-frame3-D2rIJzox.png +0 -0
  128. package/dist/client/assets/trail-seeds-frame4-WbnqCHlJ.png +0 -0
  129. package/dist/client/assets/trail-snow-BmXmGNtx.png +0 -0
  130. package/dist/client/assets/trail-snow-frame2-BQC5GITf.png +0 -0
  131. package/dist/client/assets/trail-snow-frame3-1GIpb4hr.png +0 -0
  132. package/dist/client/assets/trail-snow-frame4-BB4B66p3.png +0 -0
  133. package/dist/client/assets/trail-sparkles-D3Ivb6ob.png +0 -0
  134. package/dist/client/assets/trail-sparkles-frame2-DR03q4T0.png +0 -0
  135. package/dist/client/assets/trail-sparkles-frame3-DtdWWuVM.png +0 -0
  136. package/dist/client/assets/trail-sparkles-frame4-ea8pBjiu.png +0 -0
  137. package/dist/client/assets/trail-stars-EgySiFbH.png +0 -0
  138. package/dist/client/assets/trail-stars-frame2-BOXk5jcm.png +0 -0
  139. package/dist/client/assets/trail-stars-frame3-DJ2AW0RA.png +0 -0
  140. package/dist/client/assets/trail-stars-frame4-BcSJ1AVu.png +0 -0
  141. package/dist/client/assets/ui-prefs-CQHZFVx6.js +1 -0
  142. package/dist/client/assets/ui-prefs-CQHZFVx6.js.br +0 -0
  143. package/dist/client/assets/usage-panel-D2RX3LtG.js +1 -0
  144. package/dist/client/assets/usage-panel-D2RX3LtG.js.br +0 -0
  145. package/dist/client/assets/visions-panel-BV9EKCBw.js +1 -0
  146. package/dist/client/assets/visions-panel-BV9EKCBw.js.br +0 -0
  147. package/dist/client/assets/xterm-BdQ2Kshh.js +79 -0
  148. package/dist/client/assets/xterm-BdQ2Kshh.js.br +0 -0
  149. package/dist/client/assets/zod-BRLv4KqJ.js.br +0 -0
  150. package/dist/client/fonts/CommitMono-OFL.txt.br +0 -0
  151. package/dist/client/fonts/commit-mono-400-regular-core.woff2 +0 -0
  152. package/dist/client/fonts/commit-mono-700-regular-core.woff2 +0 -0
  153. package/dist/client/index.html +7 -3
  154. package/dist/client/index.html.br +0 -0
  155. package/dist/client/octicons-LICENSE.txt.br +3 -0
  156. package/dist/server/index.js +1 -1
  157. package/package.json +1 -1
  158. package/dist/chunks/config-store-DVwdcnub.js +0 -1
  159. package/dist/client/assets/index-BR-wN5UF.js +0 -177
  160. package/dist/client/assets/index-QxVyoSUP.css +0 -2
  161. package/dist/client/assets/xterm-kR64YvZ-.js +0 -79
  162. package/dist/client/fonts/commit-mono-400-italic.woff2 +0 -0
  163. package/dist/client/fonts/commit-mono-700-italic.woff2 +0 -0
package/README.md CHANGED
@@ -12,7 +12,7 @@
12
12
 
13
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
- 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.
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, with your own login, subscription, skills, hooks and settings, talking straight to their model. No cloud service, no account. Glimmervoid is developed inside Glimmervoid.
16
16
 
17
17
  ![Glimmervoid dashboard replaying recorded Claude Code sessions: one fixes a flaky upload test with its diff in the terminal, three more work on their own projects in the session rail](assets/pictures/glimmervoid-demo.gif)
18
18
 
@@ -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-BCFplxXu.js";
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-CWHMbInF.js");
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-DGOkkmW-.js");
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-BdvvBKkj.js");
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-B-QxkZAQ.js");
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-B-QxkZAQ.js");
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-DVwdcnub.js");
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-B2IgKmuZ.js");
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-BsoXEvlZ.js";
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 { y as InstallFlavor } from "./config-Dh4e-Mkv.js";
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-dj-GFptp.js";
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-BCFplxXu.js";
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-DIl92JjQ.js";
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 { c as TASK_TITLE_SOURCE_PRIORITY, o as PersistedTaskTitle, w as pullRequestKeyFromReference } from "./config-Dh4e-Mkv.js";
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 };
@@ -1269,6 +1269,8 @@ var CommitComparison = z.object({
1269
1269
  });
1270
1270
  //#endregion
1271
1271
  //#region shared/contracts/control-messages.ts
1272
+ var CHANGES_POLL_INTERVAL_MS = 4e3;
1273
+ var CHANGES_WATCH_LEASE_MS = 1e4;
1272
1274
  var requestId = z.string().nullable().optional();
1273
1275
  var sessionId = z.string();
1274
1276
  var KeptWorkPath = z.object({
@@ -1405,6 +1407,11 @@ var ClientErrorReport = z.object({
1405
1407
  name: z.string().max(128),
1406
1408
  stack: z.string().max(8192)
1407
1409
  }).strict();
1410
+ var CLIENT_LOG_TEXT_MAX_CHARS = 1e3;
1411
+ var ClientLogReport = z.object({
1412
+ scope: z.string().min(1).max(64),
1413
+ text: z.string().min(1).max(CLIENT_LOG_TEXT_MAX_CHARS)
1414
+ }).strict();
1408
1415
  var DASHBOARD_TELEMETRY_EVENTS = Object.freeze([
1409
1416
  "view_shown",
1410
1417
  "operator_action",
@@ -1523,6 +1530,10 @@ var clientVariants = [
1523
1530
  environment: z.string().optional(),
1524
1531
  requestId
1525
1532
  }),
1533
+ loose("quick-session", {
1534
+ id: sessionId,
1535
+ requestId
1536
+ }),
1526
1537
  loose("remove-session", {
1527
1538
  id: sessionId,
1528
1539
  force: z.unknown().optional(),
@@ -1723,6 +1734,7 @@ var clientVariants = [
1723
1734
  requestId
1724
1735
  }),
1725
1736
  loose("client-error", ClientErrorReport.shape),
1737
+ loose("client-log", ClientLogReport.shape),
1726
1738
  loose("dashboard-telemetry", {
1727
1739
  event: z.enum(DASHBOARD_TELEMETRY_EVENTS),
1728
1740
  properties: z.record(z.string(), z.unknown())
@@ -1732,6 +1744,7 @@ var clientVariants = [
1732
1744
  force: z.unknown().optional(),
1733
1745
  expectedState: SessionState.optional()
1734
1746
  }),
1747
+ loose("watch-session-changes", { id: sessionId.nullable() }),
1735
1748
  ...idOnlyClientVariants
1736
1749
  ];
1737
1750
  var ClientMessage = z.discriminatedUnion("type", clientVariants);
@@ -1750,6 +1763,7 @@ Object.freeze([
1750
1763
  "state-change",
1751
1764
  "session-added",
1752
1765
  "session-removed",
1766
+ "session-close-confirm",
1753
1767
  "session-renamed",
1754
1768
  "session-title",
1755
1769
  "session-prs",
@@ -1870,7 +1884,8 @@ var serverVariants = [
1870
1884
  requestId,
1871
1885
  ok: z.boolean(),
1872
1886
  error: optionalError,
1873
- reason: z.enum(["not-git"]).optional()
1887
+ reason: z.enum(["not-git"]).optional(),
1888
+ sessionId: z.string().optional()
1874
1889
  }),
1875
1890
  loose("remove-session-result", {
1876
1891
  requestId,
@@ -1928,6 +1943,10 @@ var serverVariants = [
1928
1943
  id: sessionId,
1929
1944
  session: z.string()
1930
1945
  }),
1946
+ loose("session-close-confirm", {
1947
+ id: sessionId,
1948
+ mergeStatus: z.string()
1949
+ }),
1931
1950
  loose("session-renamed", {
1932
1951
  id: sessionId,
1933
1952
  oldName: z.string(),
@@ -2943,4 +2962,4 @@ function configIssueMessage(error) {
2943
2962
  return error.issues[0]?.message || "settings are invalid";
2944
2963
  }
2945
2964
  //#endregion
2946
- export { POSITIVE_NUMBER_RANGE as $, BenchmarkStatus as A, GithubIssueResponse as At, comparablePrKey as B, OPERATOR_SURFACES as C, PLAN_RESULT_HOOK_EVENT as Ct, BenchmarkId as D, parseExitPlanModeHookPayload as Dt, BenchmarkCase as E, PlanRevision as Et, PrCheckoutCaseInput as F, IssuesStatus as Ft, FLYING_ANIMALS_DEFAULTS as G, WorkflowLabelName as H, GithubPrDetailNode as I, issuePullRequestStateFromGithub as It, FLYING_ANIMALS_SCALE_RANGE as J, FLYING_ANIMALS_DURATION_RANGE as K, GithubPrKey as L, CommitComparison as M, IssueUpdate as Mt, MergedPrListing as N, IssuesSearchResponse as Nt, BenchmarkJudgement as O, planTitle as Ot, MinedPrReviewData as P, IssuesState as Pt, PORT_RANGE as Q, GithubPrLightSearchNode as R, OPERATOR_ACTIONS_BY_SURFACE as S, PLAN_HOOK_OUTPUT_MAX_CHARS as St, BenchmarkActionRequest as T, PlanDecision as Tt, WorkflowsSettings as U, WorkflowCommentBody as V, WorkflowsState as W, MEMORY_RESERVE_MB_RANGE as X, KEEP_MERGEABLE_TIMEOUT_MINUTES_RANGE as Y, NON_NEGATIVE_NUMBER_RANGE as Z, ClientMessage as _, CoherenceJournalOutput as _t, ConfigUpdate as a, TASK_TITLE_TIMEOUT_RANGE as at, ONBOARDING_STEPS as b, PLAN_BODY_CAP_BYTES as bt, TASK_TITLE_SOURCE_PRIORITY as c, USAGE_RETAIN_DAYS_RANGE as ct, POST_TURN_CHECK_MODES as d, WORKFLOWS_MAX_CONCURRENT_SESSIONS_RANGE as dt, POSTHOG_FIX_TIMEOUT_RANGE as et, UPDATE_CHANNELS as f, UpdateJournal as ft, CONTROL_FRAME_MAX_BYTES as g, TraceRecord as gt, normalizeLegacyConfigNumbers as h, TraceCheckpoint as ht, Config as i, REPLAY_BUFFER_KB_RANGE as it, BenchmarkSuite as j, IssueKey as jt, BenchmarkRun as k, GithubIssuePullRequestsRepository as kt, configIssueMessage as l, USAGE_SCAN_INTERVAL_RANGE as lt, USAGE_VENDOR_KEYS as m, MAX_RAW_LINE_CHARS as mt, BUILTIN_AGENT_IDS as n, POSTHOG_TRAFFIC_MIN_USERS_RANGE as nt, PersistedTaskTitle as o, USAGE_BUDGET_RANGE as ot, USAGE_COST_MODES as p, SessionSetup as pt, FLYING_ANIMALS_GAP_RANGE as q, BrowserConfig as r, POSTHOG_TRAFFIC_MULTIPLIER_RANGE as rt, RUNTIME_CONFIG_SCALAR_KEYS as s, USAGE_INTEGER_RANGES as st, AGENT_ID_SHAPE_MESSAGE as t, POSTHOG_TRAFFIC_BASELINE_RANGE as tt, BranchGcFileSettings as u, WORKFLOWS_MAX_ACTIONS_PER_POLL_RANGE as ut, DASHBOARD_VIEWS as v, ChangeMap as vt, pullRequestKeyFromReference as w, PLAN_TOOL_NAME as wt, ONBOARDING_STEP_STATES as x, PLAN_HOOK_EVENT as xt, InstallFlavor as y, changeMapFactId as yt, GithubPrsFrame as z };
2965
+ export { MEMORY_RESERVE_MB_RANGE as $, BenchmarkId as A, parseExitPlanModeHookPayload as At, GithubPrKey as B, ONBOARDING_STEPS as C, PLAN_BODY_CAP_BYTES as Ct, pullRequestKeyFromReference as D, PLAN_TOOL_NAME as Dt, OPERATOR_SURFACES as E, PLAN_RESULT_HOOK_EVENT as Et, CommitComparison as F, IssueUpdate as Ft, WorkflowLabelName as G, GithubPrsFrame as H, MergedPrListing as I, IssuesSearchResponse as It, FLYING_ANIMALS_DEFAULTS as J, WorkflowsSettings as K, MinedPrReviewData as L, IssuesState as Lt, BenchmarkRun as M, GithubIssuePullRequestsRepository as Mt, BenchmarkStatus as N, GithubIssueResponse as Nt, BenchmarkActionRequest as O, PlanDecision as Ot, BenchmarkSuite as P, IssueKey as Pt, KEEP_MERGEABLE_TIMEOUT_MINUTES_RANGE as Q, PrCheckoutCaseInput as R, IssuesStatus as Rt, InstallFlavor as S, changeMapFactId as St, OPERATOR_ACTIONS_BY_SURFACE as T, PLAN_HOOK_OUTPUT_MAX_CHARS as Tt, comparablePrKey as U, GithubPrLightSearchNode as V, WorkflowCommentBody as W, FLYING_ANIMALS_GAP_RANGE as X, FLYING_ANIMALS_DURATION_RANGE as Y, FLYING_ANIMALS_SCALE_RANGE as Z, CHANGES_WATCH_LEASE_MS as _, MAX_RAW_LINE_CHARS as _t, ConfigUpdate as a, POSTHOG_TRAFFIC_MIN_USERS_RANGE as at, ClientMessage as b, CoherenceJournalOutput as bt, TASK_TITLE_SOURCE_PRIORITY as c, TASK_TITLE_TIMEOUT_RANGE as ct, POST_TURN_CHECK_MODES as d, USAGE_RETAIN_DAYS_RANGE as dt, NON_NEGATIVE_NUMBER_RANGE as et, UPDATE_CHANNELS as f, USAGE_SCAN_INTERVAL_RANGE as ft, CHANGES_POLL_INTERVAL_MS as g, SessionSetup as gt, normalizeLegacyConfigNumbers as h, UpdateJournal as ht, Config as i, POSTHOG_TRAFFIC_BASELINE_RANGE as it, BenchmarkJudgement as j, planTitle as jt, BenchmarkCase as k, PlanRevision as kt, configIssueMessage as l, USAGE_BUDGET_RANGE as lt, USAGE_VENDOR_KEYS as m, WORKFLOWS_MAX_CONCURRENT_SESSIONS_RANGE as mt, BUILTIN_AGENT_IDS as n, POSITIVE_NUMBER_RANGE as nt, PersistedTaskTitle as o, POSTHOG_TRAFFIC_MULTIPLIER_RANGE as ot, USAGE_COST_MODES as p, WORKFLOWS_MAX_ACTIONS_PER_POLL_RANGE as pt, WorkflowsState as q, BrowserConfig as r, POSTHOG_FIX_TIMEOUT_RANGE as rt, RUNTIME_CONFIG_SCALAR_KEYS as s, REPLAY_BUFFER_KB_RANGE as st, AGENT_ID_SHAPE_MESSAGE as t, PORT_RANGE as tt, BranchGcFileSettings as u, USAGE_INTEGER_RANGES as ut, CLIENT_LOG_TEXT_MAX_CHARS as v, TraceCheckpoint as vt, ONBOARDING_STEP_STATES as w, PLAN_HOOK_EVENT as wt, DASHBOARD_VIEWS as x, ChangeMap as xt, CONTROL_FRAME_MAX_BYTES as y, TraceRecord as yt, GithubPrDetailNode as z, issuePullRequestStateFromGithub as zt };
@@ -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 POSITIVE_NUMBER_RANGE, G as FLYING_ANIMALS_DEFAULTS, J as FLYING_ANIMALS_SCALE_RANGE, K as FLYING_ANIMALS_DURATION_RANGE, Q as PORT_RANGE, X as MEMORY_RESERVE_MB_RANGE, Y as KEEP_MERGEABLE_TIMEOUT_MINUTES_RANGE, Z as NON_NEGATIVE_NUMBER_RANGE, at as TASK_TITLE_TIMEOUT_RANGE, ct as USAGE_RETAIN_DAYS_RANGE, d as POST_TURN_CHECK_MODES, dt as WORKFLOWS_MAX_CONCURRENT_SESSIONS_RANGE, et as POSTHOG_FIX_TIMEOUT_RANGE, f as UPDATE_CHANNELS, h as normalizeLegacyConfigNumbers, i as Config, it as REPLAY_BUFFER_KB_RANGE, l as configIssueMessage, lt as USAGE_SCAN_INTERVAL_RANGE, n as BUILTIN_AGENT_IDS, nt as POSTHOG_TRAFFIC_MIN_USERS_RANGE, ot as USAGE_BUDGET_RANGE, p as USAGE_COST_MODES, q as FLYING_ANIMALS_GAP_RANGE, rt as POSTHOG_TRAFFIC_MULTIPLIER_RANGE, s as RUNTIME_CONFIG_SCALAR_KEYS, st as USAGE_INTEGER_RANGES, t as AGENT_ID_SHAPE_MESSAGE, tt as POSTHOG_TRAFFIC_BASELINE_RANGE, u as BranchGcFileSettings, ut as WORKFLOWS_MAX_ACTIONS_PER_POLL_RANGE } from "./config-Dh4e-Mkv.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-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-dj-GFptp.js";
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 OPERATOR_SURFACES, S as OPERATOR_ACTIONS_BY_SURFACE, b as ONBOARDING_STEPS, n as BUILTIN_AGENT_IDS, v as DASHBOARD_VIEWS, x as ONBOARDING_STEP_STATES } from "./config-Dh4e-Mkv.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-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"]);
@@ -285,13 +285,17 @@ var DataClientMessage = z.discriminatedUnion("type", [
285
285
  z.object({ type: z.literal("pause-output") }),
286
286
  z.object({ type: z.literal("resume-output") })
287
287
  ]);
288
- z.object({
288
+ var PtySizeFrame = z.object({
289
289
  type: z.literal("pty-size"),
290
290
  cols: viewerCols,
291
291
  rows: viewerRows,
292
292
  seq: z.number().int().nonnegative()
293
293
  });
294
+ var OutputBeatFrame = z.object({ type: z.literal("output-beat") });
295
+ z.discriminatedUnion("type", [PtySizeFrame, OutputBeatFrame]);
294
296
  var DATA_ATTACH_HISTORY_PARAM = "history";
297
+ var DATA_ATTACH_OUTPUT_PARAM = "output";
298
+ var DATA_ATTACH_PAUSED_OUTPUT = "paused";
295
299
  var DEEP_HISTORY_SCROLLBACK_LINES = 5e3;
296
300
  var DataAttachHistory = z.enum(["screen", "deep"]);
297
301
  function decodeJson(raw) {
@@ -306,14 +310,19 @@ function parseDataClientMessage(raw) {
306
310
  if (!parsed.success) return null;
307
311
  return parsed.data;
308
312
  }
309
- function parseDataAttachHistory(rawUrl) {
310
- if (typeof rawUrl !== "string") return "screen";
313
+ function attachQueryOf(rawUrl) {
314
+ if (typeof rawUrl !== "string") return new URLSearchParams();
311
315
  const queryAt = rawUrl.indexOf("?");
312
- if (queryAt === -1) return "screen";
313
- const query = new URLSearchParams(rawUrl.slice(queryAt + 1).split("#")[0]);
314
- const parsed = DataAttachHistory.safeParse(query.get(DATA_ATTACH_HISTORY_PARAM));
315
- if (!parsed.success) return "screen";
316
- return parsed.data;
316
+ if (queryAt === -1) return new URLSearchParams();
317
+ return new URLSearchParams(rawUrl.slice(queryAt + 1).split("#")[0]);
318
+ }
319
+ function parseDataAttach(rawUrl) {
320
+ const query = attachQueryOf(rawUrl);
321
+ const history = DataAttachHistory.safeParse(query.get(DATA_ATTACH_HISTORY_PARAM));
322
+ return {
323
+ history: history.success ? history.data : "screen",
324
+ isOutputPaused: query.get(DATA_ATTACH_OUTPUT_PARAM) === DATA_ATTACH_PAUSED_OUTPUT
325
+ };
317
326
  }
318
327
  //#endregion
319
328
  //#region shared/contracts/hooks.ts
@@ -338,4 +347,4 @@ z.object({
338
347
  projects: z.array(z.string()).optional()
339
348
  }).passthrough();
340
349
  //#endregion
341
- export { parseDataClientMessage as a, PendingCrashReport as c, TelemetryState as d, parseDataAttachHistory as i, TELEMETRY_EVENT_SCHEMAS as l, HookEnvelope as n, DashboardTelemetryReport as o, DEEP_HISTORY_SCROLLBACK_LINES as r, FeatureFlagsResponse as s, HTTP_URL_RE as t, TELEMETRY_KILL_SWITCH_FLAG as u };
350
+ export { parseDataClientMessage as a, PendingCrashReport as c, TelemetryState as d, parseDataAttach as i, TELEMETRY_EVENT_SCHEMAS as l, HookEnvelope as n, DashboardTelemetryReport as o, DEEP_HISTORY_SCROLLBACK_LINES as r, FeatureFlagsResponse as s, HTTP_URL_RE as t, TELEMETRY_KILL_SWITCH_FLAG as u };