@tryglen/cli 0.6.3 → 0.6.4
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/dist/_utils/format-questions.d.ts +2 -0
- package/dist/_utils/format-questions.js +13 -0
- package/dist/_utils/format-questions.js.map +1 -0
- package/dist/_utils/session-map.d.ts +4 -0
- package/dist/_utils/session-map.js +43 -0
- package/dist/_utils/session-map.js.map +1 -0
- package/dist/commands/ingest.js +7 -19
- package/dist/commands/ingest.js.map +1 -1
- package/dist/commands/search.js +4 -0
- package/dist/commands/search.js.map +1 -1
- package/dist/commands/session-start.js +20 -8
- package/dist/commands/session-start.js.map +1 -1
- package/package.json +1 -1
- package/dist/_utils/format-memory.d.ts +0 -2
- package/dist/_utils/format-memory.js +0 -11
- package/dist/_utils/format-memory.js.map +0 -1
- package/dist/_utils/format-receipt.d.ts +0 -5
- package/dist/_utils/format-receipt.js +0 -24
- package/dist/_utils/format-receipt.js.map +0 -1
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
const PREFIX = "Your team's shared Glen memory may hold context relevant to this request. " +
|
|
2
|
+
"Call the `glen_search` tool for EACH of these questions before answering:";
|
|
3
|
+
const formatQuestions = (result) => {
|
|
4
|
+
const questions = result?.questions;
|
|
5
|
+
if (!Array.isArray(questions))
|
|
6
|
+
return null;
|
|
7
|
+
const clean = questions.filter((q) => typeof q === "string" && q.trim() !== "");
|
|
8
|
+
if (clean.length === 0)
|
|
9
|
+
return null;
|
|
10
|
+
return `${PREFIX}\n${clean.map((q) => `- ${q}`).join("\n")}`;
|
|
11
|
+
};
|
|
12
|
+
export { formatQuestions };
|
|
13
|
+
//# sourceMappingURL=format-questions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"format-questions.js","sourceRoot":"","sources":["../../src/_utils/format-questions.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,GACV,4EAA4E;IAC5E,2EAA2E,CAAC;AAE9E,MAAM,eAAe,GAAG,CAAC,MAAe,EAAiB,EAAE;IACzD,MAAM,SAAS,GAAI,MAAyC,EAAE,SAAS,CAAC;IACxE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,SAAS,CAAC;QAAE,OAAO,IAAI,CAAC;IAC3C,MAAM,KAAK,GAAG,SAAS,CAAC,MAAM,CAC5B,CAAC,CAAC,EAAe,EAAE,CAAC,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,CAAC,IAAI,EAAE,KAAK,EAAE,CAC7D,CAAC;IACF,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IACpC,OAAO,GAAG,MAAM,KAAK,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;AAC/D,CAAC,CAAC;AAEF,OAAO,EAAE,eAAe,EAAE,CAAC"}
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
import { mkdir, readFile, rename, writeFile } from "node:fs/promises";
|
|
2
|
+
import { homedir } from "node:os";
|
|
3
|
+
import { dirname, join } from "node:path";
|
|
4
|
+
import { fromPromise } from "./result.js";
|
|
5
|
+
// cwd → agent session id. Written by the hooks (which receive session_id on stdin),
|
|
6
|
+
// read by `glen search` (which only gets a query, no session id). Keyed by cwd so
|
|
7
|
+
// distinct sessions in distinct dirs don't collide; same-cwd concurrent sessions are
|
|
8
|
+
// last-writer-wins (accepted; Claude Code exposes no session-id env var).
|
|
9
|
+
const mapPath = () => process.env.GLEN_SESSION_MAP_PATH ??
|
|
10
|
+
join(homedir(), ".glen", "sessions.json");
|
|
11
|
+
const readMap = async () => {
|
|
12
|
+
const raw = await fromPromise(readFile(mapPath(), "utf-8"));
|
|
13
|
+
if (!raw.ok)
|
|
14
|
+
return {};
|
|
15
|
+
const parsed = await fromPromise(new Promise((resolve) => resolve(JSON.parse(raw.value))));
|
|
16
|
+
if (!parsed.ok || !parsed.value || typeof parsed.value !== "object")
|
|
17
|
+
return {};
|
|
18
|
+
const out = {};
|
|
19
|
+
for (const [k, v] of Object.entries(parsed.value))
|
|
20
|
+
if (typeof v === "string")
|
|
21
|
+
out[k] = v;
|
|
22
|
+
return out;
|
|
23
|
+
};
|
|
24
|
+
// Best-effort: a write failure must never break a hook.
|
|
25
|
+
const recordSession = async (cwd, sessionId) => {
|
|
26
|
+
const map = await readMap();
|
|
27
|
+
map[cwd] = sessionId;
|
|
28
|
+
const filePath = mapPath();
|
|
29
|
+
const mk = await fromPromise(mkdir(dirname(filePath), { recursive: true, mode: 0o700 }));
|
|
30
|
+
if (!mk.ok)
|
|
31
|
+
return;
|
|
32
|
+
const tmp = `${filePath}.${process.pid}.tmp`;
|
|
33
|
+
const w = await fromPromise(writeFile(tmp, JSON.stringify(map, null, 2)));
|
|
34
|
+
if (!w.ok)
|
|
35
|
+
return;
|
|
36
|
+
await fromPromise(rename(tmp, filePath));
|
|
37
|
+
};
|
|
38
|
+
const readSessionForCwd = async (cwd) => {
|
|
39
|
+
const map = await readMap();
|
|
40
|
+
return map[cwd] ?? null;
|
|
41
|
+
};
|
|
42
|
+
export { recordSession, readSessionForCwd, mapPath };
|
|
43
|
+
//# sourceMappingURL=session-map.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session-map.js","sourceRoot":"","sources":["../../src/_utils/session-map.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACtE,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE1C,oFAAoF;AACpF,kFAAkF;AAClF,qFAAqF;AACrF,0EAA0E;AAC1E,MAAM,OAAO,GAAG,GAAW,EAAE,CAC3B,OAAO,CAAC,GAAG,CAAC,qBAAqB;IACjC,IAAI,CAAC,OAAO,EAAE,EAAE,OAAO,EAAE,eAAe,CAAC,CAAC;AAE5C,MAAM,OAAO,GAAG,KAAK,IAAqC,EAAE;IAC1D,MAAM,GAAG,GAAG,MAAM,WAAW,CAAC,QAAQ,CAAC,OAAO,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC;IAC5D,IAAI,CAAC,GAAG,CAAC,EAAE;QAAE,OAAO,EAAE,CAAC;IACvB,MAAM,MAAM,GAAG,MAAM,WAAW,CAC9B,IAAI,OAAO,CAAU,CAAC,OAAO,EAAE,EAAE,CAC/B,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAY,CAAC,CAC1C,CACF,CAAC;IACF,IAAI,CAAC,MAAM,CAAC,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,IAAI,OAAO,MAAM,CAAC,KAAK,KAAK,QAAQ;QACjE,OAAO,EAAE,CAAC;IACZ,MAAM,GAAG,GAA2B,EAAE,CAAC;IACvC,KAAK,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,KAAgC,CAAC;QAC1E,IAAI,OAAO,CAAC,KAAK,QAAQ;YAAE,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IACxC,OAAO,GAAG,CAAC;AACb,CAAC,CAAC;AAEF,wDAAwD;AACxD,MAAM,aAAa,GAAG,KAAK,EAAE,GAAW,EAAE,SAAiB,EAAiB,EAAE;IAC5E,MAAM,GAAG,GAAG,MAAM,OAAO,EAAE,CAAC;IAC5B,GAAG,CAAC,GAAG,CAAC,GAAG,SAAS,CAAC;IACrB,MAAM,QAAQ,GAAG,OAAO,EAAE,CAAC;IAC3B,MAAM,EAAE,GAAG,MAAM,WAAW,CAC1B,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAC3D,CAAC;IACF,IAAI,CAAC,EAAE,CAAC,EAAE;QAAE,OAAO;IACnB,MAAM,GAAG,GAAG,GAAG,QAAQ,IAAI,OAAO,CAAC,GAAG,MAAM,CAAC;IAC7C,MAAM,CAAC,GAAG,MAAM,WAAW,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;IAC1E,IAAI,CAAC,CAAC,CAAC,EAAE;QAAE,OAAO;IAClB,MAAM,WAAW,CAAC,MAAM,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAC,CAAC;AAC3C,CAAC,CAAC;AAEF,MAAM,iBAAiB,GAAG,KAAK,EAAE,GAAW,EAA0B,EAAE;IACtE,MAAM,GAAG,GAAG,MAAM,OAAO,EAAE,CAAC;IAC5B,OAAO,GAAG,CAAC,GAAG,CAAC,IAAI,IAAI,CAAC;AAC1B,CAAC,CAAC;AAEF,OAAO,EAAE,aAAa,EAAE,iBAAiB,EAAE,OAAO,EAAE,CAAC"}
|
package/dist/commands/ingest.js
CHANGED
|
@@ -3,13 +3,13 @@ import { adaptAgentEvent } from "../_utils/agent-adapter.js";
|
|
|
3
3
|
import { buildTurnBody } from "../_utils/build-turn-body.js";
|
|
4
4
|
import { config } from "../_utils/config.js";
|
|
5
5
|
import { readCredentials } from "../_utils/credentials.js";
|
|
6
|
-
import {
|
|
7
|
-
import { formatReceipt } from "../_utils/format-receipt.js";
|
|
6
|
+
import { formatQuestions } from "../_utils/format-questions.js";
|
|
8
7
|
import { gitContext } from "../_utils/git-context.js";
|
|
9
8
|
import { buildGlenHeaders } from "../_utils/glen-headers.js";
|
|
10
9
|
import { httpJson } from "../_utils/http.js";
|
|
11
10
|
import { parseTranscript } from "../_utils/parse-transcript.js";
|
|
12
11
|
import { fromPromise, ok } from "../_utils/result.js";
|
|
12
|
+
import { recordSession } from "../_utils/session-map.js";
|
|
13
13
|
import { formatStateLine } from "../_utils/state-line.js";
|
|
14
14
|
import { readState } from "../_utils/state.js";
|
|
15
15
|
import { cachedNewerVersion, handle426InHook, maybeSpawnBackgroundUpdate, } from "../_utils/update.js";
|
|
@@ -37,16 +37,6 @@ const readTranscriptLines = async (path) => {
|
|
|
37
37
|
return [];
|
|
38
38
|
return r.value.split("\n").filter(Boolean);
|
|
39
39
|
};
|
|
40
|
-
// Defensively pull the recall summary off the turn response. Older servers don't
|
|
41
|
-
// send `recall`, so anything missing/mistyped degrades to count 0 (no receipt).
|
|
42
|
-
const readRecall = (json) => {
|
|
43
|
-
const recall = json?.recall;
|
|
44
|
-
const count = typeof recall?.count === "number" ? recall.count : 0;
|
|
45
|
-
const teammateAuthors = Array.isArray(recall?.teammateAuthors)
|
|
46
|
-
? recall.teammateAuthors.filter((n) => typeof n === "string")
|
|
47
|
-
: [];
|
|
48
|
-
return { count, teammateAuthors };
|
|
49
|
-
};
|
|
50
40
|
// Hook invariant: ingest NEVER returns an error and bin.ts NEVER exits
|
|
51
41
|
// nonzero for it — a nonzero hook exit blocks the user's prompt (exit 2 is
|
|
52
42
|
// Claude Code's blocking code). Every failure mode instead emits an
|
|
@@ -96,6 +86,9 @@ const ingest = async (agent) => {
|
|
|
96
86
|
: [];
|
|
97
87
|
// Resolve the cwd from the event (hook provides it) or fall back.
|
|
98
88
|
const eventCwd = typeof event.cwd === "string" ? event.cwd : process.cwd();
|
|
89
|
+
// Record cwd → session id so `glen search` (which gets no session id) can attribute
|
|
90
|
+
// its searches to this conversation. Best-effort.
|
|
91
|
+
await recordSession(eventCwd, event.session_id);
|
|
99
92
|
// Adapt the event based on agent type.
|
|
100
93
|
const adapted = adaptAgentEvent(agentName, event, transcriptLines);
|
|
101
94
|
// For codex without a transcript, derive idempotency from event.turn_id when
|
|
@@ -175,13 +168,8 @@ const ingest = async (agent) => {
|
|
|
175
168
|
return ok(undefined);
|
|
176
169
|
}
|
|
177
170
|
const stateLine = formatStateLine(state);
|
|
178
|
-
const
|
|
179
|
-
|
|
180
|
-
// servers don't send it, so a missing/malformed field yields no receipt line.
|
|
181
|
-
const receipt = formatReceipt(readRecall(res.value.json));
|
|
182
|
-
// Receipt sits right under the state line (both are `[glen] …` status lines) so
|
|
183
|
-
// it's the first thing visible; the memory block stays last.
|
|
184
|
-
const out = [stateLine, receipt, memory].filter(Boolean).join("\n\n");
|
|
171
|
+
const questions = formatQuestions(res.value.json);
|
|
172
|
+
const out = [stateLine, questions].filter(Boolean).join("\n\n");
|
|
185
173
|
if (out)
|
|
186
174
|
emit(out);
|
|
187
175
|
return ok(undefined);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ingest.js","sourceRoot":"","sources":["../../src/commands/ingest.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAC7D,OAAO,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAC7D,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAC3D,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"ingest.js","sourceRoot":"","sources":["../../src/commands/ingest.ts"],"names":[],"mappings":"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"}
|
package/dist/commands/search.js
CHANGED
|
@@ -5,6 +5,7 @@ import { gitContext } from "../_utils/git-context.js";
|
|
|
5
5
|
import { buildGlenHeaders } from "../_utils/glen-headers.js";
|
|
6
6
|
import { httpJson, networkRemedy } from "../_utils/http.js";
|
|
7
7
|
import { err, ok } from "../_utils/result.js";
|
|
8
|
+
import { readSessionForCwd } from "../_utils/session-map.js";
|
|
8
9
|
import { readState } from "../_utils/state.js";
|
|
9
10
|
import { handle426AndReexec, maybeSpawnBackgroundUpdate, } from "../_utils/update.js";
|
|
10
11
|
import { cliVersion } from "../_utils/version.js";
|
|
@@ -26,6 +27,9 @@ const search = async (query) => {
|
|
|
26
27
|
? { workspace: workspaceCtx }
|
|
27
28
|
: undefined;
|
|
28
29
|
const body = { query };
|
|
30
|
+
const conversationId = await readSessionForCwd(process.cwd());
|
|
31
|
+
if (conversationId)
|
|
32
|
+
body.conversationId = conversationId;
|
|
29
33
|
if (additionalContext !== undefined)
|
|
30
34
|
body.additionalContext = additionalContext;
|
|
31
35
|
const res = await httpJson(config.searchUrl, {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"search.js","sourceRoot":"","sources":["../../src/commands/search.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,MAAM,EAAE,MAAM,wBAAwB,CAAC;AAC/D,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAC7C,OAAO,EAAE,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAC3D,OAAO,EAAE,UAAU,EAAE,MAAM,0BAA0B,CAAC;AACtD,OAAO,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAC7D,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAC5D,OAAO,EAAe,GAAG,EAAE,EAAE,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAC/C,OAAO,EACL,kBAAkB,EAClB,0BAA0B,GAC3B,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAElD,MAAM,MAAM,GAAG,KAAK,EAAE,KAAa,EAAmC,EAAE;IACtE,KAAK,0BAA0B,EAAE,CAAC;IAClC,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE;QACf,OAAO,GAAG,CACR,MAAM,CAAC;YACL,IAAI,EAAE,sBAAsB;YAC5B,MAAM,EAAE,8BAA8B;SACvC,CAAC,CACH,CAAC;IAEJ,MAAM,KAAK,GAAG,MAAM,eAAe,EAAE,CAAC;IACtC,IAAI,CAAC,KAAK;QACR,OAAO,GAAG,CACR,MAAM,CAAC,EAAE,IAAI,EAAE,eAAe,EAAE,MAAM,EAAE,wBAAwB,EAAE,CAAC,CACpE,CAAC;IAEJ,MAAM,KAAK,GAAG,MAAM,SAAS,EAAE,CAAC;IAEhC,4EAA4E;IAC5E,qDAAqD;IACrD,MAAM,YAAY,GAAG,UAAU,CAAC,OAAO,CAAC,GAAG,EAAE,CAAC,CAAC;IAC/C,MAAM,iBAAiB,GACrB,MAAM,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,MAAM,GAAG,CAAC;QAClC,CAAC,CAAC,EAAE,SAAS,EAAE,YAAY,EAAE;QAC7B,CAAC,CAAC,SAAS,CAAC;IAEhB,MAAM,IAAI,GAA4B,EAAE,KAAK,EAAE,CAAC;IAChD,IAAI,iBAAiB,KAAK,SAAS;QACjC,IAAI,CAAC,iBAAiB,GAAG,iBAAiB,CAAC;IAE7C,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC,SAAS,EAAE;QAC3C,MAAM,EAAE,MAAM;QACd,OAAO,EAAE;YACP,cAAc,EAAE,kBAAkB;YAClC,GAAG,gBAAgB,CAAC,EAAE,GAAG,EAAE,KAAK,CAAC,GAAG,EAAE,KAAK,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC;SACpE;QACD,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC;QAC1B,SAAS,EAAE,MAAM,CAAC,eAAe;KAClC,CAAC,CAAC;IAEH,IAAI,CAAC,GAAG,CAAC,EAAE;QACT,OAAO,GAAG,CACR,MAAM,CAAC;YACL,IAAI,EAAE,oBAAoB;YAC1B,GAAG,EAAE,GAAG,CAAC,KAAK,CAAC,MAAM;YACrB,MAAM,EAAE,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC;SACjC,CAAC,CACH,CAAC;IAEJ,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,KAAK,GAAG;QAAE,kBAAkB,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IAExE,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,KAAK,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,MAAM,KAAK,GAAG,EAAE,CAAC;QACzD,IAAI,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,wBAAwB,CAAC,EAAE,CAAC;YACzD,OAAO,GAAG,CACR,MAAM,CAAC;gBACL,IAAI,EAAE,wBAAwB;gBAC9B,MAAM,EAAE,uBAAuB;aAChC,CAAC,CACH,CAAC;QACJ,CAAC;QACD,uFAAuF;QACvF,OAAO,GAAG,CACR,MAAM,CAAC;YACL,IAAI,EAAE,yBAAyB;YAC/B,MAAM,EAAE,+BAA+B;SACxC,CAAC,CACH,CAAC;IACJ,CAAC;IAED,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI;QACjB,OAAO,GAAG,CACR,MAAM,CAAC;YACL,IAAI,EAAE,4BAA4B,GAAG,CAAC,KAAK,CAAC,MAAM,GAAG;YACrD,GAAG,EAAE,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,QAAQ,GAAG,CAAC,KAAK,CAAC,MAAM,EAAE;YAClE,MAAM,EACJ,0EAA0E;SAC7E,CAAC,CACH,CAAC;IAEJ,MAAM,OAAO,GAAI,GAAG,CAAC,KAAK,CAAC,IAAuC,EAAE,OAAO,CAAC;IAC5E,OAAO,CAAC,MAAM,CAAC,KAAK,CAClB,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,CAAC,IAAI,EAAE;QAC3C,CAAC,CAAC,GAAG,OAAO,IAAI;QAChB,CAAC,CAAC,kDAAkD,CACvD,CAAC;IACF,OAAO,EAAE,CAAC,SAAS,CAAC,CAAC;AACvB,CAAC,CAAC;AAEF,OAAO,EAAE,MAAM,EAAE,CAAC"}
|
|
1
|
+
{"version":3,"file":"search.js","sourceRoot":"","sources":["../../src/commands/search.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import { spawn } from "node:child_process";
|
|
2
2
|
import { readCredentials } from "../_utils/credentials.js";
|
|
3
|
+
import { recordSession } from "../_utils/session-map.js";
|
|
3
4
|
import { formatStateLine } from "../_utils/state-line.js";
|
|
4
5
|
import { readState } from "../_utils/state.js";
|
|
5
6
|
// Reads stdin defensively (SessionStart hook event — parse lenient; may be empty
|
|
@@ -52,15 +53,26 @@ const sessionStart = async () => {
|
|
|
52
53
|
// hooks self-heal) runs in a detached `glen doctor --auto` — one child,
|
|
53
54
|
// never blocks the hook turn.
|
|
54
55
|
spawnDoctorAuto();
|
|
55
|
-
// Drain stdin before state read (best-effort
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
56
|
+
// Drain stdin before state read (best-effort). The SessionStart event carries
|
|
57
|
+
// { session_id, cwd } — record it so `glen search` can attribute searches to this
|
|
58
|
+
// conversation even before the first user prompt.
|
|
59
|
+
const stdinRaw = await readStdin().catch(() => "");
|
|
60
|
+
const event = (() => {
|
|
61
|
+
try {
|
|
62
|
+
return JSON.parse(stdinRaw);
|
|
63
|
+
}
|
|
64
|
+
catch {
|
|
65
|
+
return null;
|
|
66
|
+
}
|
|
67
|
+
})();
|
|
68
|
+
if (typeof event?.session_id === "string") {
|
|
69
|
+
const cwd = typeof event.cwd === "string" ? event.cwd : process.cwd();
|
|
70
|
+
await recordSession(cwd, event.session_id);
|
|
61
71
|
}
|
|
62
|
-
const credentials = await
|
|
63
|
-
|
|
72
|
+
const [credentials, state] = await Promise.all([
|
|
73
|
+
readCredentials(),
|
|
74
|
+
readState(),
|
|
75
|
+
]);
|
|
64
76
|
const noOrgHint = "[glen] no org selected — ask the user whether to set up glen, then use the glen-setup skill.";
|
|
65
77
|
const additionalContext = !credentials
|
|
66
78
|
? "[glen] not set up on this machine — ask the user whether to set up glen, then use the glen-setup skill."
|
|
@@ -1 +1 @@
|
|
|
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,eAAe,EAAE,MAAM,0BAA0B,CAAC;AAC3D,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;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,YAAY,GAAG,KAAK,IAAmB,EAAE;IAC7C,wEAAwE;IACxE,wEAAwE;IACxE,8BAA8B;IAC9B,eAAe,EAAE,CAAC;IAElB,
|
|
1
|
+
{"version":3,"file":"session-start.js","sourceRoot":"","sources":["../../src/commands/session-start.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
const PREFIX = "Relevant glen memory (automatically retrieved for this turn — you already have this; " +
|
|
2
|
-
"do NOT call the glen-search skill just to re-fetch it, only use that skill if you need " +
|
|
3
|
-
"something more specific that isn't below):";
|
|
4
|
-
const formatMemory = (result) => {
|
|
5
|
-
const context = result?.context;
|
|
6
|
-
if (typeof context !== "string" || context.trim() === "")
|
|
7
|
-
return null;
|
|
8
|
-
return `${PREFIX}\n\n${context}`;
|
|
9
|
-
};
|
|
10
|
-
export { formatMemory };
|
|
11
|
-
//# sourceMappingURL=format-memory.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"format-memory.js","sourceRoot":"","sources":["../../src/_utils/format-memory.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,GACV,uFAAuF;IACvF,yFAAyF;IACzF,4CAA4C,CAAC;AAE/C,MAAM,YAAY,GAAG,CAAC,MAAe,EAAiB,EAAE;IACtD,MAAM,OAAO,GAAI,MAAyC,EAAE,OAAO,CAAC;IACpE,IAAI,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,CAAC,IAAI,EAAE,KAAK,EAAE;QAAE,OAAO,IAAI,CAAC;IACtE,OAAO,GAAG,MAAM,OAAO,OAAO,EAAE,CAAC;AACnC,CAAC,CAAC;AAEF,OAAO,EAAE,YAAY,EAAE,CAAC"}
|
|
@@ -1,24 +0,0 @@
|
|
|
1
|
-
// The human-facing "saved-you" receipt: after a turn where glen recalled memory,
|
|
2
|
-
// a one-line `[glen] …` status (consistent with state-line.ts) so the developer
|
|
3
|
-
// SEES glen working — and especially sees CROSS-TEAMMATE transfer, the unique
|
|
4
|
-
// value. Returns null when nothing was recalled (no line at all).
|
|
5
|
-
// Cap the named teammates so the line stays short; overflow collapses to
|
|
6
|
-
// "and N more". ~3 names keeps it scannable.
|
|
7
|
-
const MAX_NAMES = 3;
|
|
8
|
-
const pluralizeMemories = (count) => count === 1 ? "memory" : "memories";
|
|
9
|
-
// "Sarah", "Sarah, Mike", "Sarah, Mike, Dan", "Sarah, Mike, Dan and 2 more"
|
|
10
|
-
const joinNames = (names) => {
|
|
11
|
-
const shown = names.slice(0, MAX_NAMES).join(", ");
|
|
12
|
-
const overflow = names.length - MAX_NAMES;
|
|
13
|
-
return overflow > 0 ? `${shown} and ${overflow} more` : shown;
|
|
14
|
-
};
|
|
15
|
-
const formatReceipt = (recall) => {
|
|
16
|
-
if (recall.count === 0)
|
|
17
|
-
return null;
|
|
18
|
-
if (recall.teammateAuthors.length > 0)
|
|
19
|
-
return (`[glen] recalled ${recall.count} ${pluralizeMemories(recall.count)} — ` +
|
|
20
|
-
`incl. ${recall.teammateAuthors.length} from ${joinNames(recall.teammateAuthors)}`);
|
|
21
|
-
return `[glen] recalled ${recall.count} ${pluralizeMemories(recall.count)} from your own notes`;
|
|
22
|
-
};
|
|
23
|
-
export { formatReceipt };
|
|
24
|
-
//# sourceMappingURL=format-receipt.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"format-receipt.js","sourceRoot":"","sources":["../../src/_utils/format-receipt.ts"],"names":[],"mappings":"AAAA,iFAAiF;AACjF,gFAAgF;AAChF,8EAA8E;AAC9E,kEAAkE;AAElE,yEAAyE;AACzE,6CAA6C;AAC7C,MAAM,SAAS,GAAG,CAAC,CAAC;AAEpB,MAAM,iBAAiB,GAAG,CAAC,KAAa,EAAU,EAAE,CAClD,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,UAAU,CAAC;AAEtC,4EAA4E;AAC5E,MAAM,SAAS,GAAG,CAAC,KAAwB,EAAU,EAAE;IACrD,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,SAAS,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;IACnD,MAAM,QAAQ,GAAG,KAAK,CAAC,MAAM,GAAG,SAAS,CAAC;IAC1C,OAAO,QAAQ,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,KAAK,QAAQ,QAAQ,OAAO,CAAC,CAAC,CAAC,KAAK,CAAC;AAChE,CAAC,CAAC;AAEF,MAAM,aAAa,GAAG,CAAC,MAGtB,EAAiB,EAAE;IAClB,IAAI,MAAM,CAAC,KAAK,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IACpC,IAAI,MAAM,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC;QACnC,OAAO,CACL,mBAAmB,MAAM,CAAC,KAAK,IAAI,iBAAiB,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK;YACvE,SAAS,MAAM,CAAC,eAAe,CAAC,MAAM,SAAS,SAAS,CAAC,MAAM,CAAC,eAAe,CAAC,EAAE,CACnF,CAAC;IACJ,OAAO,mBAAmB,MAAM,CAAC,KAAK,IAAI,iBAAiB,CAAC,MAAM,CAAC,KAAK,CAAC,sBAAsB,CAAC;AAClG,CAAC,CAAC;AAEF,OAAO,EAAE,aAAa,EAAE,CAAC"}
|