glimmervoid 0.38.0 → 0.38.1

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 (31) hide show
  1. package/dist/bin/glimmervoid.js +16 -14
  2. package/dist/chunks/{adapters-B-IkWl-r.js → adapters-B0EJp_oE.js} +3 -3
  3. package/dist/chunks/{adapters-Dt3vwxwY.js → adapters-BIbF8RJB.js} +1 -1
  4. package/dist/chunks/{agent-api-cli-BcZ9DLCF.js → agent-api-cli-B5Tm0wXO.js} +27 -8
  5. package/dist/chunks/{agent-api-cli-3hryuewm.js → agent-api-cli-BDu1CxZf.js} +1 -1
  6. package/dist/chunks/{agent-api-core--8WtU1xU.js → agent-api-core-B_mUSenR.js} +36 -4
  7. package/dist/chunks/{agent-setup-cli-BixDoCkF.js → agent-setup-cli-C9MMiask.js} +1 -1
  8. package/dist/chunks/{config-BHBZsCBc.js → browser-config-BrBT8269.js} +2 -217
  9. package/dist/chunks/config-CjawSOBk.js +219 -0
  10. package/dist/chunks/config-store-B6mX2phK.js +1 -0
  11. package/dist/chunks/{config-store-DbfMbz4j.js → config-store-CKcDJebD.js} +3 -2
  12. package/dist/chunks/{contracts-u40eJhaf.js → contracts-HVCEJfxs.js} +6 -239
  13. package/dist/chunks/factory-D7ryES9n.js +240 -0
  14. package/dist/chunks/{git-version-BpnTd8sU.js → git-version-rWZjF2Px.js} +1 -1
  15. package/dist/chunks/{grok-xFs6zIu4.js → grok-y65HOvlU.js} +1 -1
  16. package/dist/chunks/{knowledge-graph-cli-DcspNqhz.js → knowledge-graph-cli-ByUJoKw_.js} +1 -1
  17. package/dist/chunks/{main-w01-P1oZ.js → main-DeiiNNI7.js} +149 -46
  18. package/dist/chunks/{pair-cli-BdoyrDCr.js → pair-cli-B9hHUHLl.js} +2 -2
  19. package/dist/chunks/{remote-config-61zJ0hME.js → remote-config-DlquYoVe.js} +1 -1
  20. package/dist/chunks/{session-8Pv0y1vz.js → session-BlT68ppa.js} +5 -2
  21. package/dist/chunks/{session-routes-D-GZC-Sy.js → session-routes-CT1JrjoT.js} +1 -1
  22. package/dist/chunks/{settings-cli-DKJsm3AP.js → settings-cli-C5i9v59a.js} +3 -3
  23. package/dist/chunks/{ssh-sign-cli-Dc2gOCwE.js → ssh-sign-cli-C74BGTQS.js} +2 -2
  24. package/dist/client/assets/index-ChXRDbjt.js +275 -0
  25. package/dist/client/assets/index-DA251uL1.css +1 -0
  26. package/dist/client/index.html +3 -2
  27. package/dist/server/index.js +1 -1
  28. package/package.json +3 -2
  29. package/dist/chunks/config-store-DYj3wYgw.js +0 -1
  30. package/dist/client/assets/index-BfqmOGgc.js +0 -275
  31. package/dist/client/assets/index-DxABp5yJ.css +0 -1
@@ -2,10 +2,10 @@ import { i as sanitizeOneLine, n as requireExecutableSpawnHelper, r as firstLine
2
2
  import { a as isMissingFileError, i as errorText$1, r as errorMessage, t as errorCode } from "./text-DoirglWV.js";
3
3
  import { a as sanitizeWorktreeName, i as safePathSegment, n as equalsIgnoringCaseOnWindows, r as isPathInside, t as caseFoldedPathKey } from "./paths-Bu4eH1Yd.js";
4
4
  import { a as packageRoot, n as cliPath, o as relayPath, r as clientDir, s as resolvePackageBin, t as bundled } from "./runtime-paths-BkeftE60.js";
5
- import { At as HEX_SHA_RE, B as MyPrMergeMethod, Bt as MERGEABLE_LIVE_STATES, C as SESSION_DOC_BODY_CAP_BYTES, Ct as TeamReviewThreadResult, E as SSH_SIGN_BODY_CAP_BYTES, Et as decisionAsIfApprovalRequired, F as MyPrAutoRebase, Ft as repoParts, Ht as STATES, I as MyPrCheckContext, J as MyPrThreadNode, K as MyPrSearchNode, L as MyPrCheckContextsResponse, M as TASK_TITLE_CONTROL_CHARACTERS, Mt as GH_SEGMENT, N as TaskTitle, Nt as NODE_ID_RE, Ot as hasStandingViewerApproval, P as LinkedPr, Pt as REPO_SLUG_RE, R as MyPrKeepMergeableRequest, St as TeamReviewThreadCommentsResponse, T as SIGN_URL_ENV, Tt as canApproveAfterComment, U as MyPrMergeStateResponse, V as MyPrMergeRequest, Vt as RESTARTABLE_STATES, W as MyPrMergeWhenReadyRequest, X as MyPrsState, Y as MyPrThreadsResponse, Z as MyPrsStatus, a as AgentDispatchRequest, at as PostingPlan, bt as TeamReviewStateEntry, ct as ReviewChecksState, d as AgentTicketRequest, dt as ReviewFinding, et as CommitSha, f as CONVERSATION_APPROVAL_SUMMARY_MAX_CHARS, ft as ReviewResult, gt as TeamReviewActionRequest, ht as SearchedPr, it as GithubReviewState, j as SshSignRequest, jt as shortSha$1, kt as FULL_SHA_RE, lt as ReviewComment, m as CONVERSATION_TOOL_RESULT_HOOK_EVENT, mt as ReviewVerdict, n as AGENT_URL_ENV, nt as FindingSeverity, ot as PrDetail, p as CONVERSATION_PERMISSION_HOOK_EVENT, pt as ReviewThreadId, q as MyPrSearchResponse, r as ASK_USER_QUESTION_TOOL_NAME, rt as GithubReviewDecision, st as QueuedReview, tt as DECIDING_REVIEW_STATES, ut as ReviewDraft, v as ConversationQuestion, vt as TeamReviewCompareFiles, wt as TeamReviewThreadsRepository, x as RefinedTaskTitle, xt as TeamReviewStatus, y as ORCHESTRATOR_AGENT_VERBS, yt as TeamReviewResolveResponse, zt as KILLABLE_STATES } from "./session-8Pv0y1vz.js";
5
+ import { At as FULL_SHA_RE, Bt as KILLABLE_STATES, Ct as TeamReviewThreadCommentsResponse, D as SSH_SIGN_BODY_CAP_BYTES, Dt as decisionAsIfApprovalRequired, E as SIGN_URL_ENV, Et as canApproveAfterComment, F as LinkedPr, Ft as REPO_SLUG_RE, G as MyPrMergeWhenReadyRequest, H as MyPrMergeRequest, Ht as RESTARTABLE_STATES, I as MyPrAutoRebase, It as repoParts, J as MyPrSearchResponse, L as MyPrCheckContext, M as SshSignRequest, Mt as shortSha$1, N as TASK_TITLE_CONTROL_CHARACTERS, Nt as GH_SEGMENT, P as TaskTitle, Pt as NODE_ID_RE, Q as MyPrsStatus, R as MyPrCheckContextsResponse, S as RefinedTaskTitle, St as TeamReviewStatus, Tt as TeamReviewThreadsRepository, Ut as STATES, V as MyPrMergeMethod, Vt as MERGEABLE_LIVE_STATES, W as MyPrMergeStateResponse, X as MyPrThreadsResponse, Y as MyPrThreadNode, Z as MyPrsState, _t as TeamReviewActionRequest, a as AgentDispatchRequest, at as GithubReviewState, b as ORCHESTRATOR_AGENT_VERBS, bt as TeamReviewResolveResponse, ct as QueuedReview, dt as ReviewDraft, f as AgentTicketRequest, ft as ReviewFinding, gt as SearchedPr, h as CONVERSATION_TOOL_RESULT_HOOK_EVENT, ht as ReviewVerdict, it as GithubReviewDecision, jt as HEX_SHA_RE, kt as hasStandingViewerApproval, lt as ReviewChecksState, m as CONVERSATION_PERMISSION_HOOK_EVENT, mt as ReviewThreadId, n as AGENT_URL_ENV, nt as DECIDING_REVIEW_STATES, ot as PostingPlan, p as CONVERSATION_APPROVAL_SUMMARY_MAX_CHARS, pt as ReviewResult, q as MyPrSearchNode, r as ASK_USER_QUESTION_TOOL_NAME, rt as FindingSeverity, st as PrDetail, tt as CommitSha, ut as ReviewComment, w as SESSION_DOC_BODY_CAP_BYTES, wt as TeamReviewThreadResult, xt as TeamReviewStateEntry, y as ConversationQuestion, yt as TeamReviewCompareFiles, z as MyPrKeepMergeableRequest } from "./session-BlT68ppa.js";
6
6
  import { n as execFileAsync, o as spawn, r as execFileSync, t as execFile } from "./child-process-safe-CbQnyh7D.js";
7
7
  import { n as glimmervoidHomeDir, t as decideConfigPath } from "./config-path-core-DFt-TemS.js";
8
- import { i as parseCommandLine, n as warnWhenGitIsTooOld } from "./git-version-BpnTd8sU.js";
8
+ import { i as parseCommandLine, n as warnWhenGitIsTooOld } from "./git-version-rWZjF2Px.js";
9
9
  import { n as checkGuardrailsDependencies, t as allowGuardedSpawn } from "./guardrails-deps-Cb-ki4EU.js";
10
10
  import { t as HOOK_URL_ENV } from "./hook-relay-core-DA_bz2KA.js";
11
11
  import { t as HOOK_VIA_GUARDRAILS_PROXY_ENV } from "./guardrails-proxy-core-BI3rdY-m.js";
@@ -16,18 +16,20 @@ import { a as SANE_YOLO_FILES } from "./rtk-hook-core-VrUafGAp.js";
16
16
  import { _ as lineStartOffsets, a as projectForUri, b as replacedSpanOfWholeTextChange, c as visionsLaneReloadSignature, d as applyDidOpen, f as createDocStore, g as lineOfOffset, h as getDoc, i as isUriInProjects, l as applyDidChange, m as formatRange, n as applyEditorNotification, o as resolveVisionsScopeProjects, p as detectBlankLineBoundary, r as createEditorState, s as scopePathsOf, t as ACTIVITY_METHOD, u as applyDidClose, v as listDocs, x as uriOfParams, y as offsetOfPosition } from "./ingest-editor-core-B2tycW_m.js";
17
17
  import { n as DEFAULT_MAX_MS, r as nextBackoffMs, t as DEFAULT_BASE_MS } from "./backoff-DjVpfHk7.js";
18
18
  import { n as unrefTimer, t as DEFAULT_TIMER_FNS } from "./timer-deps-u2DAQLok.js";
19
- import { o as permitsHelpCommand, r as describeSessionLimits } from "./session-routes-D-GZC-Sy.js";
20
- import { a as decideFactoryControlAllowance, c as deriveChildSessionName, d as describeUnavailableFactoryState, f as formatFactoryStatus, h as parseAgentVerb, i as decideEditAllowance, l as describePushLanding, m as isOrchestratorAgentVerb, n as decideAgentRequest, o as decideSpawnAllowance, r as decideAttentionAllowance, s as decideTicketAction, t as REFUSAL_REASON, u as describePushRouteRefusal } from "./agent-api-core--8WtU1xU.js";
21
- import { s as GLIMMERVOID_SECRET_KEYS } from "./grok-xFs6zIu4.js";
19
+ import { o as permitsHelpCommand, r as describeSessionLimits } from "./session-routes-CT1JrjoT.js";
20
+ import { $ as CoherenceTicketCreated, C as WorkflowsState, G as USAGE_INTEGER_RANGES, N as KEEP_MERGEABLE_TIMEOUT_MINUTES_RANGE, T as USAGE_VENDOR_KEYS, X as CoherenceOrient, a as DEFAULT_FACTORY_CHECKS, b as WorkflowSearchNode, et as CoherenceWorkCreated, o as DEFAULT_FACTORY_PROTECTED_PATHS, tt as CoherenceWorkInspect, v as WorkflowCommentBody, w as USAGE_COST_MODES, x as WorkflowsSettings, y as WorkflowLabelName } from "./browser-config-BrBT8269.js";
21
+ import { _ as isSingleFactoryPathSegment, a as FactoryControlRequest, c as FactoryHarnessVerdict, d as FactoryQueueIntentRequest, g as FactoryWorkerEvent, i as FactoryConsequences, l as FactoryLaneState, m as FactoryReviewerOutput, n as FACTORY_ERROR_MAX_CHARS, p as FactoryReviewVerdict, r as FACTORY_PROTECTED_PATH_FLOOR, s as FactoryHarnessStateLine, u as FactoryProjectState } from "./factory-D7ryES9n.js";
22
+ import { _ as parseAgentVerb, a as decideFactoryControlAllowance, c as deriveChildSessionName, d as describePushRouteRefusal, f as describeUnavailableFactoryState, g as isOrchestratorAgentVerb, i as decideEditAllowance, l as describeFactorySetupProfile, m as formatFactoryStatus, n as decideAgentRequest, o as decideSpawnAllowance, p as findSessionProjectId, r as decideAttentionAllowance, s as decideTicketAction, t as REFUSAL_REASON, u as describePushLanding } from "./agent-api-core-B_mUSenR.js";
23
+ import { s as GLIMMERVOID_SECRET_KEYS } from "./grok-y65HOvlU.js";
22
24
  import { n as shellQuote } from "./hook-command-core-qTNK-xMF.js";
23
25
  import { C as headroomFromReadings, D as parseMemAvailableBytes, E as parseCgroupV2Path, S as cgroupLimitBytes, T as parseCgroupBytes, _ as createSpawnGate, a as jsonStateLoadError, c as loadedJsonValue, d as writeJsonAtomicSync, f as writeTextAtomic, g as createSerialQueue, h as createMemoryAdmission, i as createJsonStateWriter, m as createKeyedSerialQueue, n as appendJsonLines, o as loadJsonStateFile, p as writeTextAtomicSync, r as createJsonStateStore, s as loadJsonStateFileSync, t as appendJsonLine, u as writeJsonAtomic, v as isQueueAdmissionAbandoned, w as memoryReserveBytes, x as cgroupAncestorPaths, y as isQueueAdmissionTimeout } from "./json-file-CIJf0Cel.js";
24
- import { $ as CoherenceWorkCreated, C as USAGE_COST_MODES, M as KEEP_MERGEABLE_TIMEOUT_MINUTES_RANGE, Q as CoherenceTicketCreated, S as WorkflowsState, W as USAGE_INTEGER_RANGES, Y as CoherenceOrient, a as ConfigUpdate, b as WorkflowSearchNode, c as RUNTIME_CONFIG_SCALAR_KEYS, et as CoherenceWorkInspect, l as TASK_TITLE_SOURCE_PRIORITY, m as DEFAULT_FACTORY_PROTECTED_PATHS, o as PersistedTaskTitle, p as DEFAULT_FACTORY_CHECKS, r as BrowserConfig, s as ProjectConfig, u as configIssueMessage, v as WorkflowCommentBody, w as USAGE_VENDOR_KEYS, x as WorkflowsSettings, y as WorkflowLabelName } from "./config-BHBZsCBc.js";
25
- import { B as buildExceptionProperties, F as TELEMETRY_BATCH_URL, G as decideTelemetryConsent, H as classifySessionExit, I as TELEMETRY_FLAGS_URL, J as parsePosthogReleaseId, K as exceptionFingerprint, L as adapterBucket, P as FIRST_RUN_NOTICE, Q as stableConfigKey, R as buildAiGenerationEvents, U as decideIsDevInstall, V as buildFactoryDecisionEvent, W as decideRemoteTelemetryState, Y as resolveProjectToken, a as generateProjectId, at as usablePrefixes, b as validateSettingsBlock, ct as comparableDirectoryPath, d as assetForPlatform, et as DEFAULT_BRANCH_GC_PREFIXES, f as decideRtkInstall, g as verifyDigest, h as isRtkBinaryName, i as ensureProjectIds, it as sessionIdFromBranch, lt as isSameDirectoryPath, m as installTargetPath, n as DEFAULT_CONFIG, nt as planBranchGc, o as glimmervoidHomeDir$1, ot as worktreeIntegrationTips, p as findEscapingArchiveMember, q as nodeMajorVersion, r as createConfigStore, rt as planWorktreeGc, st as canonicalizePath, t as ABORT_CONFIG_SAVE, tt as matchedPrefix, v as mergeSettingsBlock, y as settingsBlockSpecFor, z as buildBrowserExceptionProperties } from "./config-store-DbfMbz4j.js";
26
- import { $ as FactoryControlRequest, A as ChangeMap, B as MergedPrListing, C as GithubIssuePullRequestsRepository, D as IssuesSearchResponse, E as IssueUpdate, F as BenchmarkJudgement, G as TELEMETRY_EVENT_SCHEMAS, H as PrCheckoutCaseInput, I as BenchmarkRun, J as FACTORY_DECISION_OUTPUT_MAX_BYTES, L as BenchmarkStatus, M as BenchmarkActionRequest, N as BenchmarkCase, O as IssuesState, P as BenchmarkId, Q as FactoryConsequences, R as BenchmarkSuite, S as planTitle, T as IssueKey, V as MinedPrReviewData, W as PendingCrashReport, X as FACTORY_ERROR_MAX_CHARS, Y as FactoryDecisionLogLine, Z as FACTORY_PROTECTED_PATH_FLOOR, _ as PLAN_RESULT_HOOK_EVENT, a as parseDataClientMessage, at as FactoryReviewVerdict, b as PlanRevision, c as DIFF_ANNOTATION_NOTE_MAX_CHARS, ct as isSingleFactoryPathSegment, d as MAX_RAW_LINE_CHARS, et as FactoryHarnessStateLine, f as TraceCheckpoint, g as PLAN_HOOK_OUTPUT_MAX_CHARS, h as PLAN_HOOK_EVENT, i as parseDataAttachHistory, it as FactoryQueueIntentRequest, j as changeMapFactId, k as IssuesStatus, l as InstallFlavor, m as PLAN_BODY_CAP_BYTES, n as HookEnvelope, nt as FactoryLaneState, o as CONTROL_FRAME_MAX_BYTES, ot as FactoryReviewerOutput, p as TraceRecord, q as TelemetryState, r as DEEP_HISTORY_SCROLLBACK_LINES, rt as FactoryProjectState, s as ClientMessage, st as FactoryWorkerEvent, t as HTTP_URL_RE, tt as FactoryHarnessVerdict, u as UpdateJournal, v as PLAN_TOOL_NAME, w as GithubIssueResponse, x as parseExitPlanModeHookPayload, y as PlanDecision, z as CommitComparison } from "./contracts-u40eJhaf.js";
27
- import { A as shouldPersistWarehouse, C as isUsageFile, D as resolveProjectsDirs, E as projectDirCandidates, M as claudeCode, O as scopedClaudeRoots, S as grokRootCandidates, T as passOutcome, _ as continuationDelayMs, a as describeAgentResolvability, b as expandTilde, c as isKnownAgentId, d as resolveAdapter, f as setCustomAgents, g as codexSessionIdFromPath, h as codexRootCandidates, i as customAgentFingerprint, j as splitLines$1, k as shouldEvaluateDespiteIoFailures, l as listAgentIds, m as codexHomes, n as cachedAgentResolvability, o as getAdapter, p as codexFallbackRoots, r as commandFor, s as hookProfileOf, t as DEFAULT_AGENT_ID, u as resetCommandCache, v as decideFileRead, w as laneSpendStatus, x as grokHomes, y as dedupeCodexFiles } from "./adapters-B-IkWl-r.js";
26
+ import { B as buildExceptionProperties, F as TELEMETRY_BATCH_URL, G as decideTelemetryConsent, H as classifySessionExit, I as TELEMETRY_FLAGS_URL, J as parsePosthogReleaseId, K as exceptionFingerprint, L as adapterBucket, P as FIRST_RUN_NOTICE, Q as stableConfigKey, R as buildAiGenerationEvents, U as decideIsDevInstall, V as buildFactoryDecisionEvent, W as decideRemoteTelemetryState, Y as resolveProjectToken, a as generateProjectId, at as usablePrefixes, b as validateSettingsBlock, ct as comparableDirectoryPath, d as assetForPlatform, et as DEFAULT_BRANCH_GC_PREFIXES, f as decideRtkInstall, g as verifyDigest, h as isRtkBinaryName, i as ensureProjectIds, it as sessionIdFromBranch, lt as isSameDirectoryPath, m as installTargetPath, n as DEFAULT_CONFIG, nt as planBranchGc, o as glimmervoidHomeDir$1, ot as worktreeIntegrationTips, p as findEscapingArchiveMember, q as nodeMajorVersion, r as createConfigStore, rt as planWorktreeGc, st as canonicalizePath, t as ABORT_CONFIG_SAVE, tt as matchedPrefix, v as mergeSettingsBlock, y as settingsBlockSpecFor, z as buildBrowserExceptionProperties } from "./config-store-CKcDJebD.js";
27
+ import { a as ConfigUpdate, c as RUNTIME_CONFIG_SCALAR_KEYS, l as TASK_TITLE_SOURCE_PRIORITY, o as PersistedTaskTitle, r as BrowserConfig, s as ProjectConfig, u as configIssueMessage } from "./config-CjawSOBk.js";
28
+ import { A as ChangeMap, B as MergedPrListing, C as GithubIssuePullRequestsRepository, D as IssuesSearchResponse, E as IssueUpdate, F as BenchmarkJudgement, G as TELEMETRY_EVENT_SCHEMAS, H as PrCheckoutCaseInput, I as BenchmarkRun, J as FACTORY_DECISION_OUTPUT_MAX_BYTES, L as BenchmarkStatus, M as BenchmarkActionRequest, N as BenchmarkCase, O as IssuesState, P as BenchmarkId, R as BenchmarkSuite, S as planTitle, T as IssueKey, V as MinedPrReviewData, W as PendingCrashReport, Y as FactoryDecisionLogLine, _ as PLAN_RESULT_HOOK_EVENT, a as parseDataClientMessage, b as PlanRevision, c as DIFF_ANNOTATION_NOTE_MAX_CHARS, d as MAX_RAW_LINE_CHARS, f as TraceCheckpoint, g as PLAN_HOOK_OUTPUT_MAX_CHARS, h as PLAN_HOOK_EVENT, i as parseDataAttachHistory, j as changeMapFactId, k as IssuesStatus, l as InstallFlavor, m as PLAN_BODY_CAP_BYTES, n as HookEnvelope, o as CONTROL_FRAME_MAX_BYTES, p as TraceRecord, q as TelemetryState, r as DEEP_HISTORY_SCROLLBACK_LINES, s as ClientMessage, t as HTTP_URL_RE, u as UpdateJournal, v as PLAN_TOOL_NAME, w as GithubIssueResponse, x as parseExitPlanModeHookPayload, y as PlanDecision, z as CommitComparison } from "./contracts-HVCEJfxs.js";
29
+ import { A as shouldPersistWarehouse, C as isUsageFile, D as resolveProjectsDirs, E as projectDirCandidates, M as claudeCode, O as scopedClaudeRoots, S as grokRootCandidates, T as passOutcome, _ as continuationDelayMs, a as describeAgentResolvability, b as expandTilde, c as isKnownAgentId, d as resolveAdapter, f as setCustomAgents, g as codexSessionIdFromPath, h as codexRootCandidates, i as customAgentFingerprint, j as splitLines$1, k as shouldEvaluateDespiteIoFailures, l as listAgentIds, m as codexHomes, n as cachedAgentResolvability, o as getAdapter, p as codexFallbackRoots, r as commandFor, s as hookProfileOf, t as DEFAULT_AGENT_ID, u as resetCommandCache, v as decideFileRead, w as laneSpendStatus, x as grokHomes, y as dedupeCodexFiles } from "./adapters-B0EJp_oE.js";
28
30
  import { t as HOOK_TOOLS } from "./hook-tools-BkxllUHE.js";
29
31
  import { a as formatSshPublicKey, c as orderAgentSockets, i as commitSigningShimText, l as parseSshPublicKey, n as NO_AGENT_HOLDS_KEY, o as isForwardedAgentDirName, r as agentListsKey, s as isSignableGitObject, t as COMMIT_SIGNING_SHIM_NAME } from "./ssh-signing-core-CRhVVWNW.js";
30
- import { a as configSiblingPath, c as defaultPairingsPath, d as decideDeviceAuth, f as deviceNameFromUserAgent, l as defaultSeenPath, n as normalizeRemoteConfig, o as createPairingsStore, p as hashSecret, r as validateRemoteConfig, s as createSeenStore, t as decideBindHost, u as DEFAULT_DEVICE_MAX_AGE_MS } from "./remote-config-61zJ0hME.js";
32
+ import { a as configSiblingPath, c as defaultPairingsPath, d as decideDeviceAuth, f as deviceNameFromUserAgent, l as defaultSeenPath, n as normalizeRemoteConfig, o as createPairingsStore, p as hashSecret, r as validateRemoteConfig, s as createSeenStore, t as decideBindHost, u as DEFAULT_DEVICE_MAX_AGE_MS } from "./remote-config-DlquYoVe.js";
31
33
  import { _ as escapeMarkup, g as createLaneLog, n as createVisionsSetup } from "./visions-setup-B-ZeRdsi.js";
32
34
  import { t as getRtkPath } from "./rtk-resolver-C_micGrL.js";
33
35
  import { createRequire } from "node:module";
@@ -198,6 +200,7 @@ function createLifecycle({ shutdown, httpServer, extraServers = [], onRestart =
198
200
  warn: log
199
201
  });
200
202
  closeExtraServers(extraServers);
203
+ await prepareHandOffOnce();
201
204
  let exited = false;
202
205
  const doExit = () => {
203
206
  if (exited) return;
@@ -5008,6 +5011,70 @@ function createAgentApiWiring({ config, agentSessions, listAllSessions, listBoar
5008
5011
  if (routeRefusal) return routeRefusal;
5009
5012
  return describePushLanding(await session.mergeAndContinue({ force: true }));
5010
5013
  }
5014
+ async function setUpFactoryProject(session, factoryPort, projects) {
5015
+ const projectId = findSessionProjectId(config.projects, session.path);
5016
+ if (!projectId) return {
5017
+ status: 404,
5018
+ body: {
5019
+ ok: false,
5020
+ error: `no configured project has the path ${session.path}, so the operator has to add this repository as a project first`
5021
+ }
5022
+ };
5023
+ const outcome = await factoryPort.rerunSetup(projectId);
5024
+ if (!outcome.ok) return {
5025
+ status: 409,
5026
+ body: {
5027
+ ok: false,
5028
+ error: outcome.reason
5029
+ }
5030
+ };
5031
+ return {
5032
+ status: 200,
5033
+ body: {
5034
+ ok: true,
5035
+ projectId,
5036
+ profile: outcome.profile,
5037
+ text: describeFactorySetupProfile(outcome.profile, projects.some((project) => project.projectId === projectId))
5038
+ }
5039
+ };
5040
+ }
5041
+ async function queueFactoryIntent(session, factoryPort, projects, request) {
5042
+ const projectId = findSessionProjectId(config.projects, session.path);
5043
+ if (!projectId) return {
5044
+ status: 404,
5045
+ body: {
5046
+ ok: false,
5047
+ error: `no configured project has the path ${session.path}, so the operator has to add this repository as a project first`
5048
+ }
5049
+ };
5050
+ if (!projects.some((project) => project.projectId === projectId)) return {
5051
+ status: 409,
5052
+ body: {
5053
+ ok: false,
5054
+ error: `${projectId} is not a factory project yet: commit a coherence.config.json holding {} at the repository root, land it on the integration branch with glimmervoid push, then queue again`
5055
+ }
5056
+ };
5057
+ const outcome = await factoryPort.queueIntent({
5058
+ ...request,
5059
+ projectId
5060
+ });
5061
+ if (!outcome.ok) return {
5062
+ status: 409,
5063
+ body: {
5064
+ ok: false,
5065
+ error: outcome.error ?? "the factory refused the intent"
5066
+ }
5067
+ };
5068
+ return {
5069
+ status: 200,
5070
+ body: {
5071
+ ok: true,
5072
+ projectId,
5073
+ workId: outcome.workId,
5074
+ text: `Queued ${outcome.workId ?? "the intent"} on ${projectId}. Follow it with glimmervoid factory status --project ${projectId}`
5075
+ }
5076
+ };
5077
+ }
5011
5078
  async function handle(session, verb, payload) {
5012
5079
  const parsed = parseAgentVerb(verb, payload);
5013
5080
  if (!parsed.ok) return {
@@ -5017,7 +5084,7 @@ function createAgentApiWiring({ config, agentSessions, listAllSessions, listBoar
5017
5084
  error: parsed.error
5018
5085
  }
5019
5086
  };
5020
- if (parsed.verb === "factory-status" || parsed.verb === "factory-retry") {
5087
+ if (parsed.verb === "factory-status" || parsed.verb === "factory-retry" || parsed.verb === "factory-setup" || parsed.verb === "factory-queue") {
5021
5088
  const allowance = decideFactoryControlAllowance(roleFactsOf(session));
5022
5089
  if (!allowance.ok) return {
5023
5090
  status: allowance.status,
@@ -5034,6 +5101,8 @@ function createAgentApiWiring({ config, agentSessions, listAllSessions, listBoar
5034
5101
  error: "Factory is not running"
5035
5102
  }
5036
5103
  };
5104
+ if (parsed.verb === "factory-setup") return setUpFactoryProject(session, factory, projects);
5105
+ if (parsed.verb === "factory-queue") return queueFactoryIntent(session, factory, projects, parsed.request);
5037
5106
  if (parsed.verb === "factory-status") {
5038
5107
  const selectedProjects = parsed.request.projectId === void 0 ? projects : projects.filter((project) => project.projectId === parsed.request.projectId);
5039
5108
  if (parsed.request.projectId !== void 0 && selectedProjects.length === 0) return {
@@ -21776,11 +21845,8 @@ var Session = class extends EventEmitter {
21776
21845
  this._taskTitleSources.customTitle = this.customTitle;
21777
21846
  this._updateTaskTitle();
21778
21847
  }
21779
- get settledTaskTitle() {
21780
- return resolveTaskTitle({
21781
- ...this._taskTitleSources,
21782
- pendingPromptTitle: null
21783
- }).taskTitle;
21848
+ get refinedTaskTitle() {
21849
+ return this._taskTitleSources.refinedTitle ?? null;
21784
21850
  }
21785
21851
  get persistedTaskTitle() {
21786
21852
  return buildPersistedTaskTitle(this._taskTitleSources);
@@ -36925,7 +36991,7 @@ function createTaskTitleRefiner({ getConfig, spawnLane, nowFn = () => Date.now()
36925
36991
  const request = {
36926
36992
  session,
36927
36993
  revision: session.taskTitlePromptRevision,
36928
- currentTitle: session.settledTaskTitle,
36994
+ currentTitle: session.refinedTaskTitle,
36929
36995
  recentPrompts: session.recentTaskPrompts
36930
36996
  };
36931
36997
  queuedBySession.set(session, request);
@@ -52032,7 +52098,7 @@ function parseSinceParam(url) {
52032
52098
  return Number.isFinite(n) ? n : null;
52033
52099
  }
52034
52100
  function registerControlHandlers(controlWss, deps) {
52035
- const { sessions, agentSessions = /* @__PURE__ */ new Map(), config, configStore, broadcastControl, generateProjectId, applyConfigReload, applySettingsReload, requestShutdown, requestRestart, handleClientFocus, buildHealthSnapshot, getUpdateStatus, getUpdateJournal = null, getPostTurnLeftoversNotice = null, recheckPostTurnLeftovers = null, checkNow = null, applyUpdate = null, isStaging = null, noteRestartRequested = null, getRadarStatus, posthogReportsDir = null, posthogSetIssueStatus = null, radarArchiveInvestigation = null, getTeamReviewStatus = null, getMyPrsStatus = null, getIssuesStatus = null, issues = null, teamReview = null, myPrs = null, getBenchmarkStatus = null, getFactoryState = null, benchmarks = null, factory = null, createGithubClient = createPrGh, issueProjectRepos = null, serverBuild = () => null, getUsageSessions = null, getUsageReport = null, requestUsageReport = null, getPlanLimits = null, controlReplayLog = null, getRtkInstallStatus = () => null, resolveRtkPath = () => getRtkPath(), conversationFs = fs, conversationGit = runGitForConversationHistory, conversationProjectsDir = claudeProjectsDir(process.env, os.homedir()), readTracePage = null, readPlanRevision = null, decidePlanReview = null, sessionDocs = null, changeMapNarrator = null } = deps;
52101
+ const { sessions, agentSessions = /* @__PURE__ */ new Map(), config, configStore, broadcastControl, generateProjectId, applyConfigReload, applySettingsReload, requestShutdown, requestRestart, handleClientFocus, buildHealthSnapshot, getUpdateStatus, getUpdateJournal = null, getPostTurnLeftoversNotice = null, recheckPostTurnLeftovers = null, checkNow = null, applyUpdate = null, noteRestartRequested = null, getRadarStatus, posthogReportsDir = null, posthogSetIssueStatus = null, radarArchiveInvestigation = null, getTeamReviewStatus = null, getMyPrsStatus = null, getIssuesStatus = null, issues = null, teamReview = null, myPrs = null, getBenchmarkStatus = null, getFactoryState = null, benchmarks = null, factory = null, createGithubClient = createPrGh, issueProjectRepos = null, serverBuild = () => null, getUsageSessions = null, getUsageReport = null, requestUsageReport = null, getPlanLimits = null, controlReplayLog = null, getRtkInstallStatus = () => null, resolveRtkPath = () => getRtkPath(), conversationFs = fs, conversationGit = runGitForConversationHistory, conversationProjectsDir = claudeProjectsDir(process.env, os.homedir()), readTracePage = null, readPlanRevision = null, decidePlanReview = null, sessionDocs = null, changeMapNarrator = null } = deps;
52036
52102
  const changeMaps = createChangeMapService({
52037
52103
  sessions,
52038
52104
  narrator: changeMapNarrator,
@@ -53256,29 +53322,16 @@ function registerControlHandlers(controlWss, deps) {
53256
53322
  }
53257
53323
  await checkNow();
53258
53324
  }
53259
- async function handleUpdateApply(msg, ws) {
53325
+ async function handleUpdateApply(_msg, ws) {
53260
53326
  if (!applyUpdate) {
53261
53327
  sendError(ws, "[update-apply-unavailable] Update application is unavailable.");
53262
53328
  return;
53263
53329
  }
53264
53330
  const outcome = await applyUpdate();
53265
- if (!outcome.ok) {
53266
- sendError(ws, `[${outcome.reason || "update-refused"}] ${outcome.message}`);
53267
- return;
53268
- }
53269
- if (msg.restartWhenStaged !== true) return;
53270
- const confirmedSessionIds = new Set(msg.confirmedSessionIds ?? []);
53271
- if ([...sessions.keys(), ...agentSessions.keys()].some((liveSessionId) => !confirmedSessionIds.has(liveSessionId))) {
53272
- sendError(ws, "[update-restart-skipped] The update is staged, but sessions started since you confirmed. Restart when ready.");
53273
- return;
53274
- }
53275
- handleRestart(msg, ws);
53331
+ if (outcome.ok) return;
53332
+ sendError(ws, `[${outcome.reason || "update-refused"}] ${outcome.message}`);
53276
53333
  }
53277
- function handleRestart(_msg, ws) {
53278
- if (isStaging?.()) {
53279
- sendError(ws, "[update-staging] Wait for the update staging run to finish before restarting.");
53280
- return;
53281
- }
53334
+ function handleRestart(_msg) {
53282
53335
  noteRestartRequested?.();
53283
53336
  console.log("[control] Restart requested via UI");
53284
53337
  broadcastControl({ type: "restarting" });
@@ -53739,7 +53792,6 @@ function createBackendControl(dependencies) {
53739
53792
  recheckPostTurnLeftovers: dependencies.recheckPostTurnLeftovers,
53740
53793
  checkNow: dependencies.checkNow,
53741
53794
  applyUpdate: dependencies.applyUpdate,
53742
- isStaging: dependencies.isStaging,
53743
53795
  noteRestartRequested: dependencies.noteRestartRequested,
53744
53796
  getRadarStatus: () => posthog.getStatus(),
53745
53797
  posthogSetIssueStatus: (args) => posthog.setIssueStatus(args),
@@ -53791,6 +53843,7 @@ var PREVIOUS_DEPENDENCIES_BACKUP_NAME = "prev-node_modules";
53791
53843
  var QUARANTINED_DIST_NAME = "broken-dist";
53792
53844
  var QUARANTINED_DEPENDENCIES_NAME = "broken-node_modules";
53793
53845
  var SUPPORTED_UPDATE_REMOTE = "origin";
53846
+ var LOWEST_SCHEDULING_PRIORITY = "19";
53794
53847
  var TRANSITIONS_ALLOWED_BY_STATE = Object.freeze({
53795
53848
  idle: Object.freeze(["begin-run"]),
53796
53849
  running: Object.freeze([
@@ -53952,6 +54005,21 @@ function planSteps({ lockfileChanged }) {
53952
54005
  "build"
53953
54006
  ];
53954
54007
  }
54008
+ function lowPriorityCommand({ file, args, platform }) {
54009
+ if (platform === "win32") return {
54010
+ file,
54011
+ args
54012
+ };
54013
+ return {
54014
+ file: "nice",
54015
+ args: [
54016
+ "-n",
54017
+ LOWEST_SCHEDULING_PRIORITY,
54018
+ file,
54019
+ ...args
54020
+ ]
54021
+ };
54022
+ }
53955
54023
  function planHandOffRenames({ root, stagingPath, lockfileChanged }) {
53956
54024
  const updatePath = `${root}/.glimmervoid/update`;
53957
54025
  const renames = [{
@@ -54478,6 +54546,7 @@ function createBackendUpdateCheck(dependencies) {
54478
54546
  let inFlight = null;
54479
54547
  let lastChannel = normalizeUpdateChannel(dependencies.config.updateChannel);
54480
54548
  let lastSurfacedIdentity = null;
54549
+ let lastDownloadedIdentity = null;
54481
54550
  let pendingChannelRefresh = false;
54482
54551
  let stopped = false;
54483
54552
  const now = dependencies.now || (() => Date.now());
@@ -54581,6 +54650,26 @@ function createBackendUpdateCheck(dependencies) {
54581
54650
  const latestRelease = status.latest || shortSha(status.latestSha) || "unknown";
54582
54651
  dependencies.logger.log(`[update] A newer glimmervoid is available: ${currentRelease} -> ${latestRelease}. Update: ${status.command}`);
54583
54652
  }
54653
+ function downloadInBackground(status) {
54654
+ const downloadUpdate = dependencies.downloadUpdate;
54655
+ if (!downloadUpdate || dependencies.config.checkForUpdates === false) return;
54656
+ if (!status.updateAvailable || status.applyRefusal) return;
54657
+ const identity = status.latestSha || status.latest;
54658
+ if (!identity || identity === lastDownloadedIdentity) return;
54659
+ lastDownloadedIdentity = identity;
54660
+ dependencies.logger.log(`[update] downloading ${status.latest || shortSha(status.latestSha)} in the background`);
54661
+ const allowRetryAtNextCheck = () => {
54662
+ if (lastDownloadedIdentity === identity) lastDownloadedIdentity = null;
54663
+ };
54664
+ downloadUpdate().then((outcome) => {
54665
+ if (outcome.ok) return;
54666
+ allowRetryAtNextCheck();
54667
+ dependencies.logger.log(`[update] background download stopped: ${outcome.message}`);
54668
+ }, (error) => {
54669
+ allowRetryAtNextCheck();
54670
+ dependencies.logger.log(`[update] background download failed: ${String(error)}`);
54671
+ });
54672
+ }
54584
54673
  function runCheck(ttlMs) {
54585
54674
  if (inFlight) return inFlight;
54586
54675
  const channel = normalizeUpdateChannel(dependencies.config.updateChannel);
@@ -54599,6 +54688,7 @@ function createBackendUpdateCheck(dependencies) {
54599
54688
  });
54600
54689
  const status = recordStatus(updateResult, checkedAt, channel);
54601
54690
  surfaceAvailableUpdate(status);
54691
+ downloadInBackground(status);
54602
54692
  return status;
54603
54693
  }).finally(() => {
54604
54694
  inFlight = null;
@@ -54621,6 +54711,7 @@ function createBackendUpdateCheck(dependencies) {
54621
54711
  recordedStatus = null;
54622
54712
  lastLaneSignature = null;
54623
54713
  lastSurfacedIdentity = null;
54714
+ lastDownloadedIdentity = null;
54624
54715
  updateAbort?.abort();
54625
54716
  return true;
54626
54717
  }
@@ -55374,7 +55465,12 @@ function createUpdateApplyLane(dependencies) {
55374
55465
  stepId,
55375
55466
  now: clock()
55376
55467
  }));
55377
- const outcome = await command(file, args, cwd, timeout);
55468
+ const throttled = lowPriorityCommand({
55469
+ file,
55470
+ args,
55471
+ platform: dependencies.platform || process.platform
55472
+ });
55473
+ const outcome = await command(throttled.file, throttled.args, cwd, timeout);
55378
55474
  journal = appendStepOutput(journal, stepId, outcome.output);
55379
55475
  if (!outcome.ok) throw new Error(outcome.reason || `${stepId} failed`);
55380
55476
  await publish(finishStep(journal, {
@@ -55669,9 +55765,6 @@ function createUpdateApplyLane(dependencies) {
55669
55765
  activeRun = run;
55670
55766
  await run;
55671
55767
  }
55672
- function isStaging() {
55673
- return inFlight;
55674
- }
55675
55768
  function isRestartRequested() {
55676
55769
  return restartRequested;
55677
55770
  }
@@ -55778,7 +55871,6 @@ function createUpdateApplyLane(dependencies) {
55778
55871
  getJournal,
55779
55872
  handOffStagedUpdate,
55780
55873
  isRestartRequested,
55781
- isStaging,
55782
55874
  noteRestartRequested,
55783
55875
  startAfterListening,
55784
55876
  stop,
@@ -56780,6 +56872,12 @@ function createBackend(httpServer, options = {}) {
56780
56872
  visionsSetup.maybeApply();
56781
56873
  laneAssembly.restartDynamicLanes();
56782
56874
  }
56875
+ function downloadUpdateOnceListening() {
56876
+ if (httpServer.listening) return updateApply.applyUpdate();
56877
+ return new Promise((resolve) => {
56878
+ httpServer.once("listening", resolve);
56879
+ }).then(() => updateApply.applyUpdate());
56880
+ }
56783
56881
  const updateCheck = createBackendUpdateCheck({
56784
56882
  config,
56785
56883
  currentVersion: packageJson.version,
@@ -56790,7 +56888,8 @@ function createBackend(httpServer, options = {}) {
56790
56888
  isRestartRequested: () => updateApply.isRestartRequested(),
56791
56889
  getControlClientCount: () => controlWss.clients.size,
56792
56890
  broadcastControl,
56793
- logger: console
56891
+ logger: console,
56892
+ ...options.downloadUpdatesInBackground ? { downloadUpdate: downloadUpdateOnceListening } : {}
56794
56893
  });
56795
56894
  const updateApply = createUpdateApplyLane({
56796
56895
  gitWorkspace: assembledGitWorkspace,
@@ -56913,7 +57012,6 @@ function createBackend(httpServer, options = {}) {
56913
57012
  recheckPostTurnLeftovers,
56914
57013
  checkNow: updateCheck.checkNow,
56915
57014
  applyUpdate: updateApply.applyUpdate,
56916
- isStaging: updateApply.isStaging,
56917
57015
  noteRestartRequested: () => {
56918
57016
  updateApply.noteRestartRequested();
56919
57017
  updateCheck.refreshApplyAvailability();
@@ -56953,6 +57051,7 @@ function createBackend(httpServer, options = {}) {
56953
57051
  updateCheck.start();
56954
57052
  return {
56955
57053
  shutdown,
57054
+ handOffStagedUpdate: updateApply.handOffStagedUpdate,
56956
57055
  port,
56957
57056
  app,
56958
57057
  telemetry,
@@ -57002,7 +57101,10 @@ function isBootRefusal(error) {
57002
57101
  }
57003
57102
  function createBackendOrExit() {
57004
57103
  try {
57005
- return createBackend(server, { staticDir: "auto" });
57104
+ return createBackend(server, {
57105
+ staticDir: "auto",
57106
+ downloadUpdatesInBackground: true
57107
+ });
57006
57108
  } catch (err) {
57007
57109
  if (!isBootRefusal(err)) throw err;
57008
57110
  console.error(err.message);
@@ -57010,7 +57112,7 @@ function createBackendOrExit() {
57010
57112
  }
57011
57113
  }
57012
57114
  var backend = createBackendOrExit();
57013
- var { shutdown, port, app, telemetry, version } = backend;
57115
+ var { shutdown, handOffStagedUpdate, port, app, telemetry, version } = backend;
57014
57116
  server.on("request", app);
57015
57117
  function writeTerminalTitle(sequence) {
57016
57118
  if (!process.stdout.isTTY) return;
@@ -57091,7 +57193,8 @@ var { requestShutdown } = createLifecycle({
57091
57193
  httpServer: server,
57092
57194
  extraServers: remoteServers,
57093
57195
  spawn,
57094
- exit: exitWithClearedTerminalTitle
57196
+ exit: exitWithClearedTerminalTitle,
57197
+ beforeHandOff: handOffStagedUpdate
57095
57198
  });
57096
57199
  function handleShutdownSignal(signal) {
57097
57200
  console.log(`\n${signal} received - shutting down...`);
@@ -1,6 +1,6 @@
1
1
  import { r as errorMessage } from "./text-DoirglWV.js";
2
- import { c as resolveConfigPath } from "./config-store-DbfMbz4j.js";
3
- import { c as defaultPairingsPath, i as REVOCATION_PROPAGATION_SECONDS, l as defaultSeenPath, n as normalizeRemoteConfig, o as createPairingsStore, s as createSeenStore } from "./remote-config-61zJ0hME.js";
2
+ import { c as resolveConfigPath } from "./config-store-CKcDJebD.js";
3
+ import { c as defaultPairingsPath, i as REVOCATION_PROPAGATION_SECONDS, l as defaultSeenPath, n as normalizeRemoteConfig, o as createPairingsStore, s as createSeenStore } from "./remote-config-DlquYoVe.js";
4
4
  import fs from "node:fs";
5
5
  //#region server/text-format.ts
6
6
  function trimIso(iso) {
@@ -3,7 +3,7 @@ import { n as equalsIgnoringCaseOnWindows } from "./paths-Bu4eH1Yd.js";
3
3
  import { n as isRecord } from "./coerce-NSst8oRP.js";
4
4
  import { n as unrefTimer, t as DEFAULT_TIMER_FNS } from "./timer-deps-u2DAQLok.js";
5
5
  import { a as jsonStateLoadError, d as writeJsonAtomicSync, l as sleepSync, s as loadJsonStateFileSync, u as writeJsonAtomic } from "./json-file-CIJf0Cel.js";
6
- import { o as glimmervoidHomeDir, st as canonicalizePath } from "./config-store-DbfMbz4j.js";
6
+ import { o as glimmervoidHomeDir, st as canonicalizePath } from "./config-store-CKcDJebD.js";
7
7
  import fs from "node:fs";
8
8
  import path from "node:path";
9
9
  import crypto from "node:crypto";
@@ -959,7 +959,9 @@ var AGENT_API_VERBS = [
959
959
  "edit",
960
960
  "limits",
961
961
  "factory-status",
962
- "factory-retry"
962
+ "factory-retry",
963
+ "factory-setup",
964
+ "factory-queue"
963
965
  ];
964
966
  var ORCHESTRATOR_AGENT_VERBS = [
965
967
  "dispatch",
@@ -968,6 +970,7 @@ var ORCHESTRATOR_AGENT_VERBS = [
968
970
  ];
969
971
  var AgentFactoryStatusRequest = z.object({ projectId: z.string().trim().min(1).max(128).optional() }).strict();
970
972
  var AgentFactoryRetryRequest = z.object({ intentId: z.string().trim().min(1).max(128) }).strict();
973
+ var AgentFactorySetupRequest = z.object({}).strict();
971
974
  var AgentSpawnRequest = z.object({
972
975
  prompt: z.string({ error: "prompt must be a string" }).min(1, { error: "prompt must not be empty" }).max(2e4, { error: "prompt must be at most 20000 characters" }).refine((prompt) => !prompt.trimStart().startsWith("-"), { message: "prompt must not start with a dash, which the agent CLI would read as an option" }),
973
976
  name: z.string({ error: "name must be a string" }).min(1, { error: "name must not be empty" }).max(200, { error: "name must be at most 200 characters" }).optional(),
@@ -1029,4 +1032,4 @@ z.discriminatedUnion("ok", [z.object({
1029
1032
  reason: z.string()
1030
1033
  })]);
1031
1034
  //#endregion
1032
- export { repositoryName as $, SshSignReply as A, HEX_SHA_RE as At, MyPrMergeMethod as B, MERGEABLE_LIVE_STATES as Bt, SESSION_DOC_BODY_CAP_BYTES as C, TeamReviewThreadResult as Ct, SessionDoc as D, hasRequiredActionHead as Dt, SSH_SIGN_BODY_CAP_BYTES as E, decisionAsIfApprovalRequired as Et, MyPrAutoRebase as F, repoParts as Ft, MyPrMergeWhenReadyResult as G, MyPrMergeResult as H, STATES as Ht, MyPrCheckContext as I, GithubPollingRefreshRequest as It, MyPrThreadNode as J, MyPrSearchNode as K, MyPrCheckContextsResponse as L, GithubPollingRefreshResult as Lt, TASK_TITLE_CONTROL_CHARACTERS as M, GH_SEGMENT as Mt, TaskTitle as N, NODE_ID_RE as Nt, SessionSnapshot as O, hasStandingViewerApproval as Ot, LinkedPr as P, REPO_SLUG_RE as Pt, SessionPrLinks as Q, MyPrKeepMergeableRequest as R, githubPollingShape as Rt, SESSION_COMMANDS as S, TeamReviewThreadCommentsResponse as St, SIGN_URL_ENV as T, canApproveAfterComment as Tt, MyPrMergeStateResponse as U, MyPrMergeRequest as V, RESTARTABLE_STATES as Vt, MyPrMergeWhenReadyRequest as W, MyPrsState as X, MyPrThreadsResponse as Y, MyPrsStatus as Z, ConversationApprovalDecision as _, TeamReviewActionResult as _t, AgentDispatchRequest as a, PostingPlan as at, PendingWakeup as b, TeamReviewStateEntry as bt, AgentFactoryStatusRequest as c, ReviewChecksState as ct, AgentTicketRequest as d, ReviewFinding as dt, CommitSha as et, CONVERSATION_APPROVAL_SUMMARY_MAX_CHARS as f, ReviewResult as ft, ConversationApproval as g, TeamReviewActionRequest as gt, ConversationAnswers as h, SearchedPr as ht, AgentAttentionRequest as i, GithubReviewState as it, SshSignRequest as j, shortSha as jt, SessionState as k, FULL_SHA_RE as kt, AgentLimitsReply as l, ReviewComment as lt, CONVERSATION_TOOL_RESULT_HOOK_EVENT as m, ReviewVerdict as mt, AGENT_URL_ENV as n, FindingSeverity as nt, AgentEditRequest as o, PrDetail as ot, CONVERSATION_PERMISSION_HOOK_EVENT as p, ReviewThreadId as pt, MyPrSearchResponse as q, ASK_USER_QUESTION_TOOL_NAME as r, GithubReviewDecision as rt, AgentFactoryRetryRequest as s, QueuedReview as st, AGENT_API_VERBS as t, DECIDING_REVIEW_STATES as tt, AgentSpawnRequest as u, ReviewDraft as ut, ConversationQuestion as v, TeamReviewCompareFiles as vt, SESSION_DOC_PATH_MAX_CHARS as w, TeamReviewThreadsRepository as wt, RefinedTaskTitle as x, TeamReviewStatus as xt, ORCHESTRATOR_AGENT_VERBS as y, TeamReviewResolveResponse as yt, MyPrKeepMergeableResult as z, KILLABLE_STATES as zt };
1035
+ export { SessionPrLinks as $, SessionState as A, FULL_SHA_RE as At, MyPrKeepMergeableResult as B, KILLABLE_STATES as Bt, SESSION_COMMANDS as C, TeamReviewThreadCommentsResponse as Ct, SSH_SIGN_BODY_CAP_BYTES as D, decisionAsIfApprovalRequired as Dt, SIGN_URL_ENV as E, canApproveAfterComment as Et, LinkedPr as F, REPO_SLUG_RE as Ft, MyPrMergeWhenReadyRequest as G, MyPrMergeRequest as H, RESTARTABLE_STATES as Ht, MyPrAutoRebase as I, repoParts as It, MyPrSearchResponse as J, MyPrMergeWhenReadyResult as K, MyPrCheckContext as L, GithubPollingRefreshRequest as Lt, SshSignRequest as M, shortSha as Mt, TASK_TITLE_CONTROL_CHARACTERS as N, GH_SEGMENT as Nt, SessionDoc as O, hasRequiredActionHead as Ot, TaskTitle as P, NODE_ID_RE as Pt, MyPrsStatus as Q, MyPrCheckContextsResponse as R, GithubPollingRefreshResult as Rt, RefinedTaskTitle as S, TeamReviewStatus as St, SESSION_DOC_PATH_MAX_CHARS as T, TeamReviewThreadsRepository as Tt, MyPrMergeResult as U, STATES as Ut, MyPrMergeMethod as V, MERGEABLE_LIVE_STATES as Vt, MyPrMergeStateResponse as W, MyPrThreadsResponse as X, MyPrThreadNode as Y, MyPrsState as Z, ConversationApproval as _, TeamReviewActionRequest as _t, AgentDispatchRequest as a, GithubReviewState as at, ORCHESTRATOR_AGENT_VERBS as b, TeamReviewResolveResponse as bt, AgentFactorySetupRequest as c, QueuedReview as ct, AgentSpawnRequest as d, ReviewDraft as dt, repositoryName as et, AgentTicketRequest as f, ReviewFinding as ft, ConversationAnswers as g, SearchedPr as gt, CONVERSATION_TOOL_RESULT_HOOK_EVENT as h, ReviewVerdict as ht, AgentAttentionRequest as i, GithubReviewDecision as it, SshSignReply as j, HEX_SHA_RE as jt, SessionSnapshot as k, hasStandingViewerApproval as kt, AgentFactoryStatusRequest as l, ReviewChecksState as lt, CONVERSATION_PERMISSION_HOOK_EVENT as m, ReviewThreadId as mt, AGENT_URL_ENV as n, DECIDING_REVIEW_STATES as nt, AgentEditRequest as o, PostingPlan as ot, CONVERSATION_APPROVAL_SUMMARY_MAX_CHARS as p, ReviewResult as pt, MyPrSearchNode as q, ASK_USER_QUESTION_TOOL_NAME as r, FindingSeverity as rt, AgentFactoryRetryRequest as s, PrDetail as st, AGENT_API_VERBS as t, CommitSha as tt, AgentLimitsReply as u, ReviewComment as ut, ConversationApprovalDecision as v, TeamReviewActionResult as vt, SESSION_DOC_BODY_CAP_BYTES as w, TeamReviewThreadResult as wt, PendingWakeup as x, TeamReviewStateEntry as xt, ConversationQuestion as y, TeamReviewCompareFiles as yt, MyPrKeepMergeableRequest as z, githubPollingShape as zt };
@@ -1,4 +1,4 @@
1
- import { S as SESSION_COMMANDS } from "./session-8Pv0y1vz.js";
1
+ import { C as SESSION_COMMANDS } from "./session-BlT68ppa.js";
2
2
  //#region session/core/session-routes.ts
3
3
  var SUPERVISION_LINE = "Glimmervoid supervises this session. Run glimmervoid --help for the commands it gives you and this session's limits.";
4
4
  var GUARDRAILS_LINE = "Its guardrails are OS-enforced, so a read, write or connection they refuse will not succeed on retry.";
@@ -1,10 +1,10 @@
1
1
  import { r as errorMessage, t as errorCode } from "./text-DoirglWV.js";
2
- import "./session-8Pv0y1vz.js";
2
+ import "./session-BlT68ppa.js";
3
3
  import { t as renderTable } from "./ascii-figure-core-pDAwtlKO.js";
4
4
  import { n as glimmervoidHomeDir, t as decideConfigPath } from "./config-path-core-DFt-TemS.js";
5
5
  import { n as isRecord } from "./coerce-NSst8oRP.js";
6
- import { r as BrowserConfig } from "./config-BHBZsCBc.js";
7
- import { $ as withEnvSecrets, A as settingsOf, C as deleteValueAtPath, D as scoreSettingsSearch, E as parsePosthogProjectSelection, M as FILE_ONLY_GROUPS, N as SETTINGS_REGISTRY, O as setValueAtPath, S as cloneValue, T as hasScaledUnit, X as ENV_SECRET_BINDINGS, Z as readEnvSecrets, j as valueAtPath, k as settingsGroupOf, l as saveConfigFileOnce, s as loadConfigFile, u as validateConfig, w as displayText, x as SETTINGS_INDEX } from "./config-store-DbfMbz4j.js";
6
+ import { $ as withEnvSecrets, A as settingsOf, C as deleteValueAtPath, D as scoreSettingsSearch, E as parsePosthogProjectSelection, M as FILE_ONLY_GROUPS, N as SETTINGS_REGISTRY, O as setValueAtPath, S as cloneValue, T as hasScaledUnit, X as ENV_SECRET_BINDINGS, Z as readEnvSecrets, j as valueAtPath, k as settingsGroupOf, l as saveConfigFileOnce, s as loadConfigFile, u as validateConfig, w as displayText, x as SETTINGS_INDEX } from "./config-store-CKcDJebD.js";
7
+ import { r as BrowserConfig } from "./config-CjawSOBk.js";
8
8
  import fs from "node:fs";
9
9
  import os from "node:os";
10
10
  import { parseArgs } from "node:util";
@@ -1,8 +1,8 @@
1
1
  import { r as errorMessage } from "./text-DoirglWV.js";
2
- import { A as SshSignReply, T as SIGN_URL_ENV } from "./session-8Pv0y1vz.js";
2
+ import { E as SIGN_URL_ENV, j as SshSignReply } from "./session-BlT68ppa.js";
3
3
  import { n as execFileAsync, o as spawn } from "./child-process-safe-CbQnyh7D.js";
4
4
  import { a as isLoopbackHostname } from "./hook-relay-core-DA_bz2KA.js";
5
- import { t as postToAgentIngress } from "./agent-api-cli-BcZ9DLCF.js";
5
+ import { t as postToAgentIngress } from "./agent-api-cli-B5Tm0wXO.js";
6
6
  import { l as parseSshPublicKey } from "./ssh-signing-core-CRhVVWNW.js";
7
7
  import path from "node:path";
8
8
  import fsp from "node:fs/promises";