@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
package/README.md CHANGED
@@ -11,34 +11,46 @@ glen login
11
11
 
12
12
  ## Commands
13
13
 
14
- | Command | Description |
15
- | ---------------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
16
- | `glen login` | Connect via browser sign-in; writes credentials and initial session state. |
17
- | `glen logout` | Sign out and remove credentials + session state. |
18
- | `glen status` | Show connection status, active org, incognito state, and CLI version. |
19
- | `glen search "<query>"` | Search the team's shared glen memory. |
20
- | `glen takeover <code>` | Redeem a transcript-page handoff into a fresh native Claude Code, Codex, Cursor, or Pi session, then open it. The complete transcript must fit; Glen never truncates or summarizes it. |
21
- | `glen import <path…> [--dry-run]` | Import old local agent transcripts (Claude Code `~/.claude/projects`, Codex `~/.codex/sessions`, Cursor `state.vscdb`, Pi `~/.pi/agent/sessions`) into glen memory. Idempotent — re-running skips already-imported turns. `--dry-run` previews without writing. |
22
- | `glen incognito on\|off` | Toggle incognito mode: while on, nothing is recorded (recall keeps working). |
23
- | `glen org list` | List your organizations; active one is marked with `✓`. |
24
- | `glen org switch [slug]` | Switch the active organization for this machine (interactive picker without `slug`). |
25
- | `glen ingest [--agent <name>]` | Ingest a turn from stdin — used by agent hooks (`claude-code`, `codex`, `cursor`, or `pi`). |
26
- | `glen install [--agent <claude\|codex\|cursor\|pi>]` | Set up or update glen for detected coding agents (plugin + hooks); idempotent, so re-running repairs a broken setup. `--claude-path <path>` / `--codex-path <path>` / `--pi-path <path>` point at a binary when auto-detection fails. |
27
- | `glen uninstall` | Permanently remove Glen's local plugins, marketplaces, hooks, PATH entries, credentials, state, caches, and global npm CLI. |
28
- | `glen update` | Update the glen CLI **and** any installed glen plugins, and re-verify the Codex hook registration. Never installs a plugin that isn't already installed — that's `glen install`'s job. |
29
- | `glen doctor [--auto]` | Print machine-readable `status:` lines (CLI version/latest/channel, login + org, per-agent plugin + hook state) plus `→` remedy lines — the setup skill branches on them. `--auto` runs background updates silently (used by hooks). |
30
- | `glen statusline` | Output a single status line for the agent's UI status bar — used by hooks. |
31
- | `glen session-start [--agent <name>]` | Output hook JSON for the agent's `SessionStart` event — used by hooks. |
32
- | `glen version` | Print the CLI version. |
14
+ | Command | Description |
15
+ | --- | --- |
16
+ | `glen login` | Connect via browser sign-in; writes credentials and initial session state. |
17
+ | `glen logout` | Sign out and remove credentials + session state. |
18
+ | `glen status` | Show CLI version, connection status, active org, and mode. |
19
+ | `glen search "<query>"` | Search the team's shared glen memory. |
20
+ | `glen code-search <path:start-end> ["<question>"]` | Trace selected code to the agent conversations that produced it. |
21
+ | `glen takeover <code>` | Redeem a transcript-page handoff into a fresh native session of a supported coding agent, then open it. The complete transcript must fit; Glen never truncates or summarizes it. |
22
+ | `glen import <path…> [--dry-run] [--report <path>]` | Import old local agent transcripts (from each supported agent's local transcript store) into glen memory. Idempotent — re-running skips already-imported turns. `--dry-run` previews without writing; `--report` writes a machine-readable report. |
23
+ | `glen forget <ref…>` / `glen restore <ref…>` | Forget (or restore) `observation:<id>` / `message:<id>` search sources. |
24
+ | `glen invite [email…] [--role member\|admin]` | Invite teammates by email, or print a shareable join link when no email is given. |
25
+ | `glen on` / `glen off` / `glen silent` | Set the account-wide mode: `on` injects context and records; `off` does neither; `silent` records but surfaces nothing. |
26
+ | `glen incognito [on\|off]` | Go off the record: recall keeps working, nothing is recorded. `glen incognito off` turns glen back on. |
27
+ | `glen suggestions <skill-create\|skill-use> <on\|off>` | Toggle glen's skill nudges account-wide. |
28
+ | `glen org list` | List your organizations; active one is marked with `✓`. |
29
+ | `glen org switch [slug]` | Switch the active organization for this machine (interactive picker without `slug`). |
30
+ | `glen skill search\|use\|create\|share` | Search, run, create, or share skills in the Glen skill library. |
31
+ | `glen artifact search\|get\|list\|create\|share\|delete` | Manage documents in your Glen artifact library. |
32
+ | `glen dependency search [query]` | Search the org dependency registry. |
33
+ | `glen bug <title>` / `glen feedback <title>` | Report a bug or send product feedback to the Glen team. |
34
+ | `glen git-hooks install` | Install glen's git hooks (`--absolute-git-hook-path` for GUI git clients). |
35
+ | `glen indicator start\|stop\|status` | macOS menu bar recording indicator. `stop` also opts out, so `glen doctor --auto` won't restart it. |
36
+ | `glen ingest [--agent <name>]` | Ingest a turn from stdin — used by agent hooks. |
37
+ | `glen pr-link [--agent <name>]` | Surface a Glen review link from a tool event — used by agent hooks. |
38
+ | `glen install [--agent <name>]` | Set up or update glen for detected coding agents (plugin + hooks); idempotent, so re-running repairs a broken setup. `--<agent>-path <path>` points at an agent's binary when auto-detection fails (see `glen install --help`). jcode has no plugin CLI — `--agent jcode` writes glen's hook lines into `~/.jcode/config.toml`, a managed block into `~/.jcode/prompt-overlay.md` and `preferred-tools.md`, and the skills into `~/.jcode/skills` (start a new jcode session afterwards). |
39
+ | `glen uninstall` | Permanently remove Glen's local plugins, marketplaces, hooks, PATH entries, credentials, state, caches, and global npm CLI. |
40
+ | `glen update` | Update the glen CLI **and** any installed glen plugins, and re-verify the Codex hook registration. Never installs a plugin that isn't already installed — that's `glen install`'s job. |
41
+ | `glen doctor [--auto]` | Print machine-readable `status:` lines (CLI version/latest/channel, login + org, per-agent plugin + hook state) plus `→` remedy lines — the setup skill branches on them. `--auto` runs background updates silently (used by hooks). |
42
+ | `glen statusline` | Output a single status line for the agent's UI status bar — used by hooks. |
43
+ | `glen session-start [--agent <name>]` | Output hook JSON for the agent's `SessionStart` event — used by hooks. |
44
+ | `glen version` | Print the CLI version. |
33
45
 
34
46
  ## Files
35
47
 
36
- | File | Description |
37
- | -------------------------- | --------------------------------------------------------------------------------------------------- |
38
- | `~/.glen/credentials.json` | API key credential — mode `0600`, never logged or sent to anyone but `tryglen.com`. |
39
- | `~/.glen/state.json` | Client-owned session state: `{ activeOrgId, activeOrgSlug, activeOrgName, incognito }`. Non-secret. |
48
+ | File | Description |
49
+ | --- | --- |
50
+ | `~/.glen/credentials.json` | API key credential — mode `0600`, never logged or sent to anyone but `tryglen.com`. |
51
+ | `~/.glen/state.json` | Client-owned session state: `{ activeOrgId, activeOrgSlug, activeOrgName, mode }`. Non-secret. |
40
52
 
41
- The state file is what the CLI sends as `x-glen-org-id` / `x-glen-incognito` headers on every request. The server validates org membership on every call — no state is stored server-side.
53
+ The CLI sends the active org as the `x-glen-org-id` header, plus `x-glen-incognito: true` when the mode is `incognito` or `off`. The server validates org membership on every call. The mode is stored on the server account-wide; `state.json` keeps a local copy.
42
54
 
43
55
  ## Transcript takeover
44
56
 
@@ -88,9 +100,9 @@ is addressed.
88
100
 
89
101
  The CLI uses layered silent auto-update so you stay current without thinking about it:
90
102
 
91
- 1. **Background TTL check (daily):** once per 24 hours, when installed via npm globally, the CLI spawns a detached `npm install -g @tryglen/cli@latest` process that doesn't block your turn. A `~/.glen/update-check.json` timestamp controls the cadence.
103
+ 1. **Background TTL check (hourly):** at most once per hour, when installed via npm globally, the CLI spawns a detached `npm install -g @tryglen/cli@latest` process that doesn't block your turn. A `~/.glen/update-check.json` timestamp controls the cadence.
92
104
  2. **SessionStart hook (`glen doctor --auto`):** on every agent session start, the hook also triggers background update + plugin upgrade hints. Same detached, non-blocking approach.
93
- 3. **Server-driven 426 floor:** if the server requires a newer CLI version (breaking API change), it responds with `HTTP 426 Upgrade Required`. The CLI then runs a synchronous self-update and re-execs your original command with `GLEN_REEXEC=1` set to prevent infinite loops. If the update fails or you are below the minimum after re-exec, it exits with a message to run `npm i -g @tryglen/cli@latest` manually.
105
+ 3. **Server-driven 426 floor:** if the server requires a newer CLI version (breaking API change), it responds with `HTTP 426 Upgrade Required`. The CLI then runs a synchronous self-update and re-execs your original command with `GLEN_REEXEC=1` set to prevent infinite loops. If the update fails or you are below the minimum after re-exec, it exits with a message to run `glen update` (or `npm i -g @tryglen/cli@latest`) manually.
94
106
 
95
107
  Escape hatches:
96
108
 
@@ -110,7 +122,7 @@ Run `glen org switch` (or `glen login` if you've never connected) to pick an org
110
122
  The server requires a newer CLI version. Run `npm i -g @tryglen/cli@latest` (or equivalent for your package manager) and retry.
111
123
 
112
124
  **Stuck update lock**
113
- If a previous update was interrupted, a stale lock can prevent future auto-updates:
125
+ If a previous update was interrupted, its lock blocks updates until it goes stale (10 minutes). To clear it right away:
114
126
 
115
127
  ```bash
116
128
  rm -rf ~/.glen/update.lock
@@ -5,18 +5,5 @@ type AdapterOutput = {
5
5
  readonly priorAssistant: string | null;
6
6
  readonly usesTranscript: boolean;
7
7
  };
8
- /**
9
- * Normalise a raw hook event into session fields, priorAssistant context, and
10
- * transcript usage flag — varying by agent type.
11
- *
12
- * - "codex": reads model/permission_mode/source + last_assistant_message
13
- * directly from the event (no transcript file).
14
- * - "pi": same event-carried shape as codex — the events are authored by
15
- * glen's own pi extension (packages/pi-plugin/extensions/glen.ts); pi's
16
- * session file is a pi-specific JSONL tree glen doesn't parse.
17
- * - "claude-code" and generic/unknown: uses parseTranscript for priorAssistant
18
- * and the user-message index (nextUserMessageIndex) that callers need for
19
- * idempotency key derivation.
20
- */
21
8
  declare const adaptAgentEvent: (agent: string | undefined, event: HookEvent, transcriptLines: readonly string[]) => AdapterOutput;
22
9
  export { adaptAgentEvent };
@@ -1,24 +1,7 @@
1
1
  import { parseTranscript } from "./parse-transcript.js";
2
- // Helper: coerce to a non-empty string or null.
3
2
  const str = (v) => typeof v === "string" && v ? v : null;
4
- /**
5
- * Normalise a raw hook event into session fields, priorAssistant context, and
6
- * transcript usage flag — varying by agent type.
7
- *
8
- * - "codex": reads model/permission_mode/source + last_assistant_message
9
- * directly from the event (no transcript file).
10
- * - "pi": same event-carried shape as codex — the events are authored by
11
- * glen's own pi extension (packages/pi-plugin/extensions/glen.ts); pi's
12
- * session file is a pi-specific JSONL tree glen doesn't parse.
13
- * - "claude-code" and generic/unknown: uses parseTranscript for priorAssistant
14
- * and the user-message index (nextUserMessageIndex) that callers need for
15
- * idempotency key derivation.
16
- */
17
3
  const adaptAgentEvent = (agent, event, transcriptLines) => {
18
4
  if (agent === "cursor") {
19
- // Cursor hooks carry no usable transcript; priorAssistant comes from the
20
- // local turn-cache (populated by afterAgentResponse) and is read by
21
- // ingest.ts, not here. Common payload fields carry the model.
22
5
  const fields = {};
23
6
  const model = str(event.model);
24
7
  if (model)
@@ -29,7 +12,7 @@ const adaptAgentEvent = (agent, event, transcriptLines) => {
29
12
  usesTranscript: false,
30
13
  };
31
14
  }
32
- if (agent === "codex" || agent === "pi") {
15
+ if (agent === "codex" || agent === "pi" || agent === "jcode") {
33
16
  const fields = {};
34
17
  const model = str(event.model);
35
18
  if (model)
@@ -48,7 +31,6 @@ const adaptAgentEvent = (agent, event, transcriptLines) => {
48
31
  usesTranscript: false,
49
32
  };
50
33
  }
51
- // claude-code and generic: use the transcript for priorAssistant + message index
52
34
  const { priorAssistant } = parseTranscript(transcriptLines);
53
35
  const fields = {};
54
36
  const permissionMode = str(event.permission_mode);
@@ -1 +1 @@
1
- {"version":3,"file":"agent-adapter.js","sourceRoot":"","sources":["../../src/_utils/agent-adapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAaxD,gDAAgD;AAChD,MAAM,GAAG,GAAG,CAAC,CAAU,EAAiB,EAAE,CACxC,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AAExC;;;;;;;;;;;;GAYG;AACH,MAAM,eAAe,GAAG,CACtB,KAAyB,EACzB,KAAgB,EAChB,eAAkC,EACnB,EAAE;IACjB,IAAI,KAAK,KAAK,QAAQ,EAAE,CAAC;QACvB,yEAAyE;QACzE,oEAAoE;QACpE,8DAA8D;QAC9D,MAAM,MAAM,GAAkB,EAAE,CAAC;QACjC,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAC/B,IAAI,KAAK;YAAE,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC;QAChC,OAAO;YACL,aAAa,EAAE,MAAM;YACrB,cAAc,EAAE,IAAI;YACpB,cAAc,EAAE,KAAK;SACtB,CAAC;IACJ,CAAC;IAED,IAAI,KAAK,KAAK,OAAO,IAAI,KAAK,KAAK,IAAI,EAAE,CAAC;QACxC,MAAM,MAAM,GAAkB,EAAE,CAAC;QACjC,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAC/B,IAAI,KAAK;YAAE,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC;QAChC,MAAM,cAAc,GAAG,GAAG,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;QAClD,IAAI,cAAc;YAAE,MAAM,CAAC,cAAc,GAAG,cAAc,CAAC;QAC3D,MAAM,MAAM,GAAG,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QACjC,IAAI,MAAM;YAAE,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC;QACnC,OAAO;YACL,aAAa,EAAE,MAAM;YACrB,cAAc,EACZ,OAAO,KAAK,CAAC,sBAAsB,KAAK,QAAQ;gBAC9C,CAAC,CAAC,KAAK,CAAC,sBAAsB;gBAC9B,CAAC,CAAC,IAAI;YACV,cAAc,EAAE,KAAK;SACtB,CAAC;IACJ,CAAC;IAED,iFAAiF;IACjF,MAAM,EAAE,cAAc,EAAE,GAAG,eAAe,CAAC,eAAe,CAAC,CAAC;IAC5D,MAAM,MAAM,GAAkB,EAAE,CAAC;IACjC,MAAM,cAAc,GAAG,GAAG,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;IAClD,IAAI,cAAc;QAAE,MAAM,CAAC,cAAc,GAAG,cAAc,CAAC;IAC3D,MAAM,MAAM,GAAG,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IACjC,IAAI,MAAM;QAAE,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC;IACnC,OAAO;QACL,aAAa,EAAE,MAAM;QACrB,cAAc;QACd,cAAc,EAAE,IAAI;KACrB,CAAC;AACJ,CAAC,CAAC;AAEF,OAAO,EAAE,eAAe,EAAE,CAAC"}
1
+ {"version":3,"file":"agent-adapter.js","sourceRoot":"","sources":["../../src/_utils/agent-adapter.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAUxD,MAAM,GAAG,GAAG,CAAC,CAAU,EAAiB,EAAE,CACxC,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;AAExC,MAAM,eAAe,GAAG,CACtB,KAAyB,EACzB,KAAgB,EAChB,eAAkC,EACnB,EAAE;IACjB,IAAI,KAAK,KAAK,QAAQ,EAAE,CAAC;QACvB,MAAM,MAAM,GAAkB,EAAE,CAAC;QACjC,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAC/B,IAAI,KAAK;YAAE,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC;QAChC,OAAO;YACL,aAAa,EAAE,MAAM;YACrB,cAAc,EAAE,IAAI;YACpB,cAAc,EAAE,KAAK;SACtB,CAAC;IACJ,CAAC;IAED,IAAI,KAAK,KAAK,OAAO,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,OAAO,EAAE,CAAC;QAC7D,MAAM,MAAM,GAAkB,EAAE,CAAC;QACjC,MAAM,KAAK,GAAG,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAC/B,IAAI,KAAK;YAAE,MAAM,CAAC,KAAK,GAAG,KAAK,CAAC;QAChC,MAAM,cAAc,GAAG,GAAG,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;QAClD,IAAI,cAAc;YAAE,MAAM,CAAC,cAAc,GAAG,cAAc,CAAC;QAC3D,MAAM,MAAM,GAAG,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QACjC,IAAI,MAAM;YAAE,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC;QACnC,OAAO;YACL,aAAa,EAAE,MAAM;YACrB,cAAc,EACZ,OAAO,KAAK,CAAC,sBAAsB,KAAK,QAAQ;gBAC9C,CAAC,CAAC,KAAK,CAAC,sBAAsB;gBAC9B,CAAC,CAAC,IAAI;YACV,cAAc,EAAE,KAAK;SACtB,CAAC;IACJ,CAAC;IAED,MAAM,EAAE,cAAc,EAAE,GAAG,eAAe,CAAC,eAAe,CAAC,CAAC;IAC5D,MAAM,MAAM,GAAkB,EAAE,CAAC;IACjC,MAAM,cAAc,GAAG,GAAG,CAAC,KAAK,CAAC,eAAe,CAAC,CAAC;IAClD,IAAI,cAAc;QAAE,MAAM,CAAC,cAAc,GAAG,cAAc,CAAC;IAC3D,MAAM,MAAM,GAAG,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IACjC,IAAI,MAAM;QAAE,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC;IACnC,OAAO;QACL,aAAa,EAAE,MAAM;QACrB,cAAc;QACd,cAAc,EAAE,IAAI;KACrB,CAAC;AACJ,CAAC,CAAC;AAEF,OAAO,EAAE,eAAe,EAAE,CAAC"}
@@ -1,12 +1,4 @@
1
- // ---------------------------------------------------------------------------
2
- // AGENTS table — steps arrays drive the install sequence; updateSteps run
3
- // instead when the glen plugin is already installed (converge semantics).
4
- // Steps are run sequentially; a failed step (e.g. `marketplace add` already
5
- // exists) must NOT block the following steps.
6
- // ---------------------------------------------------------------------------
7
- // Pi has no marketplace — its package manager installs straight from the dist
8
- // repo. One source string, shared by install/update/doctor/uninstall so the
9
- // registration and its converge/removal steps can never drift.
1
+ // Steps run in order; a failed step (e.g. marketplace already added) must not block the rest.
10
2
  const PI_PLUGIN_SOURCE = "git:github.com/Glen-Web-App/glen-pi-plugin";
11
3
  const AGENTS = [
12
4
  {
@@ -1 +1 @@
1
- {"version":3,"file":"agents-table.js","sourceRoot":"","sources":["../../src/_utils/agents-table.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,0EAA0E;AAC1E,0EAA0E;AAC1E,4EAA4E;AAC5E,8CAA8C;AAC9C,8EAA8E;AAC9E,8EAA8E;AAC9E,4EAA4E;AAC5E,+DAA+D;AAC/D,MAAM,gBAAgB,GAAG,4CAA4C,CAAC;AAUtE,MAAM,MAAM,GAAqB;IAC/B;QACE,IAAI,EAAE,aAAa;QACnB,GAAG,EAAE,QAAQ;QACb,KAAK,EAAE;YACL,CAAC,QAAQ,EAAE,aAAa,EAAE,KAAK,EAAE,sCAAsC,CAAC;YACxE,CAAC,QAAQ,EAAE,SAAS,EAAE,WAAW,CAAC;SACnC;QACD,WAAW,EAAE,CAAC,CAAC,QAAQ,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC;QAChD,WAAW,EAAE,QAAQ;KACtB;IACD;QACE,IAAI,EAAE,OAAO;QACb,GAAG,EAAE,OAAO;QACZ,KAAK,EAAE;YACL,CAAC,QAAQ,EAAE,aAAa,EAAE,KAAK,EAAE,gCAAgC,CAAC;YAClE,qEAAqE;YACrE,4DAA4D;YAC5D,CAAC,QAAQ,EAAE,KAAK,EAAE,WAAW,CAAC;SAC/B;QACD,WAAW,EAAE,CAAC,CAAC,QAAQ,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;QAC3D,WAAW,EAAE,OAAO;KACrB;IACD;QACE,IAAI,EAAE,IAAI;QACV,GAAG,EAAE,IAAI;QACT,KAAK,EAAE,CAAC,CAAC,SAAS,EAAE,gBAAgB,CAAC,CAAC;QACtC,WAAW,EAAE,CAAC,CAAC,QAAQ,EAAE,gBAAgB,CAAC,CAAC;QAC3C,WAAW,EAAE,IAAI;KAClB;CACF,CAAC;AAEF,OAAO,EAAE,MAAM,EAAE,gBAAgB,EAAE,CAAC"}
1
+ {"version":3,"file":"agents-table.js","sourceRoot":"","sources":["../../src/_utils/agents-table.ts"],"names":[],"mappings":"AAAA,8FAA8F;AAC9F,MAAM,gBAAgB,GAAG,4CAA4C,CAAC;AAUtE,MAAM,MAAM,GAAqB;IAC/B;QACE,IAAI,EAAE,aAAa;QACnB,GAAG,EAAE,QAAQ;QACb,KAAK,EAAE;YACL,CAAC,QAAQ,EAAE,aAAa,EAAE,KAAK,EAAE,sCAAsC,CAAC;YACxE,CAAC,QAAQ,EAAE,SAAS,EAAE,WAAW,CAAC;SACnC;QACD,WAAW,EAAE,CAAC,CAAC,QAAQ,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC;QAChD,WAAW,EAAE,QAAQ;KACtB;IACD;QACE,IAAI,EAAE,OAAO;QACb,GAAG,EAAE,OAAO;QACZ,KAAK,EAAE;YACL,CAAC,QAAQ,EAAE,aAAa,EAAE,KAAK,EAAE,gCAAgC,CAAC;YAClE,qEAAqE;YACrE,4DAA4D;YAC5D,CAAC,QAAQ,EAAE,KAAK,EAAE,WAAW,CAAC;SAC/B;QACD,WAAW,EAAE,CAAC,CAAC,QAAQ,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,CAAC,CAAC;QAC3D,WAAW,EAAE,OAAO;KACrB;IACD;QACE,IAAI,EAAE,IAAI;QACV,GAAG,EAAE,IAAI;QACT,KAAK,EAAE,CAAC,CAAC,SAAS,EAAE,gBAAgB,CAAC,CAAC;QACtC,WAAW,EAAE,CAAC,CAAC,QAAQ,EAAE,gBAAgB,CAAC,CAAC;QAC3C,WAAW,EAAE,IAAI;KAClB;CACF,CAAC;AAEF,OAAO,EAAE,MAAM,EAAE,gBAAgB,EAAE,CAAC"}
@@ -1,7 +1,4 @@
1
- // Identity constructor — exists so call sites read as cliErr({...}) and the
2
- // contract scan can distinguish structured errors from raw strings.
3
1
  const cliErr = (e) => e;
4
- // Best-effort root-cause string from an unknown caught value.
5
2
  const causeOf = (e) => {
6
3
  if (typeof e === "string" && e.length > 0)
7
4
  return e;
@@ -1 +1 @@
1
- {"version":3,"file":"cli-error.js","sourceRoot":"","sources":["../../src/_utils/cli-error.ts"],"names":[],"mappings":"AAaA,4EAA4E;AAC5E,oEAAoE;AACpE,MAAM,MAAM,GAAG,CAAC,CAAW,EAAY,EAAE,CAAC,CAAC,CAAC;AAE5C,8DAA8D;AAC9D,MAAM,OAAO,GAAG,CAAC,CAAU,EAAU,EAAE;IACrC,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,CAAC,CAAC;IACpD,IAAI,CAAC,YAAY,KAAK,EAAE,CAAC;QACvB,MAAM,IAAI,GAAI,CAA2B,CAAC,IAAI,CAAC;QAC/C,OAAO,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;IACpD,CAAC;IACD,OAAO,eAAe,CAAC;AACzB,CAAC,CAAC;AAEF,MAAM,cAAc,GAAG,CAAC,CAAW,EAAU,EAAE;IAC7C,MAAM,KAAK,GAAG,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;IAC9B,IAAI,CAAC,CAAC,GAAG;QAAE,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;IAC3C,IAAI,CAAC,CAAC,IAAI;QAAE,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;IAC7C,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;IAC9B,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;AACjC,CAAC,CAAC;AAEF,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,EAAE,CAAC"}
1
+ {"version":3,"file":"cli-error.js","sourceRoot":"","sources":["../../src/_utils/cli-error.ts"],"names":[],"mappings":"AAQA,MAAM,MAAM,GAAG,CAAC,CAAW,EAAY,EAAE,CAAC,CAAC,CAAC;AAE5C,MAAM,OAAO,GAAG,CAAC,CAAU,EAAU,EAAE;IACrC,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC;QAAE,OAAO,CAAC,CAAC;IACpD,IAAI,CAAC,YAAY,KAAK,EAAE,CAAC;QACvB,MAAM,IAAI,GAAI,CAA2B,CAAC,IAAI,CAAC;QAC/C,OAAO,IAAI,CAAC,CAAC,CAAC,GAAG,IAAI,KAAK,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;IACpD,CAAC;IACD,OAAO,eAAe,CAAC;AACzB,CAAC,CAAC;AAEF,MAAM,cAAc,GAAG,CAAC,CAAW,EAAU,EAAE;IAC7C,MAAM,KAAK,GAAG,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;IAC9B,IAAI,CAAC,CAAC,GAAG;QAAE,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;IAC3C,IAAI,CAAC,CAAC,IAAI;QAAE,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;IAC7C,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;IAC9B,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;AACjC,CAAC,CAAC;AAEF,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,cAAc,EAAE,CAAC"}
@@ -31,8 +31,6 @@ const extractEntries = (msg) => {
31
31
  };
32
32
  const rpc = (id, method, params) => `${JSON.stringify({ jsonrpc: "2.0", id, method, params })}\n`;
33
33
  const listCodexHooks = (cwd) => new Promise((resolve) => {
34
- // Resolve via findBin so users whose codex lives off this process's PATH
35
- // (well-known dirs, login-shell PATH, --codex-path override) still work.
36
34
  const child = spawn(findBin("codex") ?? "codex", ["app-server"], {
37
35
  stdio: ["pipe", "pipe", "ignore"],
38
36
  });
@@ -1 +1 @@
1
- {"version":3,"file":"codex-app-server.js","sourceRoot":"","sources":["../../src/_utils/codex-app-server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"codex-app-server.js","sourceRoot":"","sources":["../../src/_utils/codex-app-server.ts"],"names":[],"mappings":"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"}
@@ -6,24 +6,15 @@ const GLEN_CODEX_HOOK_ENTRIES = {
6
6
  Stop: "glen ingest --agent codex",
7
7
  PostToolUse: "glen pr-link --agent codex",
8
8
  };
9
- // Events that must scope to a tool. PostToolUse matches Bash so the hook only
10
- // fires after shell commands (where `gh pr create` prints the PR URL).
11
9
  const GLEN_CODEX_HOOK_MATCHERS = {
12
10
  PostToolUse: "Bash",
13
11
  };
14
- // Owner marker: any handler whose command starts with "glen " is ours.
15
- // Our commands are bare global-CLI invocations (no absolute paths), so this
16
- // prefix is stable across machines and versions.
17
12
  const GLEN_OWNER_PREFIX = "glen ";
18
13
  const isGlenHandler = (h) => typeof h.command === "string" &&
19
14
  h.command.trimStart().startsWith(GLEN_OWNER_PREFIX);
20
15
  const isMatcherGroup = (g) => typeof g === "object" &&
21
16
  g !== null &&
22
17
  Array.isArray(g.hooks);
23
- // Accepts Codex's wrapped form {"hooks": {...}} and the legacy root-level
24
- // form (events at the JSON root — older supermemory versions wrote this).
25
- // Returns null for anything that doesn't look like a hooks file (caller
26
- // backs the file up and starts fresh).
27
18
  const normalizeHooksFile = (parsed) => {
28
19
  if (typeof parsed !== "object" || parsed === null || Array.isArray(parsed)) {
29
20
  return null;
@@ -53,8 +44,6 @@ const stripGlenHooks = (file) => {
53
44
  }
54
45
  return { hooks: events };
55
46
  };
56
- // Idempotent strip-and-replace: remove any glen-owned entries, then append
57
- // the canonical ones. Other tools' groups are preserved verbatim.
58
47
  const withGlenHooks = (file) => {
59
48
  const base = stripGlenHooks(file);
60
49
  const events = { ...base.hooks };
@@ -1 +1 @@
1
- {"version":3,"file":"codex-hooks-merge.js","sourceRoot":"","sources":["../../src/_utils/codex-hooks-merge.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"codex-hooks-merge.js","sourceRoot":"","sources":["../../src/_utils/codex-hooks-merge.ts"],"names":[],"mappings":"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"}
@@ -7,9 +7,6 @@ import { removeTrustBlocks, upsertTrustBlocks } from "./codex-trust-toml.js";
7
7
  import { installReceipt } from "./install-receipt.js";
8
8
  import { err, fromPromise, ok } from "./result.js";
9
9
  import { statePath } from "./state.js";
10
- // Marker recording that THIS machine opted into glen's codex hooks (gates
11
- // doctor --auto self-repair so Claude-only users never get codex config
12
- // written). Lives next to state.json so GLEN_STATE_PATH overrides cover it.
13
10
  const markerPath = () => join(dirname(statePath()), "codex-hooks-installed.json");
14
11
  const parseJson = (raw) => {
15
12
  try {
@@ -19,8 +16,6 @@ const parseJson = (raw) => {
19
16
  return null;
20
17
  }
21
18
  };
22
- // Reads the marker, tolerating the legacy `{installedAt}` payload (no
23
- // trustedKeys) — null means "not installed on this machine".
24
19
  const readMarker = async () => {
25
20
  const raw = await fromPromise(readFile(markerPath(), "utf-8"));
26
21
  if (!raw.ok)
@@ -36,17 +31,12 @@ const atomicWrite = async (filePath, content) => {
36
31
  const mk = await fromPromise(mkdir(dirname(filePath), { recursive: true }));
37
32
  if (!mk.ok)
38
33
  return mk;
39
- // pid suffix: interactive install and the detached doctor repair may race.
40
34
  const tmp = `${filePath}.${process.pid}.tmp`;
41
35
  const w = await fromPromise(writeFile(tmp, content));
42
36
  if (!w.ok)
43
37
  return w;
44
38
  return fromPromise(rename(tmp, filePath));
45
39
  };
46
- // Reads + normalizes the existing hooks.json. `absent` distinguishes a
47
- // missing file from an empty one. Unparseable → backed up during install
48
- // (never clobber another tool's data silently) and treated as empty;
49
- // uninstall passes backupOnUnparseable=false and skips the rewrite instead.
50
40
  const readExistingHooks = async (backupOnUnparseable, hooksPath = codexHooksJsonPath()) => {
51
41
  const raw = await fromPromise(readFile(hooksPath, "utf-8"));
52
42
  if (!raw.ok)
@@ -66,8 +56,6 @@ const glenEntriesFrom = (entries) => entries
66
56
  .filter((e) => e.source === "user" &&
67
57
  e.command.trimStart().startsWith(GLEN_OWNER_PREFIX))
68
58
  .map((e) => ({ key: e.key, hash: e.currentHash }));
69
- // Write trust blocks for glen's user-layer hooks. Returns the keys written
70
- // (empty array = trust step failed; install still counts, manual fallback).
71
59
  const trustGlenHooks = async () => {
72
60
  const listed = await listCodexHooks(process.cwd());
73
61
  if (!listed.ok)
@@ -110,8 +98,6 @@ const installCodexHooks = async () => {
110
98
  backedUp: existing.value.backedUp,
111
99
  });
112
100
  };
113
- // Removes glen's trust blocks from config.toml (no-op when the file is
114
- // unreadable or there is nothing to remove).
115
101
  const removeGlenTrustBlocks = async (keys, tomlPath = codexConfigTomlPath(), deleteIfEmpty = false) => {
116
102
  if (keys.length === 0)
117
103
  return ok(undefined);
@@ -133,8 +119,6 @@ const uninstallCodexHooks = async (snapshot) => {
133
119
  const existing = await readExistingHooks(false, hooksPath);
134
120
  if (!existing.ok)
135
121
  return existing;
136
- // Clean machine (no hooks.json): never touch ~/.codex or spawn the
137
- // app-server — only remove marker-recorded trust blocks if any.
138
122
  if (existing.value.absent) {
139
123
  const t = await removeGlenTrustBlocks(marker?.trustedKeys ?? [], configPath, snapshot?.configExisted === false);
140
124
  if (!t.ok)
@@ -149,8 +133,6 @@ const uninstallCodexHooks = async (snapshot) => {
149
133
  ? glenEntriesFrom(listed.value).map((e) => e.key)
150
134
  : [];
151
135
  const keys = [...new Set([...(marker?.trustedKeys ?? []), ...liveKeys])];
152
- // Unparseable hooks.json (backedUp under backupOnUnparseable=false means
153
- // "skip") → leave it alone; still clean up trust blocks + marker.
154
136
  if (!existing.value.backedUp) {
155
137
  const stripped = stripGlenHooks(existing.value.file);
156
138
  if (snapshot?.hooksExisted === false &&
@@ -1 +1 @@
1
- {"version":3,"file":"codex-hooks-setup.js","sourceRoot":"","sources":["../../src/_utils/codex-hooks-setup.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"codex-hooks-setup.js","sourceRoot":"","sources":["../../src/_utils/codex-hooks-setup.ts"],"names":[],"mappings":"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"}
@@ -1,8 +1,5 @@
1
1
  import { homedir } from "node:os";
2
2
  import { join } from "node:path";
3
- // CODEX_HOME is Codex's own override for its config dir — honoring it means
4
- // tests AND the CI smoke sandbox the same way Codex does. An empty string is
5
- // treated as unset (|| not ??) so it can't yield relative paths.
6
3
  const codexHome = () => process.env.CODEX_HOME || join(homedir(), ".codex");
7
4
  const codexHooksJsonPath = () => join(codexHome(), "hooks.json");
8
5
  const codexConfigTomlPath = () => join(codexHome(), "config.toml");
@@ -1 +1 @@
1
- {"version":3,"file":"codex-paths.js","sourceRoot":"","sources":["../../src/_utils/codex-paths.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,4EAA4E;AAC5E,6EAA6E;AAC7E,iEAAiE;AACjE,MAAM,SAAS,GAAG,GAAW,EAAE,CAC7B,OAAO,CAAC,GAAG,CAAC,UAAU,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE,QAAQ,CAAC,CAAC;AAEtD,MAAM,kBAAkB,GAAG,GAAW,EAAE,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,YAAY,CAAC,CAAC;AAEzE,MAAM,mBAAmB,GAAG,GAAW,EAAE,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,aAAa,CAAC,CAAC;AAE3E,OAAO,EAAE,SAAS,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,CAAC"}
1
+ {"version":3,"file":"codex-paths.js","sourceRoot":"","sources":["../../src/_utils/codex-paths.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,MAAM,SAAS,GAAG,GAAW,EAAE,CAC7B,OAAO,CAAC,GAAG,CAAC,UAAU,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE,QAAQ,CAAC,CAAC;AAEtD,MAAM,kBAAkB,GAAG,GAAW,EAAE,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,YAAY,CAAC,CAAC;AAEzE,MAAM,mBAAmB,GAAG,GAAW,EAAE,CAAC,IAAI,CAAC,SAAS,EAAE,EAAE,aAAa,CAAC,CAAC;AAE3E,OAAO,EAAE,SAAS,EAAE,kBAAkB,EAAE,mBAAmB,EAAE,CAAC"}
@@ -1,6 +1,3 @@
1
- // Best-effort trace of the last detached codex-hooks repair, surfaced by
2
- // `glen doctor` (the repair child runs with stdio ignored — this file is
3
- // its only observable output). Lives next to state.json.
4
1
  import { mkdir, readFile, writeFile } from "node:fs/promises";
5
2
  import { dirname, join } from "node:path";
6
3
  import { fromPromise } from "./result.js";
@@ -1 +1 @@
1
- {"version":3,"file":"codex-repair-trace.js","sourceRoot":"","sources":["../../src/_utils/codex-repair-trace.ts"],"names":[],"mappings":"AAAA,yEAAyE;AACzE,yEAAyE;AACzE,yDAAyD;AACzD,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC9D,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAQvC,MAAM,SAAS,GAAG,GAAW,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC,EAAE,mBAAmB,CAAC,CAAC;AAEhF,MAAM,gBAAgB,GAAG,KAAK,EAAE,OAG/B,EAAiB,EAAE;IAClB,MAAM,KAAK,GAAgB;QACzB,EAAE,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QAC5B,EAAE,EAAE,OAAO,CAAC,EAAE;QACd,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACnD,CAAC;IACF,MAAM,EAAE,GAAG,MAAM,WAAW,CAC1B,KAAK,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CACjD,CAAC;IACF,IAAI,CAAC,EAAE,CAAC,EAAE;QAAE,OAAO;IACnB,MAAM,WAAW,CACf,SAAS,CAAC,SAAS,EAAE,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAC9D,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,eAAe,GAAG,KAAK,IAAiC,EAAE;IAC9D,MAAM,GAAG,GAAG,MAAM,WAAW,CAAC,QAAQ,CAAC,SAAS,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC;IAC9D,IAAI,CAAC,GAAG,CAAC,EAAE;QAAE,OAAO,IAAI,CAAC;IACzB,MAAM,MAAM,GAAG,CAAC,GAAY,EAAE;QAC5B,IAAI,CAAC;YACH,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAY,CAAC;QAC1C,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC,CAAC,EAAE,CAAC;IACL,MAAM,CAAC,GAAG,MAAwC,CAAC;IACnD,IAAI,CAAC,CAAC,IAAI,OAAO,CAAC,CAAC,EAAE,KAAK,QAAQ,IAAI,OAAO,CAAC,CAAC,EAAE,KAAK,SAAS;QAAE,OAAO,IAAI,CAAC;IAC7E,OAAO;QACL,EAAE,EAAE,CAAC,CAAC,EAAE;QACR,EAAE,EAAE,CAAC,CAAC,EAAE;QACR,GAAG,CAAC,OAAO,CAAC,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC3D,CAAC;AACJ,CAAC,CAAC;AAEF,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,CAAC"}
1
+ {"version":3,"file":"codex-repair-trace.js","sourceRoot":"","sources":["../../src/_utils/codex-repair-trace.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC9D,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAC1C,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAQvC,MAAM,SAAS,GAAG,GAAW,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC,EAAE,mBAAmB,CAAC,CAAC;AAEhF,MAAM,gBAAgB,GAAG,KAAK,EAAE,OAG/B,EAAiB,EAAE;IAClB,MAAM,KAAK,GAAgB;QACzB,EAAE,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QAC5B,EAAE,EAAE,OAAO,CAAC,EAAE;QACd,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACnD,CAAC;IACF,MAAM,EAAE,GAAG,MAAM,WAAW,CAC1B,KAAK,CAAC,OAAO,CAAC,SAAS,EAAE,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CACjD,CAAC;IACF,IAAI,CAAC,EAAE,CAAC,EAAE;QAAE,OAAO;IACnB,MAAM,WAAW,CACf,SAAS,CAAC,SAAS,EAAE,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAC9D,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,eAAe,GAAG,KAAK,IAAiC,EAAE;IAC9D,MAAM,GAAG,GAAG,MAAM,WAAW,CAAC,QAAQ,CAAC,SAAS,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC;IAC9D,IAAI,CAAC,GAAG,CAAC,EAAE;QAAE,OAAO,IAAI,CAAC;IACzB,MAAM,MAAM,GAAG,CAAC,GAAY,EAAE;QAC5B,IAAI,CAAC;YACH,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAY,CAAC;QAC1C,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC,CAAC,EAAE,CAAC;IACL,MAAM,CAAC,GAAG,MAAwC,CAAC;IACnD,IAAI,CAAC,CAAC,IAAI,OAAO,CAAC,CAAC,EAAE,KAAK,QAAQ,IAAI,OAAO,CAAC,CAAC,EAAE,KAAK,SAAS;QAAE,OAAO,IAAI,CAAC;IAC7E,OAAO;QACL,EAAE,EAAE,CAAC,CAAC,EAAE;QACR,EAAE,EAAE,CAAC,CAAC,EAAE;QACR,GAAG,CAAC,OAAO,CAAC,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC3D,CAAC;AACJ,CAAC,CAAC;AAEF,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,CAAC"}
@@ -1,14 +1,6 @@
1
- // Surgical, line-based editing of Codex's user config.toml [hooks.state]
2
- // trust blocks. We deliberately do NOT parse/re-stringify the whole file —
3
- // that would destroy the user's comments and formatting. A block is the
4
- // exact header line `[hooks.state."<key>"]` plus every line until the next
5
- // `[` table header. Keys come verbatim from `codex app-server` hooks/list.
1
+ // Line-based edits on purpose: parsing and re-stringifying the file would destroy the user's comments and formatting.
6
2
  const escapeKey = (key) => key.replace(/\\/g, "\\\\").replace(/"/g, '\\"');
7
3
  const headerFor = (key) => `[hooks.state."${escapeKey(key)}"]`;
8
- // Matches [hooks.state."<key>"] with optional whitespace, single- or
9
- // double-quoted key, and an optional trailing comment. Codex itself writes
10
- // the canonical tight form; the tolerance is cheap insurance against
11
- // alternate-but-valid spellings.
12
4
  const HEADER_RE = /^\s*\[\s*hooks\.state\s*\.\s*(?:"((?:[^"\\]|\\.)*)"|'([^']*)')\s*\]\s*(?:#.*)?$/;
13
5
  const unescapeKey = (raw) => raw.replace(/\\"/g, '"').replace(/\\\\/g, "\\");
14
6
  const headerKeyOf = (line) => {
@@ -1 +1 @@
1
- {"version":3,"file":"codex-trust-toml.js","sourceRoot":"","sources":["../../src/_utils/codex-trust-toml.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"codex-trust-toml.js","sourceRoot":"","sources":["../../src/_utils/codex-trust-toml.ts"],"names":[],"mappings":"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"}
@@ -2,10 +2,6 @@ import { readdir, stat } from "node:fs/promises";
2
2
  import { basename, join } from "node:path";
3
3
  import { causeOf, cliErr } from "./cli-error.js";
4
4
  import { err, ok } from "./result.js";
5
- // A file is an import candidate if it looks like a transcript container:
6
- // Claude Code / Codex session JSONL, or a Cursor SQLite store. Claude Code
7
- // subagent sidechains (<session>/subagents/agent-*.jsonl) are skipped — they
8
- // are internal tool chatter, not the user's conversation.
9
5
  const isCandidate = (path) => !path.split(/[\\/]/).includes("subagents") &&
10
6
  (path.endsWith(".jsonl") ||
11
7
  path.endsWith(".vscdb") ||
@@ -20,9 +16,6 @@ const walk = async (dir) => {
20
16
  }));
21
17
  return nested.flat();
22
18
  };
23
- // Expand the user-supplied paths into concrete transcript files. A directory
24
- // is scanned recursively for candidates; an explicitly named file is always
25
- // kept (the user pointed at it — let format detection decide what it is).
26
19
  const collectImportFiles = async (paths) => {
27
20
  const collected = await Promise.all(paths.map(async (path) => {
28
21
  const info = await (async () => {
@@ -1 +1 @@
1
- {"version":3,"file":"collect-import-files.js","sourceRoot":"","sources":["../../src/_utils/collect-import-files.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"collect-import-files.js","sourceRoot":"","sources":["../../src/_utils/collect-import-files.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,3 @@
1
- // Strip trailing slashes so a GLEN_BASE_URL like "https://x.test/" doesn't
2
- // produce double-slash endpoint URLs ("https://x.test//api/…").
3
1
  const baseUrl = (process.env.GLEN_BASE_URL ?? "https://app.tryglen.com").replace(/\/+$/, "");
4
2
  const config = {
5
3
  baseUrl,
@@ -38,9 +36,7 @@ const config = {
38
36
  forgetTimeoutMs: 15_000,
39
37
  listOrgsTimeoutMs: 15_000,
40
38
  commitAnchorTimeoutMs: 3000,
41
- // Longer than search: the server runs a scoped LLM ranking AND renders transcripts.
42
39
  codeSearchTimeoutMs: 30_000,
43
- // Per-turn write; generous because imported turns can carry near-cap content.
44
40
  importTimeoutMs: 15_000,
45
41
  takeoverTimeoutMs: 30_000,
46
42
  setRecordingTimeoutMs: 10_000,
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/_utils/config.ts"],"names":[],"mappings":"AAAA,2EAA2E;AAC3E,gEAAgE;AAChE,MAAM,OAAO,GAAG,CACd,OAAO,CAAC,GAAG,CAAC,aAAa,IAAI,yBAAyB,CACvD,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;AAEtB,MAAM,MAAM,GAAG;IACb,OAAO;IACP,cAAc,EAAE,GAAG,OAAO,yBAAyB;IACnD,cAAc,EAAE,GAAG,OAAO,+BAA+B;IACzD,OAAO,EAAE,GAAG,OAAO,qBAAqB;IACxC,SAAS,EAAE,GAAG,OAAO,uBAAuB;IAC5C,SAAS,EAAE,GAAG,OAAO,uBAAuB;IAC5C,UAAU,EAAE,GAAG,OAAO,wBAAwB;IAC9C,SAAS,EAAE,GAAG,OAAO,6BAA6B;IAClD,WAAW,EAAE,GAAG,OAAO,yBAAyB;IAChD,cAAc,EAAE,GAAG,OAAO,4BAA4B;IACtD,WAAW,EAAE,GAAG,OAAO,yBAAyB;IAChD,cAAc,EAAE,GAAG,OAAO,4BAA4B;IACtD,aAAa,EAAE,GAAG,OAAO,2BAA2B;IACpD,mBAAmB,EAAE,GAAG,OAAO,iCAAiC;IAChE,iBAAiB,EAAE,GAAG,OAAO,+BAA+B;IAC5D,cAAc,EAAE,GAAG,OAAO,4BAA4B;IACtD,iBAAiB,EAAE,GAAG,OAAO,+BAA+B;IAC5D,iBAAiB,EAAE,GAAG,OAAO,+BAA+B;IAC5D,gBAAgB,EAAE,GAAG,OAAO,8BAA8B;IAC1D,eAAe,EAAE,GAAG,OAAO,6BAA6B;IACxD,aAAa,EAAE,GAAG,OAAO,2BAA2B;IACpD,SAAS,EAAE,GAAG,OAAO,iCAAiC;IACtD,kBAAkB,EAAE,GAAG,OAAO,gCAAgC;IAC9D,mBAAmB,EAAE,GAAG,OAAO,iCAAiC;IAChE,eAAe,EAAE,GAAG,OAAO,6BAA6B;IACxD,iBAAiB,EAAE,GAAG,OAAO,+BAA+B;IAC5D,gBAAgB,EAAE,GAAG,OAAO,8BAA8B;IAC1D,iBAAiB,EAAE,GAAG,OAAO,+BAA+B;IAC5D,kBAAkB,EAAE,GAAG,OAAO,gCAAgC;IAC9D,mBAAmB,EAAE,GAAG,OAAO,iCAAiC;IAChE,eAAe,EAAE,GAAG,OAAO,6BAA6B;IACxD,eAAe,EAAE,IAAI;IACrB,eAAe,EAAE,MAAM;IACvB,eAAe,EAAE,MAAM;IACvB,iBAAiB,EAAE,MAAM;IACzB,qBAAqB,EAAE,IAAI;IAC3B,oFAAoF;IACpF,mBAAmB,EAAE,MAAM;IAC3B,8EAA8E;IAC9E,eAAe,EAAE,MAAM;IACvB,iBAAiB,EAAE,MAAM;IACzB,qBAAqB,EAAE,MAAM;IAC7B,uBAAuB,EAAE,MAAM;IAC/B,sBAAsB,EAAE,IAAI;CAC7B,CAAC;AAEF,OAAO,EAAE,MAAM,EAAE,CAAC"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/_utils/config.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,GAAG,CACd,OAAO,CAAC,GAAG,CAAC,aAAa,IAAI,yBAAyB,CACvD,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;AAEtB,MAAM,MAAM,GAAG;IACb,OAAO;IACP,cAAc,EAAE,GAAG,OAAO,yBAAyB;IACnD,cAAc,EAAE,GAAG,OAAO,+BAA+B;IACzD,OAAO,EAAE,GAAG,OAAO,qBAAqB;IACxC,SAAS,EAAE,GAAG,OAAO,uBAAuB;IAC5C,SAAS,EAAE,GAAG,OAAO,uBAAuB;IAC5C,UAAU,EAAE,GAAG,OAAO,wBAAwB;IAC9C,SAAS,EAAE,GAAG,OAAO,6BAA6B;IAClD,WAAW,EAAE,GAAG,OAAO,yBAAyB;IAChD,cAAc,EAAE,GAAG,OAAO,4BAA4B;IACtD,WAAW,EAAE,GAAG,OAAO,yBAAyB;IAChD,cAAc,EAAE,GAAG,OAAO,4BAA4B;IACtD,aAAa,EAAE,GAAG,OAAO,2BAA2B;IACpD,mBAAmB,EAAE,GAAG,OAAO,iCAAiC;IAChE,iBAAiB,EAAE,GAAG,OAAO,+BAA+B;IAC5D,cAAc,EAAE,GAAG,OAAO,4BAA4B;IACtD,iBAAiB,EAAE,GAAG,OAAO,+BAA+B;IAC5D,iBAAiB,EAAE,GAAG,OAAO,+BAA+B;IAC5D,gBAAgB,EAAE,GAAG,OAAO,8BAA8B;IAC1D,eAAe,EAAE,GAAG,OAAO,6BAA6B;IACxD,aAAa,EAAE,GAAG,OAAO,2BAA2B;IACpD,SAAS,EAAE,GAAG,OAAO,iCAAiC;IACtD,kBAAkB,EAAE,GAAG,OAAO,gCAAgC;IAC9D,mBAAmB,EAAE,GAAG,OAAO,iCAAiC;IAChE,eAAe,EAAE,GAAG,OAAO,6BAA6B;IACxD,iBAAiB,EAAE,GAAG,OAAO,+BAA+B;IAC5D,gBAAgB,EAAE,GAAG,OAAO,8BAA8B;IAC1D,iBAAiB,EAAE,GAAG,OAAO,+BAA+B;IAC5D,kBAAkB,EAAE,GAAG,OAAO,gCAAgC;IAC9D,mBAAmB,EAAE,GAAG,OAAO,iCAAiC;IAChE,eAAe,EAAE,GAAG,OAAO,6BAA6B;IACxD,eAAe,EAAE,IAAI;IACrB,eAAe,EAAE,MAAM;IACvB,eAAe,EAAE,MAAM;IACvB,iBAAiB,EAAE,MAAM;IACzB,qBAAqB,EAAE,IAAI;IAC3B,mBAAmB,EAAE,MAAM;IAC3B,eAAe,EAAE,MAAM;IACvB,iBAAiB,EAAE,MAAM;IACzB,qBAAqB,EAAE,MAAM;IAC7B,uBAAuB,EAAE,MAAM;IAC/B,sBAAsB,EAAE,IAAI;CAC7B,CAAC;AAEF,OAAO,EAAE,MAAM,EAAE,CAAC"}
@@ -1,12 +1,6 @@
1
1
  import { createInterface } from "node:readline";
2
- // Line-buffered Y/n confirm. Deliberately NOT `prompts`' confirm element:
3
- // prompts@2.4.2 calls `c.toLowerCase()` on the character of every unmapped
4
- // keypress, and Node emits `undefined` as that character for escape-prefixed
5
- // input (arrow/F/Page keys, terminal focus/paste events). The resulting
6
- // TypeError is thrown inside the stdin keypress handler — unreachable from
7
- // any try/catch around the awaited prompt — and kills the whole process
8
- // (seen crashing `npx @tryglen/cli install` at the connect prompt).
9
- // readline consumes whole lines, so stray escape sequences are inert.
2
+ // Not prompts' confirm: prompts@2.4.2 throws on escape-sequence keypresses (arrows, focus events) and kills the process.
3
+ // readline reads whole lines, so stray escape sequences are harmless.
10
4
  const confirmYesNo = (options) => {
11
5
  const hint = options.initial ? "(Y/n)" : "(y/N)";
12
6
  return new Promise((resolve) => {
@@ -32,8 +26,6 @@ const confirmYesNo = (options) => {
32
26
  ask();
33
27
  });
34
28
  };
35
- // Ctrl+C or EOF with no answer → decline (same downstream path as the
36
- // old prompt's abort: the caller prints the "run `glen login`" hint).
37
29
  rl.on("SIGINT", () => done(false));
38
30
  rl.on("close", () => resolve(false));
39
31
  ask();
@@ -1 +1 @@
1
- {"version":3,"file":"confirm.js","sourceRoot":"","sources":["../../src/_utils/confirm.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAEhD,0EAA0E;AAC1E,2EAA2E;AAC3E,6EAA6E;AAC7E,wEAAwE;AACxE,2EAA2E;AAC3E,wEAAwE;AACxE,oEAAoE;AACpE,sEAAsE;AACtE,MAAM,YAAY,GAAG,CAAC,OAKrB,EAAoB,EAAE;IACrB,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC;IACjD,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,MAAM,EAAE,GAAG,eAAe,CAAC;YACzB,KAAK,EAAE,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,KAAK;YACrC,MAAM,EAAE,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,MAAM;SACzC,CAAC,CAAC;QACH,yEAAyE;QACzE,yDAAyD;QACzD,MAAM,IAAI,GAAG,CAAC,KAAc,EAAQ,EAAE;YACpC,OAAO,CAAC,KAAK,CAAC,CAAC;YACf,EAAE,CAAC,KAAK,EAAE,CAAC;QACb,CAAC,CAAC;QACF,MAAM,GAAG,GAAG,GAAS,EAAE;YACrB,EAAE,CAAC,QAAQ,CAAC,KAAK,OAAO,CAAC,OAAO,MAAM,IAAI,GAAG,EAAE,CAAC,MAAM,EAAE,EAAE;gBACxD,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;gBAC/C,IAAI,UAAU,KAAK,EAAE;oBAAE,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;gBACpD,IAAI,UAAU,KAAK,GAAG,IAAI,UAAU,KAAK,KAAK;oBAAE,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC;gBAClE,IAAI,UAAU,KAAK,GAAG,IAAI,UAAU,KAAK,IAAI;oBAAE,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC;gBAClE,GAAG,EAAE,CAAC;YACR,CAAC,CAAC,CAAC;QACL,CAAC,CAAC;QACF,sEAAsE;QACtE,sEAAsE;QACtE,EAAE,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;QACnC,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;QACrC,GAAG,EAAE,CAAC;IACR,CAAC,CAAC,CAAC;AACL,CAAC,CAAC;AAEF,OAAO,EAAE,YAAY,EAAE,CAAC"}
1
+ {"version":3,"file":"confirm.js","sourceRoot":"","sources":["../../src/_utils/confirm.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAEhD,yHAAyH;AACzH,sEAAsE;AACtE,MAAM,YAAY,GAAG,CAAC,OAKrB,EAAoB,EAAE;IACrB,MAAM,IAAI,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC;IACjD,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;QAC7B,MAAM,EAAE,GAAG,eAAe,CAAC;YACzB,KAAK,EAAE,OAAO,CAAC,KAAK,IAAI,OAAO,CAAC,KAAK;YACrC,MAAM,EAAE,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,MAAM;SACzC,CAAC,CAAC;QACH,yEAAyE;QACzE,yDAAyD;QACzD,MAAM,IAAI,GAAG,CAAC,KAAc,EAAQ,EAAE;YACpC,OAAO,CAAC,KAAK,CAAC,CAAC;YACf,EAAE,CAAC,KAAK,EAAE,CAAC;QACb,CAAC,CAAC;QACF,MAAM,GAAG,GAAG,GAAS,EAAE;YACrB,EAAE,CAAC,QAAQ,CAAC,KAAK,OAAO,CAAC,OAAO,MAAM,IAAI,GAAG,EAAE,CAAC,MAAM,EAAE,EAAE;gBACxD,MAAM,UAAU,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;gBAC/C,IAAI,UAAU,KAAK,EAAE;oBAAE,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC;gBACpD,IAAI,UAAU,KAAK,GAAG,IAAI,UAAU,KAAK,KAAK;oBAAE,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC;gBAClE,IAAI,UAAU,KAAK,GAAG,IAAI,UAAU,KAAK,IAAI;oBAAE,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC;gBAClE,GAAG,EAAE,CAAC;YACR,CAAC,CAAC,CAAC;QACL,CAAC,CAAC;QACF,EAAE,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;QACnC,EAAE,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC;QACrC,GAAG,EAAE,CAAC;IACR,CAAC,CAAC,CAAC;AACL,CAAC,CAAC;AAEF,OAAO,EAAE,YAAY,EAAE,CAAC"}