@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.
- package/README.md +39 -27
- package/dist/_utils/agent-adapter.d.ts +0 -13
- package/dist/_utils/agent-adapter.js +1 -19
- 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.d.ts +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.d.ts +9 -1
- package/dist/_utils/install-receipt.js +18 -3
- package/dist/_utils/install-receipt.js.map +1 -1
- package/dist/_utils/jcode-bundle.d.ts +3 -0
- package/dist/_utils/jcode-bundle.js +16 -0
- package/dist/_utils/jcode-bundle.js.map +1 -0
- package/dist/_utils/jcode-event.d.ts +3 -0
- package/dist/_utils/jcode-event.js +66 -0
- package/dist/_utils/jcode-event.js.map +1 -0
- package/dist/_utils/jcode-hook-lines.d.ts +5 -0
- package/dist/_utils/jcode-hook-lines.js +7 -0
- package/dist/_utils/jcode-hook-lines.js.map +1 -0
- package/dist/_utils/jcode-hooks-toml.d.ts +8 -0
- package/dist/_utils/jcode-hooks-toml.js +148 -0
- package/dist/_utils/jcode-hooks-toml.js.map +1 -0
- package/dist/_utils/jcode-paths.d.ts +7 -0
- package/dist/_utils/jcode-paths.js +10 -0
- package/dist/_utils/jcode-paths.js.map +1 -0
- package/dist/_utils/jcode-setup.d.ts +27 -0
- package/dist/_utils/jcode-setup.js +151 -0
- package/dist/_utils/jcode-setup.js.map +1 -0
- package/dist/_utils/jcode-skills-sync.d.ts +8 -0
- package/dist/_utils/jcode-skills-sync.js +74 -0
- package/dist/_utils/jcode-skills-sync.js.map +1 -0
- package/dist/_utils/login-check.js +1 -4
- package/dist/_utils/login-check.js.map +1 -1
- package/dist/_utils/managed-block.d.ts +4 -0
- package/dist/_utils/managed-block.js +38 -0
- package/dist/_utils/managed-block.js.map +1 -0
- 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-harbor-atif.js +2 -1
- package/dist/_utils/parse-harbor-atif.js.map +1 -1
- package/dist/_utils/parse-jcode-session.d.ts +14 -0
- package/dist/_utils/parse-jcode-session.js +113 -0
- package/dist/_utils/parse-jcode-session.js.map +1 -0
- 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.d.ts +1 -1
- package/dist/_utils/plugin-status.js +25 -16
- 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.d.ts +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 +15 -31
- 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 +29 -75
- 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 +58 -122
- package/dist/commands/ingest.js.map +1 -1
- package/dist/commands/install.d.ts +1 -0
- package/dist/commands/install.js +52 -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 +19 -68
- 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 +7 -7
- package/dist/commands/uninstall.js.map +1 -1
- package/dist/commands/update.d.ts +0 -10
- package/dist/commands/update.js +21 -30
- package/dist/commands/update.js.map +1 -1
- package/dist/jcode/plugin.json +8 -0
- package/dist/jcode/preferred-tools.md +3 -0
- package/dist/jcode/prompt-overlay.md +15 -0
- package/dist/jcode/skills/code-search/SKILL.md +19 -0
- package/dist/jcode/skills/controls/SKILL.md +45 -0
- package/dist/jcode/skills/create-artifact/SKILL.md +11 -0
- package/dist/jcode/skills/create-skill/SKILL.md +41 -0
- package/dist/jcode/skills/feedback/SKILL.md +59 -0
- package/dist/jcode/skills/forget/SKILL.md +41 -0
- package/dist/jcode/skills/import-transcripts/SKILL.md +27 -0
- package/dist/jcode/skills/invite/SKILL.md +28 -0
- package/dist/jcode/skills/search/SKILL.md +35 -0
- package/dist/jcode/skills/session-takeover/SKILL.md +67 -0
- package/dist/jcode/skills/setup/SKILL.md +62 -0
- package/dist/jcode/skills/use-artifact/SKILL.md +11 -0
- package/dist/jcode/skills/use-skill/SKILL.md +10 -0
- package/package.json +5 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"state-line-memo.js","sourceRoot":"","sources":["../../src/_utils/state-line-memo.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"state-line-memo.js","sourceRoot":"","sources":["../../src/_utils/state-line-memo.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,12 +1,8 @@
|
|
|
1
1
|
const formatStateLine = (state) => {
|
|
2
2
|
if (!state)
|
|
3
3
|
return null;
|
|
4
|
-
// Off and silent inject nothing — no status line at all (off short-circuits
|
|
5
|
-
// anyway; silent must put zero bytes of glen into the model's context).
|
|
6
4
|
if (state.mode === "off" || state.mode === "silent")
|
|
7
5
|
return null;
|
|
8
|
-
// Org slugs are auto-generated ("acme-1234") — the NAME is the
|
|
9
|
-
// human-meaningful field, so prefer it.
|
|
10
6
|
const org = state.activeOrgName ?? state.activeOrgSlug ?? state.activeOrgId;
|
|
11
7
|
return state.mode === "incognito"
|
|
12
8
|
? `[glen] org: ${org} · incognito: ON — nothing this session is being recorded`
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"state-line.js","sourceRoot":"","sources":["../../src/_utils/state-line.ts"],"names":[],"mappings":"AAEA,MAAM,eAAe,GAAG,CAAC,KAAuB,EAAiB,EAAE;IACjE,IAAI,CAAC,KAAK;QAAE,OAAO,IAAI,CAAC;IACxB,
|
|
1
|
+
{"version":3,"file":"state-line.js","sourceRoot":"","sources":["../../src/_utils/state-line.ts"],"names":[],"mappings":"AAEA,MAAM,eAAe,GAAG,CAAC,KAAuB,EAAiB,EAAE;IACjE,IAAI,CAAC,KAAK;QAAE,OAAO,IAAI,CAAC;IACxB,IAAI,KAAK,CAAC,IAAI,KAAK,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IACjE,MAAM,GAAG,GAAG,KAAK,CAAC,aAAa,IAAI,KAAK,CAAC,aAAa,IAAI,KAAK,CAAC,WAAW,CAAC;IAC5E,OAAO,KAAK,CAAC,IAAI,KAAK,WAAW;QAC/B,CAAC,CAAC,eAAe,GAAG,2DAA2D;QAC/E,CAAC,CAAC,eAAe,GAAG,cAAc,CAAC;AACvC,CAAC,CAAC;AAEF,OAAO,EAAE,eAAe,EAAE,CAAC"}
|
package/dist/_utils/state.js
CHANGED
|
@@ -14,8 +14,6 @@ const readState = async () => {
|
|
|
14
14
|
const d = parsed.value;
|
|
15
15
|
if (!d || typeof d.activeOrgId !== "string")
|
|
16
16
|
return null;
|
|
17
|
-
// Back-compat: pre-tri-state files carry a boolean `incognito` and no `mode`.
|
|
18
|
-
// Derive the mode (incognito → "incognito", else "on") so nobody has to re-login.
|
|
19
17
|
const mode = isGlenMode(d.mode)
|
|
20
18
|
? d.mode
|
|
21
19
|
: d.incognito === true
|
|
@@ -36,7 +34,6 @@ const writeState = async (state) => {
|
|
|
36
34
|
const mk = await fromPromise(mkdir(dirname(filePath), { recursive: true, mode: 0o700 }));
|
|
37
35
|
if (!mk.ok)
|
|
38
36
|
return mk;
|
|
39
|
-
// pid-suffixed so concurrent writers never clobber each other's tmp file.
|
|
40
37
|
const tmp = `${filePath}.${process.pid}.tmp`;
|
|
41
38
|
const w = await fromPromise(writeFile(tmp, JSON.stringify(state, null, 2)));
|
|
42
39
|
if (!w.ok)
|
|
@@ -46,8 +43,6 @@ const writeState = async (state) => {
|
|
|
46
43
|
return mv;
|
|
47
44
|
return { ok: true, value: undefined };
|
|
48
45
|
};
|
|
49
|
-
// ENOENT counts as success (nothing to clear); any other failure is returned
|
|
50
|
-
// so the caller can tell the user the file is still on disk.
|
|
51
46
|
const clearState = async () => {
|
|
52
47
|
const r = await fromPromise(unlink(statePath()));
|
|
53
48
|
if (!r.ok && r.error.code !== "ENOENT")
|
package/dist/_utils/state.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"state.js","sourceRoot":"","sources":["../../src/_utils/state.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC9E,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"state.js","sourceRoot":"","sources":["../../src/_utils/state.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAC9E,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAa1C,MAAM,UAAU,GAAG,CAAC,CAAU,EAAiB,EAAE,CAC/C,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,KAAK,IAAI,CAAC,KAAK,WAAW,IAAI,CAAC,KAAK,QAAQ,CAAC;AAEnE,MAAM,SAAS,GAAG,GAAW,EAAE,CAC7B,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,IAAI,CAAC,OAAO,EAAE,EAAE,OAAO,EAAE,YAAY,CAAC,CAAC;AAExE,MAAM,SAAS,GAAG,KAAK,IAA+B,EAAE;IACtD,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,MAAM,WAAW,CAC9B,IAAI,OAAO,CAAU,CAAC,OAAO,EAAE,EAAE,CAC/B,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAY,CAAC,CAC1C,CACF,CAAC;IACF,IAAI,CAAC,MAAM,CAAC,EAAE;QAAE,OAAO,IAAI,CAAC;IAC5B,MAAM,CAAC,GAAG,MAAM,CAAC,KAAuC,CAAC;IACzD,IAAI,CAAC,CAAC,IAAI,OAAO,CAAC,CAAC,WAAW,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IACzD,MAAM,IAAI,GAAa,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC;QACvC,CAAC,CAAC,CAAC,CAAC,IAAI;QACR,CAAC,CAAC,CAAC,CAAC,SAAS,KAAK,IAAI;YACpB,CAAC,CAAC,WAAW;YACb,CAAC,CAAC,IAAI,CAAC;IACX,OAAO;QACL,WAAW,EAAE,CAAC,CAAC,WAAW;QAC1B,aAAa,EAAE,OAAO,CAAC,CAAC,aAAa,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI;QAC3E,aAAa,EAAE,OAAO,CAAC,CAAC,aAAa,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,IAAI;QAC3E,IAAI;QACJ,GAAG,CAAC,OAAO,CAAC,CAAC,aAAa,KAAK,QAAQ;YACrC,CAAC,CAAC,EAAE,aAAa,EAAE,CAAC,CAAC,aAAa,EAAE;YACpC,CAAC,CAAC,EAAE,CAAC;KACR,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,UAAU,GAAG,KAAK,EAAE,KAAgB,EAAkC,EAAE;IAC5E,MAAM,QAAQ,GAAG,SAAS,EAAE,CAAC;IAC7B,MAAM,EAAE,GAAG,MAAM,WAAW,CAC1B,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAC3D,CAAC;IACF,IAAI,CAAC,EAAE,CAAC,EAAE;QAAE,OAAO,EAAE,CAAC;IACtB,MAAM,GAAG,GAAG,GAAG,QAAQ,IAAI,OAAO,CAAC,GAAG,MAAM,CAAC;IAC7C,MAAM,CAAC,GAAG,MAAM,WAAW,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAC5E,IAAI,CAAC,CAAC,CAAC,EAAE;QAAE,OAAO,CAAC,CAAC;IACpB,MAAM,EAAE,GAAG,MAAM,WAAW,CAAC,MAAM,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC,CAAC;IACpD,IAAI,CAAC,EAAE,CAAC,EAAE;QAAE,OAAO,EAAE,CAAC;IACtB,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;AACxC,CAAC,CAAC;AAEF,MAAM,UAAU,GAAG,KAAK,IAAoC,EAAE;IAC5D,MAAM,CAAC,GAAG,MAAM,WAAW,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC,CAAC,CAAC;IACjD,IAAI,CAAC,CAAC,CAAC,EAAE,IAAK,CAAC,CAAC,KAA+B,CAAC,IAAI,KAAK,QAAQ;QAAE,OAAO,CAAC,CAAC;IAC5E,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC;AACxC,CAAC,CAAC;AAEF,OAAO,EAAE,SAAS,EAAE,SAAS,EAAE,UAAU,EAAE,UAAU,EAAE,CAAC"}
|
|
@@ -1,21 +1,3 @@
|
|
|
1
1
|
import { type GlenState } from "./state.js";
|
|
2
|
-
/**
|
|
3
|
-
* Mirror the server-side recording preference (the source of truth, echoed on
|
|
4
|
-
* every turn response and returned by the control-status endpoint) into local
|
|
5
|
-
* state, so a dashboard or other-machine toggle reaches this machine within
|
|
6
|
-
* one turn. The endpoint carries no recorded user or org content — it also
|
|
7
|
-
* returns a static, server-authored team-memory block, identical for every
|
|
8
|
-
* user, which is not this function's concern. Returns the freshest state for
|
|
9
|
-
* display (re-read here — the state the caller read before its POST may be
|
|
10
|
-
* stale by now).
|
|
11
|
-
*
|
|
12
|
-
* Rules:
|
|
13
|
-
* - Last-writer-wins on SERVER timestamps: only apply an echo strictly newer
|
|
14
|
-
* than the last value this machine pushed/applied, so a stale in-flight turn
|
|
15
|
-
* can't undo a `glen incognito|silent|on` that just ran.
|
|
16
|
-
* - No stored preference server-side (updatedAt null) → nothing authoritative;
|
|
17
|
-
* leave local state alone.
|
|
18
|
-
* - Best-effort: a failed state write just keeps the current state.
|
|
19
|
-
*/
|
|
20
2
|
declare const syncModeFromServer: (json: unknown) => Promise<GlenState | null>;
|
|
21
3
|
export { syncModeFromServer };
|
|
@@ -1,22 +1,6 @@
|
|
|
1
1
|
import { readState, writeState } from "./state.js";
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
* every turn response and returned by the control-status endpoint) into local
|
|
5
|
-
* state, so a dashboard or other-machine toggle reaches this machine within
|
|
6
|
-
* one turn. The endpoint carries no recorded user or org content — it also
|
|
7
|
-
* returns a static, server-authored team-memory block, identical for every
|
|
8
|
-
* user, which is not this function's concern. Returns the freshest state for
|
|
9
|
-
* display (re-read here — the state the caller read before its POST may be
|
|
10
|
-
* stale by now).
|
|
11
|
-
*
|
|
12
|
-
* Rules:
|
|
13
|
-
* - Last-writer-wins on SERVER timestamps: only apply an echo strictly newer
|
|
14
|
-
* than the last value this machine pushed/applied, so a stale in-flight turn
|
|
15
|
-
* can't undo a `glen incognito|silent|on` that just ran.
|
|
16
|
-
* - No stored preference server-side (updatedAt null) → nothing authoritative;
|
|
17
|
-
* leave local state alone.
|
|
18
|
-
* - Best-effort: a failed state write just keeps the current state.
|
|
19
|
-
*/
|
|
2
|
+
// Last-writer-wins on server timestamps: apply only echoes strictly newer than modeUpdatedAt,
|
|
3
|
+
// so a stale in-flight turn can't undo a mode change. A null server updatedAt is not authoritative.
|
|
20
4
|
const syncModeFromServer = async (json) => {
|
|
21
5
|
const state = await readState();
|
|
22
6
|
if (!state)
|
|
@@ -44,15 +28,12 @@ const syncModeFromServer = async (json) => {
|
|
|
44
28
|
: null;
|
|
45
29
|
if (updatedAt === null)
|
|
46
30
|
return state;
|
|
47
|
-
// One preference row, one timestamp: serverIncognitoUpdatedAt covers both
|
|
48
|
-
// flags. An old server never sends serverSilent — treat missing as false.
|
|
49
31
|
const desired = canonical ??
|
|
50
32
|
(d.serverIncognito
|
|
51
33
|
? "incognito"
|
|
52
34
|
: d.serverSilent === true
|
|
53
35
|
? "silent"
|
|
54
36
|
: "on");
|
|
55
|
-
// ISO-8601 UTC timestamps compare correctly as strings.
|
|
56
37
|
if (state.modeUpdatedAt !== undefined && updatedAt <= state.modeUpdatedAt)
|
|
57
38
|
return state;
|
|
58
39
|
const next = { ...state, mode: desired, modeUpdatedAt: updatedAt };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"sync-mode-from-server.js","sourceRoot":"","sources":["../../src/_utils/sync-mode-from-server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkB,SAAS,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAEnE
|
|
1
|
+
{"version":3,"file":"sync-mode-from-server.js","sourceRoot":"","sources":["../../src/_utils/sync-mode-from-server.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkB,SAAS,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAEnE,8FAA8F;AAC9F,oGAAoG;AACpG,MAAM,kBAAkB,GAAG,KAAK,EAAE,IAAa,EAA6B,EAAE;IAC5E,MAAM,KAAK,GAAG,MAAM,SAAS,EAAE,CAAC;IAChC,IAAI,CAAC,KAAK;QAAE,OAAO,KAAK,CAAC;IACzB,MAAM,CAAC,GAAG,IAOF,CAAC;IACT,IAAI,CAAC,CAAC;QAAE,OAAO,KAAK,CAAC;IACrB,MAAM,SAAS,GACb,CAAC,CAAC,UAAU,KAAK,IAAI;QACrB,CAAC,CAAC,UAAU,KAAK,KAAK;QACtB,CAAC,CAAC,UAAU,KAAK,WAAW;QAC5B,CAAC,CAAC,UAAU,KAAK,QAAQ;QACvB,CAAC,CAAC,CAAC,CAAC,UAAU;QACd,CAAC,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI;YACb,CAAC,CAAC,IAAI,KAAK,KAAK;YAChB,CAAC,CAAC,IAAI,KAAK,WAAW;YACtB,CAAC,CAAC,IAAI,KAAK,QAAQ;YACrB,CAAC,CAAC,CAAC,CAAC,IAAI;YACR,CAAC,CAAC,IAAI,CAAC;IACb,IAAI,SAAS,KAAK,IAAI,IAAI,OAAO,CAAC,CAAC,eAAe,KAAK,SAAS;QAC9D,OAAO,KAAK,CAAC;IACf,MAAM,SAAS,GACb,OAAO,CAAC,CAAC,SAAS,KAAK,QAAQ;QAC7B,CAAC,CAAC,CAAC,CAAC,SAAS;QACb,CAAC,CAAC,OAAO,CAAC,CAAC,wBAAwB,KAAK,QAAQ;YAC9C,CAAC,CAAC,CAAC,CAAC,wBAAwB;YAC5B,CAAC,CAAC,IAAI,CAAC;IACb,IAAI,SAAS,KAAK,IAAI;QAAE,OAAO,KAAK,CAAC;IACrC,MAAM,OAAO,GACX,SAAS;QACT,CAAC,CAAC,CAAC,eAAe;YAChB,CAAC,CAAC,WAAW;YACb,CAAC,CAAC,CAAC,CAAC,YAAY,KAAK,IAAI;gBACvB,CAAC,CAAC,QAAQ;gBACV,CAAC,CAAC,IAAI,CAAC,CAAC;IACd,IAAI,KAAK,CAAC,aAAa,KAAK,SAAS,IAAI,SAAS,IAAI,KAAK,CAAC,aAAa;QACvE,OAAO,KAAK,CAAC;IACf,MAAM,IAAI,GAAG,EAAE,GAAG,KAAK,EAAE,IAAI,EAAE,OAAO,EAAE,aAAa,EAAE,SAAS,EAAE,CAAC;IACnE,MAAM,CAAC,GAAG,MAAM,UAAU,CAAC,IAAI,CAAC,CAAC;IACjC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC;AAC7B,CAAC,CAAC;AAEF,OAAO,EAAE,kBAAkB,EAAE,CAAC"}
|
|
@@ -28,7 +28,7 @@ type BenchmarkRun = {
|
|
|
28
28
|
};
|
|
29
29
|
type ParsedTranscript = {
|
|
30
30
|
readonly sessionId: string;
|
|
31
|
-
readonly agent: "claude-code" | "codex" | "cursor" | "pi";
|
|
31
|
+
readonly agent: "claude-code" | "codex" | "cursor" | "pi" | "jcode";
|
|
32
32
|
readonly cwd: string | undefined;
|
|
33
33
|
readonly branch: string | undefined;
|
|
34
34
|
readonly model: string | undefined;
|
|
@@ -1,19 +1,11 @@
|
|
|
1
|
-
// Old transcripts carry unbounded tool dumps / pastes; cap per-message content
|
|
2
|
-
// well under the server's 100k backstop so an import can't 400 on size.
|
|
3
1
|
const MAX_MESSAGE_CHARS = 30_000;
|
|
4
2
|
const truncate = (text) => text.length <= MAX_MESSAGE_CHARS
|
|
5
3
|
? text
|
|
6
4
|
: `${text.slice(0, MAX_MESSAGE_CHARS)}\n… [truncated by glen import]`;
|
|
7
5
|
const MAX_SEGMENT_CHARS = 30_000;
|
|
8
|
-
//
|
|
9
|
-
// segments are stored on the message payload). Enforced below in
|
|
10
|
-
// boundSegmentsPayload so an oversized message never 400s the whole turn.
|
|
6
|
+
// Must match the server's per-message payload cap, or an oversized message 400s the whole turn.
|
|
11
7
|
const MAX_PAYLOAD_CHARS = 1_000_000;
|
|
12
8
|
const TRUNCATION_MARKER = "… [truncated by glen]";
|
|
13
|
-
// Deep-truncates every string leaf inside an arbitrary JSON value (recursing
|
|
14
|
-
// into arrays and plain objects, leaving other value types untouched). Used
|
|
15
|
-
// to bound jsonContent, whose heaviest leaves (tool output/input, and the
|
|
16
|
-
// full `raw` block a Write embeds) are otherwise unbounded.
|
|
17
9
|
const truncateJsonStrings = (value, maxChars) => {
|
|
18
10
|
if (typeof value === "string")
|
|
19
11
|
return value.length > maxChars
|
|
@@ -42,22 +34,12 @@ const truncateSegment = (s) => {
|
|
|
42
34
|
}
|
|
43
35
|
: withText;
|
|
44
36
|
};
|
|
45
|
-
// Drops the `raw` key from every segment's jsonContent — it's redundant with
|
|
46
|
-
// the normalized output/input and is the biggest single contributor to an
|
|
47
|
-
// oversized payload.
|
|
48
37
|
const dropRawFromSegments = (segments) => segments.map((s) => {
|
|
49
38
|
if (s.jsonContent === undefined || !("raw" in s.jsonContent))
|
|
50
39
|
return s;
|
|
51
40
|
const { raw: _raw, ...rest } = s.jsonContent;
|
|
52
41
|
return { ...s, jsonContent: rest };
|
|
53
42
|
});
|
|
54
|
-
// Re-truncates jsonContent string leaves AND thinking-segment text to a
|
|
55
|
-
// smaller cap, recursively halving the cap until the serialized payload fits
|
|
56
|
-
// or the cap bottoms out. Never touches a text segment's prose, and never
|
|
57
|
-
// touches a tool_call's `name` (only jsonContent leaves are re-capped, and
|
|
58
|
-
// `name` lives outside jsonContent in practice — segments carry it inside
|
|
59
|
-
// jsonContent alongside output/input, so we re-cap the whole jsonContent
|
|
60
|
-
// object uniformly; the `name` field is short and unaffected by the cap).
|
|
61
43
|
const RECAP_FLOOR_CHARS = 1_000;
|
|
62
44
|
const recapSegments = (segments, capChars) => segments.map((s) => {
|
|
63
45
|
const withJson = s.jsonContent !== undefined
|
|
@@ -76,30 +58,18 @@ const recapSegments = (segments, capChars) => segments.map((s) => {
|
|
|
76
58
|
: withJson;
|
|
77
59
|
});
|
|
78
60
|
const fitsBudget = (segments) => JSON.stringify(segments).length <= MAX_PAYLOAD_CHARS;
|
|
79
|
-
// Recursively halves the recap cap until the payload fits the budget or the
|
|
80
|
-
// cap bottoms out at RECAP_FLOOR_CHARS — never mutates, always returns a new
|
|
81
|
-
// array (or the input array's shape via a pure recursive call).
|
|
82
61
|
const shrinkToFit = (segments, capChars) => {
|
|
83
62
|
const recapped = recapSegments(segments, capChars);
|
|
84
63
|
if (fitsBudget(recapped) || capChars <= RECAP_FLOOR_CHARS)
|
|
85
64
|
return recapped;
|
|
86
65
|
return shrinkToFit(recapped, Math.floor(capChars / 2));
|
|
87
66
|
};
|
|
88
|
-
// Last-resort guarantee (FIX B2): shrinkToFit is best-effort — it stops at
|
|
89
|
-
// RECAP_FLOOR_CHARS even if the payload is still over budget (a message with
|
|
90
|
-
// a very large NUMBER of segments can exceed the cap even with every string
|
|
91
|
-
// leaf floored, since the leaves were never the problem). Drop whole
|
|
92
|
-
// segments, least-valuable first, until the payload fits. `kind:"text"`
|
|
93
|
-
// (prose) is NEVER dropped — the order below only ever removes tool
|
|
94
|
-
// call/result/thinking/compaction segments. Pure recursion, no mutation.
|
|
95
67
|
const DROP_ORDER = [
|
|
96
68
|
"tool_result",
|
|
97
69
|
"compaction",
|
|
98
70
|
"thinking",
|
|
99
71
|
"tool_call",
|
|
100
72
|
];
|
|
101
|
-
// Drops every segment of `kind` in one pass (never touches `text`), then
|
|
102
|
-
// recurses to the next-least-valuable kind if still over budget.
|
|
103
73
|
const dropByKind = (segments, kinds) => {
|
|
104
74
|
if (fitsBudget(segments))
|
|
105
75
|
return [...segments];
|
|
@@ -109,23 +79,11 @@ const dropByKind = (segments, kinds) => {
|
|
|
109
79
|
const dropped = segments.filter((s) => s.kind !== kind);
|
|
110
80
|
return dropByKind(dropped, rest);
|
|
111
81
|
};
|
|
112
|
-
// Absolute final step: even with every non-text segment dropped, pathological
|
|
113
|
-
// prose (e.g. one enormous text segment) could still exceed the cap. Truncate
|
|
114
|
-
// the segments array from the end (never touching the text CONTENT of a kept
|
|
115
|
-
// segment) until it fits, or nothing is left.
|
|
116
82
|
const truncateFromEnd = (segments) => {
|
|
117
83
|
if (segments.length === 0 || fitsBudget(segments))
|
|
118
84
|
return [...segments];
|
|
119
85
|
return truncateFromEnd(segments.slice(0, -1));
|
|
120
86
|
};
|
|
121
|
-
// Enforces the per-message TOTAL payload budget: drop `raw` first (the
|
|
122
|
-
// biggest contributor), then progressively re-truncate jsonContent/thinking
|
|
123
|
-
// text until under budget or the recap cap floors out, then — if STILL over
|
|
124
|
-
// budget — drop whole non-text segments (least-valuable kind first), and as
|
|
125
|
-
// an absolute last resort truncate the segments array itself. Prose
|
|
126
|
-
// (`kind:"text"`) segment text and tool_call `name` are never touched, and no
|
|
127
|
-
// `kind:"text"` segment is ever dropped by dropByKind. Pure — always returns a
|
|
128
|
-
// new array whose serialized length is <= MAX_PAYLOAD_CHARS.
|
|
129
87
|
const boundSegmentsPayload = (segments) => {
|
|
130
88
|
if (fitsBudget(segments))
|
|
131
89
|
return [...segments];
|
|
@@ -138,11 +96,6 @@ const boundSegmentsPayload = (segments) => {
|
|
|
138
96
|
return dropByKind(shrunk, DROP_ORDER);
|
|
139
97
|
};
|
|
140
98
|
const earliestTimestamp = (a, b) => (!a ? b : !b ? a : a < b ? a : b);
|
|
141
|
-
// Group a transcript's messages into turns mirroring live capture: fold
|
|
142
|
-
// consecutive same-role messages (an assistant reply split across transcript
|
|
143
|
-
// lines becomes one message), drop blanks, truncate oversized content, then
|
|
144
|
-
// start a new turn at every user message. A block of assistant messages before
|
|
145
|
-
// the first user message becomes its own leading turn.
|
|
146
99
|
const buildTranscriptTurns = (messages) => {
|
|
147
100
|
const folded = [];
|
|
148
101
|
for (const m of messages) {
|
|
@@ -181,9 +134,6 @@ const buildTranscriptTurns = (messages) => {
|
|
|
181
134
|
: {}),
|
|
182
135
|
}))) {
|
|
183
136
|
const last = turns[turns.length - 1];
|
|
184
|
-
// Roles alternate after folding, so appending an assistant message to the
|
|
185
|
-
// previous turn always yields [user, assistant] (or a lone leading
|
|
186
|
-
// assistant turn when there is no prior user message).
|
|
187
137
|
if (m.role === "user" || !last)
|
|
188
138
|
turns.push([m]);
|
|
189
139
|
else
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"transcript-turns.js","sourceRoot":"","sources":["../../src/_utils/transcript-turns.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"transcript-turns.js","sourceRoot":"","sources":["../../src/_utils/transcript-turns.ts"],"names":[],"mappings":"AA0DA,MAAM,iBAAiB,GAAG,MAAM,CAAC;AAEjC,MAAM,QAAQ,GAAG,CAAC,IAAY,EAAU,EAAE,CACxC,IAAI,CAAC,MAAM,IAAI,iBAAiB;IAC9B,CAAC,CAAC,IAAI;IACN,CAAC,CAAC,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,iBAAiB,CAAC,gCAAgC,CAAC;AAE1E,MAAM,iBAAiB,GAAG,MAAM,CAAC;AAEjC,gGAAgG;AAChG,MAAM,iBAAiB,GAAG,SAAS,CAAC;AAEpC,MAAM,iBAAiB,GAAG,uBAAuB,CAAC;AAElD,MAAM,mBAAmB,GAAG,CAAC,KAAc,EAAE,QAAgB,EAAW,EAAE;IACxE,IAAI,OAAO,KAAK,KAAK,QAAQ;QAC3B,OAAO,KAAK,CAAC,MAAM,GAAG,QAAQ;YAC5B,CAAC,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC,KAAK,iBAAiB,EAAE;YACrD,CAAC,CAAC,KAAK,CAAC;IACZ,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QACtB,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,mBAAmB,CAAC,CAAC,EAAE,QAAQ,CAAC,CAAC,CAAC;IAC5D,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ;QAC7C,OAAO,MAAM,CAAC,WAAW,CACvB,MAAM,CAAC,OAAO,CAAC,KAAgC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC;YAC/D,CAAC;YACD,mBAAmB,CAAC,CAAC,EAAE,QAAQ,CAAC;SACjC,CAAC,CACH,CAAC;IACJ,OAAO,KAAK,CAAC;AACf,CAAC,CAAC;AAEF,MAAM,eAAe,GAAG,CAAC,CAAU,EAAW,EAAE;IAC9C,MAAM,QAAQ,GACZ,CAAC,CAAC,IAAI,KAAK,SAAS,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,GAAG,iBAAiB;QACvD,CAAC,CAAC;YACE,GAAG,CAAC;YACJ,IAAI,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,iBAAiB,CAAC,KAAK,iBAAiB,EAAE;SACpE;QACH,CAAC,CAAC,CAAC,CAAC;IACR,OAAO,QAAQ,CAAC,WAAW,KAAK,SAAS;QACvC,CAAC,CAAC;YACE,GAAG,QAAQ;YACX,WAAW,EAAE,mBAAmB,CAC9B,QAAQ,CAAC,WAAW,EACpB,iBAAiB,CACS;SAC7B;QACH,CAAC,CAAC,QAAQ,CAAC;AACf,CAAC,CAAC;AAEF,MAAM,mBAAmB,GAAG,CAAC,QAA4B,EAAa,EAAE,CACtE,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;IACjB,IAAI,CAAC,CAAC,WAAW,KAAK,SAAS,IAAI,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,WAAW,CAAC;QAAE,OAAO,CAAC,CAAC;IACvE,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,GAAG,CAAC,CAAC,WAAW,CAAC;IAC7C,OAAO,EAAE,GAAG,CAAC,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC;AACrC,CAAC,CAAC,CAAC;AAEL,MAAM,iBAAiB,GAAG,KAAK,CAAC;AAEhC,MAAM,aAAa,GAAG,CACpB,QAA4B,EAC5B,QAAgB,EACL,EAAE,CACb,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE;IACjB,MAAM,QAAQ,GACZ,CAAC,CAAC,WAAW,KAAK,SAAS;QACzB,CAAC,CAAC;YACE,GAAG,CAAC;YACJ,WAAW,EAAE,mBAAmB,CAAC,CAAC,CAAC,WAAW,EAAE,QAAQ,CAGvD;SACF;QACH,CAAC,CAAC,CAAC,CAAC;IACR,OAAO,QAAQ,CAAC,IAAI,KAAK,UAAU;QACjC,QAAQ,CAAC,IAAI,KAAK,SAAS;QAC3B,QAAQ,CAAC,IAAI,CAAC,MAAM,GAAG,QAAQ;QAC/B,CAAC,CAAC;YACE,GAAG,QAAQ;YACX,IAAI,EAAE,GAAG,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,QAAQ,CAAC,KAAK,iBAAiB,EAAE;SAClE;QACH,CAAC,CAAC,QAAQ,CAAC;AACf,CAAC,CAAC,CAAC;AAEL,MAAM,UAAU,GAAG,CAAC,QAA4B,EAAW,EAAE,CAC3D,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,MAAM,IAAI,iBAAiB,CAAC;AAEvD,MAAM,WAAW,GAAG,CAClB,QAA4B,EAC5B,QAAgB,EACL,EAAE;IACb,MAAM,QAAQ,GAAG,aAAa,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;IACnD,IAAI,UAAU,CAAC,QAAQ,CAAC,IAAI,QAAQ,IAAI,iBAAiB;QAAE,OAAO,QAAQ,CAAC;IAC3E,OAAO,WAAW,CAAC,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC;AACzD,CAAC,CAAC;AAEF,MAAM,UAAU,GAA+B;IAC7C,aAAa;IACb,YAAY;IACZ,UAAU;IACV,WAAW;CACZ,CAAC;AAEF,MAAM,UAAU,GAAG,CACjB,QAA4B,EAC5B,KAAiC,EACtB,EAAE;IACb,IAAI,UAAU,CAAC,QAAQ,CAAC;QAAE,OAAO,CAAC,GAAG,QAAQ,CAAC,CAAC;IAC/C,MAAM,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,GAAG,KAAK,CAAC;IAC9B,IAAI,CAAC,IAAI;QAAE,OAAO,eAAe,CAAC,QAAQ,CAAC,CAAC;IAC5C,MAAM,OAAO,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;IACxD,OAAO,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;AACnC,CAAC,CAAC;AAEF,MAAM,eAAe,GAAG,CAAC,QAA4B,EAAa,EAAE;IAClE,IAAI,QAAQ,CAAC,MAAM,KAAK,CAAC,IAAI,UAAU,CAAC,QAAQ,CAAC;QAAE,OAAO,CAAC,GAAG,QAAQ,CAAC,CAAC;IACxE,OAAO,eAAe,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;AAChD,CAAC,CAAC;AAEF,MAAM,oBAAoB,GAAG,CAAC,QAA4B,EAAa,EAAE;IACvE,IAAI,UAAU,CAAC,QAAQ,CAAC;QAAE,OAAO,CAAC,GAAG,QAAQ,CAAC,CAAC;IAC/C,MAAM,UAAU,GAAG,mBAAmB,CAAC,QAAQ,CAAC,CAAC;IACjD,IAAI,UAAU,CAAC,UAAU,CAAC;QAAE,OAAO,UAAU,CAAC;IAC9C,MAAM,MAAM,GAAG,WAAW,CAAC,UAAU,EAAE,iBAAiB,GAAG,CAAC,CAAC,CAAC;IAC9D,IAAI,UAAU,CAAC,MAAM,CAAC;QAAE,OAAO,MAAM,CAAC;IACtC,OAAO,UAAU,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;AACxC,CAAC,CAAC;AAEF,MAAM,iBAAiB,GAAG,CACxB,CAAqB,EACrB,CAAqB,EACD,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAE3D,MAAM,oBAAoB,GAAG,CAC3B,QAAsC,EACpB,EAAE;IACpB,MAAM,MAAM,GAKN,EAAE,CAAC;IACT,KAAK,MAAM,CAAC,IAAI,QAAQ,EAAE,CAAC;QACzB,MAAM,IAAI,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;QAC3B,IAAI,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,QAAQ,CAAC,MAAM,KAAK,CAAC,CAAC;YAAE,SAAS;QAChE,MAAM,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QACvC,IAAI,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC;YACjC,IAAI,CAAC,OAAO,GAAG,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YACjE,MAAM,UAAU,GAAG,iBAAiB,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC,CAAC,UAAU,CAAC,CAAC;YACpE,IAAI,UAAU;gBAAE,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;YAC7C,IAAI,CAAC,CAAC,QAAQ,EAAE,CAAC;gBACf,IAAI,CAAC,IAAI,CAAC,QAAQ;oBAAE,IAAI,CAAC,QAAQ,GAAG,EAAE,CAAC;gBACvC,IAAI,CAAC,QAAQ,GAAG,CAAC,GAAG,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC;YACpD,CAAC;QACH,CAAC;;YACC,MAAM,CAAC,IAAI,CAAC;gBACV,IAAI,EAAE,CAAC,CAAC,IAAI;gBACZ,OAAO,EAAE,IAAI;gBACb,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACrD,GAAG,CAAC,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC;oBACrC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,GAAG,CAAC,CAAC,QAAQ,CAAC,EAAE;oBAC/B,CAAC,CAAC,EAAE,CAAC;aACR,CAAC,CAAC;IACP,CAAC;IACD,MAAM,KAAK,GAKH,EAAE,CAAC;IACX,KAAK,MAAM,CAAC,IAAI,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACjC,IAAI,EAAE,CAAC,CAAC,IAAI;QACZ,OAAO,EAAE,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC;QAC5B,GAAG,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACrD,GAAG,CAAC,CAAC,CAAC,QAAQ,IAAI,CAAC,CAAC,QAAQ,CAAC,MAAM,GAAG,CAAC;YACrC,CAAC,CAAC,EAAE,QAAQ,EAAE,oBAAoB,CAAC,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,EAAE;YACrE,CAAC,CAAC,EAAE,CAAC;KACR,CAAC,CAAC,EAAE,CAAC;QACJ,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QACrC,IAAI,CAAC,CAAC,IAAI,KAAK,MAAM,IAAI,CAAC,IAAI;YAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;;YAC3C,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IACpB,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC,CAAC;AAEF,OAAO,EAAE,oBAAoB,EAAE,CAAC"}
|
|
@@ -1,7 +1,3 @@
|
|
|
1
|
-
// Local pairing store for agents whose hooks provide no transcript file
|
|
2
|
-
// (Cursor): beforeSubmitPrompt remembers the prompt, afterAgentResponse
|
|
3
|
-
// remembers the assistant text, and the turn-end ingest pairs them.
|
|
4
|
-
// Best-effort by design — every fs failure degrades to "no cached turn".
|
|
5
1
|
import { mkdir, readFile, rename, writeFile } from "node:fs/promises";
|
|
6
2
|
import { homedir } from "node:os";
|
|
7
3
|
import { dirname, join } from "node:path";
|
|
@@ -34,13 +30,10 @@ const writeCache = async (cache) => {
|
|
|
34
30
|
await writeFile(tmp, JSON.stringify(Object.fromEntries(entries)));
|
|
35
31
|
await rename(tmp, path);
|
|
36
32
|
}
|
|
37
|
-
catch {
|
|
38
|
-
// best-effort — a hook must never fail on cache I/O
|
|
39
|
-
}
|
|
33
|
+
catch { }
|
|
40
34
|
};
|
|
41
35
|
const rememberPrompt = async (conversationId, prompt) => {
|
|
42
36
|
const cache = await readCache();
|
|
43
|
-
// A new prompt starts a new turn — drop the previous assistant text.
|
|
44
37
|
cache[conversationId] = { prompt, updatedAt: Date.now() };
|
|
45
38
|
await writeCache(cache);
|
|
46
39
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"turn-cache.js","sourceRoot":"","sources":["../../src/_utils/turn-cache.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"turn-cache.js","sourceRoot":"","sources":["../../src/_utils/turn-cache.ts"],"names":[],"mappings":"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"}
|
package/dist/_utils/update.d.ts
CHANGED
|
@@ -13,17 +13,7 @@ type SelfUpdateResult = {
|
|
|
13
13
|
readonly stderrTail?: string;
|
|
14
14
|
};
|
|
15
15
|
declare const runSelfUpdate: () => SelfUpdateResult;
|
|
16
|
-
/** Detached, TTL'd: never blocks the calling turn. Safe to call from every command. */
|
|
17
16
|
declare const maybeSpawnBackgroundUpdate: () => Promise<void>;
|
|
18
|
-
/** 426 from the server: update NOW, then re-exec the (new) global bin with the original args. */
|
|
19
17
|
declare const handle426AndReexec: (argv: string[]) => never;
|
|
20
|
-
/**
|
|
21
|
-
* 426 in a hook context: hint + detached background update, never block or
|
|
22
|
-
* re-exec — the hook has a hard timeout and Claude/Codex inject its stdout
|
|
23
|
-
* as context, so a synchronous npm install here would block the user's turn.
|
|
24
|
-
* Returns whether a background update was actually spawned, so callers can
|
|
25
|
-
* pick an honest agent-facing hint (a gated spawn means nothing is updating —
|
|
26
|
-
* the user has to run the install themselves).
|
|
27
|
-
*/
|
|
28
18
|
declare const handle426InHook: () => boolean;
|
|
29
19
|
export { lockPath, shouldCheck, recordCheck, fetchLatest, newer, isNpmGlobalInstall, runSelfUpdate, maybeSpawnBackgroundUpdate, handle426AndReexec, handle426InHook, cachedNewerVersion, };
|
package/dist/_utils/update.js
CHANGED
|
@@ -4,14 +4,12 @@ import { homedir } from "node:os";
|
|
|
4
4
|
import { dirname, join } from "node:path";
|
|
5
5
|
import { runBin } from "./run-bin.js";
|
|
6
6
|
import { cliVersion } from "./version.js";
|
|
7
|
-
// Mirrors how codex-hooks-setup.ts derives its marker path from statePath():
|
|
8
|
-
// when GLEN_STATE_PATH is set (tests), the glen dir is its dirname.
|
|
9
7
|
const glenDir = () => process.env.GLEN_STATE_PATH
|
|
10
8
|
? dirname(process.env.GLEN_STATE_PATH)
|
|
11
9
|
: join(homedir(), ".glen");
|
|
12
10
|
const checkPath = () => join(glenDir(), "update-check.json");
|
|
13
11
|
const lockPath = () => join(glenDir(), "update.lock");
|
|
14
|
-
const CHECK_INTERVAL_MS = 60 * 60 * 1000;
|
|
12
|
+
const CHECK_INTERVAL_MS = 60 * 60 * 1000;
|
|
15
13
|
const autoUpdateDisabled = () => process.env.GLEN_NO_AUTO_UPDATE === "1" ||
|
|
16
14
|
process.env.CI === "true" ||
|
|
17
15
|
process.env.CI === "1";
|
|
@@ -31,9 +29,7 @@ const recordCheck = (now, latest) => {
|
|
|
31
29
|
mkdirSync(glenDir(), { recursive: true });
|
|
32
30
|
writeFileSync(checkPath(), JSON.stringify({ lastCheckedAt: now, latest }));
|
|
33
31
|
}
|
|
34
|
-
catch {
|
|
35
|
-
/* best-effort */
|
|
36
|
-
}
|
|
32
|
+
catch { }
|
|
37
33
|
};
|
|
38
34
|
const fetchLatest = async () => {
|
|
39
35
|
try {
|
|
@@ -49,8 +45,6 @@ const fetchLatest = async () => {
|
|
|
49
45
|
return null;
|
|
50
46
|
}
|
|
51
47
|
};
|
|
52
|
-
// Reads the TTL'd update-check cache (never hits the network). Returns the
|
|
53
|
-
// newer known version, else null.
|
|
54
48
|
const cachedNewerVersion = () => {
|
|
55
49
|
try {
|
|
56
50
|
const data = JSON.parse(readFileSync(checkPath(), "utf8"));
|
|
@@ -83,10 +77,8 @@ const isNpmGlobalInstall = () => {
|
|
|
83
77
|
}
|
|
84
78
|
};
|
|
85
79
|
const LOCK_TTL_MS = 10 * 60 * 1000;
|
|
86
|
-
//
|
|
87
|
-
//
|
|
88
|
-
// than LOCK_TTL_MS (e.g. a previous update was SIGKILLed mid-install) — is
|
|
89
|
-
// removed and the mkdir retried ONCE.
|
|
80
|
+
// A stale lock (no readable start marker, or older than LOCK_TTL_MS, e.g. a SIGKILLed install)
|
|
81
|
+
// is removed and the mkdir retried once.
|
|
90
82
|
const acquireUpdateLock = () => {
|
|
91
83
|
const tryMkdir = () => {
|
|
92
84
|
try {
|
|
@@ -98,9 +90,7 @@ const acquireUpdateLock = () => {
|
|
|
98
90
|
try {
|
|
99
91
|
writeFileSync(join(lockPath(), "started"), String(Date.now()));
|
|
100
92
|
}
|
|
101
|
-
catch {
|
|
102
|
-
// best-effort: a missing marker reads as stale to the next contender
|
|
103
|
-
}
|
|
93
|
+
catch { }
|
|
104
94
|
return true;
|
|
105
95
|
};
|
|
106
96
|
if (tryMkdir())
|
|
@@ -145,7 +135,6 @@ const runSelfUpdate = () => {
|
|
|
145
135
|
rmSync(lockPath(), { recursive: true, force: true });
|
|
146
136
|
}
|
|
147
137
|
};
|
|
148
|
-
/** Detached, TTL'd: never blocks the calling turn. Safe to call from every command. */
|
|
149
138
|
const maybeSpawnBackgroundUpdate = async () => {
|
|
150
139
|
const now = Date.now();
|
|
151
140
|
if (!shouldCheck(now))
|
|
@@ -164,7 +153,6 @@ const maybeSpawnBackgroundUpdate = async () => {
|
|
|
164
153
|
});
|
|
165
154
|
child.unref();
|
|
166
155
|
};
|
|
167
|
-
/** 426 from the server: update NOW, then re-exec the (new) global bin with the original args. */
|
|
168
156
|
const handle426AndReexec = (argv) => {
|
|
169
157
|
if (process.env.GLEN_REEXEC === "1" ||
|
|
170
158
|
autoUpdateDisabled() ||
|
|
@@ -173,8 +161,7 @@ const handle426AndReexec = (argv) => {
|
|
|
173
161
|
process.stderr.write("[glen] this CLI is below the server's minimum version; run `glen update` (or `npm i -g @tryglen/cli@latest`).\n");
|
|
174
162
|
process.exit(1);
|
|
175
163
|
}
|
|
176
|
-
// Re-exec via process.execPath + argv[1]
|
|
177
|
-
// off-PATH and exits silently).
|
|
164
|
+
// Re-exec via process.execPath + argv[1]: a bare "glen" fails off-PATH and exits silently.
|
|
178
165
|
const r = spawnSync(process.execPath, [process.argv[1] ?? "glen", ...argv], {
|
|
179
166
|
stdio: "inherit",
|
|
180
167
|
env: { ...process.env, GLEN_REEXEC: "1" },
|
|
@@ -185,23 +172,14 @@ const handle426AndReexec = (argv) => {
|
|
|
185
172
|
}
|
|
186
173
|
process.exit(r.status);
|
|
187
174
|
};
|
|
188
|
-
|
|
189
|
-
* 426 in a hook context: hint + detached background update, never block or
|
|
190
|
-
* re-exec — the hook has a hard timeout and Claude/Codex inject its stdout
|
|
191
|
-
* as context, so a synchronous npm install here would block the user's turn.
|
|
192
|
-
* Returns whether a background update was actually spawned, so callers can
|
|
193
|
-
* pick an honest agent-facing hint (a gated spawn means nothing is updating —
|
|
194
|
-
* the user has to run the install themselves).
|
|
195
|
-
*/
|
|
175
|
+
// Never block or re-exec here: hooks have a hard timeout, so a synchronous npm install would stall the user's turn.
|
|
196
176
|
const handle426InHook = () => {
|
|
197
177
|
const spawned = (() => {
|
|
198
178
|
if (autoUpdateDisabled() || !isNpmGlobalInstall())
|
|
199
179
|
return false;
|
|
200
180
|
try {
|
|
201
181
|
const c = spawn(process.execPath, [process.argv[1] ?? "glen", "__self-update"], { detached: true, stdio: "ignore" });
|
|
202
|
-
c.on("error", () => {
|
|
203
|
-
/* best-effort */
|
|
204
|
-
});
|
|
182
|
+
c.on("error", () => { });
|
|
205
183
|
c.unref();
|
|
206
184
|
return true;
|
|
207
185
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"update.js","sourceRoot":"","sources":["../../src/_utils/update.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AACpE,OAAO,EACL,SAAS,EACT,YAAY,EACZ,YAAY,EACZ,MAAM,EACN,aAAa,GACd,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtC,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C,
|
|
1
|
+
{"version":3,"file":"update.js","sourceRoot":"","sources":["../../src/_utils/update.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AACpE,OAAO,EACL,SAAS,EACT,YAAY,EACZ,YAAY,EACZ,MAAM,EACN,aAAa,GACd,MAAM,SAAS,CAAC;AACjB,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACtC,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C,MAAM,OAAO,GAAG,GAAW,EAAE,CAC3B,OAAO,CAAC,GAAG,CAAC,eAAe;IACzB,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC;IACtC,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,OAAO,CAAC,CAAC;AAC/B,MAAM,SAAS,GAAG,GAAW,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,mBAAmB,CAAC,CAAC;AACrE,MAAM,QAAQ,GAAG,GAAW,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,aAAa,CAAC,CAAC;AAC9D,MAAM,iBAAiB,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;AAEzC,MAAM,kBAAkB,GAAG,GAAY,EAAE,CACvC,OAAO,CAAC,GAAG,CAAC,mBAAmB,KAAK,GAAG;IACvC,OAAO,CAAC,GAAG,CAAC,EAAE,KAAK,MAAM;IACzB,OAAO,CAAC,GAAG,CAAC,EAAE,KAAK,GAAG,CAAC;AAEzB,MAAM,WAAW,GAAG,CAAC,GAAW,EAAW,EAAE;IAC3C,IAAI,kBAAkB,EAAE;QAAE,OAAO,KAAK,CAAC;IACvC,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,SAAS,EAAE,EAAE,MAAM,CAAC,CAExD,CAAC;QACF,OAAO,CAAC,IAAI,CAAC,aAAa,IAAI,GAAG,GAAG,IAAI,CAAC,aAAa,GAAG,iBAAiB,CAAC;IAC7E,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,WAAW,GAAG,CAAC,GAAW,EAAE,MAAqB,EAAQ,EAAE;IAC/D,IAAI,CAAC;QACH,SAAS,CAAC,OAAO,EAAE,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC1C,aAAa,CAAC,SAAS,EAAE,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,aAAa,EAAE,GAAG,EAAE,MAAM,EAAE,CAAC,CAAC,CAAC;IAC7E,CAAC;IAAC,MAAM,CAAC,CAAA,CAAC;AACZ,CAAC,CAAC;AAEF,MAAM,WAAW,GAAG,KAAK,IAA4B,EAAE;IACrD,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,KAAK,CACrB,kDAAkD,EAClD;YACE,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,IAAI,CAAC;SAClC,CACF,CAAC;QACF,IAAI,CAAC,GAAG,CAAC,EAAE;YAAE,OAAO,IAAI,CAAC;QACzB,MAAM,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAyB,CAAC;QACxD,OAAO,OAAO,IAAI,CAAC,OAAO,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC;IAChE,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,kBAAkB,GAAG,GAAkB,EAAE;IAC7C,IAAI,CAAC;QACH,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,SAAS,EAAE,EAAE,MAAM,CAAC,CAExD,CAAC;QACF,OAAO,IAAI,CAAC,MAAM,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC;IAC5E,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,KAAK,GAAG,CAAC,CAAS,EAAE,CAAS,EAAW,EAAE;IAC9C,MAAM,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACpC,MAAM,EAAE,GAAG,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC;IACpC,KAAK,MAAM,CAAC,IAAI,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;QAC1B,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC;YAAE,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;IACxE,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC,CAAC;AAEF,MAAM,kBAAkB,GAAG,GAAY,EAAE;IACvC,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,YAAY,CAAC,KAAK,EAAE,CAAC,QAAQ,EAAE,IAAI,CAAC,EAAE;YACnD,QAAQ,EAAE,MAAM;YAChB,OAAO,EAAE,IAAI;SACd,CAAC,CAAC,IAAI,EAAE,CAAC;QACV,MAAM,OAAO,GAAG,YAAY,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;QACpD,OAAO,OAAO,CAAC,UAAU,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC;IAClD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,WAAW,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;AAEnC,+FAA+F;AAC/F,yCAAyC;AACzC,MAAM,iBAAiB,GAAG,GAAY,EAAE;IACtC,MAAM,QAAQ,GAAG,GAAY,EAAE;QAC7B,IAAI,CAAC;YACH,SAAS,CAAC,QAAQ,EAAE,CAAC,CAAC;QACxB,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,KAAK,CAAC;QACf,CAAC;QACD,IAAI,CAAC;YACH,aAAa,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,SAAS,CAAC,EAAE,MAAM,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC,CAAC;QACjE,CAAC;QAAC,MAAM,CAAC,CAAA,CAAC;QACV,OAAO,IAAI,CAAC;IACd,CAAC,CAAC;IACF,IAAI,QAAQ,EAAE;QAAE,OAAO,IAAI,CAAC;IAC5B,MAAM,SAAS,GAAG,CAAC,GAAG,EAAE;QACtB,IAAI,CAAC;YACH,MAAM,CAAC,GAAG,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,QAAQ,EAAE,EAAE,SAAS,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;YACpE,OAAO,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;QACvC,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC,CAAC,EAAE,CAAC;IACL,IAAI,SAAS,KAAK,IAAI,IAAI,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,IAAI,WAAW;QAAE,OAAO,KAAK,CAAC;IAC9E,IAAI,CAAC;QACH,MAAM,CAAC,QAAQ,EAAE,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IACvD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;IACD,OAAO,QAAQ,EAAE,CAAC;AACpB,CAAC,CAAC;AAUF,MAAM,aAAa,GAAG,GAAqB,EAAE;IAC3C,IAAI,CAAC,iBAAiB,EAAE;QAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC;IACjE,IAAI,CAAC;QACH,MAAM,CAAC,GAAG,MAAM,CAAC,KAAK,EAAE,CAAC,SAAS,EAAE,IAAI,EAAE,qBAAqB,CAAC,EAAE;YAChE,SAAS,EAAE,OAAO;SACnB,CAAC,CAAC;QACH,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;YACV,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,UAAU,IAAI,CAAC,CAAC,KAAK,CAAC,UAAU,CAAC;YAC5D,OAAO;gBACL,EAAE,EAAE,KAAK;gBACT,MAAM,EAAE,YAAY;gBACpB,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;aACtC,CAAC;QACJ,CAAC;QACD,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,CAAC;IACtB,CAAC;YAAS,CAAC;QACT,MAAM,CAAC,QAAQ,EAAE,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC;IACvD,CAAC;AACH,CAAC,CAAC;AAEF,MAAM,0BAA0B,GAAG,KAAK,IAAmB,EAAE;IAC3D,MAAM,GAAG,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IACvB,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC;QAAE,OAAO;IAC9B,MAAM,MAAM,GAAG,MAAM,WAAW,EAAE,CAAC;IACnC,WAAW,CAAC,GAAG,EAAE,MAAM,CAAC,CAAC;IACzB,IAAI,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,UAAU,CAAC;QAAE,OAAO;IAClD,IAAI,CAAC,kBAAkB,EAAE,EAAE,CAAC;QAC1B,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,WAAW,MAAM,4BAA4B,UAAU,oEAAoE,CAC5H,CAAC;QACF,OAAO;IACT,CAAC;IACD,MAAM,KAAK,GAAG,KAAK,CACjB,OAAO,CAAC,QAAQ,EAChB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,MAAM,EAAE,eAAe,CAAC,EAC5C,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,CACpC,CAAC;IACF,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;QACrB,0EAA0E;IAC5E,CAAC,CAAC,CAAC;IACH,KAAK,CAAC,KAAK,EAAE,CAAC;AAChB,CAAC,CAAC;AAEF,MAAM,kBAAkB,GAAG,CAAC,IAAc,EAAS,EAAE;IACnD,IACE,OAAO,CAAC,GAAG,CAAC,WAAW,KAAK,GAAG;QAC/B,kBAAkB,EAAE;QACpB,CAAC,kBAAkB,EAAE;QACrB,CAAC,aAAa,EAAE,CAAC,EAAE,EACnB,CAAC;QACD,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,iHAAiH,CAClH,CAAC;QACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IACD,2FAA2F;IAC3F,MAAM,CAAC,GAAG,SAAS,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,MAAM,EAAE,GAAG,IAAI,CAAC,EAAE;QAC1E,KAAK,EAAE,SAAS;QAChB,GAAG,EAAE,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE,WAAW,EAAE,GAAG,EAAE;KAC1C,CAAC,CAAC;IACH,IAAI,CAAC,CAAC,MAAM,KAAK,IAAI,IAAI,CAAC,CAAC,KAAK,EAAE,CAAC;QACjC,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,kFAAkF,CACnF,CAAC;QACF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IACD,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;AACzB,CAAC,CAAC;AAEF,oHAAoH;AACpH,MAAM,eAAe,GAAG,GAAY,EAAE;IACpC,MAAM,OAAO,GAAG,CAAC,GAAG,EAAE;QACpB,IAAI,kBAAkB,EAAE,IAAI,CAAC,kBAAkB,EAAE;YAAE,OAAO,KAAK,CAAC;QAChE,IAAI,CAAC;YACH,MAAM,CAAC,GAAG,KAAK,CACb,OAAO,CAAC,QAAQ,EAChB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,MAAM,EAAE,eAAe,CAAC,EAC5C,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,CACpC,CAAC;YACF,CAAC,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;YACxB,CAAC,CAAC,KAAK,EAAE,CAAC;YACV,OAAO,IAAI,CAAC;QACd,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,KAAK,CAAC;QACf,CAAC;IACH,CAAC,CAAC,EAAE,CAAC;IACL,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,OAAO;QACL,CAAC,CAAC,mHAAmH;QACrH,CAAC,CAAC,kHAAkH,CACvH,CAAC;IACF,OAAO,OAAO,CAAC;AACjB,CAAC,CAAC;AAEF,OAAO,EACL,QAAQ,EACR,WAAW,EACX,WAAW,EACX,WAAW,EACX,KAAK,EACL,kBAAkB,EAClB,aAAa,EACb,0BAA0B,EAC1B,kBAAkB,EAClB,eAAe,EACf,kBAAkB,GACnB,CAAC"}
|
package/dist/_utils/version.js
CHANGED
|
@@ -1,13 +1,10 @@
|
|
|
1
1
|
import { readFileSync } from "node:fs";
|
|
2
2
|
import { dirname, join } from "node:path";
|
|
3
3
|
import { fileURLToPath } from "node:url";
|
|
4
|
-
//
|
|
5
|
-
// Works from both src/_utils/ (vitest runs TS directly) and dist/_utils/ (built)
|
|
6
|
-
// because both are exactly two levels deep from the package root.
|
|
4
|
+
// Works from src/_utils (vitest) and dist/_utils (built): both are two levels below package.json.
|
|
7
5
|
const pkgPath = join(dirname(fileURLToPath(import.meta.url)), "..", "..", "package.json");
|
|
8
|
-
// A corrupt install
|
|
9
|
-
//
|
|
10
|
-
// older than any published version, so the update paths still fire.
|
|
6
|
+
// A corrupt install must not crash every command (hooks included) at import time.
|
|
7
|
+
// 0.0.0 is older than any release, so the update paths still fire.
|
|
11
8
|
const cliVersion = (() => {
|
|
12
9
|
try {
|
|
13
10
|
const v = JSON.parse(readFileSync(pkgPath, "utf8")).version;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/_utils/version.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,
|
|
1
|
+
{"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/_utils/version.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,kGAAkG;AAClG,MAAM,OAAO,GAAG,IAAI,CAClB,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EACvC,IAAI,EACJ,IAAI,EACJ,cAAc,CACf,CAAC;AAEF,kFAAkF;AAClF,mEAAmE;AACnE,MAAM,UAAU,GAAG,CAAC,GAAG,EAAE;IACvB,IAAI,CAAC;QACH,MAAM,CAAC,GACL,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,CACzC,CAAC,OAAO,CAAC;QACV,OAAO,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC;IAC7C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,OAAO,CAAC;IACjB,CAAC;AACH,CAAC,CAAC,EAAE,CAAC;AAEL,OAAO,EAAE,UAAU,EAAE,CAAC"}
|
package/dist/_utils/which.d.ts
CHANGED
package/dist/_utils/which.js
CHANGED
|
@@ -1,9 +1,4 @@
|
|
|
1
1
|
import { findBin } from "./find-bin.js";
|
|
2
|
-
/**
|
|
3
|
-
* True when the named agent binary is resolvable (PATH, well-known macOS
|
|
4
|
-
* dirs, login-shell PATH, or a persisted `glen install --<bin>-path`
|
|
5
|
-
* override). See find-bin.ts.
|
|
6
|
-
*/
|
|
7
2
|
const isInstalled = (bin) => findBin(bin) !== null;
|
|
8
3
|
export { isInstalled };
|
|
9
4
|
//# sourceMappingURL=which.js.map
|
package/dist/_utils/which.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"which.js","sourceRoot":"","sources":["../../src/_utils/which.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAExC
|
|
1
|
+
{"version":3,"file":"which.js","sourceRoot":"","sources":["../../src/_utils/which.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,eAAe,CAAC;AAExC,MAAM,WAAW,GAAG,CAAC,GAAW,EAAW,EAAE,CAAC,OAAO,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC;AAEpE,OAAO,EAAE,WAAW,EAAE,CAAC"}
|
|
@@ -1,8 +1,6 @@
|
|
|
1
1
|
import { execFileSync } from "node:child_process";
|
|
2
2
|
import { readFileSync } from "node:fs";
|
|
3
3
|
import { readSessionForCwd } from "./session-map.js";
|
|
4
|
-
// Runtime for `glen git-hooks prepare-commit-msg <msgFile>`. Appends a
|
|
5
|
-
// `Glen-Conversation: <id>` trailer. Best-effort: never throws, never blocks a commit.
|
|
6
4
|
const writeCommitTrailer = async (msgFile) => {
|
|
7
5
|
if (!msgFile)
|
|
8
6
|
return;
|
|
@@ -21,9 +19,7 @@ const writeCommitTrailer = async (msgFile) => {
|
|
|
21
19
|
msgFile,
|
|
22
20
|
], { stdio: ["ignore", "ignore", "ignore"], timeout: 500 });
|
|
23
21
|
}
|
|
24
|
-
catch {
|
|
25
|
-
// best-effort — a failed trailer must never block the commit
|
|
26
|
-
}
|
|
22
|
+
catch { }
|
|
27
23
|
};
|
|
28
24
|
export { writeCommitTrailer };
|
|
29
25
|
//# sourceMappingURL=write-commit-trailer.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"write-commit-trailer.js","sourceRoot":"","sources":["../../src/_utils/write-commit-trailer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAErD,
|
|
1
|
+
{"version":3,"file":"write-commit-trailer.js","sourceRoot":"","sources":["../../src/_utils/write-commit-trailer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAErD,MAAM,kBAAkB,GAAG,KAAK,EAAE,OAAe,EAAiB,EAAE;IAClE,IAAI,CAAC,OAAO;QAAE,OAAO;IACrB,IAAI,CAAC;QACH,MAAM,cAAc,GAAG,MAAM,iBAAiB,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;QAC9D,IAAI,CAAC,cAAc;YAAE,OAAO;QAC5B,MAAM,OAAO,GAAG,YAAY,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAC9C,IAAI,OAAO,CAAC,QAAQ,CAAC,oBAAoB,CAAC;YAAE,OAAO;QACnD,YAAY,CACV,KAAK,EACL;YACE,oBAAoB;YACpB,YAAY;YACZ,WAAW;YACX,sBAAsB,cAAc,EAAE;YACtC,OAAO;SACR,EACD,EAAE,KAAK,EAAE,CAAC,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC,EAAE,OAAO,EAAE,GAAG,EAAE,CACxD,CAAC;IACJ,CAAC;IAAC,MAAM,CAAC,CAAA,CAAC;AACZ,CAAC,CAAC;AAEF,OAAO,EAAE,kBAAkB,EAAE,CAAC"}
|