@oharness/engine 0.10.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.
Files changed (118) hide show
  1. package/dist/acp/claude.d.ts +34 -0
  2. package/dist/acp/claude.js +122 -0
  3. package/dist/acp/claude.js.map +1 -0
  4. package/dist/acp/client.d.ts +193 -0
  5. package/dist/acp/client.js +279 -0
  6. package/dist/acp/client.js.map +1 -0
  7. package/dist/acp/runner.d.ts +80 -0
  8. package/dist/acp/runner.js +159 -0
  9. package/dist/acp/runner.js.map +1 -0
  10. package/dist/agent/agent.d.ts +51 -1
  11. package/dist/agent/agent.js +322 -1
  12. package/dist/agent/agent.js.map +1 -1
  13. package/dist/agent/hooks.js +6 -6
  14. package/dist/agent/hooks.js.map +1 -1
  15. package/dist/agent/session.d.ts +2 -0
  16. package/dist/agent/session.js +19 -2
  17. package/dist/agent/session.js.map +1 -1
  18. package/dist/agent/skills.d.ts +16 -3
  19. package/dist/agent/skills.js +36 -2
  20. package/dist/agent/skills.js.map +1 -1
  21. package/dist/agent/subagent.d.ts +24 -2
  22. package/dist/agent/subagent.js +76 -16
  23. package/dist/agent/subagent.js.map +1 -1
  24. package/dist/auth/index.d.ts +3 -1
  25. package/dist/auth/index.js +3 -1
  26. package/dist/auth/index.js.map +1 -1
  27. package/dist/auth/manager.js +4 -0
  28. package/dist/auth/manager.js.map +1 -1
  29. package/dist/auth/oauth.d.ts +33 -0
  30. package/dist/auth/oauth.js +59 -8
  31. package/dist/auth/oauth.js.map +1 -1
  32. package/dist/auth/providers/anthropic.d.ts +25 -5
  33. package/dist/auth/providers/anthropic.js +47 -6
  34. package/dist/auth/providers/anthropic.js.map +1 -1
  35. package/dist/auth/providers/chatgpt.d.ts +8 -0
  36. package/dist/auth/providers/chatgpt.js +180 -0
  37. package/dist/auth/providers/chatgpt.js.map +1 -0
  38. package/dist/auth/providers/openrouter.d.ts +2 -0
  39. package/dist/auth/providers/openrouter.js +101 -0
  40. package/dist/auth/providers/openrouter.js.map +1 -0
  41. package/dist/auth/types.d.ts +15 -0
  42. package/dist/auth/types.js.map +1 -1
  43. package/dist/browser/index.d.ts +1 -1
  44. package/dist/browser/plugin.d.ts +6 -1
  45. package/dist/browser/plugin.js.map +1 -1
  46. package/dist/browser/session.d.ts +47 -0
  47. package/dist/browser/session.js +177 -2
  48. package/dist/browser/session.js.map +1 -1
  49. package/dist/browser/tools.js +139 -18
  50. package/dist/browser/tools.js.map +1 -1
  51. package/dist/computer/cua-driver.d.ts +60 -1
  52. package/dist/computer/cua-driver.js +149 -5
  53. package/dist/computer/cua-driver.js.map +1 -1
  54. package/dist/computer/helper-client.d.ts +3 -1
  55. package/dist/computer/helper-client.js +3 -0
  56. package/dist/computer/helper-client.js.map +1 -1
  57. package/dist/computer/index.d.ts +3 -2
  58. package/dist/computer/index.js +1 -1
  59. package/dist/computer/index.js.map +1 -1
  60. package/dist/computer/mode.d.ts +15 -0
  61. package/dist/computer/mode.js +11 -1
  62. package/dist/computer/mode.js.map +1 -1
  63. package/dist/computer/session.d.ts +36 -7
  64. package/dist/computer/session.js +118 -17
  65. package/dist/computer/session.js.map +1 -1
  66. package/dist/computer/target.d.ts +19 -0
  67. package/dist/computer/target.js.map +1 -1
  68. package/dist/computer/tools.js +135 -8
  69. package/dist/computer/tools.js.map +1 -1
  70. package/dist/config.d.ts +16 -0
  71. package/dist/config.js +2 -0
  72. package/dist/config.js.map +1 -1
  73. package/dist/foreign.d.ts +81 -0
  74. package/dist/foreign.js +198 -0
  75. package/dist/foreign.js.map +1 -0
  76. package/dist/harness.d.ts +79 -0
  77. package/dist/harness.js +241 -17
  78. package/dist/harness.js.map +1 -1
  79. package/dist/mcp/manager.d.ts +15 -0
  80. package/dist/mcp/manager.js +28 -1
  81. package/dist/mcp/manager.js.map +1 -1
  82. package/dist/mcp/registry.d.ts +2 -0
  83. package/dist/mcp/registry.js +1 -0
  84. package/dist/mcp/registry.js.map +1 -1
  85. package/dist/mcp/registry.json +394 -1
  86. package/dist/paths.d.ts +19 -0
  87. package/dist/paths.js +38 -0
  88. package/dist/paths.js.map +1 -1
  89. package/dist/plugin-market.d.ts +57 -0
  90. package/dist/plugin-market.js +229 -0
  91. package/dist/plugin-market.js.map +1 -0
  92. package/dist/plugin-market.json +1246 -0
  93. package/dist/plugins.d.ts +49 -2
  94. package/dist/plugins.js +252 -10
  95. package/dist/plugins.js.map +1 -1
  96. package/dist/providers/catalog.json +14 -3
  97. package/dist/providers/models-dev.d.ts +15 -0
  98. package/dist/providers/models-dev.js +14 -0
  99. package/dist/providers/models-dev.js.map +1 -1
  100. package/dist/providers/piai.d.ts +38 -1
  101. package/dist/providers/piai.js +70 -2
  102. package/dist/providers/piai.js.map +1 -1
  103. package/dist/providers/registry.d.ts +16 -1
  104. package/dist/providers/registry.js +42 -11
  105. package/dist/providers/registry.js.map +1 -1
  106. package/dist/runtime-plugins/builtin/studio.d.ts +7 -0
  107. package/dist/runtime-plugins/builtin/studio.js +69 -4
  108. package/dist/runtime-plugins/builtin/studio.js.map +1 -1
  109. package/dist/tools/builtin/bash.js +6 -10
  110. package/dist/tools/builtin/bash.js.map +1 -1
  111. package/dist/util/shell.d.ts +30 -0
  112. package/dist/util/shell.js +70 -0
  113. package/dist/util/shell.js.map +1 -1
  114. package/dist/util/toml.d.ts +22 -0
  115. package/dist/util/toml.js +305 -0
  116. package/dist/util/toml.js.map +1 -0
  117. package/package.json +4 -4
  118. package/skills/media-generation/SKILL.md +22 -1
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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"}
@@ -57,7 +57,7 @@
57
57
  ],
58
58
  "docsUrl": "https://console.anthropic.com/settings/keys",
59
59
  "popular": true,
60
- "description": "Claude models, direct API or ant CLI subscription",
60
+ "description": "Claude models, official API",
61
61
  "modelsDev": "anthropic"
62
62
  },
63
63
  "ottoport": {
@@ -104,6 +104,18 @@
104
104
  "docsUrl": "https://developers.openai.com/codex/cli/",
105
105
  "description": "GPT models on a ChatGPT Plus/Pro plan, via the Codex CLI login"
106
106
  },
107
+ "chatgpt": {
108
+ "label": "ChatGPT",
109
+ "protocol": "openai-responses",
110
+ "baseUrl": "https://api.openai.com/v1",
111
+ "envVars": [],
112
+ "subscription": true,
113
+ "piProvider": "openai",
114
+ "popular": true,
115
+ "$note": "A ChatGPT Plus/Pro plan used on the OpenAI API through Sign in with ChatGPT, OpenAI's own sign-in for third-party agents. The token it issues is a user access token for api.openai.com/v1, so the wire format is the ordinary Responses API; the plan covers the usage, which is why the seeded models carry no prices.",
116
+ "docsUrl": "https://chatgpt.com/pricing",
117
+ "description": "Use the GPT models in your ChatGPT Plus or Pro plan. Usage counts against the plan, not per token."
118
+ },
107
119
  "google": {
108
120
  "label": "Google Gemini",
109
121
  "protocol": "gemini",
@@ -432,8 +444,7 @@
432
444
  "envVars": [],
433
445
  "discovery": "openai",
434
446
  "includeUsage": false,
435
- "description": "Runs locally, no key needed",
436
- "modelsDev": "lmstudio"
447
+ "description": "Runs locally, no key needed"
437
448
  },
438
449
  "vllm": {
439
450
  "label": "vLLM",
@@ -75,6 +75,21 @@ export declare function releaseDates(snapshot: ModelsDevSnapshot): Map<string, n
75
75
  * the vendor's own "model".
76
76
  */
77
77
  export declare function releaseDateOf(dates: Map<string, number>, wireId: string): number | undefined;
78
+ /**
79
+ * The date to order a model by: the snapshot's when it knows the model, else
80
+ * the model's own, else the snapshot's `fetchedAt`.
81
+ *
82
+ * The last one is an inference, and a safe one: a model the snapshot has
83
+ * never heard of, and that came with no date of its own, was released after
84
+ * the snapshot was taken — it is the newest thing in its group, not the
85
+ * oldest. Left undated it sorted after every dated model, so a release the
86
+ * day after a build (OttoPort's `gemini-4-argon`, which its `/models` lists
87
+ * without `created`) sat at the bottom of the group it had just topped.
88
+ */
89
+ export declare function orderingDate(dates: Map<string, number>, snapshotAt: number | undefined, model: {
90
+ model: string;
91
+ releasedAt?: number;
92
+ }): number | undefined;
78
93
  /**
79
94
  * Whether a models.dev entry belongs in a harness picker at all: something
80
95
  * that answers in text, can call tools, and is not on its way out.
@@ -70,6 +70,20 @@ export function releaseDateOf(dates, wireId) {
70
70
  const found = [dates.get(id), dates.get(id.slice(id.lastIndexOf("/") + 1))].filter((ms) => ms !== undefined);
71
71
  return found.length ? Math.min(...found) : undefined;
72
72
  }
73
+ /**
74
+ * The date to order a model by: the snapshot's when it knows the model, else
75
+ * the model's own, else the snapshot's `fetchedAt`.
76
+ *
77
+ * The last one is an inference, and a safe one: a model the snapshot has
78
+ * never heard of, and that came with no date of its own, was released after
79
+ * the snapshot was taken — it is the newest thing in its group, not the
80
+ * oldest. Left undated it sorted after every dated model, so a release the
81
+ * day after a build (OttoPort's `gemini-4-argon`, which its `/models` lists
82
+ * without `created`) sat at the bottom of the group it had just topped.
83
+ */
84
+ export function orderingDate(dates, snapshotAt, model) {
85
+ return releaseDateOf(dates, model.model) ?? model.releasedAt ?? snapshotAt;
86
+ }
73
87
  /**
74
88
  * Whether a models.dev entry belongs in a harness picker at all: something
75
89
  * that answers in text, can call tools, and is not on its way out.
@@ -1 +1 @@
1
- {"version":3,"file":"models-dev.js","sourceRoot":"","sources":["../../src/providers/models-dev.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"models-dev.js","sourceRoot":"","sources":["../../src/providers/models-dev.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAC5C,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAkD5C,MAAM,IAAI,GAAG,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;AAC1D,MAAM,OAAO,GAA2B,CAAC,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,KAAK,CAAC,CAAC;AAClF,MAAM,eAAe,GAAkB,CAAC,KAAK,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC;AAEjE,uFAAuF;AACvF,MAAM,CAAC,KAAK,UAAU,aAAa;IACjC,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,SAAS,CACtB,MAAM,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,iBAAiB,CAAC,EAAE,MAAM,CAAC,CAC3D,CAAC;QACF,IAAI,MAAM,CAAC,EAAE,IAAI,MAAM,CAAC,KAAK,IAAI,OAAO,MAAM,CAAC,KAAK,CAAC,SAAS,KAAK,QAAQ;YAAE,OAAO,MAAM,CAAC,KAAK,CAAC;IACnG,CAAC;IAAC,MAAM,CAAC;QACP,sEAAsE;IACxE,CAAC;IACD,OAAO,EAAE,SAAS,EAAE,EAAE,EAAE,CAAC;AAC3B,CAAC;AAED,uDAAuD;AACvD,SAAS,UAAU,CAAC,KAAqB;IACvC,MAAM,EAAE,GAAG,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC;IACrE,OAAO,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;AACvD,CAAC;AAED;;;;;;;;;GASG;AACH,MAAM,UAAU,YAAY,CAAC,QAA2B;IACtD,MAAM,KAAK,GAAG,IAAI,GAAG,EAAkB,CAAC;IACxC,MAAM,IAAI,GAAG,CAAC,GAAW,EAAE,EAAU,EAAE,EAAE;QACvC,MAAM,IAAI,GAAG,KAAK,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAC5B,IAAI,IAAI,KAAK,SAAS,IAAI,EAAE,GAAG,IAAI;YAAE,KAAK,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;IAC1D,CAAC,CAAC;IACF,KAAK,MAAM,QAAQ,IAAI,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,CAAC;QACzD,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,IAAI,EAAE,CAAC,EAAE,CAAC;YACzD,MAAM,EAAE,UAAU,EAAE,EAAE,EAAE,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;YAC7C,IAAI,EAAE,KAAK,SAAS;gBAAE,SAAS;YAC/B,MAAM,EAAE,GAAG,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;YAC7B,IAAI,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC;YACb,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QAC9C,CAAC;IACH,CAAC;IACD,OAAO,KAAK,CAAC;AACf,CAAC;AAED;;;;GAIG;AACH,SAAS,OAAO,CAAC,EAAU;IACzB,OAAO,EAAE,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;AAC9C,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,aAAa,CAAC,KAA0B,EAAE,MAAc;IACtE,iFAAiF;IACjF,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,CAAC;IACtE,MAAM,KAAK,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,WAAW,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAChF,CAAC,EAAE,EAAgB,EAAE,CAAC,EAAE,KAAK,SAAS,CACvC,CAAC;IACF,OAAO,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC;AACvD,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,YAAY,CAC1B,KAA0B,EAC1B,UAA8B,EAC9B,KAA6C;IAE7C,OAAO,aAAa,CAAC,KAAK,EAAE,KAAK,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,UAAU,IAAI,UAAU,CAAC;AAC7E,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,aAAa,CAAC,KAAqB;IACjD,IAAI,KAAK,CAAC,MAAM,KAAK,YAAY;QAAE,OAAO,KAAK,CAAC;IAChD,IAAI,KAAK,CAAC,SAAS,KAAK,KAAK;QAAE,OAAO,KAAK,CAAC;IAC5C,MAAM,MAAM,GAAG,KAAK,CAAC,UAAU,EAAE,MAAM,CAAC;IACxC,OAAO,CAAC,MAAM,IAAI,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;AAC5C,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,KAAsB,EAAE,KAAqB;IAC7E,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC;IAC9B,MAAM,OAAO,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC;IACpC,OAAO;QACL,EAAE,EAAE,GAAG,KAAK,CAAC,EAAE,IAAI,KAAK,CAAC,EAAE,EAAE;QAC7B,QAAQ,EAAE,KAAK,CAAC,EAAE;QAClB,KAAK,EAAE,KAAK,CAAC,EAAE;QACf,WAAW,EAAE,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,EAAE;QACnC,GAAG,UAAU,CAAC,KAAK,CAAC;QACpB,wEAAwE;QACxE,aAAa,EAAE,KAAK,CAAC,KAAK,EAAE,OAAO,IAAI,OAAO;QAC9C,eAAe,EAAE,KAAK,CAAC,KAAK,EAAE,MAAM,IAAI,KAAK;QAC7C,aAAa,EAAE,KAAK,CAAC,SAAS,KAAK,KAAK;QACxC,cAAc,EAAE,CAAC,KAAK,CAAC,UAAU,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC;QACjE,GAAG,CAAC,CAAC,KAAK,CAAC,UAAU,EAAE,KAAK,IAAI,EAAE,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,iBAAiB,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACvF,yBAAyB,EAAE,IAAI;QAC/B,mBAAmB,EAAE,CAAC,IAAI,CAAC,UAAU,IAAI,CAAC,CAAC,GAAG,CAAC;QAC/C,YAAY,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM;QACjD,YAAY,EAAE,OAAO;QACrB,gBAAgB,EAAE,KAAK,CAAC,WAAW,KAAK,KAAK;QAC7C,2EAA2E;QAC3E,iEAAiE;QACjE,GAAG,CAAC,KAAK,CAAC,YAAY;YACpB,CAAC,CAAC,EAAE;YACJ,CAAC,CAAC;gBACE,GAAG,KAAK,CAAC,gBAAgB,EAAE,IAAI,CAAC,KAAK,CAAC;gBACtC,GAAG,KAAK,CAAC,iBAAiB,EAAE,IAAI,CAAC,MAAM,CAAC;gBACxC,GAAG,KAAK,CAAC,oBAAoB,EAAE,IAAI,CAAC,UAAU,CAAC;gBAC/C,GAAG,KAAK,CAAC,qBAAqB,EAAE,IAAI,CAAC,WAAW,CAAC;aAClD,CAAC;KACP,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,SAAS,YAAY,CAAC,KAAqB;IACzC,IAAI,CAAC,KAAK,CAAC,SAAS;QAAE,OAAO,EAAE,CAAC;IAChC,MAAM,KAAK,GAAG,CAAC,KAAK,CAAC,iBAAiB,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,KAAK,QAAQ,CAAC,EAAE,MAAM,CAAC;IACjG,IAAI,CAAC,KAAK,EAAE,MAAM;QAAE,OAAO,CAAC,GAAG,eAAe,CAAC,CAAC;IAChD,MAAM,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;IAChE,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,eAAe,CAAC,CAAC;AACvD,CAAC;AAED,SAAS,KAAK,CAAC,KAAa,EAAE,KAAyB;IACrD,OAAO,KAAK,IAAI,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;AACtD,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,cAAc,CAC5B,SAA0C,EAC1C,QAA2B,EAC3B,KAAkB,EAClB,MAA4B;IAE5B,MAAM,MAAM,GAAgB,EAAE,CAAC;IAC/B,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC;QAC7C,IAAI,CAAC,KAAK,CAAC,SAAS,IAAI,MAAM,EAAE,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;YAAE,SAAS;QACxD,MAAM,MAAM,GAAG,QAAQ,CAAC,SAAS,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;QACnD,IAAI,CAAC,MAAM;YAAE,SAAS;QACtB,MAAM,QAAQ,GAAG,IAAI,GAAG,CAAC,KAAK,CAAC,aAAa,IAAI,EAAE,CAAC,CAAC;QACpD,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,IAAI,EAAE,CAAC,EAAE,CAAC;YACvD,IAAI,CAAC,KAAK,EAAE,EAAE,IAAI,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC;gBAAE,SAAS;YAC5E,MAAM,IAAI,GAAG,iBAAiB,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC;YAC7C,IAAI,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;gBAAE,SAAS;YAChF,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;YACnB,KAAK,CAAC,GAAG,CAAC,GAAG,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;YAC5C,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACpB,CAAC;IACH,CAAC;IACD,OAAO,MAAM,CAAC;AAChB,CAAC"}
@@ -1,4 +1,4 @@
1
- import type { Message as PiMessage } from "@earendil-works/pi-ai";
1
+ import type { Message as PiMessage, ProviderHeaders } from "@earendil-works/pi-ai";
2
2
  import type { DocumentBlock, Message } from "../core/types.ts";
3
3
  import type { DiscoveryFormat, ProtocolId } from "./catalog.ts";
4
4
  import type { GenerateRequest, ModelSpec, Provider, ProviderCredentials, StreamEvent } from "./types.ts";
@@ -85,6 +85,25 @@ export declare class PiAiProvider implements Provider {
85
85
  * truncated, so the clamp has to happen here on the way out.
86
86
  */
87
87
  private maxTokensFor;
88
+ /**
89
+ * Keep an Anthropic subscription token from turning the request into an
90
+ * impersonation of Claude Code.
91
+ *
92
+ * pi-ai's Anthropic adapter inspects the key it is handed, and one that
93
+ * looks like a Claude subscription token (`sk-ant-oat…`) switches it into a
94
+ * mode that presents the request as Claude Code: its User-Agent, an
95
+ * `x-app: cli` header, a `claude-code-…` beta, a system prompt that opens
96
+ * "You are Claude Code", and tool names rewritten to Claude Code's own.
97
+ * Anthropic only permits those tokens in Claude Code and claude.ai, so that
98
+ * is a claim this harness must never make — whichever route the token took
99
+ * here, the resolver, a config file or the environment.
100
+ *
101
+ * So such a token never travels as the key. It goes as the bearer header it
102
+ * is, the key header is suppressed, and the adapter sees a placeholder it
103
+ * does not recognise. If Anthropic refuses the token outside Claude Code,
104
+ * that refusal is the honest outcome and surfaces as an ordinary auth error.
105
+ */
106
+ private wireCredential;
88
107
  /**
89
108
  * Provider headers plus whatever the resolver produced. A `null` value
90
109
  * suppresses a header the SDK would otherwise set: bearer-token auth must
@@ -137,3 +156,21 @@ export declare function withDocuments(payload: unknown, documents: DocumentBlock
137
156
  * every provider requires a tool result to directly follow the call it answers.
138
157
  */
139
158
  export declare function toPiMessages(message: Message, opts: ContextOptions): PiMessage[];
159
+ /**
160
+ * Take the `anthropic-beta` header out of a request's headers, as a list.
161
+ *
162
+ * pi-ai's Anthropic adapter treats that header as the *whole* beta list: one
163
+ * present replaces every beta it would have chosen — fine-grained tool
164
+ * streaming, interleaved thinking, inline tool changes. The bearer resolver
165
+ * sets one (`oauth-2025-04-20`, which OAuth bearer auth needs), so on that
166
+ * path every request quietly lost the rest. Lifted out here and added to the
167
+ * request's `betas` instead, it joins pi-ai's choices rather than displacing
168
+ * them.
169
+ */
170
+ export declare function takeBetas(headers: ProviderHeaders): string[];
171
+ /**
172
+ * Whether a key is a Claude subscription OAuth token. Mirrors the test pi-ai's
173
+ * Anthropic adapter applies, which is the one that matters: anything it would
174
+ * treat as Claude Code's must not reach it as a key.
175
+ */
176
+ export declare function isClaudeSubscriptionToken(key: string): boolean;