@oharness/engine 0.11.0 → 0.12.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/dist/plugins.d.ts CHANGED
@@ -18,13 +18,41 @@ export interface PluginManifest {
18
18
  hooks?: HookConfig;
19
19
  mcpServers?: Record<string, McpServerConfig>;
20
20
  subagents?: SubagentDefinition[];
21
+ /**
22
+ * The publisher's site, from `homepage` or `author.url`. Only ever used to
23
+ * find the plugin's mark, so a row in the menu carries the vendor's logo
24
+ * rather than the same generic glyph as every other plugin.
25
+ */
26
+ siteUrl?: string;
27
+ /** A display name over the id, where the manifest has one (Codex's do). */
28
+ title?: string;
29
+ /** The plugin's own mark, a file inside its directory. Codex ships one. */
30
+ logo?: string;
21
31
  }
22
32
  export interface PluginDefinition extends PluginManifest {
23
33
  directory: string;
24
- source: "user" | "project" | "config" | "claude";
34
+ /** `claude` and `codex` are those tools' install caches, read where they lie. */
35
+ source: "user" | "project" | "config" | "claude" | "codex";
25
36
  skillDir: string;
26
37
  agentDir: string;
38
+ /** Set when the plugin marketplace put this directory here. See `plugin-market.ts`. */
39
+ market?: MarketReceipt;
40
+ /**
41
+ * Read from a Claude Code manifest, wherever it lies. Its agent files name
42
+ * tools and models in Claude Code's vocabulary; see `parseAgentMarkdown`.
43
+ */
44
+ claudeFormat?: true;
45
+ }
46
+ /** What the marketplace wrote beside a plugin it installed. */
47
+ export interface MarketReceipt {
48
+ id: string;
49
+ repo: string;
50
+ ref: string;
51
+ path?: string;
52
+ installedAt: string;
27
53
  }
54
+ /** The receipt's file name, inside the plugin's own directory. */
55
+ export declare const MARKET_RECEIPT = ".oharness-market.json";
28
56
  export interface PluginConfig {
29
57
  /** Extra directories containing plugin folders, relative to the project. */
30
58
  dirs?: string[];
@@ -38,10 +66,14 @@ export interface PluginConfig {
38
66
  * is an empty list beside a directory full of them. Set false to ignore it.
39
67
  */
40
68
  claudeCode?: boolean;
69
+ /** Read plugins Codex has installed and switched on, on the same terms. */
70
+ codex?: boolean;
41
71
  }
42
72
  /** Where Claude Code keeps what it has installed; overridable for tests. */
43
73
  export declare function claudePluginCache(): string;
44
- /** Discover plugins in a stable override order: Claude → user → project → config. */
74
+ /** Where Codex keeps what it has installed; overridable for tests. */
75
+ export declare function codexPluginCache(): string;
76
+ /** Discover plugins in a stable override order: Claude → Codex → user → project → config. */
45
77
  export declare function discoverPlugins(cwd: string, config?: PluginConfig): Promise<PluginDefinition[]>;
46
78
  /** Convert installed plugin declarations into ordinary harness configuration. */
47
79
  export declare function pluginContributions(plugins: PluginDefinition[]): {
@@ -51,5 +83,20 @@ export declare function pluginContributions(plugins: PluginDefinition[]): {
51
83
  mcpServers: Record<string, McpServerConfig>;
52
84
  subagents: SubagentDefinition[];
53
85
  };
86
+ /** Why a Claude Code server entry could not be translated. */
87
+ export type UntranslatableReason = "malformed" | "sse" | "user-config" | "placeholder";
88
+ /**
89
+ * One Claude Code server entry, translated — or the reason it cannot be.
90
+ *
91
+ * The same dialect is written in a plugin's `.mcp.json`, in a project's, and
92
+ * in `~/.claude.json`, so this is shared by the plugin reader and the
93
+ * importer. `directory` is what `${CLAUDE_PLUGIN_ROOT}` means, and only a
94
+ * plugin has one; anywhere else that placeholder is left over and reported.
95
+ */
96
+ export declare function claudeServer(entry: unknown, directory?: string): {
97
+ config: McpServerConfig;
98
+ } | {
99
+ reason: UntranslatableReason;
100
+ };
54
101
  /** Lightweight validation keeps plugin manifests dependency-free and safe to ignore when malformed. */
55
102
  export declare function parsePluginManifest(value: unknown): PluginManifest | undefined;
package/dist/plugins.js CHANGED
@@ -1,8 +1,10 @@
1
- import { homedir } from "node:os";
2
- import { userPath } from "./paths.js";
1
+ import { claudeHome, codexHome, userPath } from "./paths.js";
3
2
  import { readFile, readdir, stat } from "node:fs/promises";
4
3
  import path from "node:path";
5
4
  import { parseJson } from "./util/json.js";
5
+ import { parseToml } from "./util/toml.js";
6
+ /** The receipt's file name, inside the plugin's own directory. */
7
+ export const MARKET_RECEIPT = ".oharness-market.json";
6
8
  const MANIFEST = "oharness.plugin.json";
7
9
  /**
8
10
  * The other manifest this reads.
@@ -15,6 +17,8 @@ const MANIFEST = "oharness.plugin.json";
15
17
  * where it is and is read where it lies.
16
18
  */
17
19
  const CLAUDE_MANIFEST = path.join(".claude-plugin", "plugin.json");
20
+ /** Codex's, which is Claude Code's under another directory name. */
21
+ const CODEX_MANIFEST = path.join(".codex-plugin", "plugin.json");
18
22
  /** Its two sidecars, which hold what our manifest keeps inline. */
19
23
  const CLAUDE_MCP = ".mcp.json";
20
24
  const CLAUDE_HOOKS = path.join("hooks", "hooks.json");
@@ -22,9 +26,13 @@ const CLAUDE_HOOKS = path.join("hooks", "hooks.json");
22
26
  const CLAUDE_CACHE_DEPTH = 3;
23
27
  /** Where Claude Code keeps what it has installed; overridable for tests. */
24
28
  export function claudePluginCache() {
25
- return process.env["OHARNESS_CLAUDE_PLUGINS"] ?? path.join(homedir(), ".claude", "plugins", "cache");
29
+ return process.env["OHARNESS_CLAUDE_PLUGINS"] ?? path.join(claudeHome(), "plugins", "cache");
26
30
  }
27
- /** Discover plugins in a stable override order: Claude → user → project → config. */
31
+ /** Where Codex keeps what it has installed; overridable for tests. */
32
+ export function codexPluginCache() {
33
+ return process.env["OHARNESS_CODEX_PLUGINS"] ?? path.join(codexHome(), "plugins", "cache");
34
+ }
35
+ /** Discover plugins in a stable override order: Claude → Codex → user → project → config. */
28
36
  export async function discoverPlugins(cwd, config = {}) {
29
37
  const roots = [
30
38
  // First, so anything of this project's own overrides it by name.
@@ -35,6 +43,17 @@ export async function discoverPlugins(cwd, config = {}) {
35
43
  directory: claudePluginCache(),
36
44
  source: "claude",
37
45
  depth: CLAUDE_CACHE_DEPTH,
46
+ keep: await claudeInstalled(cwd),
47
+ },
48
+ ]),
49
+ ...(config.codex === false
50
+ ? []
51
+ : [
52
+ {
53
+ directory: codexPluginCache(),
54
+ source: "codex",
55
+ depth: CLAUDE_CACHE_DEPTH,
56
+ keep: await codexEnabled(),
38
57
  },
39
58
  ]),
40
59
  { directory: userPath("plugins"), source: "user" },
@@ -48,6 +67,9 @@ export async function discoverPlugins(cwd, config = {}) {
48
67
  const byName = new Map();
49
68
  for (const root of roots) {
50
69
  for (const plugin of await scanPluginRoot(root.directory, root.source, root.depth ?? 1)) {
70
+ const marketplace = path.relative(root.directory, plugin.directory).split(path.sep)[0] ?? "";
71
+ if (root.keep && !root.keep(plugin, marketplace))
72
+ continue;
51
73
  // Within one root the same plugin can be cached at several versions;
52
74
  // the newest is the one that was installed, the rest are history.
53
75
  const seen = byName.get(plugin.name);
@@ -80,7 +102,7 @@ export function pluginContributions(plugins) {
80
102
  // this harness executing things nobody pointed at it. They are still
81
103
  // reported, so a plugin's servers can be added the ordinary way, with the
82
104
  // confirmation and the login that path already has.
83
- if (plugin.source === "claude")
105
+ if (plugin.source === "claude" || plugin.source === "codex")
84
106
  continue;
85
107
  Object.assign(out.mcpServers, plugin.mcpServers ?? {});
86
108
  for (const [event, hooks] of Object.entries(plugin.hooks ?? {})) {
@@ -134,22 +156,232 @@ async function readPlugin(directory, source) {
134
156
  agentDir: path.join(directory, "agents"),
135
157
  };
136
158
  }
137
- const claude = await readManifest(path.join(directory, CLAUDE_MANIFEST));
159
+ const claudeRaw = await readJsonFile(path.join(directory, CLAUDE_MANIFEST));
160
+ const codexRaw = claudeRaw === undefined ? await readJsonFile(path.join(directory, CODEX_MANIFEST)) : undefined;
161
+ const raw = claudeRaw ?? codexRaw;
162
+ const claude = raw === undefined ? undefined : parsePluginManifest(raw);
138
163
  if (!claude)
139
164
  return undefined;
140
- // The same declarations, kept in sidecar files rather than inline.
141
- const mcp = await readJsonFile(path.join(directory, CLAUDE_MCP));
165
+ if (codexRaw)
166
+ return readCodexPlugin(directory, source, claude, codexRaw);
167
+ // The same declarations, kept in sidecar files rather than inline — or, in
168
+ // the manifest, as the path of one. Both spellings are in the wild.
169
+ const declared = typeof raw.mcpServers === "string"
170
+ ? await readJsonFile(path.resolve(directory, raw.mcpServers))
171
+ : raw.mcpServers;
172
+ const servers = {
173
+ ...claudeServers(await readJsonFile(path.join(directory, CLAUDE_MCP)), directory),
174
+ ...claudeServers(declared, directory),
175
+ };
142
176
  const hooks = await readJsonFile(path.join(directory, CLAUDE_HOOKS));
177
+ const market = await readReceipt(directory);
143
178
  return {
144
179
  ...claude,
145
- ...(isRecord(mcp?.mcpServers) ? { mcpServers: mcp.mcpServers } : {}),
146
- ...(isRecord(hooks?.hooks) ? { hooks: hooks.hooks } : {}),
180
+ ...(Object.keys(servers).length ? { mcpServers: servers } : {}),
181
+ // Not for a marketplace install. Claude Code's hooks are scripts written
182
+ // against Claude Code's events and environment; what someone picked from
183
+ // our list was the plugin's skills, agents and servers, and a script that
184
+ // runs on every tool call is not something a row in a menu should start.
185
+ ...(isRecord(hooks?.hooks) && !market ? { hooks: hooks.hooks } : {}),
186
+ ...(market ? { market } : {}),
187
+ claudeFormat: true,
147
188
  directory,
148
189
  source,
149
190
  skillDir: path.join(directory, "skills"),
150
191
  agentDir: path.join(directory, "agents"),
151
192
  };
152
193
  }
194
+ /**
195
+ * A Claude Code plugin's server declarations, in this harness's shape.
196
+ *
197
+ * The file comes in two shapes — wrapped in `mcpServers` and bare — and the
198
+ * entries in a looser dialect than ours: a missing `type` means a command,
199
+ * `streamable-http` means http, `${CLAUDE_PLUGIN_ROOT}` is the plugin's own
200
+ * directory, and `${NAME}` is an environment variable. Each is translated
201
+ * rather than adopted as written, because an entry this harness misreads does
202
+ * not fail loudly; it connects to nothing.
203
+ *
204
+ * What cannot be translated is left out: the old SSE transport, which this
205
+ * harness does not speak; `${user_config.*}`, which is answered in a Claude
206
+ * Code dialog that does not exist here; and any other placeholder it has no
207
+ * value for.
208
+ */
209
+ function claudeServers(value, directory) {
210
+ if (!isRecord(value))
211
+ return {};
212
+ const entries = isRecord(value.mcpServers) ? value.mcpServers : value;
213
+ const out = {};
214
+ for (const [name, entry] of Object.entries(entries)) {
215
+ const translated = claudeServer(entry, directory);
216
+ if ("config" in translated)
217
+ out[name] = translated.config;
218
+ }
219
+ return out;
220
+ }
221
+ /**
222
+ * One Claude Code server entry, translated — or the reason it cannot be.
223
+ *
224
+ * The same dialect is written in a plugin's `.mcp.json`, in a project's, and
225
+ * in `~/.claude.json`, so this is shared by the plugin reader and the
226
+ * importer. `directory` is what `${CLAUDE_PLUGIN_ROOT}` means, and only a
227
+ * plugin has one; anywhere else that placeholder is left over and reported.
228
+ */
229
+ export function claudeServer(entry, directory) {
230
+ if (!isRecord(entry))
231
+ return { reason: "malformed" };
232
+ if (JSON.stringify(entry).includes("${user_config."))
233
+ return { reason: "user-config" };
234
+ const fill = (text) => {
235
+ const rooted = directory === undefined ? text : text.replaceAll("${CLAUDE_PLUGIN_ROOT}", directory);
236
+ // Ours spells it `${env:NAME}`, which is also what keeps the value out
237
+ // of anything written back to disk. See `mcp/secrets.ts`.
238
+ return rooted.replace(/\$\{([A-Za-z_][A-Za-z0-9_]*)\}/g, "${env:$1}");
239
+ };
240
+ const fillAll = (record) => isRecord(record)
241
+ ? Object.fromEntries(Object.entries(record).filter(([, v]) => typeof v === "string").map(([k, v]) => [k, fill(v)]))
242
+ : undefined;
243
+ let config;
244
+ const type = entry.type;
245
+ if (typeof entry.command === "string" && (type === undefined || type === "stdio")) {
246
+ const args = Array.isArray(entry.args) ? entry.args.filter((a) => typeof a === "string").map(fill) : undefined;
247
+ const env = fillAll(entry.env);
248
+ config = {
249
+ type: "stdio",
250
+ command: fill(entry.command),
251
+ ...(args ? { args } : {}),
252
+ ...(env ? { env } : {}),
253
+ ...(typeof entry.cwd === "string" ? { cwd: fill(entry.cwd) } : {}),
254
+ };
255
+ }
256
+ else if (typeof entry.url === "string" && (type === "http" || type === "streamable-http")) {
257
+ const headers = fillAll(entry.headers);
258
+ config = { type: "http", url: fill(entry.url), ...(headers ? { headers } : {}) };
259
+ }
260
+ else if (typeof entry.url === "string" && type === "sse") {
261
+ return { reason: "sse" };
262
+ }
263
+ else {
264
+ return { reason: "malformed" };
265
+ }
266
+ // A placeholder left over is one this harness has no answer for — a
267
+ // shell default like `${NAME:-x}`, or a variable only Claude Code sets —
268
+ // and would reach the server as literal text.
269
+ if (/\$\{(?!env:)/.test(JSON.stringify(config)))
270
+ return { reason: "placeholder" };
271
+ return { config };
272
+ }
273
+ /**
274
+ * A Codex plugin: Claude Code's layout under `.codex-plugin/`, with paths in
275
+ * the manifest instead of fixed names, and an `interface` block that carries
276
+ * what a store page would — a display name, a site, a logo. `.app.json` names
277
+ * ChatGPT apps, which exist only inside OpenAI's products, and is not read.
278
+ */
279
+ async function readCodexPlugin(directory, source, manifest, raw) {
280
+ const inside = (value, fallback) => {
281
+ const resolved = typeof value === "string" ? path.resolve(directory, value) : path.join(directory, fallback);
282
+ // A manifest naming a path outside its own directory is not followed.
283
+ return resolved === directory || resolved.startsWith(directory + path.sep) ? resolved : path.join(directory, fallback);
284
+ };
285
+ const declared = typeof raw.mcpServers === "string"
286
+ ? await readJsonFile(inside(raw.mcpServers, CLAUDE_MCP))
287
+ : raw.mcpServers ?? await readJsonFile(path.join(directory, CLAUDE_MCP));
288
+ // Codex reads a bare `url` as streamable HTTP, where Claude Code wants it said.
289
+ const entries = isRecord(declared) && isRecord(declared.mcpServers) ? declared.mcpServers : declared;
290
+ const typed = isRecord(entries)
291
+ ? Object.fromEntries(Object.entries(entries).map(([name, entry]) => [name, isRecord(entry) && typeof entry.url === "string" && entry.type === undefined ? { ...entry, type: "http" } : entry]))
292
+ : entries;
293
+ const servers = claudeServers(typed, directory);
294
+ const face = isRecord(raw.interface) ? raw.interface : {};
295
+ const logo = typeof face.logo === "string" ? inside(face.logo, "") : undefined;
296
+ const site = typeof face.websiteURL === "string" && /^https:\/\//.test(face.websiteURL) ? face.websiteURL : undefined;
297
+ return {
298
+ ...manifest,
299
+ ...(Object.keys(servers).length ? { mcpServers: servers } : {}),
300
+ ...(typeof face.displayName === "string" && face.displayName.trim() ? { title: face.displayName.trim() } : {}),
301
+ ...(typeof face.shortDescription === "string" && face.shortDescription.trim() ? { description: face.shortDescription.trim() } : {}),
302
+ ...(site && !manifest.siteUrl ? { siteUrl: site } : {}),
303
+ ...(logo && logo !== directory ? { logo } : {}),
304
+ directory,
305
+ source,
306
+ skillDir: inside(raw.skills, "skills"),
307
+ agentDir: inside(raw.agents, "agents"),
308
+ };
309
+ }
310
+ /**
311
+ * Which plugins in Claude Code's cache Claude Code itself would load.
312
+ *
313
+ * The cache keeps every version ever downloaded and every plugin ever tried;
314
+ * `installed_plugins.json` says which directory is the live install, and for
315
+ * which project, and `enabledPlugins` in the settings files says whether it is
316
+ * switched on. Reading the cache without those was loading plugins the user
317
+ * had uninstalled. A machine without the file — an older Claude Code — keeps
318
+ * the old reading of everything in the cache.
319
+ */
320
+ async function claudeInstalled(cwd) {
321
+ const home = claudeHome();
322
+ const enabled = {};
323
+ for (const file of [
324
+ path.join(home, "settings.json"),
325
+ path.join(cwd, ".claude", "settings.json"),
326
+ path.join(cwd, ".claude", "settings.local.json"),
327
+ ]) {
328
+ const settings = await readJsonFile(file);
329
+ if (isRecord(settings?.enabledPlugins))
330
+ Object.assign(enabled, settings.enabledPlugins);
331
+ }
332
+ const switchedOff = new Set(Object.entries(enabled).filter(([, on]) => on === false).map(([key]) => key));
333
+ const state = await readJsonFile(path.join(home, "plugins", "installed_plugins.json"));
334
+ if (!isRecord(state?.plugins)) {
335
+ return (plugin) => ![...switchedOff].some((key) => key.split("@")[0] === plugin.name);
336
+ }
337
+ const live = new Map();
338
+ for (const [key, installs] of Object.entries(state.plugins)) {
339
+ if (switchedOff.has(key))
340
+ continue;
341
+ for (const install of Array.isArray(installs) ? installs : [installs]) {
342
+ if (!isRecord(install) || typeof install.installPath !== "string")
343
+ continue;
344
+ const scoped = install.scope === "local" || install.scope === "project";
345
+ if (scoped && (typeof install.projectPath !== "string" || path.resolve(install.projectPath) !== path.resolve(cwd)))
346
+ continue;
347
+ live.set(path.resolve(install.installPath), key);
348
+ }
349
+ }
350
+ return (plugin) => live.has(path.resolve(plugin.directory));
351
+ }
352
+ /**
353
+ * Which plugins in Codex's cache are switched on, by `[plugins."name@market"]`
354
+ * in its config. Keyed by name alone: a marketplace's cache directory is not
355
+ * always spelled the way its key is (`openai-curated-remote` for a plugin
356
+ * enabled as `@openai-curated`).
357
+ */
358
+ async function codexEnabled() {
359
+ let table = {};
360
+ try {
361
+ table = parseToml(await readFile(path.join(codexHome(), "config.toml"), "utf8"));
362
+ }
363
+ catch {
364
+ return () => false;
365
+ }
366
+ const plugins = isRecord(table["plugins"]) ? table["plugins"] : {};
367
+ const on = new Set(Object.entries(plugins)
368
+ .filter(([, entry]) => isRecord(entry) && entry["enabled"] === true)
369
+ .map(([key]) => key.split("@")[0]));
370
+ return (plugin) => on.has(plugin.name);
371
+ }
372
+ async function readReceipt(directory) {
373
+ const value = await readJsonFile(path.join(directory, MARKET_RECEIPT));
374
+ if (!value || typeof value.id !== "string" || typeof value.repo !== "string" || typeof value.ref !== "string") {
375
+ return undefined;
376
+ }
377
+ return {
378
+ id: value.id,
379
+ repo: value.repo,
380
+ ref: value.ref,
381
+ ...(typeof value.path === "string" ? { path: value.path } : {}),
382
+ installedAt: typeof value.installedAt === "string" ? value.installedAt : "",
383
+ };
384
+ }
153
385
  async function readManifest(file) {
154
386
  const value = await readJsonFile(file);
155
387
  return value === undefined ? undefined : parsePluginManifest(value);
@@ -193,8 +425,18 @@ export function parsePluginManifest(value) {
193
425
  ...(isRecord(raw.hooks) ? { hooks: raw.hooks } : {}),
194
426
  ...(isRecord(raw.mcpServers) ? { mcpServers: raw.mcpServers } : {}),
195
427
  ...(Array.isArray(raw.subagents) ? { subagents: raw.subagents } : {}),
428
+ ...(siteOf(raw) ? { siteUrl: siteOf(raw) } : {}),
196
429
  };
197
430
  }
431
+ /** The publisher's own site: the author's page before the docs, https only. */
432
+ function siteOf(raw) {
433
+ const author = isRecord(raw.author) ? raw.author.url : undefined;
434
+ for (const candidate of [raw.siteUrl, author, raw.homepage]) {
435
+ if (typeof candidate === "string" && /^https:\/\//.test(candidate))
436
+ return candidate;
437
+ }
438
+ return undefined;
439
+ }
198
440
  function isRecord(value) {
199
441
  return !!value && typeof value === "object" && !Array.isArray(value);
200
442
  }
@@ -1 +1 @@
1
- {"version":3,"file":"plugins.js","sourceRoot":"","sources":["../src/plugins.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"plugins.js","sourceRoot":"","sources":["../src/plugins.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ /**
2
+ * Enough TOML to read Codex's `config.toml`.
3
+ *
4
+ * That file is the only TOML this harness reads, and what it needs out of it
5
+ * is a handful of strings, arrays and tables — so a dependency for the whole
6
+ * spec would be the larger cost. What is here is the grammar the file is
7
+ * actually written in: tables and dotted table headers, quoted keys, basic
8
+ * and literal strings in both their single- and multi-line forms, numbers,
9
+ * booleans, arrays and inline tables. Dates come back as their text, and an
10
+ * array of tables (`[[x]]`) is read and kept, since skipping one would mean
11
+ * misreading every key after it.
12
+ *
13
+ * It throws on what it cannot read. The caller decides whether a broken file
14
+ * is worth reporting; what it must not get is half a file presented as whole.
15
+ */
16
+ export type TomlValue = string | number | boolean | TomlValue[] | TomlTable;
17
+ export interface TomlTable {
18
+ [key: string]: TomlValue;
19
+ }
20
+ export declare class TomlError extends Error {
21
+ }
22
+ export declare function parseToml(text: string): TomlTable;