glimmervoid 0.40.1 → 0.41.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (42) hide show
  1. package/dist/bin/glimmervoid.js +18 -18
  2. package/dist/chunks/{adapters-CTm8gTiM.js → adapters-JDV45XpZ.js} +1 -1
  3. package/dist/chunks/{adapters-D86Do-kG.js → adapters-yVOK5me4.js} +293 -15
  4. package/dist/chunks/{agent-api-cli-Cj73fMC7.js → agent-api-cli-1xk9WryE.js} +12 -3
  5. package/dist/chunks/{agent-api-cli-CS62LiST.js → agent-api-cli-BSY2jR0P.js} +1 -1
  6. package/dist/chunks/{agent-api-core-Cf70N-eJ.js → agent-api-core-syEPHs7j.js} +22 -4
  7. package/dist/chunks/{agent-setup-cli-BffFfN-1.js → agent-setup-cli-py1gUMvJ.js} +1 -1
  8. package/dist/chunks/child-process-safe-CjVtRjDD.js +1 -0
  9. package/dist/chunks/{child-process-safe-CbQnyh7D.js → child-process-safe-D4hyVIXj.js} +4 -1
  10. package/dist/chunks/{config-store-BSk1Ai2Z.js → config-store-BEaaXTd5.js} +38 -2
  11. package/dist/chunks/config-store-DE_r4DP8.js +1 -0
  12. package/dist/chunks/{contracts-CLBzEau4.js → contracts-V_hfT23R.js} +167 -6
  13. package/dist/chunks/{control-messages-CMIEvS1e.js → control-messages-Ci4g6gD1.js} +110 -2
  14. package/dist/chunks/{git-version-B3CmEw-k.js → git-version-D_iXgYTZ.js} +2 -2
  15. package/dist/chunks/{grok-mti-4OsU.js → grok-BUGgQVE3.js} +1 -1
  16. package/dist/chunks/{guardrails-deps-CLxK4J-g.js → guardrails-deps-BjPzk1rE.js} +1 -1
  17. package/dist/chunks/{main-Dyr9DbUw.js → main-Bbh8ky2x.js} +8458 -5740
  18. package/dist/chunks/{pair-cli-D754Z91h.js → pair-cli-DkItUGpT.js} +2 -2
  19. package/dist/chunks/{remote-config-CLI_gHAh.js → remote-config-DFwmHWed.js} +1 -1
  20. package/dist/chunks/{rtk-resolver-BgoPsEhT.js → rtk-resolver-BDHi6RMv.js} +1 -1
  21. package/dist/chunks/rtk-resolver-Dr4iJsiS.js +1 -0
  22. package/dist/chunks/{session-BmjBq2rH.js → session-C8IpFmGQ.js} +38 -2
  23. package/dist/chunks/{session-routes-Dv0vvLc6.js → session-routes-nySS7DUE.js} +36 -2
  24. package/dist/chunks/{settings-cli-CsDruT8O.js → settings-cli-CaYd3bUH.js} +5 -5
  25. package/dist/chunks/{settings-readout-core-CPm5ONXm.js → settings-readout-core-Du7n-zyD.js} +2 -2
  26. package/dist/chunks/{ssh-sign-cli-BG29CY0B.js → ssh-sign-cli-BLzmQ3Vh.js} +3 -3
  27. package/dist/chunks/{visions-cli-CYujESdJ.js → visions-cli-CVRB9IWA.js} +1 -1
  28. package/dist/chunks/{visions-setup-B-ZeRdsi.js → visions-setup-DB2P8JUL.js} +1 -1
  29. package/dist/client/assets/index-D7QFo-gy.js +176 -0
  30. package/dist/client/assets/index-DKnOk67Z.css +2 -0
  31. package/dist/client/index.html +2 -2
  32. package/dist/scripts/postinstall-path-check.js +1 -1
  33. package/dist/server/index.js +1 -1
  34. package/dist/session/guardrails-open-launcher.js +1 -1
  35. package/dist/session/hook-tool-relay.js +1 -1
  36. package/dist/session/statusline-relay.js +1 -1
  37. package/package.json +1 -1
  38. package/dist/chunks/child-process-safe-ChRmWAJP.js +0 -1
  39. package/dist/chunks/config-store-B67fnqQ1.js +0 -1
  40. package/dist/chunks/rtk-resolver-BGE6Hd_L.js +0 -1
  41. package/dist/client/assets/index-B-19NksJ.js +0 -148
  42. package/dist/client/assets/index-Dp9irA7v.css +0 -2
@@ -1,6 +1,6 @@
1
1
  import { r as errorMessage } from "./text-DoirglWV.js";
2
- import { c as resolveConfigPath } from "./config-store-BSk1Ai2Z.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-CLI_gHAh.js";
2
+ import { c as resolveConfigPath } from "./config-store-BEaaXTd5.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-DFwmHWed.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-BSk1Ai2Z.js";
6
+ import { o as glimmervoidHomeDir, ot as canonicalizePath } from "./config-store-BEaaXTd5.js";
7
7
  import fs from "node:fs";
8
8
  import path from "node:path";
9
9
  import crypto from "node:crypto";
@@ -1,4 +1,4 @@
1
- import { i as execSync } from "./child-process-safe-CbQnyh7D.js";
1
+ import { i as execSync } from "./child-process-safe-D4hyVIXj.js";
2
2
  import { n as glimmervoidHomeDir } from "./config-path-core-DFt-TemS.js";
3
3
  import { r as resolveRtkPath } from "./hook-tools-Dl7-r2Eb.js";
4
4
  import fs from "node:fs";
@@ -0,0 +1 @@
1
+ export { t as getRtkPath } from "./rtk-resolver-BDHi6RMv.js";
@@ -11,7 +11,7 @@ var STATES = Object.freeze({
11
11
  DONE: "DONE",
12
12
  FAILED: "FAILED"
13
13
  });
14
- Object.freeze({
14
+ var BADGE_LABELS = Object.freeze({
15
15
  [STATES.DORMANT]: "Dormant",
16
16
  [STATES.INITIALIZING]: "Starting",
17
17
  [STATES.STARTING]: "Starting",
@@ -932,6 +932,7 @@ var SessionSnapshot = z.object({
932
932
  dangerouslySkipPermissions: z.boolean(),
933
933
  saneYolo: z.boolean().default(false),
934
934
  ephemeral: z.boolean(),
935
+ ownerId: z.string().nullable().optional(),
935
936
  isWorktree: z.boolean(),
936
937
  isWorkspace: z.boolean().default(false),
937
938
  isGuarded: z.boolean().default(false),
@@ -974,6 +975,9 @@ var SshSignReply = z.union([z.object({
974
975
  var SESSION_COMMANDS = [
975
976
  "push",
976
977
  "spawn",
978
+ "send",
979
+ "read",
980
+ "close",
977
981
  "attention",
978
982
  "board",
979
983
  "edit",
@@ -989,6 +993,28 @@ var AgentSpawnRequest = z.object({
989
993
  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(),
990
994
  agent: z.string({ error: "agent must be a string" }).min(1, { error: "agent must not be empty" }).max(40, { error: "agent must be at most 40 characters" }).optional()
991
995
  }).strict();
996
+ var SessionTarget = z.string({ error: "the session must be a string" }).min(1, { error: "the session must not be empty" }).max(300, { error: "the session must be at most 300 characters" });
997
+ var AgentSendRequest = z.object({ words: z.array(z.string({ error: "each word must be a string" }).max(2e4, { error: "each word must be at most 20000 characters" }), { error: "words must be a list" }).min(1, { error: "send needs text" }).max(5e3, { error: "send takes at most 5000 words" }) }).strict();
998
+ var AgentReadRequest = z.object({ child: SessionTarget.optional() }).strict();
999
+ var AgentCloseRequest = z.object({ child: SessionTarget }).strict();
1000
+ var AgentChannelEntry = z.object({
1001
+ from: z.enum([
1002
+ "parent",
1003
+ "child",
1004
+ "glimmervoid"
1005
+ ]),
1006
+ at: z.number().finite(),
1007
+ text: z.string()
1008
+ }).strict();
1009
+ z.object({
1010
+ ok: z.literal(true),
1011
+ channels: z.array(z.object({
1012
+ sessionId: z.string(),
1013
+ name: z.string(),
1014
+ entries: z.array(AgentChannelEntry),
1015
+ dropped: z.number().int().nonnegative()
1016
+ }).strict())
1017
+ }).strict();
992
1018
  var AgentAttentionRequest = z.object({ note: z.string({ error: "note must be a string" }).min(1, { error: "note must not be empty" }).max(500, { error: "note must be at most 500 characters" }) }).strict();
993
1019
  z.union([z.object({
994
1020
  ok: z.literal(true),
@@ -1074,10 +1100,20 @@ var AgentLimitsReply = z.object({
1074
1100
  reason: z.string().optional()
1075
1101
  }).strict()),
1076
1102
  guarded: z.boolean(),
1103
+ boundary: z.enum([
1104
+ "os-sandbox",
1105
+ "workspace",
1106
+ "none"
1107
+ ]),
1108
+ environment: z.object({
1109
+ name: z.string(),
1110
+ workspace: z.string(),
1111
+ state: z.string()
1112
+ }).strict().nullable(),
1077
1113
  deadEnds: z.array(z.object({
1078
1114
  blocked: z.string(),
1079
1115
  route: z.string()
1080
1116
  }).strict())
1081
1117
  }).strict().extend({ ok: z.literal(true) }).strict();
1082
1118
  //#endregion
1083
- export { MyPrsSnapshot as $, SessionSnapshot as A, canApproveAfterComment as At, MyPrCheckContextsResponse as B, repoParts as Bt, SESSION_DOC_BODY_CAP_BYTES as C, TeamReviewCompareFiles as Ct, SIGN_URL_ENV as D, TeamReviewThreadCommentsResponse as Dt, SESSION_NAME_RULE_TEXT as E, TeamReviewStatus as Et, TaskTitle as F, HEX_SHA_RE as Ft, MyPrMergeRequest as G, KILLABLE_STATES as Gt, MyPrKeepMergeableResult as H, GithubPollingRefreshResult as Ht, LinkedPr as I, shortSha as It, MyPrMergeWhenReadyRequest as J, STATES as Jt, MyPrMergeResult as K, MERGEABLE_LIVE_STATES as Kt, MyPr as L, GH_SEGMENT as Lt, SshSignReply as M, hasRequiredActionHead as Mt, SshSignRequest as N, hasStandingViewerApproval as Nt, SSH_SIGN_BODY_CAP_BYTES as O, TeamReviewThreadResult as Ot, TASK_TITLE_CONTROL_CHARACTERS as P, FULL_SHA_RE as Pt, MyPrThreadsResponse as Q, MyPrAutoRebase as R, NODE_ID_RE as Rt, SESSION_COMMANDS as S, TeamReviewActionResult as St, SESSION_NAME_PATTERN as T, TeamReviewStateEntry as Tt, MyPrLaneEntry as U, GithubPrsFreshness as Ut, MyPrKeepMergeableRequest as V, GithubPollingRefreshRequest as Vt, MyPrMergeMethod as W, githubPollingShape as Wt, MyPrSearchNode as X, MyPrMergeWhenReadyResult as Y, MyPrThreadNode as Z, ConversationApproval as _, ReviewFinding as _t, AgentEditRequest as a, CommitSha as at, PendingWakeup as b, ReviewVerdict as bt, AgentSettingsReply as c, FindingSeverity as ct, COHERENCE_HOOKS_INACTIVE as d, PostingPlan as dt, MyPrsState as et, CONVERSATION_APPROVAL_SUMMARY_MAX_CHARS as f, PrDetail as ft, ConversationAnswers as g, ReviewDraft as gt, CoherenceHooksState as h, ReviewComment as ht, AgentAttentionRequest as i, repositoryName as it, SessionState as j, decisionAsIfApprovalRequired as jt, SessionDoc as k, TeamReviewThreadsRepository as kt, AgentSettingsRequest as l, GithubReviewDecision as lt, CONVERSATION_TOOL_RESULT_HOOK_EVENT as m, ReviewChecksState as mt, AGENT_URL_ENV as n, SessionPrLinks as nt, AgentLimitsReply as o, DECIDING_REVIEW_STATES as ot, CONVERSATION_PERMISSION_HOOK_EVENT as p, QueuedReview as pt, MyPrMergeStateResponse as q, RESTARTABLE_STATES as qt, ASK_USER_QUESTION_TOOL_NAME as r, pullRequestKeyFormat as rt, AgentPullRequestRequest as s, EarlierReview as st, AGENT_API_VERBS as t, MyPrsStatus as tt, AgentSpawnRequest as u, GithubReviewState as ut, ConversationApprovalDecision as v, ReviewResult as vt, SESSION_DOC_PATH_MAX_CHARS as w, TeamReviewResolveResponse as wt, RefinedTaskTitle as x, TeamReviewActionRequest as xt, ConversationQuestion as y, ReviewThreadId as yt, MyPrCheckContext as z, REPO_SLUG_RE as zt };
1119
+ export { MyPrSearchNode as $, SIGN_URL_ENV as A, TeamReviewThreadCommentsResponse as At, MyPr as B, GH_SEGMENT as Bt, PendingWakeup as C, ReviewVerdict as Ct, SESSION_DOC_PATH_MAX_CHARS as D, TeamReviewResolveResponse as Dt, SESSION_DOC_BODY_CAP_BYTES as E, TeamReviewCompareFiles as Et, SshSignReply as F, hasRequiredActionHead as Ft, MyPrKeepMergeableResult as G, GithubPollingRefreshResult as Gt, MyPrCheckContext as H, REPO_SLUG_RE as Ht, SshSignRequest as I, hasStandingViewerApproval as It, MyPrMergeRequest as J, BADGE_LABELS as Jt, MyPrLaneEntry as K, GithubPrsFreshness as Kt, TASK_TITLE_CONTROL_CHARACTERS as L, FULL_SHA_RE as Lt, SessionDoc as M, TeamReviewThreadsRepository as Mt, SessionSnapshot as N, canApproveAfterComment as Nt, SESSION_NAME_PATTERN as O, TeamReviewStateEntry as Ot, SessionState as P, decisionAsIfApprovalRequired as Pt, MyPrMergeWhenReadyResult as Q, STATES as Qt, TaskTitle as R, HEX_SHA_RE as Rt, ConversationQuestion as S, ReviewThreadId as St, SESSION_COMMANDS as T, TeamReviewActionResult as Tt, MyPrCheckContextsResponse as U, repoParts as Ut, MyPrAutoRebase as V, NODE_ID_RE as Vt, MyPrKeepMergeableRequest as W, GithubPollingRefreshRequest as Wt, MyPrMergeStateResponse as X, MERGEABLE_LIVE_STATES as Xt, MyPrMergeResult as Y, KILLABLE_STATES as Yt, MyPrMergeWhenReadyRequest as Z, RESTARTABLE_STATES as Zt, CONVERSATION_TOOL_RESULT_HOOK_EVENT as _, ReviewChecksState as _t, AgentCloseRequest as a, SessionPrLinks as at, ConversationApproval as b, ReviewFinding as bt, AgentPullRequestRequest as c, CommitSha as ct, AgentSettingsReply as d, FindingSeverity as dt, MyPrThreadNode as et, AgentSettingsRequest as f, GithubReviewDecision as ft, CONVERSATION_PERMISSION_HOOK_EVENT as g, QueuedReview as gt, CONVERSATION_APPROVAL_SUMMARY_MAX_CHARS as h, PrDetail as ht, AgentAttentionRequest as i, MyPrsStatus as it, SSH_SIGN_BODY_CAP_BYTES as j, TeamReviewThreadResult as jt, SESSION_NAME_RULE_TEXT as k, TeamReviewStatus as kt, AgentReadRequest as l, DECIDING_REVIEW_STATES as lt, COHERENCE_HOOKS_INACTIVE as m, PostingPlan as mt, AGENT_URL_ENV as n, MyPrsSnapshot as nt, AgentEditRequest as o, pullRequestKeyFormat as ot, AgentSpawnRequest as p, GithubReviewState as pt, MyPrMergeMethod as q, githubPollingShape as qt, ASK_USER_QUESTION_TOOL_NAME as r, MyPrsState as rt, AgentLimitsReply as s, repositoryName as st, AGENT_API_VERBS as t, MyPrThreadsResponse as tt, AgentSendRequest as u, EarlierReview as ut, CoherenceHooksState as v, ReviewComment as vt, RefinedTaskTitle as w, TeamReviewActionRequest as wt, ConversationApprovalDecision as x, ReviewResult as xt, ConversationAnswers as y, ReviewDraft as yt, LinkedPr as z, shortSha as zt };
@@ -1,4 +1,4 @@
1
- import { S as SESSION_COMMANDS } from "./session-BmjBq2rH.js";
1
+ import { T as SESSION_COMMANDS } from "./session-C8IpFmGQ.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.";
@@ -77,6 +77,24 @@ function operatorStateRoute(caller) {
77
77
  reason: "a lane session cannot read or queue the operator's reviews, pull requests or settings, because a lane runs on input the operator has not vetted"
78
78
  };
79
79
  }
80
+ function channelRoute(caller) {
81
+ if (hasOperatorCard(caller)) return ANSWERS;
82
+ return {
83
+ answers: false,
84
+ reason: "a lane session has no parent or spawned sessions to message"
85
+ };
86
+ }
87
+ function closeRoute({ isEphemeral, isSpawnedChild }) {
88
+ if (isSpawnedChild) return {
89
+ answers: false,
90
+ reason: "a spawned session owns no sessions to close"
91
+ };
92
+ if (isEphemeral) return {
93
+ answers: false,
94
+ reason: "a lane session owns no sessions to close"
95
+ };
96
+ return ANSWERS;
97
+ }
80
98
  function linkPrRoute(caller) {
81
99
  if (hasOperatorCard(caller)) return ANSWERS;
82
100
  return {
@@ -87,6 +105,9 @@ function linkPrRoute(caller) {
87
105
  var COMMAND_ROUTES = Object.freeze({
88
106
  push: pushRoute,
89
107
  spawn: spawnRoute,
108
+ send: channelRoute,
109
+ read: channelRoute,
110
+ close: closeRoute,
90
111
  attention: attentionRoute,
91
112
  board: () => ANSWERS,
92
113
  edit: editRoute,
@@ -117,23 +138,36 @@ var OPERATOR_SESSION_GUARDRAIL_DEAD_ENDS = Object.freeze([{
117
138
  blocked: "credential folders, Glimmervoid's own folder and any path the operator blocked are off limits",
118
139
  route: "flag the operator with glimmervoid attention"
119
140
  }]);
141
+ function sessionBoundary({ environment, isGuarded }) {
142
+ if (environment !== null) return "workspace";
143
+ return isGuarded ? "os-sandbox" : "none";
144
+ }
120
145
  function describeSessionLimits(facts) {
121
146
  return {
122
147
  commands: SESSION_COMMANDS.map((name) => commandLimit(name, facts)),
123
148
  guarded: facts.isGuarded,
149
+ boundary: sessionBoundary(facts),
150
+ environment: facts.environment,
124
151
  deadEnds: runsUnderOperatorSessionGuardrails(facts) ? [...OPERATOR_SESSION_GUARDRAIL_DEAD_ENDS] : []
125
152
  };
126
153
  }
127
- function formatSessionLimits({ commands, guarded, deadEnds }) {
154
+ function boundaryLines({ boundary, environment }) {
155
+ if (environment === null) return [` boundary: ${boundary}`];
156
+ return [` boundary: ${boundary}`, ` environment: ${environment.name}, workspace ${environment.workspace}, ${environment.state}`];
157
+ }
158
+ function formatSessionLimits(limits) {
159
+ const { commands, guarded, deadEnds } = limits;
128
160
  const commandLines = commands.map(({ name, answers, reason }) => answers ? ` ${name}: available` : ` ${name}: not available, ${reason}`);
129
161
  if (!guarded) return [
130
162
  "This session:",
131
163
  ...commandLines,
164
+ ...boundaryLines(limits),
132
165
  " guardrails: none"
133
166
  ];
134
167
  return [
135
168
  "This session:",
136
169
  ...commandLines,
170
+ ...boundaryLines(limits),
137
171
  " guardrails: OS-enforced, so a read, write or connection they refuse will not succeed on retry",
138
172
  ...deadEnds.map(({ blocked, route }) => ` ${blocked}: ${route}`)
139
173
  ];
@@ -1,11 +1,11 @@
1
1
  import { r as errorMessage, t as errorCode } from "./text-DoirglWV.js";
2
- import { c as AgentSettingsReply } from "./session-BmjBq2rH.js";
2
+ import { d as AgentSettingsReply } from "./session-C8IpFmGQ.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 { C as deleteValueAtPath, D as scoreSettingsSearch, E as parsePosthogProjectSelection, N as SETTINGS_REGISTRY, O as setValueAtPath, Q as withEnvSecrets, S as cloneValue, X as readEnvSecrets, Y as ENV_SECRET_BINDINGS, j as valueAtPath, l as saveConfigFileOnce, s as loadConfigFile, u as validateConfig } from "./config-store-BSk1Ai2Z.js";
7
- import { p as BrowserConfig } from "./contracts-CLBzEau4.js";
8
- import { a as fail, c as listSettings, d as renderSectionTables, f as requireConfigFileSetting, g as valueText, h as succeed, i as describeSetting, l as readSetting, m as settingsRequestForServer, n as configFileViewOf, o as fitColumn, p as sectionOf, r as defaultText, s as getSetting, t as ALL_SETTINGS } from "./settings-readout-core-CPm5ONXm.js";
6
+ import { C as deleteValueAtPath, D as scoreSettingsSearch, E as parsePosthogProjectSelection, N as SETTINGS_REGISTRY, O as setValueAtPath, Q as withEnvSecrets, S as cloneValue, X as readEnvSecrets, Y as ENV_SECRET_BINDINGS, j as valueAtPath, l as saveConfigFileOnce, s as loadConfigFile, u as validateConfig } from "./config-store-BEaaXTd5.js";
7
+ import { m as BrowserConfig } from "./contracts-V_hfT23R.js";
8
+ import { a as fail, c as listSettings, d as renderSectionTables, f as requireConfigFileSetting, g as valueText, h as succeed, i as describeSetting, l as readSetting, m as settingsRequestForServer, n as configFileViewOf, o as fitColumn, p as sectionOf, r as defaultText, s as getSetting, t as ALL_SETTINGS } from "./settings-readout-core-Du7n-zyD.js";
9
9
  import fs from "node:fs";
10
10
  import os from "node:os";
11
11
  import { parseArgs } from "node:util";
@@ -329,7 +329,7 @@ function processIo() {
329
329
  async function runSettingsCli(commandArguments, io = processIo()) {
330
330
  const serverRequest = settingsRequestForServer(commandArguments, process.env);
331
331
  if (!serverRequest) return runSettingsCommand(commandArguments, io);
332
- const { askAgentApi } = await import("./agent-api-cli-CS62LiST.js");
332
+ const { askAgentApi } = await import("./agent-api-cli-BSY2jR0P.js");
333
333
  const reply = AgentSettingsReply.safeParse(await askAgentApi("settings", serverRequest).catch((error) => ({
334
334
  ok: false,
335
335
  error: errorMessage(error)
@@ -1,6 +1,6 @@
1
- import { l as AgentSettingsRequest } from "./session-BmjBq2rH.js";
1
+ import { f as AgentSettingsRequest } from "./session-C8IpFmGQ.js";
2
2
  import { t as renderTable } from "./ascii-figure-core-pDAwtlKO.js";
3
- import { A as settingsOf, M as FILE_ONLY_GROUPS, N as SETTINGS_REGISTRY, S as cloneValue, T as hasScaledUnit, X as readEnvSecrets, j as valueAtPath, k as settingsGroupOf, w as displayText, x as SETTINGS_INDEX } from "./config-store-BSk1Ai2Z.js";
3
+ import { A as settingsOf, M as FILE_ONLY_GROUPS, N as SETTINGS_REGISTRY, S as cloneValue, T as hasScaledUnit, X as readEnvSecrets, j as valueAtPath, k as settingsGroupOf, w as displayText, x as SETTINGS_INDEX } from "./config-store-BEaaXTd5.js";
4
4
  import { parseArgs } from "node:util";
5
5
  //#region server/core/settings-readout-core.ts
6
6
  var VALUE_COLUMN_WIDTH = 40;
@@ -1,8 +1,8 @@
1
1
  import { r as errorMessage } from "./text-DoirglWV.js";
2
- import { D as SIGN_URL_ENV, M as SshSignReply } from "./session-BmjBq2rH.js";
3
- import { n as execFileAsync, o as spawn } from "./child-process-safe-CbQnyh7D.js";
2
+ import { A as SIGN_URL_ENV, F as SshSignReply } from "./session-C8IpFmGQ.js";
3
+ import { n as execFileAsync, o as spawn } from "./child-process-safe-D4hyVIXj.js";
4
4
  import { a as isLoopbackHostname } from "./hook-relay-core-DA_bz2KA.js";
5
- import { n as postToAgentIngress } from "./agent-api-cli-Cj73fMC7.js";
5
+ import { n as postToAgentIngress } from "./agent-api-cli-1xk9WryE.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";
@@ -1,5 +1,5 @@
1
1
  import { t as renderTable } from "./ascii-figure-core-pDAwtlKO.js";
2
- import { a as relayInvocationOptions, c as unwireEverything, d as extensionIdOf, f as buildSetupGuide, h as isExtensionInstalled, i as packVsix, l as wireEverything, m as recipeIds, o as resolveRelayInvocation, p as commandLine, r as editorExtensions, s as resolvedEditorPaths, t as RELAY_PATH, u as editorTargets } from "./visions-setup-B-ZeRdsi.js";
2
+ import { a as relayInvocationOptions, c as unwireEverything, d as extensionIdOf, f as buildSetupGuide, h as isExtensionInstalled, i as packVsix, l as wireEverything, m as recipeIds, o as resolveRelayInvocation, p as commandLine, r as editorExtensions, s as resolvedEditorPaths, t as RELAY_PATH, u as editorTargets } from "./visions-setup-DB2P8JUL.js";
3
3
  import fs from "node:fs";
4
4
  //#region server/visions/visions-cli.ts
5
5
  function fileOutcomeRows(files) {
@@ -1,7 +1,7 @@
1
1
  import { r as errorMessage } from "./text-DoirglWV.js";
2
2
  import { r as isPathInside } from "./paths-Bu4eH1Yd.js";
3
3
  import { a as packageRoot, i as extensionDir, n as cliPath, o as relayPath, t as bundled } from "./runtime-paths-BkeftE60.js";
4
- import { i as execSync, n as execFileAsync } from "./child-process-safe-CbQnyh7D.js";
4
+ import { i as execSync, n as execFileAsync } from "./child-process-safe-D4hyVIXj.js";
5
5
  import { r as resolvePathCommandMatches } from "./spawn-command-Cc40FiZI.js";
6
6
  import { n as isRecord } from "./coerce-NSst8oRP.js";
7
7
  import { stripTypeScriptTypes } from "node:module";