glimmervoid 0.32.0 → 0.32.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 (25) hide show
  1. package/dist/bin/glimmervoid.js +10 -9
  2. package/dist/chunks/{adapters-CoC18rdt.js → adapters-BS_7o8fj.js} +3 -3
  3. package/dist/chunks/{adapters-BU74M4QZ.js → adapters-Bn-dQ02i.js} +1 -1
  4. package/dist/chunks/{agent-api-cli-V_BkYhBI.js → agent-api-cli-BR0GVDn6.js} +11 -2
  5. package/dist/chunks/{agent-api-core-B3YI8SYs.js → agent-api-core-DUiWHSHg.js} +10 -1
  6. package/dist/chunks/{agent-setup-cli-D4956BfN.js → agent-setup-cli-BqYcwfOs.js} +1 -1
  7. package/dist/chunks/{config-CZ4H51D0.js → config-B6BkTOcE.js} +1 -1
  8. package/dist/chunks/config-store-C8Ry8ZFD.js +2 -0
  9. package/dist/chunks/{config-store-BVtdHkDK.js → config-store-aZpWeX92.js} +2 -2
  10. package/dist/chunks/{contracts-DXujp-Zn.js → contracts-DzDg-Z9I.js} +42 -2
  11. package/dist/chunks/{grok-C4lzPFEg.js → grok-7Z5KcgcY.js} +1 -1
  12. package/dist/chunks/{knowledge-graph-cli-Bjy9_kv5.js → knowledge-graph-cli-D5Gf87Y7.js} +1 -1
  13. package/dist/chunks/{main-DSbpYn2Y.js → main-BG6iHwoY.js} +834 -410
  14. package/dist/chunks/{pair-cli-CKn-wUw9.js → pair-cli-DQkrt_-s.js} +2 -2
  15. package/dist/chunks/{remote-config-DP44Ybt9.js → remote-config-Da4C7tMG.js} +1 -1
  16. package/dist/chunks/{session-B8fJb_Or.js → session-Dtkp9o3r.js} +11 -2
  17. package/dist/client/assets/index-BxU3Ww0L.css +1 -0
  18. package/dist/client/assets/index-Co4S7tnh.js +254 -0
  19. package/dist/client/index.html +2 -2
  20. package/dist/server/index.js +1 -1
  21. package/dist/session/sandbox-open-launcher.js +41 -2
  22. package/package.json +1 -1
  23. package/dist/chunks/config-store-Cp62jN1O.js +0 -2
  24. package/dist/client/assets/index-C_XKsDFx.css +0 -1
  25. package/dist/client/assets/index-CoqWjYxP.js +0 -254
@@ -2,7 +2,7 @@
2
2
  import { o as nodePtyRebuildHint, r as firstLine, t as probeNodePty } from "../chunks/node-pty-preflight-C8QIlrtU.js";
3
3
  import { i as errorText } from "../chunks/text-DoirglWV.js";
4
4
  import { a as packageRoot } from "../chunks/runtime-paths-BPoxENmK.js";
5
- import { t as AGENT_API_VERBS } from "../chunks/session-B8fJb_Or.js";
5
+ import { t as AGENT_API_VERBS } from "../chunks/session-Dtkp9o3r.js";
6
6
  import { i as execSync } from "../chunks/child-process-safe-DDELk9XC.js";
7
7
  import { t as renderTable } from "../chunks/ascii-figure-core-pDAwtlKO.js";
8
8
  import { n as glimmervoidHomeDir, t as decideConfigPath } from "../chunks/config-path-core-DFt-TemS.js";
@@ -108,6 +108,7 @@ Commands:
108
108
  attention <note> From inside a Glimmervoid session, flag it as needing the operator
109
109
  board From inside a Glimmervoid session, list the live sessions
110
110
  push From inside a Glimmervoid session, land its commits on the integration branch and push it
111
+ edit <path> From inside a Glimmervoid session, surface a text file for the operator to edit in the dashboard
111
112
  kg [command] Experimental typed knowledge and task graph (Settings > Lanes > Knowledge graph)
112
113
 
113
114
  Options:
@@ -133,15 +134,15 @@ var SUBCOMMAND_RUNNERS = new Map([
133
134
  return 0;
134
135
  }],
135
136
  ["pair", async (subcommandArgs) => {
136
- const { runPairCli } = await import("../chunks/pair-cli-CKn-wUw9.js");
137
+ const { runPairCli } = await import("../chunks/pair-cli-DQkrt_-s.js");
137
138
  return runPairCli(subcommandArgs);
138
139
  }],
139
140
  ["agent", async (subcommandArgs) => {
140
- const { runAgentSetupCli } = await import("../chunks/agent-setup-cli-D4956BfN.js");
141
+ const { runAgentSetupCli } = await import("../chunks/agent-setup-cli-BqYcwfOs.js");
141
142
  return runAgentSetupCli(subcommandArgs);
142
143
  }],
143
144
  ["kg", async (subcommandArgs) => {
144
- const { runKnowledgeGraphCommand } = await import("../chunks/knowledge-graph-cli-Bjy9_kv5.js");
145
+ const { runKnowledgeGraphCommand } = await import("../chunks/knowledge-graph-cli-D5Gf87Y7.js");
145
146
  return runKnowledgeGraphCommand(subcommandArgs);
146
147
  }],
147
148
  ["visions", async (subcommandArgs) => {
@@ -149,7 +150,7 @@ var SUBCOMMAND_RUNNERS = new Map([
149
150
  return runVisionsCli(subcommandArgs);
150
151
  }],
151
152
  ...AGENT_API_VERBS.map((verb) => [verb, async (subcommandArgs, subcommandName) => {
152
- const { runAgentApiCli } = await import("../chunks/agent-api-cli-V_BkYhBI.js");
153
+ const { runAgentApiCli } = await import("../chunks/agent-api-cli-BR0GVDn6.js");
153
154
  return runAgentApiCli([subcommandName, ...subcommandArgs]);
154
155
  }])
155
156
  ]);
@@ -203,7 +204,7 @@ async function readDeclaredCustomAgents() {
203
204
  declared: [],
204
205
  error: null
205
206
  };
206
- const { loadConfigFile } = await import("../chunks/config-store-Cp62jN1O.js");
207
+ const { loadConfigFile } = await import("../chunks/config-store-C8Ry8ZFD.js");
207
208
  try {
208
209
  const loaded = loadConfigFile(decided.path, { exitOnError: false });
209
210
  if (!loaded.config) return {
@@ -279,7 +280,7 @@ async function runDoctor() {
279
280
  }
280
281
  switchSection("Agents");
281
282
  try {
282
- const { listAgentIds, describeAgentResolvability, setCustomAgents } = await import("../chunks/adapters-BU74M4QZ.js");
283
+ const { listAgentIds, describeAgentResolvability, setCustomAgents } = await import("../chunks/adapters-Bn-dQ02i.js");
283
284
  const declaredCustomAgents = await readDeclaredCustomAgents();
284
285
  if (declaredCustomAgents.error) line("config", declaredCustomAgents.error);
285
286
  setCustomAgents(declaredCustomAgents.declared);
@@ -287,7 +288,7 @@ async function runDoctor() {
287
288
  const { label, path: resolvedPath } = describeAgentResolvability(id);
288
289
  line(`${id} (${label})`, resolvedPath ?? "not found on PATH");
289
290
  }
290
- const { inspectGrokAgentSetup } = await import("../chunks/agent-setup-cli-D4956BfN.js");
291
+ const { inspectGrokAgentSetup } = await import("../chunks/agent-setup-cli-BqYcwfOs.js");
291
292
  const grokSetup = inspectGrokAgentSetup();
292
293
  line("grok hook setup", `${grokSetup.classification}: ${grokSetup.filePath}`);
293
294
  } catch (err) {
@@ -304,7 +305,7 @@ async function runDoctor() {
304
305
  try {
305
306
  const { resolvePackageBin } = await import("../chunks/runtime-paths-DU5jBEEO.js");
306
307
  const { execFileSync } = await import("../chunks/child-process-safe-B3zcPdFM.js");
307
- const { inspectGrokAgentSetup } = await import("../chunks/agent-setup-cli-D4956BfN.js");
308
+ const { inspectGrokAgentSetup } = await import("../chunks/agent-setup-cli-BqYcwfOs.js");
308
309
  const binPath = resolvePackageBin("cc-safety-net", "cc-safety-net");
309
310
  line("Sane YOLO", binPath || "not installed");
310
311
  if (binPath) line("cc-safety-net version", execFileSync(process.execPath, [binPath, "--version"], {
@@ -1,11 +1,11 @@
1
1
  import { o as relayPath } from "./runtime-paths-BPoxENmK.js";
2
- import { b as toolDetailFieldValue, d as PendingPromptQuestion, l as PROMPT_DETAIL_HIDDEN_CHARACTERS, y as firstDetailLine } from "./session-B8fJb_Or.js";
2
+ import { C as firstDetailLine, f as PendingPromptQuestion, u as PROMPT_DETAIL_HIDDEN_CHARACTERS, w as toolDetailFieldValue } from "./session-Dtkp9o3r.js";
3
3
  import { r as execFileSync } from "./child-process-safe-DDELk9XC.js";
4
4
  import { n as resolveAgentCommand, t as buildAgentSpawnCommand } from "./spawn-command-Cc40FiZI.js";
5
5
  import { n as isRecord } from "./coerce-NSst8oRP.js";
6
- import { c as buildAgentEnv, i as isSpinnerChar, n as classifyAgentTitle, r as isBrailleChar, t as grok } from "./grok-C4lzPFEg.js";
6
+ import { c as buildAgentEnv, i as isSpinnerChar, n as classifyAgentTitle, r as isBrailleChar, t as grok } from "./grok-7Z5KcgcY.js";
7
7
  import { t as buildHookCommand } from "./hook-command-core-DclEoE9e.js";
8
- import "./contracts-DXujp-Zn.js";
8
+ import "./contracts-DzDg-Z9I.js";
9
9
  import { n as mergeCodexPreToolUse, t as HOOK_TOOLS } from "./hook-tools-UX2fmt81.js";
10
10
  import fs from "node:fs";
11
11
  //#region session/adapters/claude-code.ts
@@ -1,2 +1,2 @@
1
- import { a as describeAgentResolvability, d as setCustomAgents, l as listAgentIds } from "./adapters-CoC18rdt.js";
1
+ import { a as describeAgentResolvability, d as setCustomAgents, l as listAgentIds } from "./adapters-BS_7o8fj.js";
2
2
  export { describeAgentResolvability, listAgentIds, setCustomAgents };
@@ -1,8 +1,9 @@
1
1
  import { t as errorCode } from "./text-DoirglWV.js";
2
- import { a as AgentDispatchRequest, n as AGENT_URL_ENV, s as AgentTicketRequest } from "./session-B8fJb_Or.js";
2
+ import { a as AgentDispatchRequest, c as AgentTicketRequest, n as AGENT_URL_ENV } from "./session-Dtkp9o3r.js";
3
3
  import { i as resolveHookTarget } from "./hook-relay-core-DA_bz2KA.js";
4
4
  import { n as decideSandboxProxy } from "./sandbox-proxy-core-hnQgKR0T.js";
5
- import { c as isAgentApiVerb, l as isOrchestratorAgentVerb } from "./agent-api-core-B3YI8SYs.js";
5
+ import { c as isAgentApiVerb, l as isOrchestratorAgentVerb } from "./agent-api-core-DUiWHSHg.js";
6
+ import path from "node:path";
6
7
  import http from "node:http";
7
8
  //#region server/agent-api-cli.ts
8
9
  var AGENT_PATH_PREFIX = "/agent/";
@@ -21,6 +22,10 @@ var BODY_BUILDERS = {
21
22
  },
22
23
  board: () => ({}),
23
24
  push: () => ({}),
25
+ edit: (rest) => {
26
+ const docPath = rest.join(" ").trim();
27
+ return docPath ? { path: path.resolve(docPath) } : null;
28
+ },
24
29
  dispatch: (rest) => {
25
30
  const parsed = AgentDispatchRequest.safeParse(rest[0] === "--ready" ? { readyIntent: rest[1] } : { workId: rest[0] });
26
31
  return parsed.success ? parsed.data : null;
@@ -121,6 +126,10 @@ async function runAgentApiCli(args) {
121
126
  console.error(`glimmervoid ${verb}: expected a work id matching wrk-[0-9a-f]{16}`);
122
127
  return 1;
123
128
  }
129
+ if (verb === "edit") {
130
+ console.error("glimmervoid edit: this command needs a file path, for example \"glimmervoid edit drafts/post.md\"");
131
+ return 1;
132
+ }
124
133
  console.error(`glimmervoid ${verb}: this command needs text, for example "glimmervoid ${verb} check the failing test"`);
125
134
  return 1;
126
135
  }
@@ -1,4 +1,4 @@
1
- import { a as AgentDispatchRequest, c as ORCHESTRATOR_AGENT_VERBS, i as AgentAttentionRequest, o as AgentSpawnRequest, t as AGENT_API_VERBS } from "./session-B8fJb_Or.js";
1
+ import { a as AgentDispatchRequest, i as AgentAttentionRequest, l as ORCHESTRATOR_AGENT_VERBS, o as AgentEditRequest, s as AgentSpawnRequest, t as AGENT_API_VERBS } from "./session-Dtkp9o3r.js";
2
2
  import crypto from "node:crypto";
3
3
  var MAX_SPAWNS_IN_FLIGHT = 1;
4
4
  var SPAWNABLE_DEPTH = 0;
@@ -138,6 +138,15 @@ function parseAgentVerb(verb, payload) {
138
138
  request: parsed.data
139
139
  };
140
140
  }
141
+ if (verb === "edit") {
142
+ const parsed = AgentEditRequest.safeParse(payload);
143
+ if (!parsed.success) return refuseInvalidBody(parsed.error.issues);
144
+ return {
145
+ ok: true,
146
+ verb,
147
+ request: parsed.data
148
+ };
149
+ }
141
150
  const parsed = AgentSpawnRequest.safeParse(payload);
142
151
  if (!parsed.success) return refuseInvalidBody(parsed.error.issues);
143
152
  return {
@@ -1,5 +1,5 @@
1
1
  import { a as isMissingFileError, r as errorMessage } from "./text-DoirglWV.js";
2
- import { a as classifyGrokHooksFile, o as renderGrokHooksFile, t as grok } from "./grok-C4lzPFEg.js";
2
+ import { a as classifyGrokHooksFile, o as renderGrokHooksFile, t as grok } from "./grok-7Z5KcgcY.js";
3
3
  import { p as writeTextAtomicSync } from "./json-file-oEH9vt-0.js";
4
4
  import fs from "node:fs";
5
5
  import path from "node:path";
@@ -1,4 +1,4 @@
1
- import { _ as TaskTitle } from "./session-B8fJb_Or.js";
1
+ import { x as TaskTitle } from "./session-Dtkp9o3r.js";
2
2
  import { n as isRecord } from "./coerce-NSst8oRP.js";
3
3
  import path from "node:path";
4
4
  import { z } from "zod";
@@ -0,0 +1,2 @@
1
+ import { c as loadConfigFile } from "./config-store-aZpWeX92.js";
2
+ export { loadConfigFile };
@@ -3,8 +3,8 @@ import { i as equalsIgnoringCaseOnWindows, t as canonicalizePath } from "./paths
3
3
  import { n as glimmervoidHomeDir$1, t as decideConfigPath } from "./config-path-core-DFt-TemS.js";
4
4
  import { a as positiveIntOr, c as textOr, n as isRecord } from "./coerce-NSst8oRP.js";
5
5
  import { d as writeJsonAtomicSync, f as writeTextAtomic, p as writeTextAtomicSync } from "./json-file-oEH9vt-0.js";
6
- import { St as normalizeLegacyConfigNumbers, f as BranchGcFileSettings, i as Config, l as configIssueMessage, m as DEFAULT_FACTORY_PROTECTED_PATHS, n as BUILTIN_AGENT_IDS, p as DEFAULT_FACTORY_CHECKS, s as RUNTIME_CONFIG_SCALAR_KEYS, t as AGENT_ID_SHAPE_MESSAGE } from "./config-CZ4H51D0.js";
7
- import { V as FeatureFlagsResponse, W as TELEMETRY_KILL_SWITCH_FLAG } from "./contracts-DXujp-Zn.js";
6
+ import { St as normalizeLegacyConfigNumbers, f as BranchGcFileSettings, i as Config, l as configIssueMessage, m as DEFAULT_FACTORY_PROTECTED_PATHS, n as BUILTIN_AGENT_IDS, p as DEFAULT_FACTORY_CHECKS, s as RUNTIME_CONFIG_SCALAR_KEYS, t as AGENT_ID_SHAPE_MESSAGE } from "./config-B6BkTOcE.js";
7
+ import { V as FeatureFlagsResponse, W as TELEMETRY_KILL_SWITCH_FLAG } from "./contracts-DzDg-Z9I.js";
8
8
  import fs from "node:fs";
9
9
  import path from "node:path";
10
10
  import os from "node:os";
@@ -1,5 +1,5 @@
1
- import { _ as TaskTitle, f as PendingWakeup, h as SessionState, m as SessionSnapshot, u as PendingPromptDetail } from "./session-B8fJb_Or.js";
2
- import { D as MyPrMergeWhenReadyRequest, Dt as CoherenceRisk, Et as CoherenceReadiness, F as CommitSha, O as MyPrMergeWhenReadyResult, P as MyPrsStatus, Q as TeamReviewActionResult, S as MyPrKeepMergeableResult, T as MyPrMergeResult, Tt as CoherenceOrient, Z as TeamReviewActionRequest, _t as ReviewsRefreshResult, gt as ReviewsRefreshRequest, jt as CoherenceWorkState, mt as REPO_SLUG_RE, n as BUILTIN_AGENT_IDS, nt as TeamReviewStatus, vt as reviewsPollingShape, w as MyPrMergeRequest, x as MyPrKeepMergeableRequest } from "./config-CZ4H51D0.js";
1
+ import { _ as SessionDoc, d as PendingPromptDetail, g as SESSION_DOC_PATH_MAX_CHARS, p as PendingWakeup, v as SessionSnapshot, x as TaskTitle, y as SessionState } from "./session-Dtkp9o3r.js";
2
+ import { D as MyPrMergeWhenReadyRequest, Dt as CoherenceRisk, Et as CoherenceReadiness, F as CommitSha, O as MyPrMergeWhenReadyResult, P as MyPrsStatus, Q as TeamReviewActionResult, S as MyPrKeepMergeableResult, T as MyPrMergeResult, Tt as CoherenceOrient, Z as TeamReviewActionRequest, _t as ReviewsRefreshResult, gt as ReviewsRefreshRequest, jt as CoherenceWorkState, mt as REPO_SLUG_RE, n as BUILTIN_AGENT_IDS, nt as TeamReviewStatus, vt as reviewsPollingShape, w as MyPrMergeRequest, x as MyPrKeepMergeableRequest } from "./config-B6BkTOcE.js";
3
3
  import { z } from "zod";
4
4
  //#region shared/contracts/factory.ts
5
5
  var FactoryIssue = z.object({
@@ -1287,6 +1287,7 @@ var optionalError = nullableString.optional();
1287
1287
  var opaqueObject = openObject();
1288
1288
  var opaqueArray = z.array(z.unknown());
1289
1289
  var planRevisionNumber = z.number().int().positive();
1290
+ var sessionDocPath = z.string().min(1).max(SESSION_DOC_PATH_MAX_CHARS);
1290
1291
  var trailSteps = z.array(openObject({
1291
1292
  at: timestamp,
1292
1293
  tool: z.string(),
@@ -1522,6 +1523,18 @@ var clientVariants = [
1522
1523
  draft: z.boolean().optional()
1523
1524
  }),
1524
1525
  loose("plan-decision", PlanDecision.shape),
1526
+ loose("session-doc-read", {
1527
+ id: sessionId,
1528
+ path: sessionDocPath,
1529
+ requestId
1530
+ }),
1531
+ loose("session-doc-save", {
1532
+ id: sessionId,
1533
+ path: sessionDocPath,
1534
+ text: z.string(),
1535
+ baseHash: z.string().min(1),
1536
+ requestId
1537
+ }),
1525
1538
  loose("client-error", ClientErrorReport.shape),
1526
1539
  loose("dismiss", {
1527
1540
  id: sessionId,
@@ -1566,6 +1579,10 @@ Object.freeze([
1566
1579
  "session-plan-changed",
1567
1580
  "session-plan-draft",
1568
1581
  "session-plan-response",
1582
+ "session-docs-changed",
1583
+ "session-docs-snapshot",
1584
+ "session-doc-response",
1585
+ "session-doc-save-result",
1569
1586
  "notify",
1570
1587
  "update-status",
1571
1588
  "update-progress",
@@ -1802,6 +1819,29 @@ var serverVariants = [
1802
1819
  loose("session-plan-changed", PlanChangedPush.shape),
1803
1820
  loose("session-plan-draft", PlanDraftPush.shape),
1804
1821
  loose("session-plan-response", PlanResponseFrame.shape),
1822
+ loose("session-docs-changed", {
1823
+ id: sessionId,
1824
+ docs: z.array(SessionDoc)
1825
+ }),
1826
+ loose("session-docs-snapshot", { sessions: z.record(z.string(), z.array(SessionDoc)) }),
1827
+ loose("session-doc-response", {
1828
+ requestId,
1829
+ id: sessionId,
1830
+ path: z.string(),
1831
+ ok: z.boolean(),
1832
+ text: z.string().optional(),
1833
+ hash: z.string().optional(),
1834
+ error: optionalError
1835
+ }),
1836
+ loose("session-doc-save-result", {
1837
+ requestId,
1838
+ id: sessionId,
1839
+ path: z.string(),
1840
+ ok: z.boolean(),
1841
+ hash: z.string().optional(),
1842
+ conflict: z.boolean().optional(),
1843
+ error: optionalError
1844
+ }),
1805
1845
  loose("notify", {
1806
1846
  session: z.string(),
1807
1847
  category: z.string(),
@@ -1,6 +1,6 @@
1
1
  import { r as errorMessage } from "./text-DoirglWV.js";
2
2
  import { o as relayPath } from "./runtime-paths-BPoxENmK.js";
3
- import { n as AGENT_URL_ENV } from "./session-B8fJb_Or.js";
3
+ import { n as AGENT_URL_ENV } from "./session-Dtkp9o3r.js";
4
4
  import { t as HOOK_URL_ENV } from "./hook-relay-core-DA_bz2KA.js";
5
5
  import { n as isRecord } from "./coerce-NSst8oRP.js";
6
6
  import { a as SANE_YOLO_PATH_ENV, n as RTK_PATH_ENV, o as saneYoloEnv } from "./rtk-hook-core-BmEz2aq9.js";
@@ -2,7 +2,7 @@ import { r as errorMessage } from "./text-DoirglWV.js";
2
2
  import { s as resolvePackageBin } from "./runtime-paths-BPoxENmK.js";
3
3
  import { r as execFileSync } from "./child-process-safe-DDELk9XC.js";
4
4
  import { n as glimmervoidHomeDir, t as decideConfigPath } from "./config-path-core-DFt-TemS.js";
5
- import { r as BrowserConfig } from "./config-CZ4H51D0.js";
5
+ import { r as BrowserConfig } from "./config-B6BkTOcE.js";
6
6
  import fs, { closeSync, constants, existsSync, fstatSync, lstatSync, mkdirSync, openSync, readFileSync, readdirSync, realpathSync } from "node:fs";
7
7
  import path, { dirname, join, posix, resolve, win32 } from "node:path";
8
8
  import { parseArgs } from "node:util";