glimmervoid 0.35.0 → 0.36.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 (38) hide show
  1. package/README.md +2 -0
  2. package/dist/bin/glimmervoid.js +17 -12
  3. package/dist/chunks/{adapters-B37wqNti.js → adapters-BVozg-Lg.js} +1 -1
  4. package/dist/chunks/{adapters-CADejSpq.js → adapters-BdnLyJjf.js} +10 -49
  5. package/dist/chunks/{agent-api-cli-CRj_FYbz.js → agent-api-cli-DIqRLvu3.js} +1 -1
  6. package/dist/chunks/{agent-api-cli-vGwstJ1j.js → agent-api-cli-d-Bgsshx.js} +3 -3
  7. package/dist/chunks/{agent-api-core-D1233u1U.js → agent-api-core-BUC9WND7.js} +2 -2
  8. package/dist/chunks/{agent-setup-cli-BTAFcckd.js → agent-setup-cli-CH7EHsAX.js} +1 -1
  9. package/dist/chunks/{config-rPbbL4nW.js → config-CuZ16F9W.js} +47 -771
  10. package/dist/chunks/config-store-LqQ7MuyV.js +4181 -0
  11. package/dist/chunks/config-store-tVmt_nfm.js +1 -0
  12. package/dist/chunks/{contracts-DjIgIuDk.js → contracts-BLZAOP57.js} +55 -6
  13. package/dist/chunks/{grok-KKgdSe-7.js → grok-Ch4-35_r.js} +3 -3
  14. package/dist/chunks/{hook-command-core-DclEoE9e.js → hook-command-core-qTNK-xMF.js} +4 -1
  15. package/dist/chunks/{hook-tools-UX2fmt81.js → hook-tools-BkxllUHE.js} +9 -16
  16. package/dist/chunks/{knowledge-graph-cli-Rj5nj87L.js → knowledge-graph-cli-DD7QvcFd.js} +1 -1
  17. package/dist/chunks/{main-BTI0J5QE.js → main-Rmo83Ow-.js} +3087 -834
  18. package/dist/chunks/{pair-cli-Dcyzv3In.js → pair-cli-DzFeAmq5.js} +2 -2
  19. package/dist/chunks/{remote-config-Dd1T-VJA.js → remote-config-CPdSF2Xi.js} +1 -1
  20. package/dist/chunks/{rtk-hook-core-BmEz2aq9.js → rtk-hook-core-VrUafGAp.js} +15 -5
  21. package/dist/chunks/rtk-resolver-B8BPgN9L.js +1 -0
  22. package/dist/chunks/{rtk-resolver-B9pzjLsM.js → rtk-resolver-C_micGrL.js} +1 -1
  23. package/dist/chunks/session-B8RhqQJe.js +986 -0
  24. package/dist/chunks/{session-routes-BYy3am9m.js → session-routes-DB5aDKsx.js} +1 -1
  25. package/dist/chunks/settings-cli-C2TY6hl-.js +484 -0
  26. package/dist/chunks/{ssh-sign-cli-DPHpT22B.js → ssh-sign-cli-C2nUwJC-.js} +2 -2
  27. package/dist/client/assets/index-BIaSyXwH.css +1 -0
  28. package/dist/client/assets/index-Ddu7M4Ad.js +259 -0
  29. package/dist/client/index.html +5 -3
  30. package/dist/server/index.js +1 -1
  31. package/dist/session/hook-tool-relay.js +3 -3
  32. package/package.json +3 -3
  33. package/dist/chunks/config-store-BeIxAZNn.js +0 -1
  34. package/dist/chunks/config-store-BtsYbNC3.js +0 -1713
  35. package/dist/chunks/rtk-resolver-SWU5VVM7.js +0 -1
  36. package/dist/chunks/session-D6xXN0UU.js +0 -232
  37. package/dist/client/assets/index-DE2GUmqs.css +0 -1
  38. package/dist/client/assets/index-Ds4ngkHp.js +0 -254
@@ -0,0 +1 @@
1
+ export { s as loadConfigFile } from "./config-store-LqQ7MuyV.js";
@@ -1,5 +1,5 @@
1
- import { C as SessionState, D as TaskTitle, S as SessionSnapshot, f as PendingPromptDetail, m as PendingWakeup, v as SESSION_DOC_PATH_MAX_CHARS, x as SessionDoc } from "./session-D6xXN0UU.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 GithubPollingRefreshResult, gt as GithubPollingRefreshRequest, jt as CoherenceWorkState, mt as REPO_SLUG_RE, n as BUILTIN_AGENT_IDS, nt as TeamReviewStatus, vt as githubPollingShape, w as MyPrMergeRequest, x as MyPrKeepMergeableRequest } from "./config-rPbbL4nW.js";
1
+ import { A as MyPrKeepMergeableResult, D as LinkedPr, Dt as GithubPollingRefreshRequest, E as TaskTitle, F as MyPrMergeWhenReadyRequest, G as CommitSha, H as MyPrsStatus, I as MyPrMergeWhenReadyResult, M as MyPrMergeRequest, N as MyPrMergeResult, Ot as GithubPollingRefreshResult, S as SessionState, Tt as REPO_SLUG_RE, U as SessionPrLinks, _ as SESSION_DOC_PATH_MAX_CHARS, b as SessionDoc, ct as TeamReviewActionResult, d as ConversationApprovalDecision, ft as TeamReviewStatus, k as MyPrKeepMergeableRequest, kt as githubPollingShape, p as PendingWakeup, st as TeamReviewActionRequest, u as ConversationApproval, vt as hasRequiredActionHead, x as SessionSnapshot } from "./session-B8RhqQJe.js";
2
+ import { J as CoherenceRisk, K as CoherenceOrient, Q as CoherenceWorkState, n as BUILTIN_AGENT_IDS, q as CoherenceReadiness } from "./config-CuZ16F9W.js";
3
3
  import { z } from "zod";
4
4
  //#region shared/contracts/factory.ts
5
5
  var FactoryConsequences = z.looseObject({ records: z.array(z.looseObject({
@@ -1233,6 +1233,7 @@ var UpdateJournalSummary = UpdateJournal.pick({
1233
1233
  //#region shared/contracts/control-messages.ts
1234
1234
  var requestId = z.string().nullable().optional();
1235
1235
  var sessionId = z.string();
1236
+ var PullRequestKey = SessionPrLinks.shape.unlinkedKeys.unwrap().element;
1236
1237
  function loose(type, shape) {
1237
1238
  return z.looseObject({
1238
1239
  type: z.literal(type),
@@ -1276,7 +1277,8 @@ var SessionCardFields = z.object({
1276
1277
  worktree: z.boolean(),
1277
1278
  workspace: z.boolean().optional(),
1278
1279
  resumeSessionId: nullableString,
1279
- ephemeral: z.boolean().optional()
1280
+ ephemeral: z.boolean().optional(),
1281
+ linkedPrs: z.array(LinkedPr).optional()
1280
1282
  });
1281
1283
  var DIFF_ANNOTATION_NOTE_MAX_CHARS = 1e3;
1282
1284
  var DIFF_ANNOTATION_PATH_RE = new RegExp(`^[^${String.fromCharCode(0)}-${String.fromCharCode(31)}${String.fromCharCode(127)}-${String.fromCharCode(159)}]+$`);
@@ -1383,6 +1385,14 @@ var clientVariants = [
1383
1385
  id: sessionId,
1384
1386
  title: TaskTitle
1385
1387
  }),
1388
+ loose("link-session-pr", {
1389
+ id: sessionId,
1390
+ key: PullRequestKey
1391
+ }),
1392
+ loose("unlink-session-pr", {
1393
+ id: sessionId,
1394
+ key: PullRequestKey
1395
+ }),
1386
1396
  loose("reorder-sessions", { order: z.array(sessionId) }),
1387
1397
  loose("ping", { requestId }),
1388
1398
  loose("get-settings", { requestId }),
@@ -1418,9 +1428,16 @@ var clientVariants = [
1418
1428
  action: z.string(),
1419
1429
  requestId
1420
1430
  }),
1431
+ loose("open-team-review-session", {
1432
+ requestId,
1433
+ key: PullRequestKey
1434
+ }),
1421
1435
  loose("team-review-action", {
1422
1436
  ...TeamReviewActionRequest.shape,
1423
1437
  requestId
1438
+ }).refine(hasRequiredActionHead, {
1439
+ message: "only discard may omit head",
1440
+ path: ["head"]
1424
1441
  }),
1425
1442
  loose("factory-queue-intent", {
1426
1443
  ...FactoryQueueIntentRequest.shape,
@@ -1484,6 +1501,7 @@ var clientVariants = [
1484
1501
  }),
1485
1502
  loose("session-trace", {
1486
1503
  id: sessionId,
1504
+ requestId,
1487
1505
  after: z.number().int().nonnegative().default(0),
1488
1506
  endingAt: z.union([z.number().int().nonnegative(), z.literal("tail")]).optional()
1489
1507
  }),
@@ -1494,6 +1512,15 @@ var clientVariants = [
1494
1512
  draft: z.boolean().optional()
1495
1513
  }),
1496
1514
  loose("plan-decision", PlanDecision.shape),
1515
+ loose("set-session-conversation-view", {
1516
+ id: sessionId,
1517
+ isOn: z.boolean()
1518
+ }),
1519
+ loose("conversation-approval", {
1520
+ id: sessionId,
1521
+ requestId: ConversationApproval.shape.requestId,
1522
+ decision: ConversationApprovalDecision
1523
+ }),
1497
1524
  loose("session-doc-read", {
1498
1525
  id: sessionId,
1499
1526
  path: sessionDocPath,
@@ -1528,11 +1555,13 @@ Object.freeze([
1528
1555
  "session-removed",
1529
1556
  "session-renamed",
1530
1557
  "session-title",
1558
+ "session-prs",
1531
1559
  "session-modified",
1532
1560
  "session-git",
1533
1561
  "session-agents",
1534
1562
  "session-wakeup",
1535
1563
  "session-prompt",
1564
+ "session-conversation",
1536
1565
  "session-sleep",
1537
1566
  "session-wake",
1538
1567
  "session-merge-status",
@@ -1577,6 +1606,7 @@ Object.freeze([
1577
1606
  "radar-open-session-result",
1578
1607
  "issue-detail-result",
1579
1608
  "open-issue-session-result",
1609
+ "open-team-review-session-result",
1580
1610
  "radar-issue-action-result",
1581
1611
  "team-review-action-result",
1582
1612
  "benchmark-action-result",
@@ -1668,8 +1698,7 @@ var serverVariants = [
1668
1698
  event: z.string(),
1669
1699
  timestamp,
1670
1700
  skipPerms: z.boolean().optional(),
1671
- saneYolo: z.boolean().optional(),
1672
- hasEndedTurn: z.boolean().optional()
1701
+ saneYolo: z.boolean().optional()
1673
1702
  }),
1674
1703
  loose("session-added", SessionCardFields.shape),
1675
1704
  loose("session-modified", SessionCardFields.shape),
@@ -1687,6 +1716,10 @@ var serverVariants = [
1687
1716
  taskTitle: TaskTitle.nullable(),
1688
1717
  isCustom: z.boolean()
1689
1718
  }),
1719
+ loose("session-prs", {
1720
+ id: sessionId,
1721
+ linkedPrs: z.array(LinkedPr)
1722
+ }),
1690
1723
  loose("session-git", {
1691
1724
  id: sessionId,
1692
1725
  worktree: z.boolean()
@@ -1706,9 +1739,14 @@ var serverVariants = [
1706
1739
  isCompacting: z.boolean().optional(),
1707
1740
  id: sessionId,
1708
1741
  pendingPromptKind: nullableString,
1709
- pendingPromptDetail: PendingPromptDetail.nullable().optional(),
1710
1742
  timestamp
1711
1743
  }),
1744
+ loose("session-conversation", {
1745
+ id: sessionId,
1746
+ hasConversationBridge: z.boolean(),
1747
+ isConversationViewOn: z.boolean(),
1748
+ conversationApproval: ConversationApproval.nullable()
1749
+ }),
1712
1750
  loose("session-sleep"),
1713
1751
  loose("session-wake"),
1714
1752
  loose("session-merge-status", {
@@ -1795,6 +1833,7 @@ var serverVariants = [
1795
1833
  }),
1796
1834
  loose("session-trace-response", {
1797
1835
  id: sessionId,
1836
+ requestId,
1798
1837
  records: z.array(TraceRecord),
1799
1838
  start: z.number().int().nonnegative(),
1800
1839
  next: z.number().int().nonnegative(),
@@ -1958,6 +1997,16 @@ var serverVariants = [
1958
1997
  pending: z.boolean().optional(),
1959
1998
  existing: z.boolean().optional()
1960
1999
  }),
2000
+ loose("open-team-review-session-result", {
2001
+ requestId,
2002
+ ok: z.boolean(),
2003
+ error: optionalError,
2004
+ key: PullRequestKey.optional(),
2005
+ sessionId: z.string().optional(),
2006
+ sessionName: z.string().optional(),
2007
+ pending: z.boolean().optional(),
2008
+ existing: z.boolean().optional()
2009
+ }),
1961
2010
  loose("radar-issue-action-result", {
1962
2011
  requestId,
1963
2012
  ok: z.boolean(),
@@ -1,10 +1,10 @@
1
1
  import { r as errorMessage } from "./text-DoirglWV.js";
2
2
  import { o as relayPath } from "./runtime-paths-BkeftE60.js";
3
- import { n as AGENT_URL_ENV, y as SIGN_URL_ENV } from "./session-D6xXN0UU.js";
3
+ import { n as AGENT_URL_ENV, v as SIGN_URL_ENV } from "./session-B8RhqQJe.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
- import { a as SANE_YOLO_PATH_ENV, n as RTK_PATH_ENV, o as saneYoloEnv } from "./rtk-hook-core-BmEz2aq9.js";
7
- import { t as buildHookCommand } from "./hook-command-core-DclEoE9e.js";
6
+ import { o as SANE_YOLO_PATH_ENV, r as RTK_PATH_ENV, s as saneYoloEnv } from "./rtk-hook-core-VrUafGAp.js";
7
+ import { t as buildHookCommand } from "./hook-command-core-qTNK-xMF.js";
8
8
  import fs from "node:fs";
9
9
  import path from "node:path";
10
10
  import os from "node:os";
@@ -10,5 +10,8 @@ function buildHookCommand(relayPath, event, argvTail = []) {
10
10
  const forwardSlashedPath = rawPath.replace(/\\/g, "/");
11
11
  return `node ${/\s/.test(forwardSlashedPath) ? `"${forwardSlashedPath}"` : forwardSlashedPath} ${rawEvent}${argvTail.length ? ` ${argvTail.join(" ")}` : ""}`;
12
12
  }
13
+ function shellQuote(value) {
14
+ return `'${String(value).replace(/'/g, `'\\''`)}'`;
15
+ }
13
16
  //#endregion
14
- export { buildHookCommand as t };
17
+ export { shellQuote as n, buildHookCommand as t };
@@ -1,6 +1,6 @@
1
1
  import { r as resolvePathCommandMatches } from "./spawn-command-Cc40FiZI.js";
2
- import { a as SANE_YOLO_PATH_ENV, n as RTK_PATH_ENV, o as saneYoloEnv } from "./rtk-hook-core-BmEz2aq9.js";
3
- import { t as buildHookCommand } from "./hook-command-core-DclEoE9e.js";
2
+ import { o as SANE_YOLO_PATH_ENV, r as RTK_PATH_ENV, s as saneYoloEnv, t as CLAUDE_RELAY_FLAVOR } from "./rtk-hook-core-VrUafGAp.js";
3
+ import { n as shellQuote, t as buildHookCommand } from "./hook-command-core-qTNK-xMF.js";
4
4
  import path from "node:path";
5
5
  //#region session/core/hook-tools.ts
6
6
  function firstExistingFile(candidates, fsApi) {
@@ -19,22 +19,9 @@ function resolveRtkPath({ glimmervoidHome, platform, exec, fsApi }) {
19
19
  if (!firstMatch) return null;
20
20
  return path.resolve(firstMatch);
21
21
  }
22
- function quoteCommandPath(commandPath) {
23
- if (!/\s/.test(commandPath)) return commandPath;
24
- return `"${commandPath}"`;
25
- }
26
22
  function toForwardSlashes(commandPath) {
27
23
  return commandPath.replace(/\\/g, "/");
28
24
  }
29
- function buildRtkHookEntry(rtkPath) {
30
- return {
31
- matcher: "Bash",
32
- hooks: [{
33
- type: "command",
34
- command: `${quoteCommandPath(toForwardSlashes(rtkPath))} hook claude`
35
- }]
36
- };
37
- }
38
25
  function codexGroup(command) {
39
26
  if (!command) return null;
40
27
  return `{matcher='Bash',hooks=[{type='command',command='${command}'}]}`;
@@ -44,7 +31,13 @@ var HOOK_TOOLS = {
44
31
  capability: "rtk",
45
32
  purpose: "rtk command rewriting",
46
33
  env: (tool) => ({ [RTK_PATH_ENV]: tool.binPath }),
47
- claudeEntry: (tool) => buildRtkHookEntry(tool.binPath),
34
+ claudeEntry: (_tool, relayPath) => ({
35
+ matcher: "Bash",
36
+ hooks: [{
37
+ type: "command",
38
+ command: `node ${shellQuote(toForwardSlashes(relayPath))} rtk ${CLAUDE_RELAY_FLAVOR}`
39
+ }]
40
+ }),
48
41
  codexGroup: (_tool, relayPath) => codexGroup(buildHookCommand(relayPath, "rtk"))
49
42
  },
50
43
  saneYolo: {
@@ -2,7 +2,7 @@ import { r as errorMessage } from "./text-DoirglWV.js";
2
2
  import { s as resolvePackageBin } from "./runtime-paths-BkeftE60.js";
3
3
  import { r as execFileSync } from "./child-process-safe-CbQnyh7D.js";
4
4
  import { n as glimmervoidHomeDir, t as decideConfigPath } from "./config-path-core-DFt-TemS.js";
5
- import { r as BrowserConfig } from "./config-rPbbL4nW.js";
5
+ import { r as BrowserConfig } from "./config-CuZ16F9W.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 os from "node:os";