@tryglen/cli 0.36.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.
- package/README.md +39 -27
- package/dist/_utils/agent-adapter.d.ts +0 -15
- package/dist/_utils/agent-adapter.js +0 -20
- package/dist/_utils/agent-adapter.js.map +1 -1
- package/dist/_utils/agents-table.js +1 -9
- package/dist/_utils/agents-table.js.map +1 -1
- package/dist/_utils/cli-error.js +0 -3
- package/dist/_utils/cli-error.js.map +1 -1
- package/dist/_utils/codex-app-server.js +0 -2
- package/dist/_utils/codex-app-server.js.map +1 -1
- package/dist/_utils/codex-hooks-merge.js +0 -11
- package/dist/_utils/codex-hooks-merge.js.map +1 -1
- package/dist/_utils/codex-hooks-setup.js +0 -18
- package/dist/_utils/codex-hooks-setup.js.map +1 -1
- package/dist/_utils/codex-paths.js +0 -3
- package/dist/_utils/codex-paths.js.map +1 -1
- package/dist/_utils/codex-repair-trace.js +0 -3
- package/dist/_utils/codex-repair-trace.js.map +1 -1
- package/dist/_utils/codex-trust-toml.js +1 -9
- package/dist/_utils/codex-trust-toml.js.map +1 -1
- package/dist/_utils/collect-import-files.js +0 -7
- package/dist/_utils/collect-import-files.js.map +1 -1
- package/dist/_utils/config.js +0 -4
- package/dist/_utils/config.js.map +1 -1
- package/dist/_utils/confirm.js +2 -10
- package/dist/_utils/confirm.js.map +1 -1
- package/dist/_utils/credentials.js +0 -3
- package/dist/_utils/credentials.js.map +1 -1
- package/dist/_utils/detect-transcript-format.js +0 -7
- package/dist/_utils/detect-transcript-format.js.map +1 -1
- package/dist/_utils/ensure-global-cli.d.ts +0 -12
- package/dist/_utils/ensure-global-cli.js +1 -28
- package/dist/_utils/ensure-global-cli.js.map +1 -1
- package/dist/_utils/ephemeral-session.js +3 -24
- package/dist/_utils/ephemeral-session.js.map +1 -1
- package/dist/_utils/extract-claude-segments.js +1 -5
- package/dist/_utils/extract-claude-segments.js.map +1 -1
- package/dist/_utils/extract-codex-segments.js +0 -9
- package/dist/_utils/extract-codex-segments.js.map +1 -1
- package/dist/_utils/extract-pi-segments.js +1 -5
- package/dist/_utils/extract-pi-segments.js.map +1 -1
- package/dist/_utils/find-bin.js +0 -8
- package/dist/_utils/find-bin.js.map +1 -1
- package/dist/_utils/format-search-result.js +3 -19
- package/dist/_utils/format-search-result.js.map +1 -1
- package/dist/_utils/format-turn-nudges.js +2 -20
- package/dist/_utils/format-turn-nudges.js.map +1 -1
- package/dist/_utils/git-context.d.ts +0 -2
- package/dist/_utils/git-context.js +1 -33
- package/dist/_utils/git-context.js.map +1 -1
- package/dist/_utils/git-hook-setup.js +0 -1
- package/dist/_utils/git-hook-setup.js.map +1 -1
- package/dist/_utils/glen-headers.js +1 -4
- package/dist/_utils/glen-headers.js.map +1 -1
- package/dist/_utils/http.js +1 -8
- package/dist/_utils/http.js.map +1 -1
- package/dist/_utils/idempotency-key.js +1 -4
- package/dist/_utils/idempotency-key.js.map +1 -1
- package/dist/_utils/indicator-app.js +4 -26
- package/dist/_utils/indicator-app.js.map +1 -1
- package/dist/_utils/indicator-health.js +0 -6
- package/dist/_utils/indicator-health.js.map +1 -1
- package/dist/_utils/ingest-diagnosis.js +0 -5
- package/dist/_utils/ingest-diagnosis.js.map +1 -1
- package/dist/_utils/ingest-heartbeat.js +1 -6
- package/dist/_utils/ingest-heartbeat.js.map +1 -1
- package/dist/_utils/install-receipt.js +0 -3
- package/dist/_utils/install-receipt.js.map +1 -1
- package/dist/_utils/jcode-bundle.js +0 -7
- package/dist/_utils/jcode-bundle.js.map +1 -1
- package/dist/_utils/jcode-event.js +2 -18
- package/dist/_utils/jcode-event.js.map +1 -1
- package/dist/_utils/jcode-hook-lines.js +1 -5
- package/dist/_utils/jcode-hook-lines.js.map +1 -1
- package/dist/_utils/jcode-hooks-toml.js +1 -9
- package/dist/_utils/jcode-hooks-toml.js.map +1 -1
- package/dist/_utils/jcode-paths.js +0 -3
- package/dist/_utils/jcode-paths.js.map +1 -1
- package/dist/_utils/jcode-setup.js +0 -7
- package/dist/_utils/jcode-setup.js.map +1 -1
- package/dist/_utils/jcode-skills-sync.js +1 -6
- package/dist/_utils/jcode-skills-sync.js.map +1 -1
- package/dist/_utils/login-check.js +1 -4
- package/dist/_utils/login-check.js.map +1 -1
- package/dist/_utils/managed-block.js +0 -4
- package/dist/_utils/managed-block.js.map +1 -1
- package/dist/_utils/normalize-boolean-flags.js +2 -7
- package/dist/_utils/normalize-boolean-flags.js.map +1 -1
- package/dist/_utils/open-browser.js +1 -3
- package/dist/_utils/open-browser.js.map +1 -1
- package/dist/_utils/parse-claude-transcript.js +4 -24
- package/dist/_utils/parse-claude-transcript.js.map +1 -1
- package/dist/_utils/parse-codex-transcript.js +1 -22
- package/dist/_utils/parse-codex-transcript.js.map +1 -1
- package/dist/_utils/parse-cursor-db.js +2 -21
- package/dist/_utils/parse-cursor-db.js.map +1 -1
- package/dist/_utils/parse-jcode-session.js +0 -15
- package/dist/_utils/parse-jcode-session.js.map +1 -1
- package/dist/_utils/parse-pi-transcript.js +1 -35
- package/dist/_utils/parse-pi-transcript.js.map +1 -1
- package/dist/_utils/parse-transcript.js +1 -9
- package/dist/_utils/parse-transcript.js.map +1 -1
- package/dist/_utils/plugin-status.js +0 -19
- package/dist/_utils/plugin-status.js.map +1 -1
- package/dist/_utils/post-route.js +0 -7
- package/dist/_utils/post-route.js.map +1 -1
- package/dist/_utils/pr-review-link.js +0 -2
- package/dist/_utils/pr-review-link.js.map +1 -1
- package/dist/_utils/proactive-ticket-log.js +1 -11
- package/dist/_utils/proactive-ticket-log.js.map +1 -1
- package/dist/_utils/record-commit-anchor.js +1 -8
- package/dist/_utils/record-commit-anchor.js.map +1 -1
- package/dist/_utils/refresh-control-state.js +1 -7
- package/dist/_utils/refresh-control-state.js.map +1 -1
- package/dist/_utils/render-callback-page.js +0 -7
- package/dist/_utils/render-callback-page.js.map +1 -1
- package/dist/_utils/resolve-import-workspace.d.ts +0 -7
- package/dist/_utils/resolve-import-workspace.js +1 -13
- package/dist/_utils/resolve-import-workspace.js.map +1 -1
- package/dist/_utils/run-bin.js +0 -2
- package/dist/_utils/run-bin.js.map +1 -1
- package/dist/_utils/session-map.js +0 -5
- package/dist/_utils/session-map.js.map +1 -1
- package/dist/_utils/shell-profile.js +1 -28
- package/dist/_utils/shell-profile.js.map +1 -1
- package/dist/_utils/state-line-memo.d.ts +0 -6
- package/dist/_utils/state-line-memo.js +3 -18
- package/dist/_utils/state-line-memo.js.map +1 -1
- package/dist/_utils/state-line.js +0 -4
- package/dist/_utils/state-line.js.map +1 -1
- package/dist/_utils/state.js +0 -5
- package/dist/_utils/state.js.map +1 -1
- package/dist/_utils/sync-mode-from-server.d.ts +0 -18
- package/dist/_utils/sync-mode-from-server.js +2 -21
- package/dist/_utils/sync-mode-from-server.js.map +1 -1
- package/dist/_utils/transcript-turns.js +1 -51
- package/dist/_utils/transcript-turns.js.map +1 -1
- package/dist/_utils/turn-cache.js +1 -8
- package/dist/_utils/turn-cache.js.map +1 -1
- package/dist/_utils/update.d.ts +0 -10
- package/dist/_utils/update.js +8 -30
- package/dist/_utils/update.js.map +1 -1
- package/dist/_utils/version.js +3 -6
- package/dist/_utils/version.js.map +1 -1
- package/dist/_utils/which.d.ts +0 -5
- package/dist/_utils/which.js +0 -5
- package/dist/_utils/which.js.map +1 -1
- package/dist/_utils/write-commit-trailer.js +1 -5
- package/dist/_utils/write-commit-trailer.js.map +1 -1
- package/dist/bin.js +6 -25
- package/dist/bin.js.map +1 -1
- package/dist/commands/_utils/materialize-skill.js +4 -34
- package/dist/commands/_utils/materialize-skill.js.map +1 -1
- package/dist/commands/_utils/pack-skill-dir.js +6 -27
- package/dist/commands/_utils/pack-skill-dir.js.map +1 -1
- package/dist/commands/artifact.js +2 -5
- package/dist/commands/artifact.js.map +1 -1
- package/dist/commands/code-search.js +0 -6
- package/dist/commands/code-search.js.map +1 -1
- package/dist/commands/doctor.d.ts +0 -17
- package/dist/commands/doctor.js +15 -79
- package/dist/commands/doctor.js.map +1 -1
- package/dist/commands/feedback.js +2 -10
- package/dist/commands/feedback.js.map +1 -1
- package/dist/commands/git-hooks.js +0 -3
- package/dist/commands/git-hooks.js.map +1 -1
- package/dist/commands/import.js +5 -27
- package/dist/commands/import.js.map +1 -1
- package/dist/commands/incognito.d.ts +0 -5
- package/dist/commands/incognito.js +0 -5
- package/dist/commands/incognito.js.map +1 -1
- package/dist/commands/indicator.d.ts +0 -1
- package/dist/commands/indicator.js +0 -1
- package/dist/commands/indicator.js.map +1 -1
- package/dist/commands/ingest.js +37 -111
- package/dist/commands/ingest.js.map +1 -1
- package/dist/commands/install.js +7 -93
- package/dist/commands/install.js.map +1 -1
- package/dist/commands/invite.d.ts +0 -6
- package/dist/commands/invite.js +0 -16
- package/dist/commands/invite.js.map +1 -1
- package/dist/commands/login.js +0 -15
- package/dist/commands/login.js.map +1 -1
- package/dist/commands/onboard.js +0 -6
- package/dist/commands/onboard.js.map +1 -1
- package/dist/commands/org.js +0 -2
- package/dist/commands/org.js.map +1 -1
- package/dist/commands/pr-link.js +2 -15
- package/dist/commands/pr-link.js.map +1 -1
- package/dist/commands/search.js +0 -5
- package/dist/commands/search.js.map +1 -1
- package/dist/commands/session-start.d.ts +0 -21
- package/dist/commands/session-start.js +6 -65
- package/dist/commands/session-start.js.map +1 -1
- package/dist/commands/set-mode.d.ts +0 -6
- package/dist/commands/set-mode.js +2 -12
- package/dist/commands/set-mode.js.map +1 -1
- package/dist/commands/skill.js +5 -35
- package/dist/commands/skill.js.map +1 -1
- package/dist/commands/statusline.d.ts +0 -13
- package/dist/commands/statusline.js +0 -15
- package/dist/commands/statusline.js.map +1 -1
- package/dist/commands/suggestions.d.ts +0 -6
- package/dist/commands/suggestions.js +0 -7
- package/dist/commands/suggestions.js.map +1 -1
- package/dist/commands/takeover/_utils/agent-paths.js +2 -3
- package/dist/commands/takeover/_utils/agent-paths.js.map +1 -1
- package/dist/commands/takeover/_utils/cursor-store.js +1 -3
- package/dist/commands/takeover/_utils/cursor-store.js.map +1 -1
- package/dist/commands/takeover/_utils/write-codex-desktop-session.js +1 -4
- package/dist/commands/takeover/_utils/write-codex-desktop-session.js.map +1 -1
- package/dist/commands/takeover/_utils/write-codex-session.js +1 -2
- package/dist/commands/takeover/_utils/write-codex-session.js.map +1 -1
- package/dist/commands/uninstall.d.ts +0 -1
- package/dist/commands/uninstall.js +3 -7
- package/dist/commands/uninstall.js.map +1 -1
- package/dist/commands/update.d.ts +0 -10
- package/dist/commands/update.js +4 -32
- package/dist/commands/update.js.map +1 -1
- package/dist/jcode/plugin.json +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -11,34 +11,46 @@ glen login
|
|
|
11
11
|
|
|
12
12
|
## Commands
|
|
13
13
|
|
|
14
|
-
| Command
|
|
15
|
-
|
|
|
16
|
-
| `glen login`
|
|
17
|
-
| `glen logout`
|
|
18
|
-
| `glen status`
|
|
19
|
-
| `glen search "<query>"`
|
|
20
|
-
| `glen
|
|
21
|
-
| `glen
|
|
22
|
-
| `glen
|
|
23
|
-
| `glen
|
|
24
|
-
| `glen
|
|
25
|
-
| `glen
|
|
26
|
-
| `glen
|
|
27
|
-
| `glen
|
|
28
|
-
| `glen
|
|
29
|
-
| `glen
|
|
30
|
-
| `glen
|
|
31
|
-
| `glen
|
|
32
|
-
| `glen
|
|
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
|
|
37
|
-
|
|
|
38
|
-
| `~/.glen/credentials.json` | API key credential — mode `0600`, never logged or sent to anyone but `tryglen.com`.
|
|
39
|
-
| `~/.glen/state.json`
|
|
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
|
|
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 (
|
|
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,
|
|
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,20 +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
|
-
* - "jcode": same event-carried shape — built by _utils/jcode-event.ts from
|
|
18
|
-
* JCODE_HOOK_* env plus the session file.
|
|
19
|
-
* - "claude-code" and generic/unknown: uses parseTranscript for priorAssistant
|
|
20
|
-
* and the user-message index (nextUserMessageIndex) that callers need for
|
|
21
|
-
* idempotency key derivation.
|
|
22
|
-
*/
|
|
23
8
|
declare const adaptAgentEvent: (agent: string | undefined, event: HookEvent, transcriptLines: readonly string[]) => AdapterOutput;
|
|
24
9
|
export { adaptAgentEvent };
|
|
@@ -1,26 +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
|
-
* - "jcode": same event-carried shape — built by _utils/jcode-event.ts from
|
|
14
|
-
* JCODE_HOOK_* env plus the session file.
|
|
15
|
-
* - "claude-code" and generic/unknown: uses parseTranscript for priorAssistant
|
|
16
|
-
* and the user-message index (nextUserMessageIndex) that callers need for
|
|
17
|
-
* idempotency key derivation.
|
|
18
|
-
*/
|
|
19
3
|
const adaptAgentEvent = (agent, event, transcriptLines) => {
|
|
20
4
|
if (agent === "cursor") {
|
|
21
|
-
// Cursor hooks carry no usable transcript; priorAssistant comes from the
|
|
22
|
-
// local turn-cache (populated by afterAgentResponse) and is read by
|
|
23
|
-
// ingest.ts, not here. Common payload fields carry the model.
|
|
24
5
|
const fields = {};
|
|
25
6
|
const model = str(event.model);
|
|
26
7
|
if (model)
|
|
@@ -50,7 +31,6 @@ const adaptAgentEvent = (agent, event, transcriptLines) => {
|
|
|
50
31
|
usesTranscript: false,
|
|
51
32
|
};
|
|
52
33
|
}
|
|
53
|
-
// claude-code and generic: use the transcript for priorAssistant + message index
|
|
54
34
|
const { priorAssistant } = parseTranscript(transcriptLines);
|
|
55
35
|
const fields = {};
|
|
56
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;
|
|
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,
|
|
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"}
|
package/dist/_utils/cli-error.js
CHANGED
|
@@ -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":"
|
|
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":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,EAAe,GAAG,EAAE,EAAE,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;
|
|
1
|
+
{"version":3,"file":"codex-app-server.js","sourceRoot":"","sources":["../../src/_utils/codex-app-server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AACxC,OAAO,EAAe,GAAG,EAAE,EAAE,EAAE,MAAM,aAAa,CAAC;AACnD,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAW1C,MAAM,UAAU,GAAG,MAAM,CAAC;AAE1B,MAAM,cAAc,GAAG,CAAC,GAAY,EAA2B,EAAE;IAC/D,MAAM,MAAM,GAAI,GAAuC,CAAC,MAAM,CAAC;IAC/D,IAAI,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IACxD,MAAM,OAAO,GAAqB,EAAE,CAAC;IACrC,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,IAA6B,EAAE,CAAC;QACxD,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC;YAAE,SAAS;QACzC,KAAK,MAAM,CAAC,IAAI,IAAI,CAAC,KAAkC,EAAE,CAAC;YACxD,IACE,OAAO,CAAC,CAAC,GAAG,KAAK,QAAQ;gBACzB,OAAO,CAAC,CAAC,OAAO,KAAK,QAAQ;gBAC7B,OAAO,CAAC,CAAC,MAAM,KAAK,QAAQ;gBAC5B,OAAO,CAAC,CAAC,WAAW,KAAK,QAAQ;gBACjC,OAAO,CAAC,CAAC,WAAW,KAAK,QAAQ,EACjC,CAAC;gBACD,OAAO,CAAC,IAAI,CAAC;oBACX,GAAG,EAAE,CAAC,CAAC,GAAG;oBACV,OAAO,EAAE,CAAC,CAAC,OAAO;oBAClB,MAAM,EAAE,CAAC,CAAC,MAAM;oBAChB,WAAW,EAAE,CAAC,CAAC,WAAW;oBAC1B,WAAW,EAAE,CAAC,CAAC,WAAW;iBAC3B,CAAC,CAAC;YACL,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC,CAAC;AAEF,MAAM,GAAG,GAAG,CAAC,EAAU,EAAE,MAAc,EAAE,MAAe,EAAU,EAAE,CAClE,GAAG,IAAI,CAAC,SAAS,CAAC,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC,IAAI,CAAC;AAEhE,MAAM,cAAc,GAAG,CACrB,GAAW,EACgC,EAAE,CAC7C,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE;IACtB,MAAM,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,OAAO,EAAE,CAAC,YAAY,CAAC,EAAE;QAC/D,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,QAAQ,CAAC;KAClC,CAAC,CAAC;IAEH,MAAM,MAAM,GAAG,CAAC,CAAmC,EAAQ,EAAE;QAC3D,YAAY,CAAC,KAAK,CAAC,CAAC;QACpB,KAAK,CAAC,IAAI,EAAE,CAAC;QACb,OAAO,CAAC,CAAC,CAAC,CAAC;IACb,CAAC,CAAC;IACF,MAAM,KAAK,GAAG,UAAU,CACtB,GAAG,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAC,EAC/C,UAAU,CACX,CAAC;IAEF,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,kCAAkC,CAAC,CAAC,CAAC,CAAC;IACzE,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,CACrB,MAAM,CAAC,GAAG,CAAC,0CAA0C,CAAC,CAAC,CACxD,CAAC;IACF,uEAAuE;IACvE,4EAA4E;IAC5E,KAAK,CAAC,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;IAElC,MAAM,KAAK,GAAG,EAAE,GAAG,EAAE,EAAE,EAAE,CAAC;IAC1B,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAa,EAAE,EAAE;QACxC,KAAK,CAAC,GAAG,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;QAC9B,MAAM,KAAK,GAAG,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACpC,KAAK,CAAC,GAAG,GAAG,KAAK,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC;QAC9B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;YACzB,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE;gBAAE,SAAS;YACjC,MAAM,MAAM,GAAG,CAAC,GAAY,EAAE;gBAC5B,IAAI,CAAC;oBACH,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAY,CAAC;gBACrC,CAAC;gBAAC,MAAM,CAAC;oBACP,OAAO,IAAI,CAAC;gBACd,CAAC;YACH,CAAC,CAAC,EAAE,CAAC;YACL,IAAI,CAAC,MAAM,IAAI,OAAO,MAAM,KAAK,QAAQ;gBAAE,SAAS;YACpD,MAAM,EAAE,GAAI,MAA2B,CAAC,EAAE,CAAC;YAC3C,MAAM,QAAQ,GAAI,MAA4C,CAAC,KAAK,CAAC;YACrE,IAAI,CAAC,EAAE,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,IAAI,QAAQ,EAAE,CAAC;gBACvC,MAAM,GAAG,GACP,OAAO,QAAQ,CAAC,OAAO,KAAK,QAAQ;oBAClC,CAAC,CAAC,QAAQ,CAAC,OAAO;oBAClB,CAAC,CAAC,eAAe,CAAC;gBACtB,MAAM,CAAC,GAAG,CAAC,2BAA2B,GAAG,EAAE,CAAC,CAAC,CAAC;gBAC9C,SAAS;YACX,CAAC;YACD,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC;gBACb,KAAK,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,EAAE,YAAY,EAAE,EAAE,IAAI,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;YAC3D,CAAC;YACD,IAAI,EAAE,KAAK,CAAC,EAAE,CAAC;gBACb,MAAM,OAAO,GAAG,cAAc,CAAC,MAAM,CAAC,CAAC;gBACvC,MAAM,CACJ,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,sCAAsC,CAAC,CACpE,CAAC;YACJ,CAAC;QACH,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,kEAAkE;IAClE,uEAAuE;IACvE,oDAAoD;IACpD,cAAc,CAAC,GAAG,EAAE;QAClB,KAAK,CAAC,KAAK,CAAC,KAAK,CACf,GAAG,CAAC,CAAC,EAAE,YAAY,EAAE;YACnB,UAAU,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,UAAU,EAAE,OAAO,EAAE,UAAU,EAAE;SACrE,CAAC,CACH,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC;AAEL,OAAO,EAAE,cAAc,EAAE,CAAC"}
|
|
@@ -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":"AAAA,0EAA0E;AAC1E,gFAAgF;AAChF,MAAM,uBAAuB,GAAG;IAC9B,YAAY,EAAE,kCAAkC;IAChD,gBAAgB,EAAE,2BAA2B;IAC7C,IAAI,EAAE,2BAA2B;IACjC,WAAW,EAAE,4BAA4B;CACjC,CAAC;AAEX,
|
|
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":"AAAA,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC9E,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EACL,iBAAiB,EAEjB,kBAAkB,EAClB,cAAc,EACd,aAAa,GACd,MAAM,wBAAwB,CAAC;AAChC,OAAO,EAAE,mBAAmB,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAC3E,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,uBAAuB,CAAC;AAC7E,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAe,GAAG,EAAE,WAAW,EAAE,EAAE,EAAE,MAAM,aAAa,CAAC;AAChE,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAEvC,
|
|
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,
|
|
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,
|
|
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
|
-
//
|
|
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":"AAAA,
|
|
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":"AAAA,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,EAAiB,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAChE,OAAO,EAAe,GAAG,EAAE,EAAE,EAAE,MAAM,aAAa,CAAC;AAEnD,
|
|
1
|
+
{"version":3,"file":"collect-import-files.js","sourceRoot":"","sources":["../../src/_utils/collect-import-files.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AACjD,OAAO,EAAE,QAAQ,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC3C,OAAO,EAAiB,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAC;AAChE,OAAO,EAAe,GAAG,EAAE,EAAE,EAAE,MAAM,aAAa,CAAC;AAEnD,MAAM,WAAW,GAAG,CAAC,IAAY,EAAW,EAAE,CAC5C,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,WAAW,CAAC;IAC1C,CAAC,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC;QACtB,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC;QACvB,QAAQ,CAAC,IAAI,CAAC,KAAK,iBAAiB,CAAC,CAAC;AAE1C,MAAM,IAAI,GAAG,KAAK,EAAE,GAAW,EAAqB,EAAE;IACpD,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;IAC5D,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,GAAG,CAC9B,OAAO,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;QAC1B,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;QACnC,IAAI,KAAK,CAAC,WAAW,EAAE;YAAE,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC;QAC3C,OAAO,KAAK,CAAC,MAAM,EAAE,IAAI,WAAW,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;IAC3D,CAAC,CAAC,CACH,CAAC;IACF,OAAO,MAAM,CAAC,IAAI,EAAE,CAAC;AACvB,CAAC,CAAC;AAEF,MAAM,kBAAkB,GAAG,KAAK,EAC9B,KAAwB,EACa,EAAE;IACvC,MAAM,SAAS,GAAG,MAAM,OAAO,CAAC,GAAG,CACjC,KAAK,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,EAAuC,EAAE;QAC5D,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,IAAI,EAAE;YAC7B,IAAI,CAAC;gBACH,OAAO,MAAM,IAAI,CAAC,IAAI,CAAC,CAAC;YAC1B,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,OAAO,OAAO,CAAC,CAAC,CAAC,CAAC;YACpB,CAAC;QACH,CAAC,CAAC,EAAE,CAAC;QACL,IAAI,OAAO,IAAI,KAAK,QAAQ;YAC1B,OAAO,GAAG,CACR,MAAM,CAAC;gBACL,IAAI,EAAE,gBAAgB;gBACtB,GAAG,EAAE,IAAI;gBACT,IAAI;gBACJ,MAAM,EACJ,4MAA4M;aAC/M,CAAC,CACH,CAAC;QACJ,IAAI,IAAI,CAAC,WAAW,EAAE;YAAE,OAAO,EAAE,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;QACpD,OAAO,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IACpB,CAAC,CAAC,CACH,CAAC;IACF,MAAM,MAAM,GAAG,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;IAC5C,IAAI,MAAM,IAAI,CAAC,MAAM,CAAC,EAAE;QAAE,OAAO,MAAM,CAAC;IACxC,MAAM,KAAK,GAAG,SAAS;SACpB,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;SACrC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;SAC3C,IAAI,EAAE,CAAC;IACV,OAAO,EAAE,CAAC,KAAK,CAAC,CAAC;AACnB,CAAC,CAAC;AAEF,OAAO,EAAE,kBAAkB,EAAE,CAAC"}
|
package/dist/_utils/config.js
CHANGED
|
@@ -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,
|
|
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"}
|
package/dist/_utils/confirm.js
CHANGED
|
@@ -1,12 +1,6 @@
|
|
|
1
1
|
import { createInterface } from "node:readline";
|
|
2
|
-
//
|
|
3
|
-
//
|
|
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,
|
|
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"}
|