glimmervoid 0.42.1 → 0.42.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (25) hide show
  1. package/README.md +2 -2
  2. package/dist/bin/glimmervoid.js +8 -8
  3. package/dist/chunks/{adapters-CWIHOfVo.js → adapters-Bga1N6Ie.js} +2 -2
  4. package/dist/chunks/{adapters-DzClvFt5.js → adapters-DeqV4wUv.js} +1 -1
  5. package/dist/chunks/{agent-api-cli-Cn-g_ej_.js → agent-api-cli-DWVeqlLu.js} +1 -1
  6. package/dist/chunks/{agent-api-cli-2FKWf5jj.js → agent-api-cli-YvQ8WxHA.js} +1 -1
  7. package/dist/chunks/{agent-api-core-CP4J2B39.js → agent-api-core-DFYLP1bF.js} +1 -1
  8. package/dist/chunks/config-store-CGrS8s6x.js +1 -0
  9. package/dist/chunks/{config-store-Br2PY4Tg.js → config-store-DOGtTJ1d.js} +2 -69
  10. package/dist/chunks/{contracts-DJqeCtR3.js → contracts-Ds_eevZs.js} +2 -12
  11. package/dist/chunks/{control-messages-DHDEMTLI.js → control-messages-Dgap3JRR.js} +1 -44
  12. package/dist/chunks/{main-ZpBLKI1h.js → main-Ywst1s6Z.js} +25 -454
  13. package/dist/chunks/{pair-cli-DW5mUBZa.js → pair-cli-PCXITdEd.js} +2 -2
  14. package/dist/chunks/{remote-config-DcmhRuRc.js → remote-config-DeWURqqr.js} +1 -1
  15. package/dist/chunks/{settings-cli-BnM9rg8B.js → settings-cli-xpR7vk9L.js} +4 -4
  16. package/dist/chunks/{settings-readout-core-2XunjdBA.js → settings-readout-core-C2mOk9Yz.js} +1 -1
  17. package/dist/chunks/{ssh-sign-cli-CmnA5lFM.js → ssh-sign-cli-rKiqiNem.js} +1 -1
  18. package/dist/client/assets/index-D9A5nTKg.js +177 -0
  19. package/dist/client/assets/index-NhAGtpDY.css +2 -0
  20. package/dist/client/index.html +2 -3
  21. package/dist/server/index.js +1 -1
  22. package/package.json +2 -2
  23. package/dist/chunks/config-store-DwYjz6h1.js +0 -1
  24. package/dist/client/assets/index-CBGmkbVV.js +0 -176
  25. package/dist/client/assets/index-NhlaT6eP.css +0 -2
@@ -4,9 +4,9 @@ import { a as sanitizeWorktreeName, i as safePathSegment, n as equalsIgnoringCas
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
5
  import { $t as STATES, A as SIGN_URL_ENV, At as TeamReviewStatus, B as LinkedPr, Bt as shortSha, Ct as ReviewThreadId, Dt as TeamReviewCompareFiles, E as SESSION_DOC_BODY_CAP_BYTES, Ft as decisionAsIfApprovalRequired, G as MyPrKeepMergeableRequest, H as MyPrAutoRebase, Ht as NODE_ID_RE, I as SshSignRequest, J as MyPrMergeMethod, L as TASK_TITLE_CONTROL_CHARACTERS, Lt as hasStandingViewerApproval, Mt as TeamReviewThreadResult, Nt as TeamReviewThreadsRepository, O as SESSION_NAME_PATTERN, Ot as TeamReviewResolveResponse, Pt as canApproveAfterComment, Q as MyPrMergeWhenReadyRequest, Qt as RESTARTABLE_STATES, R as TaskTitle, S as ConversationQuestion, St as ReviewResult, Tt as TeamReviewActionRequest, U as MyPrCheckContext, Ut as REPO_SLUG_RE, V as MyPr, Vt as GH_SEGMENT, W as MyPrCheckContextsResponse, Wt as repoParts, Xt as KILLABLE_STATES, Y as MyPrMergeRequest, Yt as BADGE_LABELS, Z as MyPrMergeStateResponse, Zt as MERGEABLE_LIVE_STATES, _ as CONVERSATION_TOOL_RESULT_HOOK_EVENT, _t as QueuedReview, bt as ReviewDraft, dt as EarlierReview, ft as FindingSeverity, g as CONVERSATION_PERMISSION_HOOK_EVENT, gt as PrDetail, h as CONVERSATION_APPROVAL_SUMMARY_MAX_CHARS, ht as PostingPlan, it as MyPrsState, j as SSH_SIGN_BODY_CAP_BYTES, jt as TeamReviewThreadCommentsResponse, k as SESSION_NAME_RULE_TEXT, kt as TeamReviewStateEntry, lt as CommitSha, m as COHERENCE_HOOKS_INACTIVE, mt as GithubReviewState, n as AGENT_URL_ENV, nt as MyPrThreadsResponse, q as MyPrLaneEntry, r as ASK_USER_QUESTION_TOOL_NAME, rt as MyPrsSnapshot, tt as MyPrThreadNode, ut as DECIDING_REVIEW_STATES, w as RefinedTaskTitle, wt as ReviewVerdict, xt as ReviewFinding, yt as ReviewComment, zt as HEX_SHA_RE } from "./session-3eSP3t1i.js";
6
6
  import { n as execFileAsync, o as spawn, r as execFileSync, t as execFile } from "./child-process-safe-D4hyVIXj.js";
7
- import { At as planTitle, C as GithubPrsFrame, Ct as PLAN_HOOK_EVENT, D as WorkflowsSettings, Dt as PlanDecision, E as WorkflowLabelName, Et as PLAN_TOOL_NAME, Ft as IssuesSearchResponse, It as IssuesState, L as KEEP_MERGEABLE_TIMEOUT_MINUTES_RANGE, Lt as IssuesStatus, Mt as GithubIssueResponse, Nt as IssueKey, Ot as PlanRevision, Pt as IssueUpdate, Rt as issuePullRequestStateFromGithub, S as GithubPrLightSearchNode, St as PLAN_BODY_CAP_BYTES, T as WorkflowCommentBody, Tt as PLAN_RESULT_HOOK_EVENT, _ as MergedPrListing, _t as TraceCheckpoint, b as GithubPrDetailNode, bt as ChangeMap, c as pullRequestKeyFromReference, d as BenchmarkId, f as BenchmarkJudgement, g as CommitComparison, gt as MAX_RAW_LINE_CHARS, h as BenchmarkSuite, ht as SessionSetup, i as DIFF_ANNOTATION_NOTE_MAX_CHARS, jt as GithubIssuePullRequestsRepository, k as WorkflowsState, kt as parseExitPlanModeHookPayload, l as BenchmarkActionRequest, m as BenchmarkStatus, mt as UpdateJournal, n as ClientMessage, p as BenchmarkRun, rt as USAGE_INTEGER_RANGES, t as CONTROL_FRAME_MAX_BYTES, u as BenchmarkCase, v as MinedPrReviewData, vt as TraceRecord, w as comparablePrKey, wt as PLAN_HOOK_OUTPUT_MAX_CHARS, x as GithubPrKey, xt as changeMapFactId, y as PrCheckoutCaseInput, yt as CoherenceJournalOutput } from "./control-messages-DHDEMTLI.js";
7
+ import { At as GithubIssueResponse, C as comparablePrKey, Ct as PLAN_RESULT_HOOK_EVENT, Dt as parseExitPlanModeHookPayload, E as WorkflowsSettings, Et as PlanRevision, F as KEEP_MERGEABLE_TIMEOUT_MINUTES_RANGE, Ft as IssuesStatus, It as issuePullRequestStateFromGithub, Mt as IssueUpdate, Nt as IssuesSearchResponse, O as WorkflowsState, Ot as planTitle, Pt as IssuesState, S as GithubPrsFrame, St as PLAN_HOOK_OUTPUT_MAX_CHARS, T as WorkflowLabelName, Tt as PlanDecision, _ as MinedPrReviewData, _t as CoherenceJournalOutput, b as GithubPrKey, bt as PLAN_BODY_CAP_BYTES, c as BenchmarkActionRequest, d as BenchmarkJudgement, f as BenchmarkRun, ft as UpdateJournal, g as MergedPrListing, gt as TraceRecord, h as CommitComparison, ht as TraceCheckpoint, jt as IssueKey, kt as GithubIssuePullRequestsRepository, l as BenchmarkCase, m as BenchmarkSuite, mt as MAX_RAW_LINE_CHARS, n as ClientMessage, p as BenchmarkStatus, pt as SessionSetup, s as pullRequestKeyFromReference, t as CONTROL_FRAME_MAX_BYTES, tt as USAGE_INTEGER_RANGES, u as BenchmarkId, v as PrCheckoutCaseInput, vt as ChangeMap, w as WorkflowCommentBody, wt as PLAN_TOOL_NAME, x as GithubPrLightSearchNode, xt as PLAN_HOOK_EVENT, y as GithubPrDetailNode, yt as changeMapFactId } from "./control-messages-Dgap3JRR.js";
8
8
  import { a as permitsHelpCommand, r as describeSessionLimits } from "./session-routes-B2oSzmQn.js";
9
- import { a as decideSpawnAllowance, c as describeKeptChildAttention, d as describeUnpushedCloseRefusal, h as projectReviews, i as decideAgentRequest, l as describePushLanding, m as projectMyPrs, n as REFUSAL_REASON, o as deriveChildSessionName, p as parseAgentVerb, s as describeChildEndNote, u as describeRoleRefusal } from "./agent-api-core-CP4J2B39.js";
9
+ import { a as decideSpawnAllowance, c as describeKeptChildAttention, d as describeUnpushedCloseRefusal, h as projectReviews, i as decideAgentRequest, l as describePushLanding, m as projectMyPrs, n as REFUSAL_REASON, o as deriveChildSessionName, p as parseAgentVerb, s as describeChildEndNote, u as describeRoleRefusal } from "./agent-api-core-DFYLP1bF.js";
10
10
  import { n as glimmervoidHomeDir, t as decideConfigPath } from "./config-path-core-DFt-TemS.js";
11
11
  import { i as parseCommandLine, n as warnWhenGitIsTooOld } from "./git-version-DqagvnAZ.js";
12
12
  import { n as checkGuardrailsDependencies, t as allowGuardedSpawn } from "./guardrails-deps-BjPzk1rE.js";
@@ -21,13 +21,13 @@ import { n as DEFAULT_MAX_MS, r as nextBackoffMs, t as DEFAULT_BASE_MS } from ".
21
21
  import { n as unrefTimer, t as DEFAULT_TIMER_FNS } from "./timer-deps-u2DAQLok.js";
22
22
  import { n as shellQuote } from "./hook-command-core-qTNK-xMF.js";
23
23
  import { C as parseCgroupBytes, S as memoryReserveBytes, T as parseMemAvailableBytes, _ as createSpawnGate, a as jsonStateLoadError, b as cgroupLimitBytes, c as loadedJsonValue, d as writeJsonAtomicSync, f as writeTextAtomic, g as createSerialQueue, h as createMemoryAdmission, i as createJsonStateWriter, m as createKeyedSerialQueue, n as appendJsonLines, o as loadJsonStateFile, p as writeTextAtomicSync, r as createJsonStateStore, s as loadJsonStateFileSync, t as appendJsonLine, u as writeJsonAtomic, v as isQueueAdmissionTimeout, w as parseCgroupV2Path, x as headroomFromReadings, y as cgroupAncestorPaths } from "./json-file-DFCTvPjj.js";
24
- import { $ as DEFAULT_BRANCH_GC_PREFIXES, B as buildExceptionProperties, F as TELEMETRY_BATCH_URL, G as exceptionFingerprint, H as decideIsDevInstall, I as TELEMETRY_FLAGS_URL, J as resolveProjectToken, K as nodeMajorVersion, L as adapterBucket, P as FIRST_RUN_NOTICE, R as buildAiGenerationEvents, U as decideRemoteTelemetryState, V as classifySessionExit, W as decideTelemetryConsent, Z as stableConfigKey, a as generateProjectId, at as worktreeIntegrationTips, b as validateSettingsBlock, ct as isSameDirectoryPath, d as assetForPlatform, et as matchedPrefix, f as decideRtkInstall, g as verifyDigest, h as isRtkBinaryName, i as ensureProjectIds, it as usablePrefixes, m as installTargetPath, n as DEFAULT_CONFIG, nt as planWorktreeGc, o as glimmervoidHomeDir$1, ot as canonicalizePath, p as findEscapingArchiveMember, q as parsePosthogReleaseId, r as createConfigStore, rt as sessionIdFromBranch, st as comparableDirectoryPath, t as ABORT_CONFIG_SAVE, tt as planBranchGc, v as mergeSettingsBlock, y as settingsBlockSpecFor, z as buildBrowserExceptionProperties } from "./config-store-Br2PY4Tg.js";
25
- import { E as USAGE_VENDOR_KEYS, T as USAGE_COST_MODES, _ as PersistedTaskTitle, a as parseDataClientMessage, b as configIssueMessage, c as PendingCrashReport, d as TelemetryState, g as ConfigUpdate, i as parseDataAttachHistory, l as TELEMETRY_EVENT_SCHEMAS, m as BrowserConfig, n as HookEnvelope, o as DashboardTelemetryReport, r as DEEP_HISTORY_SCROLLBACK_LINES, t as HTTP_URL_RE, v as RUNTIME_CONFIG_SCALAR_KEYS, y as TASK_TITLE_SOURCE_PRIORITY } from "./contracts-DJqeCtR3.js";
26
- import { A as dedupeCodexFiles, B as shouldPersistWarehouse, C as shortSha$1, D as codexSessionIdFromPath, E as codexRootCandidates, F as passOutcome, H as claudeCode, I as projectDirCandidates, L as resolveProjectsDirs, M as grokHomes, N as grokRootCandidates, O as continuationDelayMs, P as isUsageFile, R as scopedClaudeRoots, S as parseResolvedSha, T as codexHomes, V as splitLines$1, _ as isCheckFresh, a as describeAgentResolvability, b as parseRegistryDeprecation, c as isKnownAgentId, d as resolveAdapter, f as setCustomAgents, g as decideUpdateStatus, h as decideInstallFlavor, i as customAgentFingerprint, j as expandTilde, k as decideFileRead, l as listAgentIds, m as readHostCodexVersion, n as cachedAgentResolvability, o as getAdapter, p as codex, r as commandFor, s as hookProfileOf, t as DEFAULT_AGENT_ID, u as resetCommandCache, v as normalizeSha, w as codexFallbackRoots, x as parseRegistryLatest, y as normalizeUpdateChannel, z as shouldEvaluateDespiteIoFailures } from "./adapters-CWIHOfVo.js";
24
+ import { $ as DEFAULT_BRANCH_GC_PREFIXES, B as buildExceptionProperties, F as TELEMETRY_BATCH_URL, G as exceptionFingerprint, H as decideIsDevInstall, I as TELEMETRY_FLAGS_URL, J as resolveProjectToken, K as nodeMajorVersion, L as adapterBucket, P as FIRST_RUN_NOTICE, R as buildAiGenerationEvents, U as decideRemoteTelemetryState, V as classifySessionExit, W as decideTelemetryConsent, Z as stableConfigKey, a as generateProjectId, at as worktreeIntegrationTips, b as validateSettingsBlock, ct as isSameDirectoryPath, d as assetForPlatform, et as matchedPrefix, f as decideRtkInstall, g as verifyDigest, h as isRtkBinaryName, i as ensureProjectIds, it as usablePrefixes, m as installTargetPath, n as DEFAULT_CONFIG, nt as planWorktreeGc, o as glimmervoidHomeDir$1, ot as canonicalizePath, p as findEscapingArchiveMember, q as parsePosthogReleaseId, r as createConfigStore, rt as sessionIdFromBranch, st as comparableDirectoryPath, t as ABORT_CONFIG_SAVE, tt as planBranchGc, v as mergeSettingsBlock, y as settingsBlockSpecFor, z as buildBrowserExceptionProperties } from "./config-store-DOGtTJ1d.js";
25
+ import { T as USAGE_VENDOR_KEYS, _ as PersistedTaskTitle, a as parseDataClientMessage, b as configIssueMessage, c as PendingCrashReport, d as TelemetryState, g as ConfigUpdate, i as parseDataAttachHistory, l as TELEMETRY_EVENT_SCHEMAS, m as BrowserConfig, n as HookEnvelope, o as DashboardTelemetryReport, r as DEEP_HISTORY_SCROLLBACK_LINES, t as HTTP_URL_RE, v as RUNTIME_CONFIG_SCALAR_KEYS, w as USAGE_COST_MODES, y as TASK_TITLE_SOURCE_PRIORITY } from "./contracts-Ds_eevZs.js";
26
+ import { A as dedupeCodexFiles, B as shouldPersistWarehouse, C as shortSha$1, D as codexSessionIdFromPath, E as codexRootCandidates, F as passOutcome, H as claudeCode, I as projectDirCandidates, L as resolveProjectsDirs, M as grokHomes, N as grokRootCandidates, O as continuationDelayMs, P as isUsageFile, R as scopedClaudeRoots, S as parseResolvedSha, T as codexHomes, V as splitLines$1, _ as isCheckFresh, a as describeAgentResolvability, b as parseRegistryDeprecation, c as isKnownAgentId, d as resolveAdapter, f as setCustomAgents, g as decideUpdateStatus, h as decideInstallFlavor, i as customAgentFingerprint, j as expandTilde, k as decideFileRead, l as listAgentIds, m as readHostCodexVersion, n as cachedAgentResolvability, o as getAdapter, p as codex, r as commandFor, s as hookProfileOf, t as DEFAULT_AGENT_ID, u as resetCommandCache, v as normalizeSha, w as codexFallbackRoots, x as parseRegistryLatest, y as normalizeUpdateChannel, z as shouldEvaluateDespiteIoFailures } from "./adapters-Bga1N6Ie.js";
27
27
  import { t as HOOK_TOOLS } from "./hook-tools-Dl7-r2Eb.js";
28
28
  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";
29
- 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-DcmhRuRc.js";
30
- import { n as configFileViewOf, u as readSettingsForAgent } from "./settings-readout-core-2XunjdBA.js";
29
+ 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-DeWURqqr.js";
30
+ import { n as configFileViewOf, u as readSettingsForAgent } from "./settings-readout-core-C2mOk9Yz.js";
31
31
  import { _ as escapeMarkup, g as createLaneLog, n as createVisionsSetup } from "./visions-setup-DB2P8JUL.js";
32
32
  import { t as getRtkPath } from "./rtk-resolver-BDHi6RMv.js";
33
33
  import { createRequire } from "node:module";
@@ -3874,7 +3874,6 @@ function createBackendShutdown(dependencies) {
3874
3874
  stoppers.add("telegram-outbox", () => dependencies.telegramOutbox.idle());
3875
3875
  destroySessions([
3876
3876
  dependencies.visionsSessions,
3877
- dependencies.changeMapSessions,
3878
3877
  dependencies.taskTitleSessions ?? /* @__PURE__ */ new Map(),
3879
3878
  dependencies.benchmarkSessions ?? /* @__PURE__ */ new Map()
3880
3879
  ], pendingReaps);
@@ -34791,319 +34790,6 @@ function createIngestLane({ config = null, broadcast = null, logger = console, l
34791
34790
  };
34792
34791
  }
34793
34792
  //#endregion
34794
- //#region server/change-map/core/change-narrative-core.ts
34795
- var FACT_GROUPS = [
34796
- "files",
34797
- "subsystems",
34798
- "coChangeGaps",
34799
- "hotspots",
34800
- "blastRadius",
34801
- "untestedFiles",
34802
- "collisions",
34803
- "links"
34804
- ];
34805
- function narrativeFacts(map) {
34806
- return { repos: map.repos.map((repo) => ({
34807
- name: repo.name,
34808
- base: repo.base,
34809
- totalCounts: Object.fromEntries(FACT_GROUPS.map((group) => [group, repo[group].length])),
34810
- files: capFacts(repo.files, compareFactIds),
34811
- subsystems: capFacts(repo.subsystems, compareFactIds).map(capSubsystemPaths),
34812
- coChangeGaps: capFacts(repo.coChangeGaps, compareFactIds),
34813
- hotspots: capFacts(repo.hotspots, compareFactIds),
34814
- blastRadius: capFacts(repo.blastRadius, compareBlastRadius),
34815
- untestedFiles: capFacts(repo.untestedFiles, compareFactIds),
34816
- collisions: capFacts(repo.collisions, compareFactIds),
34817
- links: capFacts(repo.links, compareLinks)
34818
- })).sort((left, right) => left.name.localeCompare(right.name)) };
34819
- }
34820
- function capFacts(facts, compare) {
34821
- return [...facts].sort(compare).slice(0, 20);
34822
- }
34823
- function capSubsystemPaths(subsystem) {
34824
- return {
34825
- ...subsystem,
34826
- paths: subsystem.paths.slice(0, 20),
34827
- pathCount: subsystem.paths.length
34828
- };
34829
- }
34830
- function compareFactIds(left, right) {
34831
- return left.factId.localeCompare(right.factId);
34832
- }
34833
- function compareBlastRadius(left, right) {
34834
- return right.transitiveDependentCount - left.transitiveDependentCount || compareFactIds(left, right);
34835
- }
34836
- function compareLinks(left, right) {
34837
- return right.changedImporterCount - left.changedImporterCount || right.importerCount - left.importerCount || compareFactIds(left, right);
34838
- }
34839
- function factsHashInput(map) {
34840
- return JSON.stringify(narrativeFacts(map), (_key, value) => {
34841
- if (!value || typeof value !== "object" || Array.isArray(value)) return value;
34842
- return Object.fromEntries(Object.entries(value).sort(([left], [right]) => {
34843
- if (left < right) return -1;
34844
- if (left > right) return 1;
34845
- return 0;
34846
- }));
34847
- });
34848
- }
34849
- function hasNarratableFacts(map) {
34850
- return map.repos.some((repo) => repo.files.length > 0);
34851
- }
34852
- function knownNarrativeFactIds(map) {
34853
- const knownFactIds = /* @__PURE__ */ new Set();
34854
- for (const repo of narrativeFacts(map).repos) for (const group of FACT_GROUPS) for (const fact of repo[group]) knownFactIds.add(fact.factId);
34855
- return knownFactIds;
34856
- }
34857
- function buildNarrativePrompt({ facts, resultPath }) {
34858
- const deliveryLines = resultPath ? ["Use no tools except Write to the exact result file path below.", "Write"] : ["Answer with the JSON as your final message and write no files.", "Return"];
34859
- return [
34860
- "The facts below are your only source of truth. Read nothing else.",
34861
- deliveryLines[0],
34862
- `${deliveryLines[1]} JSON { "claims": [{ "text": string, "factIds": string[] }] } with at most 12 claims.`,
34863
- "Each claim must be one or two plain-English sentences about how a change connects to the codebase or what risk it carries.",
34864
- "Every claim must cite one or more factIds copied exactly from the facts. Do not invent facts or identifiers.",
34865
- "When links are present, lead with how a change in one repository reaches another through them.",
34866
- `Each fact list and subsystem path list holds at most 20 entries; totalCounts and pathCount give the full sizes.`,
34867
- `Keep each claim within 600 characters.`,
34868
- ...resultPath ? [`Result file: ${resultPath}`] : [],
34869
- `Facts JSON: ${JSON.stringify(facts)}`
34870
- ].join("\n");
34871
- }
34872
- function validateNarrative({ raw, knownFactIds, factsHash, model }) {
34873
- if (!raw || typeof raw !== "object" || Array.isArray(raw)) return null;
34874
- const offeredClaims = "claims" in raw ? raw.claims : null;
34875
- if (!Array.isArray(offeredClaims)) return null;
34876
- const claims = [];
34877
- for (const offeredClaim of offeredClaims) {
34878
- if (!offeredClaim || typeof offeredClaim !== "object" || Array.isArray(offeredClaim)) continue;
34879
- const text = "text" in offeredClaim ? offeredClaim.text : null;
34880
- const factIds = "factIds" in offeredClaim ? offeredClaim.factIds : null;
34881
- if (typeof text !== "string" || text.length > 600) continue;
34882
- if (!Array.isArray(factIds)) continue;
34883
- const cleanText = text.replaceAll(String.fromCharCode(8212), "-").replaceAll(String.fromCharCode(8211), "-").replaceAll(String.fromCharCode(8230), "...").trim();
34884
- if (!cleanText || cleanText.length > 600) continue;
34885
- const citedFactIds = [...new Set(factIds.filter((factId) => typeof factId === "string" && knownFactIds.has(factId)))];
34886
- if (citedFactIds.length === 0) continue;
34887
- claims.push({
34888
- text: cleanText,
34889
- factIds: citedFactIds
34890
- });
34891
- if (claims.length >= 12) break;
34892
- }
34893
- if (claims.length === 0) return null;
34894
- return {
34895
- factsHash,
34896
- model,
34897
- claims
34898
- };
34899
- }
34900
- //#endregion
34901
- //#region server/change-map/change-narrator.ts
34902
- var MAX_CACHED_HASHES = 64;
34903
- var PROMPT_FILE$2 = "change-narrative-prompt.txt";
34904
- var RESULT_FILE$2 = "change-narrative-result.json";
34905
- var SCHEMA_FILE = "change-narrative-schema.json";
34906
- var BOOTSTRAP_PROMPT$1 = `Read ${PROMPT_FILE$2} and follow its instructions`;
34907
- var CODEX_BOOTSTRAP_PROMPT = `Read ${PROMPT_FILE$2} in your cwd and answer only with the JSON`;
34908
- var CODEX_OUTPUT_SCHEMA = {
34909
- type: "object",
34910
- additionalProperties: false,
34911
- required: ["claims"],
34912
- properties: { claims: {
34913
- type: "array",
34914
- maxItems: 12,
34915
- items: {
34916
- type: "object",
34917
- additionalProperties: false,
34918
- required: ["text", "factIds"],
34919
- properties: {
34920
- text: { type: "string" },
34921
- factIds: {
34922
- type: "array",
34923
- items: { type: "string" }
34924
- }
34925
- }
34926
- }
34927
- } }
34928
- };
34929
- async function codexLaunch(workDir, resultPath, codexModel) {
34930
- const schemaPath = path.join(workDir, SCHEMA_FILE);
34931
- await fsp.writeFile(schemaPath, JSON.stringify(CODEX_OUTPUT_SCHEMA), "utf8");
34932
- return {
34933
- promptResultPath: null,
34934
- bootstrapPrompt: CODEX_BOOTSTRAP_PROMPT,
34935
- agent: "codex",
34936
- extraArgs: [
34937
- "exec",
34938
- "--ephemeral",
34939
- "--skip-git-repo-check",
34940
- "--output-schema",
34941
- schemaPath,
34942
- "-o",
34943
- resultPath,
34944
- ...codexModel ? ["-m", codexModel] : []
34945
- ],
34946
- model: null
34947
- };
34948
- }
34949
- function claudeLaunch(resultPath, model) {
34950
- return {
34951
- promptResultPath: resultPath,
34952
- bootstrapPrompt: BOOTSTRAP_PROMPT$1,
34953
- agent: void 0,
34954
- extraArgs: [],
34955
- model
34956
- };
34957
- }
34958
- function makeNarrationWorkDir() {
34959
- return fsp.mkdtemp(path.join(os.tmpdir(), "glimmervoid-change-narrative-"));
34960
- }
34961
- async function spawnNarrationWithSession({ map, factsHash, engine, model, codexModel, timeoutSeconds }, spawn, nowFn) {
34962
- const workDir = await makeNarrationWorkDir();
34963
- const promptPath = path.join(workDir, PROMPT_FILE$2);
34964
- const resultPath = path.join(workDir, RESULT_FILE$2);
34965
- const controller = new AbortController();
34966
- const timeout = setTimeout(() => controller.abort(), timeoutSeconds * 1e3);
34967
- timeout.unref();
34968
- try {
34969
- const launch = engine === "codex" ? await codexLaunch(workDir, resultPath, codexModel) : claudeLaunch(resultPath, model);
34970
- await fsp.writeFile(promptPath, buildNarrativePrompt({
34971
- facts: narrativeFacts(map),
34972
- resultPath: launch.promptResultPath
34973
- }), "utf8");
34974
- await spawn({
34975
- id: `change-narrative:${nowFn()}:${crypto.randomUUID()}`,
34976
- name: "Change map narrative",
34977
- cwd: workDir,
34978
- prompt: launch.bootstrapPrompt,
34979
- agent: launch.agent,
34980
- extraArgs: launch.extraArgs,
34981
- model: launch.model,
34982
- signal: controller.signal
34983
- });
34984
- if (controller.signal.aborted) return null;
34985
- return validateNarrative({
34986
- raw: await readLaneResultFile(resultPath),
34987
- knownFactIds: knownNarrativeFactIds(map),
34988
- factsHash,
34989
- model
34990
- });
34991
- } finally {
34992
- clearTimeout(timeout);
34993
- await fsp.rm(workDir, {
34994
- recursive: true,
34995
- force: true
34996
- });
34997
- }
34998
- }
34999
- function createChangeNarrator({ getConfig, spawnNarration, spawnLane = createLaneSpawn({ laneName: "change-map" }), nowFn = () => Date.now() }) {
35000
- const runNarration = spawnNarration ?? ((request) => spawnNarrationWithSession(request, spawnLane, nowFn));
35001
- const cachedByHash = /* @__PURE__ */ new Map();
35002
- const queuedBySessionId = /* @__PURE__ */ new Map();
35003
- let active = null;
35004
- function narratorSettings() {
35005
- const parsed = BrowserConfig.shape.changeMap.safeParse(getConfig().changeMap);
35006
- if (!parsed.success) return null;
35007
- return parsed.data?.narrator ?? null;
35008
- }
35009
- function cache(factsHash, narrative) {
35010
- cachedByHash.delete(factsHash);
35011
- cachedByHash.set(factsHash, narrative);
35012
- if (cachedByHash.size <= MAX_CACHED_HASHES) return;
35013
- const oldestHash = cachedByHash.keys().next().value;
35014
- if (oldestHash) cachedByHash.delete(oldestHash);
35015
- }
35016
- function start(request) {
35017
- const callbacksBySessionId = /* @__PURE__ */ new Map([[request.sessionId, request.onSettled]]);
35018
- active = {
35019
- factsHash: request.factsHash,
35020
- callbacksBySessionId
35021
- };
35022
- Promise.resolve().then(() => runNarration(request)).then((narrative) => finish(request.factsHash, narrative), () => finish(request.factsHash, null));
35023
- }
35024
- function startNext() {
35025
- if (active) return;
35026
- for (const [sessionId, request] of queuedBySessionId) {
35027
- queuedBySessionId.delete(sessionId);
35028
- if (!narratorSettings()?.enabled || cachedByHash.has(request.factsHash)) {
35029
- request.onSettled();
35030
- continue;
35031
- }
35032
- start(request);
35033
- break;
35034
- }
35035
- }
35036
- function finish(factsHash, narrative) {
35037
- if (!active || active.factsHash !== factsHash) return;
35038
- const callbacks = [...active.callbacksBySessionId.values()];
35039
- cache(factsHash, narrative);
35040
- active = null;
35041
- startNext();
35042
- for (const callback of callbacks) callback();
35043
- }
35044
- function narrationFor(map, onSettled, { mayStart = true } = {}) {
35045
- const config = narratorSettings();
35046
- if (!config?.enabled || !hasNarratableFacts(map)) {
35047
- queuedBySessionId.delete(map.sessionId);
35048
- return {
35049
- narrative: null,
35050
- narratorState: "disabled"
35051
- };
35052
- }
35053
- const engine = config.engine ?? "claude";
35054
- const configuredModel = config.model?.trim() || "";
35055
- const model = configuredModel || (engine === "claude" ? "haiku" : "codex default");
35056
- const factsHash = crypto.createHash("sha256").update(JSON.stringify([
35057
- factsHashInput(map),
35058
- engine,
35059
- configuredModel
35060
- ])).digest("hex");
35061
- if (cachedByHash.has(factsHash)) {
35062
- queuedBySessionId.delete(map.sessionId);
35063
- const narrative = cachedByHash.get(factsHash) ?? null;
35064
- return {
35065
- narrative,
35066
- narratorState: narrative ? "ready" : "failed"
35067
- };
35068
- }
35069
- if (active?.factsHash === factsHash) {
35070
- active.callbacksBySessionId.set(map.sessionId, onSettled);
35071
- queuedBySessionId.delete(map.sessionId);
35072
- return {
35073
- narrative: null,
35074
- narratorState: "pending"
35075
- };
35076
- }
35077
- if (!mayStart) return {
35078
- narrative: null,
35079
- narratorState: queuedBySessionId.has(map.sessionId) ? "pending" : "disabled"
35080
- };
35081
- const request = {
35082
- map,
35083
- factsHash,
35084
- sessionId: map.sessionId,
35085
- onSettled,
35086
- engine,
35087
- model,
35088
- codexModel: engine === "codex" ? configuredModel || null : null,
35089
- timeoutSeconds: config.timeoutSeconds ?? 90
35090
- };
35091
- if (active) {
35092
- queuedBySessionId.set(map.sessionId, request);
35093
- return {
35094
- narrative: null,
35095
- narratorState: "pending"
35096
- };
35097
- }
35098
- start(request);
35099
- return {
35100
- narrative: null,
35101
- narratorState: "pending"
35102
- };
35103
- }
35104
- return { narrationFor };
35105
- }
35106
- //#endregion
35107
34793
  //#region server/task-title-refiner.ts
35108
34794
  var PROMPT_FILE$1 = "task-title-prompt.txt";
35109
34795
  var RESULT_FILE$1 = "task-title-result.json";
@@ -46476,7 +46162,6 @@ function createBackendLanes(dependencies) {
46476
46162
  reviewSessions,
46477
46163
  investigationSessions,
46478
46164
  visionsSessions,
46479
- changeMapSessions,
46480
46165
  taskTitleSessions,
46481
46166
  benchmarkSessions
46482
46167
  ];
@@ -46757,21 +46442,6 @@ function createBackendLanes(dependencies) {
46757
46442
  ...notice
46758
46443
  });
46759
46444
  });
46760
- const changeMapSessions = /* @__PURE__ */ new Map();
46761
- const changeMapNarrator = createChangeNarrator({
46762
- getConfig: () => configStore.config,
46763
- spawnLane: createLaneSpawn({
46764
- sessions: changeMapSessions,
46765
- closeSessionDataClients,
46766
- hookRouter,
46767
- getHookPort,
46768
- spawnGate,
46769
- recordLane,
46770
- replayBufferKB: config.replayBufferKB,
46771
- laneName: "change-map",
46772
- guardrailsRefusal
46773
- })
46774
- });
46775
46445
  const taskTitleSessions = /* @__PURE__ */ new Map();
46776
46446
  const taskTitleRefiner = createTaskTitleRefiner({
46777
46447
  getConfig: () => configStore.config,
@@ -46959,13 +46629,11 @@ function createBackendLanes(dependencies) {
46959
46629
  branchGc,
46960
46630
  coderActivity,
46961
46631
  coderEnv,
46962
- changeMapNarrator,
46963
46632
  taskTitleRefiner,
46964
46633
  taskTitleSessions,
46965
46634
  current,
46966
46635
  currentIngest,
46967
46636
  currentVisions,
46968
- changeMapSessions,
46969
46637
  gitWorkspace,
46970
46638
  gitWorkspaceSync,
46971
46639
  githubStore,
@@ -49391,34 +49059,6 @@ function createSessionFactory(dependencies) {
49391
49059
  };
49392
49060
  }
49393
49061
  //#endregion
49394
- //#region server/core/diff-annotations-core.ts
49395
- var DIFF_ANNOTATION_HEADER = "Operator review notes on the current worktree diff:";
49396
- var DIFF_ANNOTATION_CLOSING = "Address each note, then reply with what changed.";
49397
- var REMOVED_LINE_MARKER = "(removed line)";
49398
- function sortAnnotations(list) {
49399
- return [...list].sort((left, right) => {
49400
- if (left.path !== right.path) return left.path < right.path ? -1 : 1;
49401
- if (left.line !== right.line) return left.line - right.line;
49402
- if (left.side === right.side) return 0;
49403
- return left.side < right.side ? -1 : 1;
49404
- });
49405
- }
49406
- function formatDiffAnnotationMessage(annotations) {
49407
- const entries = sortAnnotations(annotations).flatMap((annotation) => {
49408
- const note = scrubForPaste(annotation.note, DIFF_ANNOTATION_NOTE_MAX_CHARS);
49409
- const path = scrubForPaste(annotation.path, 400);
49410
- if (!note || !path) return [];
49411
- const marker = annotation.side === "old" ? ` ${REMOVED_LINE_MARKER}` : "";
49412
- return [`- ${path}:${annotation.line} (${annotation.section})${marker} ${note}`];
49413
- });
49414
- if (entries.length === 0) return "";
49415
- return [
49416
- DIFF_ANNOTATION_HEADER,
49417
- ...entries,
49418
- DIFF_ANNOTATION_CLOSING
49419
- ].join("\n");
49420
- }
49421
- //#endregion
49422
49062
  //#region server/github/core/github-issues-core.ts
49423
49063
  var GITHUB_ISSUE_BODY_MAX_CHARS = 12e3;
49424
49064
  function fencedBody(body) {
@@ -50406,7 +50046,7 @@ function changedFilesOf(scope) {
50406
50046
  isCommitted: false
50407
50047
  }));
50408
50048
  }
50409
- function createChangeMapService({ sessions, narrator = null, onNarrationSettled = () => {}, runGit = runGitAsync, nowFn = Date.now }) {
50049
+ function createChangeMapService({ sessions, runGit = runGitAsync, nowFn = Date.now }) {
50410
50050
  const specifierCache = createFileFactCache(extractImportSpecifiers, []);
50411
50051
  const pythonSpecifierCache = createFileFactCache(extractPythonImportSpecifiers, []);
50412
50052
  const tsconfigCache = createFileFactCache((text) => ({ config: parseTsconfigJsonc(text) }), { config: null });
@@ -50557,7 +50197,7 @@ function createChangeMapService({ sessions, narrator = null, onNarrationSettled
50557
50197
  };
50558
50198
  }
50559
50199
  }
50560
- async function assemble(session, mayStartNarration) {
50200
+ async function assemble(session) {
50561
50201
  forgetEndedSiblings();
50562
50202
  const scopes = await session.getChangeScopes();
50563
50203
  const inputsByRoot = /* @__PURE__ */ new Map();
@@ -50638,44 +50278,31 @@ function createChangeMapService({ sessions, narrator = null, onNarrationSettled
50638
50278
  for (const repo of repos) repo.links = [];
50639
50279
  }
50640
50280
  }
50641
- const factsOnly = {
50281
+ return ChangeMap.parse({
50642
50282
  sessionId: session.id,
50643
50283
  sig: hashText(JSON.stringify(scopes)),
50644
50284
  generatedAt: nowFn(),
50645
- repos,
50646
- narrative: null,
50647
- narratorState: "disabled"
50648
- };
50649
- const narration = narrator ? narrator.narrationFor(factsOnly, () => onNarrationSettled(session.id), { mayStart: mayStartNarration }) : null;
50650
- return ChangeMap.parse(narration ? {
50651
- ...factsOnly,
50652
- ...narration
50653
- } : factsOnly);
50285
+ repos
50286
+ });
50654
50287
  }
50655
- function startAssembly(session, mayStartNarration) {
50656
- const running = assemble(session, mayStartNarration).finally(() => {
50288
+ function startAssembly(session) {
50289
+ const running = assemble(session).finally(() => {
50657
50290
  if (runningBySessionId.get(session.id) === running) runningBySessionId.delete(session.id);
50658
50291
  });
50659
50292
  runningBySessionId.set(session.id, running);
50660
50293
  return running;
50661
50294
  }
50662
- function build(session, { mayStartNarration = true } = {}) {
50295
+ function build(session) {
50663
50296
  const queued = queuedBySessionId.get(session.id);
50664
- if (queued) {
50665
- queued.mayStartNarration ||= mayStartNarration;
50666
- return queued.promise;
50667
- }
50297
+ if (queued) return queued;
50668
50298
  const running = runningBySessionId.get(session.id);
50669
- if (!running) return startAssembly(session, mayStartNarration);
50670
- const followUp = {
50671
- mayStartNarration,
50672
- promise: running.then(ignoreOutcome, ignoreOutcome).then(() => {
50673
- queuedBySessionId.delete(session.id);
50674
- return startAssembly(session, followUp.mayStartNarration);
50675
- })
50676
- };
50299
+ if (!running) return startAssembly(session);
50300
+ const followUp = running.then(ignoreOutcome, ignoreOutcome).then(() => {
50301
+ queuedBySessionId.delete(session.id);
50302
+ return startAssembly(session);
50303
+ });
50677
50304
  queuedBySessionId.set(session.id, followUp);
50678
- return followUp.promise;
50305
+ return followUp;
50679
50306
  }
50680
50307
  return { build };
50681
50308
  }
@@ -50969,12 +50596,6 @@ function requestValidationErrorReply(msg, message) {
50969
50596
  ok: false,
50970
50597
  error: message
50971
50598
  }),
50972
- "send-diff-annotations": () => ({
50973
- type: "send-diff-annotations-result",
50974
- requestId,
50975
- ok: false,
50976
- error: message
50977
- }),
50978
50599
  "session-doc-read": () => ({
50979
50600
  type: "session-doc-response",
50980
50601
  requestId,
@@ -51042,25 +50663,8 @@ function registerControlHandlers(controlWss, deps) {
51042
50663
  issue: null,
51043
50664
  error: "Issues polling is not running."
51044
50665
  }
51045
- }), issueProjectRepos = null, serverBuild = () => null, getUsageSessions = null, getUsageReport = null, requestUsageReport = null, getPlanLimits = null, controlReplayLog = null, getRtkInstallStatus = () => null, telegramDelivery = null, resolveRtkPath = () => getRtkPath(), conversationFs = fs, conversationGit = runGitForConversationHistory, conversationProjectsDir = claudeProjectsDir(process.env, os.homedir()), readTracePage = null, readPlanRevision = null, decidePlanReview = null, sessionDocs = null, coherenceFeed = null, changeMapNarrator = null, coderEnv = null, remoteRepoGit = null, agentConnect = null } = deps;
51046
- const changeMaps = createChangeMapService({
51047
- sessions,
51048
- narrator: changeMapNarrator,
51049
- onNarrationSettled: (sessionId) => {
51050
- broadcastChangeMap(sessionId).catch((error) => {
51051
- console.warn(`[control] change-map broadcast failed: id=${sessionId}: ${errorMessage(error)}`);
51052
- });
51053
- }
51054
- });
51055
- async function broadcastChangeMap(sessionId) {
51056
- const session = sessions.get(sessionId);
51057
- if (!session) return;
51058
- broadcastControl({
51059
- type: "change-map",
51060
- id: session.id,
51061
- map: await changeMaps.build(session, { mayStartNarration: false })
51062
- });
51063
- }
50666
+ }), issueProjectRepos = null, serverBuild = () => null, getUsageSessions = null, getUsageReport = null, requestUsageReport = null, getPlanLimits = null, controlReplayLog = null, getRtkInstallStatus = () => null, telegramDelivery = null, resolveRtkPath = () => getRtkPath(), conversationFs = fs, conversationGit = runGitForConversationHistory, conversationProjectsDir = claudeProjectsDir(process.env, os.homedir()), readTracePage = null, readPlanRevision = null, decidePlanReview = null, sessionDocs = null, coherenceFeed = null, coderEnv = null, remoteRepoGit = null, agentConnect = null } = deps;
50667
+ const changeMaps = createChangeMapService({ sessions });
51064
50668
  function buildSettingsPayload$1() {
51065
50669
  return buildSettingsPayload({
51066
50670
  configStore,
@@ -52337,33 +51941,6 @@ function registerControlHandlers(controlWss, deps) {
52337
51941
  error: res.error || null
52338
51942
  });
52339
51943
  }
52340
- function handleSendDiffAnnotations(msg, ws) {
52341
- const reply = (payload) => replyTo(ws, msg, "send-diff-annotations-result", {
52342
- ok: false,
52343
- error: null,
52344
- ...payload
52345
- });
52346
- const session = findSession(msg);
52347
- if (!session) {
52348
- reply({ error: "Session not found" });
52349
- return;
52350
- }
52351
- const text = formatDiffAnnotationMessage(msg.annotations ?? []);
52352
- if (!text) {
52353
- reply({ error: "No review notes to send" });
52354
- return;
52355
- }
52356
- const pasted = session.pasteTextWhenReady(text);
52357
- if (!pasted.ok) {
52358
- reply({ error: `Could not write to "${session.name}" (${pasted.reason})` });
52359
- return;
52360
- }
52361
- session.noteOperatorDraft();
52362
- reply({
52363
- ok: true,
52364
- pending: pasted.deferred === true
52365
- });
52366
- }
52367
51944
  async function handleRequestUsageReport(msg, ws) {
52368
51945
  if (!requestUsageReport) {
52369
51946
  ws.send(JSON.stringify({
@@ -52563,7 +52140,6 @@ function registerControlHandlers(controlWss, deps) {
52563
52140
  "request-hooks-report": handleRequestHooksReport,
52564
52141
  "save-hook": handleSaveHook,
52565
52142
  "delete-hook": handleDeleteHook,
52566
- "send-diff-annotations": handleSendDiffAnnotations,
52567
52143
  "kill": (msg) => {
52568
52144
  const s = findSession(msg);
52569
52145
  if (s) s.killSession();
@@ -52632,8 +52208,6 @@ function registerControlHandlers(controlWss, deps) {
52632
52208
  sig: null,
52633
52209
  generatedAt: Date.now(),
52634
52210
  repos: [],
52635
- narrative: null,
52636
- narratorState: "disabled",
52637
52211
  error: `Change map could not be built: ${errorMessage(error)}`
52638
52212
  };
52639
52213
  });
@@ -53090,7 +52664,6 @@ function createBackendControl(dependencies) {
53090
52664
  decidePlanReview: dependencies.decidePlanReview,
53091
52665
  sessionDocs: dependencies.sessionDocs,
53092
52666
  coherenceFeed: dependencies.coherenceFeed,
53093
- changeMapNarrator: dependencies.changeMapNarrator,
53094
52667
  coderEnv: laneAssembly.coderEnv,
53095
52668
  remoteRepoGit: laneAssembly.gitWorkspace,
53096
52669
  agentConnect: dependencies.agentConnect
@@ -56905,7 +56478,7 @@ function createBackend(httpServer, options = {}) {
56905
56478
  logger: console,
56906
56479
  renameSessionFromTaskTitle
56907
56480
  });
56908
- const { allLiveSessions, branchGc, coderActivity, changeMapSessions, gitWorkspace: assembledGitWorkspace, gitWorkspaceSync, posthog, recordLane, spawnGate, tapIngestForSession, teamReview, myPrs, issues, traceChangeBroadcast, traceWiring, uploadsWiring, usage, visionsSessions, visionsSetup } = laneAssembly;
56481
+ const { allLiveSessions, branchGc, coderActivity, gitWorkspace: assembledGitWorkspace, gitWorkspaceSync, posthog, recordLane, spawnGate, tapIngestForSession, teamReview, myPrs, issues, traceChangeBroadcast, traceWiring, uploadsWiring, usage, visionsSessions, visionsSetup } = laneAssembly;
56909
56482
  gitWorkspace = assembledGitWorkspace;
56910
56483
  agentApi = createAgentApiWiring({
56911
56484
  config,
@@ -57093,7 +56666,6 @@ function createBackend(httpServer, options = {}) {
57093
56666
  reviewSessions,
57094
56667
  investigationSessions,
57095
56668
  visionsSessions,
57096
- changeMapSessions,
57097
56669
  taskTitleSessions: laneAssembly.taskTitleSessions,
57098
56670
  benchmarkSessions: laneAssembly.benchmarkSessions,
57099
56671
  branchGc,
@@ -57169,7 +56741,6 @@ function createBackend(httpServer, options = {}) {
57169
56741
  decidePlanReview: laneAssembly.planReview?.decide ?? null,
57170
56742
  sessionDocs,
57171
56743
  coherenceFeed,
57172
- changeMapNarrator: laneAssembly.changeMapNarrator,
57173
56744
  serverBuild: () => serverBuild,
57174
56745
  telemetry,
57175
56746
  logger: console
@@ -1,6 +1,6 @@
1
1
  import { r as errorMessage } from "./text-DoirglWV.js";
2
- import { c as resolveConfigPath } from "./config-store-Br2PY4Tg.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-DcmhRuRc.js";
2
+ import { c as resolveConfigPath } from "./config-store-DOGtTJ1d.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-DeWURqqr.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-DFCTvPjj.js";
6
- import { o as glimmervoidHomeDir, ot as canonicalizePath } from "./config-store-Br2PY4Tg.js";
6
+ import { o as glimmervoidHomeDir, ot as canonicalizePath } from "./config-store-DOGtTJ1d.js";
7
7
  import fs from "node:fs";
8
8
  import path from "node:path";
9
9
  import crypto from "node:crypto";