@the-librarian/cli 1.41.0 → 1.43.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 +2 -0
- package/dist/import/command.d.ts +22 -0
- package/dist/import/command.d.ts.map +1 -0
- package/dist/import/command.js +209 -0
- package/dist/import/command.js.map +1 -0
- package/dist/import/readers.d.ts +35 -0
- package/dist/import/readers.d.ts.map +1 -0
- package/dist/import/readers.js +447 -0
- package/dist/import/readers.js.map +1 -0
- package/dist/runtime.d.ts +1 -0
- package/dist/runtime.d.ts.map +1 -1
- package/dist/runtime.js +68 -0
- package/dist/runtime.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -43,6 +43,8 @@ librarian update [harness…] Update the integration to the current version
|
|
|
43
43
|
librarian status Live table: harness · installed · version
|
|
44
44
|
librarian doctor Token set? server reachable? which harness CLIs?
|
|
45
45
|
librarian config Show or set MCP URL, token, server URL
|
|
46
|
+
librarian import Import past conversations into memories and
|
|
47
|
+
the journal (--dry-run first to see the plan)
|
|
46
48
|
librarian self-update Update the CLI itself (coming in a later release)
|
|
47
49
|
librarian report Push this machine's state to the server
|
|
48
50
|
(coming in a later release)
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import type { Prompter } from "../prompt.js";
|
|
2
|
+
import { type Env, type HarnessId } from "./readers.js";
|
|
3
|
+
export interface ImportOptions {
|
|
4
|
+
serverUrl: string;
|
|
5
|
+
token: string;
|
|
6
|
+
home: string;
|
|
7
|
+
env?: Env;
|
|
8
|
+
only?: "memories" | "journal";
|
|
9
|
+
harnesses?: HarnessId[];
|
|
10
|
+
dryRun?: boolean;
|
|
11
|
+
yes?: boolean;
|
|
12
|
+
prompter?: Prompter;
|
|
13
|
+
fetchImpl?: typeof fetch;
|
|
14
|
+
/** Progress line sink (stdout in the real CLI). */
|
|
15
|
+
log?: (line: string) => void;
|
|
16
|
+
}
|
|
17
|
+
export interface ImportOutcome {
|
|
18
|
+
ok: boolean;
|
|
19
|
+
output: string;
|
|
20
|
+
}
|
|
21
|
+
export declare function runImport(opts: ImportOptions): Promise<ImportOutcome>;
|
|
22
|
+
//# sourceMappingURL=command.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"command.d.ts","sourceRoot":"","sources":["../../src/import/command.ts"],"names":[],"mappings":"AAeA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAGL,KAAK,GAAG,EACR,KAAK,SAAS,EAEf,MAAM,cAAc,CAAC;AAEtB,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,GAAG,CAAC;IACV,IAAI,CAAC,EAAE,UAAU,GAAG,SAAS,CAAC;IAC9B,SAAS,CAAC,EAAE,SAAS,EAAE,CAAC;IACxB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,GAAG,CAAC,EAAE,OAAO,CAAC;IACd,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,SAAS,CAAC,EAAE,OAAO,KAAK,CAAC;IACzB,mDAAmD;IACnD,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;CAC9B;AAED,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,OAAO,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;CAChB;AAkFD,wBAAsB,SAAS,CAAC,IAAI,EAAE,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC,CAkK3E"}
|
|
@@ -0,0 +1,209 @@
|
|
|
1
|
+
// `librarian import` (spec 079 §4): send this machine's past conversations through the
|
|
2
|
+
// server's memory intake and journal.
|
|
3
|
+
//
|
|
4
|
+
// 1. Ask the server what it will accept (GET /import/policy). Both steps off → say so
|
|
5
|
+
// and stop, without reading a single transcript.
|
|
6
|
+
// 2. Read each harness's history on this machine.
|
|
7
|
+
// 3. Ask the server for a plan (POST /import/plan — ids and end times only, no text)
|
|
8
|
+
// and show it: per harness, what each step would take and why the rest is skipped.
|
|
9
|
+
// 4. Unless --dry-run, confirm (or --yes), then send each queued conversation, oldest
|
|
10
|
+
// first. The SERVER decides the steps and enforces the allowance; this preview is
|
|
11
|
+
// only a preview.
|
|
12
|
+
//
|
|
13
|
+
// The bearer token rides the Authorization header only, and every request refuses
|
|
14
|
+
// redirects, so a 3xx can't carry it anywhere else.
|
|
15
|
+
import { IMPORT_HARNESSES, readHarness, } from "./readers.js";
|
|
16
|
+
const QUEUED = "queued";
|
|
17
|
+
const PLAN_BATCH = 500;
|
|
18
|
+
class ServerError extends Error {
|
|
19
|
+
}
|
|
20
|
+
async function call(opts, method, route, body) {
|
|
21
|
+
const fetchImpl = opts.fetchImpl ?? fetch;
|
|
22
|
+
let res;
|
|
23
|
+
try {
|
|
24
|
+
res = await fetchImpl(new URL(route, opts.serverUrl), {
|
|
25
|
+
method,
|
|
26
|
+
redirect: "error",
|
|
27
|
+
headers: {
|
|
28
|
+
authorization: `Bearer ${opts.token}`,
|
|
29
|
+
...(body === undefined ? {} : { "content-type": "application/json" }),
|
|
30
|
+
},
|
|
31
|
+
...(body === undefined ? {} : { body: JSON.stringify(body) }),
|
|
32
|
+
signal: AbortSignal.timeout(120_000),
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
catch (error) {
|
|
36
|
+
throw new ServerError(`couldn't reach the Librarian at ${opts.serverUrl} (${error.message})`);
|
|
37
|
+
}
|
|
38
|
+
if (res.status === 404) {
|
|
39
|
+
throw new ServerError(`the Librarian at ${opts.serverUrl} doesn't support import yet — update the server to 1.42.0 or later`);
|
|
40
|
+
}
|
|
41
|
+
if (res.status === 401 || res.status === 403) {
|
|
42
|
+
throw new ServerError("the server refused this machine's token — check it with `librarian config`");
|
|
43
|
+
}
|
|
44
|
+
const json = (await res.json().catch(() => ({})));
|
|
45
|
+
if (!res.ok)
|
|
46
|
+
throw new ServerError(json.error ?? `the server answered ${res.status}`);
|
|
47
|
+
return json;
|
|
48
|
+
}
|
|
49
|
+
function day(iso) {
|
|
50
|
+
return iso ? iso.slice(0, 10) : "not set (never run)";
|
|
51
|
+
}
|
|
52
|
+
/** Group skip reasons so the summary reads "12 × ended after the journal cutoff…". */
|
|
53
|
+
function reasonCounts(rows, step) {
|
|
54
|
+
const counts = new Map();
|
|
55
|
+
for (const r of rows) {
|
|
56
|
+
if (r[step] === QUEUED)
|
|
57
|
+
continue;
|
|
58
|
+
// Collapse per-conversation dates so one reason groups.
|
|
59
|
+
const reason = r[step]
|
|
60
|
+
.replace(/^ended \d{4}-\d{2}-\d{2}, /, "ended ")
|
|
61
|
+
.replace(/on \d{4}-\d{2}-\d{2}$/, "earlier");
|
|
62
|
+
counts.set(reason, (counts.get(reason) ?? 0) + 1);
|
|
63
|
+
}
|
|
64
|
+
return [...counts.entries()]
|
|
65
|
+
.sort((a, b) => b[1] - a[1])
|
|
66
|
+
.map(([reason, n]) => ` ${n} × ${reason}`);
|
|
67
|
+
}
|
|
68
|
+
export async function runImport(opts) {
|
|
69
|
+
const lines = [];
|
|
70
|
+
const out = (line = "") => {
|
|
71
|
+
lines.push(line);
|
|
72
|
+
};
|
|
73
|
+
try {
|
|
74
|
+
const policy = await call(opts, "GET", "/import/policy");
|
|
75
|
+
const wantMemories = opts.only !== "journal";
|
|
76
|
+
const wantJournal = opts.only !== "memories";
|
|
77
|
+
const memoriesOn = policy.intake === "enabled" && wantMemories;
|
|
78
|
+
const journalOn = policy.journal === "enabled" && wantJournal;
|
|
79
|
+
if (!memoriesOn && !journalOn) {
|
|
80
|
+
out("Nothing to import into: curator intake and the journal are both off on the server");
|
|
81
|
+
out("(or off for the steps you asked for with --only). Turn either on under");
|
|
82
|
+
out("Settings → Curator → Intake in the dashboard, then run this again.");
|
|
83
|
+
return { ok: true, output: lines.join("\n") };
|
|
84
|
+
}
|
|
85
|
+
if (wantMemories && policy.intake !== "enabled")
|
|
86
|
+
out("Note: curator intake is off on the server, so no memories will be filed.");
|
|
87
|
+
if (wantJournal && policy.journal !== "enabled")
|
|
88
|
+
out("Note: the journal is off on the server, so no journal entries will be written.");
|
|
89
|
+
out(`Server: memories cutoff ${day(policy.memoriesCutoff)} · journal cutoff ${day(policy.journalCutoff)} · max age ${policy.maxAgeDays} days · allowance ${policy.allowanceRemaining} conversations`);
|
|
90
|
+
out();
|
|
91
|
+
// Read every harness's history on this machine.
|
|
92
|
+
const harnesses = opts.harnesses?.length ? opts.harnesses : [...IMPORT_HARNESSES];
|
|
93
|
+
const all = [];
|
|
94
|
+
for (const harness of harnesses) {
|
|
95
|
+
const result = await readHarness(harness, opts.home, opts.env ?? {});
|
|
96
|
+
if (!result.source) {
|
|
97
|
+
out(`${harness}: no history on this machine`);
|
|
98
|
+
continue;
|
|
99
|
+
}
|
|
100
|
+
out(`${harness}: ${result.conversations.length} conversation(s) in ${result.source}`);
|
|
101
|
+
for (const problem of result.problems.slice(0, 5))
|
|
102
|
+
out(` skipped unreadable: ${problem}`);
|
|
103
|
+
if (result.problems.length > 5)
|
|
104
|
+
out(` … and ${result.problems.length - 5} more unreadable`);
|
|
105
|
+
all.push(...result.conversations);
|
|
106
|
+
}
|
|
107
|
+
if (all.length === 0) {
|
|
108
|
+
out();
|
|
109
|
+
out("No conversations found to import.");
|
|
110
|
+
return { ok: true, output: lines.join("\n") };
|
|
111
|
+
}
|
|
112
|
+
// Ask the server's plan: ids and end times only, never text.
|
|
113
|
+
all.sort((a, b) => a.endedAt.localeCompare(b.endedAt));
|
|
114
|
+
const only = opts.only ? [opts.only] : undefined;
|
|
115
|
+
const plans = [];
|
|
116
|
+
for (let i = 0; i < all.length; i += PLAN_BATCH) {
|
|
117
|
+
const batch = all
|
|
118
|
+
.slice(i, i + PLAN_BATCH)
|
|
119
|
+
.map((c) => ({ conv_id: c.convId, harness: c.harness, ended_at: c.endedAt }));
|
|
120
|
+
const res = await call(opts, "POST", "/import/plan", {
|
|
121
|
+
conversations: batch,
|
|
122
|
+
...(only ? { only } : {}),
|
|
123
|
+
});
|
|
124
|
+
plans.push(...res.plans);
|
|
125
|
+
}
|
|
126
|
+
out();
|
|
127
|
+
out("Plan (the server decides; this is its preview):");
|
|
128
|
+
const queued = all.filter((_, i) => plans[i]?.memories === QUEUED || plans[i]?.journal === QUEUED);
|
|
129
|
+
for (const harness of harnesses) {
|
|
130
|
+
const rows = plans.filter((p) => p.harness === harness);
|
|
131
|
+
if (rows.length === 0)
|
|
132
|
+
continue;
|
|
133
|
+
out(` ${harness}:`);
|
|
134
|
+
for (const step of ["memories", "journal"]) {
|
|
135
|
+
const n = rows.filter((r) => r[step] === QUEUED).length;
|
|
136
|
+
out(` ${step}: ${n} to import`);
|
|
137
|
+
for (const line of reasonCounts(rows, step))
|
|
138
|
+
out(line);
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
out();
|
|
142
|
+
if (queued.length === 0) {
|
|
143
|
+
out("Nothing to import: every conversation is already covered, or outside the server's limits.");
|
|
144
|
+
return { ok: true, output: lines.join("\n") };
|
|
145
|
+
}
|
|
146
|
+
out(`${queued.length} conversation(s) to send.`);
|
|
147
|
+
if (opts.dryRun) {
|
|
148
|
+
out("Dry run: nothing was sent. Run again without --dry-run to import.");
|
|
149
|
+
return { ok: true, output: lines.join("\n") };
|
|
150
|
+
}
|
|
151
|
+
if (!opts.yes) {
|
|
152
|
+
opts.log?.(lines.join("\n"));
|
|
153
|
+
lines.length = 0;
|
|
154
|
+
const answer = opts.prompter
|
|
155
|
+
? (await opts.prompter.promptText(`Send ${queued.length} conversation(s) to the Librarian? [y/N]`, { default: "n" }))
|
|
156
|
+
.trim()
|
|
157
|
+
.toLowerCase()
|
|
158
|
+
: "n";
|
|
159
|
+
if (answer !== "y" && answer !== "yes") {
|
|
160
|
+
out("Cancelled: nothing was sent. (Use --yes to skip this question.)");
|
|
161
|
+
return { ok: true, output: lines.join("\n") };
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
// Send, oldest first. The server re-checks everything.
|
|
165
|
+
let accepted = 0;
|
|
166
|
+
let skipped = 0;
|
|
167
|
+
const refusals = new Map();
|
|
168
|
+
for (const [index, c] of queued.entries()) {
|
|
169
|
+
const res = await call(opts, "POST", "/import", {
|
|
170
|
+
conv_id: c.convId,
|
|
171
|
+
harness: c.harness,
|
|
172
|
+
...(c.project ? { project: c.project } : {}),
|
|
173
|
+
ended_at: c.endedAt,
|
|
174
|
+
turns: c.turns,
|
|
175
|
+
...(only ? { only } : {}),
|
|
176
|
+
});
|
|
177
|
+
if (res.accepted) {
|
|
178
|
+
accepted += 1;
|
|
179
|
+
}
|
|
180
|
+
else {
|
|
181
|
+
skipped += 1;
|
|
182
|
+
const reasons = [res.steps?.memories, res.steps?.journal].filter((r) => typeof r === "string" && r !== QUEUED);
|
|
183
|
+
const why = res.reason ?? ([...new Set(reasons)].join("; ") || "refused by the server");
|
|
184
|
+
refusals.set(why, (refusals.get(why) ?? 0) + 1);
|
|
185
|
+
if (/allowance is used up/.test(why)) {
|
|
186
|
+
out(`Stopped after ${accepted} conversation(s): the server's import allowance is used up.`);
|
|
187
|
+
out(`${queued.length - index} left. Raise the allowance on Settings → Curator → Import, then run this again.`);
|
|
188
|
+
return { ok: true, output: lines.join("\n") };
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
if ((index + 1) % 25 === 0)
|
|
192
|
+
opts.log?.(` sent ${index + 1}/${queued.length}…`);
|
|
193
|
+
}
|
|
194
|
+
out(`Done: ${accepted} conversation(s) queued on the server${skipped ? `, ${skipped} refused` : ""}.`);
|
|
195
|
+
for (const [why, n] of refusals)
|
|
196
|
+
out(` ${n} × ${why}`);
|
|
197
|
+
out("They're processed a few at a time, after live capture, so they appear in your memories and");
|
|
198
|
+
out("journal over the next hours rather than at once.");
|
|
199
|
+
return { ok: true, output: lines.join("\n") };
|
|
200
|
+
}
|
|
201
|
+
catch (error) {
|
|
202
|
+
if (error instanceof ServerError) {
|
|
203
|
+
out(`librarian import: ${error.message}`);
|
|
204
|
+
return { ok: false, output: lines.join("\n") };
|
|
205
|
+
}
|
|
206
|
+
throw error;
|
|
207
|
+
}
|
|
208
|
+
}
|
|
209
|
+
//# sourceMappingURL=command.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"command.js","sourceRoot":"","sources":["../../src/import/command.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/** The environment variables the readers honour (XDG_DATA_HOME, HERMES_HOME). */
|
|
2
|
+
export type Env = Record<string, string | undefined>;
|
|
3
|
+
export type HarnessId = "claude" | "codex" | "opencode" | "pi" | "hermes";
|
|
4
|
+
export declare const IMPORT_HARNESSES: readonly HarnessId[];
|
|
5
|
+
export interface Turn {
|
|
6
|
+
role: "user" | "assistant";
|
|
7
|
+
text: string;
|
|
8
|
+
ts: string;
|
|
9
|
+
}
|
|
10
|
+
export interface Conversation {
|
|
11
|
+
harness: HarnessId;
|
|
12
|
+
convId: string;
|
|
13
|
+
/** ISO-8601 time of the last turn. */
|
|
14
|
+
endedAt: string;
|
|
15
|
+
project?: string;
|
|
16
|
+
turns: Turn[];
|
|
17
|
+
}
|
|
18
|
+
export interface ReadResult {
|
|
19
|
+
conversations: Conversation[];
|
|
20
|
+
/** Files or databases that couldn't be read, with why. */
|
|
21
|
+
problems: string[];
|
|
22
|
+
/** Where this harness keeps its history (for the summary), or null if absent. */
|
|
23
|
+
source: string | null;
|
|
24
|
+
}
|
|
25
|
+
/** Drop private spans exactly as the live adapters do (marker turns included). */
|
|
26
|
+
export declare function filterPrivate(turns: Turn[]): Turn[];
|
|
27
|
+
/** The live adapters' project rule: nearest `.git` ancestor's folder name, else the folder. */
|
|
28
|
+
export declare function deriveProject(cwd: string | undefined): string | undefined;
|
|
29
|
+
export declare function readClaude(home: string): ReadResult;
|
|
30
|
+
export declare function readCodex(home: string): ReadResult;
|
|
31
|
+
export declare function readPi(home: string): ReadResult;
|
|
32
|
+
export declare function readOpenCode(home: string, env?: Env): Promise<ReadResult>;
|
|
33
|
+
export declare function readHermes(home: string, env?: Env): Promise<ReadResult>;
|
|
34
|
+
export declare function readHarness(harness: HarnessId, home: string, env?: Env): Promise<ReadResult>;
|
|
35
|
+
//# sourceMappingURL=readers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"readers.d.ts","sourceRoot":"","sources":["../../src/import/readers.ts"],"names":[],"mappings":"AAgBA,iFAAiF;AACjF,MAAM,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC;AAErD,MAAM,MAAM,SAAS,GAAG,QAAQ,GAAG,OAAO,GAAG,UAAU,GAAG,IAAI,GAAG,QAAQ,CAAC;AAC1E,eAAO,MAAM,gBAAgB,EAAE,SAAS,SAAS,EAMhD,CAAC;AAEF,MAAM,WAAW,IAAI;IACnB,IAAI,EAAE,MAAM,GAAG,WAAW,CAAC;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;CACZ;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,SAAS,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,sCAAsC;IACtC,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,IAAI,EAAE,CAAC;CACf;AAED,MAAM,WAAW,UAAU;IACzB,aAAa,EAAE,YAAY,EAAE,CAAC;IAC9B,0DAA0D;IAC1D,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,iFAAiF;IACjF,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;CACvB;AAKD,kFAAkF;AAClF,wBAAgB,aAAa,CAAC,KAAK,EAAE,IAAI,EAAE,GAAG,IAAI,EAAE,CAenD;AAED,+FAA+F;AAC/F,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,GAAG,MAAM,GAAG,SAAS,CAezE;AA4ED,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,CAwCnD;AAID,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,CAsClD;AAID,wBAAgB,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,UAAU,CAkC/C;AA+BD,wBAAsB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,GAAE,GAAQ,GAAG,OAAO,CAAC,UAAU,CAAC,CAgFnF;AAMD,wBAAsB,UAAU,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,GAAE,GAAQ,GAAG,OAAO,CAAC,UAAU,CAAC,CAqDjF;AAED,wBAAsB,WAAW,CAC/B,OAAO,EAAE,SAAS,EAClB,IAAI,EAAE,MAAM,EACZ,GAAG,GAAE,GAAQ,GACZ,OAAO,CAAC,UAAU,CAAC,CAarB"}
|
|
@@ -0,0 +1,447 @@
|
|
|
1
|
+
// Transcript readers for `librarian import` (spec 079 §4). One per harness, each reading
|
|
2
|
+
// the harness's own history on THIS machine and producing the same turns, conversation
|
|
3
|
+
// id and project label its live capture hook would have sent — so the server's ledger
|
|
4
|
+
// recognises a conversation whichever way it arrived.
|
|
5
|
+
//
|
|
6
|
+
// Every reader is fail-soft: an unreadable file or database is reported and skipped,
|
|
7
|
+
// never fatal. What is never imported, mirroring live capture:
|
|
8
|
+
// - tool calls, tool output and the model's reasoning (prose only);
|
|
9
|
+
// - subagent / sidechain conversations;
|
|
10
|
+
// - compaction recaps (Claude `isCompactSummary`, OpenCode `summary: true`, Hermes
|
|
11
|
+
// `_compressed_summary`) — they only repeat what was said;
|
|
12
|
+
// - anything inside a `[librarian:private=on]` … `[librarian:private=off]` span.
|
|
13
|
+
import fs from "node:fs";
|
|
14
|
+
import path from "node:path";
|
|
15
|
+
export const IMPORT_HARNESSES = [
|
|
16
|
+
"claude",
|
|
17
|
+
"codex",
|
|
18
|
+
"opencode",
|
|
19
|
+
"pi",
|
|
20
|
+
"hermes",
|
|
21
|
+
];
|
|
22
|
+
const PRIVATE_ON = "[librarian:private=on]";
|
|
23
|
+
const PRIVATE_OFF = "[librarian:private=off]";
|
|
24
|
+
/** Drop private spans exactly as the live adapters do (marker turns included). */
|
|
25
|
+
export function filterPrivate(turns) {
|
|
26
|
+
let priv = false;
|
|
27
|
+
const kept = [];
|
|
28
|
+
for (const turn of turns) {
|
|
29
|
+
const hasOn = turn.text.includes(PRIVATE_ON);
|
|
30
|
+
const hasOff = turn.text.includes(PRIVATE_OFF);
|
|
31
|
+
if (hasOn || hasOff) {
|
|
32
|
+
const onAt = hasOn ? turn.text.lastIndexOf(PRIVATE_ON) : -1;
|
|
33
|
+
const offAt = hasOff ? turn.text.lastIndexOf(PRIVATE_OFF) : -1;
|
|
34
|
+
priv = onAt > offAt;
|
|
35
|
+
continue;
|
|
36
|
+
}
|
|
37
|
+
if (!priv)
|
|
38
|
+
kept.push(turn);
|
|
39
|
+
}
|
|
40
|
+
return kept;
|
|
41
|
+
}
|
|
42
|
+
/** The live adapters' project rule: nearest `.git` ancestor's folder name, else the folder. */
|
|
43
|
+
export function deriveProject(cwd) {
|
|
44
|
+
if (!cwd || !path.isAbsolute(cwd))
|
|
45
|
+
return undefined;
|
|
46
|
+
try {
|
|
47
|
+
let dir = path.resolve(cwd);
|
|
48
|
+
for (;;) {
|
|
49
|
+
if (fs.existsSync(path.join(dir, ".git")))
|
|
50
|
+
return path.basename(dir).slice(0, 200) || undefined;
|
|
51
|
+
const parent = path.dirname(dir);
|
|
52
|
+
if (parent === dir)
|
|
53
|
+
break;
|
|
54
|
+
dir = parent;
|
|
55
|
+
}
|
|
56
|
+
return path.basename(path.resolve(cwd)).slice(0, 200) || undefined;
|
|
57
|
+
}
|
|
58
|
+
catch {
|
|
59
|
+
return undefined;
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
function isRecord(v) {
|
|
63
|
+
return typeof v === "object" && v !== null;
|
|
64
|
+
}
|
|
65
|
+
function textBlocks(content, type) {
|
|
66
|
+
if (typeof content === "string")
|
|
67
|
+
return content.trim();
|
|
68
|
+
if (!Array.isArray(content))
|
|
69
|
+
return "";
|
|
70
|
+
return content
|
|
71
|
+
.filter((b) => isRecord(b) && b.type === type && typeof b.text === "string")
|
|
72
|
+
.map((b) => b.text)
|
|
73
|
+
.join("\n")
|
|
74
|
+
.trim();
|
|
75
|
+
}
|
|
76
|
+
function toIso(value) {
|
|
77
|
+
if (typeof value === "string" && Number.isFinite(Date.parse(value)))
|
|
78
|
+
return new Date(value).toISOString();
|
|
79
|
+
if (typeof value === "number" && Number.isFinite(value)) {
|
|
80
|
+
// Seconds (Hermes) vs milliseconds (Pi, OpenCode).
|
|
81
|
+
return new Date(value < 1e12 ? value * 1000 : value).toISOString();
|
|
82
|
+
}
|
|
83
|
+
return null;
|
|
84
|
+
}
|
|
85
|
+
function jsonLines(file) {
|
|
86
|
+
const out = [];
|
|
87
|
+
for (const line of fs.readFileSync(file, "utf8").split("\n")) {
|
|
88
|
+
if (!line.trim())
|
|
89
|
+
continue;
|
|
90
|
+
try {
|
|
91
|
+
out.push(JSON.parse(line));
|
|
92
|
+
}
|
|
93
|
+
catch {
|
|
94
|
+
// a torn last line (the harness was mid-write) is skipped
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
return out;
|
|
98
|
+
}
|
|
99
|
+
function listFiles(dir, match) {
|
|
100
|
+
const out = [];
|
|
101
|
+
const walk = (d) => {
|
|
102
|
+
let entries;
|
|
103
|
+
try {
|
|
104
|
+
entries = fs.readdirSync(d, { withFileTypes: true });
|
|
105
|
+
}
|
|
106
|
+
catch {
|
|
107
|
+
return;
|
|
108
|
+
}
|
|
109
|
+
for (const e of entries) {
|
|
110
|
+
const p = path.join(d, e.name);
|
|
111
|
+
if (e.isDirectory())
|
|
112
|
+
walk(p);
|
|
113
|
+
else if (e.isFile() && match(e.name))
|
|
114
|
+
out.push(p);
|
|
115
|
+
}
|
|
116
|
+
};
|
|
117
|
+
walk(dir);
|
|
118
|
+
return out.sort();
|
|
119
|
+
}
|
|
120
|
+
/** Turn a reader's raw turns into a Conversation, or null when there's no exchange. */
|
|
121
|
+
function finish(harness, convId, raw, project) {
|
|
122
|
+
const turns = filterPrivate(raw);
|
|
123
|
+
if (!turns.some((t) => t.role === "user") || !turns.some((t) => t.role === "assistant"))
|
|
124
|
+
return null;
|
|
125
|
+
const endedAt = turns.reduce((max, t) => (t.ts > max ? t.ts : max), turns[0].ts);
|
|
126
|
+
return { harness, convId, endedAt, ...(project ? { project } : {}), turns };
|
|
127
|
+
}
|
|
128
|
+
// ── Claude Code: ~/.claude/projects/<folder>/<session_id>.jsonl ────────────────
|
|
129
|
+
export function readClaude(home) {
|
|
130
|
+
const root = path.join(home, ".claude", "projects");
|
|
131
|
+
if (!fs.existsSync(root))
|
|
132
|
+
return { conversations: [], problems: [], source: null };
|
|
133
|
+
const conversations = [];
|
|
134
|
+
const problems = [];
|
|
135
|
+
for (const dirent of fs.readdirSync(root, { withFileTypes: true })) {
|
|
136
|
+
if (!dirent.isDirectory())
|
|
137
|
+
continue;
|
|
138
|
+
const dir = path.join(root, dirent.name);
|
|
139
|
+
for (const name of fs.readdirSync(dir)) {
|
|
140
|
+
if (!name.endsWith(".jsonl"))
|
|
141
|
+
continue; // top-level sessions only (subagents live deeper)
|
|
142
|
+
const file = path.join(dir, name);
|
|
143
|
+
try {
|
|
144
|
+
const turns = [];
|
|
145
|
+
let cwd;
|
|
146
|
+
for (const e of jsonLines(file)) {
|
|
147
|
+
if (!isRecord(e))
|
|
148
|
+
continue;
|
|
149
|
+
if (e.isSidechain === true || e.isMeta === true || e.isCompactSummary === true)
|
|
150
|
+
continue;
|
|
151
|
+
if (e.type !== "user" && e.type !== "assistant")
|
|
152
|
+
continue;
|
|
153
|
+
const message = e.message;
|
|
154
|
+
if (!isRecord(message))
|
|
155
|
+
continue;
|
|
156
|
+
if (typeof e.cwd === "string" && !cwd)
|
|
157
|
+
cwd = e.cwd;
|
|
158
|
+
const ts = toIso(e.timestamp);
|
|
159
|
+
if (!ts)
|
|
160
|
+
continue;
|
|
161
|
+
if (message.role === "user") {
|
|
162
|
+
// A string is the prompt; an array is tool plumbing.
|
|
163
|
+
const text = typeof message.content === "string" ? message.content.trim() : "";
|
|
164
|
+
if (text)
|
|
165
|
+
turns.push({ role: "user", text, ts });
|
|
166
|
+
}
|
|
167
|
+
else if (message.role === "assistant") {
|
|
168
|
+
const text = textBlocks(message.content, "text");
|
|
169
|
+
if (text)
|
|
170
|
+
turns.push({ role: "assistant", text, ts });
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
const c = finish("claude", name.slice(0, -".jsonl".length), turns, deriveProject(cwd));
|
|
174
|
+
if (c)
|
|
175
|
+
conversations.push(c);
|
|
176
|
+
}
|
|
177
|
+
catch (error) {
|
|
178
|
+
problems.push(`${file}: ${error.message}`);
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
return { conversations, problems, source: root };
|
|
183
|
+
}
|
|
184
|
+
// ── Codex: ~/.codex/sessions/YYYY/MM/DD/rollout-*.jsonl ────────────────────────
|
|
185
|
+
export function readCodex(home) {
|
|
186
|
+
const root = path.join(home, ".codex", "sessions");
|
|
187
|
+
if (!fs.existsSync(root))
|
|
188
|
+
return { conversations: [], problems: [], source: null };
|
|
189
|
+
const conversations = [];
|
|
190
|
+
const problems = [];
|
|
191
|
+
for (const file of listFiles(root, (n) => n.startsWith("rollout-") && n.endsWith(".jsonl"))) {
|
|
192
|
+
try {
|
|
193
|
+
let convId;
|
|
194
|
+
let cwd;
|
|
195
|
+
let subagent = false;
|
|
196
|
+
const turns = [];
|
|
197
|
+
for (const e of jsonLines(file)) {
|
|
198
|
+
if (!isRecord(e) || !isRecord(e.payload))
|
|
199
|
+
continue;
|
|
200
|
+
const p = e.payload;
|
|
201
|
+
if (e.type === "session_meta") {
|
|
202
|
+
if (typeof p.id === "string")
|
|
203
|
+
convId ??= p.id;
|
|
204
|
+
if (typeof p.cwd === "string")
|
|
205
|
+
cwd ??= p.cwd;
|
|
206
|
+
if (isRecord(p.source) && "subagent" in p.source)
|
|
207
|
+
subagent = true;
|
|
208
|
+
continue;
|
|
209
|
+
}
|
|
210
|
+
const ts = toIso(e.timestamp);
|
|
211
|
+
if (!ts)
|
|
212
|
+
continue;
|
|
213
|
+
if (e.type === "event_msg" && p.type === "user_message" && typeof p.message === "string") {
|
|
214
|
+
const text = p.message.trim();
|
|
215
|
+
if (text)
|
|
216
|
+
turns.push({ role: "user", text, ts });
|
|
217
|
+
}
|
|
218
|
+
else if (e.type === "response_item" && p.type === "message" && p.role === "assistant") {
|
|
219
|
+
const text = textBlocks(p.content, "output_text");
|
|
220
|
+
if (text)
|
|
221
|
+
turns.push({ role: "assistant", text, ts });
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
if (subagent || !convId)
|
|
225
|
+
continue;
|
|
226
|
+
const c = finish("codex", convId, turns, deriveProject(cwd));
|
|
227
|
+
if (c)
|
|
228
|
+
conversations.push(c);
|
|
229
|
+
}
|
|
230
|
+
catch (error) {
|
|
231
|
+
problems.push(`${file}: ${error.message}`);
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
return { conversations, problems, source: root };
|
|
235
|
+
}
|
|
236
|
+
// ── Pi: ~/.pi/agent/sessions/<folder>/<ts>_<id>.jsonl ──────────────────────────
|
|
237
|
+
export function readPi(home) {
|
|
238
|
+
const root = path.join(home, ".pi", "agent", "sessions");
|
|
239
|
+
if (!fs.existsSync(root))
|
|
240
|
+
return { conversations: [], problems: [], source: null };
|
|
241
|
+
const conversations = [];
|
|
242
|
+
const problems = [];
|
|
243
|
+
for (const file of listFiles(root, (n) => n.endsWith(".jsonl"))) {
|
|
244
|
+
try {
|
|
245
|
+
let convId;
|
|
246
|
+
let cwd;
|
|
247
|
+
const turns = [];
|
|
248
|
+
for (const e of jsonLines(file)) {
|
|
249
|
+
if (!isRecord(e))
|
|
250
|
+
continue;
|
|
251
|
+
if (e.type === "session") {
|
|
252
|
+
if (typeof e.id === "string")
|
|
253
|
+
convId ??= e.id;
|
|
254
|
+
if (typeof e.cwd === "string")
|
|
255
|
+
cwd ??= e.cwd;
|
|
256
|
+
continue;
|
|
257
|
+
}
|
|
258
|
+
if (e.type !== "message" || !isRecord(e.message))
|
|
259
|
+
continue;
|
|
260
|
+
const m = e.message;
|
|
261
|
+
// compactionSummary / branchSummary / toolResult roles are not conversation.
|
|
262
|
+
if (m.role !== "user" && m.role !== "assistant")
|
|
263
|
+
continue;
|
|
264
|
+
const ts = toIso(m.timestamp) ?? toIso(e.timestamp);
|
|
265
|
+
if (!ts)
|
|
266
|
+
continue;
|
|
267
|
+
const text = textBlocks(m.content, "text");
|
|
268
|
+
if (text)
|
|
269
|
+
turns.push({ role: m.role, text, ts });
|
|
270
|
+
}
|
|
271
|
+
if (!convId)
|
|
272
|
+
continue;
|
|
273
|
+
const c = finish("pi", convId, turns, deriveProject(cwd));
|
|
274
|
+
if (c)
|
|
275
|
+
conversations.push(c);
|
|
276
|
+
}
|
|
277
|
+
catch (error) {
|
|
278
|
+
problems.push(`${file}: ${error.message}`);
|
|
279
|
+
}
|
|
280
|
+
}
|
|
281
|
+
return { conversations, problems, source: root };
|
|
282
|
+
}
|
|
283
|
+
async function openReadOnly(file) {
|
|
284
|
+
// node:sqlite is built in from Node 22.13 / 23.4. Loaded lazily so the rest of the CLI
|
|
285
|
+
// never depends on it.
|
|
286
|
+
const { DatabaseSync } = (await import("node:sqlite"));
|
|
287
|
+
return new DatabaseSync(file, { readOnly: true });
|
|
288
|
+
}
|
|
289
|
+
function columns(db, table) {
|
|
290
|
+
return new Set(db
|
|
291
|
+
.prepare(`PRAGMA table_info(${table})`)
|
|
292
|
+
.all()
|
|
293
|
+
.map((r) => String(r.name)));
|
|
294
|
+
}
|
|
295
|
+
// ── OpenCode: ~/.local/share/opencode/opencode.db ──────────────────────────────
|
|
296
|
+
// Tables (v1.x): session(id, parent_id, directory, …), message(id, session_id,
|
|
297
|
+
// time_created, data JSON), part(id, message_id, session_id, time_created, data JSON).
|
|
298
|
+
export async function readOpenCode(home, env = {}) {
|
|
299
|
+
const dataHome = env.XDG_DATA_HOME || path.join(home, ".local", "share");
|
|
300
|
+
const file = path.join(dataHome, "opencode", "opencode.db");
|
|
301
|
+
if (!fs.existsSync(file))
|
|
302
|
+
return { conversations: [], problems: [], source: null };
|
|
303
|
+
const conversations = [];
|
|
304
|
+
const problems = [];
|
|
305
|
+
let db;
|
|
306
|
+
try {
|
|
307
|
+
db = await openReadOnly(file);
|
|
308
|
+
}
|
|
309
|
+
catch (error) {
|
|
310
|
+
return { conversations, problems: [`${file}: ${error.message}`], source: file };
|
|
311
|
+
}
|
|
312
|
+
try {
|
|
313
|
+
const sessionCols = columns(db, "session");
|
|
314
|
+
if (!sessionCols.has("id") ||
|
|
315
|
+
!columns(db, "message").has("data") ||
|
|
316
|
+
!columns(db, "part").has("data")) {
|
|
317
|
+
return {
|
|
318
|
+
conversations,
|
|
319
|
+
problems: [`${file}: this OpenCode version's database layout isn't one the importer knows`],
|
|
320
|
+
source: file,
|
|
321
|
+
};
|
|
322
|
+
}
|
|
323
|
+
const sessions = db
|
|
324
|
+
.prepare(`SELECT id, ${sessionCols.has("directory") ? "directory" : "NULL AS directory"}, ${sessionCols.has("parent_id") ? "parent_id" : "NULL AS parent_id"} FROM session`)
|
|
325
|
+
.all();
|
|
326
|
+
const messages = db.prepare("SELECT id, data, time_created FROM message WHERE session_id = ? ORDER BY time_created, id");
|
|
327
|
+
const parts = db.prepare("SELECT message_id, data FROM part WHERE session_id = ? ORDER BY message_id, id");
|
|
328
|
+
for (const s of sessions) {
|
|
329
|
+
if (s.parent_id)
|
|
330
|
+
continue; // a subagent's session
|
|
331
|
+
const id = String(s.id);
|
|
332
|
+
try {
|
|
333
|
+
const textByMessage = new Map();
|
|
334
|
+
for (const p of parts.all(id)) {
|
|
335
|
+
const data = JSON.parse(String(p.data));
|
|
336
|
+
if (!isRecord(data) ||
|
|
337
|
+
data.type !== "text" ||
|
|
338
|
+
data.synthetic === true ||
|
|
339
|
+
typeof data.text !== "string")
|
|
340
|
+
continue;
|
|
341
|
+
const list = textByMessage.get(String(p.message_id)) ?? [];
|
|
342
|
+
list.push(data.text);
|
|
343
|
+
textByMessage.set(String(p.message_id), list);
|
|
344
|
+
}
|
|
345
|
+
const turns = [];
|
|
346
|
+
for (const m of messages.all(id)) {
|
|
347
|
+
const info = JSON.parse(String(m.data));
|
|
348
|
+
if (!isRecord(info))
|
|
349
|
+
continue;
|
|
350
|
+
if (info.role !== "user" && info.role !== "assistant")
|
|
351
|
+
continue;
|
|
352
|
+
if (info.summary === true)
|
|
353
|
+
continue; // the compaction recap
|
|
354
|
+
const created = isRecord(info.time) ? info.time.created : m.time_created;
|
|
355
|
+
const ts = toIso(created);
|
|
356
|
+
const text = (textByMessage.get(String(m.id)) ?? []).join("\n").trim();
|
|
357
|
+
if (ts && text)
|
|
358
|
+
turns.push({ role: info.role, text, ts });
|
|
359
|
+
}
|
|
360
|
+
const c = finish("opencode", id, turns, deriveProject(typeof s.directory === "string" ? s.directory : undefined));
|
|
361
|
+
if (c)
|
|
362
|
+
conversations.push(c);
|
|
363
|
+
}
|
|
364
|
+
catch (error) {
|
|
365
|
+
problems.push(`OpenCode session ${id}: ${error.message}`);
|
|
366
|
+
}
|
|
367
|
+
}
|
|
368
|
+
}
|
|
369
|
+
finally {
|
|
370
|
+
db.close();
|
|
371
|
+
}
|
|
372
|
+
return { conversations, problems, source: file };
|
|
373
|
+
}
|
|
374
|
+
// ── Hermes: ~/.hermes/state.db ─────────────────────────────────────────────────
|
|
375
|
+
// Tables: sessions(id, parent_session_id, git_repo_root, …), messages(session_id,
|
|
376
|
+
// role, content, timestamp REAL seconds, _compressed_summary, …).
|
|
377
|
+
export async function readHermes(home, env = {}) {
|
|
378
|
+
const file = path.join(env.HERMES_HOME || path.join(home, ".hermes"), "state.db");
|
|
379
|
+
if (!fs.existsSync(file))
|
|
380
|
+
return { conversations: [], problems: [], source: null };
|
|
381
|
+
const conversations = [];
|
|
382
|
+
const problems = [];
|
|
383
|
+
let db;
|
|
384
|
+
try {
|
|
385
|
+
db = await openReadOnly(file);
|
|
386
|
+
}
|
|
387
|
+
catch (error) {
|
|
388
|
+
return { conversations, problems: [`${file}: ${error.message}`], source: file };
|
|
389
|
+
}
|
|
390
|
+
try {
|
|
391
|
+
const sessionCols = columns(db, "sessions");
|
|
392
|
+
const messageCols = columns(db, "messages");
|
|
393
|
+
if (!sessionCols.has("id") || !messageCols.has("content") || !messageCols.has("timestamp")) {
|
|
394
|
+
return {
|
|
395
|
+
conversations,
|
|
396
|
+
problems: [`${file}: this Hermes version's database layout isn't one the importer knows`],
|
|
397
|
+
source: file,
|
|
398
|
+
};
|
|
399
|
+
}
|
|
400
|
+
const repo = sessionCols.has("git_repo_root") ? "git_repo_root" : "NULL AS git_repo_root";
|
|
401
|
+
const sessions = db.prepare(`SELECT id, ${repo} FROM sessions`).all();
|
|
402
|
+
const compressed = messageCols.has("_compressed_summary") ? "AND _compressed_summary = 0" : "";
|
|
403
|
+
const messages = db.prepare(`SELECT role, content, timestamp FROM messages WHERE session_id = ? AND role IN ('user','assistant') ${compressed} ORDER BY timestamp, id`);
|
|
404
|
+
for (const s of sessions) {
|
|
405
|
+
const id = String(s.id);
|
|
406
|
+
try {
|
|
407
|
+
const turns = [];
|
|
408
|
+
for (const m of messages.all(id)) {
|
|
409
|
+
const ts = toIso(m.timestamp);
|
|
410
|
+
const text = typeof m.content === "string" ? m.content.trim() : "";
|
|
411
|
+
if (ts && text && (m.role === "user" || m.role === "assistant")) {
|
|
412
|
+
turns.push({ role: m.role, text, ts });
|
|
413
|
+
}
|
|
414
|
+
}
|
|
415
|
+
// Hermes sends a project only inside a git repo (spec 078).
|
|
416
|
+
const project = typeof s.git_repo_root === "string" && s.git_repo_root
|
|
417
|
+
? path.basename(s.git_repo_root)
|
|
418
|
+
: undefined;
|
|
419
|
+
const c = finish("hermes", id, turns, project);
|
|
420
|
+
if (c)
|
|
421
|
+
conversations.push(c);
|
|
422
|
+
}
|
|
423
|
+
catch (error) {
|
|
424
|
+
problems.push(`Hermes session ${id}: ${error.message}`);
|
|
425
|
+
}
|
|
426
|
+
}
|
|
427
|
+
}
|
|
428
|
+
finally {
|
|
429
|
+
db.close();
|
|
430
|
+
}
|
|
431
|
+
return { conversations, problems, source: file };
|
|
432
|
+
}
|
|
433
|
+
export async function readHarness(harness, home, env = {}) {
|
|
434
|
+
switch (harness) {
|
|
435
|
+
case "claude":
|
|
436
|
+
return readClaude(home);
|
|
437
|
+
case "codex":
|
|
438
|
+
return readCodex(home);
|
|
439
|
+
case "pi":
|
|
440
|
+
return readPi(home);
|
|
441
|
+
case "opencode":
|
|
442
|
+
return readOpenCode(home, env);
|
|
443
|
+
case "hermes":
|
|
444
|
+
return readHermes(home, env);
|
|
445
|
+
}
|
|
446
|
+
}
|
|
447
|
+
//# sourceMappingURL=readers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"readers.js","sourceRoot":"","sources":["../../src/import/readers.ts"],"names":[],"mappings":"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"}
|
package/dist/runtime.d.ts
CHANGED
|
@@ -41,5 +41,6 @@ export interface RuntimeOptions {
|
|
|
41
41
|
* in a non-interactive run) gets a specific, actionable message.
|
|
42
42
|
*/
|
|
43
43
|
export declare function runCli(argv: string[], options?: RuntimeOptions): Promise<CliResult>;
|
|
44
|
+
export declare function importUsage(): string;
|
|
44
45
|
export declare function usage(): string;
|
|
45
46
|
//# sourceMappingURL=runtime.d.ts.map
|
package/dist/runtime.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"runtime.d.ts","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"AAmBA,OAAO,EAAe,KAAK,KAAK,EAAE,MAAM,UAAU,CAAC;AAGnD,OAAO,EAAqC,KAAK,QAAQ,EAAE,MAAM,aAAa,CAAC;AAmB/E,MAAM,WAAW,SAAS;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,cAAc;IAC7B,0EAA0E;IAC1E,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,uDAAuD;IACvD,KAAK,CAAC,EAAE,KAAK,CAAC;IACd,2EAA2E;IAC3E,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB;;;;OAIG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC,UAAU,CAAC;IACxB;;;;;OAKG;IACH,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB;;;;;OAKG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC,QAAQ,CAAC;CAC5B;AAID;;;;;;GAMG;AACH,wBAAsB,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,OAAO,GAAE,cAAmB,GAAG,OAAO,CAAC,SAAS,CAAC,CAY7F;AAgGD,wBAAgB,WAAW,IAAI,MAAM,CAepC;AAkVD,wBAAgB,KAAK,IAAI,MAAM,CA0B9B"}
|
package/dist/runtime.js
CHANGED
|
@@ -8,7 +8,10 @@
|
|
|
8
8
|
// (`setRunner` / `setHomeOverride` / `setAdapterFetcher` / `setLatestFetcher`
|
|
9
9
|
// / `setServerProbe`). NOTHING here touches the real system, network, or
|
|
10
10
|
// stdin in tests.
|
|
11
|
+
import os from "node:os";
|
|
11
12
|
import { runInstall } from "./commands/install.js";
|
|
13
|
+
import { runImport } from "./import/command.js";
|
|
14
|
+
import { IMPORT_HARNESSES } from "./import/readers.js";
|
|
12
15
|
import { runUninstall } from "./commands/uninstall.js";
|
|
13
16
|
import { runUpdate } from "./commands/update.js";
|
|
14
17
|
import { formatConfig, readConfig, redact, setConfig } from "./config.js";
|
|
@@ -78,11 +81,75 @@ async function dispatch(argv, options) {
|
|
|
78
81
|
if (command === "server") {
|
|
79
82
|
return runServerCommand(rest, options);
|
|
80
83
|
}
|
|
84
|
+
if (command === "import") {
|
|
85
|
+
return runImportCommand(rest, options);
|
|
86
|
+
}
|
|
81
87
|
if (PHASE_2_STUBS.has(command)) {
|
|
82
88
|
return runPhase2Stub(command);
|
|
83
89
|
}
|
|
84
90
|
return err(`Unknown command: ${command}\n\n${usage()}`);
|
|
85
91
|
}
|
|
92
|
+
// --- import (spec 079) ----------------------------------------------------
|
|
93
|
+
async function runImportCommand(rest, options) {
|
|
94
|
+
const { flags } = parseArgs(rest);
|
|
95
|
+
if (flagBool(flags.help) || flagBool(flags.h))
|
|
96
|
+
return ok(importUsage());
|
|
97
|
+
const config = readConfig(options.home);
|
|
98
|
+
if (!config || !config.token || !config.serverUrl) {
|
|
99
|
+
return err("librarian import: this machine isn't connected to a Librarian yet. Run " +
|
|
100
|
+
"`librarian config --mcp-url <url> --token <token>` (or `librarian install`) first.");
|
|
101
|
+
}
|
|
102
|
+
const onlyRaw = flagString(flags.only);
|
|
103
|
+
if (onlyRaw !== undefined && onlyRaw !== "memories" && onlyRaw !== "journal") {
|
|
104
|
+
return err(`librarian import: expected --only memories or --only journal, got '${onlyRaw}'`);
|
|
105
|
+
}
|
|
106
|
+
const harnessRaw = flagString(flags.harness);
|
|
107
|
+
const harnesses = harnessRaw
|
|
108
|
+
? harnessRaw
|
|
109
|
+
.split(",")
|
|
110
|
+
.map((h) => h.trim())
|
|
111
|
+
.filter(Boolean)
|
|
112
|
+
: undefined;
|
|
113
|
+
const unknown = harnesses?.filter((h) => !IMPORT_HARNESSES.includes(h)) ?? [];
|
|
114
|
+
if (unknown.length > 0) {
|
|
115
|
+
return err(`librarian import: unknown harness '${unknown.join("', '")}'. Expected one or more of: ${IMPORT_HARNESSES.join(", ")}`);
|
|
116
|
+
}
|
|
117
|
+
const prompter = options.prompter ?? createPrompter();
|
|
118
|
+
try {
|
|
119
|
+
const outcome = await runImport({
|
|
120
|
+
serverUrl: config.serverUrl,
|
|
121
|
+
token: config.token,
|
|
122
|
+
home: options.home ?? os.homedir(),
|
|
123
|
+
env: options.env ?? process.env,
|
|
124
|
+
...(onlyRaw ? { only: onlyRaw } : {}),
|
|
125
|
+
...(harnesses ? { harnesses: harnesses } : {}),
|
|
126
|
+
dryRun: flagBool(flags["dry-run"]),
|
|
127
|
+
yes: flagBool(flags.yes) || flagBool(flags.y),
|
|
128
|
+
prompter,
|
|
129
|
+
log: (line) => process.stdout.write(`${line}\n`),
|
|
130
|
+
});
|
|
131
|
+
return outcome.ok ? ok(outcome.output) : errOut(outcome.output);
|
|
132
|
+
}
|
|
133
|
+
finally {
|
|
134
|
+
prompter.close();
|
|
135
|
+
}
|
|
136
|
+
}
|
|
137
|
+
export function importUsage() {
|
|
138
|
+
return [
|
|
139
|
+
"Usage: librarian import [--only memories|journal] [--harness <list>] [--dry-run] [--yes]",
|
|
140
|
+
"",
|
|
141
|
+
"Send this machine's past conversations through the Librarian's memory intake and journal.",
|
|
142
|
+
"Each step only takes conversations that ended before that step first ran on the server;",
|
|
143
|
+
"after that, live capture already has them. The server also caps how far back an import",
|
|
144
|
+
"reaches and how many conversations it takes (Settings → Curator → Import).",
|
|
145
|
+
"",
|
|
146
|
+
"Flags:",
|
|
147
|
+
" --only memories|journal run just one step (default: both)",
|
|
148
|
+
` --harness <list> comma-separated: ${IMPORT_HARNESSES.join(", ")} (default: all)`,
|
|
149
|
+
" --dry-run show the server's plan and send nothing",
|
|
150
|
+
" --yes, -y don't ask before sending",
|
|
151
|
+
].join("\n");
|
|
152
|
+
}
|
|
86
153
|
// --- config (fully implemented) ------------------------------------------
|
|
87
154
|
function runConfig(rest, options) {
|
|
88
155
|
const { flags } = parseArgs(rest);
|
|
@@ -396,6 +463,7 @@ export function usage() {
|
|
|
396
463
|
" doctor Diagnose token, server reachability, harness CLIs",
|
|
397
464
|
" config Show or set MCP URL, token, server URL",
|
|
398
465
|
" server Self-host the Librarian server (run `server` for its commands)",
|
|
466
|
+
" import Import past conversations into memories and the journal",
|
|
399
467
|
" self-update Update the librarian CLI itself",
|
|
400
468
|
" report Push this machine's state to the server",
|
|
401
469
|
"",
|
package/dist/runtime.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runtime.js","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"runtime.js","sourceRoot":"","sources":["../src/runtime.ts"],"names":[],"mappings":"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"}
|