glimmervoid 0.43.5 → 0.44.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 (29) hide show
  1. package/dist/bin/glimmervoid.js +13 -13
  2. package/dist/chunks/{adapters-DCXbfZ2V.js → adapters-CSRTLFiZ.js} +5 -5
  3. package/dist/chunks/{adapters-43NBaf3J.js → adapters-DjDtNufj.js} +1 -1
  4. package/dist/chunks/{agent-api-cli-6W5lx3AO.js → agent-api-cli-CVgij_62.js} +3 -3
  5. package/dist/chunks/{agent-api-cli-CgQTmmLd.js → agent-api-cli-ep_5T7Hx.js} +1 -1
  6. package/dist/chunks/{agent-api-core-DniJGdf6.js → agent-api-core-DmPT6Hc_.js} +6 -5
  7. package/dist/chunks/{agent-setup-cli-B5vnfQXA.js → agent-setup-cli-7hG401Io.js} +1 -1
  8. package/dist/chunks/{config-bGil1wqg.js → config-CGRYpcBQ.js} +28 -5
  9. package/dist/chunks/{config-store-GsSGMu08.js → config-store-B1u3WA5t.js} +3 -3
  10. package/dist/chunks/config-store-D4vUBcUX.js +1 -0
  11. package/dist/chunks/{contracts-s0s0gCZJ.js → contracts-Fup4hhP9.js} +34 -12
  12. package/dist/chunks/{git-version-BwJ-H5Gl.js → git-version-C3lznLS_.js} +1 -1
  13. package/dist/chunks/{grok-BYvOJJMV.js → grok-Di4aQGre.js} +1 -1
  14. package/dist/chunks/{main-uV_6B2Am.js → main-DPtmg7Bn.js} +4557 -4216
  15. package/dist/chunks/{pair-cli-BFg0PF9X.js → pair-cli-BwOTWShx.js} +2 -2
  16. package/dist/chunks/{remote-config-yLvSEm11.js → remote-config-DWWnz5dP.js} +1 -1
  17. package/dist/chunks/{session-GoNLV4AT.js → session-CUc6d7aS.js} +11 -2
  18. package/dist/chunks/{session-routes-BBWZ5xmv.js → session-routes--hrsvv7a.js} +1 -1
  19. package/dist/chunks/{settings-cli-Do404URB.js → settings-cli-C_owm3rw.js} +5 -5
  20. package/dist/chunks/{settings-readout-core-x331h4CR.js → settings-readout-core-C_JzSeF7.js} +2 -2
  21. package/dist/chunks/{ssh-sign-cli-BG0t2-3v.js → ssh-sign-cli-CDjUtDKa.js} +2 -2
  22. package/dist/client/assets/index-BedqDfKJ.js +177 -0
  23. package/dist/client/assets/index-o9J4_Orv.css +2 -0
  24. package/dist/client/index.html +3 -3
  25. package/dist/server/index.js +1 -1
  26. package/package.json +6 -5
  27. package/dist/chunks/config-store-C2CaymPs.js +0 -1
  28. package/dist/client/assets/index-BhMm8IuJ.css +0 -2
  29. package/dist/client/assets/index-DRT1ZGFh.js +0 -177
@@ -2,12 +2,12 @@
2
2
  import { o as nodePtyRebuildHint, r as firstLine, t as probeNodePty } from "../chunks/node-pty-preflight-C8QIlrtU.js";
3
3
  import { i as errorText } from "../chunks/text-DoirglWV.js";
4
4
  import { o as packageRoot } from "../chunks/runtime-paths-ghcH9CeW.js";
5
- import { t as AGENT_API_VERBS } from "../chunks/session-GoNLV4AT.js";
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-DniJGdf6.js";
7
+ import { r as agentCommandHelpLines } from "../chunks/agent-api-core-DmPT6Hc_.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
- import { i as parseCommandLine, r as gitDoctorRows, t as probeGitVersion } from "../chunks/git-version-BwJ-H5Gl.js";
10
+ import { i as parseCommandLine, r as gitDoctorRows, t as probeGitVersion } from "../chunks/git-version-C3lznLS_.js";
11
11
  import { i as guardrailsDoctorRows, r as probeGuardrailsDependencies } from "../chunks/guardrails-deps-BjPzk1rE.js";
12
12
  import { i as pnpmGlobalBinDir, n as npmGlobalBinDir, r as onPath, t as formatPathNotice } from "../chunks/path-doctor-C23VAqeu.js";
13
13
  import fs from "node:fs";
@@ -65,15 +65,15 @@ var OWN_SUBCOMMAND_RUNNERS = [
65
65
  return 0;
66
66
  }],
67
67
  ["pair", async (subcommandArgs) => {
68
- const { runPairCli } = await import("../chunks/pair-cli-BFg0PF9X.js");
68
+ const { runPairCli } = await import("../chunks/pair-cli-BwOTWShx.js");
69
69
  return runPairCli(subcommandArgs);
70
70
  }],
71
71
  ["agent", async (subcommandArgs) => {
72
- const { runAgentSetupCli } = await import("../chunks/agent-setup-cli-B5vnfQXA.js");
72
+ const { runAgentSetupCli } = await import("../chunks/agent-setup-cli-7hG401Io.js");
73
73
  return runAgentSetupCli(subcommandArgs);
74
74
  }],
75
75
  ["settings", async (subcommandArgs) => {
76
- const { runSettingsCli } = await import("../chunks/settings-cli-Do404URB.js");
76
+ const { runSettingsCli } = await import("../chunks/settings-cli-C_owm3rw.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-BG0t2-3v.js");
84
+ const { runSshSignCli } = await import("../chunks/ssh-sign-cli-CDjUtDKa.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-CgQTmmLd.js");
90
+ const { runAgentApiCli } = await import("../chunks/agent-api-cli-ep_5T7Hx.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-CgQTmmLd.js");
104
+ const { sessionLimitsHelpLines } = await import("../chunks/agent-api-cli-ep_5T7Hx.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-C2CaymPs.js");
161
+ const { loadConfigFile } = await import("../chunks/config-store-D4vUBcUX.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-43NBaf3J.js");
237
+ const { listAgentIds, describeAgentResolvability, setCustomAgents } = await import("../chunks/adapters-DjDtNufj.js");
238
238
  const declaredCustomAgents = await readDeclaredCustomAgents();
239
239
  if (declaredCustomAgents.error) line("config", declaredCustomAgents.error);
240
240
  setCustomAgents(declaredCustomAgents.declared);
@@ -242,7 +242,7 @@ async function runDoctor() {
242
242
  const { label, path: resolvedPath } = describeAgentResolvability(id);
243
243
  line(`${id} (${label})`, resolvedPath ?? missingAgentText(id));
244
244
  }
245
- const { inspectGrokAgentSetup } = await import("../chunks/agent-setup-cli-B5vnfQXA.js");
245
+ const { inspectGrokAgentSetup } = await import("../chunks/agent-setup-cli-7hG401Io.js");
246
246
  const grokSetup = inspectGrokAgentSetup();
247
247
  line("grok hook setup", `${grokSetup.classification}: ${grokSetup.filePath}`);
248
248
  } catch (err) {
@@ -259,7 +259,7 @@ async function runDoctor() {
259
259
  try {
260
260
  const { resolvePackageBin } = await import("../chunks/runtime-paths-Cc0_ZR6V.js");
261
261
  const { execFileSync } = await import("../chunks/child-process-safe-CjVtRjDD.js");
262
- const { inspectGrokAgentSetup } = await import("../chunks/agent-setup-cli-B5vnfQXA.js");
262
+ const { inspectGrokAgentSetup } = await import("../chunks/agent-setup-cli-7hG401Io.js");
263
263
  const binPath = resolvePackageBin("cc-safety-net", "cc-safety-net");
264
264
  line("Sane YOLO", binPath || "not installed");
265
265
  if (binPath) line("cc-safety-net version", execFileSync(process.execPath, [binPath, "--version"], {
@@ -1,14 +1,14 @@
1
1
  import { s as relayPath } from "./runtime-paths-ghcH9CeW.js";
2
- import { Vt as shortSha$1, zt as FULL_SHA_RE } from "./session-GoNLV4AT.js";
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-bGil1wqg.js";
5
- import { o as supervisionLine } from "./session-routes-BBWZ5xmv.js";
4
+ import { y as InstallFlavor } from "./config-CGRYpcBQ.js";
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
- import { i as isSpinnerChar, n as classifyAgentTitle, r as isBrailleChar, s as buildAgentEnv, t as grok } from "./grok-BYvOJJMV.js";
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-s0s0gCZJ.js";
11
+ import "./contracts-Fup4hhP9.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-DCXbfZ2V.js";
1
+ export { a as describeAgentResolvability, l as listAgentIds, f as setCustomAgents } from "./adapters-CSRTLFiZ.js";
@@ -1,7 +1,7 @@
1
1
  import { t as errorCode } from "./text-DoirglWV.js";
2
- import { c as AgentLimitsReply, n as AGENT_URL_ENV } from "./session-GoNLV4AT.js";
3
- import { i as formatSessionLimits } from "./session-routes-BBWZ5xmv.js";
4
- import { f as isAgentApiVerb, t as AGENT_COMMAND_HELP } from "./agent-api-core-DniJGdf6.js";
2
+ import { c as AgentLimitsReply, n as AGENT_URL_ENV } from "./session-CUc6d7aS.js";
3
+ import { i as formatSessionLimits } from "./session-routes--hrsvv7a.js";
4
+ import { f as isAgentApiVerb, t as AGENT_COMMAND_HELP } from "./agent-api-core-DmPT6Hc_.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-6W5lx3AO.js";
1
+ export { t as askAgentApi, r as runAgentApiCli, i as sessionLimitsHelpLines } from "./agent-api-cli-CVgij_62.js";
@@ -1,6 +1,6 @@
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-GoNLV4AT.js";
2
- import { S as pullRequestKeyFromReference, c as TASK_TITLE_SOURCE_PRIORITY, o as PersistedTaskTitle } from "./config-bGil1wqg.js";
3
- import { n as NO_OWN_WORKTREE_REASON, t as COMMAND_ROUTES } from "./session-routes-BBWZ5xmv.js";
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-CGRYpcBQ.js";
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";
6
6
  //#region shared/session-naming.ts
@@ -441,6 +441,7 @@ function chooseRefinedSessionName({ currentName, projectFolderName, proposedName
441
441
  if (!isAutoNameOf(currentName, projectFolderName)) return null;
442
442
  return nextSuggestedName(proposedName, takenNames.filter((name) => name !== currentName));
443
443
  }
444
+ var MAX_LIFETIME_SPAWNS = 10;
444
445
  var MAX_SPAWNS_IN_FLIGHT = 1;
445
446
  var REFUSAL_REASON = "unknown session";
446
447
  var INVALID_BODY_STATUS = 400;
@@ -490,10 +491,10 @@ function decideSpawnAllowance({ liveChildren, lifetimeSpawns, inFlight }) {
490
491
  status: 429,
491
492
  reason: `at most 3 spawned sessions may be live at once`
492
493
  };
493
- if (lifetimeSpawns >= 10) return {
494
+ if (lifetimeSpawns >= MAX_LIFETIME_SPAWNS) return {
494
495
  ok: false,
495
496
  status: 429,
496
- reason: `this session has used its 10 spawns`
497
+ reason: `this session has used its ${MAX_LIFETIME_SPAWNS} spawns`
497
498
  };
498
499
  return { ok: true };
499
500
  }
@@ -1,5 +1,5 @@
1
1
  import { a as isMissingFileError, r as errorMessage } from "./text-DoirglWV.js";
2
- import { a as classifyGrokHooksFile, o as renderGrokHooksFile, t as grok } from "./grok-BYvOJJMV.js";
2
+ import { a as classifyGrokHooksFile, o as renderGrokHooksFile, t as grok } from "./grok-Di4aQGre.js";
3
3
  import { p as writeTextAtomicSync } from "./json-file-DFCTvPjj.js";
4
4
  import fs from "node:fs";
5
5
  import path from "node:path";
@@ -1,4 +1,4 @@
1
- import { $ as MyPrMergeWhenReadyRequest, B as UnseenOutcome, Dt as TeamReviewActionResult, Et as TeamReviewActionRequest, F as SessionState, Gt as repoParts, H as MyPr, Ht as GH_SEGMENT, Jt as GithubPrsFreshness, K as MyPrKeepMergeableRequest, Kt as GithubPollingRefreshRequest, Lt as hasRequiredActionHead, N as SessionDoc, O as SESSION_DOC_PATH_MAX_CHARS, P as SessionSnapshot, S as ConversationApprovalDecision, V as LinkedPr, Wt as REPO_SLUG_RE, X as MyPrMergeRequest, Yt as githubPollingShape, Z as MyPrMergeResult, b as ConversationAnswers, ct as pullRequestKeyFormat, et as MyPrMergeWhenReadyResult, jt as TeamReviewStatus, lt as repositoryName, mt as GithubReviewDecision, ot as MyPrsStatus, q as MyPrKeepMergeableResult, qt as GithubPollingRefreshResult, st as SessionPrLinks, tt as MyPrSearchNode, ut as CommitSha, w as PendingWakeup, x as ConversationApproval, y as CoherenceHooksState, yt as ReviewChecksState, z as TaskTitle } from "./session-GoNLV4AT.js";
1
+ import { $ as MyPrMergeWhenReadyRequest, B as UnseenOutcome, Dt as TeamReviewActionResult, Et as TeamReviewActionRequest, F as SessionState, Gt as repoParts, H as MyPr, Ht as GH_SEGMENT, Jt as GithubPrsFreshness, K as MyPrKeepMergeableRequest, Kt as GithubPollingRefreshRequest, Lt as hasRequiredActionHead, N as SessionDoc, O as SESSION_DOC_PATH_MAX_CHARS, P as SessionSnapshot, S as ConversationApprovalDecision, V as LinkedPr, Wt as REPO_SLUG_RE, X as MyPrMergeRequest, Yt as githubPollingShape, Z as MyPrMergeResult, b as ConversationAnswers, ct as pullRequestKeyFormat, et as MyPrMergeWhenReadyResult, jt as TeamReviewStatus, lt as repositoryName, mt as GithubReviewDecision, ot as MyPrsStatus, q as MyPrKeepMergeableResult, qt as GithubPollingRefreshResult, st as SessionPrLinks, tt as MyPrSearchNode, ut as CommitSha, w as PendingWakeup, x as ConversationApproval, y as CoherenceHooksState, yt as ReviewChecksState, z as TaskTitle } from "./session-CUc6d7aS.js";
2
2
  import { n as isRecord } from "./coerce-NSst8oRP.js";
3
3
  import path from "node:path";
4
4
  import { z } from "zod";
@@ -1405,7 +1405,11 @@ var ClientErrorReport = z.object({
1405
1405
  name: z.string().max(128),
1406
1406
  stack: z.string().max(8192)
1407
1407
  }).strict();
1408
- var DASHBOARD_TELEMETRY_EVENTS = Object.freeze(["view_shown", "operator_action"]);
1408
+ var DASHBOARD_TELEMETRY_EVENTS = Object.freeze([
1409
+ "view_shown",
1410
+ "operator_action",
1411
+ "onboarding_step"
1412
+ ]);
1409
1413
  var DASHBOARD_VIEWS = Object.freeze([
1410
1414
  "focus",
1411
1415
  "zen",
@@ -1445,6 +1449,12 @@ var OPERATOR_ACTIONS_BY_SURFACE = Object.freeze({
1445
1449
  "suppress",
1446
1450
  "archive-investigation"
1447
1451
  ],
1452
+ onboarding: [
1453
+ "rescan",
1454
+ "add-root-typed",
1455
+ "add-root-suggested",
1456
+ "add-session"
1457
+ ],
1448
1458
  reviews: [
1449
1459
  "open-session",
1450
1460
  "approve",
@@ -1459,17 +1469,22 @@ var OPERATOR_ACTIONS_BY_SURFACE = Object.freeze({
1459
1469
  "refresh"
1460
1470
  ]
1461
1471
  });
1472
+ var ONBOARDING_STEPS = Object.freeze([
1473
+ "agent",
1474
+ "repo_roots",
1475
+ "first_session"
1476
+ ]);
1477
+ var ONBOARDING_STEP_STATES = Object.freeze(["current", "done"]);
1462
1478
  var OPERATOR_SURFACES = Object.freeze([
1463
1479
  "usage",
1464
1480
  "issues",
1465
1481
  "radar",
1482
+ "onboarding",
1466
1483
  "reviews"
1467
1484
  ]);
1468
1485
  var idOnlyClientTypes = [
1469
1486
  "kill",
1470
1487
  "start-session",
1471
- "restart",
1472
- "force-restart",
1473
1488
  "merge-session",
1474
1489
  "finish-session",
1475
1490
  "merge-continue-session",
@@ -1488,7 +1503,15 @@ function idOnlyClientVariant(type) {
1488
1503
  });
1489
1504
  }
1490
1505
  var idOnlyClientVariants = idOnlyClientTypes.map(idOnlyClientVariant);
1506
+ var restartClientShape = {
1507
+ id: sessionId,
1508
+ force: z.unknown().optional(),
1509
+ fresh: z.unknown().optional(),
1510
+ conversationId: z.string().optional()
1511
+ };
1491
1512
  var clientVariants = [
1513
+ loose("restart", restartClientShape),
1514
+ loose("force-restart", restartClientShape),
1492
1515
  loose("add-session", {
1493
1516
  name: z.string(),
1494
1517
  path: z.string(),
@@ -2914,4 +2937,4 @@ function configIssueMessage(error) {
2914
2937
  return error.issues[0]?.message || "settings are invalid";
2915
2938
  }
2916
2939
  //#endregion
2917
- export { POSTHOG_TRAFFIC_BASELINE_RANGE as $, CommitComparison as A, IssueUpdate as At, WorkflowLabelName as B, BenchmarkActionRequest as C, PlanDecision as Ct, BenchmarkRun as D, GithubIssuePullRequestsRepository as Dt, BenchmarkJudgement as E, planTitle as Et, GithubPrKey as F, FLYING_ANIMALS_GAP_RANGE as G, WorkflowsState as H, GithubPrLightSearchNode as I, MEMORY_RESERVE_MB_RANGE as J, FLYING_ANIMALS_SCALE_RANGE as K, GithubPrsFrame as L, MinedPrReviewData as M, IssuesState as Mt, PrCheckoutCaseInput as N, IssuesStatus as Nt, BenchmarkStatus as O, GithubIssueResponse as Ot, GithubPrDetailNode as P, issuePullRequestStateFromGithub as Pt, POSTHOG_FIX_TIMEOUT_RANGE as Q, comparablePrKey as R, pullRequestKeyFromReference as S, PLAN_TOOL_NAME as St, BenchmarkId as T, parseExitPlanModeHookPayload as Tt, FLYING_ANIMALS_DEFAULTS as U, WorkflowsSettings as V, FLYING_ANIMALS_DURATION_RANGE as W, PORT_RANGE as X, NON_NEGATIVE_NUMBER_RANGE as Y, POSITIVE_NUMBER_RANGE as Z, ClientMessage as _, changeMapFactId as _t, ConfigUpdate as a, USAGE_INTEGER_RANGES as at, OPERATOR_ACTIONS_BY_SURFACE as b, PLAN_HOOK_OUTPUT_MAX_CHARS as bt, TASK_TITLE_SOURCE_PRIORITY as c, WORKFLOWS_MAX_ACTIONS_PER_POLL_RANGE as ct, POST_TURN_CHECK_MODES as d, SessionSetup as dt, POSTHOG_TRAFFIC_MIN_USERS_RANGE as et, UPDATE_CHANNELS as f, MAX_RAW_LINE_CHARS as ft, CONTROL_FRAME_MAX_BYTES as g, ChangeMap as gt, normalizeLegacyConfigNumbers as h, CoherenceJournalOutput as ht, Config as i, USAGE_BUDGET_RANGE as it, MergedPrListing as j, IssuesSearchResponse as jt, BenchmarkSuite as k, IssueKey as kt, configIssueMessage as l, WORKFLOWS_MAX_CONCURRENT_SESSIONS_RANGE as lt, USAGE_VENDOR_KEYS as m, TraceRecord as mt, BUILTIN_AGENT_IDS as n, REPLAY_BUFFER_KB_RANGE as nt, PersistedTaskTitle as o, USAGE_RETAIN_DAYS_RANGE as ot, USAGE_COST_MODES as p, TraceCheckpoint as pt, KEEP_MERGEABLE_TIMEOUT_MINUTES_RANGE as q, BrowserConfig as r, TASK_TITLE_TIMEOUT_RANGE as rt, RUNTIME_CONFIG_SCALAR_KEYS as s, USAGE_SCAN_INTERVAL_RANGE as st, AGENT_ID_SHAPE_MESSAGE as t, POSTHOG_TRAFFIC_MULTIPLIER_RANGE as tt, BranchGcFileSettings as u, UpdateJournal as ut, DASHBOARD_VIEWS as v, PLAN_BODY_CAP_BYTES as vt, BenchmarkCase as w, PlanRevision as wt, OPERATOR_SURFACES as x, PLAN_RESULT_HOOK_EVENT as xt, InstallFlavor as y, PLAN_HOOK_EVENT as yt, WorkflowCommentBody as z };
2940
+ 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 };
@@ -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 POSTHOG_TRAFFIC_BASELINE_RANGE, G as FLYING_ANIMALS_GAP_RANGE, J as MEMORY_RESERVE_MB_RANGE, K as FLYING_ANIMALS_SCALE_RANGE, Q as POSTHOG_FIX_TIMEOUT_RANGE, U as FLYING_ANIMALS_DEFAULTS, W as FLYING_ANIMALS_DURATION_RANGE, X as PORT_RANGE, Y as NON_NEGATIVE_NUMBER_RANGE, Z as POSITIVE_NUMBER_RANGE, at as USAGE_INTEGER_RANGES, ct as WORKFLOWS_MAX_ACTIONS_PER_POLL_RANGE, d as POST_TURN_CHECK_MODES, et as POSTHOG_TRAFFIC_MIN_USERS_RANGE, f as UPDATE_CHANNELS, h as normalizeLegacyConfigNumbers, i as Config, it as USAGE_BUDGET_RANGE, l as configIssueMessage, lt as WORKFLOWS_MAX_CONCURRENT_SESSIONS_RANGE, n as BUILTIN_AGENT_IDS, nt as REPLAY_BUFFER_KB_RANGE, ot as USAGE_RETAIN_DAYS_RANGE, p as USAGE_COST_MODES, q as KEEP_MERGEABLE_TIMEOUT_MINUTES_RANGE, rt as TASK_TITLE_TIMEOUT_RANGE, s as RUNTIME_CONFIG_SCALAR_KEYS, st as USAGE_SCAN_INTERVAL_RANGE, t as AGENT_ID_SHAPE_MESSAGE, tt as POSTHOG_TRAFFIC_MULTIPLIER_RANGE, u as BranchGcFileSettings } from "./config-bGil1wqg.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-CGRYpcBQ.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-s0s0gCZJ.js";
7
+ import { s as FeatureFlagsResponse, u as TELEMETRY_KILL_SWITCH_FLAG } from "./contracts-Fup4hhP9.js";
8
8
  import fs from "node:fs";
9
9
  import path from "node:path";
10
10
  import os from "node:os";
@@ -1635,7 +1635,7 @@ var SECTIONS = Object.freeze([
1635
1635
  id: "team-review-re-review-after-hours",
1636
1636
  path: "teamReview.reReviewAfterHours",
1637
1637
  title: "Re-review after",
1638
- description: "When a reviewed PR has a new head, review it again after this long since its last review. Queue review runs it at any time.",
1638
+ description: "When a reviewed PR has a new head, review it again after this long since its last review. Re-run review runs it at any time.",
1639
1639
  control: "number",
1640
1640
  range: POSITIVE_NUMBER_RANGE,
1641
1641
  unit: HOURS,
@@ -0,0 +1 @@
1
+ export { s as loadConfigFile } from "./config-store-B1u3WA5t.js";
@@ -1,13 +1,19 @@
1
- import "./session-GoNLV4AT.js";
2
- import { b as OPERATOR_ACTIONS_BY_SURFACE, n as BUILTIN_AGENT_IDS, v as DASHBOARD_VIEWS, x as OPERATOR_SURFACES } from "./config-bGil1wqg.js";
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-CGRYpcBQ.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"]);
6
+ var SESSION_END_CAUSES = Object.freeze([
7
+ "removed",
8
+ "replaced",
9
+ "server_stopped"
10
+ ]);
6
11
  var SESSION_EXIT_KINDS = Object.freeze([
7
12
  "clean",
8
13
  "error",
9
14
  "signal",
10
- "no_output"
15
+ "no_output",
16
+ ...SESSION_END_CAUSES
11
17
  ]);
12
18
  var TEAM_REVIEW_SETTLED_OUTCOMES = Object.freeze([
13
19
  "approve",
@@ -72,6 +78,10 @@ var OperatorActionProperties = z.object({
72
78
  surface: z.enum(OPERATOR_SURFACES),
73
79
  action: z.enum(OPERATOR_ACTIONS)
74
80
  }).strict().refine(isActionOfSurface, { message: "action does not belong to its surface" });
81
+ var OnboardingStepProperties = z.object({
82
+ step: z.enum(ONBOARDING_STEPS),
83
+ state: z.enum(ONBOARDING_STEP_STATES)
84
+ }).strict();
75
85
  var TeamReviewDraftedProperties = z.object({ inline_comment_count: nonNegativeInteger }).strict();
76
86
  var TeamReviewSettledProperties = z.object({
77
87
  duration_ms: nonNegativeInteger,
@@ -89,13 +99,20 @@ var RadarInvestigationFinishedProperties = z.object({
89
99
  error_reason: z.enum(RADAR_ERROR_REASONS).optional()
90
100
  }).strict();
91
101
  var RadarFixHandoffFailedProperties = z.object({ step: z.enum(RADAR_HANDOFF_STEPS) }).strict();
92
- var DashboardTelemetryReport = z.discriminatedUnion("event", [z.object({
93
- event: z.literal("view_shown"),
94
- properties: ViewShownProperties
95
- }), z.object({
96
- event: z.literal("operator_action"),
97
- properties: OperatorActionProperties
98
- })]);
102
+ var DashboardTelemetryReport = z.discriminatedUnion("event", [
103
+ z.object({
104
+ event: z.literal("view_shown"),
105
+ properties: ViewShownProperties
106
+ }),
107
+ z.object({
108
+ event: z.literal("operator_action"),
109
+ properties: OperatorActionProperties
110
+ }),
111
+ z.object({
112
+ event: z.literal("onboarding_step"),
113
+ properties: OnboardingStepProperties
114
+ })
115
+ ]);
99
116
  var ExceptionFrame = z.object({
100
117
  platform: z.enum(["node:javascript", "web:javascript"]),
101
118
  function: boundedText,
@@ -140,6 +157,7 @@ var TELEMETRY_EVENT_SCHEMAS = Object.freeze({
140
157
  $ai_generation: AiGenerationProperties,
141
158
  view_shown: ViewShownProperties,
142
159
  operator_action: OperatorActionProperties,
160
+ onboarding_step: OnboardingStepProperties,
143
161
  team_review_drafted: TeamReviewDraftedProperties,
144
162
  team_review_settled: TeamReviewSettledProperties,
145
163
  team_review_post_refused: TeamReviewPostRefusedProperties,
@@ -161,7 +179,7 @@ Object.freeze([
161
179
  },
162
180
  {
163
181
  name: "session_ended",
164
- description: "A session exited: how it exited and how long it ran, in whole seconds."
182
+ description: "A session ended: how it exited, or that it was removed, replaced by a settings change or stopped with the server, and how long it ran, in whole seconds."
165
183
  },
166
184
  {
167
185
  name: "$exception",
@@ -177,7 +195,11 @@ Object.freeze([
177
195
  },
178
196
  {
179
197
  name: "operator_action",
180
- description: "An action taken in the Usage, Issues, Radar or Reviews tab: which tab and which action, from a fixed list. Never which repository, pull request, issue or session it was taken on."
198
+ description: "An action taken in the Usage, Issues, Radar or Reviews tab or the first-run checklist: which tab and which action, from a fixed list. Never which repository, pull request, issue or session it was taken on."
199
+ },
200
+ {
201
+ name: "onboarding_step",
202
+ description: "The first-run checklist moved a step to current or done, with which step. Sent once per change while the page is open."
181
203
  },
182
204
  {
183
205
  name: "team_review_drafted",
@@ -1,4 +1,4 @@
1
- import { t as AGENT_API_VERBS } from "./session-GoNLV4AT.js";
1
+ import { t as AGENT_API_VERBS } from "./session-CUc6d7aS.js";
2
2
  import { r as execFileSync } from "./child-process-safe-D4hyVIXj.js";
3
3
  //#region server/core/command-line-core.ts
4
4
  var SUBCOMMANDS_HONORING_TRAILING_GLOBAL_OPTIONS = /* @__PURE__ */ new Set([
@@ -1,6 +1,6 @@
1
1
  import { r as errorMessage } from "./text-DoirglWV.js";
2
2
  import { s as relayPath } from "./runtime-paths-ghcH9CeW.js";
3
- import { j as SIGN_URL_ENV, n as AGENT_URL_ENV } from "./session-GoNLV4AT.js";
3
+ import { j as SIGN_URL_ENV, n as AGENT_URL_ENV } from "./session-CUc6d7aS.js";
4
4
  import { n as isRecord } from "./coerce-NSst8oRP.js";
5
5
  import { t as HOOK_URL_ENV } from "./hook-relay-core-DA_bz2KA.js";
6
6
  import { a as SANE_YOLO_PATH_ENV, o as saneYoloEnv, r as RTK_PATH_ENV } from "./rtk-hook-core-B-MpzPin.js";