@the-librarian/cli 1.0.0-rc.29 → 1.0.0-rc.30
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/harnesses/codex.d.ts +13 -0
- package/dist/harnesses/codex.d.ts.map +1 -1
- package/dist/harnesses/codex.js +217 -26
- package/dist/harnesses/codex.js.map +1 -1
- package/dist/harnesses/opencode.d.ts +12 -0
- package/dist/harnesses/opencode.d.ts.map +1 -1
- package/dist/harnesses/opencode.js +125 -4
- package/dist/harnesses/opencode.js.map +1 -1
- package/dist/paths.d.ts +16 -0
- package/dist/paths.d.ts.map +1 -1
- package/dist/paths.js +22 -0
- package/dist/paths.js.map +1 -1
- package/package.json +1 -1
|
@@ -1,3 +1,16 @@
|
|
|
1
1
|
import type { HarnessModule } from "./types.js";
|
|
2
|
+
export declare const CODEX_CAPTURE_PINNED_REF: string;
|
|
3
|
+
/**
|
|
4
|
+
* Fetches the Codex capture integration for a pinned ref and returns the absolute
|
|
5
|
+
* path to a directory whose contents ARE the integration (the equivalent of
|
|
6
|
+
* `integrations/codex/`, i.e. holding `scripts/**` and `hooks/codex-hooks.json`).
|
|
7
|
+
* The caller copies from there. Injectable so tests substitute a local fixture
|
|
8
|
+
* instead of the network.
|
|
9
|
+
*/
|
|
10
|
+
export type CaptureFetcher = (ref: string) => Promise<string>;
|
|
11
|
+
/** Override the capture-adapter fetcher (tests inject a local-fixture fetcher). */
|
|
12
|
+
export declare function setCodexCaptureFetcher(next: CaptureFetcher): void;
|
|
13
|
+
/** Restore the default (network) capture-adapter fetcher (tests). */
|
|
14
|
+
export declare function resetCodexCaptureFetcher(): void;
|
|
2
15
|
export declare const codex: HarnessModule;
|
|
3
16
|
//# sourceMappingURL=codex.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"codex.d.ts","sourceRoot":"","sources":["../../src/harnesses/codex.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"codex.d.ts","sourceRoot":"","sources":["../../src/harnesses/codex.ts"],"names":[],"mappings":"AAwBA,OAAO,KAAK,EAAiB,aAAa,EAAE,MAAM,YAAY,CAAC;AA0C/D,eAAO,MAAM,wBAAwB,QAAqB,CAAC;AAsF3D;;;;;;GAMG;AACH,MAAM,MAAM,cAAc,GAAG,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;AAmC9D,mFAAmF;AACnF,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,cAAc,GAAG,IAAI,CAEjE;AAED,qEAAqE;AACrE,wBAAgB,wBAAwB,IAAI,IAAI,CAE/C;AA4HD,eAAO,MAAM,KAAK,EAAE,aAiDnB,CAAC"}
|
package/dist/harnesses/codex.js
CHANGED
|
@@ -16,9 +16,11 @@
|
|
|
16
16
|
// it resolves the value at request time. We pass `cfg.mcpUrl` (not the
|
|
17
17
|
// token) on the CLI, so nothing secret is ever logged.
|
|
18
18
|
import fs from "node:fs";
|
|
19
|
+
import os from "node:os";
|
|
19
20
|
import path from "node:path";
|
|
20
21
|
import { run, which } from "../exec.js";
|
|
21
|
-
import { codexConfigPath } from "../paths.js";
|
|
22
|
+
import { codexCaptureDir, codexConfigPath, codexHooksPath } from "../paths.js";
|
|
23
|
+
import { cliVersion } from "../version.js";
|
|
22
24
|
const CLI = "codex";
|
|
23
25
|
const SERVER_ID = "librarian";
|
|
24
26
|
const TOKEN_ENV_VAR = "LIBRARIAN_AGENT_TOKEN";
|
|
@@ -27,6 +29,37 @@ const TABLE_HEADER = "[mcp_servers.librarian]";
|
|
|
27
29
|
// though TOML carries no native version for an MCP entry.
|
|
28
30
|
const CONFIG_VERSION = "1";
|
|
29
31
|
const VERSION_MARKER = "# librarian-config-version =";
|
|
32
|
+
// ── Auto-capture hooks wiring (spec 2026-06-16-harness-auto-capture, Phase 2A) ─
|
|
33
|
+
//
|
|
34
|
+
// Codex fires the same command-hook events as Claude (UserPromptSubmit / Stop /
|
|
35
|
+
// SessionEnd). Codex discovers lifecycle hooks ONLY at ~/.codex/hooks.json (no
|
|
36
|
+
// plugin host auto-wires them), so — mirroring mem0's install_codex_hooks.py — we
|
|
37
|
+
// MERGE our entries into that file (creating it if absent) and surface the
|
|
38
|
+
// `codex_hooks = true` feature-flag requirement. The merge is idempotent: entries
|
|
39
|
+
// we own are identified by an owner marker in the command string and stripped
|
|
40
|
+
// before fresh ones are added, so re-install/upgrade leaves no duplicates.
|
|
41
|
+
//
|
|
42
|
+
// The capture-adapter scripts (integrations/codex/scripts/**) do NOT ship with
|
|
43
|
+
// the published installer (it ships only dist/), so — exactly like the Hermes
|
|
44
|
+
// adapter — we FETCH them from the pinned release tarball and copy them under
|
|
45
|
+
// ~/.librarian/codex-capture; the merged hook commands point their
|
|
46
|
+
// ${LIBRARIAN_CODEX_ROOT} placeholder at that dir.
|
|
47
|
+
//
|
|
48
|
+
// ASSUMPTION (the one genuine unknown): the assumed hook events + payload shape
|
|
49
|
+
// are derived from mem0's proven Codex wiring + the Claude payload (documented in
|
|
50
|
+
// integrations/codex/scripts/lib/transcript.mjs). SC1 (true e2e against a running
|
|
51
|
+
// Codex) is DEFERRED — there is no codex CLI on the build machine to confirm.
|
|
52
|
+
// The placeholder in hooks/codex-hooks.json, rewritten to the absolute scripts
|
|
53
|
+
// install dir at merge time. Matches the env var the entry shell reads.
|
|
54
|
+
const ROOT_PLACEHOLDER = "${LIBRARIAN_CODEX_ROOT}";
|
|
55
|
+
// Substring that identifies entries THIS installer owns (stable across install
|
|
56
|
+
// paths), so the merge can strip + re-add idempotently. Mirrors mem0's
|
|
57
|
+
// OWNER_MARKER = "mem0-plugin".
|
|
58
|
+
const HOOKS_OWNER_MARKER = "the-librarian-codex";
|
|
59
|
+
// The pinned monorepo release we fetch the adapter from: the tag matching this
|
|
60
|
+
// CLI's own version. DERIVED (not hardcoded) so it can't drift — same rationale
|
|
61
|
+
// as the Hermes adapter's PINNED_REF.
|
|
62
|
+
export const CODEX_CAPTURE_PINNED_REF = `v${cliVersion()}`;
|
|
30
63
|
/** Read config.toml, or "" if it doesn't exist yet. */
|
|
31
64
|
function readConfig() {
|
|
32
65
|
try {
|
|
@@ -106,6 +139,141 @@ function writeConfig(content) {
|
|
|
106
139
|
fs.mkdirSync(path.dirname(file), { recursive: true });
|
|
107
140
|
fs.writeFileSync(file, content, "utf8");
|
|
108
141
|
}
|
|
142
|
+
/** The default fetcher: codeload tarball → `tar` extract → integration dir. */
|
|
143
|
+
const defaultCaptureFetcher = async (ref) => {
|
|
144
|
+
const url = `https://codeload.github.com/JimJafar/the-librarian/tar.gz/refs/tags/${ref}`;
|
|
145
|
+
const work = fs.mkdtempSync(path.join(os.tmpdir(), "librarian-codex-fetch-"));
|
|
146
|
+
const tarball = path.join(work, "src.tar.gz");
|
|
147
|
+
const res = await fetch(url, { redirect: "error" });
|
|
148
|
+
if (!res.ok) {
|
|
149
|
+
throw new Error(`Failed to fetch Codex capture adapter (${ref}): HTTP ${res.status}`);
|
|
150
|
+
}
|
|
151
|
+
const buf = Buffer.from(await res.arrayBuffer());
|
|
152
|
+
fs.writeFileSync(tarball, buf);
|
|
153
|
+
// codeload nests the integration at `the-librarian-<ref>/integrations/codex/**`
|
|
154
|
+
// — three leading path components. Strip them so `scripts/` + `hooks/` land at
|
|
155
|
+
// the extraction root, which is what the caller copies into ~/.librarian/.
|
|
156
|
+
const out = path.join(work, "adapter");
|
|
157
|
+
fs.mkdirSync(out, { recursive: true });
|
|
158
|
+
const extract = await run("tar", [
|
|
159
|
+
"-xzf",
|
|
160
|
+
tarball,
|
|
161
|
+
"-C",
|
|
162
|
+
out,
|
|
163
|
+
"--strip-components=3",
|
|
164
|
+
"--wildcards",
|
|
165
|
+
"*/integrations/codex/*",
|
|
166
|
+
]);
|
|
167
|
+
if (extract.code !== 0) {
|
|
168
|
+
throw new Error(`Failed to extract Codex capture adapter: ${(extract.stderr || "").trim()}`);
|
|
169
|
+
}
|
|
170
|
+
return out;
|
|
171
|
+
};
|
|
172
|
+
let captureFetcher = defaultCaptureFetcher;
|
|
173
|
+
/** Override the capture-adapter fetcher (tests inject a local-fixture fetcher). */
|
|
174
|
+
export function setCodexCaptureFetcher(next) {
|
|
175
|
+
captureFetcher = next;
|
|
176
|
+
}
|
|
177
|
+
/** Restore the default (network) capture-adapter fetcher (tests). */
|
|
178
|
+
export function resetCodexCaptureFetcher() {
|
|
179
|
+
captureFetcher = defaultCaptureFetcher;
|
|
180
|
+
}
|
|
181
|
+
/** Recursively copy a directory tree, overwriting any prior copy (idempotent). */
|
|
182
|
+
function copyDir(from, to) {
|
|
183
|
+
fs.rmSync(to, { recursive: true, force: true });
|
|
184
|
+
fs.mkdirSync(path.dirname(to), { recursive: true });
|
|
185
|
+
fs.cpSync(from, to, { recursive: true });
|
|
186
|
+
}
|
|
187
|
+
/** Read ~/.codex/hooks.json, or an empty shape if absent/unparseable. */
|
|
188
|
+
function readHooksFile() {
|
|
189
|
+
try {
|
|
190
|
+
const raw = fs.readFileSync(codexHooksPath(), "utf8");
|
|
191
|
+
const parsed = JSON.parse(raw);
|
|
192
|
+
if (parsed && typeof parsed === "object" && !Array.isArray(parsed)) {
|
|
193
|
+
return parsed;
|
|
194
|
+
}
|
|
195
|
+
}
|
|
196
|
+
catch {
|
|
197
|
+
// absent / unreadable / malformed — start from an empty shape
|
|
198
|
+
}
|
|
199
|
+
return { hooks: {} };
|
|
200
|
+
}
|
|
201
|
+
function writeHooksFile(config) {
|
|
202
|
+
const file = codexHooksPath();
|
|
203
|
+
fs.mkdirSync(path.dirname(file), { recursive: true });
|
|
204
|
+
fs.writeFileSync(file, `${JSON.stringify(config, null, 2)}\n`, "utf8");
|
|
205
|
+
}
|
|
206
|
+
/** Does this entry belong to us (owner marker in any command string)? */
|
|
207
|
+
function isOwnedEntry(entry) {
|
|
208
|
+
return (entry.hooks ?? []).some((h) => typeof h.command === "string" && h.command.includes(HOOKS_OWNER_MARKER));
|
|
209
|
+
}
|
|
210
|
+
/** Remove every entry we own from a hooks file (so a re-merge can't duplicate). */
|
|
211
|
+
function stripOwnedEntries(config) {
|
|
212
|
+
const hooks = config.hooks ?? {};
|
|
213
|
+
for (const event of Object.keys(hooks)) {
|
|
214
|
+
hooks[event] = (hooks[event] ?? []).filter((e) => !isOwnedEntry(e));
|
|
215
|
+
if (hooks[event].length === 0)
|
|
216
|
+
delete hooks[event];
|
|
217
|
+
}
|
|
218
|
+
config.hooks = hooks;
|
|
219
|
+
return config;
|
|
220
|
+
}
|
|
221
|
+
/**
|
|
222
|
+
* Load our hooks template, rewrite the ${LIBRARIAN_CODEX_ROOT} placeholder to the
|
|
223
|
+
* absolute scripts dir, and return the parsed shape. The template lives in the
|
|
224
|
+
* fetched integration dir alongside the scripts it points at.
|
|
225
|
+
*/
|
|
226
|
+
function loadTemplate(integrationDir, scriptsRoot) {
|
|
227
|
+
const raw = fs.readFileSync(path.join(integrationDir, "hooks", "codex-hooks.json"), "utf8");
|
|
228
|
+
// JSON-string-escape the path so a backslash (Windows) can't break the JSON.
|
|
229
|
+
const safe = JSON.stringify(scriptsRoot).slice(1, -1);
|
|
230
|
+
const rewritten = raw.split(ROOT_PLACEHOLDER).join(safe);
|
|
231
|
+
return JSON.parse(rewritten);
|
|
232
|
+
}
|
|
233
|
+
/** Merge template entries onto a (stripped) config, appending per event. */
|
|
234
|
+
function mergeTemplate(config, template) {
|
|
235
|
+
const hooks = (config.hooks ??= {});
|
|
236
|
+
for (const [event, entries] of Object.entries(template.hooks ?? {})) {
|
|
237
|
+
// Only `template.hooks` is iterated, so the template's top-level "//" doc key
|
|
238
|
+
// (a sibling of `hooks`, not inside it) is never carried over — excluded
|
|
239
|
+
// structurally, no filtering needed here.
|
|
240
|
+
(hooks[event] ??= []).push(...entries);
|
|
241
|
+
}
|
|
242
|
+
return config;
|
|
243
|
+
}
|
|
244
|
+
/** True iff `codex_hooks = true` is set under [features] in config.toml. */
|
|
245
|
+
function captureFeatureFlagEnabled(config) {
|
|
246
|
+
for (const line of config.split("\n")) {
|
|
247
|
+
// Strip an inline comment, then collapse whitespace, so `codex_hooks = true`
|
|
248
|
+
// (any spacing) matches but a `# codex_hooks = true` comment does not.
|
|
249
|
+
const stripped = (line.split("#", 1)[0] ?? "").trim().replace(/\s+/g, "");
|
|
250
|
+
if (stripped === "codex_hooks=true")
|
|
251
|
+
return true;
|
|
252
|
+
}
|
|
253
|
+
return false;
|
|
254
|
+
}
|
|
255
|
+
/**
|
|
256
|
+
* Wire (or re-wire) the per-turn capture hooks: fetch + copy the adapter scripts,
|
|
257
|
+
* then idempotently merge our entries into ~/.codex/hooks.json. Returns whether
|
|
258
|
+
* the user still needs to enable the `codex_hooks` feature flag (so the caller can
|
|
259
|
+
* surface the hint, mirroring mem0's print_feature_flag_hint).
|
|
260
|
+
*/
|
|
261
|
+
async function installCaptureHooks() {
|
|
262
|
+
const integrationDir = await captureFetcher(CODEX_CAPTURE_PINNED_REF);
|
|
263
|
+
const scriptsRoot = codexCaptureDir();
|
|
264
|
+
copyDir(integrationDir, scriptsRoot);
|
|
265
|
+
const template = loadTemplate(integrationDir, scriptsRoot);
|
|
266
|
+
const config = stripOwnedEntries(readHooksFile());
|
|
267
|
+
writeHooksFile(mergeTemplate(config, template));
|
|
268
|
+
return { featureFlagNeeded: !captureFeatureFlagEnabled(readConfig()) };
|
|
269
|
+
}
|
|
270
|
+
/** Remove our capture wiring: strip owned hook entries + delete the scripts dir. */
|
|
271
|
+
function uninstallCaptureHooks() {
|
|
272
|
+
if (fs.existsSync(codexHooksPath())) {
|
|
273
|
+
writeHooksFile(stripOwnedEntries(readHooksFile()));
|
|
274
|
+
}
|
|
275
|
+
fs.rmSync(codexCaptureDir(), { recursive: true, force: true });
|
|
276
|
+
}
|
|
109
277
|
export const codex = {
|
|
110
278
|
id: "codex",
|
|
111
279
|
displayName: "Codex",
|
|
@@ -117,32 +285,20 @@ export const codex = {
|
|
|
117
285
|
return { installed: true, version };
|
|
118
286
|
},
|
|
119
287
|
async install(cfg) {
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
if (result.code !== 0) {
|
|
134
|
-
throw new Error(`codex mcp add failed: ${oneLine(result.stderr || result.stdout)}`);
|
|
135
|
-
}
|
|
136
|
-
// Stamp our config-shape version alongside the CLI-written table so
|
|
137
|
-
// detect can report it (the CLI doesn't write the marker comment).
|
|
138
|
-
stampVersionIfMissing();
|
|
139
|
-
return;
|
|
288
|
+
// Two independently-idempotent halves: (1) the MCP server table (the tools +
|
|
289
|
+
// primer surface) and (2) the per-turn auto-capture hooks. Both run on every
|
|
290
|
+
// install so a second install repairs either half if only one is present.
|
|
291
|
+
await installMcpTable(cfg);
|
|
292
|
+
const { featureFlagNeeded } = await installCaptureHooks();
|
|
293
|
+
// Codex won't FIRE lifecycle hooks until `codex_hooks = true` is set under
|
|
294
|
+
// [features] in config.toml (mirrors mem0's print_feature_flag_hint). We can't
|
|
295
|
+
// edit a TOML table the user owns safely from here, so we SURFACE the one-time
|
|
296
|
+
// requirement on stderr. Fail-soft: this is a hint, never a hard failure.
|
|
297
|
+
if (featureFlagNeeded) {
|
|
298
|
+
process.stderr.write(`\nCodex auto-capture is wired, but Codex won't run the hooks until you enable the\n` +
|
|
299
|
+
`feature flag. Add this to ${codexConfigPath()}:\n\n` +
|
|
300
|
+
` [features]\n codex_hooks = true\n\nThen restart Codex.\n`);
|
|
140
301
|
}
|
|
141
|
-
// Fallback: no `codex` on PATH. We can still write the config file.
|
|
142
|
-
const config = readConfig();
|
|
143
|
-
if (hasTable(config))
|
|
144
|
-
return; // idempotent
|
|
145
|
-
writeConfig(withTable(config, cfg));
|
|
146
302
|
},
|
|
147
303
|
async uninstall() {
|
|
148
304
|
if (await which(CLI)) {
|
|
@@ -155,12 +311,47 @@ export const codex = {
|
|
|
155
311
|
if (hasTable(config) || parseConfigVersion(config) !== undefined) {
|
|
156
312
|
writeConfig(withoutTable(config));
|
|
157
313
|
}
|
|
314
|
+
// Remove the auto-capture wiring (owned hook entries + the scripts dir).
|
|
315
|
+
uninstallCaptureHooks();
|
|
158
316
|
},
|
|
159
317
|
async update(cfg) {
|
|
160
318
|
// Re-applying is idempotent; install short-circuits when present.
|
|
161
319
|
await this.install(cfg);
|
|
162
320
|
},
|
|
163
321
|
};
|
|
322
|
+
/**
|
|
323
|
+
* Install/repair just the MCP server table — the original Codex wiring. Prefers
|
|
324
|
+
* the native `codex` CLI; falls back to editing config.toml directly when the CLI
|
|
325
|
+
* isn't on PATH. Idempotent (a present table is a no-op).
|
|
326
|
+
*/
|
|
327
|
+
async function installMcpTable(cfg) {
|
|
328
|
+
if (await which(CLI)) {
|
|
329
|
+
// Idempotent: if our table is already present, do nothing.
|
|
330
|
+
if (hasTable(readConfig()))
|
|
331
|
+
return;
|
|
332
|
+
const result = await run(CLI, [
|
|
333
|
+
"mcp",
|
|
334
|
+
"add",
|
|
335
|
+
SERVER_ID,
|
|
336
|
+
"--url",
|
|
337
|
+
cfg.mcpUrl,
|
|
338
|
+
"--bearer-token-env-var",
|
|
339
|
+
TOKEN_ENV_VAR,
|
|
340
|
+
]);
|
|
341
|
+
if (result.code !== 0) {
|
|
342
|
+
throw new Error(`codex mcp add failed: ${oneLine(result.stderr || result.stdout)}`);
|
|
343
|
+
}
|
|
344
|
+
// Stamp our config-shape version alongside the CLI-written table so
|
|
345
|
+
// detect can report it (the CLI doesn't write the marker comment).
|
|
346
|
+
stampVersionIfMissing();
|
|
347
|
+
return;
|
|
348
|
+
}
|
|
349
|
+
// Fallback: no `codex` on PATH. We can still write the config file.
|
|
350
|
+
const config = readConfig();
|
|
351
|
+
if (hasTable(config))
|
|
352
|
+
return; // idempotent
|
|
353
|
+
writeConfig(withTable(config, cfg));
|
|
354
|
+
}
|
|
164
355
|
/** If the table exists but our version marker doesn't, add the marker. */
|
|
165
356
|
function stampVersionIfMissing() {
|
|
166
357
|
const config = readConfig();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"codex.js","sourceRoot":"","sources":["../../src/harnesses/codex.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"codex.js","sourceRoot":"","sources":["../../src/harnesses/codex.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,15 @@
|
|
|
1
1
|
import type { HarnessModule } from "./types.js";
|
|
2
|
+
export declare const OPENCODE_CAPTURE_PINNED_REF: string;
|
|
3
|
+
/**
|
|
4
|
+
* Fetches the OpenCode capture integration for a pinned ref and returns the
|
|
5
|
+
* absolute path to a directory whose contents ARE the integration (the equivalent
|
|
6
|
+
* of `integrations/opencode/`, i.e. holding `plugin/**`). The caller copies from
|
|
7
|
+
* there. Injectable so tests substitute a local fixture instead of the network.
|
|
8
|
+
*/
|
|
9
|
+
export type CaptureFetcher = (ref: string) => Promise<string>;
|
|
10
|
+
/** Override the capture-adapter fetcher (tests inject a local-fixture fetcher). */
|
|
11
|
+
export declare function setOpencodeCaptureFetcher(next: CaptureFetcher): void;
|
|
12
|
+
/** Restore the default (network) capture-adapter fetcher (tests). */
|
|
13
|
+
export declare function resetOpencodeCaptureFetcher(): void;
|
|
2
14
|
export declare const opencode: HarnessModule;
|
|
3
15
|
//# sourceMappingURL=opencode.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"opencode.d.ts","sourceRoot":"","sources":["../../src/harnesses/opencode.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"opencode.d.ts","sourceRoot":"","sources":["../../src/harnesses/opencode.ts"],"names":[],"mappings":"AA8BA,OAAO,KAAK,EAAiB,aAAa,EAAE,MAAM,YAAY,CAAC;AAqB/D,eAAO,MAAM,2BAA2B,QAAqB,CAAC;AA+E9D;;;;;GAKG;AACH,MAAM,MAAM,cAAc,GAAG,CAAC,GAAG,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;AAmC9D,mFAAmF;AACnF,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,cAAc,GAAG,IAAI,CAEpE;AAED,qEAAqE;AACrE,wBAAgB,2BAA2B,IAAI,IAAI,CAElD;AAiDD,eAAO,MAAM,QAAQ,EAAE,aAoFtB,CAAC"}
|
|
@@ -2,13 +2,18 @@
|
|
|
2
2
|
//
|
|
3
3
|
// OpenCode has no native install command, so we edit its global config
|
|
4
4
|
// (`~/.config/opencode/opencode.json`) idempotently, preserving every key
|
|
5
|
-
// the user already had. We add
|
|
5
|
+
// the user already had. We add three things:
|
|
6
6
|
//
|
|
7
7
|
// - `mcp.librarian`: a remote MCP block (type/url/enabled/headers). The
|
|
8
8
|
// Authorization header references the env var, not the token value —
|
|
9
9
|
// `Bearer {env:LIBRARIAN_AGENT_TOKEN}` — so the secret never lands in
|
|
10
10
|
// the file (spec §9).
|
|
11
11
|
// - the primer entry `<serverUrl>/primer.md` in the `instructions` array.
|
|
12
|
+
// - the per-turn auto-capture PLUGIN (spec 2026-06-16-harness-auto-capture,
|
|
13
|
+
// Phase 2A): the OpenCode integration's `plugin/` tree is fetched from the
|
|
14
|
+
// pinned release tarball into `~/.librarian/opencode-capture` (exactly like
|
|
15
|
+
// the Codex/Hermes adapters), and the entry's absolute path is registered in
|
|
16
|
+
// opencode.json's `plugin` array so OpenCode loads it at startup.
|
|
12
17
|
//
|
|
13
18
|
// We stamp a managed version marker (`mcp.librarian._librarianVersion`) so
|
|
14
19
|
// detect can report a version, plus the EXACT primer URL we added
|
|
@@ -17,8 +22,11 @@
|
|
|
17
22
|
// `mcp.librarian` present. uninstall removes only the keys/entries we added,
|
|
18
23
|
// leaving the rest of the JSON intact.
|
|
19
24
|
import fs from "node:fs";
|
|
25
|
+
import os from "node:os";
|
|
20
26
|
import path from "node:path";
|
|
21
|
-
import {
|
|
27
|
+
import { run } from "../exec.js";
|
|
28
|
+
import { opencodeCaptureDir, opencodeConfigPath } from "../paths.js";
|
|
29
|
+
import { cliVersion } from "../version.js";
|
|
22
30
|
const SERVER_ID = "librarian";
|
|
23
31
|
const TOKEN_ENV_VAR = "LIBRARIAN_AGENT_TOKEN";
|
|
24
32
|
const MANAGED_VERSION = "1.0.0";
|
|
@@ -26,6 +34,23 @@ const VERSION_KEY = "_librarianVersion";
|
|
|
26
34
|
// The exact primer instruction we added, stamped into the managed block so
|
|
27
35
|
// uninstall can target only it (and not a foreign `…/primer.md`).
|
|
28
36
|
const PRIMER_KEY = "_librarianPrimer";
|
|
37
|
+
// ── Auto-capture plugin wiring (spec 2026-06-16-harness-auto-capture, Phase 2A) ─
|
|
38
|
+
// The capture-adapter source (integrations/opencode/plugin/**) does NOT ship with
|
|
39
|
+
// the published installer (it ships only dist/), so — exactly like the
|
|
40
|
+
// Codex/Hermes adapters — we FETCH it from the pinned release tarball and copy it
|
|
41
|
+
// under ~/.librarian/opencode-capture; opencode.json's `plugin` array points at
|
|
42
|
+
// the entry there. SC1 (true e2e against a running OpenCode) is DEFERRED — there
|
|
43
|
+
// is no `opencode` CLI on the build machine to confirm a live turn.
|
|
44
|
+
// The pinned monorepo release we fetch the adapter from: the tag matching this
|
|
45
|
+
// CLI's own version. DERIVED (not hardcoded) so it can't drift — same rationale
|
|
46
|
+
// as the Codex/Hermes adapters' pinned refs.
|
|
47
|
+
export const OPENCODE_CAPTURE_PINNED_REF = `v${cliVersion()}`;
|
|
48
|
+
/** The capture plugin entry, relative to the fetched integration / install dir. */
|
|
49
|
+
const PLUGIN_ENTRY_REL = path.join("plugin", "librarian-capture.ts");
|
|
50
|
+
/** Absolute path of the installed capture-plugin entry (what `plugin[]` points at). */
|
|
51
|
+
function pluginEntryPath() {
|
|
52
|
+
return path.join(opencodeCaptureDir(), PLUGIN_ENTRY_REL);
|
|
53
|
+
}
|
|
29
54
|
/** The primer instruction entry derived from the server URL. */
|
|
30
55
|
function primerEntry(serverUrl) {
|
|
31
56
|
return `${serverUrl.replace(/\/+$/, "")}/primer.md`;
|
|
@@ -74,6 +99,91 @@ function getMcpEntry(config) {
|
|
|
74
99
|
}
|
|
75
100
|
return undefined;
|
|
76
101
|
}
|
|
102
|
+
/** The default fetcher: codeload tarball → `tar` extract → integration dir. */
|
|
103
|
+
const defaultCaptureFetcher = async (ref) => {
|
|
104
|
+
const url = `https://codeload.github.com/JimJafar/the-librarian/tar.gz/refs/tags/${ref}`;
|
|
105
|
+
const work = fs.mkdtempSync(path.join(os.tmpdir(), "librarian-opencode-fetch-"));
|
|
106
|
+
const tarball = path.join(work, "src.tar.gz");
|
|
107
|
+
const res = await fetch(url, { redirect: "error" });
|
|
108
|
+
if (!res.ok) {
|
|
109
|
+
throw new Error(`Failed to fetch OpenCode capture adapter (${ref}): HTTP ${res.status}`);
|
|
110
|
+
}
|
|
111
|
+
const buf = Buffer.from(await res.arrayBuffer());
|
|
112
|
+
fs.writeFileSync(tarball, buf);
|
|
113
|
+
// codeload nests the integration at `the-librarian-<ref>/integrations/opencode/**`
|
|
114
|
+
// — three leading path components. Strip them so `plugin/` lands at the
|
|
115
|
+
// extraction root, which is what the caller copies into ~/.librarian/.
|
|
116
|
+
const out = path.join(work, "adapter");
|
|
117
|
+
fs.mkdirSync(out, { recursive: true });
|
|
118
|
+
const extract = await run("tar", [
|
|
119
|
+
"-xzf",
|
|
120
|
+
tarball,
|
|
121
|
+
"-C",
|
|
122
|
+
out,
|
|
123
|
+
"--strip-components=3",
|
|
124
|
+
"--wildcards",
|
|
125
|
+
"*/integrations/opencode/*",
|
|
126
|
+
]);
|
|
127
|
+
if (extract.code !== 0) {
|
|
128
|
+
throw new Error(`Failed to extract OpenCode capture adapter: ${(extract.stderr || "").trim()}`);
|
|
129
|
+
}
|
|
130
|
+
return out;
|
|
131
|
+
};
|
|
132
|
+
let captureFetcher = defaultCaptureFetcher;
|
|
133
|
+
/** Override the capture-adapter fetcher (tests inject a local-fixture fetcher). */
|
|
134
|
+
export function setOpencodeCaptureFetcher(next) {
|
|
135
|
+
captureFetcher = next;
|
|
136
|
+
}
|
|
137
|
+
/** Restore the default (network) capture-adapter fetcher (tests). */
|
|
138
|
+
export function resetOpencodeCaptureFetcher() {
|
|
139
|
+
captureFetcher = defaultCaptureFetcher;
|
|
140
|
+
}
|
|
141
|
+
/** Recursively copy a directory tree, overwriting any prior copy (idempotent). */
|
|
142
|
+
function copyDir(from, to) {
|
|
143
|
+
fs.rmSync(to, { recursive: true, force: true });
|
|
144
|
+
fs.mkdirSync(path.dirname(to), { recursive: true });
|
|
145
|
+
fs.cpSync(from, to, { recursive: true });
|
|
146
|
+
}
|
|
147
|
+
/**
|
|
148
|
+
* Fetch + copy the capture plugin under ~/.librarian/opencode-capture, then
|
|
149
|
+
* register the entry's absolute path in opencode.json's `plugin` array
|
|
150
|
+
* (idempotent — never a duplicate, preserving any foreign plugins). Mutates +
|
|
151
|
+
* returns `config` so the caller writes it once alongside the mcp/primer edits.
|
|
152
|
+
*/
|
|
153
|
+
async function installCapturePlugin(config) {
|
|
154
|
+
const integrationDir = await captureFetcher(OPENCODE_CAPTURE_PINNED_REF);
|
|
155
|
+
copyDir(integrationDir, opencodeCaptureDir());
|
|
156
|
+
const entry = pluginEntryPath();
|
|
157
|
+
const existing = Array.isArray(config.plugin)
|
|
158
|
+
? config.plugin.filter((x) => typeof x === "string")
|
|
159
|
+
: [];
|
|
160
|
+
if (!existing.includes(entry))
|
|
161
|
+
existing.push(entry);
|
|
162
|
+
config.plugin = existing;
|
|
163
|
+
return config;
|
|
164
|
+
}
|
|
165
|
+
/**
|
|
166
|
+
* Remove our capture wiring: strip ONLY our `plugin` entry (preserving foreigns,
|
|
167
|
+
* dropping an emptied array) and delete the scripts dir. Mutates `config`; returns
|
|
168
|
+
* whether anything changed so the caller can decide to write.
|
|
169
|
+
*/
|
|
170
|
+
function uninstallCapturePlugin(config) {
|
|
171
|
+
let changed = false;
|
|
172
|
+
const ours = pluginEntryPath();
|
|
173
|
+
if (Array.isArray(config.plugin)) {
|
|
174
|
+
const before = config.plugin;
|
|
175
|
+
const kept = before.filter((x) => x !== ours);
|
|
176
|
+
if (kept.length !== before.length) {
|
|
177
|
+
changed = true;
|
|
178
|
+
if (kept.length === 0)
|
|
179
|
+
delete config.plugin;
|
|
180
|
+
else
|
|
181
|
+
config.plugin = kept;
|
|
182
|
+
}
|
|
183
|
+
}
|
|
184
|
+
fs.rmSync(opencodeCaptureDir(), { recursive: true, force: true });
|
|
185
|
+
return changed;
|
|
186
|
+
}
|
|
77
187
|
export const opencode = {
|
|
78
188
|
id: "opencode",
|
|
79
189
|
displayName: "OpenCode",
|
|
@@ -100,12 +210,19 @@ export const opencode = {
|
|
|
100
210
|
if (!existing.includes(entry))
|
|
101
211
|
existing.push(entry);
|
|
102
212
|
config.instructions = existing;
|
|
213
|
+
// plugin — fetch + copy the per-turn capture plugin and register its entry in
|
|
214
|
+
// the `plugin` array (idempotent). Mutates `config`; written once below.
|
|
215
|
+
await installCapturePlugin(config);
|
|
103
216
|
writeConfig(config);
|
|
104
217
|
},
|
|
105
218
|
async uninstall() {
|
|
106
219
|
const config = readConfig();
|
|
107
|
-
if (!config)
|
|
108
|
-
|
|
220
|
+
if (!config) {
|
|
221
|
+
// No config to edit — but still remove the fetched capture scripts dir so an
|
|
222
|
+
// uninstall always cleans ~/.librarian/opencode-capture (mirrors Codex).
|
|
223
|
+
fs.rmSync(opencodeCaptureDir(), { recursive: true, force: true });
|
|
224
|
+
return;
|
|
225
|
+
}
|
|
109
226
|
let changed = false;
|
|
110
227
|
// Read the EXACT primer entry we stamped before removing our block, so we
|
|
111
228
|
// can target only our own instruction and never a foreign `…/primer.md`.
|
|
@@ -131,6 +248,10 @@ export const opencode = {
|
|
|
131
248
|
config.instructions = kept;
|
|
132
249
|
}
|
|
133
250
|
}
|
|
251
|
+
// Remove our capture-plugin entry + delete the fetched scripts dir (always —
|
|
252
|
+
// the dir removal is independent of whether the config carried our entry).
|
|
253
|
+
if (uninstallCapturePlugin(config))
|
|
254
|
+
changed = true;
|
|
134
255
|
if (changed)
|
|
135
256
|
writeConfig(config);
|
|
136
257
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"opencode.js","sourceRoot":"","sources":["../../src/harnesses/opencode.ts"],"names":[],"mappings":"AAAA,oBAAoB;AACpB,EAAE;AACF,uEAAuE;AACvE,0EAA0E;AAC1E,
|
|
1
|
+
{"version":3,"file":"opencode.js","sourceRoot":"","sources":["../../src/harnesses/opencode.ts"],"names":[],"mappings":"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"}
|
package/dist/paths.d.ts
CHANGED
|
@@ -21,8 +21,24 @@ export declare function bashRcPath(home?: string): string;
|
|
|
21
21
|
export declare function zshRcPath(home?: string): string;
|
|
22
22
|
/** `~/.codex/config.toml` — Codex's MCP-server config. */
|
|
23
23
|
export declare function codexConfigPath(home?: string): string;
|
|
24
|
+
/** `~/.codex/hooks.json` — Codex's lifecycle-hooks config (merged into, not owned). */
|
|
25
|
+
export declare function codexHooksPath(home?: string): string;
|
|
26
|
+
/**
|
|
27
|
+
* `~/.librarian/codex-capture` — where the Codex auto-capture adapter scripts are
|
|
28
|
+
* installed (fetched from the pinned release tarball, like the Hermes adapter).
|
|
29
|
+
* The merged `~/.codex/hooks.json` entries point their `${LIBRARIAN_CODEX_ROOT}`
|
|
30
|
+
* here. Kept under `~/.librarian/` so an uninstall can remove it cleanly.
|
|
31
|
+
*/
|
|
32
|
+
export declare function codexCaptureDir(home?: string): string;
|
|
24
33
|
/** `~/.config/opencode/opencode.json` — OpenCode's global config. */
|
|
25
34
|
export declare function opencodeConfigPath(home?: string): string;
|
|
35
|
+
/**
|
|
36
|
+
* `~/.librarian/opencode-capture` — where the OpenCode auto-capture plugin is
|
|
37
|
+
* installed (fetched from the pinned release tarball, like the Codex/Hermes
|
|
38
|
+
* adapters). opencode.json's `plugin` array points at the entry under here. Kept
|
|
39
|
+
* under `~/.librarian/` so an uninstall can remove it cleanly.
|
|
40
|
+
*/
|
|
41
|
+
export declare function opencodeCaptureDir(home?: string): string;
|
|
26
42
|
/** `~/.hermes` — Hermes's home (plugins + config live under here). */
|
|
27
43
|
export declare function hermesHomeDir(home?: string): string;
|
|
28
44
|
/** `~/.hermes/plugins/librarian` — where the Hermes adapter is installed. */
|
package/dist/paths.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"paths.d.ts","sourceRoot":"","sources":["../src/paths.ts"],"names":[],"mappings":"AAkBA,oEAAoE;AACpE,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAE9D;AAED,iEAAiE;AACjE,wBAAgB,iBAAiB,IAAI,IAAI,CAExC;AAED;;;GAGG;AACH,wBAAgB,OAAO,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAE7C;AAED,gEAAgE;AAChE,wBAAgB,YAAY,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAElD;AAED,8EAA8E;AAC9E,wBAAgB,WAAW,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAEjD;AAED,uEAAuE;AACvE,wBAAgB,aAAa,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAEnD;AAED,uEAAuE;AACvE,wBAAgB,YAAY,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAElD;AAED,mBAAmB;AACnB,wBAAgB,UAAU,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAEhD;AAED,kBAAkB;AAClB,wBAAgB,SAAS,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAE/C;AAED,0DAA0D;AAC1D,wBAAgB,eAAe,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAErD;AAED,qEAAqE;AACrE,wBAAgB,kBAAkB,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAExD;AAED,sEAAsE;AACtE,wBAAgB,aAAa,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAEnD;AAED,6EAA6E;AAC7E,wBAAgB,eAAe,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAErD;AAED,0EAA0E;AAC1E,wBAAgB,gBAAgB,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAEtD"}
|
|
1
|
+
{"version":3,"file":"paths.d.ts","sourceRoot":"","sources":["../src/paths.ts"],"names":[],"mappings":"AAkBA,oEAAoE;AACpE,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAE9D;AAED,iEAAiE;AACjE,wBAAgB,iBAAiB,IAAI,IAAI,CAExC;AAED;;;GAGG;AACH,wBAAgB,OAAO,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAE7C;AAED,gEAAgE;AAChE,wBAAgB,YAAY,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAElD;AAED,8EAA8E;AAC9E,wBAAgB,WAAW,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAEjD;AAED,uEAAuE;AACvE,wBAAgB,aAAa,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAEnD;AAED,uEAAuE;AACvE,wBAAgB,YAAY,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAElD;AAED,mBAAmB;AACnB,wBAAgB,UAAU,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAEhD;AAED,kBAAkB;AAClB,wBAAgB,SAAS,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAE/C;AAED,0DAA0D;AAC1D,wBAAgB,eAAe,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAErD;AAED,uFAAuF;AACvF,wBAAgB,cAAc,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAEpD;AAED;;;;;GAKG;AACH,wBAAgB,eAAe,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAErD;AAED,qEAAqE;AACrE,wBAAgB,kBAAkB,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAExD;AAED;;;;;GAKG;AACH,wBAAgB,kBAAkB,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAExD;AAED,sEAAsE;AACtE,wBAAgB,aAAa,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAEnD;AAED,6EAA6E;AAC7E,wBAAgB,eAAe,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAErD;AAED,0EAA0E;AAC1E,wBAAgB,gBAAgB,CAAC,IAAI,CAAC,EAAE,MAAM,GAAG,MAAM,CAEtD"}
|
package/dist/paths.js
CHANGED
|
@@ -56,10 +56,32 @@ export function zshRcPath(home) {
|
|
|
56
56
|
export function codexConfigPath(home) {
|
|
57
57
|
return path.join(homeDir(home), ".codex", "config.toml");
|
|
58
58
|
}
|
|
59
|
+
/** `~/.codex/hooks.json` — Codex's lifecycle-hooks config (merged into, not owned). */
|
|
60
|
+
export function codexHooksPath(home) {
|
|
61
|
+
return path.join(homeDir(home), ".codex", "hooks.json");
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* `~/.librarian/codex-capture` — where the Codex auto-capture adapter scripts are
|
|
65
|
+
* installed (fetched from the pinned release tarball, like the Hermes adapter).
|
|
66
|
+
* The merged `~/.codex/hooks.json` entries point their `${LIBRARIAN_CODEX_ROOT}`
|
|
67
|
+
* here. Kept under `~/.librarian/` so an uninstall can remove it cleanly.
|
|
68
|
+
*/
|
|
69
|
+
export function codexCaptureDir(home) {
|
|
70
|
+
return path.join(librarianDir(home), "codex-capture");
|
|
71
|
+
}
|
|
59
72
|
/** `~/.config/opencode/opencode.json` — OpenCode's global config. */
|
|
60
73
|
export function opencodeConfigPath(home) {
|
|
61
74
|
return path.join(homeDir(home), ".config", "opencode", "opencode.json");
|
|
62
75
|
}
|
|
76
|
+
/**
|
|
77
|
+
* `~/.librarian/opencode-capture` — where the OpenCode auto-capture plugin is
|
|
78
|
+
* installed (fetched from the pinned release tarball, like the Codex/Hermes
|
|
79
|
+
* adapters). opencode.json's `plugin` array points at the entry under here. Kept
|
|
80
|
+
* under `~/.librarian/` so an uninstall can remove it cleanly.
|
|
81
|
+
*/
|
|
82
|
+
export function opencodeCaptureDir(home) {
|
|
83
|
+
return path.join(librarianDir(home), "opencode-capture");
|
|
84
|
+
}
|
|
63
85
|
/** `~/.hermes` — Hermes's home (plugins + config live under here). */
|
|
64
86
|
export function hermesHomeDir(home) {
|
|
65
87
|
return path.join(homeDir(home), ".hermes");
|
package/dist/paths.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"paths.js","sourceRoot":"","sources":["../src/paths.ts"],"names":[],"mappings":"AAAA,oDAAoD;AACpD,EAAE;AACF,oEAAoE;AACpE,kEAAkE;AAClE,qEAAqE;AACrE,mEAAmE;AACnE,yCAAyC;AAEzC,OAAO,EAAE,MAAM,SAAS,CAAC;AACzB,OAAO,IAAI,MAAM,WAAW,CAAC;AAE7B,sEAAsE;AACtE,uEAAuE;AACvE,2EAA2E;AAC3E,yEAAyE;AACzE,gCAAgC;AAChC,IAAI,YAAgC,CAAC;AAErC,oEAAoE;AACpE,MAAM,UAAU,eAAe,CAAC,IAAwB;IACtD,YAAY,GAAG,IAAI,CAAC;AACtB,CAAC;AAED,iEAAiE;AACjE,MAAM,UAAU,iBAAiB;IAC/B,YAAY,GAAG,SAAS,CAAC;AAC3B,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,OAAO,CAAC,IAAa;IACnC,OAAO,IAAI,IAAI,YAAY,IAAI,EAAE,CAAC,OAAO,EAAE,CAAC;AAC9C,CAAC;AAED,gEAAgE;AAChE,MAAM,UAAU,YAAY,CAAC,IAAa;IACxC,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,YAAY,CAAC,CAAC;AAChD,CAAC;AAED,8EAA8E;AAC9E,MAAM,UAAU,WAAW,CAAC,IAAa;IACvC,OAAO,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,KAAK,CAAC,CAAC;AAC9C,CAAC;AAED,uEAAuE;AACvE,MAAM,UAAU,aAAa,CAAC,IAAa;IACzC,OAAO,IAAI,CAAC,IAAI,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,YAAY,CAAC,CAAC;AACrD,CAAC;AAED,uEAAuE;AACvE,MAAM,UAAU,YAAY,CAAC,IAAa;IACxC,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,gBAAgB,CAAC,CAAC;AACjF,CAAC;AAED,mBAAmB;AACnB,MAAM,UAAU,UAAU,CAAC,IAAa;IACtC,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,SAAS,CAAC,CAAC;AAC7C,CAAC;AAED,kBAAkB;AAClB,MAAM,UAAU,SAAS,CAAC,IAAa;IACrC,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,QAAQ,CAAC,CAAC;AAC5C,CAAC;AAED,0DAA0D;AAC1D,MAAM,UAAU,eAAe,CAAC,IAAa;IAC3C,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,QAAQ,EAAE,aAAa,CAAC,CAAC;AAC3D,CAAC;AAED,qEAAqE;AACrE,MAAM,UAAU,kBAAkB,CAAC,IAAa;IAC9C,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,UAAU,EAAE,eAAe,CAAC,CAAC;AAC1E,CAAC;AAED,sEAAsE;AACtE,MAAM,UAAU,aAAa,CAAC,IAAa;IACzC,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,SAAS,CAAC,CAAC;AAC7C,CAAC;AAED,6EAA6E;AAC7E,MAAM,UAAU,eAAe,CAAC,IAAa;IAC3C,OAAO,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,SAAS,EAAE,WAAW,CAAC,CAAC;AAChE,CAAC;AAED,0EAA0E;AAC1E,MAAM,UAAU,gBAAgB,CAAC,IAAa;IAC5C,OAAO,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,EAAE,aAAa,CAAC,CAAC;AACvD,CAAC"}
|
|
1
|
+
{"version":3,"file":"paths.js","sourceRoot":"","sources":["../src/paths.ts"],"names":[],"mappings":"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"}
|