@tryglen/cli 0.15.0 → 0.17.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (48) hide show
  1. package/README.md +1 -0
  2. package/dist/_utils/agent-adapter.js +14 -0
  3. package/dist/_utils/agent-adapter.js.map +1 -1
  4. package/dist/_utils/collect-import-files.d.ts +4 -0
  5. package/dist/_utils/collect-import-files.js +55 -0
  6. package/dist/_utils/collect-import-files.js.map +1 -0
  7. package/dist/_utils/config.d.ts +2 -0
  8. package/dist/_utils/config.js +3 -0
  9. package/dist/_utils/config.js.map +1 -1
  10. package/dist/_utils/detect-transcript-format.d.ts +2 -0
  11. package/dist/_utils/detect-transcript-format.js +53 -0
  12. package/dist/_utils/detect-transcript-format.js.map +1 -0
  13. package/dist/_utils/parse-claude-transcript.d.ts +3 -0
  14. package/dist/_utils/parse-claude-transcript.js +124 -0
  15. package/dist/_utils/parse-claude-transcript.js.map +1 -0
  16. package/dist/_utils/parse-codex-transcript.d.ts +3 -0
  17. package/dist/_utils/parse-codex-transcript.js +111 -0
  18. package/dist/_utils/parse-codex-transcript.js.map +1 -0
  19. package/dist/_utils/parse-cursor-db.d.ts +5 -0
  20. package/dist/_utils/parse-cursor-db.js +227 -0
  21. package/dist/_utils/parse-cursor-db.js.map +1 -0
  22. package/dist/_utils/transcript-turns.d.ts +19 -0
  23. package/dist/_utils/transcript-turns.js +41 -0
  24. package/dist/_utils/transcript-turns.js.map +1 -0
  25. package/dist/_utils/turn-cache.d.ts +7 -0
  26. package/dist/_utils/turn-cache.js +63 -0
  27. package/dist/_utils/turn-cache.js.map +1 -0
  28. package/dist/bin.js +33 -13
  29. package/dist/bin.js.map +1 -1
  30. package/dist/commands/doctor.js +6 -0
  31. package/dist/commands/doctor.js.map +1 -1
  32. package/dist/commands/import.d.ts +7 -0
  33. package/dist/commands/import.js +236 -0
  34. package/dist/commands/import.js.map +1 -0
  35. package/dist/commands/ingest.js +79 -24
  36. package/dist/commands/ingest.js.map +1 -1
  37. package/dist/commands/install.js +42 -2
  38. package/dist/commands/install.js.map +1 -1
  39. package/dist/commands/onboard.js +1 -1
  40. package/dist/commands/onboard.js.map +1 -1
  41. package/dist/commands/pr-link.js +23 -10
  42. package/dist/commands/pr-link.js.map +1 -1
  43. package/dist/commands/session-start.d.ts +6 -7
  44. package/dist/commands/session-start.js +30 -10
  45. package/dist/commands/session-start.js.map +1 -1
  46. package/dist/commands/uninstall.js +5 -1
  47. package/dist/commands/uninstall.js.map +1 -1
  48. package/package.json +1 -1
@@ -1 +1 @@
1
- {"version":3,"file":"onboard.js","sourceRoot":"","sources":["../../src/commands/onboard.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACvE,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAC3D,OAAO,EAAe,EAAE,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAEvC,0EAA0E;AAC1E,yEAAyE;AACzE,2EAA2E;AAC3E,MAAM,YAAY,GAAG,KAAK,IAA+C,EAAE;IACzE,MAAM,KAAK,GAAG,MAAM,eAAe,EAAE,CAAC;IACtC,IAAI,KAAK,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK;QAAE,OAAO,EAAE,CAAC,MAAM,CAAC,CAAC;IAEtD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,uCAAuC,CAAC,CAAC;IAE9D,uEAAuE;IACvE,yEAAyE;IACzE,kDAAkD;IAClD,MAAM,SAAS,GAAG,MAAM,OAAO,EAAE,CAAC;IAClC,IAAI,CAAC,SAAS,CAAC,EAAE;QAAE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;IAEzE,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,uEAAuE;QACrE,kEAAkE,CACrE,CAAC;IACF,OAAO,EAAE,CAAC,KAAK,CAAC,CAAC;AACnB,CAAC,CAAC;AAEF,OAAO,EAAE,YAAY,EAAE,CAAC"}
1
+ {"version":3,"file":"onboard.js","sourceRoot":"","sources":["../../src/commands/onboard.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,cAAc,EAAE,MAAM,wBAAwB,CAAC;AACvE,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAC3D,OAAO,EAAe,EAAE,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAEvC,0EAA0E;AAC1E,yEAAyE;AACzE,2EAA2E;AAC3E,MAAM,YAAY,GAAG,KAAK,IAA+C,EAAE;IACzE,MAAM,KAAK,GAAG,MAAM,eAAe,EAAE,CAAC;IACtC,IAAI,KAAK,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,KAAK;QAAE,OAAO,EAAE,CAAC,MAAM,CAAC,CAAC;IAEtD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,uCAAuC,CAAC,CAAC;IAE9D,uEAAuE;IACvE,yEAAyE;IACzE,kDAAkD;IAClD,MAAM,SAAS,GAAG,MAAM,OAAO,EAAE,CAAC;IAClC,IAAI,CAAC,SAAS,CAAC,EAAE;QAAE,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,cAAc,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,CAAC;IAEzE,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,gFAAgF;QAC9E,kEAAkE,CACrE,CAAC;IACF,OAAO,EAAE,CAAC,KAAK,CAAC,CAAC;AACnB,CAAC,CAAC;AAEF,OAAO,EAAE,YAAY,EAAE,CAAC"}
@@ -23,11 +23,11 @@ const textFrom = (v) => {
23
23
  };
24
24
  // `glen pr-link [--agent <agent>]` — PostToolUse hook body. Reads the tool event
25
25
  // on stdin, and if the Bash command/output surfaced a GitHub PR URL, injects the
26
- // matching Glen review link. `--agent` is accepted for hook-line uniformity but
27
- // not branched on: PostToolUse requires the hookSpecificOutput envelope for BOTH
28
- // agents (plain stdout is debug-only on this event). Never throws, never blocks.
26
+ // matching Glen review link. `--agent cursor` branches: Cursor's afterShellExecution
27
+ // payload is normalized (top-level command/output → tool_input/tool_response) and
28
+ // stdout is suppressed (the review-link instruction reaches Cursor via sessionStart
29
+ // instead). Claude/codex keep the hookSpecificOutput envelope. Never throws, never blocks.
29
30
  const prLink = async (agent) => {
30
- void agent;
31
31
  const raw = await readStdin();
32
32
  const event = (() => {
33
33
  try {
@@ -39,6 +39,14 @@ const prLink = async (agent) => {
39
39
  })();
40
40
  if (!event)
41
41
  return;
42
+ // Cursor's afterShellExecution carries the shell command/output at the top
43
+ // level; normalize to the claude PostToolUse shape so recordCommitAnchor and
44
+ // the haystack logic handle one shape.
45
+ if (typeof event.command === "string" && event.tool_input === undefined) {
46
+ event.tool_input = { command: event.command };
47
+ if (event.tool_response === undefined && typeof event.output === "string")
48
+ event.tool_response = event.output;
49
+ }
42
50
  // Writer A (commit anchoring): best-effort, awaited so the POST completes
43
51
  // before this short-lived hook process exits. Never throws.
44
52
  await recordCommitAnchor(event);
@@ -56,12 +64,17 @@ const prLink = async (agent) => {
56
64
  const links = prs
57
65
  .map((p) => `Glen review page for this PR: ${buildReviewUrl(p)}`)
58
66
  .join("\n");
59
- process.stdout.write(JSON.stringify({
60
- hookSpecificOutput: {
61
- hookEventName: "PostToolUse",
62
- additionalContext: `${links}\nSurface the Glen review link alongside the GitHub PR link.`,
63
- },
64
- }));
67
+ // Cursor's afterShellExecution ignores hook output — never emit the envelope
68
+ // there (the review-link instruction reaches cursor via sessionStart instead).
69
+ const suppressOutput = agent === "cursor";
70
+ if (!suppressOutput) {
71
+ process.stdout.write(JSON.stringify({
72
+ hookSpecificOutput: {
73
+ hookEventName: "PostToolUse",
74
+ additionalContext: `${links}\nSurface the Glen review link alongside the GitHub PR link.`,
75
+ },
76
+ }));
77
+ }
65
78
  };
66
79
  export { prLink };
67
80
  //# sourceMappingURL=pr-link.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"pr-link.js","sourceRoot":"","sources":["../../src/commands/pr-link.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAC5E,OAAO,EAAE,kBAAkB,EAAE,MAAM,mCAAmC,CAAC;AACvE,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAE/C,MAAM,SAAS,GAAG,KAAK,IAAqB,EAAE;IAC5C,IAAI,OAAO,CAAC,KAAK,CAAC,KAAK;QAAE,OAAO,EAAE,CAAC,CAAC,wCAAwC;IAC5E,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,OAAO,CAAC,KAAK;QAAE,MAAM,CAAC,IAAI,CAAC,KAAe,CAAC,CAAC;IACtE,OAAO,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;AAChD,CAAC,CAAC;AAEF,MAAM,QAAQ,GAAG,CAAC,CAAU,EAAU,EAAE;IACtC,IAAI,OAAO,CAAC,KAAK,QAAQ;QAAE,OAAO,CAAC,CAAC;IACpC,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,KAAK,SAAS;QAAE,OAAO,EAAE,CAAC;IAC7C,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC;IAC3B,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC,CAAC;AAEF,iFAAiF;AACjF,iFAAiF;AACjF,gFAAgF;AAChF,iFAAiF;AACjF,iFAAiF;AACjF,MAAM,MAAM,GAAG,KAAK,EAAE,KAAc,EAAiB,EAAE;IACrD,KAAK,KAAK,CAAC;IACX,MAAM,GAAG,GAAG,MAAM,SAAS,EAAE,CAAC;IAC9B,MAAM,KAAK,GAAG,CAAC,GAAG,EAAE;QAClB,IAAI,CAAC;YACH,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAA4B,CAAC;QACpD,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC,CAAC,EAAE,CAAC;IACL,IAAI,CAAC,KAAK;QAAE,OAAO;IAEnB,0EAA0E;IAC1E,4DAA4D;IAC5D,MAAM,kBAAkB,CAAC,KAAK,CAAC,CAAC;IAEhC,MAAM,KAAK,GAAG,MAAM,SAAS,EAAE,CAAC;IAChC,IAAI,KAAK,EAAE,IAAI,KAAK,KAAK;QAAE,OAAO;IAElC,MAAM,SAAS,GAAG,KAAK,CAAC,UAAiD,CAAC;IAC1E,MAAM,QAAQ,GAAG;QACf,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;QAC5B,QAAQ,CAAC,KAAK,CAAC,aAAa,CAAC;KAC9B,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IAEb,MAAM,GAAG,GAAG,aAAa,CAAC,QAAQ,CAAC,CAAC;IACpC,IAAI,GAAG,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO;IAE7B,MAAM,KAAK,GAAG,GAAG;SACd,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,iCAAiC,cAAc,CAAC,CAAC,CAAC,EAAE,CAAC;SAChE,IAAI,CAAC,IAAI,CAAC,CAAC;IAEd,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,IAAI,CAAC,SAAS,CAAC;QACb,kBAAkB,EAAE;YAClB,aAAa,EAAE,aAAa;YAC5B,iBAAiB,EAAE,GAAG,KAAK,8DAA8D;SAC1F;KACF,CAAC,CACH,CAAC;AACJ,CAAC,CAAC;AAEF,OAAO,EAAE,MAAM,EAAE,CAAC"}
1
+ {"version":3,"file":"pr-link.js","sourceRoot":"","sources":["../../src/commands/pr-link.ts"],"names":[],"mappings":"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"}
@@ -1,22 +1,21 @@
1
1
  /**
2
2
  * `glen session-start [--agent <agent>]` — called by the agent's SessionStart hook.
3
3
  *
4
- * The `--agent` option is accepted and currently unused; it keeps hook lines uniform
5
- * across agent types so hooks.json can call `glen session-start --agent <agent>` now
6
- * and we can make use of it later without updating hook configs.
7
- *
8
4
  * Behavior:
9
5
  * 1. Spawn a detached `glen doctor --auto` (background maintenance; never blocks).
10
6
  * 2. Read stdin (SessionStart event JSON, parsed defensively — tolerate garbage).
11
7
  * 3. Read local credentials + session state.
12
8
  * 4. Write ONE JSON object to stdout:
13
- * - creds + state → hookSpecificOutput.additionalContext = formatStateLine(state)
14
- * + systemMessage at top level when incognito is ON
9
+ * - For claude/codex: `hookSpecificOutput.additionalContext = formatStateLine(state)`
10
+ * + systemMessage at top level when incognito is ON.
11
+ * - For `--agent cursor`: flat `{ additional_context }` shape — Cursor's
12
+ * SessionStart consumes this format; notices (incognito, no-creds, etc.) are
13
+ * folded into the text rather than a separate systemMessage field.
15
14
  * - no creds → "[glen] not set up on this machine — ask the user whether
16
15
  * to set up glen, then use the setup skill."
17
16
  * - creds, no org → "[glen] no org selected — ask the user whether to set up
18
17
  * glen, then use the setup skill."
19
18
  * 5. Always exit 0 — this hook must never block a session.
20
19
  */
21
- declare const sessionStart: () => Promise<void>;
20
+ declare const sessionStart: (agent?: string) => Promise<void>;
22
21
  export { sessionStart };
@@ -32,24 +32,23 @@ const spawnDoctorAuto = () => {
32
32
  /**
33
33
  * `glen session-start [--agent <agent>]` — called by the agent's SessionStart hook.
34
34
  *
35
- * The `--agent` option is accepted and currently unused; it keeps hook lines uniform
36
- * across agent types so hooks.json can call `glen session-start --agent <agent>` now
37
- * and we can make use of it later without updating hook configs.
38
- *
39
35
  * Behavior:
40
36
  * 1. Spawn a detached `glen doctor --auto` (background maintenance; never blocks).
41
37
  * 2. Read stdin (SessionStart event JSON, parsed defensively — tolerate garbage).
42
38
  * 3. Read local credentials + session state.
43
39
  * 4. Write ONE JSON object to stdout:
44
- * - creds + state → hookSpecificOutput.additionalContext = formatStateLine(state)
45
- * + systemMessage at top level when incognito is ON
40
+ * - For claude/codex: `hookSpecificOutput.additionalContext = formatStateLine(state)`
41
+ * + systemMessage at top level when incognito is ON.
42
+ * - For `--agent cursor`: flat `{ additional_context }` shape — Cursor's
43
+ * SessionStart consumes this format; notices (incognito, no-creds, etc.) are
44
+ * folded into the text rather than a separate systemMessage field.
46
45
  * - no creds → "[glen] not set up on this machine — ask the user whether
47
46
  * to set up glen, then use the setup skill."
48
47
  * - creds, no org → "[glen] no org selected — ask the user whether to set up
49
48
  * glen, then use the setup skill."
50
49
  * 5. Always exit 0 — this hook must never block a session.
51
50
  */
52
- const sessionStart = async () => {
51
+ const sessionStart = async (agent) => {
53
52
  // Background maintenance (self-update TTL check, plugin upgrades, codex
54
53
  // hooks self-heal) runs in a detached `glen doctor --auto` — one child,
55
54
  // never blocks the hook turn.
@@ -66,9 +65,14 @@ const sessionStart = async () => {
66
65
  return null;
67
66
  }
68
67
  })();
69
- if (typeof event?.session_id === "string") {
70
- const cwd = typeof event.cwd === "string" ? event.cwd : process.cwd();
71
- await recordSession(cwd, event.session_id);
68
+ const sessionId = typeof event?.session_id === "string"
69
+ ? event.session_id
70
+ : typeof event?.conversation_id === "string"
71
+ ? event.conversation_id
72
+ : null;
73
+ if (sessionId) {
74
+ const cwd = typeof event?.cwd === "string" ? event.cwd : process.cwd();
75
+ await recordSession(cwd, sessionId);
72
76
  }
73
77
  const [credentials, state] = await Promise.all([
74
78
  readCredentials(),
@@ -91,6 +95,22 @@ const sessionStart = async () => {
91
95
  : state?.mode === "incognito"
92
96
  ? "glen: incognito is ON — nothing will be recorded. Run `glen on` to resume."
93
97
  : undefined;
98
+ if (agent === "cursor") {
99
+ // Cursor has no user-facing notice channel (no systemMessage field), so the
100
+ // off/incognito notice rides additional_context; it contains no memory.
101
+ const healthy = Boolean(credentials && state && state.mode !== "off");
102
+ const searchNudge = '[glen] Cursor cannot inject team memory per turn — for anything the user references from past team work (decisions, discussions, prior fixes), run `glen search "<topic>"` via the shell and treat its output as team memory.';
103
+ const combined = [
104
+ systemMessage,
105
+ additionalContext,
106
+ healthy ? searchNudge : "",
107
+ ]
108
+ .filter(Boolean)
109
+ .join("\n\n");
110
+ if (combined)
111
+ process.stdout.write(JSON.stringify({ additional_context: combined }));
112
+ return;
113
+ }
94
114
  const output = {
95
115
  hookSpecificOutput: {
96
116
  hookEventName: "SessionStart",
@@ -1 +1 @@
1
- {"version":3,"file":"session-start.js","sourceRoot":"","sources":["../../src/commands/session-start.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"session-start.js","sourceRoot":"","sources":["../../src/commands/session-start.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAC1D,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAE/C,iFAAiF;AACjF,sCAAsC;AACtC,MAAM,SAAS,GAAG,KAAK,IAAqB,EAAE;IAC5C,IAAI,OAAO,CAAC,KAAK,CAAC,KAAK;QAAE,OAAO,EAAE,CAAC,CAAC,wCAAwC;IAC5E,MAAM,MAAM,GAAa,EAAE,CAAC;IAC5B,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,OAAO,CAAC,KAAK;QAAE,MAAM,CAAC,IAAI,CAAC,KAAe,CAAC,CAAC;IACtE,OAAO,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;AAChD,CAAC,CAAC;AAEF,2EAA2E;AAC3E,+EAA+E;AAC/E,4EAA4E;AAC5E,MAAM,eAAe,GAAG,GAAS,EAAE;IACjC,IAAI,CAAC;QACH,MAAM,CAAC,GAAG,KAAK,CACb,OAAO,CAAC,QAAQ,EAChB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,MAAM,EAAE,QAAQ,EAAE,QAAQ,CAAC,EAC/C,EAAE,QAAQ,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,CACpC,CAAC;QACF,CAAC,CAAC,EAAE,CAAC,OAAO,EAAE,GAAG,EAAE;YACjB,iBAAiB;QACnB,CAAC,CAAC,CAAC;QACH,CAAC,CAAC,KAAK,EAAE,CAAC;IACZ,CAAC;IAAC,MAAM,CAAC;QACP,0DAA0D;IAC5D,CAAC;AACH,CAAC,CAAC;AAEF;;;;;;;;;;;;;;;;;;GAkBG;AACH,MAAM,YAAY,GAAG,KAAK,EAAE,KAAc,EAAiB,EAAE;IAC3D,wEAAwE;IACxE,wEAAwE;IACxE,8BAA8B;IAC9B,eAAe,EAAE,CAAC;IAElB,8EAA8E;IAC9E,kFAAkF;IAClF,kDAAkD;IAClD,MAAM,QAAQ,GAAG,MAAM,SAAS,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,EAAE,CAAC,CAAC;IACnD,MAAM,KAAK,GAAG,CAAC,GAAmC,EAAE;QAClD,IAAI,CAAC;YACH,OAAO,IAAI,CAAC,KAAK,CAAC,QAAQ,CAA4B,CAAC;QACzD,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC,CAAC,EAAE,CAAC;IACL,MAAM,SAAS,GACb,OAAO,KAAK,EAAE,UAAU,KAAK,QAAQ;QACnC,CAAC,CAAC,KAAK,CAAC,UAAU;QAClB,CAAC,CAAC,OAAO,KAAK,EAAE,eAAe,KAAK,QAAQ;YAC1C,CAAC,CAAC,KAAK,CAAC,eAAe;YACvB,CAAC,CAAC,IAAI,CAAC;IACb,IAAI,SAAS,EAAE,CAAC;QACd,MAAM,GAAG,GAAG,OAAO,KAAK,EAAE,GAAG,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC;QACvE,MAAM,aAAa,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;IACtC,CAAC;IAED,MAAM,CAAC,WAAW,EAAE,KAAK,CAAC,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC;QAC7C,eAAe,EAAE;QACjB,SAAS,EAAE;KACZ,CAAC,CAAC;IAEH,MAAM,SAAS,GACb,yFAAyF,CAAC;IAE5F,MAAM,qBAAqB,GAAG,gFAAgF,MAAM,CAAC,OAAO,kFAAkF,CAAC;IAE/M,+EAA+E;IAC/E,8EAA8E;IAC9E,2EAA2E;IAC3E,MAAM,iBAAiB,GAAG,CAAC,WAAW;QACpC,CAAC,CAAC,oGAAoG;QACtG,CAAC,CAAC,CAAC,KAAK;YACN,CAAC,CAAC,SAAS;YACX,CAAC,CAAC,KAAK,CAAC,IAAI,KAAK,KAAK;gBACpB,CAAC,CAAC,EAAE;gBACJ,CAAC,CAAC,GAAG,eAAe,CAAC,KAAK,CAAC,IAAI,SAAS,OAAO,qBAAqB,EAAE,CAAC;IAU7E,MAAM,aAAa,GACjB,KAAK,EAAE,IAAI,KAAK,KAAK;QACnB,CAAC,CAAC,uEAAuE;QACzE,CAAC,CAAC,KAAK,EAAE,IAAI,KAAK,WAAW;YAC3B,CAAC,CAAC,4EAA4E;YAC9E,CAAC,CAAC,SAAS,CAAC;IAElB,IAAI,KAAK,KAAK,QAAQ,EAAE,CAAC;QACvB,4EAA4E;QAC5E,wEAAwE;QACxE,MAAM,OAAO,GAAG,OAAO,CAAC,WAAW,IAAI,KAAK,IAAI,KAAK,CAAC,IAAI,KAAK,KAAK,CAAC,CAAC;QACtE,MAAM,WAAW,GACf,+NAA+N,CAAC;QAClO,MAAM,QAAQ,GAAG;YACf,aAAa;YACb,iBAAiB;YACjB,OAAO,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE;SAC3B;aACE,MAAM,CAAC,OAAO,CAAC;aACf,IAAI,CAAC,MAAM,CAAC,CAAC;QAChB,IAAI,QAAQ;YACV,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,kBAAkB,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC;QACzE,OAAO;IACT,CAAC;IAED,MAAM,MAAM,GAAuB;QACjC,kBAAkB,EAAE;YAClB,aAAa,EAAE,cAAc;YAC7B,iBAAiB;SAClB;QACD,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC5C,CAAC;IAEF,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,CAAC;AAC/C,CAAC,CAAC;AAEF,OAAO,EAAE,YAAY,EAAE,CAAC"}
@@ -31,7 +31,8 @@ const uninstall = async () => {
31
31
  }
32
32
  const codexInstalled = isInstalled("codex");
33
33
  const claudeInstalled = isInstalled("claude");
34
- if (codexInstalled || claudeInstalled) {
34
+ const cursorInstalled = isInstalled("cursor");
35
+ if (codexInstalled || claudeInstalled || cursorInstalled) {
35
36
  process.stdout.write("\n To remove the plugins themselves:\n");
36
37
  if (codexInstalled) {
37
38
  process.stdout.write(" codex plugin remove glen\n");
@@ -39,6 +40,9 @@ const uninstall = async () => {
39
40
  if (claudeInstalled) {
40
41
  process.stdout.write(" claude plugin uninstall glen@glen\n");
41
42
  }
43
+ if (cursorInstalled) {
44
+ process.stdout.write(" Cursor: remove the glen plugin from Cursor's plugin settings (no CLI)\n");
45
+ }
42
46
  }
43
47
  const profile = loginProfileForShell();
44
48
  if (profile) {
@@ -1 +1 @@
1
- {"version":3,"file":"uninstall.js","sourceRoot":"","sources":["../../src/commands/uninstall.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,EACL,qBAAqB,EACrB,mBAAmB,GACpB,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAAe,GAAG,EAAE,EAAE,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EACL,oBAAoB,EACpB,mBAAmB,GACpB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEjD;;;;;;;GAOG;AACH,MAAM,SAAS,GAAG,KAAK,IAAqC,EAAE;IAC5D,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,8BAA8B,CAAC,CAAC;IAErD,MAAM,iBAAiB,GAAG,MAAM,qBAAqB,EAAE,CAAC;IACxD,IAAI,iBAAiB,EAAE,CAAC;QACtB,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,0DAA0D,CAC3D,CAAC;QACF,MAAM,CAAC,GAAG,MAAM,mBAAmB,EAAE,CAAC;QACtC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;YACV,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YAC5B,OAAO,GAAG,CACR,MAAM,CAAC;gBACL,IAAI,EAAE,8BAA8B;gBACpC,GAAG,EAAE,CAAC,CAAC,KAAK;gBACZ,MAAM,EACJ,mGAAmG;aACtG,CAAC,CACH,CAAC;QACJ,CAAC;QACD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAC5B,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,uEAAuE;YACrE,0DAA0D,CAC7D,CAAC;IACJ,CAAC;IAED,MAAM,cAAc,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC;IAC5C,MAAM,eAAe,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC;IAC9C,IAAI,cAAc,IAAI,eAAe,EAAE,CAAC;QACtC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,yCAAyC,CAAC,CAAC;QAChE,IAAI,cAAc,EAAE,CAAC;YACnB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,gCAAgC,CAAC,CAAC;QACzD,CAAC;QACD,IAAI,eAAe,EAAE,CAAC;YACpB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,yCAAyC,CAAC,CAAC;QAClE,CAAC;IACH,CAAC;IACD,MAAM,OAAO,GAAG,oBAAoB,EAAE,CAAC;IACvC,IAAI,OAAO,EAAE,CAAC;QACZ,MAAM,OAAO,GAAG,MAAM,mBAAmB,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;QAC/D,IAAI,OAAO,CAAC,EAAE,IAAI,OAAO,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;YAC9C,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,wCAAwC,OAAO,CAAC,WAAW,IAAI,CAChE,CAAC;QACJ,CAAC;aAAM,IAAI,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC;YACvB,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,SAAS,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,OAAO,CAAC,WAAW,KAAK,CACzD,CAAC;QACJ,CAAC;IACH,CAAC;IAED,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,wFAAwF,CACzF,CAAC;IACF,OAAO,EAAE,CAAC,SAAS,CAAC,CAAC;AACvB,CAAC,CAAC;AAEF,OAAO,EAAE,SAAS,EAAE,CAAC"}
1
+ {"version":3,"file":"uninstall.js","sourceRoot":"","sources":["../../src/commands/uninstall.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,EACL,qBAAqB,EACrB,mBAAmB,GACpB,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAAe,GAAG,EAAE,EAAE,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EACL,oBAAoB,EACpB,mBAAmB,GACpB,MAAM,4BAA4B,CAAC;AACpC,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEjD;;;;;;;GAOG;AACH,MAAM,SAAS,GAAG,KAAK,IAAqC,EAAE;IAC5D,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,8BAA8B,CAAC,CAAC;IAErD,MAAM,iBAAiB,GAAG,MAAM,qBAAqB,EAAE,CAAC;IACxD,IAAI,iBAAiB,EAAE,CAAC;QACtB,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,0DAA0D,CAC3D,CAAC;QACF,MAAM,CAAC,GAAG,MAAM,mBAAmB,EAAE,CAAC;QACtC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;YACV,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;YAC5B,OAAO,GAAG,CACR,MAAM,CAAC;gBACL,IAAI,EAAE,8BAA8B;gBACpC,GAAG,EAAE,CAAC,CAAC,KAAK;gBACZ,MAAM,EACJ,mGAAmG;aACtG,CAAC,CACH,CAAC;QACJ,CAAC;QACD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;QAC5B,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,uEAAuE;YACrE,0DAA0D,CAC7D,CAAC;IACJ,CAAC;IAED,MAAM,cAAc,GAAG,WAAW,CAAC,OAAO,CAAC,CAAC;IAC5C,MAAM,eAAe,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC;IAC9C,MAAM,eAAe,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAC;IAC9C,IAAI,cAAc,IAAI,eAAe,IAAI,eAAe,EAAE,CAAC;QACzD,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,yCAAyC,CAAC,CAAC;QAChE,IAAI,cAAc,EAAE,CAAC;YACnB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,gCAAgC,CAAC,CAAC;QACzD,CAAC;QACD,IAAI,eAAe,EAAE,CAAC;YACpB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,yCAAyC,CAAC,CAAC;QAClE,CAAC;QACD,IAAI,eAAe,EAAE,CAAC;YACpB,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,6EAA6E,CAC9E,CAAC;QACJ,CAAC;IACH,CAAC;IACD,MAAM,OAAO,GAAG,oBAAoB,EAAE,CAAC;IACvC,IAAI,OAAO,EAAE,CAAC;QACZ,MAAM,OAAO,GAAG,MAAM,mBAAmB,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;QAC/D,IAAI,OAAO,CAAC,EAAE,IAAI,OAAO,CAAC,KAAK,KAAK,SAAS,EAAE,CAAC;YAC9C,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,wCAAwC,OAAO,CAAC,WAAW,IAAI,CAChE,CAAC;QACJ,CAAC;aAAM,IAAI,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC;YACvB,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,SAAS,OAAO,CAAC,KAAK,CAAC,IAAI,KAAK,OAAO,CAAC,WAAW,KAAK,CACzD,CAAC;QACJ,CAAC;IACH,CAAC;IAED,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,wFAAwF,CACzF,CAAC;IACF,OAAO,EAAE,CAAC,SAAS,CAAC,CAAC;AACvB,CAAC,CAAC;AAEF,OAAO,EAAE,SAAS,EAAE,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@tryglen/cli",
3
- "version": "0.15.0",
3
+ "version": "0.17.0",
4
4
  "description": "Glen CLI — memory for coding agents",
5
5
  "type": "module",
6
6
  "bin": {