@tryglen/cli 0.34.0 → 0.36.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 (252) hide show
  1. package/README.md +39 -27
  2. package/dist/_utils/agent-adapter.d.ts +0 -13
  3. package/dist/_utils/agent-adapter.js +1 -19
  4. package/dist/_utils/agent-adapter.js.map +1 -1
  5. package/dist/_utils/agents-table.js +1 -9
  6. package/dist/_utils/agents-table.js.map +1 -1
  7. package/dist/_utils/cli-error.js +0 -3
  8. package/dist/_utils/cli-error.js.map +1 -1
  9. package/dist/_utils/codex-app-server.js +0 -2
  10. package/dist/_utils/codex-app-server.js.map +1 -1
  11. package/dist/_utils/codex-hooks-merge.js +0 -11
  12. package/dist/_utils/codex-hooks-merge.js.map +1 -1
  13. package/dist/_utils/codex-hooks-setup.js +0 -18
  14. package/dist/_utils/codex-hooks-setup.js.map +1 -1
  15. package/dist/_utils/codex-paths.js +0 -3
  16. package/dist/_utils/codex-paths.js.map +1 -1
  17. package/dist/_utils/codex-repair-trace.js +0 -3
  18. package/dist/_utils/codex-repair-trace.js.map +1 -1
  19. package/dist/_utils/codex-trust-toml.js +1 -9
  20. package/dist/_utils/codex-trust-toml.js.map +1 -1
  21. package/dist/_utils/collect-import-files.js +0 -7
  22. package/dist/_utils/collect-import-files.js.map +1 -1
  23. package/dist/_utils/config.js +0 -4
  24. package/dist/_utils/config.js.map +1 -1
  25. package/dist/_utils/confirm.js +2 -10
  26. package/dist/_utils/confirm.js.map +1 -1
  27. package/dist/_utils/credentials.js +0 -3
  28. package/dist/_utils/credentials.js.map +1 -1
  29. package/dist/_utils/detect-transcript-format.d.ts +1 -1
  30. package/dist/_utils/detect-transcript-format.js +0 -7
  31. package/dist/_utils/detect-transcript-format.js.map +1 -1
  32. package/dist/_utils/ensure-global-cli.d.ts +0 -12
  33. package/dist/_utils/ensure-global-cli.js +1 -28
  34. package/dist/_utils/ensure-global-cli.js.map +1 -1
  35. package/dist/_utils/ephemeral-session.js +3 -24
  36. package/dist/_utils/ephemeral-session.js.map +1 -1
  37. package/dist/_utils/extract-claude-segments.js +1 -5
  38. package/dist/_utils/extract-claude-segments.js.map +1 -1
  39. package/dist/_utils/extract-codex-segments.js +0 -9
  40. package/dist/_utils/extract-codex-segments.js.map +1 -1
  41. package/dist/_utils/extract-pi-segments.js +1 -5
  42. package/dist/_utils/extract-pi-segments.js.map +1 -1
  43. package/dist/_utils/find-bin.js +0 -8
  44. package/dist/_utils/find-bin.js.map +1 -1
  45. package/dist/_utils/format-search-result.js +3 -19
  46. package/dist/_utils/format-search-result.js.map +1 -1
  47. package/dist/_utils/format-turn-nudges.js +2 -20
  48. package/dist/_utils/format-turn-nudges.js.map +1 -1
  49. package/dist/_utils/git-context.d.ts +0 -2
  50. package/dist/_utils/git-context.js +1 -33
  51. package/dist/_utils/git-context.js.map +1 -1
  52. package/dist/_utils/git-hook-setup.js +0 -1
  53. package/dist/_utils/git-hook-setup.js.map +1 -1
  54. package/dist/_utils/glen-headers.js +1 -4
  55. package/dist/_utils/glen-headers.js.map +1 -1
  56. package/dist/_utils/http.js +1 -8
  57. package/dist/_utils/http.js.map +1 -1
  58. package/dist/_utils/idempotency-key.js +1 -4
  59. package/dist/_utils/idempotency-key.js.map +1 -1
  60. package/dist/_utils/indicator-app.js +4 -26
  61. package/dist/_utils/indicator-app.js.map +1 -1
  62. package/dist/_utils/indicator-health.js +0 -6
  63. package/dist/_utils/indicator-health.js.map +1 -1
  64. package/dist/_utils/ingest-diagnosis.js +0 -5
  65. package/dist/_utils/ingest-diagnosis.js.map +1 -1
  66. package/dist/_utils/ingest-heartbeat.js +1 -6
  67. package/dist/_utils/ingest-heartbeat.js.map +1 -1
  68. package/dist/_utils/install-receipt.d.ts +9 -1
  69. package/dist/_utils/install-receipt.js +18 -3
  70. package/dist/_utils/install-receipt.js.map +1 -1
  71. package/dist/_utils/jcode-bundle.d.ts +3 -0
  72. package/dist/_utils/jcode-bundle.js +16 -0
  73. package/dist/_utils/jcode-bundle.js.map +1 -0
  74. package/dist/_utils/jcode-event.d.ts +3 -0
  75. package/dist/_utils/jcode-event.js +66 -0
  76. package/dist/_utils/jcode-event.js.map +1 -0
  77. package/dist/_utils/jcode-hook-lines.d.ts +5 -0
  78. package/dist/_utils/jcode-hook-lines.js +7 -0
  79. package/dist/_utils/jcode-hook-lines.js.map +1 -0
  80. package/dist/_utils/jcode-hooks-toml.d.ts +8 -0
  81. package/dist/_utils/jcode-hooks-toml.js +148 -0
  82. package/dist/_utils/jcode-hooks-toml.js.map +1 -0
  83. package/dist/_utils/jcode-paths.d.ts +7 -0
  84. package/dist/_utils/jcode-paths.js +10 -0
  85. package/dist/_utils/jcode-paths.js.map +1 -0
  86. package/dist/_utils/jcode-setup.d.ts +27 -0
  87. package/dist/_utils/jcode-setup.js +151 -0
  88. package/dist/_utils/jcode-setup.js.map +1 -0
  89. package/dist/_utils/jcode-skills-sync.d.ts +8 -0
  90. package/dist/_utils/jcode-skills-sync.js +74 -0
  91. package/dist/_utils/jcode-skills-sync.js.map +1 -0
  92. package/dist/_utils/login-check.js +1 -4
  93. package/dist/_utils/login-check.js.map +1 -1
  94. package/dist/_utils/managed-block.d.ts +4 -0
  95. package/dist/_utils/managed-block.js +38 -0
  96. package/dist/_utils/managed-block.js.map +1 -0
  97. package/dist/_utils/normalize-boolean-flags.js +2 -7
  98. package/dist/_utils/normalize-boolean-flags.js.map +1 -1
  99. package/dist/_utils/open-browser.js +1 -3
  100. package/dist/_utils/open-browser.js.map +1 -1
  101. package/dist/_utils/parse-claude-transcript.js +4 -24
  102. package/dist/_utils/parse-claude-transcript.js.map +1 -1
  103. package/dist/_utils/parse-codex-transcript.js +1 -22
  104. package/dist/_utils/parse-codex-transcript.js.map +1 -1
  105. package/dist/_utils/parse-cursor-db.js +2 -21
  106. package/dist/_utils/parse-cursor-db.js.map +1 -1
  107. package/dist/_utils/parse-harbor-atif.js +2 -1
  108. package/dist/_utils/parse-harbor-atif.js.map +1 -1
  109. package/dist/_utils/parse-jcode-session.d.ts +14 -0
  110. package/dist/_utils/parse-jcode-session.js +113 -0
  111. package/dist/_utils/parse-jcode-session.js.map +1 -0
  112. package/dist/_utils/parse-pi-transcript.js +1 -35
  113. package/dist/_utils/parse-pi-transcript.js.map +1 -1
  114. package/dist/_utils/parse-transcript.js +1 -9
  115. package/dist/_utils/parse-transcript.js.map +1 -1
  116. package/dist/_utils/plugin-status.d.ts +1 -1
  117. package/dist/_utils/plugin-status.js +25 -16
  118. package/dist/_utils/plugin-status.js.map +1 -1
  119. package/dist/_utils/post-route.js +0 -7
  120. package/dist/_utils/post-route.js.map +1 -1
  121. package/dist/_utils/pr-review-link.js +0 -2
  122. package/dist/_utils/pr-review-link.js.map +1 -1
  123. package/dist/_utils/proactive-ticket-log.js +1 -11
  124. package/dist/_utils/proactive-ticket-log.js.map +1 -1
  125. package/dist/_utils/record-commit-anchor.js +1 -8
  126. package/dist/_utils/record-commit-anchor.js.map +1 -1
  127. package/dist/_utils/refresh-control-state.js +1 -7
  128. package/dist/_utils/refresh-control-state.js.map +1 -1
  129. package/dist/_utils/render-callback-page.js +0 -7
  130. package/dist/_utils/render-callback-page.js.map +1 -1
  131. package/dist/_utils/resolve-import-workspace.d.ts +0 -7
  132. package/dist/_utils/resolve-import-workspace.js +1 -13
  133. package/dist/_utils/resolve-import-workspace.js.map +1 -1
  134. package/dist/_utils/run-bin.js +0 -2
  135. package/dist/_utils/run-bin.js.map +1 -1
  136. package/dist/_utils/session-map.js +0 -5
  137. package/dist/_utils/session-map.js.map +1 -1
  138. package/dist/_utils/shell-profile.js +1 -28
  139. package/dist/_utils/shell-profile.js.map +1 -1
  140. package/dist/_utils/state-line-memo.d.ts +0 -6
  141. package/dist/_utils/state-line-memo.js +3 -18
  142. package/dist/_utils/state-line-memo.js.map +1 -1
  143. package/dist/_utils/state-line.js +0 -4
  144. package/dist/_utils/state-line.js.map +1 -1
  145. package/dist/_utils/state.js +0 -5
  146. package/dist/_utils/state.js.map +1 -1
  147. package/dist/_utils/sync-mode-from-server.d.ts +0 -18
  148. package/dist/_utils/sync-mode-from-server.js +2 -21
  149. package/dist/_utils/sync-mode-from-server.js.map +1 -1
  150. package/dist/_utils/transcript-turns.d.ts +1 -1
  151. package/dist/_utils/transcript-turns.js +1 -51
  152. package/dist/_utils/transcript-turns.js.map +1 -1
  153. package/dist/_utils/turn-cache.js +1 -8
  154. package/dist/_utils/turn-cache.js.map +1 -1
  155. package/dist/_utils/update.d.ts +0 -10
  156. package/dist/_utils/update.js +8 -30
  157. package/dist/_utils/update.js.map +1 -1
  158. package/dist/_utils/version.js +3 -6
  159. package/dist/_utils/version.js.map +1 -1
  160. package/dist/_utils/which.d.ts +0 -5
  161. package/dist/_utils/which.js +0 -5
  162. package/dist/_utils/which.js.map +1 -1
  163. package/dist/_utils/write-commit-trailer.js +1 -5
  164. package/dist/_utils/write-commit-trailer.js.map +1 -1
  165. package/dist/bin.js +15 -31
  166. package/dist/bin.js.map +1 -1
  167. package/dist/commands/_utils/materialize-skill.js +4 -34
  168. package/dist/commands/_utils/materialize-skill.js.map +1 -1
  169. package/dist/commands/_utils/pack-skill-dir.js +6 -27
  170. package/dist/commands/_utils/pack-skill-dir.js.map +1 -1
  171. package/dist/commands/artifact.js +2 -5
  172. package/dist/commands/artifact.js.map +1 -1
  173. package/dist/commands/code-search.js +0 -6
  174. package/dist/commands/code-search.js.map +1 -1
  175. package/dist/commands/doctor.d.ts +0 -17
  176. package/dist/commands/doctor.js +29 -75
  177. package/dist/commands/doctor.js.map +1 -1
  178. package/dist/commands/feedback.js +2 -10
  179. package/dist/commands/feedback.js.map +1 -1
  180. package/dist/commands/git-hooks.js +0 -3
  181. package/dist/commands/git-hooks.js.map +1 -1
  182. package/dist/commands/import.js +5 -27
  183. package/dist/commands/import.js.map +1 -1
  184. package/dist/commands/incognito.d.ts +0 -5
  185. package/dist/commands/incognito.js +0 -5
  186. package/dist/commands/incognito.js.map +1 -1
  187. package/dist/commands/indicator.d.ts +0 -1
  188. package/dist/commands/indicator.js +0 -1
  189. package/dist/commands/indicator.js.map +1 -1
  190. package/dist/commands/ingest.js +58 -122
  191. package/dist/commands/ingest.js.map +1 -1
  192. package/dist/commands/install.d.ts +1 -0
  193. package/dist/commands/install.js +52 -93
  194. package/dist/commands/install.js.map +1 -1
  195. package/dist/commands/invite.d.ts +0 -6
  196. package/dist/commands/invite.js +0 -16
  197. package/dist/commands/invite.js.map +1 -1
  198. package/dist/commands/login.js +0 -15
  199. package/dist/commands/login.js.map +1 -1
  200. package/dist/commands/onboard.js +0 -6
  201. package/dist/commands/onboard.js.map +1 -1
  202. package/dist/commands/org.js +0 -2
  203. package/dist/commands/org.js.map +1 -1
  204. package/dist/commands/pr-link.js +2 -15
  205. package/dist/commands/pr-link.js.map +1 -1
  206. package/dist/commands/search.js +0 -5
  207. package/dist/commands/search.js.map +1 -1
  208. package/dist/commands/session-start.d.ts +0 -21
  209. package/dist/commands/session-start.js +19 -68
  210. package/dist/commands/session-start.js.map +1 -1
  211. package/dist/commands/set-mode.d.ts +0 -6
  212. package/dist/commands/set-mode.js +2 -12
  213. package/dist/commands/set-mode.js.map +1 -1
  214. package/dist/commands/skill.js +5 -35
  215. package/dist/commands/skill.js.map +1 -1
  216. package/dist/commands/statusline.d.ts +0 -13
  217. package/dist/commands/statusline.js +0 -15
  218. package/dist/commands/statusline.js.map +1 -1
  219. package/dist/commands/suggestions.d.ts +0 -6
  220. package/dist/commands/suggestions.js +0 -7
  221. package/dist/commands/suggestions.js.map +1 -1
  222. package/dist/commands/takeover/_utils/agent-paths.js +2 -3
  223. package/dist/commands/takeover/_utils/agent-paths.js.map +1 -1
  224. package/dist/commands/takeover/_utils/cursor-store.js +1 -3
  225. package/dist/commands/takeover/_utils/cursor-store.js.map +1 -1
  226. package/dist/commands/takeover/_utils/write-codex-desktop-session.js +1 -4
  227. package/dist/commands/takeover/_utils/write-codex-desktop-session.js.map +1 -1
  228. package/dist/commands/takeover/_utils/write-codex-session.js +1 -2
  229. package/dist/commands/takeover/_utils/write-codex-session.js.map +1 -1
  230. package/dist/commands/uninstall.d.ts +0 -1
  231. package/dist/commands/uninstall.js +7 -7
  232. package/dist/commands/uninstall.js.map +1 -1
  233. package/dist/commands/update.d.ts +0 -10
  234. package/dist/commands/update.js +21 -30
  235. package/dist/commands/update.js.map +1 -1
  236. package/dist/jcode/plugin.json +8 -0
  237. package/dist/jcode/preferred-tools.md +3 -0
  238. package/dist/jcode/prompt-overlay.md +15 -0
  239. package/dist/jcode/skills/code-search/SKILL.md +19 -0
  240. package/dist/jcode/skills/controls/SKILL.md +45 -0
  241. package/dist/jcode/skills/create-artifact/SKILL.md +11 -0
  242. package/dist/jcode/skills/create-skill/SKILL.md +41 -0
  243. package/dist/jcode/skills/feedback/SKILL.md +59 -0
  244. package/dist/jcode/skills/forget/SKILL.md +41 -0
  245. package/dist/jcode/skills/import-transcripts/SKILL.md +27 -0
  246. package/dist/jcode/skills/invite/SKILL.md +28 -0
  247. package/dist/jcode/skills/search/SKILL.md +35 -0
  248. package/dist/jcode/skills/session-takeover/SKILL.md +67 -0
  249. package/dist/jcode/skills/setup/SKILL.md +62 -0
  250. package/dist/jcode/skills/use-artifact/SKILL.md +11 -0
  251. package/dist/jcode/skills/use-skill/SKILL.md +10 -0
  252. package/package.json +5 -3
@@ -13,8 +13,6 @@ const roleOf = (e) => e?.message?.role ??
13
13
  e?.role;
14
14
  const contentOf = (e) => extractText(e?.message?.content ?? e?.content);
15
15
  const messageObjOf = (e) => e?.message ?? e ?? {};
16
- // Claude returns tool OUTPUTS as their own `user`-role lines: a top-level
17
- // `toolUseResult` field, or a `tool_result` block in the content array.
18
16
  const isToolResultLine = (e) => {
19
17
  const m = messageObjOf(e);
20
18
  if (e.toolUseResult !== undefined)
@@ -23,8 +21,6 @@ const isToolResultLine = (e) => {
23
21
  return (Array.isArray(content) &&
24
22
  content.some((p) => p?.type === "tool_result"));
25
23
  };
26
- // Aggregate every assistant block + lifted tool_result across [promptIndex..end]
27
- // — the full completed turn's tool I/O, matching the import parser.
28
24
  const spanAssistantSegments = (span) => span.flatMap((e) => {
29
25
  if (roleOf(e) === "assistant")
30
26
  return extractClaudeSegments(messageObjOf(e));
@@ -63,8 +59,6 @@ const parseTranscript = (lines) => {
63
59
  if (assistantIndex < 0)
64
60
  return null;
65
61
  const priorMessages = messages.slice(0, assistantIndex);
66
- // The completed turn's "user prompt" is the last user line that is NOT
67
- // a tool-result line (tool outputs arrive as their own user-role lines).
68
62
  const userIndex = (() => {
69
63
  const reversedIndex = [...priorMessages]
70
64
  .reverse()
@@ -78,9 +72,7 @@ const parseTranscript = (lines) => {
78
72
  if (!userMessage || !assistantMessage)
79
73
  return null;
80
74
  const span = messages.slice(userIndex);
81
- // userMessageIndex feeds the Stop-hook idempotency key and MUST keep its
82
- // pre-Task-6 value: the last user line of ANY type before the assistant
83
- // (not the filtered, non-tool-result userIndex above).
75
+ // userMessageIndex feeds the Stop-hook idempotency key: it must count user lines of any type, or keys collide with earlier turns.
84
76
  const originalUserIndex = lastIndexOfRole(priorMessages, "user");
85
77
  return {
86
78
  user: contentOf(userMessage),
@@ -1 +1 @@
1
- {"version":3,"file":"parse-transcript.js","sourceRoot":"","sources":["../../src/_utils/parse-transcript.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"parse-transcript.js","sourceRoot":"","sources":["../../src/_utils/parse-transcript.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
1
  type PluginStatus = "installed" | "not-installed" | "unknown";
2
- declare const glenPluginStatus: (agentBin: "claude" | "codex" | "pi") => PluginStatus;
2
+ declare const glenPluginStatus: (agentBin: "claude" | "codex" | "pi" | "jcode") => PluginStatus;
3
3
  export { glenPluginStatus };
4
4
  export type { PluginStatus };
@@ -2,22 +2,13 @@ import { readFileSync } from "node:fs";
2
2
  import { homedir } from "node:os";
3
3
  import { join } from "node:path";
4
4
  import { findBin } from "./find-bin.js";
5
+ import { GLEN_JCODE_HOOK_LINES } from "./jcode-hook-lines.js";
6
+ import { hasHookLines, readHooksTable } from "./jcode-hooks-toml.js";
7
+ import { jcodeConfigTomlPath } from "./jcode-paths.js";
5
8
  import { runBin } from "./run-bin.js";
6
- // A line whose first token is the glen plugin: claude lists `❯ glen@glen`
7
- // entries (selection marker before the name), codex lists plugin names
8
- // (`glen — …`) — match exactly `glen` (optionally `@<marketplace>`) at line
9
- // start, tolerating common list markers (`❯`, `>`, `•`, `*`, `-`) before the
10
- // name, so `foo@glen`, `glenda`, or a description merely mentioning glen
11
- // never false-positives.
12
9
  const GLEN_PLUGIN_LINE = /^[\s>❯•*-]*glen(@\S+)?(\s|$)/im;
13
- // Pi settings path (GLEN_PI_SETTINGS_PATH env var is for test overrides only).
14
10
  const piSettingsPath = () => process.env.GLEN_PI_SETTINGS_PATH ??
15
11
  join(homedir(), ".pi", "agent", "settings.json");
16
- // Pi has no `plugin list` — `pi install` records the package in the `packages`
17
- // array of ~/.pi/agent/settings.json (string or `{ source }` object entries),
18
- // so that file is the source of truth. A missing file means pi has no packages
19
- // at all (fresh install) → not-installed; an unreadable/corrupt file → unknown
20
- // (callers fall back to attempting an install, which is idempotent).
21
12
  const piPluginStatus = () => {
22
13
  const raw = (() => {
23
14
  try {
@@ -48,11 +39,29 @@ const piPluginStatus = () => {
48
39
  return "unknown";
49
40
  }
50
41
  };
51
- // Detects whether the glen plugin is installed for an agent — by parsing
52
- // `<agent> plugin list` output (claude/codex), or by reading pi's settings
53
- // file (pi has no plugin-list CLI). "unknown" (agent missing or check failed)
54
- // lets callers fall back to attempting an install.
42
+ const jcodePluginStatus = () => {
43
+ const raw = (() => {
44
+ try {
45
+ return readFileSync(jcodeConfigTomlPath(), "utf8");
46
+ }
47
+ catch (e) {
48
+ return e.code === "ENOENT" ? "" : null;
49
+ }
50
+ })();
51
+ if (raw === null)
52
+ return "unknown";
53
+ if (raw === "")
54
+ return "not-installed";
55
+ const table = readHooksTable(raw);
56
+ if (!table.ok)
57
+ return "unknown";
58
+ return hasHookLines(table.value, GLEN_JCODE_HOOK_LINES)
59
+ ? "installed"
60
+ : "not-installed";
61
+ };
55
62
  const glenPluginStatus = (agentBin) => {
63
+ if (agentBin === "jcode")
64
+ return jcodePluginStatus();
56
65
  if (agentBin === "pi")
57
66
  return piPluginStatus();
58
67
  const bin = findBin(agentBin);
@@ -1 +1 @@
1
- {"version":3,"file":"plugin-status.js","sourceRoot":"","sources":["../../src/_utils/plugin-status.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"plugin-status.js","sourceRoot":"","sources":["../../src/_utils/plugin-status.ts"],"names":[],"mappings":"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"}
@@ -7,10 +7,6 @@ import { err, ok } from "./result.js";
7
7
  import { readState } from "./state.js";
8
8
  import { handle426AndReexec, maybeSpawnBackgroundUpdate } from "./update.js";
9
9
  import { cliVersion } from "./version.js";
10
- // Shared POST to a /api/mcp/route/* endpoint with the standard glen auth
11
- // headers + 426/401/403 handling. The HTTP bridge maps typed errors to
12
- // statuses + a JSON { error } body, so CONFLICT/NOT_FOUND surfaces its
13
- // message instead of an opaque 500.
14
10
  const postRoute = async (url, body, options = {}) => {
15
11
  void maybeSpawnBackgroundUpdate();
16
12
  const creds = await readCredentials();
@@ -40,15 +36,12 @@ const postRoute = async (url, body, options = {}) => {
40
36
  what: "no active organization",
41
37
  remedy: "run `glen org switch`",
42
38
  }));
43
- // If the server sent a JSON { error } body, surface it — it's a permission/ownership
44
- // error (e.g. "Only the skill's author can update it."), not a session expiry.
45
39
  const serverMsg = res.value.json?.error;
46
40
  if (typeof serverMsg === "string")
47
41
  return err(cliErr({
48
42
  what: serverMsg,
49
43
  remedy: "ask the skill's author, or use a different name",
50
44
  }));
51
- // No JSON body → bodyless edge-auth failure; prompt re-login.
52
45
  return err(cliErr({
53
46
  what: "your connection expired",
54
47
  remedy: "run `glen login` to reconnect",
@@ -1 +1 @@
1
- {"version":3,"file":"post-route.js","sourceRoot":"","sources":["../../src/_utils/post-route.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"post-route.js","sourceRoot":"","sources":["../../src/_utils/post-route.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,4 @@
1
1
  import { config } from "./config.js";
2
- // owner/repo segments stop at the first char that isn't a GitHub-name char,
3
- // so a trailing ")"/"."/"," after the number is naturally excluded.
4
2
  const PR_URL_RE = /https?:\/\/github\.com\/([A-Za-z0-9._-]+)\/([A-Za-z0-9._-]+)\/pull\/(\d+)/g;
5
3
  const extractPrUrls = (text) => {
6
4
  const seen = new Set();
@@ -1 +1 @@
1
- {"version":3,"file":"pr-review-link.js","sourceRoot":"","sources":["../../src/_utils/pr-review-link.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAErC,4EAA4E;AAC5E,oEAAoE;AACpE,MAAM,SAAS,GACb,4EAA4E,CAAC;AAE/E,MAAM,aAAa,GAAG,CACpB,IAAY,EAC4C,EAAE;IAC1D,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,OAAO,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;QACjD,MAAM,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;QAC/B,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,IAAI,CAAC,GAAG;YAAE,OAAO,EAAE,CAAC;QACvC,MAAM,GAAG,GAAG,GAAG,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,CAAC;QACtC,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;YAAE,OAAO,EAAE,CAAC;QAC7B,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACd,OAAO,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAC5C,CAAC,CAAC,CAAC;AACL,CAAC,CAAC;AAEF,MAAM,cAAc,GAAG,CAAC,EAIvB,EAAU,EAAE,CAAC,GAAG,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC,IAAI,SAAS,EAAE,CAAC,EAAE,EAAE,CAAC;AAEvE,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,CAAC"}
1
+ {"version":3,"file":"pr-review-link.js","sourceRoot":"","sources":["../../src/_utils/pr-review-link.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAErC,MAAM,SAAS,GACb,4EAA4E,CAAC;AAE/E,MAAM,aAAa,GAAG,CACpB,IAAY,EAC4C,EAAE;IAC1D,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAC;IAC/B,OAAO,CAAC,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;QACjD,MAAM,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC;QAC/B,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,IAAI,CAAC,GAAG;YAAE,OAAO,EAAE,CAAC;QACvC,MAAM,GAAG,GAAG,GAAG,KAAK,IAAI,IAAI,IAAI,GAAG,EAAE,CAAC;QACtC,IAAI,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC;YAAE,OAAO,EAAE,CAAC;QAC7B,IAAI,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QACd,OAAO,CAAC,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAC5C,CAAC,CAAC,CAAC;AACL,CAAC,CAAC;AAEF,MAAM,cAAc,GAAG,CAAC,EAIvB,EAAU,EAAE,CAAC,GAAG,MAAM,CAAC,OAAO,IAAI,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC,IAAI,SAAS,EAAE,CAAC,EAAE,EAAE,CAAC;AAEvE,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,CAAC"}
@@ -2,15 +2,7 @@ import { mkdir, stat, writeFile } from "node:fs/promises";
2
2
  import { homedir } from "node:os";
3
3
  import { dirname, join } from "node:path";
4
4
  import { fromPromise } from "./result.js";
5
- // One agent-noticed defect per session is signal; the same one re-reported
6
- // every turn is noise. The slot is claimed once the request comes back
7
- // accepted — a transport failure or an off-the-record refusal leaves it open,
8
- // but a deployment with no Slack configured burns it, since retrying there
9
- // can't reach anyone either.
10
- //
11
- // Claims expire: the fallback key below is the cwd, not a session, so without
12
- // a window one proactive ticket would silence a directory permanently rather
13
- // than for the session the cap is meant to cover.
5
+ // Claims expire: the fallback key is the cwd, so without a TTL one ticket would silence a directory forever.
14
6
  const CLAIM_TTL_MS = 8 * 60 * 60 * 1000;
15
7
  const slotFor = (key) => join(process.env.GLEN_PROACTIVE_TICKET_DIR ??
16
8
  join(homedir(), ".glen", "proactive-tickets"), `${key.replace(/[^\w.-]/g, "_").slice(-120)}.claimed`);
@@ -18,8 +10,6 @@ const proactiveSlotTaken = async (key) => {
18
10
  const found = await fromPromise(stat(slotFor(key)));
19
11
  return found.ok && Date.now() - found.value.mtimeMs < CLAIM_TTL_MS;
20
12
  };
21
- // Best-effort: if we can't record the claim, the next proactive filing goes
22
- // through. A duplicate ticket beats a silently dropped one.
23
13
  const takeProactiveSlot = async (key) => {
24
14
  const slot = slotFor(key);
25
15
  const made = await fromPromise(mkdir(dirname(slot), { recursive: true, mode: 0o700 }));
@@ -1 +1 @@
1
- {"version":3,"file":"proactive-ticket-log.js","sourceRoot":"","sources":["../../src/_utils/proactive-ticket-log.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC1D,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE1C,2EAA2E;AAC3E,uEAAuE;AACvE,8EAA8E;AAC9E,2EAA2E;AAC3E,6BAA6B;AAC7B,EAAE;AACF,8EAA8E;AAC9E,6EAA6E;AAC7E,kDAAkD;AAClD,MAAM,YAAY,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;AAExC,MAAM,OAAO,GAAG,CAAC,GAAW,EAAU,EAAE,CACtC,IAAI,CACF,OAAO,CAAC,GAAG,CAAC,yBAAyB;IACnC,IAAI,CAAC,OAAO,EAAE,EAAE,OAAO,EAAE,mBAAmB,CAAC,EAC/C,GAAG,GAAG,CAAC,OAAO,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,UAAU,CACtD,CAAC;AAEJ,MAAM,kBAAkB,GAAG,KAAK,EAAE,GAAW,EAAoB,EAAE;IACjE,MAAM,KAAK,GAAG,MAAM,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACpD,OAAO,KAAK,CAAC,EAAE,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,OAAO,GAAG,YAAY,CAAC;AACrE,CAAC,CAAC;AAEF,4EAA4E;AAC5E,4DAA4D;AAC5D,MAAM,iBAAiB,GAAG,KAAK,EAAE,GAAW,EAAiB,EAAE;IAC7D,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;IAC1B,MAAM,IAAI,GAAG,MAAM,WAAW,CAC5B,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CACvD,CAAC;IACF,IAAI,CAAC,IAAI,CAAC,EAAE;QAAE,OAAO;IACrB,MAAM,WAAW,CAAC,SAAS,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC;AACzC,CAAC,CAAC;AAEF,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,CAAC"}
1
+ {"version":3,"file":"proactive-ticket-log.js","sourceRoot":"","sources":["../../src/_utils/proactive-ticket-log.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC1D,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE1C,6GAA6G;AAC7G,MAAM,YAAY,GAAG,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;AAExC,MAAM,OAAO,GAAG,CAAC,GAAW,EAAU,EAAE,CACtC,IAAI,CACF,OAAO,CAAC,GAAG,CAAC,yBAAyB;IACnC,IAAI,CAAC,OAAO,EAAE,EAAE,OAAO,EAAE,mBAAmB,CAAC,EAC/C,GAAG,GAAG,CAAC,OAAO,CAAC,UAAU,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,UAAU,CACtD,CAAC;AAEJ,MAAM,kBAAkB,GAAG,KAAK,EAAE,GAAW,EAAoB,EAAE;IACjE,MAAM,KAAK,GAAG,MAAM,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IACpD,OAAO,KAAK,CAAC,EAAE,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,KAAK,CAAC,KAAK,CAAC,OAAO,GAAG,YAAY,CAAC;AACrE,CAAC,CAAC;AAEF,MAAM,iBAAiB,GAAG,KAAK,EAAE,GAAW,EAAiB,EAAE;IAC7D,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;IAC1B,MAAM,IAAI,GAAG,MAAM,WAAW,CAC5B,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CACvD,CAAC;IACF,IAAI,CAAC,IAAI,CAAC,EAAE;QAAE,OAAO;IACrB,MAAM,WAAW,CAAC,SAAS,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAC;AACzC,CAAC,CAAC;AAEF,OAAO,EAAE,kBAAkB,EAAE,iBAAiB,EAAE,CAAC"}
@@ -7,11 +7,7 @@ import { httpJson } from "./http.js";
7
7
  import { readSessionForCwd } from "./session-map.js";
8
8
  import { readState } from "./state.js";
9
9
  import { cliVersion } from "./version.js";
10
- // True when `command` contains a `git … commit` invocation — allowing flags and
11
- // `-C <path>` between `git` and `commit`, in any &&/;/|-separated segment — but
12
- // not `git commit --dry-run`. Tokenized rather than one big regex: a repeated
13
- // alternation like `(\s+-C\s+\S+|\s+-[^\s]+)*` is prone to catastrophic
14
- // backtracking (ReDoS). Splitting on whitespace/separators is strictly linear.
10
+ // Tokenized, not one regex: a repeated alternation here is prone to catastrophic backtracking (ReDoS).
15
11
  const VALUE_FLAGS = new Set(["-C", "-c", "--git-dir", "--work-tree"]);
16
12
  const segmentIsGitCommit = (segment) => {
17
13
  const tokens = segment.trim().split(/\s+/).filter(Boolean);
@@ -19,8 +15,6 @@ const segmentIsGitCommit = (segment) => {
19
15
  if (gitIdx === -1)
20
16
  return false;
21
17
  const rest = tokens.slice(gitIdx + 1);
22
- // The git subcommand is the first token that is neither a flag nor the value
23
- // of a value-taking flag (e.g. the path after `-C`).
24
18
  const subcommand = rest.find((t, i) => !t.startsWith("-") && !VALUE_FLAGS.has(rest[i - 1] ?? ""));
25
19
  return subcommand === "commit" && !rest.includes("--dry-run");
26
20
  };
@@ -65,7 +59,6 @@ const recordCommitAnchor = async (event) => {
65
59
  conversationId,
66
60
  ...(ctx.branch ? { branch: ctx.branch } : {}),
67
61
  };
68
- // httpJson never throws (returns a Result); we ignore the outcome — best-effort.
69
62
  await httpJson(config.commitAnchorUrl, {
70
63
  method: "POST",
71
64
  headers: {
@@ -1 +1 @@
1
- {"version":3,"file":"record-commit-anchor.js","sourceRoot":"","sources":["../../src/_utils/record-commit-anchor.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"record-commit-anchor.js","sourceRoot":"","sources":["../../src/_utils/record-commit-anchor.ts"],"names":[],"mappings":"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"}
@@ -3,13 +3,7 @@ import { buildGlenHeaders } from "./glen-headers.js";
3
3
  import { httpJson } from "./http.js";
4
4
  import { syncModeFromServer } from "./sync-mode-from-server.js";
5
5
  import { cliVersion } from "./version.js";
6
- // Content-free account-state poll used before a locally-off hook short-circuits.
7
- // Best-effort and privacy-safe: an unavailable or invalid server response leaves
8
- // the current local mode in place.
9
- //
10
- // teamMemoryBlock is not schema-validated here and is injected verbatim into a
11
- // model's context downstream, so extraction is defensive: anything but a
12
- // string (missing, null, wrong type) becomes null.
6
+ // teamMemoryBlock isn't schema-validated and is injected verbatim into model context, so accept strings only.
13
7
  const extractTeamMemoryBlock = (json) => {
14
8
  const block = json?.teamMemoryBlock;
15
9
  return typeof block === "string" ? block : null;
@@ -1 +1 @@
1
- {"version":3,"file":"refresh-control-state.js","sourceRoot":"","sources":["../../src/_utils/refresh-control-state.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAErC,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAChE,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C,iFAAiF;AACjF,iFAAiF;AACjF,mCAAmC;AACnC,EAAE;AACF,+EAA+E;AAC/E,yEAAyE;AACzE,mDAAmD;AACnD,MAAM,sBAAsB,GAAG,CAAC,IAAa,EAAiB,EAAE;IAC9D,MAAM,KAAK,GAAI,IAA6C,EAAE,eAAe,CAAC;IAC9E,OAAO,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;AAClD,CAAC,CAAC;AAEF,MAAM,mBAAmB,GAAG,KAAK,EAC/B,GAAW,EACX,KAAgB,EAC+C,EAAE;IACjE,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC,gBAAgB,EAAE;QACvD,MAAM,EAAE,MAAM;QACd,OAAO,EAAE;YACP,cAAc,EAAE,kBAAkB;YAClC,GAAG,gBAAgB,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC;SACzD;QACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;QACxB,SAAS,EAAE,MAAM,CAAC,sBAAsB;KACzC,CAAC,CAAC;IACH,IAAI,CAAC,QAAQ,IAAI,CAAC,QAAQ,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI;QACnD,OAAO,EAAE,KAAK,EAAE,eAAe,EAAE,IAAI,EAAE,CAAC;IAC1C,MAAM,SAAS,GAAG,CAAC,MAAM,kBAAkB,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC;IAC3E,OAAO;QACL,KAAK,EAAE,SAAS;QAChB,eAAe,EAAE,sBAAsB,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC;KAC7D,CAAC;AACJ,CAAC,CAAC;AAEF,OAAO,EAAE,mBAAmB,EAAE,CAAC"}
1
+ {"version":3,"file":"refresh-control-state.js","sourceRoot":"","sources":["../../src/_utils/refresh-control-state.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AAErC,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAChE,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C,8GAA8G;AAC9G,MAAM,sBAAsB,GAAG,CAAC,IAAa,EAAiB,EAAE;IAC9D,MAAM,KAAK,GAAI,IAA6C,EAAE,eAAe,CAAC;IAC9E,OAAO,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC;AAClD,CAAC,CAAC;AAEF,MAAM,mBAAmB,GAAG,KAAK,EAC/B,GAAW,EACX,KAAgB,EAC+C,EAAE;IACjE,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC,gBAAgB,EAAE;QACvD,MAAM,EAAE,MAAM;QACd,OAAO,EAAE;YACP,cAAc,EAAE,kBAAkB;YAClC,GAAG,gBAAgB,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC;SACzD;QACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,CAAC;QACxB,SAAS,EAAE,MAAM,CAAC,sBAAsB;KACzC,CAAC,CAAC;IACH,IAAI,CAAC,QAAQ,IAAI,CAAC,QAAQ,CAAC,EAAE,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI;QACnD,OAAO,EAAE,KAAK,EAAE,eAAe,EAAE,IAAI,EAAE,CAAC;IAC1C,MAAM,SAAS,GAAG,CAAC,MAAM,kBAAkB,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,CAAC;IAC3E,OAAO;QACL,KAAK,EAAE,SAAS;QAChB,eAAe,EAAE,sBAAsB,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC;KAC7D,CAAC;AACJ,CAAC,CAAC;AAEF,OAAO,EAAE,mBAAmB,EAAE,CAAC"}
@@ -1,10 +1,3 @@
1
- // The HTML the browser lands on after the OAuth handoff redirects to our loopback.
2
- // Themed to match the glen dashboard: Hanken Grotesk, glen green, stone neutrals,
3
- // sharp corners (the app's --radius is 0), light/dark via prefers-color-scheme.
4
- // Two variants: success (code received) and error (provider bounced back, no code).
5
- // The Glen mark — base64 transparent PNG (96×96), embedded so the mark always
6
- // renders (mirrors the dashboard/email mark). Fonts load from Google (the browser
7
- // is online right after the OAuth round-trip) with a system fallback.
8
1
  const GLEN_LOGO_BASE64 = "iVBORw0KGgoAAAANSUhEUgAAAGAAAABgCAYAAADimHc4AAAABmJLR0QA/wD/AP+gvaeTAAAE4ElEQVR4nO3bTUxcVRQH8P+5DyiM0kKdeQN0VEhMaEJI1KaYJkZAMMAMJTU6rR900aqNZWWMujA1tosuZNHEmDQ2ph/0ATUTE9NEiW60MSbGr40LVyaatCt0KXQYZt5xgd2QQpnH/XiQ81vzzrmZ//DmvnvvA4QQQgghhBBCCCGEEEIIIYQQQgghhBDbDbkewHaUvDjWqOqWBwAaBtADYO/80bnE3f62xu7AtrdkMNzpkZpgLr8C0H0buUYC0KBlZrQn5PAsGIPM1V0rAWxCy6WRVFhL58IwfBkRb+cSQESpIHs4BJ8H8MBm6kgAVcoU8g2l4uKHAL+mYw4jAVQhGQy1Li0tXCfCfl01JYANSk9nu8MQXxLhQZ11JYANSAYHH2eufE2EpO7aSnfB7cafGj2gUPkG0P/hAxLAulquDHWBwi8A7DLVQ25Ba9g9PZIJmeYA7DbZZ80A/CD7B5jmofhPZv4tDNWvjWHq+7+OXSmaHFAcpAp991NJfQXwQ6Z7rfcfkABxOxjtBOr3FGPRm7/tX81+FxJ9/k9mYQ79N8qmB2gdg9RM4hIzd9loV91vAKMBhCEF/jh1K/GDP52baC7kjd0fXfCnR04xI2+rX+QfYQL2gPlU7dK/P/pB7mRXIV+nc2AupK4OPwnQ+zZ7apgF0U6A3/u7uHjDnxo+sPl6bjQXBneRUgEAz2ZffdNQ4nYoVfCD7Js4fXrLTW9ri3XnwWi33Vf3B+UBeMt/5KcgeXGsUXNtY/xg5BAIL7nobeabyuinHeXryWCo1Uh9jVa+KPSRq/7GbhXE2KvY+8z/ZCBtqocOXu3yWQAZV/3N3qsJHdxQ/2mmMGT0aTKq1NTIY0w04XIMxn8sibmztKQu7/vlRK3pXtUijyZhedazmqXZCu2/9fvNSTu9NiYZ5HJgDLoeh7XpIhMdSV/Ljdnqt65C3lOED1wPA7C8HM3lcDIOM6N0cTEPS2s992L5gYl2EtecAzs8kccgJn7XWf9VrD+xEnFvcnb4iO2+d/hB7lkA3a76r+ZkyUCF6kxmanSPi94gfsdJ3zW4WrNpXCa2uuoIrGyuA3jCdt/1OFs0Y+LR1Ez2KZs9FVXesNlvI9yuWjKdwbd9Vvalmy4faoLFjZaNchoAMXembibGbfTaUVN6HkC9jV7VcL5uT8Rv29jWZOBF0z2icB4AQM01pYWTJjv8//DXa7JHVDEIACDGq22zfUZOngGAx94LcLzotpZYBAAgUSknXjdVPKR43n6A+AQAJhz3Z8e0b960zmQfJug7Tq5bbAIAUI/ysvbNkbBCzpec1xOnAABF47p3z5h4QGc93eIVAKOhVFTHNNYjAP3a6hkQrwAAgHC87cLBu77UXK10kOsC0KKjlinxCwDUvNxQOayjUgh+Wkcdk2IYAECKTug4XUdEPTrGY1IsAwBze7Lj580/uRIe1TAao+IZAABP8dHNXJ8p5BvA3KlrPKbENgAwBjezgV9evt2NLfAKVmwDYEKNIhX5wGwlDGNx6uFeYhvAChrHhX2RTtQRqEP3aEyIdwCMdCqRjvYkS9yudzBmxDsAAESI9mPs4GWLKGIfABi9yWvPtEW4MtbH4u+IfwCAUpW6QxGua9I+EgO2QgAA83MRrtpWr88KIYQQQgghhBBCCCGEEEIISTX9B+l2HtJhmbi6AAAAAElFTkSuQmCC";
9
2
  const CHECK_PATH = "M20 6 9 17l-5-5";
10
3
  const CROSS_PATH = "M18 6 6 18M6 6l12 12";
@@ -1 +1 @@
1
- {"version":3,"file":"render-callback-page.js","sourceRoot":"","sources":["../../src/_utils/render-callback-page.ts"],"names":[],"mappings":"AAAA,mFAAmF;AACnF,kFAAkF;AAClF,gFAAgF;AAChF,oFAAoF;AAEpF,8EAA8E;AAC9E,kFAAkF;AAClF,sEAAsE;AACtE,MAAM,gBAAgB,GACpB,suDAAsuD,CAAC;AAEzuD,MAAM,UAAU,GAAG,iBAAiB,CAAC;AACrC,MAAM,UAAU,GAAG,sBAAsB,CAAC;AAE1C,MAAM,UAAU,GAAG,CAAC,CAAS,EAAU,EAAE,CACvC,CAAC,CAAC,OAAO,CACP,QAAQ,EACR,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAC5D,CAAC;AAEJ,MAAM,kBAAkB,GAAG,CAAC,EAAW,EAAU,EAAE;IACjD,MAAM,KAAK,GAAG,EAAE,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,4BAA4B,CAAC;IACtE,MAAM,OAAO,GAAG,EAAE;QAChB,CAAC,CAAC,EAAE;QACJ,CAAC,CAAC,iFAAiF,CAAC;IACtF,MAAM,QAAQ,GAAG,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC;IAC9C,MAAM,UAAU,GAAG,EAAE,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,kBAAkB,CAAC;IAC/D,MAAM,WAAW,GAAG,OAAO;QACzB,CAAC,CAAC,sBAAsB,UAAU,CAAC,OAAO,CAAC,MAAM;QACjD,CAAC,CAAC,EAAE,CAAC;IAEP,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;mDA+D0C,gBAAgB;kBACjD,UAAU;2IAC+G,QAAQ;;UAEzI,KAAK;MACT,WAAW;;;;QAIT,CAAC;AACT,CAAC,CAAC;AAEF,OAAO,EAAE,kBAAkB,EAAE,CAAC"}
1
+ {"version":3,"file":"render-callback-page.js","sourceRoot":"","sources":["../../src/_utils/render-callback-page.ts"],"names":[],"mappings":"AAAA,MAAM,gBAAgB,GACpB,suDAAsuD,CAAC;AAEzuD,MAAM,UAAU,GAAG,iBAAiB,CAAC;AACrC,MAAM,UAAU,GAAG,sBAAsB,CAAC;AAE1C,MAAM,UAAU,GAAG,CAAC,CAAS,EAAU,EAAE,CACvC,CAAC,CAAC,OAAO,CACP,QAAQ,EACR,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,GAAG,EAAE,OAAO,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAC5D,CAAC;AAEJ,MAAM,kBAAkB,GAAG,CAAC,EAAW,EAAU,EAAE;IACjD,MAAM,KAAK,GAAG,EAAE,CAAC,CAAC,CAAC,mBAAmB,CAAC,CAAC,CAAC,4BAA4B,CAAC;IACtE,MAAM,OAAO,GAAG,EAAE;QAChB,CAAC,CAAC,EAAE;QACJ,CAAC,CAAC,iFAAiF,CAAC;IACtF,MAAM,QAAQ,GAAG,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,UAAU,CAAC;IAC9C,MAAM,UAAU,GAAG,EAAE,CAAC,CAAC,CAAC,iBAAiB,CAAC,CAAC,CAAC,kBAAkB,CAAC;IAC/D,MAAM,WAAW,GAAG,OAAO;QACzB,CAAC,CAAC,sBAAsB,UAAU,CAAC,OAAO,CAAC,MAAM;QACjD,CAAC,CAAC,EAAE,CAAC;IAEP,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;mDA+D0C,gBAAgB;kBACjD,UAAU;2IAC+G,QAAQ;;UAEzI,KAAK;MACT,WAAW;;;;QAIT,CAAC;AACT,CAAC,CAAC;AAEF,OAAO,EAAE,kBAAkB,EAAE,CAAC"}
@@ -1,10 +1,3 @@
1
- /** The repo a historical transcript ran in, recovered from the `cwd` it
2
- * recorded. A checkout that still exists answers for itself. A checkout that
3
- * is gone — overwhelmingly a cleaned-up worktree, which lives inside the repo
4
- * it was forked from — is recovered from its nearest surviving ancestor, but
5
- * only when that ancestor knows the branch the transcript recorded; without
6
- * that proof the ancestor could be an unrelated repo the session merely sat
7
- * inside. */
8
1
  export declare const resolveImportWorkspace: (cwd: string | undefined, branch: string | undefined) => {
9
2
  readonly repoName: string;
10
3
  readonly remoteUrl: string;
@@ -17,10 +17,7 @@ const gitOut = (dir, args) => {
17
17
  }
18
18
  };
19
19
  const repoCache = new Map();
20
- // `origin` unconditionally, never the tracked branch's remote: the branch
21
- // checked out today has nothing to do with the session being imported. For the
22
- // same reason nothing here reads HEAD — today's commit would be a lie about a
23
- // historical turn, so the transcript's own branch is the only ref we keep.
20
+ // Always `origin`, and never read HEAD: today's checkout says nothing about the historical session being imported.
24
21
  const repoAt = (dir) => {
25
22
  const cached = repoCache.get(dir);
26
23
  if (cached !== undefined)
@@ -60,18 +57,9 @@ const nearestExistingAncestor = (path) => {
60
57
  return null;
61
58
  return existsSync(parent) ? parent : nearestExistingAncestor(parent);
62
59
  };
63
- /** The repo a historical transcript ran in, recovered from the `cwd` it
64
- * recorded. A checkout that still exists answers for itself. A checkout that
65
- * is gone — overwhelmingly a cleaned-up worktree, which lives inside the repo
66
- * it was forked from — is recovered from its nearest surviving ancestor, but
67
- * only when that ancestor knows the branch the transcript recorded; without
68
- * that proof the ancestor could be an unrelated repo the session merely sat
69
- * inside. */
70
60
  export const resolveImportWorkspace = (cwd, branch) => {
71
61
  if (!cwd)
72
62
  return null;
73
- // An existing path inside a checkout resolves via git's own upward walk, so
74
- // a miss here means there is no repo above it either.
75
63
  if (existsSync(cwd)) {
76
64
  const direct = repoAt(cwd);
77
65
  return direct && { repoName: direct.repoName, remoteUrl: direct.remoteUrl };
@@ -1 +1 @@
1
- {"version":3,"file":"resolve-import-workspace.js","sourceRoot":"","sources":["../../src/_utils/resolve-import-workspace.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"resolve-import-workspace.js","sourceRoot":"","sources":["../../src/_utils/resolve-import-workspace.ts"],"names":[],"mappings":"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"}
@@ -7,8 +7,6 @@ const tail = (s) => s
7
7
  .slice(-3)
8
8
  .join(" · ")
9
9
  .slice(0, 400);
10
- // Synchronous on purpose: install/update steps are sequential UX with a
11
- // ✓/✗ per line. 60s default timeout.
12
10
  const runBin = (bin, args, opts = {}) => {
13
11
  try {
14
12
  const stdout = execFileSync(bin, args, {
@@ -1 +1 @@
1
- {"version":3,"file":"run-bin.js","sourceRoot":"","sources":["../../src/_utils/run-bin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAe,GAAG,EAAE,EAAE,EAAE,MAAM,aAAa,CAAC;AAQnD,MAAM,IAAI,GAAG,CAAC,CAAS,EAAU,EAAE,CACjC,CAAC;KACE,KAAK,CAAC,IAAI,CAAC;KACX,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;KACpB,MAAM,CAAC,OAAO,CAAC;KACf,KAAK,CAAC,CAAC,CAAC,CAAC;KACT,IAAI,CAAC,KAAK,CAAC;KACX,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;AAEnB,wEAAwE;AACxE,qCAAqC;AACrC,MAAM,MAAM,GAAG,CACb,GAAW,EACX,IAAuB,EACvB,OAA+B,EAAE,EACU,EAAE;IAC7C,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,YAAY,CAAC,GAAG,EAAE,IAAgB,EAAE;YACjD,QAAQ,EAAE,MAAM;YAChB,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC;YACjC,OAAO,EAAE,IAAI,CAAC,SAAS,IAAI,MAAM;SAClC,CAAC,CAAC;QACH,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;IACxB,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,MAAM,EAAE,GAAG,CAIV,CAAC;QACF,IAAI,EAAE,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YACzB,OAAO,GAAG,CAAC;gBACT,IAAI,EAAE,IAAI;gBACV,UAAU,EAAE,EAAE;gBACd,UAAU,EAAE,WAAW,GAAG,YAAY;aACvC,CAAC,CAAC;QACL,CAAC;QACD,MAAM,MAAM,GACV,OAAO,EAAE,CAAC,MAAM,KAAK,QAAQ;YAC3B,CAAC,CAAC,EAAE,CAAC,MAAM;YACX,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;QAC1C,IAAI,EAAE,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;YAC5B,OAAO,GAAG,CAAC;gBACT,IAAI,EAAE,EAAE,CAAC,MAAM,IAAI,IAAI;gBACvB,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC;gBACxB,UAAU,EAAE,cAAc,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,YAAY,CAAC,IAAI,EAAE;aAClE,CAAC,CAAC;QACL,CAAC;QACD,IAAI,EAAE,CAAC,MAAM,EAAE,CAAC;YACd,OAAO,GAAG,CAAC;gBACT,IAAI,EAAE,EAAE,CAAC,MAAM,IAAI,IAAI;gBACvB,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC;gBACxB,UAAU,EAAE,aAAa,EAAE,CAAC,MAAM,EAAE;aACrC,CAAC,CAAC;QACL,CAAC;QACD,OAAO,GAAG,CAAC,EAAE,IAAI,EAAE,EAAE,CAAC,MAAM,IAAI,IAAI,EAAE,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IACpE,CAAC;AACH,CAAC,CAAC;AAEF,OAAO,EAAE,MAAM,EAAE,CAAC"}
1
+ {"version":3,"file":"run-bin.js","sourceRoot":"","sources":["../../src/_utils/run-bin.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAe,GAAG,EAAE,EAAE,EAAE,MAAM,aAAa,CAAC;AAQnD,MAAM,IAAI,GAAG,CAAC,CAAS,EAAU,EAAE,CACjC,CAAC;KACE,KAAK,CAAC,IAAI,CAAC;KACX,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;KACpB,MAAM,CAAC,OAAO,CAAC;KACf,KAAK,CAAC,CAAC,CAAC,CAAC;KACT,IAAI,CAAC,KAAK,CAAC;KACX,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;AAEnB,MAAM,MAAM,GAAG,CACb,GAAW,EACX,IAAuB,EACvB,OAA+B,EAAE,EACU,EAAE;IAC7C,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,YAAY,CAAC,GAAG,EAAE,IAAgB,EAAE;YACjD,QAAQ,EAAE,MAAM;YAChB,KAAK,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC;YACjC,OAAO,EAAE,IAAI,CAAC,SAAS,IAAI,MAAM;SAClC,CAAC,CAAC;QACH,OAAO,EAAE,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;IACxB,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,MAAM,EAAE,GAAG,CAIV,CAAC;QACF,IAAI,EAAE,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YACzB,OAAO,GAAG,CAAC;gBACT,IAAI,EAAE,IAAI;gBACV,UAAU,EAAE,EAAE;gBACd,UAAU,EAAE,WAAW,GAAG,YAAY;aACvC,CAAC,CAAC;QACL,CAAC;QACD,MAAM,MAAM,GACV,OAAO,EAAE,CAAC,MAAM,KAAK,QAAQ;YAC3B,CAAC,CAAC,EAAE,CAAC,MAAM;YACX,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,EAAE,QAAQ,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC;QAC1C,IAAI,EAAE,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;YAC5B,OAAO,GAAG,CAAC;gBACT,IAAI,EAAE,EAAE,CAAC,MAAM,IAAI,IAAI;gBACvB,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC;gBACxB,UAAU,EAAE,cAAc,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,YAAY,CAAC,IAAI,EAAE;aAClE,CAAC,CAAC;QACL,CAAC;QACD,IAAI,EAAE,CAAC,MAAM,EAAE,CAAC;YACd,OAAO,GAAG,CAAC;gBACT,IAAI,EAAE,EAAE,CAAC,MAAM,IAAI,IAAI;gBACvB,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC;gBACxB,UAAU,EAAE,aAAa,EAAE,CAAC,MAAM,EAAE;aACrC,CAAC,CAAC;QACL,CAAC;QACD,OAAO,GAAG,CAAC,EAAE,IAAI,EAAE,EAAE,CAAC,MAAM,IAAI,IAAI,EAAE,UAAU,EAAE,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IACpE,CAAC;AACH,CAAC,CAAC;AAEF,OAAO,EAAE,MAAM,EAAE,CAAC"}
@@ -2,10 +2,6 @@ import { mkdir, readFile, rename, writeFile } from "node:fs/promises";
2
2
  import { homedir } from "node:os";
3
3
  import { dirname, join } from "node:path";
4
4
  import { fromPromise } from "./result.js";
5
- // cwd → agent session id. Written by the hooks (which receive session_id on stdin),
6
- // read by `glen search` (which only gets a query, no session id). Keyed by cwd so
7
- // distinct sessions in distinct dirs don't collide; same-cwd concurrent sessions are
8
- // last-writer-wins (accepted; Claude Code exposes no session-id env var).
9
5
  const mapPath = () => process.env.GLEN_SESSION_MAP_PATH ??
10
6
  join(homedir(), ".glen", "sessions.json");
11
7
  const readMap = async () => {
@@ -21,7 +17,6 @@ const readMap = async () => {
21
17
  out[k] = v;
22
18
  return out;
23
19
  };
24
- // Best-effort: a write failure must never break a hook.
25
20
  const recordSession = async (cwd, sessionId) => {
26
21
  const map = await readMap();
27
22
  map[cwd] = sessionId;
@@ -1 +1 @@
1
- {"version":3,"file":"session-map.js","sourceRoot":"","sources":["../../src/_utils/session-map.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACtE,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE1C,oFAAoF;AACpF,kFAAkF;AAClF,qFAAqF;AACrF,0EAA0E;AAC1E,MAAM,OAAO,GAAG,GAAW,EAAE,CAC3B,OAAO,CAAC,GAAG,CAAC,qBAAqB;IACjC,IAAI,CAAC,OAAO,EAAE,EAAE,OAAO,EAAE,eAAe,CAAC,CAAC;AAE5C,MAAM,OAAO,GAAG,KAAK,IAAqC,EAAE;IAC1D,MAAM,GAAG,GAAG,MAAM,WAAW,CAAC,QAAQ,CAAC,OAAO,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC;IAC5D,IAAI,CAAC,GAAG,CAAC,EAAE;QAAE,OAAO,EAAE,CAAC;IACvB,MAAM,MAAM,GAAG,MAAM,WAAW,CAC9B,IAAI,OAAO,CAAU,CAAC,OAAO,EAAE,EAAE,CAC/B,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAY,CAAC,CAC1C,CACF,CAAC;IACF,IAAI,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI,OAAO,MAAM,CAAC,KAAK,KAAK,QAAQ;QACjE,OAAO,EAAE,CAAC;IACZ,MAAM,GAAG,GAA2B,EAAE,CAAC;IACvC,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,KAAgC,CAAC;QAC1E,IAAI,OAAO,CAAC,KAAK,QAAQ;YAAE,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IACxC,OAAO,GAAG,CAAC;AACb,CAAC,CAAC;AAEF,wDAAwD;AACxD,MAAM,aAAa,GAAG,KAAK,EAAE,GAAW,EAAE,SAAiB,EAAiB,EAAE;IAC5E,MAAM,GAAG,GAAG,MAAM,OAAO,EAAE,CAAC;IAC5B,GAAG,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC;IACrB,MAAM,QAAQ,GAAG,OAAO,EAAE,CAAC;IAC3B,MAAM,EAAE,GAAG,MAAM,WAAW,CAC1B,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAC3D,CAAC;IACF,IAAI,CAAC,EAAE,CAAC,EAAE;QAAE,OAAO;IACnB,MAAM,GAAG,GAAG,GAAG,QAAQ,IAAI,OAAO,CAAC,GAAG,MAAM,CAAC;IAC7C,MAAM,CAAC,GAAG,MAAM,WAAW,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAC1E,IAAI,CAAC,CAAC,CAAC,EAAE;QAAE,OAAO;IAClB,MAAM,WAAW,CAAC,MAAM,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC,CAAC;AAC3C,CAAC,CAAC;AAEF,MAAM,iBAAiB,GAAG,KAAK,EAAE,GAAW,EAA0B,EAAE;IACtE,MAAM,GAAG,GAAG,MAAM,OAAO,EAAE,CAAC;IAC5B,OAAO,GAAG,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC;AAC1B,CAAC,CAAC;AAEF,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,OAAO,EAAE,CAAC"}
1
+ {"version":3,"file":"session-map.js","sourceRoot":"","sources":["../../src/_utils/session-map.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACtE,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE1C,MAAM,OAAO,GAAG,GAAW,EAAE,CAC3B,OAAO,CAAC,GAAG,CAAC,qBAAqB;IACjC,IAAI,CAAC,OAAO,EAAE,EAAE,OAAO,EAAE,eAAe,CAAC,CAAC;AAE5C,MAAM,OAAO,GAAG,KAAK,IAAqC,EAAE;IAC1D,MAAM,GAAG,GAAG,MAAM,WAAW,CAAC,QAAQ,CAAC,OAAO,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC;IAC5D,IAAI,CAAC,GAAG,CAAC,EAAE;QAAE,OAAO,EAAE,CAAC;IACvB,MAAM,MAAM,GAAG,MAAM,WAAW,CAC9B,IAAI,OAAO,CAAU,CAAC,OAAO,EAAE,EAAE,CAC/B,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAY,CAAC,CAC1C,CACF,CAAC;IACF,IAAI,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI,OAAO,MAAM,CAAC,KAAK,KAAK,QAAQ;QACjE,OAAO,EAAE,CAAC;IACZ,MAAM,GAAG,GAA2B,EAAE,CAAC;IACvC,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,KAAgC,CAAC;QAC1E,IAAI,OAAO,CAAC,KAAK,QAAQ;YAAE,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IACxC,OAAO,GAAG,CAAC;AACb,CAAC,CAAC;AAEF,MAAM,aAAa,GAAG,KAAK,EAAE,GAAW,EAAE,SAAiB,EAAiB,EAAE;IAC5E,MAAM,GAAG,GAAG,MAAM,OAAO,EAAE,CAAC;IAC5B,GAAG,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC;IACrB,MAAM,QAAQ,GAAG,OAAO,EAAE,CAAC;IAC3B,MAAM,EAAE,GAAG,MAAM,WAAW,CAC1B,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAC3D,CAAC;IACF,IAAI,CAAC,EAAE,CAAC,EAAE;QAAE,OAAO;IACnB,MAAM,GAAG,GAAG,GAAG,QAAQ,IAAI,OAAO,CAAC,GAAG,MAAM,CAAC;IAC7C,MAAM,CAAC,GAAG,MAAM,WAAW,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAC1E,IAAI,CAAC,CAAC,CAAC,EAAE;QAAE,OAAO;IAClB,MAAM,WAAW,CAAC,MAAM,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC,CAAC;AAC3C,CAAC,CAAC;AAEF,MAAM,iBAAiB,GAAG,KAAK,EAAE,GAAW,EAA0B,EAAE;IACtE,MAAM,GAAG,GAAG,MAAM,OAAO,EAAE,CAAC;IAC5B,OAAO,GAAG,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC;AAC1B,CAAC,CAAC;AAEF,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,OAAO,EAAE,CAAC"}
@@ -10,12 +10,7 @@ const LOGIN_CHECK_MARKERS = {
10
10
  start: "# glen login-check",
11
11
  end: "# glen login-check end",
12
12
  };
13
- // The login-shell profile for the current shell, or null for shells we don't
14
- // auto-edit (fish/others fall back to a printed manual line). We target the
15
- // LOGIN profile — `.zprofile` / `.bash_profile` — because the agents' hooks
16
- // run via `$SHELL -lc`, a non-interactive login shell that sources those but
17
- // NOT `.zshrc`/`.bashrc`. (Homebrew makes the same `.zprofile` choice; pnpm's
18
- // `.zshrc` is the documented "not found in `$SHELL -lc`" pitfall.)
13
+ // Target the LOGIN profile: agent hooks run via `$SHELL -lc`, which sources .zprofile/.bash_profile but not .zshrc/.bashrc.
19
14
  const loginProfileForShell = () => {
20
15
  const shell = basename(process.env.SHELL ?? "");
21
16
  if (shell === "zsh") {
@@ -28,13 +23,6 @@ const loginProfileForShell = () => {
28
23
  }
29
24
  return null;
30
25
  };
31
- // The exact block we write — a marker fence (idempotency + clean uninstall)
32
- // around a runtime `case` guard (re-sourcing never duplicates the PATH entry).
33
- // Single source of truth: used both for the edit and the manual-line hint.
34
- // binDir is wrapped in `"` everywhere it appears, so a path with spaces stays
35
- // one literal word (verified in zsh and bash). binDir is a trusted install
36
- // path (the npm prefix), so we don't escape `"`/`$`/`` ` `` — they don't occur
37
- // in a real prefix and escaping them would only obscure the block.
38
26
  const glenPathBlock = (binDir) => [
39
27
  PATH_MARKERS.start,
40
28
  'case ":$PATH:" in',
@@ -48,8 +36,6 @@ const glenPathBlock = (binDir) => [
48
36
  // order is deliberate: stdout onto the ORIGINAL stderr first, then stderr off.
49
37
  const LOGIN_CHECK_BODY = "if [ -t 0 ] && command -v glen >/dev/null 2>&1; then glen doctor --login-check >&2 2>/dev/null; fi";
50
38
  const glenLoginCheckBlock = () => [LOGIN_CHECK_MARKERS.start, LOGIN_CHECK_BODY, LOGIN_CHECK_MARKERS.end].join("\n");
51
- // Markers match as whole trimmed lines (see PATH_MARKERS note). Returns the
52
- // fence's [start, end) character span, or null when absent/malformed.
53
39
  const fencedSpan = (text, markers) => {
54
40
  const lines = [];
55
41
  let offset = 0;
@@ -80,10 +66,6 @@ const atomicWrite = async (filePath, content) => {
80
66
  return w;
81
67
  return fromPromise(rename(tmp, filePath));
82
68
  };
83
- // Stitch the content surrounding a removed/replaced span back together with at
84
- // most one blank line between the two sides — no double blank lines, no stray
85
- // leading newline at start-of-file, no trailing cruft when the block was the
86
- // only content.
87
69
  const joinAround = (before, after) => {
88
70
  const head = before.replace(/\n+$/, "");
89
71
  const tail = after.replace(/^\n+/, "").replace(/\n+$/, "");
@@ -93,12 +75,6 @@ const joinAround = (before, after) => {
93
75
  return `${head}\n`;
94
76
  return `${head}\n\n${tail}\n`;
95
77
  };
96
- // Ensure the login profile contains exactly the canonical fenced `block`,
97
- // creating the file if missing. No existing fence (by MARKERS) → append
98
- // ("added"). An identical block already present → no write
99
- // ("already-present"). A block that DIFFERS (hand-edited, or changed inputs)
100
- // → replace it in place so we never leave a duplicate or stale fence behind
101
- // ("updated"). Atomic write.
102
78
  const addFencedBlock = async (profilePath, markers, block, remedy) => {
103
79
  const existing = await fromPromise(readFile(profilePath, "utf-8"));
104
80
  const current = existing.ok ? existing.value : "";
@@ -121,9 +97,6 @@ const addFencedBlock = async (profilePath, markers, block, remedy) => {
121
97
  }
122
98
  return ok(outcome);
123
99
  };
124
- // Strip a marker-fenced block (by MARKERS) for `glen uninstall`, leaving clean
125
- // output for every position (start / middle / end / only-content). Absent
126
- // block / missing file → "absent" (no-op).
127
100
  const removeFencedBlock = async (profilePath, markers, remedy) => {
128
101
  const existing = await fromPromise(readFile(profilePath, "utf-8"));
129
102
  if (!existing.ok)
@@ -1 +1 @@
1
- {"version":3,"file":"shell-profile.js","sourceRoot":"","sources":["../../src/_utils/shell-profile.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"shell-profile.js","sourceRoot":"","sources":["../../src/_utils/shell-profile.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACtE,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACpD,OAAO,EAAiB,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAChE,OAAO,EAAe,GAAG,EAAE,WAAW,EAAE,EAAE,EAAE,MAAM,aAAa,CAAC;AAIhE,8EAA8E;AAC9E,8DAA8D;AAC9D,MAAM,YAAY,GAAY,EAAE,KAAK,EAAE,QAAQ,EAAE,GAAG,EAAE,YAAY,EAAE,CAAC;AACrE,MAAM,mBAAmB,GAAY;IACnC,KAAK,EAAE,oBAAoB;IAC3B,GAAG,EAAE,wBAAwB;CAC9B,CAAC;AAEF,4HAA4H;AAC5H,MAAM,oBAAoB,GAAG,GAGpB,EAAE;IACT,MAAM,KAAK,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;IAChD,IAAI,KAAK,KAAK,KAAK,EAAE,CAAC;QACpB,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC;QACpC,MAAM,IAAI,GAAG,OAAO,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,EAAE,CAAC;QACjE,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,WAAW,EAAE,IAAI,CAAC,IAAI,EAAE,WAAW,CAAC,EAAE,CAAC;IAChE,CAAC;IACD,IAAI,KAAK,KAAK,MAAM,EAAE,CAAC;QACrB,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,IAAI,CAAC,OAAO,EAAE,EAAE,eAAe,CAAC,EAAE,CAAC;IAC1E,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC,CAAC;AAEF,MAAM,aAAa,GAAG,CAAC,MAAc,EAAU,EAAE,CAC/C;IACE,YAAY,CAAC,KAAK;IAClB,mBAAmB;IACnB,QAAQ,MAAM,SAAS;IACvB,qBAAqB,MAAM,YAAY;IACvC,MAAM;IACN,YAAY,CAAC,GAAG;CACjB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAEf,4EAA4E;AAC5E,iFAAiF;AACjF,+EAA+E;AAC/E,MAAM,gBAAgB,GACpB,oGAAoG,CAAC;AAEvG,MAAM,mBAAmB,GAAG,GAAW,EAAE,CACvC,CAAC,mBAAmB,CAAC,KAAK,EAAE,gBAAgB,EAAE,mBAAmB,CAAC,GAAG,CAAC,CAAC,IAAI,CACzE,IAAI,CACL,CAAC;AAEJ,MAAM,UAAU,GAAG,CACjB,IAAY,EACZ,OAAgB,EACuB,EAAE;IACzC,MAAM,KAAK,GAAuC,EAAE,CAAC;IACrD,IAAI,MAAM,GAAG,CAAC,CAAC;IACf,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;QACpC,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,CAAC;QAC7B,MAAM,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,CAAC;IAC5B,CAAC;IAED,MAAM,QAAQ,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,OAAO,CAAC,KAAK,CAAC,CAAC;IACzE,IAAI,QAAQ,KAAK,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC;IACjC,MAAM,MAAM,GAAG,KAAK,CAAC,SAAS,CAC5B,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,QAAQ,IAAI,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,KAAK,OAAO,CAAC,GAAG,CACxD,CAAC;IACF,IAAI,MAAM,KAAK,CAAC,CAAC;QAAE,OAAO,IAAI,CAAC;IAE/B,MAAM,SAAS,GAAG,KAAK,CAAC,QAAQ,CAAC,CAAC;IAClC,MAAM,OAAO,GAAG,KAAK,CAAC,MAAM,CAAC,CAAC;IAC9B,IAAI,CAAC,SAAS,IAAI,CAAC,OAAO;QAAE,OAAO,IAAI,CAAC;IACxC,OAAO,EAAE,KAAK,EAAE,SAAS,CAAC,MAAM,EAAE,GAAG,EAAE,OAAO,CAAC,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;AAChF,CAAC,CAAC;AAEF,MAAM,oBAAoB,GAAG,CAAC,WAAmB,EAAW,EAAE,CAC5D,UAAU,CAAC,WAAW,EAAE,YAAY,CAAC,KAAK,IAAI,CAAC;AAEjD,MAAM,WAAW,GAAG,KAAK,EACvB,QAAgB,EAChB,OAAe,EACiB,EAAE;IAClC,MAAM,EAAE,GAAG,MAAM,WAAW,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;IAC5E,IAAI,CAAC,EAAE,CAAC,EAAE;QAAE,OAAO,EAAE,CAAC;IACtB,MAAM,GAAG,GAAG,GAAG,QAAQ,IAAI,OAAO,CAAC,GAAG,MAAM,CAAC;IAC7C,MAAM,CAAC,GAAG,MAAM,WAAW,CAAC,SAAS,CAAC,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC;IACrD,IAAI,CAAC,CAAC,CAAC,EAAE;QAAE,OAAO,CAAC,CAAC;IACpB,OAAO,WAAW,CAAC,MAAM,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC,CAAC;AAC5C,CAAC,CAAC;AAEF,MAAM,UAAU,GAAG,CAAC,MAAc,EAAE,KAAa,EAAU,EAAE;IAC3D,MAAM,IAAI,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IACxC,MAAM,IAAI,GAAG,KAAK,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IAC3D,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,IAAI,IAAI,CAAC;IACnE,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,GAAG,IAAI,IAAI,CAAC;IAC1C,OAAO,GAAG,IAAI,OAAO,IAAI,IAAI,CAAC;AAChC,CAAC,CAAC;AAEF,MAAM,cAAc,GAAG,KAAK,EAC1B,WAAmB,EACnB,OAAgB,EAChB,KAAa,EACb,MAAc,EACsD,EAAE;IACtE,MAAM,QAAQ,GAAG,MAAM,WAAW,CAAC,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC,CAAC;IACnE,MAAM,OAAO,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;IAClD,MAAM,IAAI,GAAG,UAAU,CAAC,OAAO,EAAE,OAAO,CAAC,CAAC;IAE1C,IAAI,IAAI,IAAI,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,KAAK,EAAE,CAAC;QAC1D,OAAO,EAAE,CAAC,iBAAiB,CAAC,CAAC;IAC/B,CAAC;IAED,MAAM,OAAO,GAAwB,IAAI,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,OAAO,CAAC;IAChE,MAAM,IAAI,GAAG,IAAI;QACf,CAAC,CAAC,UAAU,CACR,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,GAAG,KAAK,EAAE,EACzC,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CACxB;QACH,CAAC,CAAC,UAAU,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC;IAE/B,MAAM,CAAC,GAAG,MAAM,WAAW,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;IAC/C,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;QACV,OAAO,GAAG,CACR,MAAM,CAAC;YACL,IAAI,EAAE,qCAAqC;YAC3C,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC;YACrB,IAAI,EAAE,WAAW;YACjB,MAAM;SACP,CAAC,CACH,CAAC;IACJ,CAAC;IACD,OAAO,EAAE,CAAC,OAAO,CAAC,CAAC;AACrB,CAAC,CAAC;AAEF,MAAM,iBAAiB,GAAG,KAAK,EAC7B,WAAmB,EACnB,OAAgB,EAChB,MAAc,EACmC,EAAE;IACnD,MAAM,QAAQ,GAAG,MAAM,WAAW,CAAC,QAAQ,CAAC,WAAW,EAAE,OAAO,CAAC,CAAC,CAAC;IACnE,IAAI,CAAC,QAAQ,CAAC,EAAE;QAAE,OAAO,EAAE,CAAC,QAAQ,CAAC,CAAC;IACtC,MAAM,IAAI,GAAG,QAAQ,CAAC,KAAK,CAAC;IAC5B,MAAM,IAAI,GAAG,UAAU,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;IACvC,IAAI,CAAC,IAAI;QAAE,OAAO,EAAE,CAAC,QAAQ,CAAC,CAAC;IAE/B,MAAM,IAAI,GAAG,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;IACzE,MAAM,CAAC,GAAG,MAAM,WAAW,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;IAC/C,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;QACV,OAAO,GAAG,CACR,MAAM,CAAC;YACL,IAAI,EAAE,qCAAqC;YAC3C,GAAG,EAAE,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC;YACrB,IAAI,EAAE,WAAW;YACjB,MAAM;SACP,CAAC,CACH,CAAC;IACJ,CAAC;IACD,OAAO,EAAE,CAAC,SAAS,CAAC,CAAC;AACvB,CAAC,CAAC;AAEF,MAAM,gBAAgB,GAAG,CACvB,WAAmB,EACnB,MAAc,EACsD,EAAE,CACtE,cAAc,CACZ,WAAW,EACX,YAAY,EACZ,aAAa,CAAC,MAAM,CAAC,EACrB,oEAAoE,MAAM,SAAS,CACpF,CAAC;AAEJ,MAAM,mBAAmB,GAAG,CAC1B,WAAmB,EAC8B,EAAE,CACnD,iBAAiB,CACf,WAAW,EACX,YAAY,EACZ,gBAAgB,YAAY,CAAC,KAAK,UAAU,YAAY,CAAC,GAAG,iBAAiB,WAAW,WAAW,CACpG,CAAC;AAEJ,MAAM,sBAAsB,GAAG,CAC7B,WAAmB,EACiD,EAAE,CACtE,cAAc,CACZ,WAAW,EACX,mBAAmB,EACnB,mBAAmB,EAAE,EACrB,uDAAuD,gBAAgB,EAAE,CAC1E,CAAC;AAEJ,MAAM,yBAAyB,GAAG,CAChC,WAAmB,EAC8B,EAAE,CACnD,iBAAiB,CACf,WAAW,EACX,mBAAmB,EACnB,gBAAgB,mBAAmB,CAAC,KAAK,UAAU,mBAAmB,CAAC,GAAG,iBAAiB,WAAW,WAAW,CAClH,CAAC;AAEJ,OAAO,EACL,sBAAsB,EACtB,gBAAgB,EAChB,aAAa,EACb,oBAAoB,EACpB,oBAAoB,EACpB,yBAAyB,EACzB,mBAAmB,GACpB,CAAC"}
@@ -1,8 +1,2 @@
1
- /**
2
- * Record `line` as the latest state line shown to `sessionId` and report
3
- * whether it differs from what was previously recorded. `true` = new or
4
- * changed (caller should emit), `false` = identical to the last recorded
5
- * line (caller may stay silent).
6
- */
7
1
  declare const rememberStateLine: (sessionId: string, line: string) => Promise<boolean>;
8
2
  export { rememberStateLine };
@@ -1,12 +1,5 @@
1
- // Per-session dedup for the injected state line ("[glen] org: X · recording").
2
- // SessionStart injects it once; the per-prompt ingest re-emits it only when it
3
- // CHANGES (org switch / mode flip mid-session). Codex renders every injected
4
- // hook context as a visible transcript card with no way to hide it, so an
5
- // unchanged line every turn is pure noise there — and wasted context tokens
6
- // everywhere else. Keyed by session id; lives next to state.json so
7
- // GLEN_STATE_PATH overrides cover it (same pattern as update-check.json).
8
- // Best-effort by design: every fs failure reports "changed" — fail toward
9
- // showing the line, never toward hiding it.
1
+ // Emit the state line only when it changes: Codex shows every injected context as a visible card.
2
+ // On any fs failure report "changed": fail toward showing the line, never hiding it.
10
3
  import { mkdir, readFile, rename, writeFile } from "node:fs/promises";
11
4
  import { homedir } from "node:os";
12
5
  import { dirname, join } from "node:path";
@@ -40,16 +33,8 @@ const writeMemo = async (memo) => {
40
33
  await writeFile(tmp, JSON.stringify(Object.fromEntries(entries)));
41
34
  await rename(tmp, path);
42
35
  }
43
- catch {
44
- // best-effort — a hook must never fail on memo I/O
45
- }
36
+ catch { }
46
37
  };
47
- /**
48
- * Record `line` as the latest state line shown to `sessionId` and report
49
- * whether it differs from what was previously recorded. `true` = new or
50
- * changed (caller should emit), `false` = identical to the last recorded
51
- * line (caller may stay silent).
52
- */
53
38
  const rememberStateLine = async (sessionId, line) => {
54
39
  const memo = await readMemo();
55
40
  if (memo[sessionId]?.line === line)