@tryglen/cli 0.38.4 → 0.39.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.
- package/README.md +1 -1
- package/dist/_generated/contract/procedures.gen.js +2 -1
- package/dist/_generated/contract/procedures.gen.js.map +1 -1
- package/dist/_generated/contract/zod.gen.js +62 -0
- package/dist/_generated/contract/zod.gen.js.map +1 -1
- package/dist/bin.js +2 -2
- package/dist/bin.js.map +1 -1
- package/dist/commands/import/_utils/chunk-turns.js +21 -0
- package/dist/commands/import/_utils/chunk-turns.js.map +1 -0
- package/dist/commands/import/_utils/send-with-retry.js +15 -0
- package/dist/commands/import/_utils/send-with-retry.js.map +1 -0
- package/dist/commands/import/import.options.js +16 -1
- package/dist/commands/import/import.options.js.map +1 -1
- package/dist/commands/import/index.js +244 -42
- package/dist/commands/import/index.js.map +1 -1
- package/dist/commands/takeover/_utils/agent-paths.js +2 -1
- package/dist/commands/takeover/_utils/agent-paths.js.map +1 -1
- package/dist/commands/takeover/_utils/codex-thread-messages.js +23 -0
- package/dist/commands/takeover/_utils/codex-thread-messages.js.map +1 -0
- package/dist/commands/takeover/_utils/import-codex-desktop-thread.js +2 -19
- package/dist/commands/takeover/_utils/import-codex-desktop-thread.js.map +1 -1
- package/dist/commands/takeover/_utils/verify-codex-session.js +50 -0
- package/dist/commands/takeover/_utils/verify-codex-session.js.map +1 -0
- package/dist/commands/takeover/_utils/write-codex-session.js +22 -3
- package/dist/commands/takeover/_utils/write-codex-session.js.map +1 -1
- package/dist/core/state/import-job.js +66 -0
- package/dist/core/state/import-job.js.map +1 -0
- package/dist/core/system/env.js +0 -1
- package/dist/core/system/env.js.map +1 -1
- package/dist/jcode/plugin.json +1 -1
- package/dist/jcode/skills/import-transcripts/SKILL.md +12 -5
- package/package.json +1 -1
|
@@ -7,13 +7,16 @@ import { agentPaths } from "./agent-paths.js";
|
|
|
7
7
|
import { nativeFile } from "./native-file.js";
|
|
8
8
|
import { probeAgent } from "./probe-agent.js";
|
|
9
9
|
import { provenanceContext } from "./provenance-context.js";
|
|
10
|
-
|
|
10
|
+
import { verifyCodexSession } from "./verify-codex-session.js";
|
|
11
|
+
const writeCodexSession = (payload, workspace, options = {}) => {
|
|
12
|
+
const verify = options.verify ?? verifyCodexSession;
|
|
11
13
|
const createdAt = new Date();
|
|
12
14
|
const targetPath = agentPaths.codex(payload.destinationSessionId, createdAt);
|
|
13
15
|
const probe = async () => probeAgent({
|
|
14
16
|
displayName: "Codex CLI",
|
|
15
17
|
binName: "codex",
|
|
16
|
-
|
|
18
|
+
// No upper bound: each install is read back by Codex itself (see install below).
|
|
19
|
+
versionPattern: /^codex-cli (?:0\.(?:119|1[2-9]\d|[2-9]\d{2}|\d{4,})|[1-9]\d*\.\d+)\./,
|
|
17
20
|
model: "gpt-5.4",
|
|
18
21
|
// Below the reported 258,400-token window on purpose, so other configured models can't overfit.
|
|
19
22
|
contextWindowTokens: 128_000,
|
|
@@ -111,7 +114,23 @@ const writeCodexSession = (payload, workspace) => {
|
|
|
111
114
|
probe,
|
|
112
115
|
stage,
|
|
113
116
|
parse,
|
|
114
|
-
install: (staged) =>
|
|
117
|
+
install: async (staged) => {
|
|
118
|
+
const installed = await nativeFile.install(staged.path, targetPath, staged.recoveryCommand);
|
|
119
|
+
if (!installed.ok)
|
|
120
|
+
return installed;
|
|
121
|
+
const checked = await probe();
|
|
122
|
+
if (!checked.ok)
|
|
123
|
+
return checked;
|
|
124
|
+
const verified = await verify({
|
|
125
|
+
binary: checked.value.binary,
|
|
126
|
+
sessionId: payload.destinationSessionId,
|
|
127
|
+
messages: payload.messages,
|
|
128
|
+
});
|
|
129
|
+
if (verified.ok)
|
|
130
|
+
return installed;
|
|
131
|
+
void (await files.remove(targetPath));
|
|
132
|
+
return verified;
|
|
133
|
+
},
|
|
115
134
|
launch: async () => {
|
|
116
135
|
const checked = await probe();
|
|
117
136
|
if (!checked.ok)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"write-codex-session.js","sourceRoot":"","sources":["../../../../src/commands/takeover/_utils/write-codex-session.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,MAAM,EAAE,MAAM,mCAAmC,CAAC;AAC3D,OAAO,EAAE,KAAK,EAAE,MAAM,+BAA+B,CAAC;AACtD,OAAO,EAAE,oBAAoB,EAAE,MAAM,kDAAkD,CAAC;AACxF,OAAO,EAAE,GAAG,EAAE,EAAE,EAAE,MAAM,gCAAgC,CAAC;AACzD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"write-codex-session.js","sourceRoot":"","sources":["../../../../src/commands/takeover/_utils/write-codex-session.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import { dirname, join } from "node:path";
|
|
2
|
+
import { mapErr } from "../errors/result.js";
|
|
3
|
+
import { field } from "../json/json-field.js";
|
|
4
|
+
import { parseJson } from "../json/parse-json.js";
|
|
5
|
+
import { files } from "../system/files.js";
|
|
6
|
+
import { glenState } from "./state.js";
|
|
7
|
+
// The worker saves progress after every batch call, and one call with all its retries takes
|
|
8
|
+
// under 10 minutes, so a running job this quiet has died without finishing.
|
|
9
|
+
const STALE_MS = 15 * 60 * 1000;
|
|
10
|
+
const jobPath = () => join(dirname(glenState.path()), "import-job.json");
|
|
11
|
+
const numberAt = (value, key) => {
|
|
12
|
+
const v = field(value, key);
|
|
13
|
+
return typeof v === "number" && Number.isFinite(v) ? v : null;
|
|
14
|
+
};
|
|
15
|
+
const jobOf = (value) => {
|
|
16
|
+
const id = field(value, "id");
|
|
17
|
+
const status = field(value, "status");
|
|
18
|
+
const stoppedBy = field(value, "stoppedBy");
|
|
19
|
+
const startedAt = numberAt(value, "startedAt");
|
|
20
|
+
const updatedAt = numberAt(value, "updatedAt");
|
|
21
|
+
const conversations = numberAt(value, "conversations");
|
|
22
|
+
const totalTurns = numberAt(value, "totalTurns");
|
|
23
|
+
const imported = numberAt(value, "imported");
|
|
24
|
+
const existing = numberAt(value, "existing");
|
|
25
|
+
const failedConversations = numberAt(value, "failedConversations");
|
|
26
|
+
if (typeof id !== "string")
|
|
27
|
+
return null;
|
|
28
|
+
if (status !== "running" && status !== "finished")
|
|
29
|
+
return null;
|
|
30
|
+
if (startedAt === null ||
|
|
31
|
+
updatedAt === null ||
|
|
32
|
+
conversations === null ||
|
|
33
|
+
totalTurns === null ||
|
|
34
|
+
imported === null ||
|
|
35
|
+
existing === null ||
|
|
36
|
+
failedConversations === null)
|
|
37
|
+
return null;
|
|
38
|
+
return {
|
|
39
|
+
id,
|
|
40
|
+
status,
|
|
41
|
+
startedAt,
|
|
42
|
+
updatedAt,
|
|
43
|
+
conversations,
|
|
44
|
+
totalTurns,
|
|
45
|
+
imported,
|
|
46
|
+
existing,
|
|
47
|
+
failedConversations,
|
|
48
|
+
...(typeof stoppedBy === "string" ? { stoppedBy } : {}),
|
|
49
|
+
};
|
|
50
|
+
};
|
|
51
|
+
const read = async () => {
|
|
52
|
+
const raw = await files.readTextIfExists(jobPath());
|
|
53
|
+
if (!raw.ok || raw.value === null)
|
|
54
|
+
return null;
|
|
55
|
+
const parsed = parseJson(raw.value);
|
|
56
|
+
return parsed.ok ? jobOf(parsed.value) : null;
|
|
57
|
+
};
|
|
58
|
+
const write = async (job) => mapErr(await files.writeAtomic(jobPath(), JSON.stringify(job)), (f) => files.toError(f, {
|
|
59
|
+
code: "import.job_write_failed",
|
|
60
|
+
what: "could not save the import progress",
|
|
61
|
+
remedy: "check ownership of ~/.glen (e.g. `sudo chown -R $USER ~/.glen`)",
|
|
62
|
+
}));
|
|
63
|
+
const isStale = (job, now = Date.now()) => job.status === "running" && now - job.updatedAt > STALE_MS;
|
|
64
|
+
const importJob = { read, write, isStale };
|
|
65
|
+
export { importJob };
|
|
66
|
+
//# sourceMappingURL=import-job.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"import-job.js","sourceRoot":"","sources":["../../../src/core/state/import-job.ts"],"names":[],"mappings":"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"}
|
package/dist/core/system/env.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"env.js","sourceRoot":"","sources":["../../../src/core/system/env.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,GAAG;IACd,MAAM;IACN,OAAO;IACP,SAAS;IACT,SAAS;IACT,IAAI;IACJ,UAAU;IACV,aAAa;IACb,MAAM;IACN,YAAY;IACZ,YAAY;IACZ,qBAAqB;IACrB,6BAA6B;IAC7B,eAAe;IACf,+BAA+B;IAC/B,qBAAqB;IACrB,iBAAiB;IACjB,uBAAuB;IACvB,sBAAsB;IACtB,uBAAuB;IACvB,2BAA2B;IAC3B,iBAAiB;IACjB,kBAAkB;IAClB,oBAAoB;IACpB,wBAAwB;IACxB,oBAAoB;IACpB,4BAA4B;IAC5B,4BAA4B;IAC5B,yBAAyB;IACzB,uBAAuB;IACvB,kBAAkB;IAClB,2BAA2B;IAC3B,iBAAiB;IACjB,
|
|
1
|
+
{"version":3,"file":"env.js","sourceRoot":"","sources":["../../../src/core/system/env.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,GAAG;IACd,MAAM;IACN,OAAO;IACP,SAAS;IACT,SAAS;IACT,IAAI;IACJ,UAAU;IACV,aAAa;IACb,MAAM;IACN,YAAY;IACZ,YAAY;IACZ,qBAAqB;IACrB,6BAA6B;IAC7B,eAAe;IACf,+BAA+B;IAC/B,qBAAqB;IACrB,iBAAiB;IACjB,uBAAuB;IACvB,sBAAsB;IACtB,uBAAuB;IACvB,2BAA2B;IAC3B,iBAAiB;IACjB,kBAAkB;IAClB,oBAAoB;IACpB,wBAAwB;IACxB,oBAAoB;IACpB,4BAA4B;IAC5B,4BAA4B;IAC5B,yBAAyB;IACzB,uBAAuB;IACvB,kBAAkB;IAClB,2BAA2B;IAC3B,iBAAiB;IACjB,gBAAgB;IAChB,wBAAwB;IACxB,iBAAiB;IACjB,gBAAgB;IAChB,uBAAuB;IACvB,uBAAuB;IACvB,0BAA0B;IAC1B,cAAc;IACd,aAAa;IACb,uBAAuB;IACvB,kBAAkB;IAClB,qBAAqB;IACrB,4BAA4B;IAC5B,oBAAoB;IACpB,uBAAuB;IACvB,kBAAkB;IAClB,gBAAgB;IAChB,kBAAkB;IAClB,mBAAmB;IACnB,gCAAgC;CACxB,CAAC;AAEX,MAAM,KAAK,GAAG;IACZ,cAAc;IACd,YAAY;IACZ,iBAAiB;IACjB,qBAAqB;IACrB,aAAa;IACb,yBAAyB;IACzB,sBAAsB;IACtB,yBAAyB;CACjB,CAAC;AAMX,MAAM,GAAG,GAAG,GAAQ,EAAE,CACpB,MAAM,CAAC,WAAW,CAAC;IACjB,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,SAAS,CAAC,CAAC;IACvD,GAAG,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC;QAClB,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,GAAG,IAAI,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,KAAK,MAAM;KACpD,CAAC;CACH,CAAQ,CAAC;AAEZ,OAAO,EAAE,GAAG,EAAE,CAAC"}
|
package/dist/jcode/plugin.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "glen",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.3",
|
|
4
4
|
"description": "Shared team memory for coding agents — capture on every turn and skill-driven recall via the glen CLI.",
|
|
5
5
|
"author": { "name": "Glen", "url": "https://tryglen.com" },
|
|
6
6
|
"homepage": "https://tryglen.com",
|
|
@@ -3,9 +3,15 @@ name: import-transcripts
|
|
|
3
3
|
description: Import the user's old local coding-agent transcripts (Claude Code, Codex, Cursor, or Pi sessions from before glen was installed) into glen's shared team memory. Use when the user asks to import, backfill, or migrate past sessions/conversations/chat history into glen.
|
|
4
4
|
---
|
|
5
5
|
|
|
6
|
-
Run `glen import <path…>` via Bash. It parses local transcripts,
|
|
7
|
-
|
|
8
|
-
|
|
6
|
+
Run `glen import <path…>` via Bash. It parses local transcripts, starts the
|
|
7
|
+
import in the background and returns right away, so don't wait on it. Tell the
|
|
8
|
+
user it is running. glen does not tell you when it finishes: run
|
|
9
|
+
`glen import --status` to check on it (it says running, finished, or stopped,
|
|
10
|
+
with counts), and check again later if the user wants to know it is done.
|
|
11
|
+
|
|
12
|
+
It is safe to re-run: already-imported turns are skipped automatically, so
|
|
13
|
+
re-running the same command resumes or retries a stopped import. Pass `--wait`
|
|
14
|
+
only if the user wants it to run in the foreground.
|
|
9
15
|
|
|
10
16
|
Where old transcripts live:
|
|
11
17
|
|
|
@@ -23,5 +29,6 @@ auto-detected per file). Preview with `glen import --dry-run <path…>` — it
|
|
|
23
29
|
lists every conversation and turn count without writing anything. For large
|
|
24
30
|
directories, offer the dry run first so the user can confirm the scope.
|
|
25
31
|
|
|
26
|
-
If it prints "no active organization", tell the
|
|
27
|
-
If it prints "not connected"
|
|
32
|
+
If it (or `glen import --status`) prints "no active organization", tell the
|
|
33
|
+
user to run `glen org switch`. If it prints "not connected" or "connection
|
|
34
|
+
expired", tell the user to run `glen login`. Then re-run the same import.
|